Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

TCP 快速打开

使用 TCP 更有效地交换数据 快速打开

TCP 快速打开 (TFO) 是 TCP 的更新,可在 TCP 会话期间通过标准的三次连接握手节省最多一个完整的往返时间 (RTT)。TFO 支持适用于 MS-MPC 和 MS-MIC。

标准三向连接握手涉及两台主机之间的三组发送和接收消息,以及以下 SYN(同步)和 ACK(确认)数据包交换:

  1. 主机 A 向主机 B 发送一个 TCP SYN 数据包。主机 B 接收该数据包。

  2. 主机 B 向主机 A 发送一个 SYN-ACK 数据包,主机 A 接收该数据包。

  3. 主机 A 向主机 B 发送一个 ACK 数据包,主机 B 接收该数据包。

在标准 TCP 中,虽然数据可以在 SYN 数据包中传输,但在完成三次握手之前无法传输此数据。TFO 消除了这一限制,并允许将 SYN 数据包中的数据传送到应用程序,从而显著改善了延迟。

TFO 的关键组件是快速打开 Cookie (Cookie),它是服务器生成的消息认证代码 (MAC) 标记。客户端在一个常规 TCP 连接中请求一个 cookie,然后将其用于将来的 TCP 连接,以便在握手期间交换数据。

TFO 选项用于请求或发送 TFO cookie。当 Cookie 不存在或为空时,客户端使用该选项从服务器请求 Cookie。当 cookie 存在时,该选项用于将 cookie 从服务器传递到客户端或从客户端传递回服务器。

以下列表概述了客户端请求 TFO cookie 的方式:

  1. 客户端发送带有 TFO 选项的 SYN,该选项的 cookie 字段为空。

  2. 服务器生成 cookie 并通过 SYN-ACK 数据包的 TFO 选项发送。

  3. 客户端缓存 cookie 以供将来的 TFO 连接使用。

此后,两台设备执行 TFO 交换:

  1. 客户端发送带有数据的 SYN 和 TFO 选项中的 cookie。

  2. 服务器验证 Cookie:

    • 如果 cookie 有效,服务器会发送一个 SYN-ACK,确认 SYN 和数据。

      然后,服务器将数据传送到应用程序。

    • 否则,服务器将丢弃数据并发送仅确认 SYN 序列号的 SYN-ACK。

连接的其余部分像正常的 TCP 连接一样进行。客户端在获取 cookie 后可以重复许多 TFO作(直到服务器使 cookie 过期)。因此,TFO 对于同一客户端多次重新连接到同一服务器并交换数据的应用程序很有用。

配置 TFO

在本主题中,介绍了TCP快速打开(TFO)的三种模式,并给出了示例。还介绍了将 NAT 与 TFO 一起使用的情况。

TFO 的三种模式

使用 TFO 无需任何配置。默认情况下,TFO 处于启用状态。在默认模式下,所有 TFO 数据包都由服务 PIC 转发。除了默认模式外,您还可以通过 CLI 为 TFO 配置另外两种模式:

  • 丢弃 TFO — 如果设置了此模式,则不会转发任何 TFO 数据包。

  • 禁用 TFO — 如果设置了此模式,则在转发之前,任何携带 TFO、数据或两者的 SYN 或 SYN ACK 数据包都将从 TFO 和/或数据中剥离。

每个服务集启用 TFO 选项。服务集可以是下一跃点服务集,也可以是接口样式服务集。下面是一个接口样式服务集配置示例:

在此实例中,默认情况下启用 TFO(无 TFO 配置)。命令的 show services service-sets statistics tcp 输出如下:

如果丢弃启用 TFO 的数据包,则具有以下配置和输出:

如果去除 TFO 选项,则配置和输出也会相应更改:

使用 NAT 和 TFO

如果在服务集中配置了 NAT,并且您使用的是 TFO,则应配置地址池配对 (APP)。APP 允许将专用 IP 地址映射到其所有会话的 NAT 池中的同一公共 IP 地址。

如果未配置 APP,NAT 可以向来自同一 NAT 池的客户端提供与之前发送到服务器的 IP 地址不同的 IP 地址。服务器无法识别 IP 地址,删除 TFO 选项,并使用 SYN ACK 进行回复,并且客户端发送的数据不被确认。因此,即使连接成功且没有丢包,TFO 的优势也会丢失。但是,如果客户端返回相同的 IP 地址,服务器会识别它并确认数据。因此,请始终启用具有较高映射超时值的 APP。

要配置 APP,请执行以下作:

  1. 配置 APP:
  2. 配置高映射超时值:

为 MS-DPC 和 MS-PIC 服务接口配置分段控制

有两个配置选项可用于防止因处理大量分段数据包而导致服务 PIC 上的计算 CPU 周期消耗过多。这种片段处理可以在 DOS 攻击中被利用。该 fragment-limit 选项可确定数据包的最大分段数。当超过此数字时,数据包将被丢弃。指定 reassembly-timeout 从接收数据包中的第一个和最新分段开始的最长时间。当超过该数字时,数据包将被丢弃。

要为 MS-DPC 和 MS-PIC 服务接口配置分段控制:

  1. 在配置模式下,转到 [edit interfaces interface-name services-options 层级。
  2. 配置分段限制。
  3. 配置重新组装超时。

跟踪服务 PIC作

跟踪作跟踪所有自适应服务作,并将其记录在日志文件中。记录的错误说明提供了详细信息,可帮助您更快地解决问题。

默认情况下,不跟踪任何事件。如果在 [edit services adaptive-services-pics][edit services logging] 层次结构级别包含traceoptions语句,则默认跟踪行为如下:

  • 重要事件记录在位于 /var/log 目录中的名为serviced的文件中。

  • 服务 的文件达到 128 KB 时,将其重命名为 serviced.0,然后重命名为 serviced.2,依此类推,直到有三个跟踪文件。然后,将覆盖最早的跟踪文件 (serviced.2)。(有关如何创建日志文件的详细信息,请参阅 系统日志浏览器

  • 日志文件只能由配置跟踪作的用户访问。

不能更改跟踪文件所在的目录 (/var/log)。但是,您可以通过包含以下语句来自定义其他跟踪文件设置:

您可以在 [edit services adaptive-services-pics traceoptions][edit services logging traceoptions] 层次结构级别包含这些语句。

以下部分介绍了这些语句:

配置自适应服务日志文件名

默认情况下,将服务记录跟踪输出的文件的名称。您可以通过在 [edit services adaptive-services-pics traceoptions][edit services logging traceoptions] 层次结构级别包含file语句来指定其他名称:

配置自适应服务日志文件的数量和大小

默认情况下,当跟踪文件的大小达到 128 KB 时,它将重命名为 .0,然后重命名为filename .1,依此类推,直到有三个跟踪文件。filename然后,将覆盖最早的跟踪文件 (filename.2)。

可以通过在 [edit services adaptive-services-pics traceoptions][edit services logging traceoptions] 层次结构级别包含以下语句来配置跟踪文件的数量和大小限制:

例如,将最大文件大小设置为 2 MB,将最大文件数设置为 20。当接收跟踪作 (filename) 输出的文件达到 2 MB 时, filename 将重命名为 filename.0,并创建一个名为 filename 的新文件。当新的 filename 达到 2 MB 时, filename.0 将重命名为 filename.1filename 重命名为 filename.0。重复此过程,直到有 20 个跟踪文件。然后,最旧的文件 (filename.19) 将被最新的文件 (filename.0) 覆盖。

文件数量可以从 2 到 1000 个文件。每个文件的文件大小可以从 10 KB 到 1 GB (GB)。

配置对日志文件的访问

默认情况下,日志文件只能由配置跟踪作的用户访问。

要指定任何用户都可以读取所有日志文件,请在 [edit services adaptive-services-pics traceoptions][edit services logging traceoptions] 层次结构级别包含file world-readable语句:

要显式设置默认行为,请在 [edit services adaptive-services-pics traceoptions][edit services logging traceoptions] 层次结构级别包含file no-world-readable语句:

为要记录的行配置正则表达式

默认情况下,追踪作输出包括与记录的事件相关的所有行。

您可以通过在 [edit services adaptive-services-pics traceoptions file filename][edit services logging traceoptions] 层次结构级别包含match语句并指定要匹配的正则表达式 (regex) 来优化输出:

配置追踪作

默认情况下,如果 traceoptions 配置存在,则仅记录重要事件。您可以通过在 [edit services adaptive-services-pics traceoptions][edit services logging traceoptions] 层次结构级别包含以下语句来配置要记录的跟踪作:

表 1 描述了自适应服务跟踪标志的含义。

表 1:自适应服务跟踪标志

描述

默认设置

all

跟踪所有作。

关闭

command-queued

跟踪命令:将事件列入队列。

关闭

config

[edit services] 层次结构级别读取配置的日志。

关闭

handshake

跟踪握手事件。

关闭

init

跟踪初始化事件。

关闭

interfaces

跟踪接口事件。

关闭

mib

跟踪 GGSN SNMP MIB 事件。

关闭

removed-client

跟踪客户端清理事件。

关闭

show

跟踪 CLI 命令服务。

关闭

要显示日志的末尾,请发出 show log serviced | last 作模式命令: