Explicit Congestion Notification
Explicit Congestion Notification (ECN) is a network protocol extension that enables routers to explicitly signal impending congestion to endpoints without dropping packets, thereby improving the efficiency of congestion control in IP networks.[1] ECN was first proposed on an experimental basis in RFC 2481 in January 1999, before being advanced to standards track and defined in RFC 3168, published in September 2001.[2][1] ECN integrates with both the Internet Protocol (IP) and Transmission Control Protocol (TCP) by repurposing two bits in the IP header—specifically bits 6 and 7 of the Differentiated Services (DS) field in IPv4 or the Traffic Class field in IPv6—to indicate ECN capability and congestion status.[1] These bits define four codepoints:00 for Not-ECN-Capable Transport (Not-ECT), indicating non-ECN support; 10 for ECN-Capable Transport (ECT(0)); 01 for ECT(1), which provides differentiation for potential future uses; and 11 for Congestion Experienced (CE), which routers set to mark packets when queue thresholds signal congestion.[1]
In operation, a TCP sender negotiates ECN capability during the connection setup by setting the ECN-Echo (ECE) and Congestion Window Reduced (CWR) flags in the SYN and SYN-ACK segments; upon agreement, the sender marks outgoing packets with an ECT codepoint.[1] If a router detects congestion via mechanisms like Random Early Detection (RED), it sets the CE codepoint on the packet instead of discarding it, allowing the receiver to echo this indication back to the sender using the ECE flag in acknowledgments.[1] The sender then responds by reducing its congestion window as if a packet loss had occurred and signals confirmation to the receiver via the CWR flag, ensuring end-to-end feedback without interrupting data flow.[1]
This approach addresses the limitations of traditional TCP congestion control, which relies solely on packet drops to infer network overload, by providing proactive notification that reduces latency and packet loss, particularly benefiting real-time and delay-sensitive applications.[1] ECN supports incremental deployment, as non-ECN devices can coexist by treating ECN-marked packets as normal, though middleboxes may require configuration to avoid interfering with ECN signaling.[1] Subsequent standards, such as RFC 6679 for RTP over UDP[3] and RFC 9331 for Low Latency, Low Loss, Scalable throughput (L4S) service,[4] have extended ECN's applicability to other protocols and advanced congestion management scenarios.