ON THIS PAGE
Drop Congestion Notification
Drop Congestion Notification (DCN) is a congestion management technique based on packet trimming. Rather than dropping a packet when congestion occurs, the device experiencing congestion trims the packet’s payload to a much smaller size. The device then transmits the trimmed packet through a high-priority queue toward its destination. End hosts identify the specific DCN packet that was dropped due to congestion, and quickly requesting retransmission of the lost packet. The original sender host, upon receiving the DCN feedback, immediately re-transmits the exact packet and adjusts the flow rate.
Overview
In typical Ethernet based networks, when buffers are full due to congestion, packets are dropped from the egress queues. For protocols like TCP, this results in the need for packet retransmission. To enable retransmissions, end hosts must manage a complex state machine, which can negatively impact overall network throughput.
An alternative approach is for switches to implement congestion notification mechanisms, such as Explicit Congestion Notification (ECN). ECN allows the network to signal congestion to the receiver before packet loss occurs. However, ECN also introduces some reduction in throughput, as the congestion must be detected and marked before the buffers are completely full.
Lossless networks incorporate features like Priority Flow Control (PFC) to prevent packet loss during congestion. PFC works signaling the peer device to reduce its transmission rate. However, PFC also introduces challenges, including issues such as Head-of-Line (HOL) blocking, PFC deadlock, and congestion propagation.
Drop Congestion Notification (DCN) is a congestion management technique based on packet trimming. Rather than dropping a packet when congestion occurs, the device experiencing congestion trims the packet’s payload to a much smaller size (just the packet header and a small part of the payload). The device then transmits the trimmed packet through a high-priority queue toward its destination. Subsequent hops in the network recognize DCN-marked packets and direct them to high-priority queues as well. End hosts must be capable of processing the trimmed DCN packets, identifying the specific packets that were dropped due to congestion, and quickly requesting retransmission of those lost packets. The original sender host, upon receiving the DCN feedback, immediately re-transmits the exact packet and adjusts the flow rate.
With DCN enabled, the device trims a dropped packet to the size of a single cell. Trimming is most effective when it is applied to large data packets (e.g. 4KB), because it reduces the data rate significantly. Conversely, trimming packets just fractionally larger than a single cell (206 bytes) provides little data reduction, and can even be detrimental if a large fraction of bandwidth is used by trimmed packets.
Benefits
-
Provide lower end-to-end latency using regular Ethernet fabric.
-
No need for the end host must to maintain a state machine for an extended period to detect missing packets before initiating a retransmission request.
-
With DCN, the end host can promptly request retransmission of the exact missing packets, enabling faster flow completion.
Configuration
DCN works only for UDP unicast traffic. Enabling a device to provide DCN transit requires you to set a UDP port number as the DCN protocol number and a strict-high priority forwarding class and queue for the DCN trimmed packets.
Enabling the device to also create DCN trimmed packets in case of congestion requires you to also enable DCN on one or more ingress interfaces.
Below is an example configuration:
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
Run the following commands to verify that DCN is enabled:
-
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