rrs (Randall Stewart)
User

Projects

User Details

User Since
Jan 22 2015, 5:22 AM (178 w, 18 h)

Recent Activity

Today

rrs committed rS335502: This adds in an optimization so that we only walk one.
This adds in an optimization so that we only walk one
Thu, Jun 21, 9:04 PM
rrs closed D15937: Optimize the TSO and copy paths to use the new tcp_m_copy routine.
Thu, Jun 21, 9:04 PM

Yesterday

rrs created D15937: Optimize the TSO and copy paths to use the new tcp_m_copy routine.
Wed, Jun 20, 8:29 PM

Tue, Jun 19

rrs committed rS335364: Make sure that the t_peakrate_thr is not compiled in.
Make sure that the t_peakrate_thr is not compiled in
Tue, Jun 19, 11:20 AM
rrs committed rS335361: Move the tp set back to where it was before.
Move the tp set back to where it was before
Tue, Jun 19, 5:28 AM

Mon, Jun 18

rrs committed rS335317: Move to using the inp->vnet pointer has suggested by lstewart..
Move to using the inp->vnet pointer has suggested by lstewart.
Mon, Jun 18, 2:10 PM

Thu, Jun 14

rrs committed rS335106: This fixes several bugs that Larry Rosenman helped me find in.
This fixes several bugs that Larry Rosenman helped me find in
Thu, Jun 14, 3:27 AM
rrs closed D15758: Rack crash that Larry Rosenman found...
Thu, Jun 14, 3:27 AM

Tue, Jun 12

rrs closed D15757: HPTS Is missing some support for Vnets.
Tue, Jun 12, 11:54 PM
rrs committed rS335022: This fixes missing VNET sets in the hpts system. Basically.
This fixes missing VNET sets in the hpts system. Basically
Tue, Jun 12, 11:54 PM
rrs updated the diff for D15758: Rack crash that Larry Rosenman found...

Turns out after looking at Larry's last core and contemplating it a bit if it
would have succeeded (which it did not) we would have crashed anyway.
This is because the SYN got included in the send_map and we would have
tried to trim 14 instead of the 13 that bytes in the socketbuffer. Fixing that
means the send_map cannot start at snd_una for the TFO case. This means
a bit more special code needs also to be added to the SYN_SENT case then
so you end up incrementing snd_una when you move to established and that
way when you call the ack processing code all will be well :)

Tue, Jun 12, 11:59 AM
rrs updated the diff for D15758: Rack crash that Larry Rosenman found...

So this is weird we look like we sent a TFO and then hit a retransmit.. but somehow
the TFO flags was removed so we did not set len == 0 on having a SYN retransmitted.

Tue, Jun 12, 5:58 AM

Mon, Jun 11

rrs updated the diff for D15758: Rack crash that Larry Rosenman found...
Mon, Jun 11, 11:24 PM
rrs updated the diff for D15757: HPTS Is missing some support for Vnets.

Get the vnet set much earlier and all the right bits around earlier too.

Mon, Jun 11, 3:18 PM
rrs created D15758: Rack crash that Larry Rosenman found...
Mon, Jun 11, 12:39 PM
rrs created D15757: HPTS Is missing some support for Vnets.
Mon, Jun 11, 12:35 PM
rrs accepted D15756: Change RACK dependency on TCPHPTS from build-time to load-time.
Mon, Jun 11, 10:43 AM

Thu, Jun 7

rrs committed rS334815: Take out the stack alias inadvertantly added by my commit..
Take out the stack alias inadvertantly added by my commit.
Thu, Jun 7, 8:57 PM
rrs committed rS334813: Fix build issue with const and volatile and the.
Fix build issue with const and volatile and the
Thu, Jun 7, 7:58 PM
rrs committed rS334804: This commit brings in a new refactored TCP stack called Rack..
This commit brings in a new refactored TCP stack called Rack.
Thu, Jun 7, 6:18 PM
rrs closed D15525: Rack from Netflix.
Thu, Jun 7, 6:18 PM
rrs added a comment to D15373: Patch to dummynet to allow simulation of compressed ack's.

A couple of configs I use:

Thu, Jun 7, 2:41 PM

Wed, May 23

rrs created D15525: Rack from Netflix.
Wed, May 23, 12:12 AM

May 22 2018

rrs added a comment to D15510: Defer inpcb deletion until after a grace period has elapsed.

Looking closely at this and thinking about tcp_hpts.c, if I grok this correctly
this should all integrate ok. Assuming that someone calls inp_pcbfree() on
something that is in hpts, even if the epoch_call happens, the inpcb won't
be freed until the hpts's main loop see the INP_FREED flag and does
its in_pcbrele_wlocked() call at which time the INP will finally get destroyed.

May 22 2018, 11:41 AM

May 9 2018

rrs created D15373: Patch to dummynet to allow simulation of compressed ack's.
May 9 2018, 9:14 PM

Apr 26 2018

rrs committed rS333041: This change re-arranges the fields within the tcp-pcb so that.
This change re-arranges the fields within the tcp-pcb so that
Apr 26 2018, 9:41 PM
rrs closed D15136: Shuffle of tcpcb to optimize cache line efficiencies in main tcp_input/output paths..
Apr 26 2018, 9:41 PM

Apr 25 2018

rrs accepted D15164: Tigthen up kern_prefetch.h includes.

Yeah I had those in there in our version so I could
validate the range in amd64 with the DMAP_VM but for
some reason those don't work in head anymore.. Forgot
to purge the headers :)

Apr 25 2018, 4:52 PM

Apr 20 2018

rrs added a comment to D11105: Compile the default TCP stack as a module.

One of the nice things that having a module which is the default stack does is that
changes of any type can be made in the module. Then you can test those changes
before applying the changes to the main stack. That makes it rather nice that
one can try before we buy changes to the included stack. We have used that
fairly effectively at NF on deploying new versions of things (not the default stack but rack)

Apr 20 2018, 11:03 AM
rrs added a comment to D15136: Shuffle of tcpcb to optimize cache line efficiencies in main tcp_input/output paths..

Yes I gained about 1/2Gbps of added performance in my tests.
As to VIMAGE who really uses that? No one I know of. Considering
the use of it (or lack there of) I saw of no real reason to have it
in the first-cache-line. Of course the other question is how
often does one use the back-pointer to the parent vnet.

Apr 20 2018, 6:38 AM

Apr 19 2018

rrs created D15136: Shuffle of tcpcb to optimize cache line efficiencies in main tcp_input/output paths..
Apr 19 2018, 3:22 PM
rrs committed rS332774: These two modules need the tcp_hpts.h file for.
These two modules need the tcp_hpts.h file for
Apr 19 2018, 3:04 PM
rrs committed rS332770: This commit brings in the TCP high precision timer system (tcp_hpts)..
This commit brings in the TCP high precision timer system (tcp_hpts).
Apr 19 2018, 1:38 PM
rrs closed D15020: Add of high-precision-timer-system used by rack and bbr for pacing. Also sync up the function block differences needed by bbr/rack..
Apr 19 2018, 1:38 PM

Apr 18 2018

rrs accepted D15125: Update account and given names in committers-src.dot and calendar.freebsd.
Apr 18 2018, 11:33 AM

Apr 12 2018

rrs updated the diff for D15020: Add of high-precision-timer-system used by rack and bbr for pacing. Also sync up the function block differences needed by bbr/rack..

This adds the comments that Hiren had asked for and I even
add a comment block at the top of tcp_hpts.c to talk about usage
(not a design document but some hints on use). Note also Hiren
that the hpts system can be used by the default freebsd stack. Our
internal NF default stack actually has some of these hooks in it as
well so we can enable "pacing" with various options.

Apr 12 2018, 12:25 PM
rrs added a comment to D15020: Add of high-precision-timer-system used by rack and bbr for pacing. Also sync up the function block differences needed by bbr/rack..

Thanks for looking at this. Note that rack is not in yet because it lacks this commit. This is the
first commit in the steps to get rack that we use at NF for 99% of traffic into the FreeBSD core code.
These have to go in first :)

Apr 12 2018, 11:50 AM

Apr 11 2018

rrs updated the diff for D15020: Add of high-precision-timer-system used by rack and bbr for pacing. Also sync up the function block differences needed by bbr/rack..

After jtl and I chatted I finally understand his request (just a bit thick I guess) so
now I wrap up his final comment.

Apr 11 2018, 7:03 PM
rrs updated the diff for D15020: Add of high-precision-timer-system used by rack and bbr for pacing. Also sync up the function block differences needed by bbr/rack..

This address Gleb and Jonathans comments and also now passes a build universe

Apr 11 2018, 6:47 AM
rrs added inline comments to D15020: Add of high-precision-timer-system used by rack and bbr for pacing. Also sync up the function block differences needed by bbr/rack..
Apr 11 2018, 6:15 AM

Apr 10 2018

rrs added inline comments to D15020: Add of high-precision-timer-system used by rack and bbr for pacing. Also sync up the function block differences needed by bbr/rack..
Apr 10 2018, 8:28 PM
rrs added inline comments to D15020: Add of high-precision-timer-system used by rack and bbr for pacing. Also sync up the function block differences needed by bbr/rack..
Apr 10 2018, 8:26 PM

Apr 9 2018

rrs created D15020: Add of high-precision-timer-system used by rack and bbr for pacing. Also sync up the function block differences needed by bbr/rack..
Apr 9 2018, 5:11 PM

Apr 6 2018

rrs accepted D14990: Check that in_pcbfree() is only called once for each PCB..
Apr 6 2018, 4:36 PM

Aug 9 2017

rrs accepted D11929: Limit the rate at which we will send ACKs in response to out-of-window ACKs.
Aug 9 2017, 6:36 AM

Mar 17 2017

rrs accepted D10018: Summary:.

In general I love this change with my few nits. Note I have a major restructure coming
to inpcb and tcpcb that this helps pave the way for. Basically I have used vtune to
cache-line optimize tcp-output to get its cache line usage down.

Mar 17 2017, 10:20 AM

Oct 20 2016

rrs accepted D7904: Make ICMPv6 hard error handling for TCP consistent with the ICMPv4 handling.
Oct 20 2016, 1:22 PM

Oct 14 2016

rrs accepted D8243: Reduce the number of calls to reset the keepalive timer.

I think that a grand idea :)

Oct 14 2016, 2:08 PM

Oct 10 2016

rrs accepted D8185: Add compile-time option to activate hhook(9) framework for TCP.
Oct 10 2016, 8:59 PM

Oct 7 2016

rrs accepted D8185: Add compile-time option to activate hhook(9) framework for TCP.

Looks like a great idea :-)

Oct 7 2016, 7:04 PM

Sep 8 2016

rrs accepted D7833: Several small TCP related fixes for getsockopt().
Sep 8 2016, 5:31 PM

Aug 26 2016

rrs accepted D7664: Adjust TCP module fastpath after r304803's cc_ack_received() changes..
Aug 26 2016, 6:40 PM

Aug 18 2016

rrs accepted D7564: LRO nsegs.

Yeah!!!

Aug 18 2016, 3:54 PM

Aug 16 2016

rrs accepted D7073: FFL: Change type of tcp_output() recwin, sendwin, and adv variables..
Aug 16 2016, 9:26 PM
rrs committed rS304224: A few more wording tweaks as suggested (with some modifications.
A few more wording tweaks as suggested (with some modifications
Aug 16 2016, 3:17 PM
rrs committed rS304223: Here we update the modular tcp to be able to switch to an.
Here we update the modular tcp to be able to switch to an
Aug 16 2016, 3:12 PM
rrs closed D6790: Add functionality so you can optionally change a progressed socket to a new tcp stack by committing rS304223: Here we update the modular tcp to be able to switch to an.
Aug 16 2016, 3:12 PM
rrs committed rS304219: Comments describing how to properly use the new lock_add functions.
Comments describing how to properly use the new lock_add functions
Aug 16 2016, 1:08 PM
rrs updated the diff for D6790: Add functionality so you can optionally change a progressed socket to a new tcp stack.

This gets Jtl's changes in.. I also move the init function down to the
end of the tcb init.. otherwise its possible a init() function may find
that some state init'd later is not what it expects (though it still
has to allow for this in the inp.. lets try to make it easier on the init's built)

Aug 16 2016, 12:55 PM
rrs committed rS304218: This cleans up the timer code in TCP and also makes it so we do not.
This cleans up the timer code in TCP and also makes it so we do not
Aug 16 2016, 12:41 PM
rrs closed D7136: TCP Timer cleanup by committing rS304218: This cleans up the timer code in TCP and also makes it so we do not.
Aug 16 2016, 12:41 PM

Jul 27 2016

rrs committed rS303412: Remove myself from kern_timeout.c yeah!.
Remove myself from kern_timeout.c yeah!
Jul 27 2016, 8:37 PM

Jul 26 2016

rrs accepted D7272: Rework IPv6 TCP path MTU discovery to match IPv4.
Jul 26 2016, 3:18 PM
rrs accepted D7251: Avoid calling in_pcbnotifyall() to flush cached routes.

Looks good Drew :)

Jul 26 2016, 3:17 PM

Jul 21 2016

rrs updated the diff for D7136: TCP Timer cleanup.

minor style 9 nit

Jul 21 2016, 10:21 AM

Jul 19 2016

rrs committed rS303037: This reverts out Gleb's changes and adds three small.
This reverts out Gleb's changes and adds three small
Jul 19 2016, 6:31 PM
rrs updated the diff for D7136: TCP Timer cleanup.

I really need to learn how to type :-)

Jul 19 2016, 11:10 AM
rrs updated the diff for D7136: TCP Timer cleanup.

Turns out when tp is returned NULL by the drop/close that means
it also nicely released the INP_WLOCK. We need to re-acqurire the lock
in that case so we can drop our inp reference.

Jul 19 2016, 11:06 AM
rrs updated the diff for D7135: A problem with ASYNC drain.

Originally I had started working on this before Gleb decided to take over and clean it up. I
had fixed the three issues I saw:

  1. Principle - the start of a new timer was not rejected (like it is for sync drain) for async-drain.
  2. A three way leak in the callout start
  3. An incorrect return on some cases with async_drain and tcp.
Jul 19 2016, 9:20 AM
rrs updated the diff for D7136: TCP Timer cleanup.

Fix it so we don't leak inp's.. the tcp_close() can return NULL in tp, this
would mean we would not do the reference count release. Instead use
the inp.

Jul 19 2016, 9:16 AM

Jul 18 2016

rrs updated the diff for D7135: A problem with ASYNC drain.

missed an unlock

Jul 18 2016, 6:46 PM

Jul 6 2016

rrs retitled D7136: TCP Timer cleanup from to TCP Timer cleanup.
Jul 6 2016, 11:12 AM
rrs retitled D7135: A problem with ASYNC drain from to A problem with ASYNC drain.
Jul 6 2016, 11:08 AM
rrs updated the diff for D6790: Add functionality so you can optionally change a progressed socket to a new tcp stack.

This addresses Jonathan's Nits.. However after reading the man page I can't see how one would
discuss the finer points of changing stacks (there is no mention of it that I can see in the current
man page). Jonathan perhaps you can, as we say in the IETF, send text :-)

Jul 6 2016, 10:59 AM

Jul 5 2016

rrs added a comment to D6790: Add functionality so you can optionally change a progressed socket to a new tcp stack.

I had not noticed your man page updates.. I will spin around and add the new handoff function to the man page on the next pass (with my comments).

Jul 5 2016, 1:38 PM
rrs accepted D6198: Add sysctl to disable the TCP hostcache.
Jul 5 2016, 1:33 PM
rrs requested changes to D5173: Rework initial congestion window calculation..

Should there not be a check to the experimental setting to allow a IW of 10?

Jul 5 2016, 1:30 PM
rrs accepted D6689: tcp/lro: Implement hash table for LRO entries..

These look fine and familiar ;-)

Jul 5 2016, 1:27 PM
rrs accepted D6452: Allow an MTU of up to 65535 bytes on tun interfaces.
Jul 5 2016, 1:24 PM
rrs accepted D7042: When a callout is being run and scheduled at the same time, callout_stop() would only unschedule the scheduled one, but will not drain the running one..

I am fine with these changes, however it does *not* mean the fix I sent you does
not also need to be applied. I.e. if an async_drain is running (just like when a drain is running)
we need to return failure and not start the timeout again.

Jul 5 2016, 1:23 PM

Jun 11 2016

rrs updated the diff for D6790: Add functionality so you can optionally change a progressed socket to a new tcp stack.

Updated with change we discussed and also two bugs.. when you
do the lookup, a refcnt is incremented so if you were to stay
on the same one you need to release the refcnt (it gets to 2 in that case). And
also in one error path we need to do that (before the lookup was later).

Jun 11 2016, 9:50 AM

Jun 9 2016

rrs retitled D6790: Add functionality so you can optionally change a progressed socket to a new tcp stack from to Add functionality so you can optionally change a progressed socket to a new tcp stack.
Jun 9 2016, 8:32 PM

May 25 2016

rrs accepted D6472: Use optimised complexity safe sort routine instead of the kernel's qsort.

If Drew says it works I am happy with it as well :-)

May 25 2016, 8:11 PM

May 17 2016

rrs committed rS300042: This small change adopts the excellent suggestion for using named.
This small change adopts the excellent suggestion for using named
May 17 2016, 9:53 AM
rrs closed D6303: Added functionality for new tcp stacks. by committing rS300042: This small change adopts the excellent suggestion for using named.
May 17 2016, 9:53 AM

May 11 2016

rrs added a comment to D4294: modernize TCP constants.

Is TCPTV_DELACK (hz/25) 40 ms, or is it 40 ms only when HZ is 1000?

May 11 2016, 9:03 AM · transport

May 10 2016

rrs retitled D6303: Added functionality for new tcp stacks. from to Added functionality for new tcp stacks..
May 10 2016, 11:51 AM

Apr 28 2016

rrs added a comment to D6137: tcp/lro: Refactor the free/active list operation..

It would be worth checking the assembly output.. if it truly inlines it then
it should probably only do one compare.. but worth checking...

Apr 28 2016, 5:23 PM
rrs committed rS298747: Complete the UDP tunneling of ICMP msgs to those protocols.
Complete the UDP tunneling of ICMP msgs to those protocols
Apr 28 2016, 3:53 PM
rrs closed D5875: UDP Kernel Tunneling ICMP by committing rS298747: Complete the UDP tunneling of ICMP msgs to those protocols.
Apr 28 2016, 3:53 PM
rrs committed rS298743: This cleans up the timers code in TCP to start using the new.
This cleans up the timers code in TCP to start using the new
Apr 28 2016, 1:27 PM
rrs closed D5924: TCP Timer cleanup. by committing rS298743: This cleans up the timers code in TCP to start using the new.
Apr 28 2016, 1:27 PM

Apr 18 2016

rrs updated the diff for D5875: UDP Kernel Tunneling ICMP.

This fixes Michael's nits

Apr 18 2016, 5:36 PM
rrs added inline comments to D5875: UDP Kernel Tunneling ICMP.
Apr 18 2016, 5:35 PM

Apr 13 2016

rrs added a comment to D5924: TCP Timer cleanup..

jch: Thanks for running your torture tests.. I did not take out the flags you added though I
am not sure we need them anymore.. what do you think?

Apr 13 2016, 7:32 AM
rrs added a comment to D5924: TCP Timer cleanup..

As a testing update to this, I have this running in a netflix storage cache last
night. I did add a netstats counter in addition to this whenever we incremented
the async-drain counter (tt_draincnt)

Apr 13 2016, 7:31 AM

Apr 12 2016

rrs added inline comments to D5875: UDP Kernel Tunneling ICMP.
Apr 12 2016, 7:34 PM
rrs retitled D5924: TCP Timer cleanup. from to TCP Timer cleanup..
Apr 12 2016, 12:02 PM
rrs updated the diff for D5875: UDP Kernel Tunneling ICMP.

Please test this now for V6 I think I have it right.. and I have also cleaned up a few
space changes so I think its in good shape.

Apr 12 2016, 11:05 AM

Apr 7 2016

rrs added a comment to D5875: UDP Kernel Tunneling ICMP.

Note I need to put back in that ASSERT I took out.. opps

Apr 7 2016, 5:29 PM