sctpctrl 命令

用途

控制和配置 SCTP。

语法

sctpctrl { 加载 | 转储 | 设置 }

sctpctrl 统计 [重置 ] [时间间隔]

sctpctrl set {name=value|default [ 名称]}

sctpctrl get [名称 ]

描述

sctpctrl 命令用来控制和配置 SCTP 内核扩展。 此命令可用来装入和卸装 SCTP 内核扩展。 它还可以用来转储 SCTP 数据和集合,或者可以检索各种 SCTP 参数。 另外,sctpctrl 命令可以用来读取和重新设置特定于 SCTP 的网络统计信息。

参数

描述
load 如果未装入 SCTP 内核扩展,那么执行装入操作。
转储 有关内部 SCTP 结构的转储信息。
统计 [重置 ] [间隔] 显示 SCTP 统计信息。 reset 命令(可选)将清除(置零)统计信息。 如果添加了 interval 参数(以秒为单位),那么程序将不退出,但输出每隔 [interval] 秒的统计信息。
set {name=value|缺省值 [name]} 将 SCTP 可调参数设置为值。 如果指定了 default,那么它会将所有的可调参数设置为其缺省值。 如果在 default 的后面指定了可选 [name],那么它会将 name 描述的可调参数设置为其缺省值。
get [名称] 获取由可选 name 参数描述的该可调参数的值。 如果未指定 name 参数,那么它将获取所有可调参数的值。

可调参数

sctpctrl 命令还用于配置 SCTP 调整参数。 所做更改并不持久,在每次系统重新引导后必须重新设置。 下表中说明了可调参数。

描述
PARAMETER 用途 作用域 缺省值
sctp_low_rto 在非零时,该值将取代 RTO.min(retransmission 超时)。 该值以毫秒为单位指定。 不允许使用小于 200 的值。 可用超时值为 200、250、300、350,依此类推。 每次测量新 RTT(往返时间)以及由于数据包丢失而调整 RTO 时,都会检查该值。 按照 RFC 4960(请求注释)文档中的指定,这个可调参数的缺省值为 0,这意味着使用了 RTO.Min 的最小值,即 1 秒。
sctp_enable_shutdown_guard 非零时,此可调参数启用 T5 关闭保护定时器。 它与 RFC 不兼容,因为它在关联进入关闭暂挂状态时开始计时。 仅在关联关闭时检查该值。 此可调参数的缺省值为 0,这表示不使用 T5 关闭保护定时器。
sctp_最大初始化尝试次数 此可调参数指定允许重新传输 INIT 包的最大重新传输尝试次数。  

此可调参数的缺省值为 8。

sctp_最大初始化超时 当此可调参数的值非零时,将使用可调值来代替 INIT 包的 RTO.max 参数 (重新传输超时)。 它以毫秒为单位指定。 不允许小于 200 毫秒的值。 可用超时值为 200,250,300,350 等。 此可调参数指定重新传输 INIT 包时要使用的最大值。

此可调参数的缺省值为零秒。 在这种情况下,sctp_rttmax使用可调参数。

sctp_关闭_守护_定时器 sctp_enable_shutdown_guard 参数的值为非零时,此可调参数以秒为单位定义关闭超时值。 仅在关联关闭时检查该值。 缺省值为 300 秒,这是 RFC 为 T5 关闭保护定时器指定的值。
sctp_对等方路径变更 非零时,此可调参数根据从不同于当前主路径的路径传入的数据块,导致主路径改变。 仅在每个入站数据块上检查该值。 此可调参数的缺省值为 1,这时将保持现有行为。
sctp_消除噪声定时器 此可调参数以时钟滴答数(1 次滴答 = 50 毫秒)为单位,为 ACK 延迟定时器指定定时器值。 对于 ACCEPTCONN 套接字,在安装时确定该值,并对所有共享该套接字的关联使用该值。 对于 ACCEPTCONN 套接字之外的套接字,在创建关联时设置该值。 所以此可调参数的更改不影响已存在的关联。 缺省值为 4 次滴答(200 毫秒)。
sctp_丢弃间隙数据包 如果设置为 1,它会导致发送方从套接字发送缓冲区中删除所有 GAPACKED 数据包,从而为新数据包腾出一些空间。
注: 这是 RFC 不兼容的可调参数,可能会影响与其他实现的互操作性,可能导致消息丢失。
每次处理 GAPACKED 数据包时检查此可调参数。 缺省值为 0,表示禁用。
sctp_不延迟ACK 如果设置为 1,将为每个其他 DATA 数据包发送 SACK 数据包。 否则启动 ACK 延迟定时器。 对此可调参数的任何更新都会立即生效。 缺省值为 1。
sctp_nagle 如果设置为 1,它确保至少发送 1 MTU(最大传输单元)的数据。 对此可调参数的任何更新都会立即生效。 缺省值为 1(启用 nagle)。
sctp_最大突发长度 如果非零,会将发送出去的最大数据包数限制为该值。 对此可调参数的任何更新都会立即生效。 缺省值为 8 个数据包。
sctp_rttmax 此可调参数指定执行 RTO 计算时要使用的最大值。 sctp_low_rto 参数类似,该值在每次测量新 RTT(RTO 根据 RTT 进行计算)及因数据包丢失而调整 RTO 时均会进行检查。 缺省值为 60 秒。
sctp_rttmin 此可调参数指定执行 RTO 计算时要使用的最小值。 如果 sctp_low_rto 参数为非零,那么将忽略该值。 否则每次测量新 RTT 以及由于数据包丢失而停止 RTO 时,都会检查该值。 缺省值为 1 秒,确保最小 RTO 不低于该值。
sctp_关联最大错误数 此可调参数设置关联错误总计数。 如果错误计数超过该值,关联将终止。 目前忽略该值。 将根据路径错误计数和 faddrs 的数目计算 assoc_maxerr 参数。 对于 ACCEPTCONN 套接字,在安装时确定该值,并对所有共享该套接字的关联使用该值。 对于 ACCEPTCONN 套接字之外的套接字,在创建关联时设置该值。 所以此可调参数的更改不影响已存在的关联。 缺省值为 10。
sctp_路径_最大错误数 此可调参数设置每个目标的最大错误计数。 如果错误计数超过该值,将记下当前路径并选择备用路径。 对于 ACCEPTCONN 套接字,在安装时确定该值,并对所有共享该套接字的关联使用该值。 对于 ACCEPTCONN 套接字之外的套接字,在创建关联时设置该值。 所以此可调参数的更改不影响已存在的关联。 缺省值为 5。
sctp_use_checksum 此可调参数允许管理员使用不同的校验和计算方法。

可能的值如下:

  • 0:CRC32 校验和
  • 1:不计算校验和
  • 2:因特网校验和。
如果两个对等机使用了不同的值,将删除数据包。
将为每个传出和传入数据包检查此参数。 缺省值为 0,这是 RFC 指定的 CRC32 校验和。
sctp_发送空间 此可调参数为发送数据指定套接字缓冲区大小。 这个最佳缓冲区大小是由介质带宽和包平均来回时间确定。

optimum_window = 带宽 * average_round_trip_time

创建新关联时访问此参数。 可使用 setsockopt 参数覆盖此参数。 缺省值为 65536。
sctp接收空间 此可调参数为接收数据指定套接字缓冲区大小。 创建新关联时访问此参数。 可使用 setsockopt 参数覆盖此参数。 缺省值为 65536。
sctp_发送_少量数据包 启用时,此可调参数实现 recv side silly window avoidance。 在接收器可以容纳 1 MTU 的数据前,它一直可以阻止发送窗口更新。 每次应用程序读取数据以及发送窗口更新时,访问此参数。 缺省值为 0。
sctp_cookie_life 此可调参数以秒为单位指定 cookie 的有效期。 此参数用于在建立连接时确定 cookie 是否有效。 缺省值为 60 秒。
sctp_ecn 此可调参数启用或禁用显式拥塞通知 (RFC 3168)。 在建立连接时访问此参数。 缺省值为 1。
sctp_临时_高 此可调参数指定要为 SCTP(流控制传输协议)临时端口分配的最大端口号。 当应用程序尝试绑定到端口时使用此参数。 缺省值为 65535。
sctp_临时_低 此可调参数指定要为 SCTP 临时端口分配的最小端口号。 当应用程序尝试绑定到端口时使用此参数。 缺省值为 32768。
sctp_instreams 此可调参数指定关联所使用的入站流的缺省数目。 在建立连接时使用此参数。 缺省值为 2048。
sctp_输出流 此可调参数指定关联所使用的出站流的缺省数目。 在建立连接时使用此参数。 缺省值为 10。
sctp_pmtu_发现 如果启用了此项,那么在传出数据包的 IP 头中设置不分段位。 在发送数据包被发出时访问此参数。 缺省值为 1。
sctp_recv_multibuf 此可调参数控制套接字接收缓冲区计数。 缺省值为 0,表示属于套接字的所有关联共享相同的接收缓冲区空间。 当设置为非零时,每个关联具有自己的接收缓冲区空间,即该值。 setsockopt 函数覆盖该值。 在创建关联时访问此参数。 缺省值为 0(不使用 multibuf)。
sctp_发送多缓冲区 此可调参数控制套接字发送缓冲区计数。 缺省值为 0,表示属于套接字的所有关联共享相同的发送缓冲区空间。 当设置为非零时,每个关联具有自己的发送缓冲区空间,即该值。 setsockopt 函数覆盖该值。 在创建关联时访问此参数。 缺省值为 0(不使用 multibuf)。
sctp_故障转移类型 启用时,它会导致在每次重新发送超时后选择新路径。 否则,仅在路径错误计数值超过最大路径错误计数值后发生故障转移。 每次 RTO 启动时(发生数据包删除时)访问此参数。 缺省值为 1。
sctp_检查关联标识 在发送 ABORT 数据包时管理相关的模式以检查应用程序传递的关联标识。 如果设置为 0,它会忽略关联标识。 使用外部地址查找关联。 如果设置为 1,它会执行严格的关联标识匹配。 如果使用传递的 assoc_id 值找不到关联,那么将会返回 EINVAL 错误。 如果设置为 2,它会执行关联标识匹配,但在使用保留的 assoc_id 值时,它将使用外部地址。 每次用户应用程序发出 ABORT 数据包时,都会访问此参数。 缺省值为 0。

示例

  1. 要装入 SCTP 内核扩展,请输入以下内容:
    sctpctrl load
  2. 要重置 SCTP 统计信息,请输入以下内容:
    sctpctrl stats reset
    此命令将使所有的 SCTP 统计信息置零。
  3. 要获取 SCTP 可调参数值,请输入以下内容:
    sctpctrl get
    它将列出所有 SCTP 可调参数以及其值。 以下是样本输出。
    sctp_assoc_maxerr = 10
    sctp_cookie_life = 60
    sctp_delack_timer = 4
    sctp_dontdelayack = 1
    sctp_ecn = 1
    sctp_ephemeral_high = 65535
    sctp_ephemeral_low = 32768
    sctp_instreams = 2048
    sctp_maxburst = 8
    sctp_outstreams = 10
    sctp_path_maxerr = 5
    sctp_pmtu_discover = 1
    sctp_rttmax = 60
    sctp_rttmin = 1
    sctp_recvspace = 65536
    sctp_sendspace = 65536
    sctp_send_fewsacks = 0
  4. 要将 sctp_path_maxerr 设置为值 6,请输入以下内容:
    sctpctrl set sctp_path_maxerr=6 

位置

/usr/sbin/sctpctrl

文件

描述
/usr/sbin/sctpctrl 包含 sctpctrl 命令。
/usr/lib/drivers/sctp 包含 SCTP 内核扩展。