During a simultaneous SYN in RFC3168 mode, while in SYN-SENT and
receiving an ECN SYN (SYN,CWR,ECE), the ECE flag will trigger an
ECN-based congestion control (CC) response - which is premature.
Make sure, that an RFC3168 ECN reaction only occurs on non-SYN
segments.
Details
Details
'''
0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 4
+.002 ... 0.07 connect(4, ..., ...) = 0
+.002 > [noecn] SEW 0:0(0) <mss 1460,nop,wscale 6,sackOK,eol,eol>
+0.02 < [noecn] SEW 0:0(0) win 32767 <mss 1050,sackOK,nop,nop,nop,wscale 8>
+.002 > [noecn] SE. 0:0(0) ack 1 <mss 1460,nop,wscale 6,sackOK,eol,eol>
+0.05 < [noecn] SE. 0:0(0) ack 1 win 32767 <mss 1050,sackOK,nop,nop,nop,wscale 8>
+.002 > [noecn] . 1:1(0) ack 1
+.02 < [noecn] . 1:1(0) ack 1 win 256
+1 write(4, ..., 1000) = 1000
// correct - cwnd at initial window, no CWR (congestion window reduced) flag
+.002 > [ect0] P. 1:1001(1000) ack 1
incorrect - ECE from the simultaneous SYN triggers a CC reaction, and this
in turn is signaled using the CWR flag
//+.002 > [ect0] PW. 1:1001(1000) ack 1
'''
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 47683 Build 44570: arc lint + arc unit