{
  "$schema": "/api/schemas/documents.schema.json",
  "apiVersion": "1.1.0",
  "lastModified": "2026-10-20T21:16:21.002Z",
  "sourcePath": "src/main/data/docs",
  "docId": "RFC7828",
  "document": {
    "abstract": "DNS messages between clients and servers may be received over either UDP or TCP. UDP transport involves keeping less state on a busy server, but can cause truncation and retries over TCP. Additionally, UDP can be exploited for reflection attacks. Using TCP would reduce retransmits and amplification. However, clients commonly use TCP only for retries and servers typically use idle timeouts on the order of seconds. This document defines an EDNS0 option (\"edns-tcp-keepalive\") that allows DNS servers to signal a variable idle timeout. This signalling encourages the use of long-lived TCP connections by allowing the state associated with TCP transport to be managed effectively with minimal impact on the DNS transaction time.",
    "abstract$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML abstract",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
      "updated": "2026-10-20T17:31:48.591Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "authors": [
      {
        "name": "Paul Wouters"
      },
      {
        "name": "Joe Abley"
      },
      {
        "name": "Sara Dickinson"
      },
      {
        "name": "Ray Bellis"
      }
    ],
    "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/rfc7828/",
      "updated": "2026-10-20T17:31:48.591Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "docId": "RFC7828",
    "docId$meta": {
      "confidence": "high",
      "note": "Derived from RFC number or Datatracker identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
      "updated": "2026-10-20T17:31:48.590Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "docLabel": "IETF RFC 7828",
    "docLabel$meta": {
      "confidence": "high",
      "note": "Constructed from provider and document identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
      "updated": "2026-10-20T17:31:48.591Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "docNumber": "7828",
    "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/rfc7828/",
      "updated": "2026-10-20T17:31:48.591Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "docTitle": "The edns-tcp-keepalive EDNS0 Option",
    "docTitle$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML title",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
      "updated": "2026-10-20T17:31:48.591Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "docType": "Standard",
    "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/rfc7828/",
      "updated": "2026-10-20T17:31:48.591Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "doi": "10.17487/RFC7828",
    "doi$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML doi",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
      "updated": "2026-10-20T17:31:48.591Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "href": "https://doi.org/10.17487/RFC7828",
    "href$meta": {
      "confidence": "high",
      "note": "Derived from DOI (https://doi.org/<doi>)",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
      "updated": "2026-10-20T17:31:48.591Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "keywords": [
      "DNSSEC",
      "DNS",
      "TCP/IP",
      "Transport"
    ],
    "keywords$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML keywords",
      "originalValue": [
        "Long-lived",
        "DNSSEC",
        "DNS",
        "TCP/IP",
        "Transport"
      ],
      "overridden": true,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
      "updated": "2026-10-20T21:16:21.002Z",
      "version": "extractDocs.js@commit:2d729ed26f61"
    },
    "pages": "11",
    "pages$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML page-count",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
      "updated": "2026-10-20T17:31:48.591Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "publicationDate": "2016-04-01",
    "publicationDate$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML date",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
      "updated": "2026-10-20T17:31:48.591Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "publisher": "IETF",
    "publisher$meta": {
      "confidence": "high",
      "note": "Static: provider",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
      "updated": "2026-10-20T17:31:48.591Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "references": {
      "bibliographic": [
        "IETF.draft-ietf-dnsop-edns-chain-query-07",
        "IETF.draft-ietf-dprive-dns-over-tls-09",
        "RFC6824",
        "orphan/RFC7828/h:873ab75a",
        "orphan/RFC7828/h:c8e9fb3a"
      ],
      "bibliographic$meta": {
        "confidence": "medium",
        "flag": "MIXED_REF_LAYOUT_RISK anchored=14 proseBlocks=19 skippedAnchorBlocks=14",
        "note": "Parsed from RFC HTML references/informative sections",
        "originalValue": [],
        "reviewRequired": true,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
        "updated": "2026-10-20T17:31:48.591Z",
        "version": "extractDocs.js@commit:8277ba975118"
      },
      "normative": [
        "RFC1035",
        "RFC2119",
        "RFC4033",
        "RFC4786",
        "RFC6891",
        "RFC7230",
        "RFC7766"
      ],
      "normative$meta": {
        "confidence": "high",
        "note": "Parsed from RFC HTML normative references sections",
        "originalValue": [],
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
        "updated": "2026-10-20T17:31:48.591Z",
        "version": "extractDocs.js@commit:8277ba975118"
      }
    },
    "resolvedHref": "https://www.rfc-editor.org/info/rfc7828/",
    "resolvedHref$meta": {
      "confidence": "high",
      "note": "Final URL resolved via URL redirect verification",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
      "updated": "2026-10-20T17:31:48.591Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "status": {
      "active": true,
      "active$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
        "updated": "2026-10-20T17:31:48.591Z",
        "version": "extractDocs.js@commit:8277ba975118"
      },
      "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/rfc7828/",
        "updated": "2026-10-20T17:31:48.591Z",
        "version": "extractDocs.js@commit:8277ba975118"
      },
      "latestVersion": true,
      "latestVersion$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
        "updated": "2026-10-20T17:31:48.591Z",
        "version": "extractDocs.js@commit:8277ba975118"
      },
      "statusNote": "Proposed Standard",
      "statusNote$meta": {
        "confidence": "high",
        "note": "Mapped from Datatracker doc.json std_level",
        "originalValue": null,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
        "updated": "2026-10-20T17:31:48.591Z",
        "version": "extractDocs.js@commit:8277ba975118"
      },
      "superseded": false,
      "superseded$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7828/",
        "updated": "2026-10-20T17:31:48.591Z",
        "version": "extractDocs.js@commit:8277ba975118"
      }
    }
  }
}