ECN Bug Examples

ecn-rexmt

Before Fix:
+ 0.70504 2 3 tcp 40 C--A--- 0 0.0 3.0 0 0 -1 0xca 40 0
+ 0.80544 3 2 ack 40 C------ 0 3.0 0.0 0 1 1 0x5a 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 ------N 0 0.0 3.0 1 3 1 0x10 40 0
+ 0.917072 2 3 tcp 576 ------N 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
d 1.133272 2 3 tcp 576 ------N 0 0.0 3.0 1073 7 1 0x10 40 0    DROP
+ 1.133848 2 3 tcp 576 ------N 0 0.0 3.0 1609 8 1 0x10 40 0
+ 1.139032 2 3 tcp 576 ------N 0 0.0 3.0 2145 9 1 0x10 40 0
+ 1.139608 2 3 tcp 576 ------N 0 0.0 3.0 2681 10 1 0x10 40 0
+ 1.239608 3 2 ack 40 ------- 0 3.0 0.0 1 11 1073 0x18 40 0
+ 1.245368 3 2 ack 40 ------- 0 3.0 0.0 1 12 1073 0x18 40 0
+ 1.251128 3 2 ack 40 ------- 0 3.0 0.0 1 13 1073 0x18 40 0
+ 1.362144 2 3 tcp 576 ---A--N 0 0.0 3.0 1073 14 1 0x90 40 0   REXMT (CWR flag set)
+ 1.467904 3 2 ack 40 ------- 0 3.0 0.0 1 15 3217 0x18 40 0
+ 1.57892 2 3 tcp 576 ------N 0 0.0 3.0 3217 16 1 0x10 40 0    NEW DATA
+ 1.579496 2 3 tcp 576 ------N 0 0.0 3.0 3753 17 1 0x10 40 0

After Fix

+ 0.70504 2 3 tcp 40 C--A--- 0 0.0 3.0 0 0 -1 0xca 40 0
+ 0.80544 3 2 ack 40 C------ 0 3.0 0.0 0 1 1 0x5a 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 ------N 0 0.0 3.0 1 3 1 0x10 40 0
+ 0.917072 2 3 tcp 576 ------N 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
d 1.133272 2 3 tcp 576 ------N 0 0.0 3.0 1073 7 1 0x10 40 0    DROP
+ 1.133848 2 3 tcp 576 ------N 0 0.0 3.0 1609 8 1 0x10 40 0
+ 1.139032 2 3 tcp 576 ------N 0 0.0 3.0 2145 9 1 0x10 40 0
+ 1.139608 2 3 tcp 576 ------N 0 0.0 3.0 2681 10 1 0x10 40 0
+ 1.239608 3 2 ack 40 ------- 0 3.0 0.0 1 11 1073 0x18 40 0
+ 1.245368 3 2 ack 40 ------- 0 3.0 0.0 1 12 1073 0x18 40 0
+ 1.251128 3 2 ack 40 ------- 0 3.0 0.0 1 13 1073 0x18 40 0
+ 1.362144 2 3 tcp 576 ------N 0 0.0 3.0 1073 14 1 0x10 40 0   REXMT (no CWR flag set)
+ 1.467904 3 2 ack 40 ------- 0 3.0 0.0 1 15 3217 0x18 40 0
+ 1.57892 2 3 tcp 576 ---A--N 0 0.0 3.0 3217 16 1 0x90 40 0    NEW DATA (CWR flag set)
+ 1.579496 2 3 tcp 576 ------N 0 0.0 3.0 3753 17 1 0x10 40 0

ecn-drop-synack

Before Fix:
+ 0.70504 2 3 tcp 40 C--A--- 0 0.0 3.0 0 0 -1 0xca 40 0
d 0.80544 3 2 ack 40 C------ 0 3.0 0.0 0 1 1 0x5a 40 0       DROP
+ 6.70504 2 3 tcp 40 C--A--- 0 0.0 3.0 0 2 -1 0xca 40 0
+ 6.80544 3 2 ack 40 C--A--- 0 3.0 0.0 0 3 1 0xda 40 0       REXMT (flags should be C------)
+ 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:
+ 0.70504 2 3 tcp 40 C--A--- 0 0.0 3.0 0 0 -1 0xca 40 0
d 0.80544 3 2 ack 40 C------ 0 3.0 0.0 0 1 1 0x5a 40 0       DROP
+ 6.70504 2 3 tcp 40 C--A--- 0 0.0 3.0 0 2 -1 0xca 40 0
+ 6.80544 3 2 ack 40 C------ 0 3.0 0.0 0 3 1 0x5a 40 0       REXMT (correct flags)
+ 6.91592 2 3 tcp 40 ------- 0 0.0 3.0 1 4 1 0x10 40 0
+ 6.916496 2 3 tcp 576 ---A--N 0 0.0 3.0 1 5 1 0x90 40 0
+ 6.917072 2 3 tcp 576 ------N 0 0.0 3.0 537 6 1 0x10 40 0

Michele C. Weigle