fix(shelly-manager): disable TCP black-hole detection in the pod netns #1550

Merged
k.renner merged 1 commits from shelly-manager-no-mtu-probing into main 2026-11-02 09:37:09 +00:00
Member

Sets net.ipv4.tcp_mtu_probing=0 for shelly-manager's pod netns through the tuning plugin of the shelly-manager-iot attachment, and bumps net.renner.uno/iot-attachment-config so the pod is recreated with it.

Cilium sets tcp_mtu_probing=1 in every pod netns (packetization-layer-pmtud-mode: blackhole). Shelly devices stop ACKing for seconds while writing flash during an OTA. After tcp_retries1 (3) timeouts the kernel treats that as a PMTU black hole and halves the MSS on every stall: 1440 → 1024 → 512 → … → 48. Upward probes need TCP_CA_Open and cwnd >= 11, which the stalling device never allows, so the firmware download stays at 48-byte segments and fills the device's receive buffer.

The sysctl is netns-wide and applies to TCP over IPv4 and IPv6.

🤖 Generated with Claude Code

https://claude.ai/code/session_0185Qb5YG28FfnVi1ujMEV5C

Sets `net.ipv4.tcp_mtu_probing=0` for shelly-manager's pod netns through the `tuning` plugin of the `shelly-manager-iot` attachment, and bumps `net.renner.uno/iot-attachment-config` so the pod is recreated with it. Cilium sets `tcp_mtu_probing=1` in every pod netns (`packetization-layer-pmtud-mode: blackhole`). Shelly devices stop ACKing for seconds while writing flash during an OTA. After `tcp_retries1` (3) timeouts the kernel treats that as a PMTU black hole and halves the MSS on every stall: 1440 → 1024 → 512 → … → 48. Upward probes need `TCP_CA_Open` and `cwnd >= 11`, which the stalling device never allows, so the firmware download stays at 48-byte segments and fills the device's receive buffer. The sysctl is netns-wide and applies to TCP over IPv4 and IPv6. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_0185Qb5YG28FfnVi1ujMEV5C
claude-bot added 1 commit 2026-11-02 09:36:17 +00:00
fix(shelly-manager): disable TCP black-hole detection in the pod netns
ci/woodpecker/pr/ci-manifests-test Pipeline was successful
ci/woodpecker/pr/ci-scripts-test Pipeline was successful
c68b9ad7c2
Cilium sets net.ipv4.tcp_mtu_probing=1 in every pod netns
(packetization-layer-pmtud-mode: blackhole). Shelly devices stop ACKing
for seconds while they write flash during an OTA; after tcp_retries1
timeouts the kernel treats that as a PMTU black hole and halves the MSS
on every stall, from 1440 down to the 48-byte floor. Upward probes need
an open congestion state with cwnd >= 11, which the stalling device
never allows, so the download stays at 48-byte segments and fills the
device's receive buffer.

The tuning plugin of the IoT attachment sets the sysctl to 0 for the pod
netns; the annotation bump rolls the pod so the attachment is re-run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0185Qb5YG28FfnVi1ujMEV5C
k.renner merged commit f3c9188807 into main 2026-11-02 09:37:09 +00:00
Sign in to join this conversation.