Solaris 可调参数参考手册

第 4 章 Internet 协议套件可调参数

本章介绍各种 Internet 协议套件参数,如 TCP、IP、UDP 以及 SCTP。

有关可调参数的参考信息

可调参数 

参考 

Solaris 内核可调参数 

第 2 章,Solaris 内核可调参数

NFS 可调参数 

第 3 章,NFS 可调参数

网络高速缓存和加速器 (Network Cache and Accelerator, NCA) 可调参数 

第 5 章,网络高速缓存和加速器可调参数

调优 IP 套件参数概述

有关 IP 转发的最新信息,请参见新增和已更改的 TCP/IP 参数

可以使用 ndd 命令设置本章中介绍的所有调优参数,但ipcl_conn_hash_size除外,此参数只能在 /etc/system 文件中设置。

例如,按照以下语法使用 ndd 命令可设置 TCP/IP 参数:


# ndd -set driver parameter

有关更多信息,请参见ndd(1M)

虽然 SMF 框架提供了一种管理系统服务的方法,但是系统启动脚本中仍然包括 ndd 命令。有关创建启动脚本的更多信息,请参见《系统管理指南:基本管理》中的“运行控制脚本”

IP 套件参数验证

本节中介绍的所有参数都会被检验是否处于参数范围内。每个参数的说明中都提供参数的范围。

Internet 请求注解文档 (Request for Comment, RFC)

RFC 文档中介绍了 Internet 协议和标准规范。可以从 ftp://ftp.rfc-editor.org/in-notes 获取 RFC 的副本。通过查看此站点上的 rfc-index.txt 文件可浏览 RFC 主题。

IP 可调参数

ip_icmp_err_intervalip_icmp_err_burst

说明

控制 IP 生成 IPv4 或 IPv6 ICMP 错误消息的速率。IP 在某一 ip_icmp_err_interval 间隔内最多只生成 ip_icmp_err_burst 条 IPv4 或 IPv6 ICMP 错误消息。

ip_icmp_err_interval 参数可防止 IP 受到拒绝服务攻击。将此参数设置为 0 可禁用速率限制。但并不禁用错误消息的生成。

缺省值

对于 ip_icmp_err_interval,为 100 毫秒

对于 ip_icmp_err_burst,为 10 条错误消息

范围

对于 ip_icmp_err_interval,为 0 – 99,999 毫秒

对于 ip_icmp_err_burst,为 1 – 99,999 条错误消息

是否为动态

何时更改

为了进行诊断而需要更高的错误消息生成速率时。

承诺级别

不稳定

ip_respond_to_echo_broadcastip6_respond_to_echo_multicast

说明

控制 IPv4 或 IPv6 是否响应广播 ICMPv4 回显请求或多址广播 ICMPv6 回显请求。

缺省值

1(启用)

范围

0(禁用)或 1(启用)

是否为动态

何时更改

如果出于安全原因而不想要此行为,则将其禁用。

承诺级别

不稳定

ip_send_redirectsip6_send_redirects

说明

控制 IPv4 或 IPv6 是否发出 ICMPv4 或 ICMPv6 重定向消息。

缺省值

1(启用)

范围

0(禁用)或 1(启用)

是否为动态

何时更改

如果出于安全原因而不想要此行为,则将其禁用。

承诺级别

不稳定

ip_forward_src_routedip6_forward_src_routed

说明

控制 IPv4 或 IPv6 是否转发带有源 IPv4 路由选项或 IPv6 路由数据包头的包。

缺省值

0(禁用)

范围

0(禁用)或 1(启用)

是否为动态

何时更改

保持此参数为禁用状态以防止拒绝服务攻击。

承诺级别

不稳定

更改历史记录

有关信息,请参见ip_forward_src_routedip6_forward_src_routed (Solaris 10)

ip_addrs_per_if

说明

定义与某个实际接口关联的最大逻辑接口数。

缺省值

256

范围

1 到 8192

是否为动态

何时更改

请勿更改此值。如果需要更多的逻辑接口,则可以考虑增大此值。但是,应该意识到这种更改可能会对 IP 性能产生负面影响。

承诺级别

不稳定

ip_strict_dst_multihomingip6_strict_dst_multihoming

说明

确定对于未在非转发接口上显式配置的 IP 地址是否可以接受到达此接口的包。如果已启用 ip_forwarding,或者已针对相应接口启用 xxx:ip_forwarding,则可以忽略此参数,因为实际上已转发了包。

请参阅 RFC 1122 中的第 3.3.4.2 节。

缺省值

0(宽松的多宿主)

范围

0 =关闭(宽松的多宿主)

1 =打开(严格的多宿主)

是否为动态

何时更改

如果计算机接口通过严格的网络域(如防火墙或 VPN 节点),则将此参数设置为 1。

承诺级别

不稳定

ip_multidata_outbound

说明

使网络栈在传输过程中能够一次向网络设备驱动程序发送多个包。

启用此参数可以通过提高主机 CPU 使用率和/或网络吞吐量来减少每个包的处理开销。

现在,此参数控制使用多数据传输 (multidata transmit, MDT) 来传输 IP 分段。例如,当发出大于链路 MTU 的 UDP 有效负荷时。启用此可调参数之后,会将特定的高级协议(如 UDP)的 IP 分段成批传送到网络设备驱动程序。如果禁用此功能,则会导致网络栈中的 TCP 和 IP 分段逻辑恢复为每次向驱动程序发送一个包。

MDT 功能仅对支持此功能的设备驱动程序有效。

另请参见tcp_mdt_max_pbufs

缺省值

1(启用)

范围

0(禁用)或 1(启用)

是否为动态

何时更改

如果出于调试目的或任何其他原因不希望启用此参数,请将其禁用。

承诺级别

不稳定

更改历史记录

有关信息,请参见ip_multidata_outbound (Solaris 10)

ip_squeue_worker_wait

说明

控制唤醒工作线程来处理在 squeue 中排队的 TCP/IP 包的最大延迟。squeue 是指 TCP/IP 内核代码用来处理 TCP/IP 包的连续队列。

缺省值

10 毫秒

范围

0 – 50 毫秒

是否为动态

何时更改

如果对网络的响应及时性要求较高,并且网络通信流量较小,则考虑调优此参数。例如,计算机主要用于处理交互式网络通信时。

通常,在网络文件服务器、Web 服务器或者任何具有大量网络通信流量的服务器上,使用缺省值最合适。

承诺级别

不稳定

ip_squeue_enter

说明

控制 squeue 操作在处理来自应用程序的 TCP/IP 包时的行为。

值为 1 会使运行的线程只处理当前包。值为 2 会使运行的线程处理所有在 squeue 中排队的包。

缺省值

2

范围

0 到 2

是否为动态

何时更改

在某些情况下,考虑将此参数更改为 1 以提高某些应用程序的网络性能。例如,当 CPU 数超过活动的 NIC 数时,请将此参数更改为 1。

否则,不要更改此参数。

承诺级别

不稳定

更改历史记录

有关信息,请参见ip_squeue_write(Solaris 10 发行版)

ip_squeue_fanout

说明

确定将 TCP/IP 连接与 squeue 关联的模式。

值为 0 时会将新的 TCP/IP 连接与创建此连接的 CPU 进行关联。值为 1 时会将此连接与属于不同 CPU 的多个 squeue 进行关联。用于扇出 (fanout) 连接的 squeue 数基于 ip_soft_rings_cnt

缺省值

0

范围

0 或 1

是否为动态

何时更改

在某些情况下,考虑将此参数设置为 1 以将负载分散到所有 CPU。例如,当 CPU 数超过 NIC 数,并且一个 CPU 不能处理一个 NIC 的网络负载时,请将此参数设置为 1。

承诺级别

不稳定

更改历史记录

有关信息,请参见ip_squeue_fanout (Solaris 10)

ip_soft_rings_cnt

说明

确定用于扇出 (fanout) 传入 TCP/IP 连接的 squeue 数。


注 –

将传入通信流量放在其中一个环上。如果此环过载,则会丢弃包。每丢弃一个包,kstat dls 计数器 dls_soft_ring_pkt_drop 会增加 1。


缺省值

2

范围

0 - n 个 CPU,其中 n 是系统中的最大 CPU 数

是否为动态

否。更改此参数时,应该再次检测接口。

何时更改

在具有 10 Gbps NIC 以及多个 CPU 的系统上,请考虑将此参数设置为大于 2 的值。

承诺级别

过时

带有附加注意事项的 IP 可调参数

建议不要更改以下参数。

ip_ire_pathmtu_interval

说明

指定 IP 刷新路径最大传输单元 (path maximum transfer unit, PMTU) 搜索信息并尝试重新搜索 PMTU 的间隔(以毫秒为单位)。

请参阅有关 PMTU 搜索的 RFC 1191。

缺省值

10 分钟

范围

5 秒到 277 小时

是否为动态

何时更改

请勿更改此值。

承诺级别

不稳定

ip_icmp_return_data_bytesip6_icmp_return_data_bytes

说明

当 IPv4 或 IPv6 发送 ICMPv4 或 ICMPv6 错误消息时,它包括导致此错误消息的 IP 数据包头。此参数控制 ICMPv4 或 ICMPv6 错误消息中包括的超过 IPv4 或 IPv6 数据包头的额外包字节数。

缺省值

64 字节

范围

8 到 65,536 字节

是否为动态

何时更改

请勿更改此值。在 ICMP 错误消息中包括更多信息可能有助于诊断网络问题。如果需要此功能,则增大此值。

承诺级别

不稳定

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 的值。

承诺级别

不稳定

UDP 可调参数

udp_xmit_hiwat

说明

定义缺省的最大 UDP 套接字数据报大小。有关更多信息,请参见udp_max_buf

缺省值

57,344 字节

范围

1,024 到 1,073,741,824 字节

是否为动态

何时更改

请注意,应用程序可以使用 setsockopt(3XNET) SO_SNDBUF 来更改单个套接字的大小。通常情况下,不需要更改缺省值。

承诺级别

不稳定

更改历史记录

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

udp_recv_hiwat

说明

定义缺省的最大 UDP 套接字接收缓冲区大小。有关更多信息,请参见udp_max_buf

缺省值

57,344 字节

范围

128 到 1,073,741,824 字节

是否为动态

何时更改

请注意,应用程序可以使用 setsockopt(3XNET) SO_RCVBUF 来更改单个套接字的大小。通常,不需要更改缺省值。

承诺级别

不稳定

更改历史记录

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

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

建议不要更改以下参数。

udp_max_buf

说明

控制 UDP 套接字的发送缓冲区和接收缓冲区的大小。

缺省值

2,097,152 字节


范围

65,536 到 1,073,741,824 字节

是否为动态

何时更改

请勿更改此值。如果将此参数设置为非常大的值,则 UDP 套接字应用程序可能会占用过多的内存。

承诺级别

不稳定

更改历史记录

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

IPQoS 可调参数

ip_policy_mask

说明

在以下任一标注位置中启用或禁用 IPQoS 处理:转发外发、转发传入、本地外发以及本地传入。此参数是如下所示的位掩码:

未使用 

未使用 

未使用 

未使用 

转发外发 

转发传入 

本地外发 

本地传入 

任一位置中的 1 将掩盖或禁用此特定标注位置中的 IPQoS 处理。例如,值 0x01 将针对所有本地传入包禁用 IPQoS 处理。

缺省值

缺省值为 0,意味着在所有标注位置中启用 IPQoS 处理。

范围

0 (0x00) 到 15 (0x0F)。值 15 指示在所有标注位置中禁用 IPQoS 处理。

是否为动态

何时更改

要在任一标注位置中启用或禁用 IPQoS 处理时。

承诺级别

不稳定

SCTP 可调参数

sctp_max_init_retr

说明

控制 SCTP 端点在重新发送 INIT 块时应该进行的最大尝试次数。SCTP 端点可以使用 SCTP 启动结构覆盖此值。

缺省值

8


范围

0 到 128

是否为动态

何时更改

INIT 的重新传输数取决于 sctp_pa_max_retr。理论上,sctp_max_init_retr 应该小于或等于 sctp_pa_max_retr

承诺级别

不稳定

sctp_pa_max_retr

说明

控制 SCTP 关联的最大重新传输数(所有路径上的)。当超过此数值时,将中止 SCTP 关联。

缺省值

10


范围

1 到 128

是否为动态

何时更改

所有路径上的最大重新传输数取决于路径数以及每条路径上的最大重新传输数。理论上,应该将 sctp_pa_max_retr 设置为所有可用路径上的 sctp_pp_max_retr 之和(参见sctp_pp_max_retr)。例如,如果有 3 条通往目标的路径,并且这 3 条路径中每条路径上的最大重新传输数均为 5,则应该将 sctp_pa_max_retr 设置为小于或等于 15。(请参见 RFC 2960 的第 8.2 节中的注释。)

承诺级别

不稳定

sctp_pp_max_retr

说明

控制特定路径上的最大重新传输数。如果某条路径的重新传输数超过此数值,请将此路径(目标)视为不可访问。

缺省值

5


范围

1 到 128

是否为动态

何时更改

请不要将此值更改为小于 5 的值。

承诺级别

不稳定

sctp_cwnd_max

说明

控制 SCTP 关联的最大拥塞窗口值。

缺省值

1,048,576

范围

128 到 1,073,741,824

是否为动态

何时更改

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

承诺级别

不稳定

sctp_ipv4_ttl

说明

控制 SCTP 关联的外发 IPv4 包的 IPv4 数据包头中的生存时间 (time to live, TTL) 值。

缺省值

64


范围

1 到 255

是否为动态

何时更改

该值通常不需要更改。如果通往目标的路径可能跨越 64 个以上跃点,则考虑增大此参数。

承诺级别

不稳定

sctp_heartbeat_interval

说明

计算向空闲目标发送 HEARTBEAT 块的时间间隔,该间隔为心跳时间。

SCTP 端点定期发送 HEARTBEAT 块,以监视其对等方的空闲目标传输地址的可访问性。

缺省值

30 秒


范围

0 到 86,400 秒

是否为动态

何时更改

请参阅 RFC 2960 的第 8.3 节。

承诺级别

不稳定

sctp_new_secret_interval

说明

确定何时需要生成新的机密。生成的机密用于计算 cookie 的 MAC。

缺省值

2 分钟


范围

0 到 1,440 分钟

是否为动态

何时更改

请参阅 RFC 2960 的第 5.1.3 节。

承诺级别

不稳定

sctp_initial_mtu

说明

确定包括 IP 数据包头长度的 SCTP 包的初始最大发送大小。

缺省值

1500 字节


范围

68 到 65,535

是否为动态

何时更改

如果基础链接支持大于 1500 字节的帧大小,则增大此参数。

承诺级别

不稳定

sctp_deferred_ack_interval

说明

设置 SCTP 延迟确认 (acknowledgment, ACK) 计时器的超时值(以毫秒为单位)。

缺省值

100 毫秒


范围

1 到 60,000 毫秒

是否为动态

何时更改

请参阅 RFC 2960 的第 6.2 节。

承诺级别

不稳定

sctp_ignore_path_mtu

说明

启用或禁用路径 MTU 搜索。

缺省值

0(禁用)


范围

0(禁用)或 1(启用)

是否为动态

何时更改

如果要忽略路径上的 MTU 更改,则启用此参数。但是,如果路径 MTU 减少,则启用此参数可能会导致 IP 分段。

承诺级别

不稳定

sctp_initial_ssthresh

说明

设置对等方目标地址的初始慢速启动阈值。

缺省值

102,400


范围

1024 到 4,294,967,295

是否为动态

何时更改

请参阅 RFC 2960 的第 7.2.1 节。

承诺级别

不稳定

sctp_xmit_hiwat

说明

设置缺省的发送窗口大小(以字节为单位)。另请参见sctp_max_buf

缺省值

102,400


范围

8,192 到 1,073,741,824

是否为动态

何时更改

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

承诺级别

不稳定

sctp_xmit_lowat

说明

控制发送窗口大小的下限。

缺省值

8,192


范围

8,192 到 1,073,741,824

是否为动态

何时更改

该值通常不需要更改。此参数设置为了将套接字标记为可写而需要在发送缓冲区中包含的最小大小。如果需要,请考虑根据sctp_xmit_hiwat更改此参数。

承诺级别

不稳定

sctp_recv_hiwat

说明

控制缺省的接收窗口大小(以字节为单位)。另请参见sctp_max_buf

缺省值

102,400


范围

8,192 到 1,073,741,824

是否为动态

何时更改

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

承诺级别

不稳定

sctp_max_buf

说明

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

缺省值

1,048,576


范围

8,192 到 1,073,741,824

是否为动态

何时更改

如果要在高速网络环境中进行关联,则增大此参数的值以便适应较高的网络链接速度。

承诺级别

不稳定

sctp_ipv6_hoplimit

说明

设置 SCTP 关联的外发 IPv6 包的 IPv6 数据包头中的跃点限制值。

缺省值

60


范围

0 到 255

是否为动态

何时更改

该值通常不需要更改。如果通往目标的路径可能跨越 60 个以上跃点,则考虑增大此参数。

承诺级别

不稳定

sctp_rto_min

说明

设置对等方的所有目标地址的重新传输超时 (retransmission timeout, RTO) 下限(以毫秒为单位)。

缺省值

1,000


范围

500 到 60,000

是否为动态

何时更改

请参阅 RFC 2960 的第 6.3.1 节。

承诺级别

不稳定

sctp_rto_max

说明

控制对等方的所有目标地址的重新传输超时 (retransmission timeout, RTO) 上限(以毫秒为单位)。

缺省值

60,000


范围

1,000 到 60,000,000

是否为动态

何时更改

请参阅 RFC 2960 的第 6.3.1 节。

承诺级别

不稳定

sctp_rto_initial

说明

控制对等方的所有目标地址的初始重新传输超时 (retransmission timeout, RTO)(以毫秒为单位)。

缺省值

3,000


范围

1,000 到 60,000,000

是否为动态

何时更改

请参阅 RFC 2960 的第 6.3.1 节。

承诺级别

不稳定

sctp_cookie_life

说明

设置 cookie 的寿命(以毫秒为单位)。

缺省值

60,000


范围

10 到 60,000,000

是否为动态

何时更改

该值通常不需要更改。可以根据sctp_rto_max更改此参数。

承诺级别

不稳定

sctp_max_in_streams

说明

控制 SCTP 关联允许的最大传入流数。

缺省值

32


范围

1 到 65,535

是否为动态

何时更改

请参阅 RFC 2960 的第 5.1.1 节。

承诺级别

不稳定

sctp_initial_out_streams

说明

控制 SCTP 关联允许的最大外发流数。

缺省值

32


范围

1 到 65,535

是否为动态

何时更改

请参阅 RFC 2960 的第 5.1.1 节。

承诺级别

不稳定

sctp_shutack_wait_bound

说明

控制发送 SHUTDOWN 块之后等待 SHUTDOWN ACK 的最长时间(以毫秒为单位)。

缺省值

60,000


范围

0 到 300,000

是否为动态

何时更改

该值通常不需要更改。可以根据sctp_rto_max更改此参数。

承诺级别

不稳定

sctp_maxburst

说明

设置一次成组传送中发送的段数限制。

缺省值

4


范围

2 到 8

是否为动态

何时更改

不需要更改此参数,但可能为了进行测试而更改。

承诺级别

不稳定

sctp_addip_enabled

说明

启用或禁用 SCTP 动态地址重新配置。

缺省值

0(禁用)


范围

0(禁用)或 1(启用)

是否为动态

何时更改

如果需要动态地址重新配置,则可以启用此参数。出于安全考虑,只在进行测试时启用此参数。

承诺级别

不稳定

sctp_prsctp_enabled

说明

启用或禁用 SCTP 的部分可靠性扩展 (RFC 3758)。

缺省值

1(启用)


范围

0(禁用)或 1(启用)

是否为动态

何时更改

如果 SCTP 环境不支持部分可靠性,则禁用此参数。

承诺级别

不稳定

每路由度量标准

从 Solaris 8 发行版开始,可以使用每路由度量标准将某些属性与 IPv4 和 IPv6 路由表项进行关联。

例如,有一个系统配备了两个不同的网络接口:一个快速以太网接口和一个千兆位以太网接口。系统的缺省 tcp_recv_hiwat 为 24,576 字节。此缺省值对于快速以太网接口是足够了,但可能无法满足千兆位以太网卡接口的需求。

可以将不同的缺省 TCP 接收窗口大小关联到千兆位以太网接口路由项,而不是增大系统的 tcp_recv_hiwat 缺省值。通过进行此关联,所有通过此路由的 TCP 连接都将具有增大的接收窗口大小。

例如,以下是路由表 (netstat -rn) 中的项(采用 IPv4):


192.123.123.0        192.123.123.4         U        1      4  hme0

192.123.124.0        192.123.124.4         U        1      4  ge0

default              192.123.123.1         UG       1      8

在本示例中,执行以下操作:


# route change -net 192.123.124.0 -recvpipe x

然后,所有通往 ge0 链接上的 192.123.124.0 网络的连接都将使用接收缓冲区大小 x,而不使用缺省的接收窗口大小 24567

如果目标位于 a.b.c.d 网络中,并且不存在特定于此网络的路由项,则可以向此网络中添加前缀路由并更改度量标准。例如:


# route add -net a.b.c.d 192.123.123.1 -netmask w.x.y.z

# route change -net a.b.c.d -recvpipe y

请注意,此前缀路由的网关是缺省路由器。然后,所有通往此网络的连接都使用接收缓冲区大小 y。如果有多个接口,则使用 -ifp 参数指定要使用的接口。这样,可以控制将哪个接口用于特定的目标。要检验此度量标准,请使用 route(1M) get 命令。