Re: 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]>
A quick follow-up to my previous report about very slow TCP upload over GRE for forwarded clients.

Environment:

Router VM: FreeBSD 14.3-p8 (192.168.1.170), GRE to VPS2 (10.14.0.1 -> 10.14.0.2)
VPS2: FreeBSD 14.3-p8
Client traffic is forwarded through the VM

Problem before:

Forwarded TCP upload (laptop -> 10.14.0.2) was ~0.2 Mbit/s with many retransmits
Reverse direction and local router-originated traffic were much faster
What changed:
I added PF normalization on the VM:

scrub on vtnet0 inet all no-df random-id max-mss 1360 fragment reassemble
scrub on gre_vps2 inet all no-df random-id max-mss 1360 fragment reassemble
Result after:

Same forwarded flow increased to ~100–170 Mbit/s
Retransmissions dropped significantly and receiver stats became normal
Conclusion:
This strongly suggests path-based DPI classification/shaping of the original forwarded TCP fingerprint.
After packet normalization, the flow is no longer classified the same way. 
Since I am in Russia, it is most likely some new filtering strategies from our internet censorship agency based on TCP fingerprints.

Thanks to everyone who replied and helped with diagnostics.



> 25 февр. 2026 г., в 17:46, Michael Tuexen <[email protected]> написал(а):
> 
>> On 25. Feb 2026, at 10:08, Ivan K. <[email protected]> wrote:
>> 
>> The problem is that I've tried everything I know/found on the internet/was recommended by Codex and GPT, and I (and LLVMs) have run out of ideas :(
> Could you capture the traffic of the connection experiencing bad throughput on the
> sender and on the receiver side in a .pcap file and post them or prove a link to them?
> You can send it privately, if preferred.
> 
> What TCP stack are you using?
> 
> Best regards
> Michael
>> 
>>> 25 февр. 2026 г., в 10:55, Ivan K. <[email protected]> написал(а):
>>> 
>>> I don't quite understand your question.
>>> iperf3 shows 200-300 Mbit through VPS0 and 100 kbit through VPS2 at the same time when I run them from my laptop. 
>>> If I run them from the router, the speeds are good on both tunnels.
>>> 
>>>> 25 февр. 2026 г., в 01:12, Mark Saad <[email protected]> написал(а):
>>>> 
>>>> 
>>>> 
>>>> On Tue, Feb 24, 2026 at 3:35 PM Ivan K. <[email protected]> wrote:
>>>> Yes, I wrote about this in my original letter. It is an Intel Gigabit server network card. I disabled everything possible on it with the command:
>>>> 
>>>> ifconfig igb0 -mextpg -vlanhwtag -vlanhwfilter -vlanhwtso -vlanhwcsum -rxcsum -txcsum -rxcsum6 -txcsum6 -tso -lro
>>>> 
>>>> The options that remained are: VLAN_MTU, JUMBO_MTU, WOL_MAGIC, HWSTATS
>>>> 
>>>>> 24 февр. 2026 г., в 23:23, Mark Saad <[email protected]> написал(а):
>>>>> 
>>>>> 
>>>>> 
>>>>> On Tue, Feb 24, 2026 at 3:02 PM Ivan K. <[email protected]> wrote:
>>>>> Each real life - 1500, gre 1472.
>>>>> I checked this. I tried setting mtu 1200 on the client device. I have mss clamping at 1400 in pf.
>>>>> If it's mtu, it doesn't explain why the identical tunnel on the same machine functions normally.
>>>>> 
>>>>> 
>>>>>> 24 февр. 2026 г., в 21:10, Mark Saad <[email protected]> написал(а):
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Tue, Feb 24, 2026 at 12:19 PM Ivan K. <[email protected]> wrote:
>>>>>> 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.
>>>>>> 
>>>>>> 
>>>>>> Ivan
>>>>>> Just a guess but it sounds like you may have a MTU issue . What is the MTU settings on each of the real interfaces and the gre tunnels ?
>>>>>> -- 
>>>>>> mark saad | [email protected]
>>>>> 
>>>>> Ivan
>>>>>  What sort of network cards are you using? This is another long shot but do you have anything that does GRE offload? Some of the intel
>>>>> and mellanox cards support some sort of checksum offloads. 
>>>>> 
>>>>> -- 
>>>>> mark saad | [email protected]
>>>> 
>>>> Ivan
>>>>  So back to how you are testing. Do you have iperf / iperf3 blasting traffic from router to target VPS0 and VPS2 at the same time ?
>>>> 
>>>> 
>>>> -- 
>>>> mark saad | [email protected]
>>> 
>> 
>
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.