ETIMEDOUT
networking
protocol_error
ai_generated
partial
TCP Zero Window Probe Failure: no response from receiver after 3 probes
ID: networking/tcp-zero-window-probe-failure
78%Fix Rate
85%Confidence
1Evidence
2024-03-15First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| Linux kernel 5.15 | active | — | — | — |
| Linux kernel 6.1 | active | — | — | — |
| FreeBSD 13.2 | active | — | — | — |
Root Cause
The receiver's TCP window is zero and the sender's zero-window probes are not acknowledged, indicating the receiver is unresponsive or has crashed while holding a zero window.
generic中文
接收方的TCP窗口为零,且发送方的零窗口探测未得到确认,表明接收方在保持零窗口时无响应或已崩溃。
Official Documentation
https://datatracker.ietf.org/doc/html/rfc9293Workarounds
-
85% success Forcefully close the TCP connection from the sender using tcpkill or iptables, then re-establish: sudo tcpkill -i eth0 port 8080; sleep 2; systemctl restart myapp
Forcefully close the TCP connection from the sender using tcpkill or iptables, then re-establish: sudo tcpkill -i eth0 port 8080; sleep 2; systemctl restart myapp
-
80% success Set a shorter TCP user timeout on the socket to abort the connection faster: sysctl -w net.ipv4.tcp_retries2=5
Set a shorter TCP user timeout on the socket to abort the connection faster: sysctl -w net.ipv4.tcp_retries2=5
中文步骤
Forcefully close the TCP connection from the sender using tcpkill or iptables, then re-establish: sudo tcpkill -i eth0 port 8080; sleep 2; systemctl restart myapp
Set a shorter TCP user timeout on the socket to abort the connection faster: sysctl -w net.ipv4.tcp_retries2=5
Dead Ends
Common approaches that don't work:
-
85% fail
Zero-window probing is separate from keepalive; keepalive settings do not affect probe retransmission timers.
-
75% fail
The issue is at the application or receiver side; restarting the sender's interface does not fix the receiver's unresponsiveness.