#
a8a8a8a8 |
| 12-Sep-2018 |
Michael Tuexen <tuexen@FreeBSD.org> |
Fix TCP Fast Open for the TCP RACK stack.
* Fix a bug where the SYN handling during established state was applied to a front state. * Move a check for retransmission after the timer handling. Th
Fix TCP Fast Open for the TCP RACK stack.
* Fix a bug where the SYN handling during established state was applied to a front state. * Move a check for retransmission after the timer handling. This was suppressing timer based retransmissions. * Fix an off-by one byte in the sequence number of retransmissions. * Apply fixes corresponding to https://svnweb.freebsd.org/changeset/base/336934
Reviewed by: rrs@ Approved by: re (kib@) MFC after: 1 month Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D16912
show more ...
|
#
7847e041 |
| 24-Aug-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r338026 through r338297, and resolve conflicts.
|
#
c28440db |
| 20-Aug-2018 |
Randall Stewart <rrs@FreeBSD.org> |
This change represents a substantial restructure of the way we reassembly inbound tcp segments. The old algorithm just blindly dropped in segments without coalescing. This meant that every segment co
This change represents a substantial restructure of the way we reassembly inbound tcp segments. The old algorithm just blindly dropped in segments without coalescing. This meant that every segment could take up greater and greater room on the linked list of segments. This of course is now subject to a tighter limit (100) of segments which in a high BDP situation will cause us to be a lot more in-efficent as we drop segments beyond 100 entries that we receive. What this restructure does is cause the reassembly buffer to coalesce segments putting an emphasis on the two common cases (which avoid walking the list of segments) i.e. where we add to the back of the queue of segments and where we add to the front. We also have the reassembly buffer supporting a couple of debug options (black box logging as well as counters for code coverage). These are compiled out by default but can be added by uncommenting the defines.
Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D16626
show more ...
|
#
14b841d4 |
| 11-Aug-2018 |
Kyle Evans <kevans@FreeBSD.org> |
MFH @ r337607, in preparation for boarding
|
#
f9c0a512 |
| 10-Aug-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r337286 through r337585.
|
#
d18ea344 |
| 08-Aug-2018 |
Randall Stewart <rrs@FreeBSD.org> |
Fix a small bug in rack where it will end up sending the FIN twice. Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D16604
|
#
936b2b64 |
| 06-Aug-2018 |
Randall Stewart <rrs@FreeBSD.org> |
This fixes a bug in Rack where we were not properly using the correct value for Delayed Ack.
Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D16579
|
#
bbd7a929 |
| 04-Aug-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r336870 through r337285, and resolve conflicts.
|
#
4ad5b7a0 |
| 30-Jul-2018 |
Randall Stewart <rrs@FreeBSD.org> |
This fixes a hole where rack could end up sending an invalid segment into the reassembly queue. This would happen if you enabled the data after close option.
Sponsored by: Netflix Differential Revis
This fixes a hole where rack could end up sending an invalid segment into the reassembly queue. This would happen if you enabled the data after close option.
Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D16453
show more ...
|
#
8de9ac5e |
| 19-Jul-2018 |
Randall Stewart <rrs@FreeBSD.org> |
Bump the ICMP echo limits to match the RFC
Reviewed by: tuexen Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D16333
|
#
a026a53a |
| 10-Jul-2018 |
Michael Tuexen <tuexen@FreeBSD.org> |
Use appropriate MSS value when populating the TCP FO client cookie cache
When a client receives a SYN-ACK segment with a TFP fast open cookie, but without an MSS option, an MSS value from uninitiali
Use appropriate MSS value when populating the TCP FO client cookie cache
When a client receives a SYN-ACK segment with a TFP fast open cookie, but without an MSS option, an MSS value from uninitialised stack memory is used. This patch ensures that in case no MSS option is included in the SYN-ACK, the appropriate value as given in RFC 7413 is used.
Reviewed by: kbowling@ Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D16175
show more ...
|
#
5f1347d7 |
| 07-Jul-2018 |
Michael Tuexen <tuexen@FreeBSD.org> |
Allow alternate TCP stack to populate the TCP FO client cookie cache.
Without this patch, TCP FO could be used when using alternate TCP stack, but only existing entires in the TCP client cookie cach
Allow alternate TCP stack to populate the TCP FO client cookie cache.
Without this patch, TCP FO could be used when using alternate TCP stack, but only existing entires in the TCP client cookie cache could be used. This cache was not populated by connections using alternate TCP stacks.
Sponsored by: Netflix, Inc.
show more ...
|
#
6573d758 |
| 04-Jul-2018 |
Matt Macy <mmacy@FreeBSD.org> |
epoch(9): allow preemptible epochs to compose
- Add tracker argument to preemptible epochs - Inline epoch read path in kernel and tied modules - Change in_epoch to take an epoch as argument - Simpli
epoch(9): allow preemptible epochs to compose
- Add tracker argument to preemptible epochs - Inline epoch read path in kernel and tied modules - Change in_epoch to take an epoch as argument - Simplify tfb_tcp_do_segment to not take a ti_locked argument, there's no longer any benefit to dropping the pcbinfo lock and trying to do so just adds an error prone branchfest to these functions - Remove cases of same function recursion on the epoch as recursing is no longer free. - Remove the the TAILQ_ENTRY and epoch_section from struct thread as the tracker field is now stack or heap allocated as appropriate.
Tested by: pho and Limelight Networks Reviewed by: kbowling at llnw dot com Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D16066
show more ...
|
#
a00f4ac2 |
| 23-Jun-2018 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Revert r334843, and partially revert r335180.
tcp_outflags[] were defined since 4BSD and are defined nowadays in all its descendants. Removing them breaks third party application.
|
Revision tags: release/11.2.0 |
|
#
c6f76759 |
| 19-Jun-2018 |
Randall Stewart <rrs@FreeBSD.org> |
Make sure that the t_peakrate_thr is not compiled in by default until NF can upstream it.
Reviewed by: and suggested lstewart Sponsored by: Netflix Inc.
|
#
9e58ff6f |
| 19-Jun-2018 |
Matt Macy <mmacy@FreeBSD.org> |
convert inpcbinfo hash and info rwlocks to epoch + mutex
- Convert inpcbinfo info & hash locks to epoch for read and mutex for write - Garbage collect code that handled INP_INFO_TRY_RLOCK failures a
convert inpcbinfo hash and info rwlocks to epoch + mutex
- Convert inpcbinfo info & hash locks to epoch for read and mutex for write - Garbage collect code that handled INP_INFO_TRY_RLOCK failures as INP_INFO_RLOCK which can no longer fail
When running 64 netperfs sending minimal sized packets on a 2x8x2 reduces unhalted core cycles samples in rwlock rlock/runlock in udp_send from 51% to 3%.
Overall packet throughput rate limited by CPU affinity and NIC driver design choices.
On the receiver unhalted core cycles samples in in_pcblookup_hash went from 13% to to 1.6%
Tested by LLNW and pho@
Reviewed by: jtl Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D15686
show more ...
|
#
9293873e |
| 15-Jun-2018 |
Gleb Smirnoff <glebius@FreeBSD.org> |
TCPOUTFLAGS no longer exists since r334843.
|
#
4aec110f |
| 14-Jun-2018 |
Randall Stewart <rrs@FreeBSD.org> |
This fixes several bugs that Larry Rosenman helped me find in Rack with respect to its handling of TCP Fast Open. Several fixes all related to TFO are included in this commit: 1) Handling of non-TFO
This fixes several bugs that Larry Rosenman helped me find in Rack with respect to its handling of TCP Fast Open. Several fixes all related to TFO are included in this commit: 1) Handling of non-TFO retransmissions 2) Building the proper send-map when we are doing TFO 3) Dealing with the ack that comes back that includes the SYN and data.
It appears that with this commit TFO now works :-)
Thanks Larry for all your help!!
Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D15758
show more ...
|
#
cff21e48 |
| 11-Jun-2018 |
Jonathan T. Looney <jtl@FreeBSD.org> |
Change RACK dependency on TCPHPTS from a build-time dependency to a load- time dependency.
At present, RACK requires the TCPHPTS option to run. However, because modules can be moved from machine to
Change RACK dependency on TCPHPTS from a build-time dependency to a load- time dependency.
At present, RACK requires the TCPHPTS option to run. However, because modules can be moved from machine to machine, this dependency is really best assessed at load time rather than at build time.
Reviewed by: rrs Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D15756
show more ...
|
#
89e560f4 |
| 07-Jun-2018 |
Randall Stewart <rrs@FreeBSD.org> |
This commit brings in a new refactored TCP stack called Rack. Rack includes the following features: - A different SACK processing scheme (the old sack structures are not used). - RACK (Recent ackno
This commit brings in a new refactored TCP stack called Rack. Rack includes the following features: - A different SACK processing scheme (the old sack structures are not used). - RACK (Recent acknowledgment) where counting dup-acks is no longer done instead time is used to knwo when to retransmit. (see the I-D) - TLP (Tail Loss Probe) where we will probe for tail-losses to attempt to try not to take a retransmit time-out. (see the I-D) - Burst mitigation using TCPHTPS - PRR (partial rate reduction) see the RFC.
Once built into your kernel, you can select this stack by either socket option with the name of the stack is "rack" or by setting the global sysctl so the default is rack.
Note that any connection that does not support SACK will be kicked back to the "default" base FreeBSD stack (currently known as "default").
To build this into your kernel you will need to enable in your kernel: makeoptions WITH_EXTRA_TCP_STACKS=1 options TCPHPTS
Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D15525
show more ...
|