{
  "$schema": "/api/schemas/documents.schema.json",
  "apiVersion": "1.1.0",
  "lastModified": "2026-10-21T16:57:48.012Z",
  "sourcePath": "src/main/data/docs",
  "docId": "RFC7422",
  "document": {
    "abstract": "In some instances, Service Providers (SPs) have a legal logging requirement to be able to map a subscriber's inside address with the address used on the public Internet (e.g., for abuse response). Unfortunately, many logging solutions for Carrier-Grade NATs (CGNs) require active logging of dynamic translations. CGN port assignments are often per connection, but they could optionally use port ranges. Research indicates that per-connection logging is not scalable in many residential broadband services. This document suggests a way to manage CGN translations in such a way as to significantly reduce the amount of logging required while providing traceability for abuse response. IPv6 is, of course, the preferred solution. While deployment is in progress, SPs are forced by business imperatives to maintain support for IPv4. This note addresses the IPv4 part of the network when a CGN solution is in use.",
    "abstract$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML abstract",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "authors": [
      {
        "name": "Chris Donley"
      },
      {
        "name": "Chris Grundemann"
      },
      {
        "name": "Vikas Sarawat"
      },
      {
        "name": "Karthik Sundaresan"
      },
      {
        "name": "Olivier Vautrin"
      }
    ],
    "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/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "docId": "RFC7422",
    "docId$meta": {
      "confidence": "high",
      "note": "Derived from RFC number or Datatracker identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "docLabel": "IETF RFC 7422",
    "docLabel$meta": {
      "confidence": "high",
      "note": "Constructed from provider and document identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "docNumber": "7422",
    "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/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "docTitle": "Deterministic Address Mapping to Reduce Logging in Carrier-Grade NAT Deployments",
    "docTitle$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML title",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "docType": "Informational",
    "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/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "doi": "10.17487/RFC7422",
    "doi$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML doi",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "href": "https://doi.org/10.17487/RFC7422",
    "href$meta": {
      "confidence": "high",
      "note": "Derived from DOI (https://doi.org/<doi>)",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "pages": "14",
    "pages$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML page-count",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "publicationDate": "2014-12-01",
    "publicationDate$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML date",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "publisher": "IETF",
    "publisher$meta": {
      "confidence": "high",
      "note": "Static: provider",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "references": {
      "bibliographic": [
        "IETF.draft-miles-behave-l2nat-00",
        "IETF.draft-tsou-behave-natx4-log-reduction-04",
        "IETF.draft-ietf-behave-ipfix-nat-logging-04",
        "IETF.draft-shirasaki-nat444-06",
        "RFC6146",
        "RFC6292",
        "RFC6302",
        "RFC6333",
        "RFC6335",
        "RFC6431",
        "RFC6598",
        "RFC6887",
        "RFC7021"
      ],
      "bibliographic$meta": {
        "confidence": "medium",
        "flag": "MIXED_REF_LAYOUT_RISK anchored=18 proseBlocks=24 skippedAnchorBlocks=20",
        "note": "Parsed from RFC HTML references/informative sections",
        "originalValue": [],
        "reviewRequired": true,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
        "updated": "2026-10-21T16:57:48.012Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      },
      "normative": [
        "RFC2119",
        "RFC4787",
        "RFC5382",
        "RFC6264",
        "RFC6269"
      ],
      "normative$meta": {
        "confidence": "high",
        "note": "Parsed from RFC HTML normative references sections",
        "originalValue": [],
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
        "updated": "2026-10-21T16:57:48.012Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      }
    },
    "resolvedHref": "https://www.rfc-editor.org/info/rfc7422/",
    "resolvedHref$meta": {
      "confidence": "high",
      "note": "Final URL resolved via URL redirect verification",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
      "updated": "2026-10-21T16:57:48.012Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "status": {
      "active": true,
      "active$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
        "updated": "2026-10-21T16:57:48.012Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      },
      "errataExist": true,
      "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/rfc7422/",
        "updated": "2026-10-21T16:57:48.012Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      },
      "errataUrl": [
        "https://www.rfc-editor.org/errata/rfc7422",
        "https://www.rfc-editor.org/errata_search.php?rfc=7422",
        "https://www.rfc-editor.org/rfc/inline-errata/rfc7422.html"
      ],
      "errataUrl$meta": {
        "confidence": "high",
        "note": "Parsed from errata links on RFC/Datatracker pages",
        "originalValue": [],
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
        "updated": "2026-10-21T16:57:48.012Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      },
      "latestVersion": true,
      "latestVersion$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
        "updated": "2026-10-21T16:57:48.012Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      },
      "statusNote": "Informational",
      "statusNote$meta": {
        "confidence": "high",
        "note": "Mapped from Datatracker doc.json std_level",
        "originalValue": null,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
        "updated": "2026-10-21T16:57:48.012Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      },
      "superseded": false,
      "superseded$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc7422/",
        "updated": "2026-10-21T16:57:48.012Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      }
    }
  }
}