Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

数据中心量化拥塞通知 (DCQCN)

远程直接内存访问 (RDMA) 提供现代数据中心应用程序所需的高吞吐量和超低延迟以及低 CPU 开销。RDMA 使用 RoCEv2 协议部署,该协议依赖于基于优先级的流量控制 (PFC) 来实现无丢弃网络。数据中心量化拥塞通知 (DCQCN) 是用于 RoCEv2 的端到端拥塞控制方案。Junos 通过将显式拥塞通知 (ECN) 和 PFC 相结合来支持 DCQCN,从而克服了 PFC 的局限性,支持端到端无损以太网。

了解 DCQCN

基于优先级的流量控制 (PFC) 是一种无损传输和拥塞缓解功能,其工作原理是为全双工以太网链路上的每个 IEEE 802.1p 代码点(优先级)提供精细的链路级流量控制。当交换机接口上的接收缓冲区填充到阈值时,交换机会向发送方(连接的对等方)发送暂停帧,以暂时停止发送方传输更多帧。缓冲区阈值必须足够低,以便发送方有时间停止传输帧,并且接收方可以在缓冲区溢出之前接受线路上已有的帧。交换机会自动设置队列缓冲区阈值以防止帧丢失。

当拥塞迫使链路上的一个优先级暂停时,链路上的所有其他优先级将继续发送帧。仅传输暂停优先级的帧。当接收缓冲区清空到另一个阈值以下时,交换机会发送一条消息,再次启动流。但是,根据链路上或分配给优先级的流量,暂停流量可能会导致入口端口拥塞,并通过网络传播拥塞。

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

ECN 通知网络有关拥塞的信息,目的是通过使发送设备降低传输速率直到拥塞清除而不丢弃数据包来减少数据包丢失和延迟。RFC 3168“ 向 IP 添加显式拥塞通知 (ECN) ”定义了 ECN。

数据中心量化拥塞通知 (DCQCN) 是 ECN 和 PFC 的组合,可支持端到端无损以太网。ECN 有助于克服 PFC 的限制,实现无损以太网。DCQCN背后的理念是允许ECN通过在拥塞开始时降低传输速率来进行流量控制,从而最大限度地减少PFC的触发时间,从而完全停止流量。

DCQCN 的正确运行需要平衡两个相互冲突的要求:

  1. 确保PFC不会过早触发,也就是说,在给ECN发送拥塞反馈以减慢流量的机会之前。

  2. 确保 PFC 不会触发得太晚,从而由于缓冲区溢出而导致数据包丢失。

您需要正确计算和配置三个重要参数才能达到上述关键要求:

  1. Headroom Buffers- 发送到上游设备的暂停消息需要一些时间才能到达并生效。为避免丢包,PAUSE 发送方必须保留足够的缓冲区来处理在此期间可能收到的任何数据包。这包括发送 PAUSE 时正在运行的数据包,以及上游设备在处理 PAUSE 消息时发送的数据包。您可以在全局共享缓冲区中按优先级的每个端口分配余量缓冲区。您可以使用拥塞通知配置文件中的 MRU 和电缆长度参数控制为每个端口分配的裕量缓冲区数量和优先级。如果在触发 PFC 后仍看到轻微的入口下降,可以通过增加该端口和优先级组合的裕量缓冲区来消除这些下降。

  2. PFC Threshold- 这是入口阈值。这是入口优先级组在将 PAUSE 消息发送到上游设备之前可以增长到的最大大小。每个 PFC 优先级在每个入口端口都有自己的优先级组。PFC 阈值是在每个入口端口上按优先级组设置的。PFC 阈值中有两个组成部分:PG MIN阈值和PG shared阈值。PG shared一旦PG MIN达到优先级组的阈值,就会为相应的优先级生成 PFC。当队列低于 PFC 阈值时,交换机会发送 RESUME 消息。

  3. ECN Threshold—这是出口阈值。ECN 阈值等于 WRED 开始填充水平值。一旦出口队列超过此阈值,交换机就会开始对该队列上的数据包进行 ECN 标记。要使 DCQCN 有效,此阈值必须低于入口 PFC 阈值,以确保在交换机有机会使用 ECN 标记数据包之前不会触发 PFC。设置非常低的 WRED 填充水平会增加 ECN 标记概率。例如,使用默认共享缓冲区设置时,10% 的 WRED 起始填充级别可确保无损数据包带有 ECN 标记。但随着填充水平的提高,ECN标记的概率较小。例如,如果两个入口端口具有到同一出口端口的无损流量,并且 WRED 启动-填充级别为 50%,则不会发生 ECN 标记,因为将首先满足入口 PFC 阈值。

配置 DCQCN (Junos OS)

要启用 DCQCN,请为流量配置 ECN 和 PFC。

  1. 为 ROCEv2 流量和拥塞通知数据包 (CNP) 配置分类器。例如:
  2. 在出口端口上配置 ECN 以实现无损流量。例如:
  3. 在入口端口上配置 PFC 以实现相同的无损流量。例如:
  4. 配置共享缓冲区。例如:
    注意:

    在运行 Junos OS 的平台上提交配置时,必须遵循以下规则:

    • 您必须配置所有三个入口分区,或者不配置任何入口分区。

    • 您必须配置所有三个出口分区,或者不配置任何出口分区。

    • 所有分区的入口共享缓冲区配置总和必须为 100%。

    • 所有分区的出口共享缓冲区配置总和必须为 100%。

  5. 配置转发类并分配队列。例如:
  6. 验证您的配置。例如:
  7. 提交配置。

配置 DCQCN(Junos OS 演化版)

要启用 DCQCN,请为流量配置 ECN 和 PFC。

  1. 为 ROCEv2 流量和拥塞通知数据包 (CNP) 配置分类器。例如:
  2. 在出口端口上配置 ECN 以实现无损流量。例如:
  3. 在入口端口上配置 PFC 以实现相同的无损流量。例如:
  4. 配置共享缓冲区。例如:
    注意:

    在运行 Junos OS 演化的平台上提交配置时,必须遵循以下规则:

    • 您必须配置所有三个入口分区。

    • 所有分区的入口共享缓冲区配置总和必须为 100%。

    • 对于有损和无损缓冲区分区,入口和出口缓冲区分区百分比应相等。

    • 由于硬件限制,运行 Junos OS 演化版的 QFX5000 交换机没有用于组播流量的专用服务池,因此组播流量使用有损服务池共享缓冲区。

    无损入口缓冲区分区的设置 dynamic-threshold 是可选的。ECN 使用此选项计算无损队列的阈值。如果未配置此选项, dynamic-threshold 则使用其默认值 7。

  5. 配置转发类并分配队列。例如:
  6. 验证您的配置。例如:
  7. 提交配置。