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
F102835762: D36875.diff
Sun, Nov 17, 7:22 PM
F102815013: D36875.diff
Sun, Nov 17, 1:20 PM
Unknown Object (File)
Fri, Nov 8, 3:53 AM
Unknown Object (File)
Wed, Oct 30, 12:22 PM
Unknown Object (File)
Sep 30 2024, 3:08 AM
Unknown Object (File)
Sep 30 2024, 12:14 AM
Unknown Object (File)
Sep 27 2024, 5:45 PM
Unknown Object (File)
Sep 27 2024, 5:22 PM
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 Passed
Unit
No Test Coverage
Build Status
Buildable 47689
Build 44576: arc lint + arc unit