{
  "$schema": "/api/schemas/documents.schema.json",
  "apiVersion": "1.1.0",
  "lastModified": "2026-10-14T17:05:35.191Z",
  "sourcePath": "src/main/data/docs",
  "docId": "RFC8704",
  "document": {
    "abstract": "This document identifies a need for and proposes improvement of the unicast Reverse Path Forwarding (uRPF) techniques (see RFC 3704) for detection and mitigation of source address spoofing (see BCP 38). Strict uRPF is inflexible about directionality, the loose uRPF is oblivious to directionality, and the current feasible-path uRPF attempts to strike a balance between the two (see RFC 3704). However, as shown in this document, the existing feasible-path uRPF still has shortcomings. This document describes enhanced feasible-path uRPF (EFP-uRPF) techniques that are more flexible (in a meaningful way) about directionality than the feasible-path uRPF (RFC 3704). The proposed EFP-uRPF methods aim to significantly reduce false positives regarding invalid detection in source address validation (SAV). Hence, they can potentially alleviate ISPs' concerns about the possibility of disrupting service for their customers and encourage greater deployment of uRPF techniques. This document updates RFC 3704.",
    "abstract$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML abstract",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "authors": [
      {
        "name": "Kotikalapudi Sriram"
      },
      {
        "name": "Doug Montgomery"
      },
      {
        "name": "Jeffrey Haas"
      }
    ],
    "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/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "docId": "RFC8704",
    "docId$meta": {
      "confidence": "high",
      "note": "Derived from RFC number or Datatracker identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "docLabel": "IETF RFC 8704",
    "docLabel$meta": {
      "confidence": "high",
      "note": "Constructed from provider and document identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "docNumber": "8704",
    "docNumber$meta": {
      "confidence": "high",
      "note": "Parsed from RFC info page report metadata",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "docTitle": "Enhanced Feasible-Path Unicast Reverse Path Forwarding",
    "docTitle$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML title",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "docType": "Best Practice",
    "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/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "doi": "10.17487/RFC8704",
    "doi$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML doi",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "href": "https://doi.org/10.17487/RFC8704",
    "href$meta": {
      "confidence": "high",
      "note": "Derived from DOI (https://doi.org/<doi>)",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "keywords": [
      "BGP",
      "Source Address Validation",
      "RPF",
      "uRPF",
      "DDoS",
      "Ingress Filtering"
    ],
    "keywords$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML keywords",
      "originalValue": [
        "BGP",
        "Source Address Spoofing",
        "Source Address Validation",
        "SAV",
        "Reverse Path Forwarding",
        "RPF",
        "Unicast RPF",
        "uRPF",
        "DDoS Mitigation",
        "BCP 38",
        "BCP 84"
      ],
      "overridden": true,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
      "updated": "2026-10-14T17:05:35.191Z",
      "version": "extractDocs.js@commit:8aec15acefbb"
    },
    "pages": "17",
    "pages$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML page-count",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "publicationDate": "2020-02-01",
    "publicationDate$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML date",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "publisher": "IETF",
    "publisher$meta": {
      "confidence": "high",
      "note": "Static: provider",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "references": {
      "bibliographic": [
        "10.1145-2504730.2504735",
        "RFC4036",
        "RFC4364",
        "RFC6482",
        "RFC6811",
        "RFC7454",
        "IETF.draft-sriram-opsec-urpf-improvements-00",
        "orphan/RFC8704/h:c3a02b48",
        "orphan/RFC8704/h:ef27f581",
        "orphan/RFC8704/h:1a03e291",
        "orphan/RFC8704/h:1804a48d",
        "orphan/RFC8704/h:9ca78d59",
        "orphan/RFC8704/h:824c94f4",
        "orphan/RFC8704/h:7977a0fb",
        "orphan/RFC8704/h:8ef791c4",
        "orphan/RFC8704/h:d7ee9939"
      ],
      "bibliographic$meta": {
        "confidence": "high",
        "note": "Parsed from RFC HTML references/informative sections",
        "originalValue": [],
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
        "updated": "2026-10-14T16:16:21.209Z",
        "version": "extractDocs.js@commit:1ff63569c1a0"
      },
      "normative": [
        "RFC2119",
        "RFC2827",
        "RFC3704",
        "RFC4271",
        "RFC8174"
      ],
      "normative$meta": {
        "confidence": "high",
        "note": "Parsed from RFC HTML normative references sections",
        "originalValue": [],
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
        "updated": "2026-10-14T16:16:21.209Z",
        "version": "extractDocs.js@commit:1ff63569c1a0"
      }
    },
    "resolvedHref": "https://www.rfc-editor.org/info/rfc8704/",
    "resolvedHref$meta": {
      "confidence": "high",
      "note": "Final URL resolved via URL redirect verification",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
      "updated": "2026-10-14T16:16:21.209Z",
      "version": "extractDocs.js@commit:1ff63569c1a0"
    },
    "status": {
      "active": true,
      "active$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
        "updated": "2026-10-14T16:16:21.209Z",
        "version": "extractDocs.js@commit:1ff63569c1a0"
      },
      "amends": [
        "RFC3704"
      ],
      "amends$meta": {
        "confidence": "high",
        "note": "Parsed from RFC index XML",
        "originalValue": [],
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
        "updated": "2026-10-14T16:16:21.209Z",
        "version": "extractDocs.js@commit:1ff63569c1a0"
      },
      "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/rfc8704/",
        "updated": "2026-10-14T16:16:21.209Z",
        "version": "extractDocs.js@commit:1ff63569c1a0"
      },
      "latestVersion": true,
      "latestVersion$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
        "updated": "2026-10-14T16:16:21.209Z",
        "version": "extractDocs.js@commit:1ff63569c1a0"
      },
      "statusNote": "Best Current Practice",
      "statusNote$meta": {
        "confidence": "high",
        "note": "Mapped from Datatracker doc.json std_level",
        "originalValue": null,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
        "updated": "2026-10-14T16:16:21.209Z",
        "version": "extractDocs.js@commit:1ff63569c1a0"
      },
      "superseded": false,
      "superseded$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc8704/",
        "updated": "2026-10-14T16:16:21.209Z",
        "version": "extractDocs.js@commit:1ff63569c1a0"
      }
    }
  }
}