PDU session is established and ping works, but iperf3 fails immediately and warm-up no longer helps

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, iperf3 also ends with errors such as:
    • control socket has closed unexpectedly
    • unable 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 -tin shows very early TCP collapse (cwnd quickly drops to about 1 MSS)

Example result:

iperf3:

  • 0.00-1.00 sec: about 105 KB transferred, about 857 Kbits/sec, retransmissions already occur, cwnd about 1.33 KB
  • 1.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