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.
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
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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Sets
net.ipv4.tcp_mtu_probing=0for shelly-manager's pod netns through thetuningplugin of theshelly-manager-iotattachment, and bumpsnet.renner.uno/iot-attachment-configso the pod is recreated with it.Cilium sets
tcp_mtu_probing=1in every pod netns (packetization-layer-pmtud-mode: blackhole). Shelly devices stop ACKing for seconds while writing flash during an OTA. Aftertcp_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 needTCP_CA_Openandcwnd >= 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