Odd Fast Retransmission Behavior?

[email protected]
Newsgroups gmane.linux.network.general
Message-ID <[email protected]>
Hello.   I've been tracking down an issue and it has led me to a 
question regarding fast retransmit behavior.   I'd appreciate any input 
offered.

Short question: When Linux is using CUBIC, after receiving 3 dup acks 
should the network stack always immediately send the "missing" packet?

I believe it should per RFCs.  However, I'm not seeing that behavior.  
I'm seeing behavior where the "missing" packet is transmitted after a 
delay (which keeps increasing).   I have a packet trace pasted below 
for reference.

The scenario is more or less an upload from a client to a server.   The 
high level summary is below.

1) TCP connection established
2) Data starts being exchanged
3) packet is dropped, not received by server
4) Client's timer expires and retransmits the packet (Frame #44)
5) Server ACKs this packet (Frame #45)
6) Client sends more data (Frames 46-48)
7) Server starts dup acking (Frames 49-51)
8) After these 3 dup acks, client does NOT retran immediately.  Rather 
it delays and then retransmits (Frame 52)

Because several packets were dropped, this dup ack behavior repeats for 
subsequent packets.  The client continues to not immediately retransmit 
after the 3 dup acks and the delay keeps getting longer and longer.   
Examples: Frame 60, 70, 84.

The raw data is below.  Any comments on this behavior are greatly 
appreciated.

No.     Time        Source                Destination           
Protocol Info
       1 0.000000    11.11.1.1             22.222.222.22         TCP     
  PORT1 > PORT2 [SYN] Seq=0 Win=5808 Len=0 MSS=1452 TSV=13817777 TSER=0 
WS=5
       2 0.002346    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [SYN, ACK] Seq=0 Ack=1 Win=32768 Len=0 MSS=1380
       3 0.007300    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=1 Ack=1 Win=5808 Len=0
       4 0.373434    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [PSH, ACK] Seq=1 Ack=1 Win=5808 Len=72
       5 0.375432    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=1 Ack=73 Win=32696 Len=0
       6 0.377290    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [PSH, ACK] Seq=1 Ack=73 Win=32768 Len=1380
       7 0.377299    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [PSH, ACK] Seq=1381 Ack=73 Win=32768 Len=1380
       8 0.377411    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [PSH, ACK] Seq=2761 Ack=73 Win=32768 Len=1281
       9 0.382224    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=73 Ack=1381 Win=8280 Len=0
      10 0.382234    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=73 Ack=2761 Win=11040 Len=0
      11 0.382239    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=73 Ack=4042 Win=13800 Len=0
      12 0.491684    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=73 Ack=4042 Win=13800 Len=1380
      13 0.491753    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=1453 Ack=4042 Win=13800 Len=1380
      14 0.493982    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4042 Ack=2833 Win=30008 Len=0
      15 0.499642    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=2833 Ack=4042 Win=13800 Len=1380
      16 0.499738    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [PSH, ACK] Seq=4213 Ack=4042 Win=13800 Len=694
      17 0.501883    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4042 Ack=4907 Win=27934 Len=0
      18 0.565408    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [PSH, ACK] Seq=4907 Ack=4042 Win=13800 Len=329
      19 0.579907    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [PSH, ACK] Seq=4042 Ack=5236 Win=32768 Len=6
      20 0.579958    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [PSH, ACK] Seq=4048 Ack=5236 Win=32768 Len=45
      21 0.585457    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=5236 Ack=4048 Win=13800 Len=0
      22 0.586295    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=5236 Ack=4093 Win=13800 Len=0
      23 0.658677    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [PSH, ACK] Seq=4093 Ack=5236 Win=32768 Len=45
      24 0.664273    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=5236 Ack=4138 Win=13800 Len=0
      25 *REF*       11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [PSH, ACK] Seq=5236 Ack=4138 Win=13800 Len=90
      26 0.037211    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [PSH, ACK] Seq=4138 Ack=5326 Win=32768 Len=77
      27 0.043571    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [PSH, ACK] Seq=5326 Ack=4215 Win=13800 Len=114
      28 0.051457    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=5440 Ack=4215 Win=13800 Len=1380
      29 0.053659    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4215 Ack=6820 Win=31274 Len=0
      30 0.056332    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=6820 Ack=4215 Win=13800 Len=1380
      31 0.058451    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [PSH, ACK] Seq=8200 Ack=4215 Win=13800 Len=780
      32 0.060625    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4215 Ack=8980 Win=29114 Len=0
      33 0.065555    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [PSH, ACK] Seq=8980 Ack=4215 Win=13800 Len=944
      34 0.070753    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=9924 Ack=4215 Win=13800 Len=1380
      35 0.072941    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4215 Ack=11304 Win=26790 Len=0
      36 0.076995    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [PSH, ACK] Seq=11304 Ack=4215 Win=13800 Len=1346
      37 0.085623    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=12650 Ack=4215 Win=13800 Len=1380
      38 0.087750    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4215 Ack=14030 Win=24064 Len=0
      39 0.089287    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [PSH, ACK] Seq=14030 Ack=4215 Win=13800 Len=1380
      40 0.091344    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [PSH, ACK] Seq=15410 Ack=4215 Win=13800 Len=684
      41 0.100039    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=16094 Ack=4215 Win=13800 Len=1380
      42 0.105600    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=17474 Ack=4215 Win=13800 Len=1380
      43 0.110634    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=18854 Ack=4215 Win=13800 Len=1380
      44 0.305121    11.11.1.1             22.222.222.22         TCP     
  [TCP Retransmission] PORT1 > PORT2 [PSH, ACK] Seq=14030 Ack=4215 
Win=13800 Len=1380
      45 0.497694    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4215 Ack=15410 Win=31232 Len=0
      46 0.501600    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=20234 Ack=4215 Win=13800 Len=1380
      47 0.502348    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=21614 Ack=4215 Win=13800 Len=1379
      48 0.502358    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=22993 Ack=4215 Win=13800 Len=1
      49 0.503698    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 45#1] PORT2 > PORT1 [ACK] Seq=4215 Ack=15410 Win=31232 
Len=0
      50 0.504465    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 45#2] PORT2 > PORT1 [ACK] Seq=4215 Ack=15410 Win=31232 
Len=0
      51 0.504472    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 45#3] PORT2 > PORT1 [ACK] Seq=4215 Ack=15410 Win=31232 
Len=0
      52 0.928385    11.11.1.1             22.222.222.22         TCP     
  [TCP Retransmission] PORT1 > PORT2 [PSH, ACK] Seq=15410 Ack=4215 
Win=13800 Len=684
      53 0.930646    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4215 Ack=16094 Win=31744 Len=0
      54 0.936591    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=22994 Ack=4215 Win=13800 Len=1380
      55 0.937366    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=24374 Ack=4215 Win=13800 Len=1379
      56 0.937373    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=25753 Ack=4215 Win=13800 Len=1
      57 0.938822    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 53#1] PORT2 > PORT1 [ACK] Seq=4215 Ack=16094 Win=31744 
Len=0
      58 0.939486    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 53#2] PORT2 > PORT1 [ACK] Seq=4215 Ack=16094 Win=31744 
Len=0
      59 0.939493    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 53#3] PORT2 > PORT1 [ACK] Seq=4215 Ack=16094 Win=31744 
Len=0
      60 1.789904    11.11.1.1             22.222.222.22         TCP     
  [TCP Retransmission] PORT1 > PORT2 [ACK] Seq=16094 Ack=4215 Win=13800 
Len=1380
      61 1.792075    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4215 Ack=17474 Win=31232 Len=0
      62 1.798018    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=25754 Ack=4215 Win=13800 Len=1380
      63 1.798749    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=27134 Ack=4215 Win=13800 Len=1379
      64 1.798757    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=28513 Ack=4215 Win=13800 Len=1
      65 1.800281    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 61#1] PORT2 > PORT1 [ACK] Seq=4215 Ack=17474 Win=31232 
Len=0
      66 1.800957    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 61#2] PORT2 > PORT1 [ACK] Seq=4215 Ack=17474 Win=31232 
Len=0
      67 1.800965    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 61#3] PORT2 > PORT1 [ACK] Seq=4215 Ack=17474 Win=31232 
Len=0
      68 1.805485    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=28514 Ack=4215 Win=13800 Len=1380
      69 1.807632    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 61#4] PORT2 > PORT1 [ACK] Seq=4215 Ack=17474 Win=31232 
Len=0
      70 3.501979    11.11.1.1             22.222.222.22         TCP     
  [TCP Retransmission] PORT1 > PORT2 [ACK] Seq=17474 Ack=4215 Win=13800 
Len=1380
      71 3.504215    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4215 Ack=18854 Win=31232 Len=0
      72 3.510261    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=29894 Ack=4215 Win=13800 Len=1379
      73 3.511026    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=31273 Ack=4215 Win=13800 Len=1380
      74 3.511035    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=32653 Ack=4215 Win=13800 Len=1
      75 3.512409    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 71#1] PORT2 > PORT1 [ACK] Seq=4215 Ack=18854 Win=31232 
Len=0
      76 3.513136    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 71#2] PORT2 > PORT1 [ACK] Seq=4215 Ack=18854 Win=31232 
Len=0
      77 3.513144    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 71#3] PORT2 > PORT1 [ACK] Seq=4215 Ack=18854 Win=31232 
Len=0
      78 3.517030    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=32654 Ack=4215 Win=13800 Len=1379
      79 3.517765    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=34033 Ack=4215 Win=13800 Len=1380
      80 3.517774    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [PSH, ACK] Seq=35413 Ack=4215 Win=13800 Len=1
      81 3.519187    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 71#4] PORT2 > PORT1 [ACK] Seq=4215 Ack=18854 Win=31232 
Len=0
      82 3.519966    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 71#5] PORT2 > PORT1 [ACK] Seq=4215 Ack=18854 Win=31232 
Len=0
      83 3.519972    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 71#6] PORT2 > PORT1 [ACK] Seq=4215 Ack=18854 Win=31232 
Len=0
      84 6.918782    11.11.1.1             22.222.222.22         TCP     
  [TCP Retransmission] PORT1 > PORT2 [ACK] Seq=18854 Ack=4215 Win=13800 
Len=1380
      85 6.920996    22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4215 Ack=32654 Win=17432 Len=0
      86 6.925662    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [PSH, ACK] Seq=35414 Ack=4215 Win=13800 Len=36
      87 6.927628    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 85#1] PORT2 > PORT1 [ACK] Seq=4215 Ack=32654 Win=17432 
Len=0
      88 6.930298    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=35450 Ack=4215 Win=13800 Len=1380
      89 6.932473    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 85#2] PORT2 > PORT1 [ACK] Seq=4215 Ack=32654 Win=17432 
Len=0
      90 6.936266    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=36830 Ack=4215 Win=13800 Len=1380
      91 6.938553    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 85#3] PORT2 > PORT1 [ACK] Seq=4215 Ack=32654 Win=17432 
Len=0
      92 6.945639    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=38210 Ack=4215 Win=13800 Len=1380
      93 6.947825    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 85#4] PORT2 > PORT1 [ACK] Seq=4215 Ack=32654 Win=17432 
Len=0
      94 6.951391    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=39590 Ack=4215 Win=13800 Len=1380
      95 6.953579    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 85#5] PORT2 > PORT1 [ACK] Seq=4215 Ack=32654 Win=17432 
Len=0
      96 6.958442    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=40970 Ack=4215 Win=13800 Len=1380
      97 6.960584    22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 85#6] PORT2 > PORT1 [ACK] Seq=4215 Ack=32654 Win=17432 
Len=0
      98 6.965491    11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=42350 Ack=4215 Win=13800 Len=1380
      99 13.743297   11.11.1.1             22.222.222.22         TCP     
  [TCP Retransmission] PORT1 > PORT2 [ACK] Seq=32654 Ack=4215 Win=13800 
Len=1380
     100 13.745543   22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4215 Ack=34034 Win=30720 Len=0
     101 23.782698   22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [PSH, ACK] Seq=4215 Ack=34034 Win=32768 Len=29
     102 23.782746   22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [FIN, ACK] Seq=4244 Ack=34034 Win=32768 Len=0
     103 23.827627   11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=43730 Ack=4245 Win=13800 Len=0
     104 27.386210   11.11.1.1             22.222.222.22         TCP     
  [TCP Retransmission] PORT1 > PORT2 [PSH, ACK] Seq=34034 Ack=4245 
Win=13800 Len=1380
     105 27.388483   22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [ACK] Seq=4245 Ack=35414 Win=31388 Len=0
     106 27.393457   11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=43730 Ack=4245 Win=13800 Len=1380
     107 27.394204   11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=45110 Ack=4245 Win=13800 Len=1379
     108 27.394213   11.11.1.1             22.222.222.22         TCP     
 PORT1 > PORT2 [ACK] Seq=46489 Ack=4245 Win=13800 Len=1
     109 27.395577   22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 105#1] PORT2 > PORT1 [ACK] Seq=4245 Ack=35414 Win=31388 
Len=0
     110 27.396298   22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 105#2] PORT2 > PORT1 [ACK] Seq=4245 Ack=35414 Win=31388 
Len=0
     111 27.396305   22.222.222.22         11.11.1.1             TCP     
  [TCP Dup ACK 105#3] PORT2 > PORT1 [ACK] Seq=4245 Ack=35414 Win=31388 
Len=0
     112 27.423284   22.222.222.22         11.11.1.1             TCP     
 PORT2 > PORT1 [RST, ACK] Seq=4245 Ack=35414 Win=31388 Len=0


This is from a 2.6.24 Kernel.  I know it's not the most recent, but 
it's what I need to use.

Thanks again.
--
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
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.