丢弃拥塞通知
丢弃拥塞通知 (DCN) 是一种基于数据包修整的拥塞管理技术。遇到拥塞的设备不会在发生拥塞时丢弃数据包,而是将数据包的有效负载削减到更小的大小。然后,设备通过高优先级队列将修整后的数据包传输到其目的地。终端主机识别因拥塞而丢弃的特定 DCN 数据包,并快速请求重新传输丢失的数据包。原始发送方主机在收到 DCN 反馈后,会立即重新传输确切的数据包并调整流速。
概述
在典型的基于以太网的网络中,当缓冲区因拥塞而已满时,数据包将从出口队列中删除。对于像 TCP 这样的协议,这会导致需要重新传输数据包。要实现重传,终端主机必须管理复杂的状态机,这可能会对整体网络吞吐量产生负面影响。
另一种方法是让交换机实施拥塞通知机制,例如显式拥塞通知 (ECN)。ECN 允许网络在数据包丢失之前向接收方发出拥塞信号。但是,ECN 也会降低吞吐量,因为在缓冲区完全填满之前,必须检测并标记拥塞。
无损网络采用优先流控制 (PFC) 等功能,以防止拥塞期间数据包丢失。PFC 向对等设备发出信令以降低其传输速率。然而,PFC 也带来了挑战,包括线头 (HOL) 阻塞、PFC 死锁和拥塞传播等问题。
丢弃拥塞通知 (DCN) 是一种基于数据包修整的拥塞管理技术。遇到拥塞的设备不会在发生拥塞时丢弃数据包,而是将数据包的有效负载缩减到更小的大小(仅显示数据包标头和一小部分有效负载)。然后,设备通过高优先级队列将修整后的数据包传输到其目的地。网络中的后续跃点可识别带有 DCN 标记的数据包,并将它们定向到高优先级队列。终端主机必须能够处理修整后的 DCN 数据包,识别由于拥塞而丢弃的特定数据包,并快速请求重新传输丢失的数据包。原始发送方主机在收到 DCN 反馈后,会立即重新传输确切的数据包并调整流速。
启用 DCN 后,设备会将丢弃的数据包修整为单个信元的大小。当应用于大型数据包(例如4KB)时,修整是最有效的,因为它会显著降低数据速率。相反,如果剪裁的数据包仅略大于单个信元(206 字节),则几乎不会减少数据,如果修剪后的数据包使用了很大一部分带宽,则数据缩减甚至会造成不利影响。
好处
-
使用常规以太网结构提供更低的端到端延迟。
-
在发起重传请求之前,终端主机无需长时间维护状态机来检测丢失的数据包。
-
借助 DCN,终端主机可以及时请求重新传输丢失的确切数据包,从而更快地完成流量。
配置
DCN 仅适用于 UDP 单播流量。要使设备能够提供 DCN 传输,您需要将 UDP 端口号设置为 DCN 协议号,并为 DCN 修整的数据包设置严格高优先级转发类和队列。
要使设备在拥塞时也能创建 DCN 修整的数据包,还需要您在一个或多个入口接口上启用 DCN。
下面是一个配置示例:
set class-of-service drop-congestion-notification forwarding-class dcn set class-of-service drop-congestion-notification udp-port 13742 set class-of-service interface et-0/0/0 drop-congestion-notification
运行以下命令以验证是否已启用 DCN:
-
user@host> show class-of-service drop-congestion-notification Queue-num : 7 UDP Port Number : 13742
-
user@host> show class-of-service interface et-0/0/0 Physical interface: et-0/0/0, Index: 1205 Maximum usable queues: 10, Queues in use: 9 Exclude aggregate overhead bytes: disabled Logical interface aggregate statistics: disabled Scheduler map: default Congestion-notification: Disabled Drop congestion notification : Enabled Logical interface: et-0/0/0.0, Index: 1003 Object Name Type Index Classifier dscp-default dscp 1