I'm seeing what I believe to be a bug in FreeBSD 4.3's New Reno fast
retransmit algorithm-- delays of up to 1 second between
retransmissions.  Would someone please verify and/or correct me?  If 
this is a bug, has it been fixed?  

I'm using dummynet between two nodes to drop the 10th _data_ packet in a
TCP stream.  I have seen this both with 0 and 100 ms configured
delays.  Obviously, the drop happens in slow start.  In _both_ cases, I
have set the slowstart_flightsize (local and non-local) to 2.

There seem to be two problematic cases.  In the first, _both_ of these
conditions fire in tcp_input.c:

else if (++tp->t_dupacks == tcprexmtthresh) {

and

if (tcp_do_newreno && SEQ_LT(th->th_ack,
    tp->snd_recover)) {

The behavior is such that upon receiving the triple duplicate ACK for the
dropped packet, the next packet in the stream is transmitted.  Instead of
the retransmission.  The sender then receives another ACK and promptly
waits hundreds of ms (up to 1 second) before finally doing the
retransmission.

This is the first tcpdump below.

In the second case, neither of the above conditionals fire.  i.e. no
triple duplicate ack detection?  Only 3 ACKs are received in this
case.  Then a 1 second wait and finally the retransmission.  tcpdump Case
2 below.  

I'm a bit out of my league here.  But, it looks to me that regardless of
triple duplicate ACK detection, the packet is retransmitted because of a
timeout?  Is that "analysis" correct?  Is it correct behavior?

The delays are annotated with a comment (#) below.

Much thanks.

Brian

Case 1:

15:13:32.547864 192.168.1.2.commplex-link > 192.168.1.3.commplex-link: S
3599924535:3599924535(0) win 16384 <mss 960> (DF)

15:13:32.548083 192.168.1.3.commplex-link > 192.168.1.2.commplex-link: S
2723034168:2723034168(0) ack 3599924536 win 28800 <mss 960> (D
F)

15:13:32.548112 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . ack 1 win 17280 (DF)

15:13:33.547691 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 1:961(960) ack 1 win 17280 (DF)

15:13:33.547699 192.168.1.2.commplex-link > 192.168.1.3.commplex-link: P
961:1001(40) ack 1 win 17280 (DF)

15:13:33.548428 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 1001 win 27800 (DF)

15:13:33.548456 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 1001:1961(960) ack 1 win 17280 (DF)

15:13:33.548466 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 1961:2921(960) ack 1 win 17280 (DF)

15:13:33.548475 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 2921:3881(960) ack 1 win 17280 (DF)

15:13:33.549409 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 1961 win 28800 (DF)

15:13:33.549425 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 3881:4841(960) ack 1 win 17280 (DF)

15:13:33.551401 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 3881 win 27840 (DF)

15:13:33.551416 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 4841:5801(960) ack 1 win 17280 (DF)

15:13:33.551426 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 5801:6761(960) ack 1 win 17280 (DF)

15:13:33.552410 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 4841 win 28800 (DF)

15:13:33.552426 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 6761:7721(960) ack 1 win 17280 (DF)

15:13:33.554402 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 6761 win 27840 (DF)

15:13:33.554417 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 7721:8681(960) ack 1 win 17280 (DF)

15:13:33.554426 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 8681:9641(960) ack 1 win 17280 (DF)

15:13:33.554435 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 9641:10601(960) ack 1 win 17280 (DF)

15:13:33.556131 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 7721 win 28800 (DF)

15:13:33.556147 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 10601:11561(960) ack 1 win 17280 (DF)

15:13:33.556414 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 7721 win 28800 (DF)

15:13:33.557396 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 7721 win 28800 (DF)

15:13:33.558400 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 7721 win 28800 (DF)

15:13:33.563881 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 11561:12521(960) ack 1 win 17280 (DF)

15:13:33.570055 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 7721 win 28800 (DF)

# excessive delay here

15:13:34.547493 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 7721:8681(960) ack 1 win 17280 (DF)

15:13:34.548222 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 12521 win 24000 (DF)

15:13:34.548246 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 12521:13481(960) ack 1 win 17280 (DF)

15:13:34.548256 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 13481:14441(960) ack 1 win 17280 (DF)




Case 2:

15:13:17.728243 192.168.1.2.commplex-link > 192.168.1.3.commplex-link: S
4011861307:4011861307(0) win 16384 <mss 960> (DF)

15:13:17.729122 192.168.1.3.commplex-link > 192.168.1.2.commplex-link: S
3443738345:3443738345(0) ack 4011861308 win 28800 <mss 960> (D
F)

15:13:17.729150 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . ack 1 win 17280 (DF)

15:13:18.748002 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 1:961(960) ack 1 win 17280 (DF)

15:13:18.748009 192.168.1.2.commplex-link > 192.168.1.3.commplex-link: P
961:1001(40) ack 1 win 17280 (DF)

15:13:18.750040 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 1001 win 28760 (DF)

15:13:18.750065 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 1001:1961(960) ack 1 win 17280 (DF)

15:13:18.750074 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 1961:2921(960) ack 1 win 17280 (DF)

15:13:18.750084 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 2921:3881(960) ack 1 win 17280 (DF)

15:13:18.752196 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 2921 win 27840 (DF)

15:13:18.752212 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 3881:4841(960) ack 1 win 17280 (DF)

15:13:18.752222 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 4841:5801(960) ack 1 win 17280 (DF)

15:13:18.752231 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 5801:6761(960) ack 1 win 17280 (DF)

15:13:18.753206 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 3881 win 28800 (DF)

15:13:18.753222 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 6761:7721(960) ack 1 win 17280 (DF)

15:13:18.755197 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 5801 win 27840 (DF)

15:13:18.755213 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 7721:8681(960) ack 1 win 17280 (DF)

15:13:18.755222 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 8681:9641(960) ack 1 win 17280 (DF)

15:13:18.756204 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 6761 win 28800 (DF)

15:13:18.756219 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 9641:10601(960) ack 1 win 17280 (DF)

15:13:18.758197 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 7721 win 28800 (DF)

15:13:18.758212 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 10601:11561(960) ack 1 win 17280 (DF)

15:13:18.759192 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 7721 win 28800 (DF)

15:13:18.760190 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 7721 win 28800 (DF)

# delay here

15:13:19.757836 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 7721:8681(960) ack 1 win 17280 (DF)

15:13:19.759034 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 11561 win 24960 (DF)

15:13:19.759057 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 11561:12521(960) ack 1 win 17280 (DF)

15:13:19.759066 192.168.1.2.commplex-link >
192.168.1.3.commplex-link: . 12521:13481(960) ack 1 win 17280 (DF)

15:13:19.759081 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 11561 win 28800 (DF)

15:13:19.761006 192.168.1.3.commplex-link >
192.168.1.2.commplex-link: . ack 13481 win 27840 (DF)



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message

Reply via email to