Page MenuHomeFreeBSD

tcp: no CC reaction on ECE when SYN is still set in RFC3168 mode.
ClosedPublic

Authored by rscheff on Oct 3 2022, 8:33 PM.
Tags
None
Referenced Files
Unknown Object (File)
Oct 1 2024, 10:25 AM
Unknown Object (File)
Sep 25 2024, 2:25 PM
Unknown Object (File)
Sep 25 2024, 12:33 PM
Unknown Object (File)
Sep 24 2024, 7:20 PM
Unknown Object (File)
Sep 24 2024, 5:03 PM
Unknown Object (File)
Sep 24 2024, 3:19 PM
Unknown Object (File)
Sep 24 2024, 2:23 PM
Unknown Object (File)
Sep 23 2024, 4:54 PM
Subscribers

Details

Summary

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.

Test Plan

'''

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

Repository
rG FreeBSD src repository
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 47683
Build 44570: arc lint + arc unit