Asymmetric forwarded TCP TX collapse over one GRE path on FreeBSD 14.3-RELEASE-p8 (PF independent, offloads disabled)

"Ivan K." <[email protected]>
Newsgroups gmane.os.freebsd.devel.net
Message-ID <[email protected]>
Hello, everyone. The text below was written by me and “polished” by a neural network, which I have been using to research this problem for three days now.

I am investigating a reproducible GRE issue and would appreciate advice on further debugging.

Versions / hosts
- Router: FreeBSD 14.3-RELEASE-p8
- VPS0: FreeBSD 14.3-RELEASE-p8
- VPS2: FreeBSD 14.3-RELEASE-p8

Topology
- Router has WAN on VLAN interface `onp` (parent `igb0`) and LAN on `igb0`.
- Two GRE tunnels from the same router:
  - GRE to VPS0: healthy
  - GRE to VPS2: problematic
- There is also an ng tunnel to VPS2 (works better than bad GRE, but not full speed).
- Clients behind router tested via both Wi-Fi and wired Ethernet (same problem).
- Also tested traffic from a VM on the router: VM path does not reproduce the severe collapse.

Core symptom (asymmetric)
- Only TX direction is affected (client uploads through GRE->VPS2).
- RX/download direction is not affected.
- Through GRE->VPS2, TCP upload collapses to about ~100 Kbit/s per flow.
- 5 parallel TCP flows produce roughly 5 x ~100 Kbit/s.
- iperf3 TCP shows many retransmissions and very small cwnd (~2.7 KB).
- Same client via GRE->VPS0 is fast (normal high throughput).
- Traffic generated locally on router through GRE->VPS2 is also fast.

Firewall / policy checks
- PF disabled completely (`pfctl -d`) for tests: problem remains.
- Therefore this is not PF rule/policy dependent in current testing.
- Also checked for ipfw/dummynet:
  - `kldstat | egrep 'ipfw|dummynet|pf'` shows only `pf.ko`.
  - `ipfw show` returns “Protocol not available”.
  - `net.inet.ip.fw.enable` OID not present.

Offload / NIC checks performed
- Explicitly disabled offload features (multiple attempts), including:
  - `-lro`
  - `-tso` / tso-related toggles
  - `-rxcsum` / `-txcsum` / v6 checksum toggles
  - VLAN hardware offload related toggles where supported
- No improvement.
- Current interface snapshot during testing:
  - `ifconfig igb0` shows options: `VLAN_MTU,JUMBO_MTU,WOL_MAGIC,HWSTATS` (no LRO/TSO flags active)
  - `ifconfig onp` shows `options=0`
- Reboots of router and VPS2 done after changes: no improvement.
- Also tested with minimal manual GRE setup (without tunnel-management scripts, only one GRE up): no improvement.

Queue/counters/sysctl checks
- `netstat -Q` shows no queue drops (`QDrops=0`).
- `netstat -iW -I ...` during tests shows no obvious interface error growth.
- `sysctl net.inet.ip.fastforwarding` does not exist on this release.

UDP vs TCP behavior
- UDP over problematic GRE path can run at high throughput (similar order from client and from router), i.e., no analogous dramatic collapse.
- TCP over same path collapses hard in TX direction from forwarded clients.

Packet capture findings
- Collected captures at multiple points (router and VPS side).
- In bad runs, client-side TCP packets are seen, but many segments are retransmitted repeatedly.
- Comparing capture points suggests segments often appear on VPS GRE side only much later / after retransmission, consistent with loss on the GRE path for this forwarded TCP case.
- In control runs (local router-generated traffic), packet timing/count alignment is normal.

What makes this puzzling
- Same router, same OS version, same general config:
  - GRE to VPS0 works well.
  - GRE to VPS2 fails for forwarded TCP TX only.
- PF disabled does not change behavior.
- Offloads disabled does not change behavior.
- No obvious drops in standard queue/interface counters.

Request
Any suggestions on what to inspect next for FreeBSD 14.3-p8 in this scenario:
- netisr / forwarding path diagnostics
- GRE-specific kernel instrumentation
- known igb/VLAN/GRE forwarding edge cases
- any tunables or debug knobs that could explain “forwarded TCP TX collapse only on one GRE peer/path”

Thanks.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.