Definitions:
- “Cold state” = the first TCP transfer attempt immediately after PDU session establishment, before any prior user-plane traffic
- “Warm-up” = sending one or more preliminary transfers after session establishment and then retrying the main transfer
Previously, warm-up sometimes improved the throughput, but recently even the warm-up no longer helps.
Hello,
I am testing free5GC with N3IWF/N3IWUE (untrusted non-3GPP access).
My main issue is not session establishment itself, but post-establishment user-plane TCP traffic.
Current behavior:
- PDU session is established successfully
- The UE-side network namespace gets the GRE/PDU-related interfaces
- ICMP to the DN host works
- However, TCP bulk transfer to the DN host fails almost immediately
Example test:
iperf3 -c <DN_HOST> -p <PORT>ping <DN_HOST> -c 3
Typical symptoms:
- Very low throughput only in the first second
- Retransmissions occur immediately
- Congestion window quickly collapses to around 1 MSS / 1.33 KB
- After the first second, throughput becomes 0 bps and does not recover
- In some runs,
iperf3also ends with errors such as:control socket has closed unexpectedlyunable to send control message: Bad file descriptor
Important point:
- Earlier, sending some warm-up traffic sometimes improved the transfer
- But recently, even warm-up no longer helps
- Now the TCP transfer often fails before any useful throughput is established
What I already checked:
- PDU session is established
- The UE namespace has GRE/PDU-related interfaces
- ICMP to the DN host works
- MTU tuning did not solve the issue
- Offload-related changes did not solve the issue
- Packet capture shows very early retransmissions on the GRE/user-plane side
ss -tinshows very early TCP collapse (cwndquickly drops to about 1 MSS)
Example result:
iperf3:
0.00-1.00 sec: about 105 KB transferred, about 857 Kbits/sec, retransmissions already occur,cwndabout 1.33 KB1.00-10.00 sec: 0.00 Bytes / 0.00 bits/sec for all remaining intervals- Sender side total: about 105 KB in 10 sec
- Receiver side total: 0.00 Bytes
ping:
- 3 packets transmitted, 3 received, 0% packet loss
- RTT was non-zero and variable
Question:
Has anyone seen a case where user-plane ICMP works after PDU session establishment, but TCP bulk transfer over N3IWF/N3IWUE collapses immediately, and even warm-up traffic no longer helps?
Are there any known issues related to GRE/IPsec/user-plane path behavior, early packet loss/reordering, or TCP collapse in this setup?
Observed iperf3 output:
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 105 KBytes 857 Kbits/sec 2 1.33 KBytes
[ 5] 1.00-2.00 sec 0.00 Bytes 0.00 bits/sec 1 1.33 KBytes
[ 5] 2.00-3.00 sec 0.00 Bytes 0.00 bits/sec 0 1.33 KBytes
[ 5] 3.00-4.00 sec 0.00 Bytes 0.00 bits/sec 1 1.33 KBytes
[ 5] 4.00-5.00 sec 0.00 Bytes 0.00 bits/sec 0 1.33 KBytes
[ 5] 5.00-6.00 sec 0.00 Bytes 0.00 bits/sec 0 1.33 KBytes
[ 5] 6.00-7.00 sec 0.00 Bytes 0.00 bits/sec 1 1.33 KBytes
[ 5] 7.00-8.00 sec 0.00 Bytes 0.00 bits/sec 0 1.33 KBytes
[ 5] 8.00-9.00 sec 0.00 Bytes 0.00 bits/sec 0 1.33 KBytes
[ 5] 9.00-10.00 sec 0.00 Bytes 0.00 bits/sec 0 1.33 KBytes
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 105 KBytes 85.8 Kbits/sec 5 sender
[ 5] 0.00-10.00 sec 0.00 Bytes 0.00 bits/sec receiver
Observed ping output:
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 2.780/38.421/109.584/50.319 ms