Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

了解 CoS 显式拥塞通知

显式拥塞通知 (ECN) 可在基于 TCP/IP 的网络上的两个端点之间实现端到端拥塞通知。这两个端点是支持 ECN 的发送方和支持 ECN 的接收方。必须在两个端点之间的两个端点上以及两个端点之间的所有中间设备上启用 ECN,才能使 ECN 正常工作。传输路径中不支持 ECN 的任何设备会中断端到端 ECN 功能。

ECN 通过使发送设备降低传输速率,直到拥塞消除,而不会丢弃数据包,从而通知网络拥塞,从而减少数据包丢失和延迟。RFC 3168 将 显式拥塞通知 (ECN) 添加到 IP,定义了 ECN。

默认情况下,ECN 处于禁用状态。通常,您仅在处理尽力而为流量的队列启用 ECN,因为其他流量类型使用不同的拥塞通知方法 — 无损流量使用基于优先级的流控制 (PFC),严格优先级流量接收到配置的最大速率点所需的所有端口带宽。

通过在队列调度器配置中启用 ECN,将调度器映射到转发类(队列),然后将调度程序应用于接口,您可以在单个输出队列上启用 ECN(以转发类表示)。

注意:

要使 ECN 处理队列,还必须对队列应用加权随机早期检测 (WRED) 数据包丢弃配置文件。

ECN 的工作原理

如果没有 ECN,交换机可以通过丢弃 TCP/IP 数据包来响应网络拥塞。丢包会向网络发出拥塞的信号。IP 网络上的设备通过降低数据包传输速率以清除拥塞,从而响应 TCP 数据包丢失的情况。但是,拥塞通知和管理数据包丢弃方法有一些缺点。例如,数据包被丢弃,必须重新传输。此外,突发流量还会导致网络将传输速率降低得太多,导致带宽利用率低下。

ECN 不会将数据包丢弃为网络拥塞信号,而是将数据包标记为网络拥塞信号,而无需丢弃数据包。要使 ECN 正常工作,两个支持 ECN 的端点之间的路径中的所有交换机都必须已启用 ECN。在端点之间建立 TCP 连接期间,会协商 ECN。

支持 ECN 的交换机根据应用于队列的 WRED 数据包丢弃配置文件配置确定队列拥塞状态,因此每个支持 ECN 的队列都必须具有一个 WRED 丢弃配置文件。如果队列填充到 WRED 丢弃配置文件的数据包丢弃概率大于零 (0) 的级别,交换机可能会将数据包标记为出现拥塞。交换机是否将数据包标记为拥塞,与该填充级别队列丢弃的概率相同。

ECN 通过在 IP 报头的差异化服务 (DiffServ) 字段中标记两个最小有效位来传达是否遇到拥塞情况。DiffServ 字段中最重要的六位包含差异化服务代码点 (DSCP) 位。两个 ECN 位的状态会指示数据包是否支持 ECN,以及是否遇到拥塞。

支持 ECN 的发件人将数据包标记为支持 ECN。如果发件人不支持 ECN,它将将数据包标记为不支持 ECN。如果支持 ECN 的数据包在交换机的出口队列中遇到拥塞,交换机会将其标记为出现拥塞。当数据包到达支持 ECN 的接收器(目标端点)时,接收方发送标记为表示拥塞的数据包,将拥塞指示器回显给发送方(源端点)。

从接收器接收拥塞指示符后,源端点会降低传输速率,以缓解拥塞。这类似于 TCP 拥塞通知和管理的结果,但 ECN 会标记数据包,接收器将拥塞通知回显给发送方,而不是将数据包丢弃为网络拥塞信号。由于数据包不会丢弃,因此无需重新传输数据包。

DiffServ 字段中的 ECN 位

DiffServ 字段中的两个 ECN 位提供四个代码,用于确定数据包是否被标记为支持 ECN 的传输 (ECT) 数据包,这意味着传输协议的两个端点都支持 ECN,并且遇到拥塞 (CE),如 表 1 所示:

表 1:ECN 位代码

ECN 位(代码)

意义

00

非 ECT — 数据包被标记为不支持 ECN

01

ECT (1) — 传输协议的端点支持 ECN

10

ECT(0) — 传输协议的端点支持 ECN

11

CE — 遇到拥塞

代码 01 和 10 具有相同的含义:传输协议的发送和接收端点都支持 ECN。这些代码之间没有区别。

端到端 ECN 行为

发送和接收端点协商 ECN 后,发送端点通过将 DiffServ ECN 字段设置为 ECT(1) (01) 或 ECT(0) (10),将数据包标记为支持 ECN。端点之间的每个中间交换机都必须启用 ECN,否则将无法工作。

当数据包遍历交换机并在使用 WRED 数据包丢弃机制的输出队列中遇到拥塞时,交换机将 DiffServ ECN 字段设置为 CE (11),将数据包标记为出现拥塞。交换机转发数据包,而不是丢弃数据包(如 TCP 拥塞通知一样)。

注意:

在出口队列中,WRED 算法根据队列填充级别(队列的满度)确定数据包是否符合丢弃条件。如果丢弃符合条件的数据包并标记为支持 ECN,则可以将数据包标记为 CE 并转发。如果数据包符合丢弃条件且未标记为支持 ECN,则可能会将其丢弃。有关 WRED 算法的更多信息,请参阅 ECN 阈值的 WRED 丢弃配置文件控制

当数据包到达接收方端点时,CE 标记会通知接收方存在网络拥塞。然后,接收方向发送方发送(回显)一条消息,表明网络上存在拥塞。发件人会确认拥塞通知消息并降低其传输速率。 图 1 总结了 ECN 如何缓解网络拥塞:

图 1:显式拥塞通知 Explicit Congestion Notification

端到端 ECN 行为包括:

  1. 在建立连接期间,支持 ECN 的发送方和接收方协商 ECN 功能。

  2. 成功协商 ECN 功能后,支持 ECN 的发送方会发送 IP 数据包,并将 ECT 字段设置为接收方。

    注意:

    发送方和接收方之间路径中的所有中间设备都必须支持 ECN。

  3. 如果交换机出口队列上的 WRED 算法确定队列出现拥塞,并且数据包符合丢弃条件,交换机可以将该数据包标记为“拥塞体验”(CE),以便向接收方指示网络拥塞。如果数据包已标记为 CE(另一台交换机的出口时已经出现拥塞),交换机将转发带有 CE 标记的数据包。

    如果交换机出口队列中没有拥塞,交换机将转发数据包,并且不会更改 ECN 位支持 ECT 的标记,因此数据包仍被标记为支持 ECN,但不会出现拥塞。

    在 QFX5210、QFX5200、QFX5100、EX4600、QFX3500 和 QFX3600 交换机上,以及 QFabric 系统上,未标记为 ECN (ECT, 00) 的数据包将根据 WRED 丢弃配置文件配置进行处理,并可能在拥塞期间丢弃。

    在 QFX10000 交换机上,交换机使用尾部丢弃算法在拥塞期间丢弃标记为 ECT (00) 的数据包。(当队列填充到其最大满度时,尾部丢弃会丢弃所有随后到达的数据包,直到队列中有空间来缓冲更多数据包。所有不支持 ECN 的数据包均得到相同处理。)

  4. 接收方收到一个标记为 CE 的数据包,以指示在拥塞路径上遇到了拥塞。

  5. 接收方将一个数据包回显(发送)给发送方,其 ECE 位 (位 9) 在 TCP 报头的标志字段中标记。ECE 位是 ECN 回显标记位,可通知发送方网络拥塞。

  6. 发送方会降低数据传输速率,并向在 TCP 标头的标志字段中标记有 CWR 位(位 8)的接收器发送数据包。CWR 位是拥塞窗口减少的标志位,它向接收方确认接收了拥塞遇到通知。

  7. 当接收方收到 CWR 标志时,接收方停止在回复发送方时设置 ECE 位。

表 2 汇总了支持 ECN 的队列上的流量行为。

表 2:支持 ECN 的队列上的流量行为

ECN 位的传入 IP 数据包标记

输出队列上的 ECN 配置

如果 WRED 算法确定数据包符合丢弃条件,应采取措施

ECN 位的传出数据包标记

非 ECT (00)

无关紧要

丢弃(QFX5210、QFX5200、QFX5100、EX4600、QFX3500、QFX3600、QFabric 系统)。

当队列达到最大满度时,将发生尾部丢弃,因为未应用 WRED 丢弃概率(QFX10000 交换机)。

未标记 ECN 位

ECT(10 或 01)

ECN 已禁用

下降

数据包丢弃 — 未标记 ECN 位

ECT(10 或 01)

支持 ECN

不要丢弃。将数据包标记为拥塞(CE,位 11)。

标记为 ECT (11) 的数据包,表示拥塞

CE (11)

ECN 已禁用

下降

数据包丢弃 — 未标记 ECN 位

CE (11)

支持 ECN

不要丢弃。数据包已标记为出现拥塞,转发数据包而不更改 ECN 标记。

标记为 ECT (11) 的数据包,表示拥塞

当输出队列没有遇到映射到队列的 WRED 丢弃配置文件所定义的拥塞时,将转发所有数据包,并且不会丢弃任何数据包。

ECN 与 PFC 和以太网暂停的比较

ECN 是用于 IP 流量的端到端网络拥塞通知机制。基于优先级的流控制 (PFC) (IEEE 802.1Qbb) 和以太网暂停 (IEEE 802.3X) 是不同类型的拥塞管理机制。

ECN 要求输出队列还必须具有关联的 WRED 数据包丢弃配置文件。用于启用 PFC 的流量的输出队列不应具有关联的 WRED 丢弃配置文件。启用以太网暂停的接口不应具有关联的 WRED 丢弃配置文件。

PFC 是一种点对点流量控制机制,可支持无损流量。PFC 使连接的对等设备能够在拥塞期间暂停流量传输。PFC 允许您暂停链路上指定类型的流上的流量,而不是暂停链路上所有流量的流量。例如,您可以(并应该)对无损流量类别(如 fcoe 转发类)启用 PFC。以太网 PAUSE 也是一种对等流量控制机制,但以太网 PAUSE 会暂停物理链路上的所有流量,而不是仅暂停指定的流量。

借助 PFC 和以太网暂停,流的发送和接收端点不会在中间交换机上相互通信拥塞信息。相反,PFC 控制支持数据中心桥接 (DCB) 标准的两个支持 PFC 的对等设备(例如交换机)之间的流。PFC 的工作原理是,当流输出队列拥塞时,向连接的对等方发送暂停消息。以太网暂停只需在拥塞期间暂停链路上的所有流量,无需 DCB。

PFC 以这种方式工作:如果交换机输出队列填充到特定阈值,交换机会向正在传输数据的连接的对等设备发送 PFC 暂停消息。暂停消息告诉传输交换机暂停流的传输。拥塞清除后,交换机会发送另一条 PFC 消息,通知连接的对等方恢复传输。(如果传输交换机的输出队列也达到某个阈值,该交换机又可向传输至该交换机的连接对等方发送 PFC 暂停消息。通过这种方式,PFC 可以通过网络将传输暂停传播回。)

有关更多信息,请参阅 了解 CoS 流控制(以太网暂停和 PFC )。仅适用于 QFX5100 和 EX4600 交换机,您还可以参阅 了解跨第 3 层接口的 PFC 功能

ECN 阈值的 WRED 丢弃配置文件控制

您将 WRED 丢弃配置文件应用于转发类(映射到输出队列),以控制交换机如何标记支持 ECN 的数据包。调度器图将丢弃配置文件与调度器及转发类相关联,然后将调度器图应用于接口,以实施这些接口上的转发类的计划属性。

丢弃配置文件定义队列填充级别(队列充满率的百分比)和丢弃概率(丢弃数据包的百分比概率)对。当队列填充到指定级别时,与丢弃配置文件匹配的流量将具有与该填充级别配对的丢弃概率。配置丢弃配置文件时,您可以配置填充级别对和丢弃概率,以控制不同队列完整性级别下数据包的丢弃方式。

第一个填充级别和丢弃概率对是丢弃起点。在队列达到第一个填充级别之前,不会丢弃数据包。当队列达到第一个填充级别时,超过填充级别的数据包的丢弃概率等于与填充级别配对的丢弃概率。

最后一个填充级别和丢弃概率对是丢弃端点。当队列达到最后一个填充级别时,将丢弃所有数据包,除非为 ECN 配置这些数据包。

注意:

无损队列(使用no-loss数据包丢弃属性配置的转发类)和严格高优先级队列不使用丢弃配置文件。无损队列使用 PFC 来控制流量流。严格高优先级队列接收其最高配置的最大带宽限制所需的所有端口带宽(QFX10000 交换机、shaping-rateQFX5210、QFX5200、QFX5100、QFX3500、QFX3600 和 EX4600 交换机以及 QFabric 系统上的调度器transmit-rate)。

不同的交换机在丢弃配置文件中支持不同数量的填充级别/丢弃概率对。例如,QFX10000 交换机支持 32 个填充级别/丢弃概率对,因此,丢弃端点与丢弃端点之间可能多达 30 个中间填充级别/丢弃概率对。QFX5210、QFX5200、QFX5100、QFX3500、QFX3600 和 EX4600 交换机和 QFabric 系统支持两个填充级别/丢弃概率对 — 根据定义,您在这些交换机上配置的两对是丢弃端点。

注意:

不要将最后一个填充级别配置为 100%。

丢弃配置文件配置会影响 ECN 数据包,如下所示:

  • 丢弃起点 — 支持 ECN 的数据包可能被标记为拥塞 (CE)。

  • 丢弃端点 — 支持 ECN 的数据包始终标记为 CE。

当队列从丢弃起点填充到丢弃端点时,ECN 数据包被标记为 CE 的概率与将丢弃配置文件应用于尽力流量时,非 ECN 数据包被丢弃的概率相同。队列填充时,ECN 数据包被标记 CE 的可能性也会增加,就像将丢弃配置文件应用于尽力流量时,非 ECN 数据包被丢弃的可能性增加一样。

在丢弃端点处,所有 ECN 数据包均标记为 CE,但不会丢弃 ECN 数据包。当队列填充级别超过丢弃端点时,所有 ECN 数据包都会被标记为 CE。(此时,QFX5210、QFX5200、QFX5100、EX4600、QFX3500 和 QFX3600 交换机以及 QFabric 系统上的所有非 ECN 数据包都会被丢弃。)如果队列完全填满,ECN 数据包(以及所有其他数据包)将丢弃尾部。

要配置 WRED 数据包丢弃配置文件并将其应用于输出队列(在支持 ETS 的交换机上使用层次调度),

  1. 使用语句 set class-of-service drop-profiles profile-name interpolate fill-level drop-start-point fill-level drop-end-point drop-probability 0 drop-probability percentage配置丢弃配置文件。

  2. 使用语句 set class-of-service schedulers scheduler-name drop-profile-map loss-priority (low | medium-high | high) protocol any drop-profile profile-name将丢弃配置文件映射到队列计划程序。丢弃配置文件的名称是在步骤 1 中配置的 WRED 配置文件的名称。

  3. 使用语句 set class-of-service scheduler-maps map-name forwarding-class forwarding-class-name scheduler scheduler-name将第 2 步与丢弃配置文件关联的调度程序映射到输出队列。转发类标识输出队列。转发类默认映射到输出队列,并通过显式用户配置重新映射到不同的队列。计划程序名称是在步骤 2 中配置的调度器。

  4. 使用语句 set class-of-service traffic-control-profiles tcp-name scheduler-map map-name将调度器图与流量控制配置文件相关联。调度器映射名称是在步骤 3 中配置的名称。

  5. 使用语句 set class-of-service interface interface-name forwarding-class-set forwarding-class-set-name output-traffic-control-profile tcp-name将流量控制配置文件与接口相关联。输出流量控制配置文件名称是在步骤 4 中配置的流量控制配置文件的名称。

    接口使用流量控制配置文件中的调度器图将丢弃配置文件(和其他属性,包括启用 ECN 属性)应用于该接口上的输出队列(转发类)。由于您可以使用不同的流量控制配置文件将不同的调度器映射到不同的接口,因此不同接口上的相同队列编号可以不同方式处理流量。

从 15.1 版开始,您可以配置 WRED 数据包丢弃配置文件,并将其应用于支持端口调度(不支持或使用 ETS 分层调度)的交换机上的输出队列。要配置 WRED 数据包丢弃配置文件并将其应用于支持端口计划(不支持或使用 ETS 分层调度)的交换机上的输出队列:

  1. 使用语句 set class-of-service drop-profiles profile-name interpolate fill-level level1 level2 ... level32 drop-probability probability1 probability2 ... probability32配置丢弃配置文件。您可以指定两个填充级别/丢弃概率对,或者指定多达 32 对。

  2. 使用语句 set class-of-service schedulers scheduler-name drop-profile-map loss-priority (low | medium-high | high) drop-profile profile-name将丢弃配置文件映射到队列计划程序。丢弃配置文件的名称是在步骤 1 中配置的 WRED 配置文件的名称。

  3. 使用语句 set class-of-service scheduler-maps map-name forwarding-class forwarding-class-name scheduler scheduler-name将第 2 步与丢弃配置文件关联的调度程序映射到输出队列。转发类标识输出队列。转发类默认映射到输出队列,并通过显式用户配置重新映射到不同的队列。计划程序名称是在步骤 2 中配置的调度器。

  4. 使用语句 set class-of-service interfaces interface-name scheduler-map scheduler-map-name将调度器图与接口相关联。

    接口使用调度器图将丢弃配置文件(和其他属性)应用到映射到该接口上的转发类的输出队列。由于您可以在不同的接口上使用不同的调度器图,因此不同接口上的相同队列编号可以不同方式处理流量。

支持、限制和注意事项

如果映射到队列的 WRED 算法找不到符合丢弃条件的数据包,则 ECN 配置和 ECN 位标记并不重要。数据包传输行为与未启用 ECN 时相同。

默认情况下,ECN 处于禁用状态。通常,您仅在处理尽力流量的队列上启用 ECN,而不会在处理无损流量或严格优先级流量的队列上启用 ECN。

ECN 支持以下功能:

  • IPv4 和 IPv6 数据包

  • 未标记、单标记和双标记数据包

  • IP 隧道数据包的外部 IP 报头(而非内部 IP 报头)

ECN 不支持以下各项:

  • 使用 MPLS 封装的 IP 数据包

  • IP 隧道数据包的内部 IP 报头(但是,ECN 适用于外部 IP 报头)

  • 组播、广播和目标查找失败 (DLF) 流量

  • 非 IP 流量

注意:

在 QFX10000 交换机上,当为 ECN 启用队列并将 WRED 丢弃配置文件应用于队列时,WRED 丢弃配置文件仅设置将 ECN 流量标记为出现拥塞的阈值 (CE, 11)。在支持 ECN 的队列上,WRED 丢弃配置文件不会为非 ECT (00) 流量(不支持 ECN 的流量)设置丢弃阈值。相反,交换机对流量使用尾丢弃算法,在拥塞期间,在支持 ECN 的队列上标记为非 ECT。

要对非 ECT 流量应用 WRED 丢弃配置文件,请配置多域 (MF) 分类器,将非 ECT 流量分配给不支持 ECN 的其他输出队列,然后将 WRED 丢弃配置文件应用于该队列。

版本历史记录表
释放
描述
15.1
从 15.1 版开始,您可以配置 WRED 数据包丢弃配置文件,并将其应用于支持端口调度(不支持或使用 ETS 分层调度)的交换机上的输出队列。