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“ 向 IP 添加显式拥塞通知 (ECN) ”定义了 ECN。

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

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

注意:

要使 ECN 在队列上工作,您还必须将加权随机早期检测 (WRED) 数据包丢弃配置文件应用于队列。

ECN 的工作原理

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

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

支持 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 的发送方向接收方发送设置了 ECT 字段的 IP 数据包。

    注意:

    您必须 在发送 方和接收方之间路径中的所有中间设备上启用 ECN。

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

    如果出口队列没有拥塞,设备将转发数据包,并且不会更改 ECN 位的启用 ECT 标记,因此数据包仍标记为支持 ECN,但不会遇到拥塞。

  4. 接收方接收标记为 CE 的数据包,指示沿拥塞路径遇到拥塞。

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

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

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

表 2 总结了启用 ECN 的队列上的流量行为。

表 2:启用 ECN 的队列上的流量行为

ECN 位的传入 IP 数据包标记

输出队列上的 ECN 配置

WRED 算法确定数据包符合丢弃条件时的操作

ECN 位的传出数据包标记

非 ECT (00)

没关系

落。

未标记 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。 以太网暂停也是一种对等流量控制机制,但以太网暂停不是仅暂停指定的流量,而是暂停物理链路上的所有流量。

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

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

有关详细信息,请参阅 了解 CoS 流控制(以太网暂停和 PFC)。 您还可以参阅 了解跨第 3 层接口的 PFC 功能

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

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

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

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

最后一个填充水平和下降概率对是下降端点。当队列达到最后一个填充级别时,除非针对 ECN 进行了配置,否则所有数据包都将被丢弃。

注意:

无损队列(配置了丢包属性的 no-loss 转发类)和严格高优先级队列不使用丢弃配置文件。无损队列使用 PFC 来控制流量。严格高优先级队列接收所需的所有端口带宽,直至达到配置的最大带宽限制。

不同的开关支持液滴曲线中不同数量的液位/液滴概率对。

注意:

不要将最后一个填充水平配置为 100%。

丢弃配置文件配置对 ECN 数据包的影响如下:

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

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

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

在丢弃端点,所有 ECN 数据包都标记为 CE,但不会丢弃 ECN 数据包。当队列填充量超过丢弃端点时,所有 ECN 数据包都将标记为 CE。此时,所有非 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 属性)应用于该接口上的输出队列(转发类)。由于您可以使用不同的流量控制配置文件将不同的调度程序映射到不同的接口,因此不同接口上的相同队列号可以以不同的方式处理流量。

您可以配置 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 流量

注意:

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

特定于平台的行为

使用 功能浏览器 确认平台和版本对 ECN 的支持。

使用下表查看此功能的平台特定行为。

平台

差异

QFX5000系列

在 QFX5K 平台上,ECN 功能与 WRED 阈值紧密集成。WRED 阈值是静态的,因此 ECN 也基于缓冲区阈值的静态计算工作。但是,队列的实际共享缓冲区使用情况是动态的。以下是在配置 ECN 时用于计算 ECN 标记阈值的公式。

  • max buffer access eligibility for ECN enabled queue = (( shared pool size * hardware_alpha)/(1 + hardware_alpha)) + egress queue dedicated buffer

  • ECN marking start threshold = WRED start fill level percent * Max buffer access eligibility for ECN enabled queue

  • ECN 100% marking threshold = WRED end fill level percent * Max buffer access eligibility for ECN enabled queue

在支持 ECN 的数据包拥塞期间,达到 ECN CE 标记后 ECN marking start threshold 开始。支持 ECN 的数据包在概率上标记为 ECN CE,直到 ECN 100% marking threshold 到达。在此阈值之后,所有支持 ECN 的数据包都将带有 ECN CE 标记,直到队列到达 max buffer access eligibility for ECN enabled queue。在此阈值之后,会发生尾部掉落。

在上面的计算 max buffer access eligibility for ECN enabled queue中,假设了单个队列单独竞争共享缓冲区空间的最佳情况。但是,拥塞队列的实际共享缓冲区使用量可能会根据任何时间点共享缓冲区的竞争队列数量而动态减少。以下是计算 actual dynamic max buffer usage per queue.

  • actual max buffer usage for ECN enabled queue = (shared pool size * hw_alpha) / (1 + (hw_alpha * number of competing queues)) + egress queue dedicated buffer + ingress Pg dedicated buffer by the traffic flow

在计算ECN阈值时,不能考虑计算中使用的actual dynamic max buffer usage per queue两个参数和 number of competing queues ingress Pg dedicated buffer by the traffic flow,因为这两个参数本质上都是动态的。这就产生了启用 ECN 的队列的实际最大缓冲区使用量可能低于计算的静态 ECN 标记阈值的可能性。

因此,对于某些共享缓冲区和 WRED 填充级别配置,即使在启用 ECN 的有损队列上进行 ECN 标记之前,也有可能由于共享缓冲区耗尽而出现数据包尾部丢弃的情况。对于无损队列,由于上述限制,PFC 可以在 ECN 标记之前从入口端口启动,因为 PFC XOFF 阈值是动态的,与静态 ECN 阈值不同。您可以通过监控拥塞队列的峰值缓冲区使用情况并相应地微调 ECN/WRED 阈值来确定正确的 ECN 标记阈值。

QFX10000系列

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

更改历史记录表

功能支持由您使用的平台和版本决定。使用 功能资源管理器 确定您的平台是否支持某个功能。

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