#
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 ...
|
#
2e978260 |
| 17-Apr-2021 |
Richard Scheffenegger <rscheff@FreeBSD.org> |
rack: Fix ECN on finalizing session.
Maintain code similarity between RACK and base stack for ECN. This may not strictly be necessary, depending when a state transition to FIN_WAIT_1 is done in RACK
rack: Fix ECN on finalizing session.
Maintain code similarity between RACK and base stack for ECN. This may not strictly be necessary, depending when a state transition to FIN_WAIT_1 is done in RACK after a shutdown() or close() syscall.
MFC after: 3 days Reviewed By: tuexen, #transport Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D29658
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
|
#
705d06b2 |
| 05-Mar-2021 |
Michael Tuexen <tuexen@FreeBSD.org> |
rack: unbreak TCP fast open for the client side
Allow sending user data on the SYN segment.
Reviewed by: rrs MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D29082 Sponsored
rack: unbreak TCP fast open for the client side
Allow sending user data on the SYN segment.
Reviewed by: rrs MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D29082 Sponsored by: Netflix, Inc.
show more ...
|
#
99adf230 |
| 02-Mar-2021 |
Michael Tuexen <tuexen@FreeBSD.org> |
RACK: fix an issue triggered by using the CDG CC module
Obtained from: rrs@ MFC after: 3 days PR: 238741 Sponsored by: Netlix, Inc.
|
#
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 ...
|
#
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)
|
#
1951fa79 |
| 25-Aug-2020 |
Michael Tuexen <tuexen@FreeBSD.org> |
RFC 3465 defines a limit L used in TCP slow start for limiting the number of acked bytes as described in Section 2.2 of that document. This patch ensures that this limit is not also applied in conges
RFC 3465 defines a limit L used in TCP slow start for limiting the number of acked bytes as described in Section 2.2 of that document. This patch ensures that this limit is not also applied in congestion avoidance. Applying this limit also in congestion avoidance can result in using less bandwidth than allowed.
Reported by: l.tian.email@gmail.com Reviewed by: rrs, rscheff MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D26120
show more ...
|
#
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 ...
|
#
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 ...
|
#
4d418f8d |
| 16-Jun-2020 |
Randall Stewart <rrs@FreeBSD.org> |
So it turns out rack has a shortcoming in dup-ack counting. It counts the dupacks but then does not properly respond to them. This is because a few missing bits are not present. BBR actually does pro
So it turns out rack has a shortcoming in dup-ack counting. It counts the dupacks but then does not properly respond to them. This is because a few missing bits are not present. BBR actually does properly respond (though it also sends a TLP which is interesting and maybe something to fix)..
Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D25294
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 ...
|
#
af2fb894 |
| 21-May-2020 |
Richard Scheffenegger <rscheff@FreeBSD.org> |
With RFC3168 ECN, CWR SHOULD only be sent with new data
Overly conservative data receivers may ignore the CWR flag on other packets, and keep ECE latched. This can result in continous reduction of t
With RFC3168 ECN, CWR SHOULD only be sent with new data
Overly conservative data receivers may ignore the CWR flag on other packets, and keep ECE latched. This can result in continous reduction of the congestion window, and very poor performance when ECN is enabled.
Reviewed by: rgrimes (mentor), rrs Approved by: rgrimes (mentor), tuexen (mentor) MFC after: 3 days Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D23364
show more ...
|
#
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 ...
|
#
6e16d877 |
| 21-May-2020 |
Richard Scheffenegger <rscheff@FreeBSD.org> |
Handle ECN handshake in simultaneous open
While testing simultaneous open TCP with ECN, found that negotiation fails to arrive at the expected final state.
Reviewed by: tuexen (mentor) Approved by:
Handle ECN handshake in simultaneous open
While testing simultaneous open TCP with ECN, found that negotiation fails to arrive at the expected final state.
Reviewed by: tuexen (mentor) Approved by: tuexen (mentor), rgrimes (mentor) MFC after: 2 weeks Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D23373
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 ...
|