Changeset View
Changeset View
Standalone View
Standalone View
share/man/man4/tcp.4
Show All 28 Lines | ||||||||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |||||||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |||||||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||||||
.\" SUCH DAMAGE. | .\" SUCH DAMAGE. | |||||||||
.\" | .\" | |||||||||
.\" From: @(#)tcp.4 8.1 (Berkeley) 6/5/93 | .\" From: @(#)tcp.4 8.1 (Berkeley) 6/5/93 | |||||||||
.\" $FreeBSD$ | .\" $FreeBSD$ | |||||||||
.\" | .\" | |||||||||
.Dd July 20, 2022 | .Dd August 1, 2022 | |||||||||
.Dt TCP 4 | .Dt TCP 4 | |||||||||
.Os | .Os | |||||||||
.Sh NAME | .Sh NAME | |||||||||
.Nm tcp | .Nm tcp | |||||||||
.Nd Internet Transmission Control Protocol | .Nd Internet Transmission Control Protocol | |||||||||
.Sh SYNOPSIS | .Sh SYNOPSIS | |||||||||
.In sys/types.h | .In sys/types.h | |||||||||
.In sys/socket.h | .In sys/socket.h | |||||||||
▲ Show 20 Lines • Show All 152 Lines • ▼ Show 20 Lines | ||||||||||
kernel option. | kernel option. | |||||||||
.It Dv TCP_FUNCTION_BLK | .It Dv TCP_FUNCTION_BLK | |||||||||
Select or query the set of functions that TCP will use for this connection. | Select or query the set of functions that TCP will use for this connection. | |||||||||
This allows a user to select an alternate TCP stack. | This allows a user to select an alternate TCP stack. | |||||||||
The alternate TCP stack must already be loaded in the kernel. | The alternate TCP stack must already be loaded in the kernel. | |||||||||
To list the available TCP stacks, see | To list the available TCP stacks, see | |||||||||
.Va functions_available | .Va functions_available | |||||||||
in the | in the | |||||||||
.Sx MIB Variables | .Sx MIB (sysctl) Variables | |||||||||
section further down. | section further down. | |||||||||
To list the default TCP stack, see | To list the default TCP stack, see | |||||||||
.Va functions_default | .Va functions_default | |||||||||
in the | in the | |||||||||
.Sx MIB Variables | .Sx MIB (sysctl) Variables | |||||||||
section. | section. | |||||||||
.It Dv TCP_KEEPINIT | .It Dv TCP_KEEPINIT | |||||||||
This | This | |||||||||
.Xr setsockopt 2 | .Xr setsockopt 2 | |||||||||
option accepts a per-socket timeout argument of | option accepts a per-socket timeout argument of | |||||||||
.Vt "u_int" | .Vt "u_int" | |||||||||
in seconds, for new, non-established | in seconds, for new, non-established | |||||||||
.Tn TCP | .Tn TCP | |||||||||
connections. | connections. | |||||||||
For the global default in milliseconds see | For the global default in milliseconds see | |||||||||
.Va keepinit | .Va keepinit | |||||||||
in the | in the | |||||||||
.Sx MIB Variables | .Sx MIB (sysctl) Variables | |||||||||
section further down. | section further down. | |||||||||
.It Dv TCP_KEEPIDLE | .It Dv TCP_KEEPIDLE | |||||||||
This | This | |||||||||
.Xr setsockopt 2 | .Xr setsockopt 2 | |||||||||
option accepts an argument of | option accepts an argument of | |||||||||
.Vt "u_int" | .Vt "u_int" | |||||||||
for the amount of time, in seconds, that the connection must be idle | for the amount of time, in seconds, that the connection must be idle | |||||||||
before keepalive probes (if enabled) are sent for the connection of this | before keepalive probes (if enabled) are sent for the connection of this | |||||||||
socket. | socket. | |||||||||
If set on a listening socket, the value is inherited by the newly created | If set on a listening socket, the value is inherited by the newly created | |||||||||
socket upon | socket upon | |||||||||
.Xr accept 2 . | .Xr accept 2 . | |||||||||
For the global default in milliseconds see | For the global default in milliseconds see | |||||||||
.Va keepidle | .Va keepidle | |||||||||
in the | in the | |||||||||
.Sx MIB Variables | .Sx MIB (sysctl) Variables | |||||||||
section further down. | section further down. | |||||||||
.It Dv TCP_KEEPINTVL | .It Dv TCP_KEEPINTVL | |||||||||
This | This | |||||||||
.Xr setsockopt 2 | .Xr setsockopt 2 | |||||||||
option accepts an argument of | option accepts an argument of | |||||||||
.Vt "u_int" | .Vt "u_int" | |||||||||
to set the per-socket interval, in seconds, between keepalive probes sent | to set the per-socket interval, in seconds, between keepalive probes sent | |||||||||
to a peer. | to a peer. | |||||||||
If set on a listening socket, the value is inherited by the newly created | If set on a listening socket, the value is inherited by the newly created | |||||||||
socket upon | socket upon | |||||||||
.Xr accept 2 . | .Xr accept 2 . | |||||||||
For the global default in milliseconds see | For the global default in milliseconds see | |||||||||
.Va keepintvl | .Va keepintvl | |||||||||
in the | in the | |||||||||
.Sx MIB Variables | .Sx MIB (sysctl) Variables | |||||||||
section further down. | section further down. | |||||||||
.It Dv TCP_KEEPCNT | .It Dv TCP_KEEPCNT | |||||||||
This | This | |||||||||
.Xr setsockopt 2 | .Xr setsockopt 2 | |||||||||
option accepts an argument of | option accepts an argument of | |||||||||
.Vt "u_int" | .Vt "u_int" | |||||||||
and allows a per-socket tuning of the number of probes sent, with no response, | and allows a per-socket tuning of the number of probes sent, with no response, | |||||||||
before the connection will be dropped. | before the connection will be dropped. | |||||||||
If set on a listening socket, the value is inherited by the newly created | If set on a listening socket, the value is inherited by the newly created | |||||||||
socket upon | socket upon | |||||||||
.Xr accept 2 . | .Xr accept 2 . | |||||||||
For the global default see the | For the global default see the | |||||||||
.Va keepcnt | .Va keepcnt | |||||||||
in the | in the | |||||||||
.Sx MIB Variables | .Sx MIB (sysctl) Variables | |||||||||
section further down. | section further down. | |||||||||
.It Dv TCP_NODELAY | .It Dv TCP_NODELAY | |||||||||
Under most circumstances, | Under most circumstances, | |||||||||
.Tn TCP | .Tn TCP | |||||||||
sends data when it is presented; | sends data when it is presented; | |||||||||
when outstanding data has not yet been acknowledged, it gathers | when outstanding data has not yet been acknowledged, it gathers | |||||||||
small amounts of output to be sent in a single packet once | small amounts of output to be sent in a single packet once | |||||||||
an acknowledgement is received. | an acknowledgement is received. | |||||||||
▲ Show 20 Lines • Show All 129 Lines • ▼ Show 20 Lines | ||||||||||
.Pp | .Pp | |||||||||
The default congestion control algorithm for | The default congestion control algorithm for | |||||||||
.Tn TCP | .Tn TCP | |||||||||
is | is | |||||||||
.Xr cc_newreno 4 . | .Xr cc_newreno 4 . | |||||||||
Other congestion control algorithms can be made available using the | Other congestion control algorithms can be made available using the | |||||||||
.Xr mod_cc 4 | .Xr mod_cc 4 | |||||||||
framework. | framework. | |||||||||
.Ss MIB Variables | .Ss MIB (sysctl) Variables | |||||||||
The | The | |||||||||
.Tn TCP | .Tn TCP | |||||||||
protocol implements a number of variables in the | protocol implements a number of variables in the | |||||||||
.Va net.inet.tcp | .Va net.inet.tcp | |||||||||
branch of the | branch of the | |||||||||
.Xr sysctl 3 | .Xr sysctl 3 | |||||||||
MIB. | MIB, which can also be read or modified with | |||||||||
.Xr sysctl 8 . | ||||||||||
pauamma_gundo.comUnsubmitted Not Done Inline Actions
pauamma_gundo.com: | ||||||||||
.Bl -tag -width ".Va v6pmtud_blackhole_mss" | .Bl -tag -width ".Va v6pmtud_blackhole_mss" | |||||||||
.It Va always_keepalive | .It Va always_keepalive | |||||||||
Assume that | Assume that | |||||||||
.Dv SO_KEEPALIVE | .Dv SO_KEEPALIVE | |||||||||
is set on all | is set on all | |||||||||
.Tn TCP | .Tn TCP | |||||||||
connections, the kernel will | connections, the kernel will | |||||||||
periodically send a packet to the remote host to verify the connection | periodically send a packet to the remote host to verify the connection | |||||||||
is still up. | is still up. | |||||||||
.It Va blackhole | .It Va blackhole | |||||||||
If enabled, disable sending of RST when a connection is attempted | If enabled, disable sending of RST when a connection is attempted | |||||||||
to a port where there is not a socket accepting connections. | to a port where there is no socket accepting connections. | |||||||||
Done Inline Actions
While here. pauamma_gundo.com: While here. | ||||||||||
Done Inline ActionsDone in two places. karels: Done in two places. | ||||||||||
See | See | |||||||||
.Xr blackhole 4 . | .Xr blackhole 4 . | |||||||||
.It Va blackhole_local | ||||||||||
See | ||||||||||
.Xr blackhole 4 . | ||||||||||
.It Va cc | ||||||||||
A number of variables for congestion control are under the | ||||||||||
.Va net.inet.tcp.cc | ||||||||||
node. | ||||||||||
See | ||||||||||
.Xr mod_cc 4 . | ||||||||||
.It Va cc.newreno | ||||||||||
Variables for NewReno congestion control are under the | ||||||||||
.Va net.inet.tcp.cc.newreno | ||||||||||
node. | ||||||||||
See | ||||||||||
.Xr cc_newreno 4 . | ||||||||||
.It Va delacktime | .It Va delacktime | |||||||||
Maximum amount of time, in milliseconds, before a delayed ACK is sent. | Maximum amount of time, in milliseconds, before a delayed ACK is sent. | |||||||||
.It Va delayed_ack | .It Va delayed_ack | |||||||||
Delay ACK to try and piggyback it onto a data packet. | Delay ACK to try and piggyback it onto a data packet or another ACK. | |||||||||
.It Va do_lrd | .It Va do_lrd | |||||||||
Enable Lost Retransmission Detection for SACK-enabled sessions, disabled by | Enable Lost Retransmission Detection for SACK-enabled sessions, disabled by | |||||||||
default. | default. | |||||||||
Under severe congestion, a retransmission can be lost which then leads to a | Under severe congestion, a retransmission can be lost which then leads to a | |||||||||
mandatory Retransmission Timeout (RTO), followed by slow-start. | mandatory Retransmission Timeout (RTO), followed by slow-start. | |||||||||
LRD will try to resend the repeatedly lost packet, preventing the time-consuming | LRD will try to resend the repeatedly lost packet, preventing the time-consuming | |||||||||
RTO and performance reducing slow-start. | RTO and performance reducing slow-start. | |||||||||
.It Va do_prr | .It Va do_prr | |||||||||
Perform SACK loss recovery using the Proportional Rate Reduction (PRR) algorithm | Perform SACK loss recovery using the Proportional Rate Reduction (PRR) algorithm | |||||||||
described in RFC6937. | described in RFC6937. | |||||||||
This improves the effectiveness of retransmissions particular in environments | This improves the effectiveness of retransmissions particular in environments | |||||||||
with ACK thinning or burst loss events, as chances to run out of the ACK clock | with ACK thinning or burst loss events, as chances to run out of the ACK clock | |||||||||
are reduced, preventing lengthy and performance reducing RTO based loss recovery | are reduced, preventing lengthy and performance reducing RTO based loss recovery | |||||||||
(default is true). | (default is true). | |||||||||
.It Va do_prr_conservative | .It Va do_prr_conservative | |||||||||
While doing Proportional Rate Reduction, remain strictly in a packet conserving | While doing Proportional Rate Reduction, remain strictly in a packet conserving | |||||||||
mode, sending only one new packet for each ACK received. | mode, sending only one new packet for each ACK received. | |||||||||
Helpful when a misconfigured token bucket traffic policer causes persistent | Helpful when a misconfigured token bucket traffic policer causes persistent | |||||||||
high losses leading to RTO, but reduces PRR effectiveness in more common settings | high losses leading to RTO, but reduces PRR effectiveness in more common settings | |||||||||
(default is false). | (default is false). | |||||||||
.It Va do_tcpdrain | .It Va do_tcpdrain | |||||||||
Flush packets in the | Flush packets in the | |||||||||
.Tn TCP | .Tn TCP | |||||||||
reassembly queue if the system is low on mbufs. | reassembly queue if the system is low on mbufs. | |||||||||
.It Va drop_synfin | ||||||||||
Drop TCP packets with both SYN and FIN set. | ||||||||||
.It Va ecn.enable | .It Va ecn.enable | |||||||||
Enable support for TCP Explicit Congestion Notification (ECN). | Enable support for TCP Explicit Congestion Notification (ECN). | |||||||||
ECN allows a TCP sender to reduce the transmission rate in order to | ECN allows a TCP sender to reduce the transmission rate in order to | |||||||||
avoid packet drops. | avoid packet drops. | |||||||||
.Bl -tag -compact | .Bl -tag -compact | |||||||||
.It 0 | .It 0 | |||||||||
Disable ECN. | Disable ECN. | |||||||||
.It 1 | .It 1 | |||||||||
▲ Show 20 Lines • Show All 227 Lines • ▼ Show 20 Lines | ||||||||||
The default is 75000 msec (75K msec, 75 sec). | The default is 75000 msec (75K msec, 75 sec). | |||||||||
.It Va keepintvl | .It Va keepintvl | |||||||||
The interval, in milliseconds, between keepalive probes sent to remote | The interval, in milliseconds, between keepalive probes sent to remote | |||||||||
machines, when no response is received on a | machines, when no response is received on a | |||||||||
.Va keepidle | .Va keepidle | |||||||||
probe. | probe. | |||||||||
The default is 75000 msec (75K msec, 75 sec). | The default is 75000 msec (75K msec, 75 sec). | |||||||||
.It Va log_in_vain | .It Va log_in_vain | |||||||||
Log any connection attempts to ports where there is not a socket | Log any connection attempts to ports where there is no socket | |||||||||
accepting connections. | accepting connections. | |||||||||
The value of 1 limits the logging to | The value of 1 limits the logging to | |||||||||
.Tn SYN | .Tn SYN | |||||||||
(connection establishment) packets only. | (connection establishment) packets only. | |||||||||
A value of 2 results in any | A value of 2 results in any | |||||||||
.Tn TCP | .Tn TCP | |||||||||
packets to closed ports being logged. | packets to closed ports being logged. | |||||||||
Any value not listed above disables the logging | Any value not listed above disables the logging | |||||||||
Show All 10 Lines | ||||||||||
Since this structure is smaller than a socket structure, it can save | Since this structure is smaller than a socket structure, it can save | |||||||||
a significant amount of system memory. | a significant amount of system memory. | |||||||||
The | The | |||||||||
.Va net.inet.tcp.maxtcptw | .Va net.inet.tcp.maxtcptw | |||||||||
MIB variable controls the maximum number of these structures allocated. | MIB variable controls the maximum number of these structures allocated. | |||||||||
By default, it is initialized to | By default, it is initialized to | |||||||||
.Va kern.ipc.maxsockets | .Va kern.ipc.maxsockets | |||||||||
/ 5. | / 5. | |||||||||
.It Va minmss | ||||||||||
Minimum TCP Maximum Segment Size; used to prevent a denial of service attack | ||||||||||
Done Inline Actions
pauamma_gundo.com: | ||||||||||
from an unreasonably low MSS. | ||||||||||
.It Va msl | .It Va msl | |||||||||
The Maximum Segment Lifetime, in milliseconds, for a packet. | The Maximum Segment Lifetime, in milliseconds, for a packet. | |||||||||
.It Va mssdflt | .It Va mssdflt | |||||||||
The default value used for the maximum segment size | The default value used for the TCP Maximum Segment Size | |||||||||
.Pq Dq MSS | .Pq Dq MSS | |||||||||
when no advice to the contrary is received from MSS negotiation. | for IPv4 when no advice to the contrary is received from MSS negotiation. | |||||||||
.It Va newcwd | .It Va newcwd | |||||||||
Enable the New Congestion Window Validation mechanism as described in RFC 7661. | Enable the New Congestion Window Validation mechanism as described in RFC 7661. | |||||||||
This gently reduces the congestion window during periods, where TCP is | This gently reduces the congestion window during periods, where TCP is | |||||||||
Not Done Inline ActionsTangent question; what does "gently" mean here? Slightly, ie by a small amount overall? Slowly, ie at a low pace overall change regardless, or not abruptly? Or is it a typo for "greatly"? pauamma_gundo.com: Tangent question; what does "gently" mean here? Slightly, ie by a small amount overall? Slowly… | ||||||||||
Done Inline ActionsI think it means gradually, and probably by a small amount, but I don't know this algorithm. karels: I think it means gradually, and probably by a small amount, but I don't know this algorithm. | ||||||||||
Not Done Inline Actions
Then I suggest changing it to "gradually" pending review by someone who does. Here or in another Phab review is up to you. pauamma_gundo.com: > I think it means gradually, and probably by a small amount, but I don't know this algorithm. | ||||||||||
application limited and the network bandwidth is not utilized completely. | application limited and the network bandwidth is not utilized completely. | |||||||||
That prevents self-inflicted packet losses once the application starts to | That prevents self-inflicted packet losses once the application starts to | |||||||||
transmit data at a higher speed. | transmit data at a higher speed. | |||||||||
.It Va nolocaltimewait | .It Va nolocaltimewait | |||||||||
Suppress creation of compressed TCP | Suppress creation of compressed TCP | |||||||||
.Dv TIME_WAIT | .Dv TIME_WAIT | |||||||||
states for connections in | states for connections in | |||||||||
which both endpoints are local. | which both endpoints are local. | |||||||||
.It Va path_mtu_discovery | .It Va path_mtu_discovery | |||||||||
Enable Path MTU Discovery. | Enable Path MTU Discovery. | |||||||||
.It Va pcbcount | .It Va pcbcount | |||||||||
Number of active process control blocks | Number of active process control blocks | |||||||||
(read-only). | (read-only). | |||||||||
.It Va perconn_stats_enable | .It Va perconn_stats_enable | |||||||||
Controls the default collection of statistics for all connections using the | Controls the default collection of statistics for all connections using the | |||||||||
.Xr stats 3 | .Xr stats 3 | |||||||||
framework. | framework. | |||||||||
0 disables, 1 enables, 2 enables random sampling across log id connection | 0 disables, 1 enables, 2 enables random sampling across log id connection | |||||||||
groups with all connections in a group receiving the same setting. | groups with all connections in a group receiving the same setting. | |||||||||
.It Va perconn_stats_sample_rates | .It Va perconn_stats_sample_rates | |||||||||
A CSV list of template_spec=percent key-value pairs which controls the per | A CSV list of template_spec=percent key-value pairs which controls the per | |||||||||
template sampling rates when | template sampling rates when | |||||||||
.Xr stats 3 | .Xr stats 3 | |||||||||
sampling is enabled. | sampling is enabled. | |||||||||
.It Va persmax | ||||||||||
Maximum persistence interval, msec. | ||||||||||
.It Va persmin | ||||||||||
Minimum persistence interval, msec. | ||||||||||
.It Va pmtud_blackhole_detection | .It Va pmtud_blackhole_detection | |||||||||
Enable automatic path MTU blackhole detection. | Enable automatic path MTU blackhole detection. | |||||||||
In case of retransmits of MSS sized segments, | In case of retransmits of MSS sized segments, | |||||||||
the OS will lower the MSS to check if it's an MTU problem. | the OS will lower the MSS to check if it's an MTU problem. | |||||||||
If the current MSS is greater than the configured value to try | If the current MSS is greater than the configured value to try | |||||||||
.Po Va net.inet.tcp.pmtud_blackhole_mss | .Po Va net.inet.tcp.pmtud_blackhole_mss | |||||||||
and | and | |||||||||
.Va net.inet.tcp.v6pmtud_blackhole_mss | .Va net.inet.tcp.v6pmtud_blackhole_mss | |||||||||
Show All 26 Lines | ||||||||||
The actual limit applied to a session's reassembly queue will be the lower of | The actual limit applied to a session's reassembly queue will be the lower of | |||||||||
the system-calculated automatic limit and the user-specified | the system-calculated automatic limit and the user-specified | |||||||||
.Va reass.maxqueuelen | .Va reass.maxqueuelen | |||||||||
limit. | limit. | |||||||||
.It Va reass.maxsegments | .It Va reass.maxsegments | |||||||||
The maximum limit on the total number of segments across all reassembly | The maximum limit on the total number of segments across all reassembly | |||||||||
queues. | queues. | |||||||||
The limit can be adjusted as a tunable. | The limit can be adjusted as a tunable. | |||||||||
.It Va recvbuf_auto | ||||||||||
Enable automatic receive buffer sizing as a connection progresses. | ||||||||||
.It Va recvbuf_max | ||||||||||
Maximum size of automatic receive buffer. | ||||||||||
.It Va recvspace | .It Va recvspace | |||||||||
Maximum | Initial | |||||||||
.Tn TCP | .Tn TCP | |||||||||
receive window. | receive window (buffer size). | |||||||||
.It Va require_unique_port | ||||||||||
Require unique ephemeral port for outgoing connections; | ||||||||||
otherwise, the 4-tuple of local and remote ports and addresses must be unique. | ||||||||||
Requiring a unique port limits the number of outgoing connections. | ||||||||||
.It Va rexmit_drop_options | ||||||||||
Drop TCP options from third and later retransmitted SYN segments | ||||||||||
of a connection. | ||||||||||
.It Va rexmit_initial , rexmit_min , rexmit_slop | .It Va rexmit_initial , rexmit_min , rexmit_slop | |||||||||
Adjust the retransmit timer calculation for | Adjust the retransmit timer calculation for | |||||||||
.Tn TCP . | .Tn TCP . | |||||||||
The slop is | The slop is | |||||||||
typically added to the raw calculation to take into account | typically added to the raw calculation to take into account | |||||||||
occasional variances that the | occasional variances that the | |||||||||
.Tn SRTT | .Tn SRTT | |||||||||
(smoothed round-trip time) | (smoothed round-trip time) | |||||||||
Show All 29 Lines | ||||||||||
.It Va rfc6675_pipe | .It Va rfc6675_pipe | |||||||||
Deprecated and superseded by | Deprecated and superseded by | |||||||||
.Va sack.revised | .Va sack.revised | |||||||||
.It Va sack.enable | .It Va sack.enable | |||||||||
Enable support for RFC 2018, TCP Selective Acknowledgment option, | Enable support for RFC 2018, TCP Selective Acknowledgment option, | |||||||||
which allows the receiver to inform the sender about all successfully | which allows the receiver to inform the sender about all successfully | |||||||||
arrived segments, allowing the sender to retransmit the missing segments | arrived segments, allowing the sender to retransmit the missing segments | |||||||||
only. | only. | |||||||||
.It Va sack.globalholes | ||||||||||
Global number of TCP SACK holes currently allocated. | ||||||||||
.It Va sack.globalmaxholes | .It Va sack.globalmaxholes | |||||||||
Maximum number of SACK holes per system, across all connections. | Maximum number of SACK holes per system, across all connections. | |||||||||
Defaults to 65536. | Defaults to 65536. | |||||||||
.It Va sack.maxholes | .It Va sack.maxholes | |||||||||
Maximum number of SACK holes per connection. | Maximum number of SACK holes per connection. | |||||||||
Defaults to 128. | Defaults to 128. | |||||||||
.It Va sack.revised | .It Va sack.revised | |||||||||
Enables three updated mechanisms from RFC6675 (default is true). | Enables three updated mechanisms from RFC6675 (default is true). | |||||||||
Calculate the bytes in flight using the algorithm described in RFC 6675, and | Calculate the bytes in flight using the algorithm described in RFC 6675, and | |||||||||
is also an improvement when Proportional Rate Reduction is enabled. | is also an improvement when Proportional Rate Reduction is enabled. | |||||||||
Next, Rescue Retransmission helps timely loss recovery, when the trailing segments | Next, Rescue Retransmission helps timely loss recovery, when the trailing segments | |||||||||
of a transmission are lost, while no additional data is ready to be sent. | of a transmission are lost, while no additional data is ready to be sent. | |||||||||
In case a partial ACK without a SACK block is received during SACK loss | In case a partial ACK without a SACK block is received during SACK loss | |||||||||
recovery, the trailing segment is immediately resent, rather than waiting | recovery, the trailing segment is immediately resent, rather than waiting | |||||||||
for a Retransmission timeout. | for a Retransmission timeout. | |||||||||
Finally, SACK loss recovery is also engaged, once two segments plus one byte are | Finally, SACK loss recovery is also engaged, once two segments plus one byte are | |||||||||
SACKed - even if no traditional duplicate ACKs were observed. | SACKed - even if no traditional duplicate ACKs were observed. | |||||||||
.It Va sendbuf_auto | ||||||||||
Enable automatic send buffer sizing. | ||||||||||
.It Va sendbuf_auto_lowat | ||||||||||
Modify threshold for auto send buffer growth to account for | ||||||||||
.Dv SO_SNDLOWAT . | ||||||||||
.It Va sendbuf_inc | ||||||||||
Incrementor step size of automatic send buffer. | ||||||||||
.It Va sendbuf_max | ||||||||||
Maximum size of automatic send buffer. | ||||||||||
.It Va sendspace | .It Va sendspace | |||||||||
Maximum | Initial | |||||||||
.Tn TCP | .Tn TCP | |||||||||
send window. | send window (buffer size). | |||||||||
.It Va syncache | ||||||||||
Variables under the | ||||||||||
.Va net.inet.tcp.syncache | ||||||||||
node are documented in | ||||||||||
.Xr syncache 4 . | ||||||||||
.It Va syncookies | .It Va syncookies | |||||||||
Determines whether or not | Determines whether or not | |||||||||
.Tn SYN | .Tn SYN | |||||||||
cookies should be generated for outbound | cookies should be generated for outbound | |||||||||
.Tn SYN-ACK | .Tn SYN-ACK | |||||||||
packets. | packets. | |||||||||
.Tn SYN | .Tn SYN | |||||||||
cookies are a great help during | cookies are a great help during | |||||||||
.Tn SYN | .Tn SYN | |||||||||
flood attacks, and are enabled by default. | flood attacks, and are enabled by default. | |||||||||
(See | (See | |||||||||
.Xr syncookies 4 . ) | .Xr syncookies 4 . ) | |||||||||
.It Va syncookies_only | ||||||||||
See | ||||||||||
.Xr syncookies 4 . | ||||||||||
.It Va tcbhashsize | .It Va tcbhashsize | |||||||||
Size of the | Size of the | |||||||||
.Tn TCP | .Tn TCP | |||||||||
control-block hash table | control-block hash table | |||||||||
(read-only). | (read-only). | |||||||||
This is tuned using the kernel option | This is tuned using the kernel option | |||||||||
.Dv TCBHASHSIZE | .Dv TCBHASHSIZE | |||||||||
or by setting | or by setting | |||||||||
Show All 10 Lines | ||||||||||
timestamps has been negotiated. | timestamps has been negotiated. | |||||||||
As of June 2021, several TCP stacks are known to violate RFC 7323, including | As of June 2021, several TCP stacks are known to violate RFC 7323, including | |||||||||
modern widely deployed ones. | modern widely deployed ones. | |||||||||
Therefore the default is 1, i.e., the missing of timestamps is tolerated. | Therefore the default is 1, i.e., the missing of timestamps is tolerated. | |||||||||
.It Va ts_offset_per_conn | .It Va ts_offset_per_conn | |||||||||
When initializing the TCP timestamps, use a per connection offset instead of a | When initializing the TCP timestamps, use a per connection offset instead of a | |||||||||
per host pair offset. | per host pair offset. | |||||||||
Default is to use per connection offsets as recommended in RFC 7323. | Default is to use per connection offsets as recommended in RFC 7323. | |||||||||
.It Va tso | ||||||||||
Enable TCP Segmentation Offload. | ||||||||||
.It Va udp_tunneling_overhead | .It Va udp_tunneling_overhead | |||||||||
The overhead taken into account when using UDP encapsulation. | The overhead taken into account when using UDP encapsulation. | |||||||||
Since MSS clamping by middleboxes will most likely not work, values larger than | Since MSS clamping by middleboxes will most likely not work, values larger than | |||||||||
8 (the size of the UDP header) are also supported. | 8 (the size of the UDP header) are also supported. | |||||||||
Supported values are between 8 and 1024. | Supported values are between 8 and 1024. | |||||||||
The default is 8. | The default is 8. | |||||||||
.It Va udp_tunneling_port | .It Va udp_tunneling_port | |||||||||
The local UDP encapsulation port. | The local UDP encapsulation port. | |||||||||
A value of 0 indicates that UDP encapsulation is disabled. | A value of 0 indicates that UDP encapsulation is disabled. | |||||||||
The default is 0. | The default is 0. | |||||||||
.It Va v6mssdflt | ||||||||||
The default value used for the TCP Maximum Segment Size | ||||||||||
.Pq Dq MSS | ||||||||||
for IPv6 when no advice to the contrary is received from MSS negotiation. | ||||||||||
.It Va v6pmtud_blackhole_mss | .It Va v6pmtud_blackhole_mss | |||||||||
MSS to try for IPv6 if PMTU blackhole detection is turned on. | MSS to try for IPv6 if PMTU blackhole detection is turned on. | |||||||||
See | See | |||||||||
.Va pmtud_blackhole_detection . | .Va pmtud_blackhole_detection . | |||||||||
.El | .El | |||||||||
.Sh ERRORS | .Sh ERRORS | |||||||||
A socket operation may fail with one of the following errors returned: | A socket operation may fail with one of the following errors returned: | |||||||||
.Bl -tag -width Er | .Bl -tag -width Er | |||||||||
Show All 39 Lines | ||||||||||
.Xr intro 4 , | .Xr intro 4 , | |||||||||
.Xr ip 4 , | .Xr ip 4 , | |||||||||
.Xr ktls 4 , | .Xr ktls 4 , | |||||||||
.Xr mod_cc 4 , | .Xr mod_cc 4 , | |||||||||
.Xr siftr 4 , | .Xr siftr 4 , | |||||||||
.Xr syncache 4 , | .Xr syncache 4 , | |||||||||
.Xr tcp_bbr 4 , | .Xr tcp_bbr 4 , | |||||||||
.Xr setkey 8 , | .Xr setkey 8 , | |||||||||
.Xr sysctl 8 , | ||||||||||
.Xr tcp_functions 9 | .Xr tcp_functions 9 | |||||||||
.Rs | .Rs | |||||||||
.%A "V. Jacobson" | .%A "V. Jacobson" | |||||||||
.%A "B. Braden" | .%A "B. Braden" | |||||||||
.%A "D. Borman" | .%A "D. Borman" | |||||||||
.%T "TCP Extensions for High Performance" | .%T "TCP Extensions for High Performance" | |||||||||
.%O "RFC 1323" | .%O "RFC 1323" | |||||||||
.Re | .Re | |||||||||
Show All 34 Lines |