{
  "$schema": "/api/schemas/documents.schema.json",
  "apiVersion": "1.1.0",
  "lastModified": "2026-10-20T22:12:32.815Z",
  "sourcePath": "src/main/data/docs",
  "docId": "RFC9331",
  "document": {
    "abstract": "This specification defines the protocol to be used for a new network service called Low Latency, Low Loss, and Scalable throughput (L4S). L4S uses an Explicit Congestion Notification (ECN) scheme at the IP layer that is similar to the original (or 'Classic') ECN approach, except as specified within. L4S uses 'Scalable' congestion control, which induces much more frequent control signals from the network, and it responds to them with much more fine-grained adjustments so that very low (typically sub-millisecond on average) and consistently low queuing delay becomes possible for L4S traffic without compromising link utilization. Thus, even capacity-seeking (TCP-like) traffic can have high bandwidth and very low delay at the same time, even during periods of high traffic load. The L4S identifier defined in this document distinguishes L4S from 'Classic' (e.g., TCP-Reno-friendly) traffic. Then, network bottlenecks can be incrementally modified to distinguish and isolate existing traffic that still follows the Classic behaviour, to prevent it from degrading the low queuing delay and low loss of L4S traffic. This Experimental specification defines the rules that L4S transports and network elements need to follow, with the intention that L4S flows neither harm each other's performance nor that of Classic traffic. It also suggests open questions to be investigated during experimentation. Examples of new Active Queue Management (AQM) marking algorithms and new transports (whether TCP-like or real time) are specified separately.",
    "abstract$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML abstract",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "authors": [
      {
        "name": "Koen De Schepper"
      },
      {
        "name": "Bob Briscoe"
      }
    ],
    "authors$meta": {
      "confidence": "high",
      "note": "Parsed from Datatracker doc page article:author (profile full names)",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "docId": "RFC9331",
    "docId$meta": {
      "confidence": "high",
      "note": "Derived from RFC number or Datatracker identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "docLabel": "IETF RFC 9331",
    "docLabel$meta": {
      "confidence": "high",
      "note": "Constructed from provider and document identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "docNumber": "9331",
    "docNumber$meta": {
      "confidence": "high",
      "note": "From the RFC index entry (rfc-index.xml <doc-id>)",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "docTitle": "The Explicit Congestion Notification (ECN) Protocol for Low Latency, Low Loss, and Scalable Throughput (L4S)",
    "docTitle$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML title",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "docType": "Experimental",
    "docType$meta": {
      "confidence": "high",
      "note": "Mapped from Datatracker std_level or RFC status text",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "doi": "10.17487/RFC9331",
    "doi$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML doi",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "href": "https://doi.org/10.17487/RFC9331",
    "href$meta": {
      "confidence": "high",
      "note": "Derived from DOI (https://doi.org/<doi>)",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "keywords": [
      "Burstiness",
      "Queuing Delay",
      "One-way Delay",
      "RTT",
      "Jitter",
      "Congestion Control",
      "Congestion Avoidance",
      "Quality Of Service",
      "QoS",
      "Quality of Experience",
      "QoE",
      "AQM",
      "ECN",
      "Pacing"
    ],
    "keywords$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML keywords",
      "originalValue": [
        "Burstiness",
        "Queuing Delay",
        "One Way Delay",
        "Round-Trip Time",
        "RTT",
        "Jitter",
        "Congestion Control",
        "Congestion Avoidance",
        "Quality Of Service",
        "QoS",
        "Quality of Experience",
        "QoE",
        "AQM",
        "ECN",
        "Pacing"
      ],
      "overridden": true,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T22:12:32.815Z",
      "version": "extractDocs.js@commit:301bfdf288d8"
    },
    "pages": "52",
    "pages$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML page-count",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "publicationDate": "2023-01-01",
    "publicationDate$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML date",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "publisher": "IETF",
    "publisher$meta": {
      "confidence": "high",
      "note": "Static: provider",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "references": {
      "bibliographic": [
        "10.1109-TC.2014.2345393",
        "IETF.draft-ietf-tcpm-accurate-ecn-22",
        "10.1145-1993744.1993753",
        "IETF.draft-cardwell-iccrg-bbr-congestion-control-02",
        "GITHUB.google.bbr",
        "10.1109-LANMAN.2019.8847054",
        "IETF.draft-sridharan-tcpm-ctcp-02",
        "IETF.draft-briscoe-docsis-q-protection-06",
        "10.1145-1111322.1111336",
        "IETF.draft-ietf-tcpm-generalized-ecn-10",
        "IETF.draft-ietf-tsvwg-ecn-encap-guidelines-17",
        "10.48550-arXiv.1911.00710",
        "IETF.draft-ietf-tsvwg-rfc6040update-shim-15",
        "GITHUB.heistp.l4s-tests",
        "IETF.draft-briscoe-tsvwg-l4s-diffserv-02",
        "10.48550-arXiv.2209.01078",
        "IETF.draft-ietf-tsvwg-l4sops-03",
        "IETF.draft-ietf-tsvwg-nqb-15",
        "10.1145-2999572.2999578",
        "IETF.draft-briscoe-iccrg-prague-congestion-control-01",
        "IETF.draft-mathis-iccrg-relentless-tcp-00",
        "RFC2474",
        "RFC3246",
        "RFC3540",
        "RFC3649",
        "RFC4301",
        "RFC4302",
        "RFC4303",
        "RFC4340",
        "RFC4341",
        "RFC4342",
        "RFC4960",
        "RFC5033",
        "RFC5129",
        "RFC5348",
        "RFC5562",
        "RFC5622",
        "RFC5681",
        "RFC5706",
        "RFC5865",
        "RFC5925",
        "RFC6040",
        "RFC6077",
        "RFC6660",
        "RFC6675",
        "RFC7560",
        "RFC7567",
        "RFC7713",
        "RFC8033",
        "RFC8083",
        "RFC8085",
        "RFC8174",
        "RFC8257",
        "RFC8290",
        "RFC8298",
        "RFC8311",
        "RFC8312",
        "RFC8511",
        "RFC8888",
        "RFC8985",
        "RFC9000",
        "RFC9001",
        "RFC9147",
        "RFC9330",
        "RFC9332",
        "10.1145-505696.505704",
        "GITHUB.EricssonResearch.scream",
        "IETF.draft-stewart-tsvwg-sctpecn-05",
        "10.48550-arXiv.1904.07598",
        "IETF.draft-ietf-trill-ecn-support-07",
        "10.1145-1080091.1080098",
        "orphan/RFC9331/h:6cd08096",
        "orphan/RFC9331/h:fccc17f3",
        "orphan/RFC9331/h:7d6702b3",
        "orphan/RFC9331/h:4d0f0612",
        "orphan/RFC9331/h:972b6a5d",
        "orphan/RFC9331/h:5a8f6f22",
        "orphan/RFC9331/h:abf2e6d5",
        "orphan/RFC9331/h:c47f0ff2",
        "orphan/RFC9331/h:683fcdf3",
        "orphan/RFC9331/h:1f5202a4"
      ],
      "bibliographic$meta": {
        "confidence": "high",
        "note": "Parsed from RFC HTML references/informative sections",
        "originalValue": [],
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
        "updated": "2026-10-20T21:47:42.743Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      },
      "normative": [
        "RFC2119",
        "RFC3168",
        "RFC4774",
        "RFC6679"
      ],
      "normative$meta": {
        "confidence": "high",
        "note": "Parsed from RFC HTML normative references sections",
        "originalValue": [],
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
        "updated": "2026-10-20T21:47:42.743Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      }
    },
    "resolvedHref": "https://www.rfc-editor.org/info/rfc9331/",
    "resolvedHref$meta": {
      "confidence": "high",
      "note": "Final URL resolved via URL redirect verification",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
      "updated": "2026-10-20T21:47:42.743Z",
      "version": "extractDocs.js@commit:92f3ced618ff"
    },
    "status": {
      "active": true,
      "active$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
        "updated": "2026-10-20T21:47:42.743Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      },
      "errataExist": false,
      "errataExist$meta": {
        "confidence": "high",
        "note": "Derived from presence of errata links on RFC/Datatracker pages",
        "originalValue": null,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
        "updated": "2026-10-20T21:47:42.743Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      },
      "latestVersion": true,
      "latestVersion$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
        "updated": "2026-10-20T21:47:42.743Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      },
      "statusNote": "Experimental",
      "statusNote$meta": {
        "confidence": "high",
        "note": "Mapped from Datatracker doc.json std_level",
        "originalValue": null,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
        "updated": "2026-10-20T21:47:42.743Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      },
      "superseded": false,
      "superseded$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9331/",
        "updated": "2026-10-20T21:47:42.743Z",
        "version": "extractDocs.js@commit:92f3ced618ff"
      }
    }
  }
}