{
  "$schema": "/api/schemas/documents.schema.json",
  "apiVersion": "1.1.0",
  "lastModified": "2026-10-20T17:29:43.504Z",
  "sourcePath": "src/main/data/docs",
  "docId": "RFC6346",
  "document": {
    "abstract": "We are facing the exhaustion of the IANA IPv4 free IP address pool. Unfortunately, IPv6 is not yet deployed widely enough to fully replace IPv4, and it is unrealistic to expect that this is going to change before the depletion of IPv4 addresses. Letting hosts seamlessly communicate in an IPv4 world without assigning a unique globally routable IPv4 address to each of them is a challenging problem. This document proposes an IPv4 address sharing scheme, treating some of the port number bits as part of an extended IPv4 address (Address plus Port, or A+P). Instead of assigning a single IPv4 address to a single customer device, we propose to extend the address field by using bits from the port number range in the TCP/UDP header as additional endpoint identifiers, thus leaving a reduced range of ports available to applications. This means assigning the same IPv4 address to multiple clients (e.g., Customer Premises Equipment (CPE), mobile phones), each with its assigned port range. In the face of IPv4 address exhaustion, the need for addresses is stronger than the need to be able to address thousands of applications on a single host. If address translation is needed, the end-user should be in control of the translation process -- not some smart boxes in the core. This document defines an Experimental Protocol for the Internet community.",
    "abstract$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML abstract",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "authors": [
      {
        "name": "Randy Bush"
      }
    ],
    "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/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "docId": "RFC6346",
    "docId$meta": {
      "confidence": "high",
      "note": "Derived from RFC number or Datatracker identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "docLabel": "IETF RFC 6346",
    "docLabel$meta": {
      "confidence": "high",
      "note": "Constructed from provider and document identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "docNumber": "6346",
    "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/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "docTitle": "The Address plus Port (A+P) Approach to the IPv4 Address Shortage",
    "docTitle$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML title",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "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/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "doi": "10.17487/RFC6346",
    "doi$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML doi",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "href": "https://doi.org/10.17487/RFC6346",
    "href$meta": {
      "confidence": "high",
      "note": "Derived from DOI (https://doi.org/<doi>)",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "pages": "38",
    "pages$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML page-count",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "publicationDate": "2011-08-01",
    "publicationDate$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML date",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "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/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "version": "extractDocs.js@commit:8277ba975118"
    },
    "references": {
      "bibliographic": [
        "RFC2827",
        "RFC1191",
        "RFC1858",
        "RFC1918",
        "RFC3715",
        "RFC5737",
        "RFC6052",
        "RFC6146",
        "RFC6269",
        "RFC6333",
        "orphan/RFC6346/h:3217e896",
        "orphan/RFC6346/h:d4644fc1",
        "orphan/RFC6346/h:1e3be2ef",
        "orphan/RFC6346/h:b3745cf7",
        "orphan/RFC6346/h:0454aae9",
        "orphan/RFC6346/h:704b9371",
        "orphan/RFC6346/h:d3af56d6",
        "orphan/RFC6346/h:60a27175",
        "orphan/RFC6346/h:9785312b"
      ],
      "bibliographic$meta": {
        "confidence": "medium",
        "flag": "MIXED_REF_LAYOUT_RISK anchored=19 proseBlocks=32 skippedAnchorBlocks=22",
        "note": "Parsed from RFC HTML references/informative sections",
        "originalValue": [],
        "reviewRequired": true,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc6346/",
        "updated": "2026-10-20T17:29:43.504Z",
        "version": "extractDocs.js@commit:8277ba975118"
      },
      "normative": [
        "RFC2119"
      ],
      "normative$meta": {
        "confidence": "high",
        "note": "Parsed from RFC HTML normative references sections",
        "originalValue": [],
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc6346/",
        "updated": "2026-10-20T17:29:43.504Z",
        "version": "extractDocs.js@commit:8277ba975118"
      }
    },
    "resolvedHref": "https://www.rfc-editor.org/info/rfc6346/",
    "resolvedHref$meta": {
      "confidence": "high",
      "note": "Final URL resolved via URL redirect verification",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc6346/",
      "updated": "2026-10-20T17:29:43.504Z",
      "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/rfc6346/",
        "updated": "2026-10-20T17:29:43.504Z",
        "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/rfc6346/",
        "updated": "2026-10-20T17:29:43.504Z",
        "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/rfc6346/",
        "updated": "2026-10-20T17:29:43.504Z",
        "version": "extractDocs.js@commit:8277ba975118"
      },
      "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/rfc6346/",
        "updated": "2026-10-20T17:29:43.504Z",
        "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/rfc6346/",
        "updated": "2026-10-20T17:29:43.504Z",
        "version": "extractDocs.js@commit:8277ba975118"
      }
    }
  }
}