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 时正在传输的数据包,以及上游设备在处理 PAUSE 消息时发送的数据包。您可以从全局共享缓冲区中按每个优先级为每个端口分配余量缓冲区。您可以使用 CNP 中的 MRU 和电缆长度参数控制为每个端口和优先级分配的裕量缓冲区量。如果即使在触发 PFC 后仍看到轻微的入口丢弃,则可以通过增加该端口和优先级组合的余量缓冲区来消除这些丢弃。

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

  3. ECN Threshold— 这是出口阈值。ECN 阈值等于 WRED 开始填充级别值。一旦出口队列超过此阈值,交换机就会开始对该队列上的数据包进行 ECN 标记。要使 DCQCN 有效,此阈值必须低于入口 PFC 阈值,以确保在交换机有机会使用 ECN 标记数据包之前,PFC 不会被触发。设置非常低的 WRED 填充水平会增加 ECN 标记概率。例如,在默认共享缓冲区设置中,WRED 起始填充级别为 10% 可确保对无损数据包进行 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 Evolved 的QFX5000交换机没有专门用于组播流量的服务池,因此组播流量使用有损服务池共享缓冲区。

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

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