HTTP/HTTPS downloads stall ~65s over site-to-site GRE tunnel — TCP handshake OK then throughput drops to zero
Environment
Two-site setup: Site A uses Debian 11 iproute2 router (GRE tunnel endpoint 10.0.0.1) and Site B uses VyOS-based router (GRE endpoint 10.0.0.2). Underlay is ISP-managed routed WAN with MTU 1500. GRE tunnel configured with mtu 1476 on both ends to account for GRE+IP overhead. Downstream clients are Windows 10 and Ubuntu 22.04 desktops behind a NATed LAN at Site B. Large HTTP/HTTPS downloads originate from a public web server on the Internet and traverse the GRE tunnel between sites.
Symptoms
Large file downloads (HTTP/HTTPS >10 MB) from Internet servers start normally, TCP three‑way handshake completes and initial segments transfer. After roughly 60–75 seconds of transfer the receive throughput abruptly drops to zero; TCP retransmits begin and the session either times out after several minutes or resets. Small transfers (<1 MB) and browsing are unaffected. The stall is reproducible from multiple client machines behind Site B router and from files hosted on different external CDNs.
Observations
tcpdump on Site B GRE endpoint shows normal SYN/SYN-ACK/ACK and a stream of pushed segments, then long gaps with repeated ACKs and occasional retransmits from the client. Server-to-client packets appear to stop arriving at the GRE endpoint while client continues to ACK what it has received. ping -M do -s with sizes above 1400 bytes from Site B to a test server fails (no ICMP fragmentation-needed returned). tracepath from Site B to Internet hosts reports decreasing MTU after leaving the WAN but no ICMP fragmentation-needed messages are observed hitting the GRE endpoints. iptables NAT/forward rules on the Debian router do not explicitly modify MSS. Disabling the GRE tunnel and routing clients directly (temporary test) removes the stall — large transfers complete normally. Enabling kernel tcp_mtu_probing=1 on Site B reduces frequency of stalls but does not eliminate them.
Already attempted
Captured packet traces at both GRE endpoints and client; compared sequence numbers and timestamps. Temporarily lowed MTU on GRE interface to 1400 on both routers — transfers succeed for a test file. Turned on iptables TCPMSS CLAMP to PMTU on the Debian router; large downloads succeed while clamp is active. Disabled TCP offloads (TSO/GSO) on client NICs — no change when tunnel MTU unchanged. Replaced GRE with IP-in-IP tunnel for one test; same stall observed. Contacted ISP support — they report no uplink errors but would not confirm blocking of ICMP type 3. Restoring GRE MTU to 1476 without MSS clamp reproduces the stall.
Question
Given the packet captures and that lowering tunnel MTU or enabling MSS clamping prevents the stall, what are the likely root causes (routing/middlebox/MTU/ICMP handling) and which safe, reversible configuration changes should be applied on the Debian and VyOS routers to mitigate this without disrupting production? When is escalation to the ISP or deeper kernel-level debugging indicated?
Verified community troubleshooting
No answers yet..
Incident analysis
Most likely causes
Summary
Suggested Fixes
Continue troubleshooting
Related troubles
Matched from the title, description and tags
- Networking25% match
Site-to-site IPsec tunnel stalls large TCP transfers after disabling MSS clamp on edge firewall
Open0 answers - Networking21% match
IPv6-only LAN: HTTPS to IPv4-only sites times out while ICMP to synthesized addresses succeeds
Open0 answers - Networking21% match
Dual‑WAN Edge Router Sends HTTPS Traffic Out Slower Link Despite Healthy Primary — Large TCP Transfers Stall
Open0 answers - Networking21% match
Selective HTTPS sites time out over Wi‑Fi after enabling DNSSEC validation on home resolver
Open0 answers - Networking20% match
Large HTTPS POSTs stall and timeout only on 5 GHz band after enabling mesh router packet-aggregation
Open0 answers