Solaris 可调参数参考手册

TCP 可调参数

tcp_deferred_ack_interval

说明

指定非直接连接的主机的 TCP 延迟确认 (acknowledgment, ACK) 计时器的超时值。

请参阅 RFC 1122 中的第 4.2.3.2 节。

缺省值

100 毫秒

范围

1 毫秒到 1 分钟

是否为动态

何时更改

请勿将此值增大到多于 500 毫秒。

在以下情况下应增大此值:

  • 网络链接速度较慢(小于 57.6 Kbps),并且最大段大小 (maximum segment size, MSS) 大于 512 字节

  • 接收多个 TCP 段的间隔很短

承诺级别

不稳定

tcp_local_dack_interval

说明

指定直接连接的主机的 TCP 延迟确认 (acknowledgment, ACK) 计时器的超时值。

请参阅 RFC 1122 中的第 4.2.3.2 节。

缺省值

50 毫秒

范围

1 毫秒到 1 分钟

是否为动态

何时更改

请勿将此值增大到多于 500 毫秒。

在以下情况下应增大此值:

  • 网络链接速度较慢(小于 57.6 Kbps),并且最大段大小 (maximum segment size, MSS) 大于 512 字节

  • 接收多个 TCP 段的间隔很短

承诺级别

不稳定

tcp_deferred_acks_max

说明

指定在生成确认 (acknowledgment, ACK) 之前从非直接连接的远程目标接收的最大TCP 段数。TCP 段以单个连接的最大段大小 (maximum segment size, MSS) 为单位。如果设置为 0 或 1,则不延迟 ACK(假设所有段的长度均为 1 MSS)。将动态计算每个连接的实际数量。此值为缺省的最大值。

缺省值

2

范围

0 到 16

是否为动态

何时更改

请勿更改此值。在某些情况下,如由于 ACK 延迟致使网络通信流量突然变高时,请减小此值。但不要将此值减小到 2 以下。

承诺级别

不稳定

tcp_local_dacks_max

说明

指定在生成确认 (acknowledgment, ACK) 之前从直接连接的目标接收的最大 TCP 段数。TCP 段以单个连接的最大段大小 (maximum segment size, MSS) 为单位。如果设置为 0 或 1,则表示 ACK 不会发生延迟(假设所有段的长度均为 1 MSS)。将动态计算每个连接的实际数量。此值为缺省的最大值。

缺省值

8

范围

0 到 16

是否为动态

何时更改

请勿更改此值。在某些情况下,如由于 ACK 延迟致使网络通信流量突然变高时,请减小此值。但不要将此值减小到 2 以下。

承诺级别

不稳定

tcp_wscale_always

说明

当启用此参数(为缺省设置)时,TCP 始终发送带有窗口缩放比例选项的 SYN 段,即使窗口缩放比例选项值为 0 时也是如此。请注意,如果 TCP 收到带有窗口缩放比例选项的 SYN 段,则即使禁用了此参数,TCP 也会使用带有窗口缩放比例选项的 SYN 段进行响应。此外,应根据接收窗口大小设置此选项值。

请参阅 RFC 1323 以了解窗口缩放比例选项。

缺省值

1(启用)

范围

0(禁用)或 1(启用)

是否为动态

何时更改

如果与不支持窗口缩放比例选项的旧版 TCP 协议栈之间存在互操作性问题,则禁用此参数。

承诺级别

不稳定

更改历史记录

有关信息,请参见tcp_wscale_always(Solaris 9 发行版)

tcp_tstamp_always

说明

如果设置为 1,则 TCP 将始终发送带有时间标记选项的 SYN 段。请注意,如果 TCP 收到带有时间标记选项的 SYN 段,则即使此参数设置为 0,TCP 也会使用带有时间标记的 SYN 段进行响应。

缺省值

0(禁用)

范围

0(禁用)或 1(启用)

是否为动态

何时更改

如果难以准确测量往返时间 (round-trip time, RTT) 并且可能出现 TCP 序列号回绕问题,则启用此参数。

请参阅 RFC 1323 以了解有关要启用此选项的更多理由。

承诺级别

不稳定

tcp_xmit_hiwat

说明

定义缺省的发送窗口大小(以字节为单位)。有关针对每个路由设置不同值的介绍,请参阅每路由度量标准。另请参见tcp_max_buf

缺省值

49,152

范围

4096 到 1,073,741,824

是否为动态

何时更改

应用程序可以使用 setsockopt(3XNET) SO_SNDBUF 来更改单个连接的发送缓冲区。

承诺级别

不稳定

tcp_recv_hiwat

说明

定义缺省的接收窗口大小(以字节为单位)。有关针对每个路由设置不同值的介绍,请参阅每路由度量标准。另请参见tcp_max_buftcp_recv_hiwat_minmss

缺省值

49,152

范围

2048 到 1,073,741,824

是否为动态

何时更改

应用程序可以使用 setsockopt(3XNET) SO_RCVBUF 来更改单个连接的接收缓冲区。

承诺级别

不稳定

tcp_max_buf

说明

定义最大缓冲区大小(以字节为单位)。此参数控制由使用 setsockopt(3XNET) 的应用程序设置的发送缓冲区和接收缓冲区的大小。

缺省值

1,048,576

范围

8192 到 1,073,741,824

是否为动态

何时更改

如果要在高速网络环境中建立 TCP 连接,则增大此值以便适应较高的网络链接速度。

承诺级别

不稳定

tcp_cwnd_max

说明

定义 TCP 拥塞窗口 (congestion window, cwnd) 的最大值(以字节为单位)。

有关 TCP 拥塞窗口的更多信息,请参阅 RFC 1122 和 RFC 2581。

缺省值

1,048,576

范围

128 到 1,073,741,824

是否为动态

何时更改

即使应用程序使用 setsockopt(3XNET) 将窗口大小更改为大于 tcp_cwnd_max 的值,所用的实际窗口仍然不会超过 tcp_cwnd_max。因此,tcp_max_buf 应该大于 tcp_cwnd_max

承诺级别

不稳定

tcp_slow_start_initial

说明

定义 TCP 连接的最大初始拥塞窗口 (congestion window, cwnd) 大小,以最大段大小 (maximum segment size, MSS) 为单位。

有关如何计算初始拥塞窗口大小,请参阅 RFC 2414。

缺省值

4

范围

1 到 4

是否为动态

何时更改

请勿更改此值。

如果初始 cwnd 大小在特定情况下导致网络拥塞,则减小此值。

承诺级别

不稳定

tcp_slow_start_after_idle

说明

TCP 连接在空闲(未接收段)一个重新传输超时 (retransmission timeout, RTO) 时间段之后的拥塞窗口大小,以最大段大小 (maximum segment size, MSS) 为单位。

有关如何计算初始拥塞窗口大小,请参阅 RFC 2414。

缺省值

4

范围

1 到 16,384

是否为动态

何时更改

有关更多信息,请参见tcp_slow_start_initial

承诺级别

不稳定

tcp_sack_permitted

说明

如果设置为 2,则 TCP 将始终发送带有允许选择性确认 (selective acknowledgment, SACK) 的选项的 SYN 段。如果 TCP 收到带有允许 SACK 的选项的 SYN 段,并且此参数设置为 1,则 TCP 会使用允许 SACK 的选项进行响应。如果此参数设置为 0,则无论传入段是否包含允许 SACK 的选项,TCP 都不会发送允许 SACK 的选项。

有关 SACK 选项的信息,请参阅 RFC 2018。

缺省值

2(主动启用)

范围

0(禁用)、1(被动启用)或 2(主动启用)

是否为动态

何时更改

SACK 处理可以提高 TCP 重新传输性能,因此应该将其主动启用。有时,主动启用 SACK 选项会使另一端出现混乱。如果出现混乱,则将此值设置为 1,以便只在传入连接允许 SACK 处理时启用 SACK 处理。

承诺级别

不稳定

tcp_rev_src_routes

说明

如果设置为 0,则出于安全原因 TCP 不会对传入连接的 IP 源路由选项进行反向。如果设置为 1,则 TCP 会正常进行源路由反向。

缺省值

0(禁用)

范围

0(禁用)或 1(启用)

是否为动态

何时更改

如果进行诊断时需要 IP 源路由,则将其启用。

承诺级别

不稳定

tcp_time_wait_interval

说明

指定 TCP 连接保持 TIME-WAIT 状态的时间(以毫秒为单位)。

有关更多信息,请参阅 RFC 1122 中的第 4.2.2.13 节。

缺省值

60,000(60 秒)

范围

1 秒到 10 分钟

是否为动态

何时更改

请不要将此值设置为低于 60 秒的值。

有关更改此参数的信息,请参阅 RFC 1122 中的第 4.2.2.13 节。

承诺级别

不稳定

tcp_ecn_permitted

说明

控制显式拥塞通知 (Explicit Congestion Notification, ECN) 支持。

如果此参数设置为 0,则 TCP 不会与支持 ECN 机制的对等方进行协商。

如果启动连接时此参数设置为 1,则 TCP 不会告知对等方其支持 ECN 机制。

但是,如果对等方在 SYN 段中指示其支持 ECN 机制,则当接受新的传入连接请求时,TCP 会告知此对等方其支持 ECN 机制。

如果此参数设置为 2,则除了在接受连接时与对等方协商 ECN 机制之外,TCP 还在建立主动传出连接时在传出 SYN 段中指示其支持 ECN 机制。

有关 ECN 的信息,请参阅 RFC 3168。

缺省值

1(被动启用)

范围

0(禁用)、1(被动启用)或 2(主动启用)

是否为动态

何时更改

ECN 可以帮助 TCP 更好地处理拥塞控制。但是,此机制会使现有的 TCP 实现、防火墙、NAT 以及其他网络设备出现混乱。这些设备不符合 IETF 标准。

由于存在这些设备,因此将此参数的缺省值设置为 1。在极少数情况下,被动启用仍会导致问题。仅当完全必要时将此参数设置为 0。

承诺级别

不稳定

tcp_conn_req_max_q

说明

指定缺省的 TCP 侦听器等待 accept(3SOCKET) 接受的最大暂挂 TCP 连接数。另请参见tcp_conn_req_max_q0

缺省值

128

范围

1 到 4,294,967,296

是否为动态

何时更改

对于可能接收多个连接请求的应用程序(如 Web 服务器),可以增大缺省值以便适应较高的传入速率。

请不要将此参数增大到非常大的值。暂挂 TCP 连接可能会占用过多内存。此外,如果由于暂挂 TCP 连接数过多而导致应用程序不能迅速处理如此多的连接请求,则可能会拒绝新的传入请求。

请注意,增大 tcp_conn_req_max_q 并不意味着应用程序可以具有如此多的暂挂 TCP 连接。应用程序可以使用 listen(3SOCKET) 来更改每个套接字的最大暂挂 TCP 连接数。此参数是应用程序可以使用 listen() 设置的最大值。因此,即使根据 listen() 中使用的值将此参数设置为非常大的值,套接字的实际最大数量也可能比 tcp_conn_req_max_q 小得多。

承诺级别

不稳定

更改历史记录

有关信息,请参见xxx:ip_forwarding(Solaris 9 发行版)

tcp_conn_req_max_q0

说明

指定缺省的 TCP 侦听器未完成的(尚未完成三次握手)最大暂挂 TCP 连接数。

有关 TCP 三次握手的更多信息,请参阅 RFC 793。另请参见tcp_conn_req_max_q

缺省值

1024

范围

0 到 4,294,967,296

是否为动态

何时更改

对于可能收到过多连接请求的应用程序(如 Web 服务器),可以增大缺省值以便适应较高的传入速率。

下面介绍了 tcp_conn_req_max_q0 与每个套接字的最大暂挂连接数之间的关系。

收到连接请求时,TCP 首先检查侦听器等待被接受的暂挂 TCP 连接(已执行三次握手)数目是否超过最大值 (N)。如果连接数过多,则会拒绝请求。如果连接数为允许数目,则 TCP 会检查未完成的暂挂 TCP 连接数是否超过 Ntcp_conn_req_max_q0 的总和。如果没有超过,则接受请求。否则,会删除最早未完成的暂挂 TCP 请求。

承诺级别

不稳定

更改历史记录

有关信息,请参见xxx:ip_forwarding(Solaris 9 发行版)

tcp_conn_req_min

说明

指定缺省的侦听器等待被接受的最大暂挂 TCP 连接请求数的最小值。这是应用程序可以使用的最大 listen(3SOCKET) 值的下限值。

缺省值

1

范围

1 到 1024

是否为动态

何时更改

对于使用 listen(3SOCKET) 设置的最大暂挂 TCP 连接数过低的应用程序,此参数可提供一种解决方案。请增大此值以便适应较高的传入连接请求速率。

承诺级别

不稳定

tcp_rst_sent_rate_enabled

说明

如果此参数设置为 1,则 RST 段的最大发送速率受 ndd 参数 tcp_rst_sent_rate 控制。如果此参数设置为 0,则不对 RST 段的发送速率进行任何控制。

缺省值

1(启用)

范围

0(禁用)或 1(启用)

是否为动态

何时更改

此可调参数通过限制 RST 段的发出速率来防止 TCP 受到拒绝服务攻击。仅当要求严格遵守 RFC 793 时,才应该禁用此速率控制。

承诺级别

不稳定

tcp_rst_sent_rate

说明

设置 TCP 每秒可以发出的最大 RST 段数。

缺省值

40

范围

0 到 4,294,967,296

是否为动态

何时更改

在 TCP 环境中,可能存在合法的理由使生成的 RST 数多于缺省值允许的数量。在这种情况下,请增大此参数的缺省值。

承诺级别

不稳定

tcp_mdt_max_pbufs

说明

指定由 TCP 生成的一条 M_MULTIDATA 消息可以携带的有效负荷缓冲区数。另请参见ip_multidata_outbound

缺省值

16

范围

1 到 16

是否为动态

何时更改

减小此参数时,可以通过限制由 TCP 生成的每条 M_MULTIDATA 消息携带的有效负荷缓冲区数而有助于调试设备驱动程序开发。

承诺级别

不稳定

/etc/system 文件中设置的 TCP/IP 参数

ipcl_conn_hash_size 参数只能在 /etc/system 文件中设置。修改此文件之后,请重新引导系统。

以下项设置 ipcl_conn_hash_size 参数:


set ip:ipcl_conn_hash_sizes=value

ipcl_conn_hash_size

说明

控制 IP 使用的连接散列表的大小。缺省值 0 意味着系统在引导时根据可用内存自动将此参数调整为相应值。

数据类型

无符号整数

缺省值

0

范围

0 到 82,500

是否为动态

否。只能在引导系统时更改此参数。

何时更改

如果系统始终具有数万个 TCP 连接,则可以相应地增大此值。增加散列表大小意味着占用更多内存,从而减少了用户应用程序的可用内存。

承诺级别

不稳定

带有附加注意事项的 TCP 参数

建议不要更改以下参数。

tcp_ip_abort_interval

说明

指定缺省的 TCP 连接重新传输总超时值。对于给定的 TCP 连接,如果 TCP 包已经重新传输了 tcp_ip_abort_interval 时间,但在这段时间内未收到来自另一个端点的任何确认,则 TCP 将关闭此连接。

有关 TCP 重新传输超时 (retransmission timeout, RTO) 计算,请参阅 RFC 1122 中的第 4.2.3 节。另请参见tcp_rexmit_interval_max

缺省值

8 分钟

范围

500 毫秒到 1193 小时

是否为动态

何时更改

请勿更改此值。有关例外,请参见tcp_rexmit_interval_max

承诺级别

不稳定

tcp_rexmit_interval_initial

说明

指定缺省的 TCP 连接初始重新传输超时 (retransmission timeout, RTO) 值。有关针对每个路由设置不同值的介绍,请参阅每路由度量标准

缺省值

3 秒

范围

1 毫秒到 20 秒

是否为动态

何时更改

请勿更改此值。减小此值可能会导致不必要的重新传输。

承诺级别

不稳定

tcp_rexmit_interval_max

说明

定义缺省的最大重新传输超时 (retransmission timeout, RTO) 值。对于所有 TCP 连接,计算后得出的 RTO 不能超过此值。另请参见tcp_ip_abort_interval

缺省值

60 秒

范围

1 毫秒到 2 小时

是否为动态

何时更改

在一般的网络环境中,请勿更改此值。

在某些特殊情况下,如果连接的往返时间 (round-trip time, RTT) 大约为 10 秒,则可以增大此值。如果更改此值,则还应该更改 tcp_ip_abort_interval 参数。将tcp_ip_abort_interval 的值更改为至少是 tcp_rexmit_interval_max 值的四倍。

承诺级别

不稳定

tcp_rexmit_interval_min

说明

指定缺省的最小重新传输超时 (retransmission timeout, RTO) 值。所有 TCP 连接的已计算的 RTO 不能低于此值。另请参见tcp_rexmit_interval_max

缺省值

400 毫秒

范围

1 毫秒到 20 秒

是否为动态

何时更改

在一般的网络环境中,请勿更改此值。

TCP 的 RTO 计算应该可以应对大多数 RTT 浮动。在某些非常特殊的情况下,如果连接的往返时间 (round-trip time, RTT) 大约为 10 秒,则增大此值。如果更改此值,则应该更改 tcp_rexmit_interval_max 参数。应将 tcp_rexmit_interval_max 的值更改为至少是 tcp_rexmit_interval_min 值的八倍。

承诺级别

不稳定

tcp_rexmit_interval_extra

说明

指定向已计算的重新传输超时 (retransmission time out, RTO) 值中添加的常数。

缺省值

0 毫秒

范围

0 到 2 小时

是否为动态

何时更改

请勿更改此值。

当 RTO 计算无法获得连接的最佳值时,可以更改此值以免不必要的重新传输。

承诺级别

不稳定

tcp_tstamp_if_wscale

说明

如果此参数设置为 1,并且针对连接启用窗口缩放比例选项,则 TCP 还将针对此连接启用 timestamp 选项。

缺省值

1(启用)

范围

0(禁用)或 1(启用)

是否为动态

何时更改

请勿更改此值。通常,当在高速网络中使用 TCP 时,必须防止序列号回绕。因此,需要 timestamp 选项。

承诺级别

不稳定

tcp_recv_hiwat_minmss

说明

控制缺省的最小接收窗口大小。最小值是连接的最大段大小 (maximum segment size, MSS) 的 tcp_recv_hiwat_minmss 倍。

缺省值

4

范围

1 到 65,536

是否为动态

何时更改

请勿更改此值。如果需要更改此值,则不要将其更改为低于 4 的值。

承诺级别

不稳定