#
4c89d59e |
| 08-Jan-2025 |
Michael Tuexen <tuexen@FreeBSD.org> |
TCP RACK: don't log an uninitialized value
reduce is uninitialized, if the code path for logging is reached via goto old_method;.
Reviewed by: rrs, Peter Lei CID: 1557359 MFC after: 1 week Spon
TCP RACK: don't log an uninitialized value
reduce is uninitialized, if the code path for logging is reached via goto old_method;.
Reviewed by: rrs, Peter Lei CID: 1557359 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D48346
show more ...
|
#
e8ec2804 |
| 06-Jan-2025 |
Michael Tuexen <tuexen@FreeBSD.org> |
TCP RACK: fix TCP_RACK_PACING_BETA socket option
Bring back the code, which was accidentally removed. While there, indent a comment correctly.
Reviewed by: rrs CID: 1540026 Fixes: e18b97bd63a8
TCP RACK: fix TCP_RACK_PACING_BETA socket option
Bring back the code, which was accidentally removed. While there, indent a comment correctly.
Reviewed by: rrs CID: 1540026 Fixes: e18b97bd63a8 ("Update to bring the rack stack with all its fixes in.") MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D48340
show more ...
|
#
bb9525f3 |
| 06-Jan-2025 |
Michael Tuexen <tuexen@FreeBSD.org> |
TCP RACK: fix TCP fast open
Do not jump to a place in the code, which requires several variables to be set (segsize, minseg, idle, len, sb_offset), which is not true. To avoid using these variables,
TCP RACK: fix TCP fast open
Do not jump to a place in the code, which requires several variables to be set (segsize, minseg, idle, len, sb_offset), which is not true. To avoid using these variables, start the HPTS timer explicitly. This fix only applies to the client side using TCP fast open.
Approved by: rrs CID: 1523766 CID: 1523770 CID: 1523786 CID: 1523801 CID: 1523809 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D48322
show more ...
|
#
84e894ce |
| 04-Jan-2025 |
Michael Tuexen <tuexen@FreeBSD.org> |
TCP RACK: remove variable with is only initialized and not changed
minslot is initialized to 0 and never changed. It is not clear to me under which condition minslot should be set to which value. Th
TCP RACK: remove variable with is only initialized and not changed
minslot is initialized to 0 and never changed. It is not clear to me under which condition minslot should be set to which value. Therefore, remove it and the code checking that it is not zero. No functional change intended.
Reviewed by: rrs CID: 1523812 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D48321
show more ...
|
#
41af5eee |
| 04-Jan-2025 |
Michael Tuexen <tuexen@FreeBSD.org> |
TCP RACK: remove code that cannot be reached
No functional change intended.
Reviewed by: rrs CID: 1523797 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.f
TCP RACK: remove code that cannot be reached
No functional change intended.
Reviewed by: rrs CID: 1523797 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D48301
show more ...
|
#
deb4252e |
| 03-Jan-2025 |
Michael Tuexen <tuexen@FreeBSD.org> |
TCP RACK: remove un-needed assignment
No functional change intended.
Reviewed by: rrs CID: 1523768 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.
TCP RACK: remove un-needed assignment
No functional change intended.
Reviewed by: rrs CID: 1523768 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D48292
show more ...
|
#
8471791e |
| 02-Jan-2025 |
Michael Tuexen <tuexen@FreeBSD.org> |
TCP RACK: simplify condition
It is already known that rsm != NULL, so no need to check for it.
Reviewed by: rrs CID: 1523815 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision
TCP RACK: simplify condition
It is already known that rsm != NULL, so no need to check for it.
Reviewed by: rrs CID: 1523815 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D48282
show more ...
|
#
3b9da3dc |
| 01-Jan-2025 |
Michael Tuexen <tuexen@FreeBSD.org> |
TCP RACK: avoid using uninitialized tot_idle variable
Reviewed by: rrs CID: 1540027 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D48277
|
#
0ce13b1d |
| 31-Dec-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
TCP RACK: add comment
Indicate that the missing of the break is intentionally.
Reviewed by: rrs CID: 1523782 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://review
TCP RACK: add comment
Indicate that the missing of the break is intentionally.
Reviewed by: rrs CID: 1523782 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D48273
show more ...
|
#
4f3a0c71 |
| 31-Dec-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
TCP RACK: don't use an uninitialized variable
When storing the old beta values in rack_swap_beta_values(), ensure that the newreno_flags field is initialized appropriately instead of using an uninit
TCP RACK: don't use an uninitialized variable
When storing the old beta values in rack_swap_beta_values(), ensure that the newreno_flags field is initialized appropriately instead of using an uninitialized value. Since the stored newreno_flags aren't actually used, this fix should not have any functional change.
Reviewed by: rrs CID: 1523796 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D48260
show more ...
|
#
16e8e99f |
| 30-Dec-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
TCP RACK: remove redundant check
No functional change intended.
Reviewed by: rrs CID: 1523811 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D
TCP RACK: remove redundant check
No functional change intended.
Reviewed by: rrs CID: 1523811 MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D48216
show more ...
|
Revision tags: release/14.2.0 |
|
#
12fc7961 |
| 15-Nov-2024 |
Randall Stewart <rrs@FreeBSD.org> |
Change the SOCKBUF_LOCK calls to use the more refined SOCK_XXXBUF_LOCK/UNLOCK.
The socket buffer locking used to be standard on SOCKBUF_LOCK/UNLOCK. But we are now moving to a more elegant SOCK_SEND
Change the SOCKBUF_LOCK calls to use the more refined SOCK_XXXBUF_LOCK/UNLOCK.
The socket buffer locking used to be standard on SOCKBUF_LOCK/UNLOCK. But we are now moving to a more elegant SOCK_SENDBUF_LOCK/UNLOCK and SOCK_RECVBUF_LOCK/UNLOCK. Lets get BBR and Rack to use these updated macros.
Reviewed by:glebius, tuexen, rscheff Differential Revision:https://reviews.freebsd.org/D47542
show more ...
|
#
c9047eb7 |
| 14-Nov-2024 |
Richard Scheffenegger <rscheff@FreeBSD.org> |
tcp: allow TSO even while RX path is unordered
Over IP networks, forward and return path largely act independently from each other. Do not disable LRO on the TX side, when reordering/loss is happeni
tcp: allow TSO even while RX path is unordered
Over IP networks, forward and return path largely act independently from each other. Do not disable LRO on the TX side, when reordering/loss is happening on the RX half-connection.
Reviewed By: rrs, #transport, peter.lei_ieee.org Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D47056
show more ...
|
Revision tags: release/13.4.0 |
|
#
b2044c45 |
| 30-Aug-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp rack, bbr: improve handling of soft errors
Do not report an error, if it is stored as a soft error. This avoids, for example, the dropping of TCP connections using an interface, while enabling o
tcp rack, bbr: improve handling of soft errors
Do not report an error, if it is stored as a soft error. This avoids, for example, the dropping of TCP connections using an interface, while enabling or disabling LRO on that interface.
Reviewed by: cc MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D46427
show more ...
|
#
872164f5 |
| 09-Aug-2024 |
Randall Stewart <rrs@FreeBSD.org> |
Non-tested experimental code removal.
There is a new feature that came in with the last sync to the rack stack that should not have been released. It is untested and may not well work. It currently
Non-tested experimental code removal.
There is a new feature that came in with the last sync to the rack stack that should not have been released. It is untested and may not well work. It currently is off by default, which is good but it is best to remove it until such time that it can be vetted and tuned to actually work :)
This change removes just the experimental feature for now. It can make a appearance in the future when it is proofed out.
Reviewed by: tuexen Differential Revision:https://reviews.freebsd.org/D45410
show more ...
|
#
c349e881 |
| 07-Aug-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
rack, bbr: cleanup ack throttling
Use the variable in the TCPCB, not the one in the stack specific data structure. This simplifies the code and brings the functionality to BBR without any change.
R
rack, bbr: cleanup ack throttling
Use the variable in the TCPCB, not the one in the stack specific data structure. This simplifies the code and brings the functionality to BBR without any change.
Reviewed by: Peter Lei, cc MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D46068
show more ...
|
#
4036380e |
| 28-Jul-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp: vnetify sysctl variables ack_war_timewindow and ack_war_cnt
As suggested by glebius@. While there, improve the documentation.
Reviewed by: Peter Lei, cc MFC after: 1 week Sponsored by: Netf
tcp: vnetify sysctl variables ack_war_timewindow and ack_war_cnt
As suggested by glebius@. While there, improve the documentation.
Reviewed by: Peter Lei, cc MFC after: 1 week Sponsored by: Netflix, Inc Differential Revision: https://reviews.freebsd.org/D46140
show more ...
|
#
e0b080f8 |
| 21-Jul-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp: mark TCP stacks which can serve as a default stack
Allow a TCP function block (tfb) to become the default stack only if tfb->tfb_flags has the TCP_FUNC_DEFAULT_OK flags set. This allows a TCP f
tcp: mark TCP stacks which can serve as a default stack
Allow a TCP function block (tfb) to become the default stack only if tfb->tfb_flags has the TCP_FUNC_DEFAULT_OK flags set. This allows a TCP function block, that is not suitable as a default function block to ensure that it is not set as the default via sysctl. In this case sysctl would return EINVAL.
Reviewed by: gallatin, Peter Lei Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D45419
show more ...
|
#
646c28ea |
| 21-Jul-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp: improve SEG.ACK validation
Implement the improved SEG.ACK validation described in RFC 5961. In addition to that, also detect ghost ACKs, which are ACKs for data that has never been sent. The ad
tcp: improve SEG.ACK validation
Implement the improved SEG.ACK validation described in RFC 5961. In addition to that, also detect ghost ACKs, which are ACKs for data that has never been sent. The additional checks are enabled by default, but can be disabled by setting the sysctl-variable net.inet.tcp.insecure_ack to a non-zero value.
PR: 250357 Reviewed by: Peter Lei, rscheff (older version) MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D45894
show more ...
|
#
0d8da0df |
| 28-Jun-2024 |
Ryan Libby <rlibby@FreeBSD.org> |
tcp_rack: avoid gcc -Werror=pointer-to-int-cast on 32-bit arch
Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D45752
|
Revision tags: release/14.1.0 |
|
#
ea916b64 |
| 18-May-2024 |
Randall Stewart <rrs@FreeBSD.org> |
Remove TCP_SAD optional code now that the sack filter performs this function.
With the commit of D44903 we no longer need the SAD option. Instead all stacks that use the sack filter inherit its prot
Remove TCP_SAD optional code now that the sack filter performs this function.
With the commit of D44903 we no longer need the SAD option. Instead all stacks that use the sack filter inherit its protection against sack-attack.
Reviewed by: tuexen@ Differential Revision:https://reviews.freebsd.org/D45216
show more ...
|
#
2f923a0c |
| 11-May-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp rack: improve handling of front states
When the RACK stack wants to send a FIN, but still has outstanding or unsent data, it sends a challenge ack. Don't do this when the TCP endpoint is still i
tcp rack: improve handling of front states
When the RACK stack wants to send a FIN, but still has outstanding or unsent data, it sends a challenge ack. Don't do this when the TCP endpoint is still in the front states, since it does not make sense. Reviewed by: rrs MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D45122
show more ...
|
#
fce03f85 |
| 05-May-2024 |
Randall Stewart <rrs@FreeBSD.org> |
TCP can be subject to Sack Attacks lets fix this issue.
There is a type of attack that a TCP peer can launch on a connection. This is for sure in Rack or BBR and probably even the default stack if i
TCP can be subject to Sack Attacks lets fix this issue.
There is a type of attack that a TCP peer can launch on a connection. This is for sure in Rack or BBR and probably even the default stack if it uses lists in sack processing. The idea of the attack is that the attacker is driving you to look at 100's of sack blocks that only update 1 byte. So for example if you have 1 - 10,000 bytes outstanding the attacker sends in something like:
ACK 0 SACK(1-512) SACK(1024 - 1536), SACK(2048-2536), SACK(4096 - 4608), SACK(8192-8704) This first sack looks fine but then the attacker sends
ACK 0 SACK(1-512) SACK(1025 - 1537), SACK(2049-2537), SACK(4097 - 4609), SACK(8193-8705) ACK 0 SACK(1-512) SACK(1027 - 1539), SACK(2051-2539), SACK(4099 - 4611), SACK(8195-8707) ... These blocks are making you hunt across your linked list and split things up so that you have an entry for every other byte. Has your list grows you spend more and more CPU running through the lists. The idea here is the attacker chooses entries as far apart as possible that make you run through the list. This example is small but in theory if the window is open to say 1Meg you could end up with 100's of thousands link list entries.
To combat this we introduce three things.
when the peer requests a very small MSS we stop processing SACK's from them. This prevents a malicious peer from just using a small MSS to do the same thing. Any time we get a sack block, we use the sack-filter to remove sacks that are smaller than the smallest v4 mss (minus 40 for max TCP options) unless it ties up to snd_max (since that is legal). All other sacks in theory should be at least an MSS. If we get such an attacker that means we basically start skipping all but MSS sized Sacked blocks. The sack filter used to throw away data when its bounds were exceeded, instead now we increase its size to 15 and then throw away sack's if the filter gets over-run to prevent the malicious attacker from over-running the sack filter and thus we start to process things anyway. The default stack will need to start using the sack-filter which we have talked about in past conference calls to take full advantage of the protections offered by it (and reduce cpu consumption when processing sacks).
After this set of changes is in rack can drop its SAD detection completely
Reviewed by:tuexen@, rscheff@ Differential Revision: <https://reviews.freebsd.org/D44903>
show more ...
|
#
1941914d |
| 18-Apr-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp rack: improve BBR_LOG_CWND event
Fix a typo, which resulted in missing r_ctl.gate_to_fs in the BBLog event.
Reported by: Coverity Scan CID: 1540024 Reviewed by: rrs, rscheff Sponsored by:
tcp rack: improve BBR_LOG_CWND event
Fix a typo, which resulted in missing r_ctl.gate_to_fs in the BBLog event.
Reported by: Coverity Scan CID: 1540024 Reviewed by: rrs, rscheff Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D44648
show more ...
|
#
c9cd686b |
| 18-Apr-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
tcp: drop data received after a FIN has been processed
RFC 9293 describes the handling of data in the CLOSE-WAIT, CLOSING, LAST-ACK, and TIME-WAIT states: This should not occur since a FIN has been
tcp: drop data received after a FIN has been processed
RFC 9293 describes the handling of data in the CLOSE-WAIT, CLOSING, LAST-ACK, and TIME-WAIT states: This should not occur since a FIN has been received from the remote side. Ignore the segment text. Therefore, implement this handling.
Reviewed by: rrs, rscheff MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D44746
show more ...
|