The ICMP section undersells one failure mode. When a firewall drops all ICMP, it also drops the "packet too big" messages, so path MTU discovery breaks silently. The TCP handshake and small requests work fine, but anything larger than a tunnel's MTU just stalls. That's the classic VPN bug where ping works and ssh connects but git push hangs. The usual fixes are letting ICMP type 3 code 4 through, clamping TCP MSS at the tunnel edge, or packetization layer PMTUD (RFC 4821 and RFC 8899), which probes with real packets and doesn't depend on ICMP at all. QUIC can use that last approach too. Might be worth a line in a troubleshooting follow up.
Your Wi-Fi airtime example is a useful counterpoint to ping's round-trip time. I'd compare the same transfer on wired and wireless connections while recording ping both idle and under load. A low idle RTT can coexist with poor throughput or long queues once a slow client occupies the channel. That comparison helps a developer separate a radio/airtime problem from a server bottleneck before changing application timeouts.
The ICMP section undersells one failure mode. When a firewall drops all ICMP, it also drops the "packet too big" messages, so path MTU discovery breaks silently. The TCP handshake and small requests work fine, but anything larger than a tunnel's MTU just stalls. That's the classic VPN bug where ping works and ssh connects but git push hangs. The usual fixes are letting ICMP type 3 code 4 through, clamping TCP MSS at the tunnel edge, or packetization layer PMTUD (RFC 4821 and RFC 8899), which probes with real packets and doesn't depend on ICMP at all. QUIC can use that last approach too. Might be worth a line in a troubleshooting follow up.
π©π©΅π·ππ§
π
Thanks for putting it together in simple words! Analogies help a lot.
Your Wi-Fi airtime example is a useful counterpoint to ping's round-trip time. I'd compare the same transfer on wired and wireless connections while recording ping both idle and under load. A low idle RTT can coexist with poor throughput or long queues once a slow client occupies the channel. That comparison helps a developer separate a radio/airtime problem from a server bottleneck before changing application timeouts.