TCP 配置

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

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

注意

当 TCP 参数对于服务、虚拟服务器和全局具有不同的值时,最特定的实体(服务)的值将被赋予最高优先级。Citrix ADC 设备还提供其他配置 TCP 的方法。请继续阅读以获取更多信息。

支持的 TCP 配置

Citrix ADC 设备支持以下 TCP 功能:

保护 TCP 免受欺骗攻击

Citrix ADC 实现窗口衰减符合 RFC 4953 标准。

显式拥堵通知 (ECN)

设备会向数据发送者发送网络拥塞状态的通知,并对数据拥塞或数据损坏采取纠正措施。ECN 的 Citrix ADC 实现符合 RFC 3168 标准。

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

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

检测虚假重传输

这可以使用 TCP 重复选择性确认 (D-SACK) 和转发 RTO 恢复 (F-RTO) 来完成。在发生虚假重传输的情况下,拥塞控制配置将恢复到其原始状态。D-SACK 的 Citrix ADC 实现符合 RFC 2883 标准,F-RTO 符合 RFC 5682 标准。

拥堵控制

此功能使用新雷诺、BIC、立方、尼罗河和 TCP 韦斯特伍德算法。

窗口缩放

这会增加 TCP 接收窗口大小超过其最大值 65,535 字节。

配置窗口缩放前需要考虑的事项

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

TCP 最大拥塞窗口

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

选择性确认 (SACK)

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

转发确认 (FACK)

此功能可显式测量网络中未完成的数据字节总数,并帮助发件人(Citrix ADC 或客户端)控制重新传输超时期间注入到网络的数据量,从而避免 TCP 拥堵。

TCP 连接复用

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

动态接收缓冲

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

MPTCP 连接

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

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

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

  1. Stat MPTCP

  2. Stat mptcp –detail

  3. Clearstats basic

注意

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

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

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

TCP 分段卸载

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

可支持的 TCP 参数

下表提供了在 Citrix ADC 设备上配置的 TCP 参数及其默认值的列表。

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

设置全局 TCP 参数

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

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

注意

set ns tcpParam 命令的 recvBuffSize 参数从版本 9.2 开始不建议使用。在以后的版本中,通过使用 set ns tcpProfile 命令的 bufferSize 参数来设置缓冲区大小。如果升级到已弃用 recvBuffSize 参数的版本,则 bufferSize 参数设置为其默认值。

默认 TCP 配置文件

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

注意

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

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

配置默认 TCP 配置文件

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

    set ns tcpProfile nstcp_default_profile …

  • 在 GUI 上,导航到系统 > 配置文件,单击 TCP 配置文件并更新 nstcp_default_profile。

全局 TCP 命令

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

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

注意

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

配置全局 TCP 命令

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

    set ns tcpParam …

  • 在 GUI 上,导航到系统 > 设置,单击更改 TCP 参数并更新所需的 TCP 参数。

TCP 缓冲功能

Citrix ADC 提供称为 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>...

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

set service <name> ....

**示例**:

`> set service service1 -tcpProfileName profile1`

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

`set lb vserver <name> ....`

**示例**:

`> set lb vserver lbvserver1 -tcpProfileName profile1`

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

在 GUI 中,执行以下操作:

  1. 配置 TCP 配置文件。

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

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

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

内置 TCP 配置文件

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

内置配置文件 说明
nstcp_default_profile 表示设备上的默认全局 TCP 设置。
nstcp_default_tcp_lan 对于后端服务器连接非常有用,这些服务器与设备位于同一 LAN 上。
nstcp_default_tcp_lan_thin_stream 类似于 nstcp_default_tcp_lan 配置文件;但是,这些设置被调整为小型数据包流。
nstcp_default_tcp_interactive_stream 类似于 nstcp_default_tcp_lan 配置文件;但是,它具有减少的延迟 ACK 定时器和推送数据包设置上的 ACK。
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_lnp 配置文件;但是,这些设置会针对小型数据包流进行调整。
nstcp_internal_apps 适用于设备上的内部应用程序(例如,GSLB 站点同步)。这包含所需应用程序的调整窗口缩放和 SACK 选项。此配置文件不应绑定到除内部应用程序之外的其他应用程序。
nstcp_default_Mobile_profile 适用于移动设备。
nstcp_default_XA_XD_profile 对于 XenApp 或 XenDesktop 部署非常有用。

TCP 配置示例

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

保护 TCP 免受欺骗攻击

启用 Citrix ADC 以防止 TCP 遭受欺骗攻击。默认情况下,rstWindowAttenuation 参数处于禁用状态。启用此参数以保护设备免受欺骗。如果启用,它将对无效序列号进行更正确认 (ACK) 回复。可能的值为“已启用”、“已禁用”。

其中 RST 窗口衰减参数可保护设备免受欺骗。启用后,当序列号无效时,将使用纠正 ACK 回复。

```
> set ns tcpProfile profile1 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED
Done
> set lb vserver lbvserver1 -tcpProfileName profile1
Done
```

显式拥堵通知 (ECN)

Enable ECN on the required TCP profile

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

选择性确认 (SACK)

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

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

转发确认 (FACK)

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

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

窗口缩放 (WS)

启用窗口缩放并在所需 TCP 配置文件上设置窗口缩放系数。

set ns tcpProfile profile1 –WS ENABLED –WSVal 9 Done set lb vserver lbvserver1 -tcpProfileName profile1 Done

最大线段大小 (MSS)

更新与 MSS 相关的配置。

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

Citrix ADC 学习虚拟服务器的 MSS

启用 Citrix ADC 以了解 VSS 并更新其他相关配置。

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

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)

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

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

Citrix ADC 设备现在允许您在 TCP 配置文件中配置可变长度 TCP 快速打开 (TFO) cookie,其大小最小为 4 个字节,最大大小为 16 个字节。通过这样做,设备可以使用 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. 单击确定,然后单击完成

在 Citrix ADC 设备中,默认情况下,TCP 配置文件上的 SYN Cookie 参数处于启用状态以抵御 SYN 攻击的状态。如果您希望检测虚拟服务器的攻击并检查 SYN-ACK 重新传输速率,则 SYN cookie 值将从“已启用”状态切换为“已禁用”状态。但是,cookie 从已启用状态切换到已禁用状态的效果,反之亦然会导致群集部署中的节点之间的配置不一致。为了解决这个问题,您可以使用设备的每个虚拟服务器上维护的第二个 SYN cookie 参数。当检测到 SYN 攻击时,TCP 配置文件上的 SYN cookie 将被禁用,服务器上的第二个 SYN cookie 值从已禁用状态切换到已启用状态。对于您可以指定的 autosyncookietimeout 时间间隔,cookie 将保持为已启用状态。在超时间隔期间,虚拟服务器在 SYN Cookie 模式下打击 SYN 攻击。间隔超时后,SYN Cookie 值将切换回禁用状态,如果虚拟服务器的 SYN-ACK 重新传输速率低于阈值。否则,如果速率仍然高于阈值,则意味着它是 SYN 攻击,并且在指定的超时期间内将 Cookie 再次切换为已启用状态。

使用命令行界面配置最大 SYN ACK 重传阈值

在命令提示窗口中,键入:

``` set ns tcpparam \[-maxSynAckRetx <positive_integer>\]

Set ns tcpparam [-maxSynAckRetx 150] ```

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

在命令提示窗口中,键入:

set ns tcpparam [-autosyncookietimeout <positive_integer>]

Set ns tcpparam [-autosyncookietimeout 90]