#
500eb6dd |
| 21-May-2021 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp: Fix sending of TCP segments with IP level options
When bringing in TCP over UDP support in https://cgit.FreeBSD.org/src/commit/?id=9e644c23000c2f5028b235f6263d17ffb24d3605, the length of IP lev
tcp: Fix sending of TCP segments with IP level options
When bringing in TCP over UDP support in https://cgit.FreeBSD.org/src/commit/?id=9e644c23000c2f5028b235f6263d17ffb24d3605, the length of IP level options was considered when locating the transport header. This was incorrect and is fixed by this patch.
X-MFC with: https://cgit.FreeBSD.org/src/commit/?id=9e644c23000c2f5028b235f6263d17ffb24d3605 MFC after: 3 days Reviewed by: markj, rscheff Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D30358
show more ...
|
#
5d8fd932 |
| 06-May-2021 |
Randall Stewart <rrs@FreeBSD.org> |
This brings into sync FreeBSD with the netflix versions of rack and bbr. This fixes several breakages (panics) since the tcp_lro code was committed that have been reported. Quite a few new features a
This brings into sync FreeBSD with the netflix versions of rack and bbr. This fixes several breakages (panics) since the tcp_lro code was committed that have been reported. Quite a few new features are now in rack (prefecting of DGP -- Dynamic Goodput Pacing among the largest). There is also support for ack-war prevention. Documents comming soon on rack..
Sponsored by: Netflix Reviewed by: rscheff, mtuexen Differential Revision: https://reviews.freebsd.org/D30036
show more ...
|
#
9e644c23 |
| 18-Apr-2021 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp: add support for TCP over UDP
Adding support for TCP over UDP allows communication with TCP stacks which can be implemented in userspace without requiring special priviledges or specific support
tcp: add support for TCP over UDP
Adding support for TCP over UDP allows communication with TCP stacks which can be implemented in userspace without requiring special priviledges or specific support by the OS. This is joint work with rrs.
Reviewed by: rrs Sponsored by: Netflix, Inc. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D29469
show more ...
|
Revision tags: release/13.0.0 |
|
#
40f41ece |
| 22-Mar-2021 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp: improve handling of SYN segments in SYN-SENT state
Ensure that the stack does not generate a DSACK block for user data received on a SYN segment in SYN-SENT state.
Reviewed by: rscheff MFC af
tcp: improve handling of SYN segments in SYN-SENT state
Ensure that the stack does not generate a DSACK block for user data received on a SYN segment in SYN-SENT state.
Reviewed by: rscheff MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D29376 Sponsored by: Netflix, Inc.
show more ...
|
#
5666643a |
| 13-Mar-2021 |
Gordon Bergling <gbe@FreeBSD.org> |
Fix some common typos in comments
- occured -> occurred - normaly -> normally - controling -> controlling - fileds -> fields - insterted -> inserted - outputing -> outputting
MFC after: 1 week
|
#
1a714ff2 |
| 26-Jan-2021 |
Randall Stewart <rrs@FreeBSD.org> |
This pulls over all the changes that are in the netflix tree that fix the ratelimit code. There were several bugs in tcp_ratelimit itself and we needed further work to support the multiple tag format
This pulls over all the changes that are in the netflix tree that fix the ratelimit code. There were several bugs in tcp_ratelimit itself and we needed further work to support the multiple tag format coming for the joint TLS and Ratelimit dances.
Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D28357
show more ...
|
#
d2b3cedd |
| 13-Jan-2021 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp: add sysctl to tolerate TCP segments missing timestamps
When timestamp support has been negotiated, TCP segements received without a timestamp should be discarded. However, there are broken TCP
tcp: add sysctl to tolerate TCP segments missing timestamps
When timestamp support has been negotiated, TCP segements received without a timestamp should be discarded. However, there are broken TCP implementations (for example, stacks used by Omniswitch 63xx and 64xx models), which send TCP segments without timestamps although they negotiated timestamp support. This patch adds a sysctl variable which tolerates such TCP segments and allows to interoperate with broken stacks.
Reviewed by: jtl@, rscheff@ Differential Revision: https://reviews.freebsd.org/D28142 Sponsored by: Netflix, Inc. PR: 252449 MFC after: 1 week
show more ...
|
#
cc3c3485 |
| 13-Jan-2021 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp: fix handling of TCP RST segments missing timestamps
A TCP RST segment should be processed even it is missing TCP timestamps.
Reported by: dmgk@, kevans@ Reviewed by: rscheff@, dmgk@ Sponsore
tcp: fix handling of TCP RST segments missing timestamps
A TCP RST segment should be processed even it is missing TCP timestamps.
Reported by: dmgk@, kevans@ Reviewed by: rscheff@, dmgk@ Sponsored by: Netflix, Inc. MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D28143
show more ...
|
#
283c76c7 |
| 09-Nov-2020 |
Michael Tuexen <tuexen@FreeBSD.org> |
RFC 7323 specifies that: * TCP segments without timestamps should be dropped when support for the timestamp option has been negotiated. * TCP segments with timestamps should be processed normally i
RFC 7323 specifies that: * TCP segments without timestamps should be dropped when support for the timestamp option has been negotiated. * TCP segments with timestamps should be processed normally if support for the timestamp option has not been negotiated. This patch enforces the above.
PR: 250499 Reviewed by: gnn, rrs MFC after: 1 week Sponsored by: Netflix, Inc Differential Revision: https://reviews.freebsd.org/D27148
show more ...
|
#
4d0770f1 |
| 08-Nov-2020 |
Richard Scheffenegger <rscheff@FreeBSD.org> |
Prevent premature SACK block transmission during loss recovery
Under specific conditions, a window update can be sent with outdated SACK information. Some clients react to this by subsequently delay
Prevent premature SACK block transmission during loss recovery
Under specific conditions, a window update can be sent with outdated SACK information. Some clients react to this by subsequently delaying loss recovery, making TCP perform very poorly.
Reported by: chengc_netapp.com Reviewed by: rrs, jtl MFC after: 2 weeks Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D24237
show more ...
|
Revision tags: release/12.2.0 |
|
#
285385ba |
| 09-Sep-2020 |
Randall Stewart <rrs@FreeBSD.org> |
So it turns out that syzkaller hit another crash. It has to do with switching stacks with a SENT_FIN outstanding. Both rack and bbr will only send a FIN if all data is ack'd so this must be enforced.
So it turns out that syzkaller hit another crash. It has to do with switching stacks with a SENT_FIN outstanding. Both rack and bbr will only send a FIN if all data is ack'd so this must be enforced. Also if the previous stack sent the FIN we need to make sure in rack that when we manufacture the "unknown" sends that we include the proper HAS_FIN bits.
Note for BBR we take a simpler approach and just refuse to switch.
Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D26269
show more ...
|
#
67d224ef |
| 05-Sep-2020 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
bbr: remove unused static function
bbr_log_type_hrdwtso() is a file local static unused function. Remove it to avoid warnings on kernel compiles.
Reviewed by: gallatin Differential Revision: https:
bbr: remove unused static function
bbr_log_type_hrdwtso() is a file local static unused function. Remove it to avoid warnings on kernel compiles.
Reviewed by: gallatin Differential Revision: https://reviews.freebsd.org/D26331
show more ...
|
#
662c1305 |
| 01-Sep-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
net: clean up empty lines in .c and .h files
|
#
e2515283 |
| 27-Aug-2020 |
Glen Barber <gjb@FreeBSD.org> |
MFH
Sponsored by: Rubicon Communications, LLC (netgate.com)
|
#
b9978183 |
| 19-Aug-2020 |
Andrew Gallatin <gallatin@FreeBSD.org> |
TCP: remove special treatment for hardware (ifnet) TLS
Remove most special treatment for ifnet TLS in the TCP stack, except for code to avoid mixing handshakes and bulk data.
This code made heroic
TCP: remove special treatment for hardware (ifnet) TLS
Remove most special treatment for ifnet TLS in the TCP stack, except for code to avoid mixing handshakes and bulk data.
This code made heroic efforts to send down entire TLS records to NICs. It was added to improve the PCIe bus efficiency of older TLS offload NICs which did not keep state per-session, and so would need to re-DMA the first part(s) of a TLS record if a TLS record was sent in multiple TCP packets or TSOs. Newer TLS offload NICs do not need this feature.
At Netflix, we've run extensive QoE tests which show that this feature reduces client quality metrics, presumably because the effort to send TLS records atomically causes the server to both wait too long to send data (leading to buffers running dry), and to send too much data at once (leading to packet loss).
Reviewed by: hselasky, jhb, rrs Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D26103
show more ...
|
#
e54b7cd0 |
| 01-Jul-2020 |
Michael Tuexen <tuexen@FreeBSD.org> |
Fix the cleanup handling in a error path for TCP BBR.
Reported by: syzbot+df7899c55c4cc52f5447@syzkaller.appspotmail.com Reviewed by: rscheff Sponsored by: Netflix, Inc. Differential Revision: ht
Fix the cleanup handling in a error path for TCP BBR.
Reported by: syzbot+df7899c55c4cc52f5447@syzkaller.appspotmail.com Reviewed by: rscheff Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D25486
show more ...
|
#
95ef69c6 |
| 16-Jun-2020 |
Randall Stewart <rrs@FreeBSD.org> |
iSo in doing final checks on OCA firmware with all the latest tweaks the dup-ack checking packet drill script was failing with a number of unexpected acks. So it turns out if you have the default rec
iSo in doing final checks on OCA firmware with all the latest tweaks the dup-ack checking packet drill script was failing with a number of unexpected acks. So it turns out if you have the default recvwin set up to 1Meg (like OCA's do) and you have no window scaling (like the dupack checking code) then we have another case where we are always trying to update the rwnd and sending an ack when we should not.
Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D25298
show more ...
|
#
f092a3c7 |
| 12-Jun-2020 |
Randall Stewart <rrs@FreeBSD.org> |
So it turns out with the right window scaling you can get the code in all stacks to always want to do a window update, even when no data can be sent. Now in cases where you are not pacing thats proba
So it turns out with the right window scaling you can get the code in all stacks to always want to do a window update, even when no data can be sent. Now in cases where you are not pacing thats probably ok, you just send an extra window update or two. However with bbr (and rack if its paced) every time the pacer goes off its going to send a "window update".
Also in testing bbr I have found that if we are not responding to data right away we end up staying in startup but incorrectly holding a pacing gain of 192 (a loss). This is because the idle window code does not restict itself to only work with PROBE_BW. In all other states you dont want it doing a PROBE_BW state change.
Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D25247
show more ...
|
Revision tags: release/11.4.0 |
|
#
e854dd38 |
| 08-Jun-2020 |
Randall Stewart <rrs@FreeBSD.org> |
An important statistic in determining if a server process (or client) is being delayed is to know the time to first byte in and time to first byte out. Currently we have no way to know these all we h
An important statistic in determining if a server process (or client) is being delayed is to know the time to first byte in and time to first byte out. Currently we have no way to know these all we have is t_starttime. That (t_starttime) tells us what time the 3 way handshake completed. We don't know when the first request came in or how quickly we responded. Nor from a client perspective do we know how long from when we sent out the first byte before the server responded.
This small change adds the ability to track the TTFB's. This will show up in BB logging which then can be pulled for later analysis. Note that currently the tracking is via the ticks variable of all three variables. This provides a very rough estimate (hz=1000 its 1ms). A follow-on set of work will be to change all three of these values into something with a much finer resolution (either microseconds or nanoseconds), though we may want to make the resolution configurable so that on lower powered machines we could still use the much cheaper ticks variable.
Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D24902
show more ...
|
#
f1ea4e41 |
| 03-Jun-2020 |
Randall Stewart <rrs@FreeBSD.org> |
This fixes a couple of skyzaller crashes. Most of them have to do with TFO. Even the default stack had one of the issues:
1) We need to make sure for rack that we don't advance snd_nxt beyond iss
This fixes a couple of skyzaller crashes. Most of them have to do with TFO. Even the default stack had one of the issues:
1) We need to make sure for rack that we don't advance snd_nxt beyond iss when we are not doing fast open. We otherwise can get a bunch of SYN's sent out incorrectly with the seq number advancing. 2) When we complete the 3-way handshake we should not ever append to reassembly if the tlen is 0, if TFO is enabled prior to this fix we could still call the reasemmbly. Note this effects all three stacks. 3) Rack like its cousin BBR should track if a SYN is on a send map entry. 4) Both bbr and rack need to only consider len incremented on a SYN if the starting seq is iss, otherwise we don't increment len which may mean we return without adding a sendmap entry.
This work was done in collaberation with Michael Tuexen, thanks for all the testing! Sponsored by: Netflix Inc Differential Revision: https://reviews.freebsd.org/D25000
show more ...
|
#
77c68315 |
| 23-May-2020 |
Emmanuel Vadot <manu@FreeBSD.org> |
bbr: Use arc4random_uniform from libkern.
This unbreak LINT build
Reported by: jenkins, melifaro
|
#
8e051165 |
| 21-May-2020 |
Richard Scheffenegger <rscheff@FreeBSD.org> |
Retain only mutually supported TCP options after simultaneous SYN
When receiving a parallel SYN in SYN-SENT state, remove all the options only we supported locally before sending the SYN,ACK.
This
Retain only mutually supported TCP options after simultaneous SYN
When receiving a parallel SYN in SYN-SENT state, remove all the options only we supported locally before sending the SYN,ACK.
This addresses a consistency issue on parallel opens.
Also, on such a parallel open, the stack could be coaxed into running with timestamps enabled, even if administratively disabled.
Reviewed by: tuexen (mentor) Approved by: tuexen (mentor) MFC after: 2 weeks Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D23371
show more ...
|
#
777b88d6 |
| 15-May-2020 |
Randall Stewart <rrs@FreeBSD.org> |
This fixes several skyzaller issues found with the help of Michael Tuexen. There was some accounting errors with TCPFO for bbr and also for both rack and bbr there was a FO case where we should be ju
This fixes several skyzaller issues found with the help of Michael Tuexen. There was some accounting errors with TCPFO for bbr and also for both rack and bbr there was a FO case where we should be jumping to the just_return_nolock label to exit instead of returning 0. This of course caused no timer to be running and thus the stuck sessions.
Reported by: Michael Tuexen and Skyzaller Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D24852
show more ...
|
#
b1ddcbc6 |
| 07-May-2020 |
Randall Stewart <rrs@FreeBSD.org> |
When in the SYN-SENT state bbr and rack will not properly send an ACK but instead start the D-ACK timer. This causes so_reuseport_lb_test to fail since it slows down how quickly the program runs unti
When in the SYN-SENT state bbr and rack will not properly send an ACK but instead start the D-ACK timer. This causes so_reuseport_lb_test to fail since it slows down how quickly the program runs until the timeout occurs and fails the test
Sponsored by: Netflix inc. Differential Revision: https://reviews.freebsd.org/D24747
show more ...
|
#
8717b8f1 |
| 07-May-2020 |
Randall Stewart <rrs@FreeBSD.org> |
NF has an internal option that changes the tcp_mcopy_m routine slightly (has a few extra arguments). Recently that changed to only have one arg extra so that two ifdefs around the call are no longer
NF has an internal option that changes the tcp_mcopy_m routine slightly (has a few extra arguments). Recently that changed to only have one arg extra so that two ifdefs around the call are no longer needed. Lets take out the extra ifdef and arg.
Sponsored by: Netflix Inc Differential Revision: https://reviews.freebsd.org/D24736
show more ...
|