Page MenuHomeFreeBSD

rrs (Randall Stewart)
User

Projects

User Details

User Since
Jan 22 2015, 5:22 AM (579 w, 5 d)

Recent Activity

Wed, Feb 25

rrs committed rG4e28874a6048: When TCP ECN decides it wants to assure an ACK is sent it needs to do it… (authored by rrs).
When TCP ECN decides it wants to assure an ACK is sent it needs to do it…
Wed, Feb 25, 1:05 PM

Tue, Feb 24

rrs added a comment to D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..

done

Tue, Feb 24, 7:18 PM
rrs updated the diff for D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..

Out goes CLOSE WAIT :)

Tue, Feb 24, 7:18 PM
rrs closed D55459: Mitigate a case where TCP rack can send an extra ack..

commited

Tue, Feb 24, 4:50 PM
rrs accepted D55489: tcp: improve handling of segments in TIME WAIT.
Tue, Feb 24, 4:50 PM
rrs committed rG9063968e8e39: Mitigate a case where TCP rack can send an extra ack. (authored by rrs).
Mitigate a case where TCP rack can send an extra ack.
Tue, Feb 24, 4:49 PM
rrs added a comment to D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..

added close wait.. and fixed all my earlier errors :)

Tue, Feb 24, 4:45 PM
rrs updated the diff for D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..

include close-wait

Tue, Feb 24, 4:44 PM
rrs updated the diff for D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..

fix my earlier bobble :)

Tue, Feb 24, 4:39 PM
rrs added inline comments to D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..
Tue, Feb 24, 4:31 PM
rrs updated the diff for D55459: Mitigate a case where TCP rack can send an extra ack..

fix comment

Tue, Feb 24, 3:09 PM
rrs updated the diff for D55459: Mitigate a case where TCP rack can send an extra ack..

Fix the compile bug and get the tested code in.

Tue, Feb 24, 3:06 PM
rrs updated the diff for D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..

Updates per latest comments.

Tue, Feb 24, 3:05 PM
rrs added a comment to D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..

Sending ack's in general (ESTABLISHED) will of course not cause issues. But what concerns me
is that we *do* use acks to drive the various state-machines when we are in the front or back-states.
Can ack's driven by CC/ECN interfere .. I don't know.. is it protocol or implementation probably both.
I just think there needs to be careful thought on when the CC/ECN overrides and says "ACK" if
we are not in established.

Tue, Feb 24, 2:59 PM
rrs added a comment to D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..
In D55460#1269031, @rrs wrote:

The reason I am suggesting to include FIN WAIT 1/2 is that we stopped sending, but the
peer can send us data for an unlimited amount of time.. Shouldn't this data transfer towards
us be able to use ECN? That would mean we should send ACKs based on the received ECN markings.
Am I wrong with this? Why shouldn't half closed TCP connections not use ECN for the
direction data is still sent?

Hmm FIN WAIT 2, yes I can see that since at that point you have transitioned to fully closed. And yes
the peer could keep in established on its side a long time.. But are you not in the middle of your close
in FIN WAIT 1?

Have a look at state diagram.
When you close your writing end, you send a FIN and enter FIN WAIT 1. When you receive the ACK for this FIN, you enter FIN WAIT 2. From the perspective of your peer, there is no difference if you are in FIN WAIT 1 or FIN WAIT 2 (or ESTABLISHED). The peer can send data. As long as it can send data, ECN should be usable, I think.

Tue, Feb 24, 12:47 PM
rrs accepted D55466: tcp: BBLog incoming packets in TCPS_TIME_WAIT.
Tue, Feb 24, 12:15 PM
rrs accepted D43166: tcp: bypass TSO when CWR bit is to be sent.
Tue, Feb 24, 12:12 PM

Mon, Feb 23

rrs added a comment to D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..

The reason I am suggesting to include FIN WAIT 1/2 is that we stopped sending, but the
peer can send us data for an unlimited amount of time.. Shouldn't this data transfer towards
us be able to use ECN? That would mean we should send ACKs based on the received ECN markings.
Am I wrong with this? Why shouldn't half closed TCP connections not use ECN for the
direction data is still sent?

Mon, Feb 23, 7:11 PM
rrs added a comment to D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..

LGTM

I think CLOSE WAIT should be replaced by FIN WAIT 1 and FIN WAIT 2. My mistake.

Mon, Feb 23, 5:52 PM
rrs updated the diff for D55459: Mitigate a case where TCP rack can send an extra ack..

And I have found the case where we are getting the initial ack that causes the ack-war beginning.. not the
src of the continued ack-war (thats in tcp_timewait) but the initial extra ack :)

Mon, Feb 23, 5:43 PM
rrs updated the diff for D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..

Ok I have added the CLOSE_WAIT stage Michael suggested. However I am not
sure that is a wise thing. It may mean an extra ack in the closing state i.e. while you
are waiting for your user to close.. but on the other hand that may take a *very* long
time.. so I am ambivalent about it

Mon, Feb 23, 4:30 PM
rrs added a comment to D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..

What is with BBR?

Mon, Feb 23, 4:08 PM
rrs requested review of D55460: When TCP ECN decides it wants to assure an ACK is sent it needs to do it correctly and with some limits..
Mon, Feb 23, 1:59 PM
rrs requested review of D55459: Mitigate a case where TCP rack can send an extra ack..
Mon, Feb 23, 1:55 PM
rrs added a comment to D55454: sctp: fix so_proto when peeling off a socket .
In D55454#1268359, @bms wrote:

Any plans to add gencnt to SCTP sockets?

Olivier Van Acker did a GenAI lemming run with Cursor last week to auto-generate sctpsso(8) from tcpsso(8) as a template.

Whilst it generated an (at first) viable looking code artefact that compiled without error against FreeBSD 15.0-RELEASE, the AI model concerned had hallucinated the existence of two major things: gencnt existing for SCTP sockets, and a *.sockopt sysctl for SCTP to actually set the options.

Mon, Feb 23, 12:29 PM
rrs accepted D55454: sctp: fix so_proto when peeling off a socket .
Mon, Feb 23, 10:39 AM

Sun, Feb 22

rrs accepted D55415: tcp: cleanup.
Sun, Feb 22, 2:26 PM

Wed, Feb 18

rrs added a comment to D55338: tcp: add support for TCP_RST_REASON_CODE socket option.

This is work in progress. There will be some more changes.

Wed, Feb 18, 3:01 PM
rrs accepted D55338: tcp: add support for TCP_RST_REASON_CODE socket option.
Wed, Feb 18, 2:22 PM

Jan 23 2026

rrs added a comment to D47218: tcp cc: re-organize newreno functions into parts that can be re-used.

What other CC modules are you contemplating using this for?

Jan 23 2026, 1:01 PM

Jan 5 2026

rrs closed D53832: TCP Stacks, Improve rack to better handle reordering.
Jan 5 2026, 4:42 PM
rrs committed rG138e74ceadb2: TCP Stacks, Improve rack to better handle reordering (authored by rrs).
TCP Stacks, Improve rack to better handle reordering
Jan 5 2026, 4:32 PM

Dec 17 2025

rrs added a comment to D53832: TCP Stacks, Improve rack to better handle reordering.

How does this algorithm relate to the reordering tolerance of RACK defined by step 4 of RFC 8985?

Dec 17 2025, 4:56 PM

Dec 11 2025

rrs accepted D53832: TCP Stacks, Improve rack to better handle reordering.
Dec 11 2025, 4:57 PM

Nov 19 2025

rrs requested review of D53832: TCP Stacks, Improve rack to better handle reordering.
Nov 19 2025, 7:41 PM

Nov 18 2025

rrs committed rG8f2f66b323ac: TCP Pacing system (HPTS) is missing an API (authored by rrs).
TCP Pacing system (HPTS) is missing an API
Nov 18 2025, 3:19 PM
rrs closed D53225: TCP Pacing system (HPTS) is missing an API.
Nov 18 2025, 3:19 PM

Nov 17 2025

rrs added a comment to D53225: TCP Pacing system (HPTS) is missing an API.

I think you forget that I am the author of read_bbrlog and it will slowly change over time as I work on the next features I am planning in rack. I admit
I am a bit slow, since retirement keeps getting in the way :-D, but I anticipate getting a lot more done on measurements and improvements using
the measurements to DGP. As that all occurs read_bbrlog will change. As will other base things in FreeBSD... Gleb had asked me to move the socket
read/write code of of the generic for TCP.. I plan on doing that first and getting rid of the socket buffer locks. From there it will be onward to get the
measurements in.. hmm come to think about it I need to complete my improvements for reordering and get rid of the sysctl stuff that can make
rack use the old reorder methods from draft 1 of Rack... something that the recent fun with reordering proves is not a good idea :)

Nov 17 2025, 1:23 PM

Nov 4 2025

rrs accepted D53564: tcp: minor cleanup of syncache code.
Nov 4 2025, 12:25 PM

Nov 3 2025

rrs added inline comments to D53225: TCP Pacing system (HPTS) is missing an API.
Nov 3 2025, 3:53 PM
rrs accepted D53225: TCP Pacing system (HPTS) is missing an API.
Nov 3 2025, 3:50 PM

Oct 20 2025

rrs accepted D50858: TCP without LRO doing static pacing does not always pace as expected..
Oct 20 2025, 6:14 PM
rrs closed D53197: Move bbr and rack to use inline per C99.

committed

Oct 20 2025, 6:11 PM
rrs closed D53021: inline most of the considered lost condensation..

committed

Oct 20 2025, 6:10 PM
rrs committed rGa8e4399fc6a2: Move bbr and rack to use inline per C99 (TCP Sub-system) (authored by rrs).
Move bbr and rack to use inline per C99 (TCP Sub-system)
Oct 20 2025, 6:10 PM
rrs accepted D53218: UDP: let udp_pcblist() support UDP and UDP-Lite.
Oct 20 2025, 6:05 PM
rrs requested review of D53225: TCP Pacing system (HPTS) is missing an API.
Oct 20 2025, 6:03 PM

Oct 19 2025

rrs requested review of D53197: Move bbr and rack to use inline per C99.
Oct 19 2025, 11:52 AM
rrs committed rGbcdef9d68a21: inline most of the considered lost condensation. (authored by rrs).
inline most of the considered lost condensation.
Oct 19 2025, 11:47 AM

Oct 10 2025

rrs updated the diff for D53021: inline most of the considered lost condensation..

Adopt Gleb's suggestion on __inline -> inline (other places need that change too) :)

Oct 10 2025, 4:47 PM
rrs added inline comments to D53021: inline most of the considered lost condensation..
Oct 10 2025, 4:44 PM
rrs requested review of D53021: inline most of the considered lost condensation..
Oct 10 2025, 12:08 PM
rrs abandoned D53018: Consider lost refactor.
Oct 10 2025, 11:56 AM
rrs requested review of D53018: Consider lost refactor.
Oct 10 2025, 11:52 AM

Oct 9 2025

rrs accepted D52984: sockstat: improve output formatting.
Oct 9 2025, 3:02 PM
rrs accepted D52986: sockstat: show path state column only when useful.
Oct 9 2025, 3:01 PM

Oct 8 2025

rrs accepted D52979: tcp: Initial ktest for HPTS.

Testing is a good thing so I think this is well worth having. I will say on the rumor of name changes inside tcp_hpts due to the idea of possibly supporting
more than just TCP. I am unsupportive of this UNTIL we have tcp_hpts being able to handle multiple protocols. When I originally wrote hpts (called pacing not hpts.. Robert
renamed it hpts) I did envision expanding it to include not just TCP but SCTP and maybe even UDP. But the fundamental problem I hit was the fact that choosing where
to dice the thing such that you would have a common call point into the protocol was not a cut and dried thing. For TCP it was easy since there was a clear demark between
the initial input of the packet and the actual segment processing, which I used when I broke out the multiple stacks idea. However for SCTP and UDP no such clear
basis exists that is common with TCP..... or even between SCTP and UDP... so I back down and decided to implement it has a TCP thing. Now if someone comes up
with a clean and elegant way to call into to TCP/SCTP and UDP then name changes would be appropriate within the code.. without that elegant set of proposed
changes name changes I am STRONGLY against and will object to since they are just irrelevant until HTPS can support multiple protocols... so in summary

Oct 8 2025, 12:29 PM

Oct 7 2025

rrs accepted D52944: sockstat: support reporting of BBLog state.
Oct 7 2025, 12:28 PM

Oct 4 2025

rrs accepted D52872: tcp: bump max snd buffer size for autoscaling.
Oct 4 2025, 12:29 PM

Oct 2 2025

rrs accepted D52868: tcp: close two minor races with debug messages.
Oct 2 2025, 7:23 PM

Sep 30 2025

rrs accepted D52754: tcp: apply rate limits to challenge ACKs.
Sep 30 2025, 5:57 PM

Aug 13 2025

rrs accepted D51884: systat: improve reporting of UDP statistics.
Aug 13 2025, 1:14 PM

Aug 12 2025

rrs accepted D51870: netstat: fix reporting of delivered UDP packets.
Aug 12 2025, 2:36 PM
rrs accepted D51872: tcp: retire rstreason.
Aug 12 2025, 2:01 PM
rrs accepted D51847: tcp: minor cleanup.
Aug 12 2025, 11:22 AM
rrs accepted D51869: udp: use appropriate error counters.
Aug 12 2025, 11:21 AM

Aug 8 2025

rrs accepted D51815: tcp: rate limit the sending of all RST segments.
Aug 8 2025, 1:47 PM
rrs accepted D51814: tcp : remove assignment without effect.
Aug 8 2025, 1:46 PM
rrs accepted D51721: tcp: ensure that tcp_dropwithreset() has expected rstreason.
Aug 8 2025, 1:25 PM

Jul 21 2025

rrs accepted D51441: tcp rack: use correct variable for clearing app limited periods.
Jul 21 2025, 1:41 PM

Jul 19 2025

rrs accepted D51423: tcp: cleanup for RACK and BBR.
Jul 19 2025, 4:35 PM

Jun 18 2025

rrs committed rG359f590b2901: Fix a warning in the rack stack. (authored by rrs).
Fix a warning in the rack stack.
Jun 18 2025, 12:16 PM

Jun 15 2025

rrs committed rGf3bba8cd62f2: TCP without LRO doing static pacing does not always pace as expected. (authored by rrs).
TCP without LRO doing static pacing does not always pace as expected.
Jun 15 2025, 9:05 AM

Jun 14 2025

rrs requested review of D50858: TCP without LRO doing static pacing does not always pace as expected..
Jun 14 2025, 7:13 PM

May 29 2025

rrs accepted D50581: sendfile: don't hack sb_lowat for sockets that manage the watermark.
May 29 2025, 12:23 PM

May 1 2025

rrs accepted D50099: netinet6: make RFC4291 anycast conformance a sysctl.
May 1 2025, 12:09 PM

Apr 27 2025

rrs added a comment to D50019: tcp: allow connections to IPv6 anycast address.
In D50019#1141170, @ivy wrote:

here's the thing though, you can already accept TCP connections to an anycast address by simply not marking the address as IFF_ANYCAST, and this is what everyone does today. if you force users to set a sysctl to do this, they will just not bother marking addresses as IFF_ANYCAST and will be more likely to run into problems from e.g. accidentally originating outgoing connections from an anycast address.

or in other words, the choice here isn't "should we let users accept TCP connections to anycast addresses?" because it's impossible to prevent that, it's "should we allow users to correctly mark their existing anycast addresses as anycast addresses?". i don't see any advantage to forcing users to set a sysctl in order to configure networking more correctly.

more sysctls is more confusing and creates more pain for users, removing special cases and unnecessary code is more beautiful. :-)

however, i would be willing to add some text to ifconfig.8 to mention the potential issues with TCP anycast and refer them to some appropriate documentation.

Apr 27 2025, 11:43 AM

Apr 26 2025

rrs requested changes to D50019: tcp: allow connections to IPv6 anycast address.

How about a compromise here... I do think Michael has a valid point...

Apr 26 2025, 2:07 PM

Apr 25 2025

rrs accepted D50019: tcp: allow connections to IPv6 anycast address.
Apr 25 2025, 1:46 PM

Apr 21 2025

rrs accepted D49941: netstat: fix table header alignment for -x.
Apr 21 2025, 11:33 AM

Apr 15 2025

rrs accepted D49840: ipv6: leave room for link headers in UDP.
Apr 15 2025, 8:08 PM
rrs accepted D49840: ipv6: leave room for link headers in UDP.

Only question I have is why the change from hlen -> sizeof(struct ip6_hdr)

Apr 15 2025, 6:20 PM

Apr 8 2025

rrs added a comment to D49707: tcp: use declarative style to fill struct tcp_log_buffer.

To me this is marginally less readable in the changed form. Both are much better than the original but considering your comments about what the compiler actually does I suggest we leave it the way it is!

Apr 8 2025, 11:43 AM

Apr 7 2025

rrs accepted D49670: tcp: cleanup.
Apr 7 2025, 3:44 PM

Apr 3 2025

rrs added a comment to D49652: tcp: improve initializing the fields in tcp_log_buffer.

Note I do agree with Gleb here, these macros are just nasty and not very clear. However I think that making such a change should be a separate commit from this one!

Apr 3 2025, 10:54 AM
rrs accepted D49652: tcp: improve initializing the fields in tcp_log_buffer.
Apr 3 2025, 10:51 AM

Mar 31 2025

rrs accepted D49589: tcp: remove support for TCPPCAP.
Mar 31 2025, 3:06 PM

Mar 30 2025

rrs accepted D49578: tcp rack: cleanup storing values for beta and beta_ecn.
Mar 30 2025, 12:45 PM

Mar 27 2025

rrs accepted D48705: Add a kgdb python script to extract bbl from kernel dumps.
Mar 27 2025, 2:01 PM

Mar 14 2025

rrs accepted D49348: netinet: Fix getcred sysctl handlers to do nothing if no input is given.
Mar 14 2025, 12:01 PM

Feb 25 2025

rrs accepted D49111: vm_lowmem: fix signature mismatch for lowmem event dispatcher.
Feb 25 2025, 1:28 PM

Feb 21 2025

rrs accepted D49088: netinet: use in_broadcast() inline.
Feb 21 2025, 1:58 PM

Feb 19 2025

rrs accepted D49047: tcp: make inflight data (pipe) calculation consistent.
Feb 19 2025, 1:24 PM

Feb 4 2025

rrs accepted D48804: icmp: use per rate limit randomized jitter.
Feb 4 2025, 1:41 PM

Feb 3 2025

rrs accepted D48804: icmp: use per rate limit randomized jitter.
Feb 3 2025, 12:56 PM

Jan 8 2025

rrs accepted D48346: TCP RACK: don't log an uninitialized value.
Jan 8 2025, 6:10 PM
rrs accepted D48341: TCP BBR: remove dead code.

I agree with Peter :)

Jan 8 2025, 6:09 PM

Jan 6 2025

rrs accepted D48340: TCP RACK: fix TCP_RACK_PACING_BETA socket option.
Jan 6 2025, 8:35 PM
rrs accepted D48338: TCP BBR: remove dead code.
Jan 6 2025, 8:21 PM
rrs accepted D48323: TCP BBR: remove dead code.
Jan 6 2025, 2:11 PM