Bugzilla – Bug 2984
TCP sender stalls because it never receives an ACK (receiver ACKs many times)
Last modified: 2018-09-03 05:02:32 EDT
Created attachment 3170 [details] Radio environment map Overview: Full-buffer downlink traffic from a remote host to 7x UEs over TCP using LTE with EPC. However the simulation never finishes. This is due to the TCP sender stalling because midway in simulation, it never receives an ACK from IMSI 4 (located in the middle cell). The simulation transfers 93.75MB of data and TCP stalls around the 21MB mark. Steps to Reproduce: 1. Download attached simple_lte_seed.cc 2. ./waf configure -d debug 3. ./waf --run "simple_lte_seed --Seed=1 --rlcMode=RLC_AM --harqMode=HARQ_DISABLED --n=3 --s1uDelay=0.002 --serverEPCDelay=0.01" Actual Results: 93.75MB data transfer never finishes for IMSI 4 Expected Results: 93.75MB data transfer finishes for all UEs Attached logs and radio environment map.
Created attachment 3171 [details] simple_lte_seed.cc
Created attachment 3172 [details] TCP sender log Node 15 is the remote host. 7.0.0.5 is IMSI #4. SEQ number 21957777 is responsible for stalling the simulation.
Created attachment 3173 [details] Receiver TCP log Node 11 is IMSI 4. We can see it ACKs well past the SEQ num 21957777 responsible for stalling the simulation.
The sender keeps sending SEQ num 21957777 and the receiver keeps rejecting it (correctly). But the pure ACKs are not getting through to sender. [node 11] At state ESTABLISHED received packet of seq [21957777:21958313) out of range [21986185:22117257) [node 11] 11 Add option TS, ts=332865 echo=331610 [node 11] Sending a pure ACK, acking seq 21986185 [node 11] At state ESTABLISHED received packet of seq [21957777:21958313) out of range [21986185:22117257) [node 11] 11 Add option TS, ts=334785 echo=331610 [node 11] Sending a pure ACK, acking seq 21986185 [node 11] At state ESTABLISHED received packet of seq [21957777:21958313) out of range [21986185:22117257) [node 11] 11 Add option TS, ts=338625 echo=331610 [node 11] Sending a pure ACK, acking seq 21986185 [node 11] At state ESTABLISHED received packet of seq [21957777:21958313) out of range [21986185:22117257) [node 11] 11 Add option TS, ts=346625 echo=331610 [node 11] Sending a pure ACK, acking seq 21986185 [node 11] At state ESTABLISHED received packet of seq [21957777:21958313) out of range [21986185:22117257) [node 11] 11 Add option TS, ts=362625 echo=331610 [node 11] Sending a pure ACK, acking seq 21986185 [node 11] At state ESTABLISHED received packet of seq [21957777:21958313) out of range [21986185:22117257)
Looking at UlPdcpStats.txt, I see pure ACKS (54 bytes) are being transmitted near the stalling point. But the PduSize is zero. Is this why the ACKS are never received? % start end CellId IMSI RNTI LCID nTxPDUs TxBytes nRxPDUs RxBytes delay stdDev min max PduSize stdDev min max 332.75 333 4 4 1 4 1 54 0 0 0 0 0 0 0 0 0 0 334.75 335 4 4 1 4 1 54 0 0 0 0 0 0 0 0 0 0 338.5 338.75 4 4 1 4 1 54 0 0 0 0 0 0 0 0 0 0 346.5 346.75 4 4 1 4 1 54 0 0 0 0 0 0 0 0 0 0 362.5 362.75 4 4 1 4 1 54 0 0 0 0 0 0 0 0 0 0 394.5 394.75 4 4 1 4 1 54 0 0 0 0 0 0 0 0 0 0