Page MenuHomeFreeBSD

tcp: update repeat <SYN,ACK> with latest IP ECN info
ClosedPublic

Authored by rscheff on Oct 4 2022, 3:13 PM.
Tags
None
Referenced Files
Unknown Object (File)
Jan 12 2024, 9:00 AM
Unknown Object (File)
Dec 20 2023, 6:41 AM
Unknown Object (File)
Sep 11 2023, 3:22 AM
Unknown Object (File)
Sep 10 2023, 1:33 PM
Unknown Object (File)
Aug 24 2023, 9:34 PM
Unknown Object (File)
Aug 11 2023, 2:10 AM
Unknown Object (File)
Aug 11 2023, 2:10 AM
Unknown Object (File)
Aug 11 2023, 2:09 AM
Subscribers

Details

Summary

When multiple <SYN> segments are received, update the <SYN,ACK>
sent in response to the latest IP ECN and TCP ECN information.

On retransmitting the <SYN,ACK>, once ECN maxtries are done, not
only disable RFC3168 ECN, but AccECN also.

Test Plan

'''

// Create a listening TCP socket.
0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
+0.005 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
+0.005 bind(3, ..., ...) = 0
+0.005 listen(3, 1) = 0

// Establish a TCP connection.
+0.05 <[noecn] SEW 0:0(0) win 65535 <mss 1460, sackOK, eol, eol>
+0.00 >[noecn] SE. 0:0(0) ack 1 win 65535 <...>

+0.95 <[noecn] SEWA 0:0(0) win 65535 <mss 1460, sackOK, eol, eol>
+0.00 >[noecn] SW. 0:0(0) ack 1 win 65535 <...>

+0.95 <[ect0] SEWA 0:0(0) win 65535 <mss 1460, sackOK, eol, eol>
+0.00 >[noecn] SA. 0:0(0) ack 1 win 65535 <...>

+0.95 <[ect1] SEWA 0:0(0) win 65535 <mss 1460, sackOK, eol, eol>
+0.00 >[noecn] SEW. 0:0(0) ack 1 win 65535 <...>

+0.95 <[ce] SEWA 0:0(0) win 65535 <mss 1460, sackOK, eol, eol>
+0.00 >[noecn] SWA. 0:0(0) ack 1 win 65535 <...>

RTO 1 (AccECN)
+.2~+1.5 >[noecn] SWA. 0:0(0) ack 1 win 65535 <...>
RTO 2 (no ECN)
+.4~+3.0 >[noecn] S. 0:0(0) ack 1 win 65535 <...>

+0.95 <[noecn] SEW 0:0(0) win 65535 <mss 1460, sackOK, eol, eol>
// once fallen back to non-ECN, keep ECN disabled
+0.00 >[noecn] S. 0:0(0) ack 1 win 65535 <...>

RTO 1
+0.2~+1.5 >[noecn] S. 0:0(0) ack 1 win 65535 <...>
RTO 2
+0.4~+3.0 >[noecn] S. 0:0(0) ack 1 win 65535 <...>

'''

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable