Page MenuHomeFreeBSD

more ECN preparations for ECN++, AccECN (tcp_respond)
ClosedPublic

Authored by rscheff on Oct 12 2022, 8:23 PM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Apr 4, 4:58 PM
Unknown Object (File)
Jan 22 2024, 11:40 AM
Unknown Object (File)
Jan 17 2024, 6:26 PM
Unknown Object (File)
Jan 1 2024, 8:37 AM
Unknown Object (File)
Dec 20 2023, 5:48 AM
Unknown Object (File)
Dec 13 2023, 1:34 AM
Unknown Object (File)
Dec 12 2023, 9:10 AM
Unknown Object (File)
Dec 6 2023, 1:19 AM
Subscribers

Details

Summary

tcp_respond is another function to build a tcp control packet
quickly. With ECN++ and AccECN, both the IP ECN header, and
the TCP ECN flags are supposed to reflect the correct state.

While at it, also ensure that on receiving multiple
ECN <SYN,ACK>s, the responses triggered reflect the latest
inbound state (IP, TCP ECN) - no longer assume the tcpcb
ECN flags start off "clean", but set them metriciously.
adjust function definition

Test Plan

Note how the AccECN flags of each final 3WHS ACK adjust to the IP ECN and
inbound <SYN,ACK> ECN flags change.

`
sysctl -q net.inet.tcp.ecn.enable=3
`

    0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 4
+.002 ... 0.052 connect(4, ..., ...) = 0

+.002 > [noecn] SEWA 0:0(0) <mss 1460,nop,wscale 6,sackOK,TS val 100 ecr 0>
+0.05 < [noecn] SW. 0:0(0) ack 1 win 32767 <mss 1460,sackOK,nop,wscale 8,eol,eol>
+.002 > [noecn] W. 1:1(0) ack 1

+0.05 < [noecn] SW. 0:0(0) ack 1 win 32767 <mss 1460,sackOK,nop,wscale 8,eol,eol>
+.002 > [noecn]  W. 1:1(0) ack 1

+0.05 < [ect0]  SW. 0:0(0) ack 1 win 32767 <mss 1460,sackOK,nop,wscale 8,eol,eol>
+.002 > [noecn]  A. 1:1(0) ack 1

+0.05 < [ect1]  SW. 0:0(0) ack 1 win 32767 <mss 1460,sackOK,nop,wscale 8,eol,eol>
+.002 > [noecn] EW. 1:1(0) ack 1

+0.05 < [ce]    SW. 0:0(0) ack 1 win 32767 <mss 1460,sackOK,nop,wscale 8,eol,eol>
+.002 > [noecn] WA. 1:1(0) ack 1

+0.05 < [noecn] SE. 0:0(0) ack 1 win 32767 <mss 1460,sackOK,nop,wscale 8,eol,eol>
+.002 > [noecn]   . 1:1(0) ack 1

+0.05 < [noecn]  S. 0:0(0) ack 1 win 32767 <mss 1460,sackOK,nop,wscale 8,eol,eol>
+.002 > [noecn]   . 1:1(0) ack 1

Diff Detail

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