ADC

TCP 配置

NetScaler 设备的 TCP 配置可以在名为 TCP 配置文件的实体中指定,该实体是 TCP 设置的集合。然后,TCP 配置文件可以与想要使用这些 TCP 配置的服务或虚拟服务器相关联。

默认 TCP 配置文件可以配置为设置默认情况下将应用于所有服务和虚拟服务器的 TCP 配置。

注意:

当 TCP 参数对于服务、虚拟服务器和全局具有不同的值时,最特定的实体(服务)的值将被赋予最高优先级。NetScaler 设备还提供了其他配置 TCP 的方法。

支持的 TCP 配置

NetScaler 设备支持以下 TCP 功能:

根据 RFC 5961 防御 TCP 免受欺骗攻击

NetScaler 支持 RST 窗口衰减和 SYN 欺骗保护方法来保护 TCP 免受欺骗攻击,并且符合 RFC 4953。

从 NetScaler 14.1-4.x 版本开始,NetScaler 符合 RFC 5961,后者可以更好地防御 TCP 欺骗攻击。NetScaler 符合 RFC 5961 标准,除了 RST 窗口衰减和 SYN 欺骗保护外,还提供以下功能:

  • 降低无效数据注入的可能性。
  • 允许对 NetScaler 每秒发送的质询 ACK 响应数量施加限制。

默认情况下,RFC 5961 合规性处于禁用状态。您可以使用 CLI 或 GUI 将其启用。有关更多信息,请参阅 防御 TCP 免受欺骗攻击

显式拥堵通知 (ECN)

设备将网络拥塞状态通知发送给数据的发送方,并针对数据拥塞或数据损坏采取纠正措施。ECN 的 NetScaler 实施符合 RFC 3168 标准。

使用时间戳选项进行往返时间测量 (RTTM)

要使 TimeStamp 选项工作,至少必须有一个连接端(客户端或服务器)支持该选项。该 TimeStamp 选项的 NetScaler 实施符合 RFC 1323 标准。

检测虚假重传输

这种检测可以使用 TCP 重复选择性确认 (D-SACK) 和正向 RTO 恢复 (F-RTO) 来完成。如果存在虚假的重新传输,拥塞控制配置将恢复到原始状态。D-SACK 的 NetScaler 实现符合 RFC 2883 标准,F-RTO 符合 RFC 5682 标准。

拥塞控制

此功能使用 New-Reno、BIC、CUBIC、NILE和 TCP 韦斯特伍德算法。

窗口缩放

这将 TCP 接收 窗口大小增加到其最大值 65,535 个字节之外。

配置窗口缩放之前要考虑的要点

  • 您没有为比例因子设置较高的值,因为这可能会对设备和网络产生不利影响。
  • 除非清楚地知道为什么要更改窗口大小,否则不能配置窗口缩放。
  • TCP 连接中的两台主机在连接建立期间发送窗口缩放选项。如果连接只有一侧设置此选项,则不会对连接使用窗口缩放。
  • 同一会话的每个连接都是独立的窗口扩展会话。例如,当客户端的请求和服务器的响应流经设备时,可以在客户端和设备之间进行窗口缩放,而无需在设备和服务器之间缩放窗口。

TCP 最大拥塞窗口

窗口大小是用户可配置的。默认值为 8190 个字节。

选择性确认 (SACK)

这使用数据接收器(NetScaler 设备或客户端)向发件人通知已成功接收的所有区段。

转发确认 (FACK)

此功能通过明确测量网络中未完成的数据字节总数,并帮助发件人(NetScaler 或客户端)控制在重传超时期间注入网络的数据量,从而避免 TCP 拥塞。

TCP 连接多路复用

此功能可以重复使用现有 TCP 连接。NetScaler 设备存储到重用池的已建立的 TCP 连接。每当收到客户端请求时,设备都会检查重用池中是否有可用连接,如果连接可用,则为新客户端提供服务。如果不可用,设备将为客户端请求创建连接,并存储与重用池的连接。NetScaler 支持 HTTP、SSL 和 DataStream 连接类型的连接多路复用。

动态接收缓冲

这允许根据内存和网络条件动态调整接收缓冲区。

MPTCP 连接

客户端和 NetScaler 之间的 MPTCP 连接。NetScaler 和后端服务器之间不支持 MPTCP 连接。MPTCP 的 NetScaler 实现符合 RFC 6824 标准。

您可以使用命令行界面查看 MPTCP 统计信息,例如活动的 MPTCP 连接和活动子流连接。

在命令提示窗口中,键入以下命令之一以显示 MPTCP 统计信息的摘要或详细摘要,或清除统计信息显示:

  1. Stat MPTCP
  2. Stat mptcp –detail
  3. Clearstats basic

注意:

要建立 MPTCP 连接,客户端和 NetScaler 设备必须支持相同的 MPTCP 版本。如果您使用 NetScaler 设备作为服务器的 MPTCP 网关,则服务器不必支持 MPTCP。当客户端启动新的 MPTCP 连接时,设备会从 SYN 数据包中的 MP_CAPABALE 选项识别客户端的 MPTPC 版本。如果客户端的版本高于设备支持的版本,则设备会在 SYN-ACK 数据包的 MP_CAPABALE 选项中显示其最高版本。然后,客户端回退到较低的版本,并在 ACK 数据包的 MP_CAPABALE 选项中发送版本号。如果该版本是可支持的,设备将继续 MPTCP 连接。否则,设备会回退到普通 TCP。NetScaler 设备不会启动子流(MP_JOIN)。设备期望客户端启动子流。

在 MPTCP 中支持额外的地址广告 (ADD_ADDR)

在 MPTCP 部署中,如果您的虚拟服务器绑定了具有其他虚拟服务器 IP 地址的 IP 集,则附加地址通告 (ADD_ADDR) 功能会通告绑定到该 IP 集的虚拟服务器的 IP 地址。客户端可以启动额外的 MP-JOIN 子流到通告的 IP 地址。

关于 MPTCP ADD_ADDR 功能要记住的要点

  • 作为 ADD_ADDR 选项的一部分,您最多可以发送 10 个 IP 地址。如果有 10 个以上的 IP 地址启用了 mptcpAdvertise 参数,则在宣传 10 个 IP 地址之后,设备将忽略其余的 IP 地址。
  • 如果将支持 MP-CAPABLE 子流创建到 IP 集中的一个 IP 地址而不是主虚拟服务器 IP 地址,则虚拟服务器 IP 地址如果为虚拟服务器 IP 地址启用了 mptcpAdvertise 参数,则会通告虚拟服务器 IP 地址

配置更多地址通告 (ADD_ADDR) 功能,以便使用 CLI 播发其他 VIP 地址

您可以为 IPv4 和 IPv6 地址类型配置 MPTCP ADD_ADDR 功能。一般来说,可以将多个 IPv4 和 IPv6 IP 附加到单个 IP 集,并且可以在任何 IP 地址子集上启用该参数。在 ADD_ADDR 功能中,只播发启用了“mptcpAdvertise”选项的 IP 地址,而忽略该 IP 集中的剩余 IP 地址。 完成以下步骤来配置该 ADD_ADDR 功能:

  1. 添加 IP 集。
  2. 添加启用 MPTCP 广告的虚拟服务器 IP (VIP) 类型的 IP 地址。
  3. 将 IP 地址与 IP 集绑定。
  4. 使用负载平衡虚拟服务器配置 IP 集。

添加 IP 集

在命令提示符下,键入:

add ipset <name> [-td <positive_integer>]
<!--NeedCopy-->

示例:

add ipset ipset_1
<!--NeedCopy-->

在启用 MPTCP 广告的情况下添加虚拟服务器 IP (VIP) 类型的 IP 地址

在命令类型中:

add ns ip <IPAddress>@ <netmask> [-mptcpAdvertise ( YES | NO )] -type <type>
<!--NeedCopy-->

示例:

add ns ip 10.10.10.10 255.255.255.255 -mptcpAdvertise YES -type VIP

将 IP 地址绑定到 IP 集

在命令提示符下,键入:

bind ipset <name> <IPAddress>
<!--NeedCopy-->

示例:

bind ipset ipset_1 10.10.10.10

将 IP 设置配置为负载平衡虚拟服务器

在命令提示符下,键入:

set lb vserver <name> [-ipset  <string>]
<!--NeedCopy-->

示例:

set lb vserver lb1 -ipset ipset_1
<!--NeedCopy-->

示例配置:

Add ipset ipset_1
add ns ip 10.10.10.10 255.255.255.255 -mptcpAdvertise YES -type VIP
bind ipset ipset_1 10.10.10.10
set lb vserver lb1 -ipset ipset_1
<!--NeedCopy-->

使用 ADD_ADDR 功能配置广告外部 IP 地址

如果播发的 IP 地址归外部实体所有,并且 NetScaler 设备需要通告 IP 地址,则必须在禁用状态和 ARP 参数的情况下启用“MPTCPAdvertise”参数。

完成以下步骤以配置 ADD_ADDR 用于宣传外部 IP 地址。

  1. 添加启用 MPTCP 广告的虚拟服务器 IP (VIP) 类型的 IP 地址。
  2. 将 IP 地址与 IP 集绑定。
  3. 将 IP 集与负载平衡虚拟服务器绑定

添加启用了 MPTCP 通告的虚拟服务器 IP (VIP) 类型的外部 IP 地址

在命令提示符下,键入:

add ns ip <IPAddress>@ <External-IP-mask -type VIP> [-mptcpAdvertise ( YES | NO )] -type <type> -state DISABLED -arp DISABLED
<!--NeedCopy-->

示例:

add ns ip 10.10.10.10 255.255.255.255 -mptcpAdvertise YES -type VIP -state DISABLED -arp DISABLED

将 IP 地址绑定到 IP 集

在命令提示符下,键入:

bind ipset <name> <IPAddress>
<!--NeedCopy-->

示例:

bind ipset ipset_1 10.10.10.10

将 IP 设置配置为负载平衡虚拟服务器

在命令提示符下,键入:

set lb vserver <name> [-ipset  <string>]
<!--NeedCopy-->

示例:

set lb vserver lb1 -ipset ipset_1

示例配置:

add ns ip 10.10.10.10 255.255.255.255 -mptcpAdvertise YES -type VIP state DISABLED -arp DISABLED
bind ipset ipset_1 10.10.10.10
set lb vserver lb1 -ipset ipset_1
<!--NeedCopy-->

使用 NetScaler GUI 向启用 MPTCP 的客户端通告 IP 地址

完成以下步骤,将 IP 地址通告给启用了 MPTCP 的客户端:

  1. 导航到“系统”>“网络”>“IP”。
  2. 在详细信息窗格中,单击“添加”。
  3. 创建 IP 地址 页面中,选中 MPTCP 播 发复选框以设置参数。默认情况下,它处于禁用状态。

提取 TCP/IP 路径叠加选项并插入客户端 IP HTTP 标头

提取 TCP/IP 路径叠加并插入客户端-IP HTTP 头。通过覆盖网络传输的数据通常使用连接终止或网络地址转换 (NAT),其中源客户端的 IP 地址将丢失。为避免这种情况,NetScaler 设备提取 TCP/IP 路径叠加选项,然后将源客户端的 IP 地址插入到 HTTP 标头中。使用标头中的 IP 地址,Web 服务器可以识别建立连接的源客户端。提取的数据在 TCP 连接的生命周期内有效,因此,这可以防止下一跳主机再次解释该选项。此选项仅适用于已启用客户端-IP 插入选项的 Web 服务。

TCP 分段卸载

将 TCP 分段卸载到 NIC。如果将选项设置为“自动”,则如果支持 NIC,TCP 分段将卸载到 NIC。

这用于抵抗 SYN 洪水攻击。您可以启用或禁用与客户端进行 TCP 握手的 SYNCOOKIE 机制。禁用 SYNCOOKIE 可防止 NetScaler 设备上的 SYN 攻击保护。

学习 MSS,为设备上配置的所有虚拟服务器启用 MSS 学习

支持的 TCP 参数

下表提供了 TCP 参数及其默认值的列表:

|参数|默认值|说明| |— |— |— | |窗口管理| |TCP 延迟答复计时器|100 毫秒|TCP 延迟 ACK 的超时时间(以毫秒为单位)。| |TCP 最低重传超时 (RTO) 以毫秒为单位|1000 毫秒|最小重新传输超时(以毫秒为单位),以 10 毫秒的增量指定(如果除以 10,则值必须产生整数)| |启动保持活动状态探测前的连接空闲时间|900 秒|在空闲超时时默默地删除 TCP 建立的连接在空闲超时时建立的连接| |TCP 时间戳选项|已禁用|时间戳选项允许精确的 RTT 测量。启用或禁用 TCP 时间戳选项。| |多路径 TCP 会话超时|0 秒|MPTCP 会话超时(以秒为单位)。如果未设置此值,则空闲。MPTCP 会话在虚拟服务器的客户端空闲超时之后刷新。| |在空闲超时时静默删除半关闭的连接|0 秒|在空闲超时时默默地丢弃 TCP 一半关闭的连接。| |在空闲超时时默默删除已建立的连接|已禁用|在空闲超时时默默删除 TCP 建立的连接| |内存管理| |TCP 缓冲区大小|131072 字节|TCP 缓冲区大小是 NetScaler 上的接收缓冲区大小。此缓冲区大小会公布到 NetScaler 的客户端和服务器,并控制其向 NetScaler 发送数据的能力。默认缓冲区大小为 8K,通常在与内部服务器群交谈时可以安全地增加此大小。缓冲区大小也受 NetScaler 中实际应用层的影响,例如对于 SSL 终端节点情况,缓冲区大小设置为 40 K,对于压缩设置为 96 K。 **注意:** 必须设置缓冲区大小参数才能进操作态调整。| |TCP 发送缓冲区大小|8190 个字节|TCP 发送缓冲区大小| |TCP 动态接收缓冲|已禁用|启用或禁用动态接收缓冲。启用后,它允许根据内存和网络条件动态调整接收缓冲区。**注意:** 必须设置缓冲区大小参数才能进操作态调整| |TCP 最大拥塞窗口 (CWND)|524288 个字节|TCP 最大拥塞窗口| |窗口缩放状态|启用|启用或禁用窗口缩放。| |窗口缩放因子|8|用于计算新窗口大小的因子。仅当启用窗口缩放时才需要此参数。| |连接设置| |保持活动状态探针|已禁用|定期发送 TCP 保持活动状态 (KA) 探测器以检查对等体是否仍在启动。| |启动保持活动状态探测前的连接空闲时间|900 秒|在发送保持活动状态 (KA) 探测之前,连接处于空闲状态的持续时间(以秒为单位)。| |保持活动状态探测间隔|75 秒|如果对等体没有响应,则在下一个保持活动状态 (KA) 探测之前的时间间隔(以秒为单位)。| |断开连接之前要错过的最大保持活动状态探测器。|3|假设对等体关闭之前,未确认时要发送的保持活动状态 (KA) 探测器的数量。| |RFC 5961 合规性| 已禁用 | 启用 RFC 5961 合规性以防止欺骗。启用后,可提供 RST 窗口衰减和 SYN 欺骗保护,还允许您控制 NetScaler 发送的质询 ACK 数量。请注意,要使 RFC 5961 合规性功能正常运行,必须同时禁用 RST 窗口衰减和 SYN 欺骗保护。| |RST 窗口衰减(欺骗保护)。|已禁用|启用或禁用 RST 窗口衰减以防止欺骗。启用后,当序列号无效时,回复将使用纠正 ACK。| |接受具有最后确认序列号的 RST。|已启用| |数据传输| |在推送数据包上立即确认|已启用|在收到带有 PUSH 标志的 TCP 数据包时立即发送肯定确认 (ACK)。| |每个 MSS 的最大数据包|0|TCP 数据段中允许的最大八位字节数| |Nagle 的算法|已禁用|Nagle 的算法解决了 TCP 传输中的小数据包问题。Telnet 和其他实时引擎等应用程序需要将每次按键传递给另一端的应用程序通常会创建小数据包。使用 Nagle 的算法,NetScaler 可以缓冲这样的小数据包,并将它们发送在一起,以提高连接效率。此算法需要与 NetScaler 中的其他 TCP 优化技术一起使用。| |突发中允许的最大 TCP 段|10 MSS|突发中允许的最大 TCP 数据段数| |要排队的最大无序数据包|300|无序数据包队列的最大大小。值 0 表示没有限制| |拥塞控制| |TCP 风味|CUBIC| |初始拥塞窗口 (cwnd) 设置|4 MSS|指向服务器的 TCP 链路上可以未处理的 TCP 数据包数的初始最大上限| |TCP 显式拥塞通知 (ECN)|已禁用|显式拥塞通知 (ECN) 在不丢弃数据包的情况下提供网络拥塞的端到端通知。| |TCP 最大拥塞窗口 (CWND)|524288 个字节|TCP 维护拥塞窗口 (CWND),限制了端到端可能在传输中的未确认数据包的总数。在 TCP 中,拥塞窗口是决定随时可以未完成的字节数的因素之一。拥塞窗口是阻止发送方和接收方之间的链路因流量过载而过载的一种手段。它的计算方法是估计链路上有多少拥堵。| |TCP 混合启动 (HyStart)|8 字节| |TCP 最低重传超时 (RTO) 以毫秒为单位|1000|以 10 毫秒为增量指定的最小重传超时(以毫秒为单位)(如果除以 10,则值必须产生整数)。| |TCP dupack 阈值|已禁用| |突发率控制|3|TCP 突发率控制已禁用/固定/动态。固定需要设置 TCP 费率| |TCP 费率|已禁用|TCP 连接有效负载发送速率(Kb/s)| |TCP 速率最大队列|0|使用 BurstRateControl 时的最大连接队列大小(以字节为单位)。| |MPTCP| |多路径 TCP|已禁用|多路径 TCP (MPTCP) 是常规 TCP 的一组扩展,用于提供多路径 TCP 服务,该服务使传输连接能够同时跨多条路径运行。| |多路径 TCP 丢弃预先建立的子流上的数据|已禁用|启用或禁用静默删除预建子流中的数据。启用后,DSS 数据包将静默丢弃,而不是在预先建立的子流上接收数据时丢弃连接。| |多路径 TCP 快速开放|已禁用|启用或禁用多路径 TCP fastopen。启用后,在收到 SYN 握手的第三个答案之前,将接受 DSS 数据包。| |多路径 TCP 会话超时|0 秒|MPTCP 会话超时(以秒为单位)。如果未设置此值,则在虚拟服务器的客户端空闲超时之后刷新空闲 MPTCP 会话。| |安全性| |SYN 欺骗防护|已禁用|启用或禁用丢弃无效的 SYN 数据包以防止欺骗。禁用后,在收到 SYN 数据包时重置已建立的连接。| |TCP Syncookie|已禁用|这用于抵抗 SYN 洪水攻击。启用或禁用与客户端进行 TCP 握手的 SYNCOOKIE 机制。禁用 SYNCOOKIE 可防止 NetScaler 设备上的 SYN 攻击保护。| |损失检测和恢复| |复制选择性确认 (DSACK)|已启用|NetScaler 设备使用重复选择性确认 (DSACK) 来确定是否错误地发送了重新传输。| |转发 RTO 恢复 (FRTO)|已启用|检测虚假的 TCP 重新传输超时。在重新传输由超时触发的第一个未确认的段后,TCP 发送方的算法会监视传入的确认,以确定超时是否是虚假的。然后,它决定是发送新的区段还是重新传输未确认的区段。该算法有效地有助于避免另一次不必要的重新传输,从而在虚假超时的情况下提高 TCP 性能。| |TCP 转发确认 (FACK)|已启用|启用或禁用 FACK(向前确认)。| |选择性确认 (SACK) 状态|已启用|TCP SACK 解决了多个数据包丢失的问题,这会降低整体吞吐容量。通过选择性确认,接收方可以将成功接收的所有区段通知发件人,从而使发件人只能重新传输丢失的区段。此技术有助于 NetScaler 提高总吞吐量并减少连接延迟。| |每次重传的最大数据包数|1|允许 NetScaler 控制一次性要重新传输的数据包数。当 NetScaler 收到部分确认并且必须进行重新传输时,将考虑此设置。这不会影响基于 RTO 的重新传输。| |TCP 延迟答复计时器|100 毫秒|TCP 延迟 ACK 的超时时间(以毫秒为单位)| |TCO 优化| |TCP 优化模式|透明的|TCP 优化模式透明度/终端| |应用自适应 TCP 优化|已禁用|应用自适应 TCP 优化| |TCP 分段卸载|自动|将 TCP 分段卸载到 NIC。如果设置为自动,则 TCP 分段将卸载到网卡(如果网卡支持)。| |ACK 聚合|已禁用|启用或禁用 ACK 聚合| |TCP 时间等待(或 Time_wait)|40 秒|释放已关闭的 TCP 连接之前有时间过去| |在 RST 上取消链接客户端和服务器 |已禁用|如果存在客户端和服务器连接,则断开连接 未完成的数据将发送给另一方。|

注意:

启用 HTTP/2 后,Citrix 建议您在 TCP 配置文件中禁用 TCP 动态接收缓冲参数。

设置全局 TCP 参数

NetScaler 设备允许您为适用于所有 NetScaler 服务和虚拟服务器的 TCP 参数指定值。这可以通过以下方式完成:

  • 默认 TCP 配置文件
  • 全局 TCP 命令
  • TCP 缓冲功能

备注:

  • 自 9.2 版以后,set ns tcpParam 命令的 recvBuffSize 参数已被弃用。在以后的版本中,使用 set ns tcpProfile 命令的 bufferSize 参数来设置缓冲区大小。如果升级到已弃用 recvBuffSize 参数的版本,则该 bufferSize 参数将设置为默认值。

  • 配置 TCP 配置文件时,请确保 TCP buffersize 参数小于或等于 httppipelinebuffersize 参数。 如果 TCP 配置文件中的 buffersize 参数大于 HTTP 配置文件中的 httppipelinebuffersize 参数,则 TCP 负载可能会累积并超过 HTTP 管道缓冲区的大小。这会导致 NetScaler 设备重置 TCP 连接。

默认 TCP 配置文件

名为 nstcp_default_profile的 TCP 配置文件用于指定在服务或虚拟服务器级别没有提供 TCP 配置时使用的 TCP 配置。

备注:

  • 并非所有 TCP 参数都可以通过默认的 TCP 配置文件进行配置。某些设置必须使用全局 TCP 命令执行(请参阅下面的部分)。

  • 默认配置文件不必明确绑定到服务或虚拟服务器。

配置默认 TCP 配置文件

  • 使用命令行界面,在命令提示符处输入:

     set ns tcpProfile nstcp_default_profile...
     <!--NeedCopy-->
    
  • 在 GUI 上,导航到系统 > 配置文件,单击 TCP 配置文件并更新 nstcp_default_profile。

全局 TCP 命令

可以用来配置全局 TCP 参数的另一种方法是全局 TCP 命令。除了一些唯一的参数之外,此命令还复制了一些可以使用 TCP 配置文件设置的参数。对这些重复参数所做的任何更新都会反映在默认 TCP 配置文件中的相应参数中。

例如,如果使用此方法更新了 SACK 参数,则该值将反映在默认 TCP 配置文件 (nstcp_default_profile) 的 SACK 参数中。

注意:

Citrix 建议您仅对默认 TCP 配置文件中不可用的 TCP 参数使用此方法。

配置全局 TCP 命令

  • 使用命令行界面,在命令提示符处输入:

     set ns tcpParam …
     <!--NeedCopy-->
    
  • 在 GUI 上,导航到“系统”>“设置”,单击“更 改 TCP 参数”,然后更新所需的 TCP 参数。

TCP 缓冲功能

NetScaler 提供了一种名为 TCP 缓冲的功能,您可以使用该功能来指定 TCP 缓冲区大小。该功能可以在全局或在服务级别启用。

注意:

还可以在默认 TCP 配置文件中配置缓冲区大小。如果缓冲区大小在 TCP 缓冲功能和默认 TCP 配置文件中具有不同的值,则应用较大的值。

全局配置 TCP 缓冲功能

  • 在命令提示符下输入:

    enable ns mode TCPB

    set ns tcpbufParam -size <positiveInteger> -memLimit <positiveInteger>

  • 在 GUI 上,导航到 系统 > 设置,单击 配置模式 ,然后选择 TCP 缓冲

    然后,导航到“系统”>“设置”,单击“更改 TCP 参数”,指定 缓冲区大小内存使用限制的值。

设置服务或虚拟服务器特定的 TCP 参数

使用 TCP 配置文件,可以为服务和虚拟服务器指定 TCP 参数。您必须定义 TCP 配置文件(或使用内置 TCP 配置文件)并将该配置文件与适当的服务和虚拟服务器关联。

注意:

您还可以根据自己的要求修改默认配置文件的 TCP 参数。

您可以使用 TCP 缓冲功能指定的参数在服务级别指定 TCP 缓冲区大小。

使用命令行界面指定服务或虚拟服务器级别的 TCP 配置

在命令提示符处,执行以下操作:

  1. 配置 TCP 配置文件。

    set ns tcpProfile <profile-name>...
    <!--NeedCopy-->
    
  2. 将 TCP 配置文件绑定到服务或虚拟服务器。

   set service <name> ....
   <!--NeedCopy-->

示例:

> set service service1 -tcpProfileName profile1

将 TCP 配置文件绑定到虚拟服务器:

set lb vserver <name> ....
<!--NeedCopy-->

示例

> set lb vserver lbvserver1 -tcpProfileName profile1
<!--NeedCopy-->

使用 GUI 指定服务或虚拟服务器级别的 TCP 配置

在 GUI 上,执行以下操作:

  1. 配置 TCP 配置文件。

    导航到 系统 > 配置文件 > TCP 配置文件,然后创建 TCP 配置文件。

  2. 将 TCP 配置文件绑定到服务或虚拟服务器。

    导航到“流量管理”>“负载平衡”>“服务/虚拟服务器”,然后创建 TCP 配置文件,该配置文件应绑定到服务或虚拟服务器。

内置 TCP 配置文件

为了方便配置,NetScaler 提供了一些内置的 TCP 配置文件。查看以下内置配置文件,然后选择一个配置文件并按原样使用,或者对其进行修改以满足您的要求。您可以将这些配置文件绑定到所需的服务或虚拟服务器。

内置配置文件 说明
nstcp_default_profile 表示设备上的默认全局 TCP 设置。
nstcp_default_tcp_lan 对于后端服务器连接非常有用,这些服务器与设备位于同一局域网上。
nstcp_default_WAN 对于 WAN 部署很有用。
nstcp_default_tcp_lan_thin_stream 类似于 nstcp_default_tcp_lan 配置文件。但是,这些设置将调整为小规模的数据包流。
nstcp_default_tcp_interactive_stream 类似于 nstcp_default_tcp_lan 配置文件。但是,它的延迟 ACK 计时器和 PUSH 数据包 设置上的确认减少。
nstcp_default_tcp_lfp 对于客户端的长胖管网络 (WAN) 非常有用。长胖管网络具有长时间的延迟、高带宽线路,最小的数据包丢失。
nstcp_default_tcp_lfp_thin_stream 类似于 nstcp_default_tcp_lfp 配置文件。但是,这些设置是针对小型数据包流进行了调整的。
nstcp_default_tcp_lnp 对于客户端的长窄管网络 (WAN) 很有用。长的窄管网络偶尔会有相当大的数据包丢失。
nstcp_default_tcp_lnp_thin_stream 类似于 nstcp_default_tcp_cp_lnp 配置文件。但是,这些设置是针对小型数据包流进行了调整的。
nstcp_internal_apps 对于设备上的内部应用程序(例如,GSLB 站点同步)非常有用。其中包含针对所需应用程序的调整窗口缩放和 SACK 选项。此配置文件不应绑定到内部应用程序以外的其他应用程序。
nstcp_default_Mobile_profile 对移动设备很有用。
nstcp_default_XA_XD_profile 对于 Citrix Virtual Apps and Desktops 部署非常有用。

示例 TCP 配置

用于配置以下内容的示例命令行界面示例:

防御 TCP 免受欺骗攻击

在 RFC 5961 之前,合规性支持

要使用 CLI 启用 RST 窗口衰减和 SYN 欺骗保护,请执行以下操作:

> set ns tcpProfile profile1 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED
    Done
 > set lb vserver lbvserver1 -tcpProfileName profile1
    Done
<!--NeedCopy-->

要使用 GUI 启用 RST 窗口衰减和 SYN 欺骗保护,请执行以下操作:

  1. 导航到“系统”>“配置文件”>“TCP 配置文件”,然后单击“添加”创建 TCP 配置文件。
  2. 选择 RST 窗口衰减SYN欺骗保护。
  3. 单击 Create(创建)。

从 NetScaler 版本 14.1-4.x 开始,支持 RFC 5961 合规性

要使用 CLI 启用 RFC 5961 合规性,请执行以下操作:

> set ns tcpProfile profile1 -rstWindowAttenuate DISABLED -spoofSynDrop DISABLED -rfc5961Compliance ENABLED
    Done
> set lb vserver lbvserver1 -tcpProfileName profile1
    Done
<!--NeedCopy-->

要对每秒允许的质询 ACK 数量施加限制,请启用以下 rfc5961ChallengeAckLimit 参数:

> set ns tcpParam -rfc5961ChlgAckLimit 100
 Done
<!--NeedCopy-->

要使用 GUI 启用 RFC 5961 合规性,请执行以下操作:

  1. 导航到“系统”>“配置文件”>“TCP 配置文件”,然后单击“添加”创建 TCP 配置文件。
  2. 清除 RST 窗口衰减SYN欺骗保护。
  3. 选择“RFC5961 合规性”,然后单击“创建”。
  4. 导航到“系统”>“设置”>“更改 TCP 参数”。
  5. RFC5961 Chlg Ack Limit 中输入一个值,然后单击“确定”。

显式拥堵通知 (ECN)

在所需的 TCP 配置文件上启用 ECN。

    > set ns tcpProfile profile1 -ECN ENABLED
    Done
    > set lb vserver lbvserver1 -tcpProfileName profile1
    Done
<!--NeedCopy-->

选择性确认 (SACK)

在所需的 TCP 配置文件上启用 SACK。

    > set ns tcpProfile profile1 -SACK ENABLED
    Done
    > set lb vserver lbvserver1 -tcpProfileName profile1
    Done
<!--NeedCopy-->

转发确认 (FACK)

在所需的 TCP 配置文件上启用 FACK。

> set ns tcpProfile profile1 -FACK ENABLED
> set lb vserver lbvserver1 -tcpProfileName profile1
<!--NeedCopy-->

窗口缩放 (WS)

启用窗口缩放并在所需的 TCP 配置文件上设置窗口缩放因子。

set ns tcpProfile profile1 –WS ENABLED –WSVal 9
Done
set lb vserver lbvserver1 -tcpProfileName profile1
Done
<!--NeedCopy-->

最大分段大小 (MSS)

更新 MSS 相关的配置。

> set ns tcpProfile profile1 –mss 1460 - maxPktPerMss 512
Done
> set lb vserver lbvserver1 -tcpProfileName profile1
Done
<!--NeedCopy-->

NetScaler 学习虚拟服务器的 MSS

使 NetScaler 能够了解 VSS 并更新其他相关配置。

> set ns tcpParam -learnVsvrMSS ENABLED –mssLearnInterval 180 -mssLearnDelay 3600
Done
<!--NeedCopy-->

TCP 保持活动状态

启用 TCP 保持活动状态并更新其他相关配置。

> set ns tcpProfile profile1 –KA ENABLED –KaprobeUpdateLastactivity ENABLED -KAconnIdleTime 900 -KAmaxProbes 3 -KaprobeInterval 75 Done > set lb vserver lbvserver1 -tcpProfileName profile1 Done

缓冲区大小-使用 TCP 配置文件

指定缓冲区大小。

> set ns tcpProfile profile1 –bufferSize 8190 Done > set lb vserver lbvserver1 -tcpProfileName profile1 Done

缓冲区大小-使用 TCP 缓冲功能

启用 TCP 缓冲功能(全局或服务),然后指定缓冲区大小和内存限制。

> enable ns feature TCPB Done > set ns tcpbufParam -size 64 -memLimit 64 Done

MPTCP

启用 MPTCP,然后设置可选的 MPTCP 配置。

> set ns tcpProfile profile1 -mptcp ENABLED Done > set ns tcpProfile profile1 -mptcpDropDataOnPreEstSF ENABLED -mptcpFastOpen ENABLED -mptcpSessionTimeout 7200 Done > set ns tcpparam -mptcpConCloseOnPassiveSF ENABLED -mptcpChecksum ENABLED -mptcpSFtimeout 0 -mptcpSFReplaceTimeout 10 -mptcpMaxSF 4 -mptcpMaxPendingSF 4 -mptcpPendingJoinThreshold 0 -mptcpRTOsToSwitchSF 2 -mptcpUseBackupOnDSS ENABLED Done

拥塞控制

设置所需的 TCP 拥塞控制算法。

set ns tcpProfile profile1 -flavor Westwood Done > set lb vserver lbvserver1 -tcpProfileName profile1 Done

动态接收缓冲

在所需的 TCP 配置文件上启用动态接收缓冲。

> set ns tcpProfile profile1 -dynamicReceiveBuffering ENABLED Done > set lb vserver lbvserver1 -tcpProfileName profile1 Done

在多路径 TCP (MPTCP) 中支持 TCP 快速打开 (TFO)

NetScaler 设备现在支持 TCP 快速开放 (TFO) 机制,用于建立多路径 TCP (MPTCP) 连接并加快数据传输速度。该机制允许在 SYN 和 SYN-ACK 数据包中初始 MPTCP 连接握手期间传输子流数据,并允许接收节点在 MPTCP 连接建立过程中使用数据。

有关更多信息,请参阅 TCP 快速打开 主题。

NetScaler 设备现在可以配置 TCP 配置文件中最小大小为 4 字节且最大大小为 16 个字节的可变长度 TCP 快速开放 (TFO) cookie。通过这样做,设备可以使用 SYN-ACK 数据包中配置的 TFO cookie 大小响应客户端。

使用命令行界面在 TCP 配置文件中配置 TCP 快速开放 (TFO) cookie

在命令提示符下,键入:

set tcpProfile nstcp_default_profile -tcpFastOpenCookieSize <positive_integer>

示例

set tcpProfile nstcp_default_profile -tcpFastOpenCookieSize 8

使用 GUI 在 TCP 配置文件中配置 TCP 快速开放 (TFO) cookie

  1. 导航到配置 > 系统 > 配置文件。
  2. 在详细信息窗格中,转到 TCP 配置文件 选项卡并选择 TCP 配置文件。
  3. 配置 TCP 配置文件 页面中,设置 TCP 快速打开 cookie 的大小。
  4. 单击 确定完成

默认情况下,TCP 配置文件中启用该 TCPSyncookie 参数,以提供针对 SYN 攻击的强大 (RFC 4987) 基于 RFC 4987 的保护。如果您需要容纳与此保护不兼容但仍希望确保在发生攻击时回退的自定义 TCP 客户端,则 synAttackDetection 会通过在 autosyncookietimeout 参数确定的一段时间内自动激活 SYNCookie 行为来为您处理此问题。

要使用命令行界面配置最大 SYN ACK 重传阈值,请执行以下操作:

在命令提示符下,键入:

    set ns tcpparam [-maxSynAckRetx <positive_integer>]

    Set ns tcpparam [-maxSynAckRetx 150]
<!--NeedCopy-->

使用命令行界面配置自动 SYN cookie 超时间间隔

在命令提示符下,键入:

set ns tcpparam [-autosyncookietimeout <positive_integer>]

Set ns tcpparam [-autosyncookietimeout 90]

启用后,当有未完成的数据要发送到另一端时,该参数会断开客户端和服务器连接的链接。默认情况下,该参数处于禁用状态。

set ns tcpparam -delinkClientServerOnRST ENABLED
Done

<!--NeedCopy-->

配置慢启动阈值参数

您可以使用慢启动阈值 slowStartthreshold 参数来配置拥塞控制算法的 Nile 变体的 tcp-slowstartthreshold 值。该参数的可接受值为 min = 8190max = 524288。默认值为 524288。TCP 配置文件下的 TCP 变体 Nile不再依赖于 maxcwnd 参数。您必须为 Nile 变体配置 slowStartthreshold 参数。

在命令提示符下,键入:


set tcpprofile nstcp_default_profile -slowstartthreshold 8190
Done

<!--NeedCopy-->
TCP 配置