Reno Bug Examples

reno-drop-passive-fin

Before Fix:
3.316720: FullTcp(_o92): recv'd pkt in CLOSED state:  
[20:0.0>3.0] (hlen:40, dlen:0, seq:2682, ack:2, flags:0x18 (<PSH,ACK>), salen:0, reason:0x0)

+ 0.70504 2 3 tcp 40 ------- 0 0.0 3.0 0 0 -1 0xa 40 0
+ 0.80544 3 2 ack 40 ------- 0 3.0 0.0 0 1 1 0x1a 40 0
+ 0.91592 2 3 tcp 40 ------- 0 0.0 3.0 1 2 1 0x10 40 0
+ 0.916496 2 3 tcp 576 ------- 0 0.0 3.0 1 3 1 0x10 40 0
+ 0.917072 2 3 tcp 576 ------- 0 0.0 3.0 537 4 1 0x10 40 0
+ 1.022256 3 2 ack 40 ------- 0 3.0 0.0 1 5 537 0x18 40 0
+ 1.028016 3 2 ack 40 ------- 0 3.0 0.0 1 6 1073 0x18 40 0
+ 1.133272 2 3 tcp 576 ------- 0 0.0 3.0 1073 7 1 0x10 40 0
+ 1.133848 2 3 tcp 576 ------- 0 0.0 3.0 1609 8 1 0x10 40 0
+ 1.139032 2 3 tcp 576 ------- 0 0.0 3.0 2145 9 1 0x18 40 0
+ 1.239032 3 2 ack 40 ------- 0 3.0 0.0 1 10 1609 0x18 40 0
+ 1.244792 3 2 ack 40 ------- 0 3.0 0.0 1 11 2145 0x18 40 0
+ 1.250552 3 2 ack 40 ------- 0 3.0 0.0 1 12 2681 0x18 40 0
+ 2.00504 2 3 tcp 40 ------- 0 0.0 3.0 2681 13 1 0x19 40 0      FIN
d 2.10544 3 2 ack 40 ------- 0 3.0 0.0 1 14 2682 0x18 40 0      DROP
d 2.10544 3 2 ack 40 ------- 0 3.0 0.0 1 15 2682 0x19 40 0      DROP passive FIN
+ 3.00504 2 3 tcp 40 ------- 0 0.0 3.0 2681 16 1 0x19 40 0      REXMT FIN
+ 3.10544 3 2 ack 40 ------- 0 3.0 0.0 1 17 2682 0x19 40 0      REXMT passive FIN
+ 3.10544 3 2 ack 40 ------- 0 3.0 0.0 1 18 2681 0x19 40 0      ACK FIN (wrong ACKno)
+ 3.21592 2 3 tcp 40 ------- 0 0.0 3.0 2682 19 2 0x18 40 0      last ACK
+ 3.21632 2 3 tcp 40 ------- 0 0.0 3.0 2682 20 2 0x18 40 0      additional ACK
After Fix
+ 0.70504 2 3 tcp 40 ------- 0 0.0 3.0 0 0 -1 0xa 40 0
+ 0.80544 3 2 ack 40 ------- 0 3.0 0.0 0 1 1 0x1a 40 0
+ 0.91592 2 3 tcp 40 ------- 0 0.0 3.0 1 2 1 0x10 40 0
+ 0.916496 2 3 tcp 576 ------- 0 0.0 3.0 1 3 1 0x10 40 0
+ 0.917072 2 3 tcp 576 ------- 0 0.0 3.0 537 4 1 0x10 40 0
+ 1.022256 3 2 ack 40 ------- 0 3.0 0.0 1 5 537 0x18 40 0
+ 1.028016 3 2 ack 40 ------- 0 3.0 0.0 1 6 1073 0x18 40 0
+ 1.133272 2 3 tcp 576 ------- 0 0.0 3.0 1073 7 1 0x10 40 0
+ 1.133848 2 3 tcp 576 ------- 0 0.0 3.0 1609 8 1 0x10 40 0
+ 1.139032 2 3 tcp 576 ------- 0 0.0 3.0 2145 9 1 0x18 40 0
+ 1.239032 3 2 ack 40 ------- 0 3.0 0.0 1 10 1609 0x18 40 0
+ 1.244792 3 2 ack 40 ------- 0 3.0 0.0 1 11 2145 0x18 40 0
+ 1.250552 3 2 ack 40 ------- 0 3.0 0.0 1 12 2681 0x18 40 0
+ 2.00504 2 3 tcp 40 ------- 0 0.0 3.0 2681 13 1 0x19 40 0     FIN
d 2.10544 3 2 ack 40 ------- 0 3.0 0.0 1 14 2682 0x18 40 0     DROP
d 2.10544 3 2 ack 40 ------- 0 3.0 0.0 1 15 2682 0x19 40 0     DROP passive FIN
+ 3.00504 2 3 tcp 40 ------- 0 0.0 3.0 2681 16 1 0x19 40 0     REXMT FIN
+ 3.10544 3 2 ack 40 ------- 0 3.0 0.0 1 17 2682 0x19 40 0     REXMT passive FIN
+ 3.21592 2 3 tcp 40 ------- 0 0.0 3.0 2682 18 2 0x18 40 0     last ACK

reno-drop-synack

Before Fix:
6.805440: FullTcpAgent::recv(_o92) got packet lacking ACK (state:3):  
[2:0.0>3.0] (hlen:40, dlen:-1, seq:1, ack:-1, flags:0xa (<PSH,SYN>), salen:0, reason:0x4)

+ 0.70504 2 3 tcp 40 ------- 0 0.0 3.0 0 0 -1 0xa 40 0
d 0.80544 3 2 ack 40 ------- 0 3.0 0.0 0 1 1 0x1a 40 0
+ 6.70504 2 3 tcp 40 ------- 0 0.0 3.0 0 2 -1 0xa 40 0
+ 6.80544 3 2 ack 40 ------- 0 3.0 0.0 0 3 1 0x1a 40 0
+ 6.91592 2 3 tcp 40 ------- 0 0.0 3.0 1 4 1 0x10 40 0
+ 6.916496 2 3 tcp 576 ------- 0 0.0 3.0 1 5 1 0x10 40 0
+ 6.917072 2 3 tcp 576 ------- 0 0.0 3.0 537 6 1 0x10 40 0
After Fix:

No error message


reno-msg_eof-fin

Before Fix:
+ 0.70504 2 3 tcp 40 ------- 0 0.0 3.0 0 0 -1 0xa 40 0
+ 0.80544 3 2 ack 40 ------- 0 3.0 0.0 0 1 1 0x1a 40 0
+ 0.91592 2 3 tcp 40 ------- 0 0.0 3.0 1 2 1 0x10 40 0
+ 0.916496 2 3 tcp 576 ------- 0 0.0 3.0 1 3 1 0x10 40 0
+ 0.917072 2 3 tcp 576 ------- 0 0.0 3.0 537 4 1 0x10 40 0
+ 1.022256 3 2 ack 40 ------- 0 3.0 0.0 1 5 537 0x18 40 0
+ 1.028016 3 2 ack 40 ------- 0 3.0 0.0 1 6 1073 0x18 40 0
+ 1.133272 2 3 tcp 576 ------- 0 0.0 3.0 1073 7 1 0x10 40 0
+ 1.133848 2 3 tcp 576 ------- 0 0.0 3.0 1609 8 1 0x10 40 0
+ 1.139032 2 3 tcp 576 ------- 0 0.0 3.0 2145 9 1 0x18 40 0
+ 1.239032 3 2 ack 40 ------- 0 3.0 0.0 1 10 1609 0x18 40 0
+ 1.244792 3 2 ack 40 ------- 0 3.0 0.0 1 11 2145 0x18 40 0
+ 1.250552 3 2 ack 40 ------- 0 3.0 0.0 1 12 2681 0x18 40 0
+ 1.361432 2 3 tcp 440 ------- 0 0.0 3.0 2681 13 1 0x18 40 0   last DATA packet (size 440 bytes)
+ 1.361872 2 3 tcp 440 ------- 0 0.0 3.0 2681 14 1 0x19 40 0   FIN (size 440 bytes)
+ 1.470232 3 2 ack 40 ------- 0 3.0 0.0 1 15 3082 0x18 40 0
+ 1.470232 3 2 ack 40 ------- 0 3.0 0.0 1 16 3082 0x19 40 0
+ 1.581112 2 3 tcp 40 ------- 0 0.0 3.0 3082 17 2 0x18 40 0
After Fix:
+ 0.70504 2 3 tcp 40 ------- 0 0.0 3.0 0 0 -1 0xa 40 0
+ 0.80544 3 2 ack 40 ------- 0 3.0 0.0 0 1 1 0x1a 40 0
+ 0.91592 2 3 tcp 40 ------- 0 0.0 3.0 1 2 1 0x10 40 0
+ 0.916496 2 3 tcp 576 ------- 0 0.0 3.0 1 3 1 0x10 40 0
+ 0.917072 2 3 tcp 576 ------- 0 0.0 3.0 537 4 1 0x10 40 0
+ 1.022256 3 2 ack 40 ------- 0 3.0 0.0 1 5 537 0x18 40 0
+ 1.028016 3 2 ack 40 ------- 0 3.0 0.0 1 6 1073 0x18 40 0
+ 1.133272 2 3 tcp 576 ------- 0 0.0 3.0 1073 7 1 0x10 40 0
+ 1.133848 2 3 tcp 576 ------- 0 0.0 3.0 1609 8 1 0x10 40 0
+ 1.139032 2 3 tcp 576 ------- 0 0.0 3.0 2145 9 1 0x18 40 0
+ 1.239032 3 2 ack 40 ------- 0 3.0 0.0 1 10 1609 0x18 40 0
+ 1.244792 3 2 ack 40 ------- 0 3.0 0.0 1 11 2145 0x18 40 0
+ 1.250552 3 2 ack 40 ------- 0 3.0 0.0 1 12 2681 0x18 40 0
+ 1.361432 2 3 tcp 440 ------- 0 0.0 3.0 2681 13 1 0x18 40 0    last DATA packet (size 440 bytes)
+ 1.361472 2 3 tcp 40 ------- 0 0.0 3.0 3081 14 1 0x19 40 0     FIN (size 40 bytes)
+ 1.466232 3 2 ack 40 ------- 0 3.0 0.0 1 15 3082 0x18 40 0
+ 1.466232 3 2 ack 40 ------- 0 3.0 0.0 1 16 3082 0x19 40 0
+ 1.577112 2 3 tcp 40 ------- 0 0.0 3.0 3082 17 2 0x18 40 0

reno-drop-lastack

Before Fix:
3.210880: FullTcp(_o91): recv'd pkt in CLOSED state:  
[13:3.0>0.0] (hlen:40, dlen:0, seq:1, ack:1610, flags:0x19 (<PSH,ACK,FIN>), salen:0, reason:0x4)
5.210880: FullTcp(_o91): recv'd pkt in CLOSED state:  
[14:3.0>0.0] (hlen:40, dlen:0, seq:1, ack:1610, flags:0x19 (<PSH,ACK,FIN>), salen:0, reason:0x4)
9.210880: FullTcp(_o91): recv'd pkt in CLOSED state:  
[15:3.0>0.0] (hlen:40, dlen:0, seq:1, ack:1610, flags:0x19 (<PSH,ACK,FIN>), salen:0, reason:0x4)
17.210880: FullTcp(_o91): recv'd pkt in CLOSED state:  
[16:3.0>0.0] (hlen:40, dlen:0, seq:1, ack:1610, flags:0x19 (<PSH,ACK,FIN>), salen:0, reason:0x4)
33.210880: FullTcp(_o91): recv'd pkt in CLOSED state:  
[17:3.0>0.0] (hlen:40, dlen:0, seq:1, ack:1610, flags:0x19 (<PSH,ACK,FIN>), salen:0, reason:0x4)

+ 0.70504 2 3 tcp 40 ------- 0 0.0 3.0 0 0 -1 0xa 40 0
+ 0.80544 3 2 ack 40 ------- 0 3.0 0.0 0 1 1 0x1a 40 0
+ 0.91592 2 3 tcp 40 ------- 0 0.0 3.0 1 2 1 0x10 40 0
+ 0.916496 2 3 tcp 576 ------- 0 0.0 3.0 1 3 1 0x10 40 0
+ 0.917072 2 3 tcp 576 ------- 0 0.0 3.0 537 4 1 0x10 40 0
+ 1.022256 3 2 ack 40 ------- 0 3.0 0.0 1 5 537 0x18 40 0
+ 1.028016 3 2 ack 40 ------- 0 3.0 0.0 1 6 1073 0x18 40 0
+ 1.133272 2 3 tcp 576 ------- 0 0.0 3.0 1073 7 1 0x18 40 0
+ 1.239032 3 2 ack 40 ------- 0 3.0 0.0 1 8 1609 0x18 40 0
+ 2.00504 2 3 tcp 40 ------- 0 0.0 3.0 1609 9 1 0x19 40 0      FIN (active closer)
+ 2.10544 3 2 ack 40 ------- 0 3.0 0.0 1 10 1610 0x18 40 0     ACK 
+ 2.10544 3 2 ack 40 ------- 0 3.0 0.0 1 11 1610 0x19 40 0     FIN (passive closer)
d 2.21632 2 3 tcp 40 ------- 0 0.0 3.0 1610 12 2 0x18 40 0     DROP (last ACK)
+ 3.10544 3 2 ack 40 ------- 0 3.0 0.0 1 13 1610 0x19 40 0     passive closer retransmits FIN forever
+ 5.10544 3 2 ack 40 ------- 0 3.0 0.0 1 14 1610 0x19 40 0
+ 9.10544 3 2 ack 40 ------- 0 3.0 0.0 1 15 1610 0x19 40 0
+ 17.10544 3 2 ack 40 ------- 0 3.0 0.0 1 16 1610 0x19 40 0
+ 33.10544 3 2 ack 40 ------- 0 3.0 0.0 1 17 1610 0x19 40 0
After Fix:
+ 0.70504 2 3 tcp 40 ------- 0 0.0 3.0 0 0 -1 0xa 40 0
+ 0.80544 3 2 ack 40 ------- 0 3.0 0.0 0 1 1 0x1a 40 0
+ 0.91592 2 3 tcp 40 ------- 0 0.0 3.0 1 2 1 0x10 40 0
+ 0.916496 2 3 tcp 576 ------- 0 0.0 3.0 1 3 1 0x10 40 0
+ 0.917072 2 3 tcp 576 ------- 0 0.0 3.0 537 4 1 0x10 40 0
+ 1.022256 3 2 ack 40 ------- 0 3.0 0.0 1 5 537 0x18 40 0
+ 1.028016 3 2 ack 40 ------- 0 3.0 0.0 1 6 1073 0x18 40 0
+ 1.133272 2 3 tcp 576 ------- 0 0.0 3.0 1073 7 1 0x18 40 0
+ 1.239032 3 2 ack 40 ------- 0 3.0 0.0 1 8 1609 0x18 40 0
+ 2.00504 2 3 tcp 40 ------- 0 0.0 3.0 1609 9 1 0x19 40 0      FIN (active closer)
+ 2.10544 3 2 ack 40 ------- 0 3.0 0.0 1 10 1610 0x18 40 0     ACK
+ 2.10544 3 2 ack 40 ------- 0 3.0 0.0 1 11 1610 0x19 40 0     FIN (passive closer)
d 2.21632 2 3 tcp 40 ------- 0 0.0 3.0 1610 12 2 0x18 40 0     DROP (last ACK)
+ 3.10544 3 2 ack 40 ------- 0 3.0 0.0 1 13 1610 0x19 40 0     REXMT FIN (passive closer)
+ 3.21592 2 3 tcp 40 ------- 0 0.0 3.0 1610 14 2 0x18 40 0     ACK

Michele C. Weigle