Citrix ADC

使用TCP Nile优化TCP性能

TCP使用以下优化技术和拥塞控制策略(或算法)来避免数据传输中的网络拥堵。

拥塞控制策略

传输控制协议(TCP)早已用于建立和管理互联网连接,处理传输错误以及顺利地将Web应用程序与客户端设备连接。但网络流量已变得更加难以控制,因为丢包并不仅仅依赖于网络中的拥塞,而且拥塞不一定会导致丢包。因此,为了测量拥塞,tcp算法应该专注于数据包丢失和带宽。

尼罗河算法

Citrix系统已经开发了一种新的拥塞控制算法尼罗河,一种TCP优化算法,专为高速网络如LTE, LTE高级和3 g设计。尼罗河解决了衰落,随机或充血性损失,链路层再传输和载波聚合引起的独特挑战。

尼罗河算法:

  • 基于往返时间测量值的队列延迟估计值。
  • 使用与测量的队列延迟成反比的拥挤窗口增加函数。这种方法比标准TCP方法更慢地接近网络拥塞点,并减少了拥塞期间的数据包丢失。
  • 可以使用估计的队列延迟区分网络上的随机丢失和基于拥塞的丢失。

电信服务提供商可以在其TCP基础架构中使用nilo算法来执行以下操作:

  • 优化移动和长途网络-与标准TCP相比,尼罗河算法实现了更高的吞吐量。此功能对于移动和长途网络尤为重要。
  • 减少应用程序感知的延迟并增强订阅者体验——尼罗河算法使用数据包丢失信息来确定是否应增加还是减少传输窗口大小,并使用队列延迟信息来确定增量或减少的大小。此传输窗口大小的动态设置可减少网络上的应用程序延迟。

使用命令行界面配置尼罗支持

在命令提示符下,键入以下内容:

设置ns tcpProfile  [-flavor NILE] 

使用配置实用程序配置nils支持

  1. 导航到系统>配置文件>TCP配置文件,然后单击TCP配置文件
  2. TCP的味道格下拉列表中,选择尼罗河

示例:

设置ns tcpProfile tcpprofile1 -flavor NILE 

比例速率恢复算法

TCP快速恢复机制可减少由数据包丢失造成的Web延迟。新的比例速率恢复(prr)算法是一种快速恢复算法,用于在丢失恢复期间评估TCP数据。通过使用适合于拥塞控制算法选择的目标窗口的分数,在速率减半之后进行图案化。它最大限度地减少窗口调整,并且恢复结束时的实际窗口大小接近慢启动阈值(ssthreshold)。

TCP快速打开(tfo)

TCP快速打开(TFO)是一种TCP机制,可在TCP的初始握手期间,在客户端和服务器之间实现快速和安全的数据交换。此功能可作为TCP选项在绑定到Citrix ADC设备的虚拟服务器的TCP配置文件中使用。TFO使用Citrix ADC设备生成的TCP快速打开饼干(安全Cookie)来验证和验证启动与虚拟服务器的TFO连接的客户端。通过使用TFO机制,您可以将应用程序的网络延迟减少一次完整往返所需的时间,从而显著减少短时间TCP传输的延迟。

Tfo的工作原理

当客户端尝试建立TFO连接时,它包括一个TCP快速打开曲奇和初始SYN段来验证自己。如果身份验证成功,Citrix ADC设备上的虚拟服务器可以在SYN-ACK段中包含数据,即使它尚未收到三向握手的最终ACK段。与正常的TCP连接相比,这样可以节省多达一次完整的往返,而正常的TCP连接需要三向握手才能交换任何数据。

客户端和后端服务器执行以下步骤来建立tfo连接并在初始TCP握手期间安全地交换数据。

  1. 如果客户端没有用于对自身进行身份验证的TCP快速打开Cookie,则会将SYN数据包中的快速打开饼干请求发送到Citrix ADC设备上的虚拟服务器。
  2. 如果在绑定到虚拟服务器的TCP配置文件中启用了TFO选项,设备将生成一个cookie(通过在私有密钥下加密客户端的IP地址),并使用包含TCP选项字段中生成的快速打开饼干的SYN-ACK响应客户端。
  3. 客户端将Cookie缓存到设备上的同一虚拟服务器的未来TFO连接。
  4. 当客户端尝试建立到同一虚拟服务器的TFO连接时,它会发送SYN,其中包括缓存的快速打开饼干(作为TCP选项)以及HTTP数据。
  5. Citrix ADC设备验证饼干,如果身份验证成功,服务器将接受SYN数据包中的数据,并通过SYN-ACK, TFO饼干和HTTP响应确认事件。

注意:如果客户端身份验证失败,服务器将删除数据并仅通过syn确认事件,指示会话超时。

  1. 在服务器端,如果在绑定到服务的TCP配置文件中启用了TFO选项,Citrix ADC设备将确定其尝试连接的服务中是否存在TCP快速打开饼干。
  2. 如果TCP快速打开Cookie不存在,设备将在SYN数据包中发送Cookie请求。
  3. 当后端服务器发送Cookie时,设备将Cookie存储在服务器信息缓存中。
  4. 如果设备已为给定的目标IP对提供Cookie,则会将旧的饼干替换为新的饼干。
  5. 如果当虚拟服务器尝试通过使用相同剪断地址重新连接到同一后端服务器时,该饼干在服务器信息缓存中可用,则设备将SYN数据包中的数据与饼干合并并并将其发送到后端服务器。
  6. 后端服务器通过数据和syn确认事件。

注意:如果服务器仅通过SYN段确认事件,Citrix ADC设备会在从原始数据包中删除SYN段和TCP选项后立即重新发送数据包。

配置TCP快速打开

要使用TCP快速打开(TFO)功能,请在相关TCP配置文件中启用TCP快速打开选项,并将TFO饼干超时参数设置为符合该配置文件的安全要求的值。

使用命令行启用或禁用tfo

在命令提示窗口中,键入以下命令之一以在新配置文件或现有配置文件中启用或禁用tfo。

注意:默认值为"已禁用"。

add tcpprofile  - tcpFastOpen ENABLED | DISABLED set tcpprofile  - tcpFastOpen ENABLED | DISABLED unset tcpprofile  - tcpFastOpen 

示例:

add tcpprofile Profile1 - tcpFastOpen设置tcpprofile Profile1 - tcpFastOpen使能不设置tcpprofile Profile1 - tcpFastOpen

在命令提示符下,键入:

set tcpparam -tcpfastOpenCookieTimeout <超时值> 

示例:

set tcpprofile -tcpfastOpenCookieTimeout 30secs 

使用GUI配置TCP快速打开

  1. 导航到配置>系统> 配置文件>,然后单击编辑以修改TCP配置文件。
  2. 配置TCP配置文件页上,选中TCP快速打开复选框。
  3. 单击确定,然后单击完成

导航到”配置“>”系统“>”设置“>”更改TCP参数",然后"配置TCP参数页以设置TCP快速打开Cookie超时值。

TCP Hystart

新的TCP配置文件参数hystart启用hystart算法,这是一种慢启动算法、可动态地确定要终止的安全点(ss阈值)。它可以实现向避免拥塞过渡,而不会造成大量数据包丢失。默认情况下,此新参数处于禁用状态。

如果检测到拥堵,Hystart进入避免拥堵阶段。启用它可以在高数据包丢失高的高速网络中提供更好的吞吐量。此算法有助于在处理事务时保持接近最大带宽。因此,它可以提高吞吐量。

配置TCP Hystart

要使用Hystart功能,请在相关TCP配置文件中启用立方Hystart选项。

使用命令行界面(CLI)配置Hystart

在命令提示窗口中,键入以下命令之一以在新的或现有的TCP配置文件中启用或禁用Hystart。

add tcpprofile  -hystart ENABLED设置tcpprofile  -hystart ENABLED取消设置tcprofile  -hystart 

示例:

add tcpprofile Profile1 - tcpFastOpen Set tcpprofile Profile1 - tcpFastOpen Enabled unset tcpprofile Profile1 - tcpFastOpen 

使用GUI配置Hystart支持

  1. 导航到”配置“>”系统“>”配置件“>”编辑以修改TCP配置文件。
  2. 在“配置TCP配置文件"页上,选中"立方Hystart复选框。
  3. 单击确定,然后单击完成

优化技术

TCP使用以下优化技术和方法优化流控制。

基于策略的TCP配置文件选择

如今的网络流量比以往任何时候都更加多样化和带宽密集型。随着流量的增加,服务质量(QoS)对TCP性能的影响是显著的。要增强QoS,您现在可以为不同类别的网络流量配置不同的TCP配置文件的AppQoE策略。AppQoE策略对虚拟服务器的流量进行分类,以关联针对特定类型的流量(如 3G、4G、LAN 或 WAN)优化的 TCP 配置文件。

要使用此功能,请为每个TCP配置文件创建策略操作,将操作与AppQoE策略关联,并将策略绑定到负载平衡虚拟服务器。

配置基于策略的TCP配置文件选择

配置基于策略的TCP配置文件选择包括以下任务:

  • 启用AppQoE。在配置TCP配置文件功能之前,必须启用 AppQoE 功能。
  • 添加AppQoE操作。启用AppQoE功能后,使用TCP配置文件配置AppQoE操作。
  • 配置基于AppQoE的TCP配置文件选择。要为不同类别的流量实施TCP配置文件选择,您必须配置AppQoE策略,使Citrix ADC设备能够区分连接并将正确的AppQoE操作绑定到每个策略。
  • 将AppQoE策略绑定到虚拟服务器。配置AppQoE策略后,必须将它们绑定到一个或多个负载平衡、内容交换或缓存重定向虚拟服务器。

使用命令行接口配置

要使用命令行界面启用AppQoE,请执行以下操作:

在命令提示窗口中,键入以下命令以启用该功能并验证该功能已启用:

启用ns feature appqoe show ns feature 

使用命令行界面创建AppQoE操作时绑定TCP配置文件

在命令提示窗口中,键入带tcpprofiletoind选项的以下AppQoE操作命令。

绑定TCP配置文件:

add appqoe action  [-priority ] [-respondWith (ACS | NS) [] [-altContentSvcName ] [-altContentPath ] [-maxConn ] [-delay ]] [-polqDepth ] [-priqDepth ] [-dosTrigExpression ] [-dosAction (SimpleResponse |HICResponse)] [-tcpprofiletobind ] show appqoe action 

使用命令行界面配置AppQoE策略

在命令提示符下,键入:

添加appqoe policy  -rule  -action  

使用命令行界面将AppQoE策略绑定到负载平衡,缓存重定向或内容切换虚拟服务器

在命令提示符下,键入:

bind cs vserver cs1 -policyName  -priority  bind lb vserver  -policyName  -priority  bind cr vserver  -policyName  -priority  

示例:

add ns tcpProfile tcp1 -WS ENABLED -SACK ENABLED -WSVal 8 -nagle ENABLED -maxBurst 30 -initialCwnd 16 -oooQSize 15000 -minRTO 500 -slowStartIncr 1 -bufferSize 4194304 -flavor BIC -KA ENABLED -sendBuffsize 4194304 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED -dsack ENABLED -frto ENABLED -maxcwnd 4000000 -fack ENABLED -tcpmode ENDPOINT add appqoe action appac1 -priority HIGH -tcpprofile tcp1 add appqoe policy apppol1 -rule "client.ip.src.eq(10.102.71.31)"-action appac1 bind lb vserver lb2 -policyName apppol1 -priority 1 -gotoPriorityExpression END -type REQUEST bind cs vserver cs1 -policyName apppol1 -priority 1 -gotoPriorityExpression END -type REQUEST 

使用GUI配置基于策略的TCP分析

使用GUI启用AppQoE

  1. 导航到”系统“>”设置”。
  2. 在详细信息窗格中,单击配置高级功能
  3. 配置高级功能对话框中,选中AppQoE复选框。
  4. 单击好吧(确定)。

使用GUI配置AppQoE策略的步骤

  1. 导航至AppExpert>AppQoE>操作
  2. 在详细信息窗格中,执行以下操作之一:
  3. 要创建新操作,请单击”添加”。
  4. 若要修改现有操作,请选择该操作,然后单击”编辑”。
  5. 创建AppQoE操作配置AppQoE操作屏幕中,键入或选择参数的值。对话框的内容对应于“用于配置AppQoE操作的参数”中描述的参数,如下所示(星号表示必填参数):

    1. 名称- name
    2. 操作类型- respondWith
    3. 优先级-优先级
    4. 策略队列深度- polqDepth
    5. 队列深度- priqDepth
    6. DOS操作- dosAction
  6. 单击创建

使用GUI绑定AppQoE策略

  1. 导航到”流量管理“>”负载平衡“>”虚拟服务器",选择一个服务器,然后单击"编辑”。
  2. 策略部分中,单击(+)以绑定AppQoE策略。
  3. 在“策略滑块中,执行以下操作:
    1. 从下拉列表中选择一个策略类型作为AppQoE。
    2. 从下拉列表中选择流量类型。
  4. 策略绑定部分中,执行以下操作:
    1. 单击新建以创建新的AppQoE策略。
    2. 单击现有策略以从下拉列表中选择AppQoE策略。
  5. 设置绑定优先级,然后单击将策略绑定到虚拟服务器。
  6. 单击完成

Sack区块生成

当一个数据窗口中丢失多个数据包时,tcp性能会降低。在这种情况下,选择性确认 (SACK) 机制与选择性重复传输策略相结合可克服此限制。对于每个传入的无序数据包,您必须生成 SACK 块。

如果不顺序的数据包适合重新组装队列块,请在块中插入数据包信息,并将完整的数据包设置为SACK-0。如果不顺序的数据包不适合重新组装块,请将数据包作为SACK-0发送,然后重复早期的麻袋块。如果一个不顺序的数据包是重复的,并且数据包信息被设置为sack-0,那么d-sack就是块。

注意:如果数据包是已确认的数据包,或者已经收到的不顺序的数据包,则被视为d-sack。

客户端续约

Citrix ADC设备可以在基于SAK的恢复期间处理客户端续约。

在PCB上标记end_point的内存检查不考虑总可用内存

在Citrix ADC设备中,如果内存使用阈值设置为75%,而不是使用总可用内存,则会导致新的TCP连接绕过TCP优化。

由于缺少sack块,不必要的重新传输

在非端点模式下,当您发送DUPACK时,如果缺少少量不顺序的数据包袋块,则会触发来自服务器的其他重新传输。

SNMP用于由于过载而绕过优化的连接数

以下SNMP ID已添加到Citrix ADC设备,以跟踪由于过载而绕过TCP优化的连接数。

  1. 1.3.6.1.4.1.5951.4.1.1.46.13 (tcpOptimizationEnabled)。跟踪TCP优化启用的连接总数。
  2. 1.3.6.1.4.1.5951.4.1.1.46.132 (tcpOptimizationBypassed)。跟踪绕过TCP优化的连接总数。

动态接收缓冲区

为了最大限度地提高TCP性能,Citrix ADC设备现在可以动态调整TCP接收缓冲区大小。