{
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-31",
  "slug": "explicit-congestion-notification",
  "term": "Explicit Congestion Notification",
  "aliases": [
    "ECN"
  ],
  "definition": "Explicit Congestion Notification uses an IP-header field to signal network congestion to capable endpoints without relying solely on packet drops.",
  "note": "Header fields: The IPv4 DS octet and IPv6 Traffic Class octet contain a six-bit DSCP and a separate two-bit ECN field. ECN encodes 00 as Not-ECT, 01 as ECT(1), 10 as ECT(0), and 11 as Congestion Experienced (CE). A DSCP value is not an ECN codepoint. [dscp] [ecn]\n\nDecoding example: The constructed octet 0x6a contains DSCP 26 and ECT(0); 0x6b retains DSCP 26 but carries CE. This is bit-field arithmetic, not a packet capture or a recommended RoCE setting. [ecn]\n\nMarking: A network device can set the Congestion Experienced codepoint in an ECN-capable IP packet and forward it instead of dropping it to signal congestion. The receiving endpoint observes the mark. [ecn]\n\nFeedback: Transport support carries the indication back to the sender and defines its response. Classic TCP feedback and RoCEv2 congestion notification packets are different mechanisms using IP congestion marking. ECN is not the name of a particular rate-control algorithm. [ecn] [roce-qos]\n\nLoss: ECN is not a losslessness guarantee; congestion can still require packet drops. A congestion mark alone does not demonstrate sender reaction or bounded latency. [ecn]\n\nInterpretation: ECT(0) and ECT(1) are not universally interchangeable. RFC 8311 permits specified experimental differences; the Experimental L4S protocol uses ECT(1) to identify traffic requesting L4S treatment, with transport requirements beyond setting the bits. This does not imply that a RoCE configuration implements L4S. [ecn-experiments] [l4s-ecn]\n\nObservation: RFC 3168 leaves an existing CE codepoint unchanged when a router forwards the packet. Diagnostic inference: CE alone cannot identify which router marked the packet, count congested hops or measure their queue occupancy. It is a path congestion indication, not a per-hop trace. [ecn]",
  "related": [
    "roce-v2",
    "roce-congestion-notification-packet"
  ],
  "citations": [
    {
      "id": "ecn",
      "title": "RFC 3168: ECN in IP and transport feedback, sections 4-6",
      "url": "https://www.rfc-editor.org/rfc/rfc3168.html",
      "accessed": "2026-10-31"
    },
    {
      "id": "roce-qos",
      "title": "NVIDIA Cumulus Linux 5.12: default configuration and RoCE lossy mode",
      "url": "https://docs.nvidia.com/networking-ethernet-software/cumulus-linux-512/Layer-1-and-Switch-Ports/Quality-of-Service/RDMA-over-Converged-Ethernet-RoCE/",
      "accessed": "2026-10-31"
    },
    {
      "id": "dscp",
      "title": "RFC 2474, section 3: six-bit Differentiated Services Codepoint",
      "url": "https://www.rfc-editor.org/rfc/rfc2474.html",
      "accessed": "2026-10-31"
    },
    {
      "id": "ecn-experiments",
      "title": "RFC 8311, sections 2.2 and 4.2: ECN marking differences and ECT(1) experimentation",
      "url": "https://www.rfc-editor.org/rfc/rfc8311.html",
      "accessed": "2026-10-31"
    },
    {
      "id": "l4s-ecn",
      "title": "RFC 9331 (Experimental), sections 4.1-4.3 and 5.1: L4S identification and transport requirements",
      "url": "https://www.rfc-editor.org/rfc/rfc9331.html",
      "accessed": "2026-10-31"
    }
  ],
  "provenance": [
    "Primary-source review of RFC 3168 and versioned RoCE documentation; no network experiment or performance measurement.",
    "The RFC supplies the IP mechanism and classic transport context, not an assertion that every later ECN scheme has identical feedback or codepoint semantics.",
    "The two octets are a constructed decoding illustration, not observed traffic; the L4S citation qualifies ECN interpretation and establishes no RoCE deployment support.",
    "The limitation on locating or counting congested hops is a diagnostic inference from RFC 3168 section 5, not a new packet capture or queue measurement."
  ]
}
