<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" docName="draft-ietf-savnet-intra-domain-problem-statement-26" number="10078" category="info" updates="" obsoletes="" consensus="true" submissionType="IETF" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" prepTime="2026-10-31T00:27:35" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-savnet-intra-domain-problem-statement-26" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc10078" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Intra-Domain SAVNET Problem Statement">Problem Statement, Gap Analysis, and Requirements for Intra-Domain Source Address Validation</title>
    <seriesInfo name="RFC" value="10078" stream="IETF"/>
    <author initials="L." surname="Qin" fullname="Lancheng Qin">
      <organization showOnFrontPage="true">Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>qinlc@mail.zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="D." surname="Li" fullname="Dan Li">
      <organization showOnFrontPage="true">Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>tolidan@tsinghua.edu.cn</email>
      </address>
    </author>
    <author initials="J." surname="Wu" fullname="Jianping Wu">
      <organization showOnFrontPage="true">Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>jianping@cernet.edu.cn</email>
      </address>
    </author>
    <author initials="M." surname="Huang" fullname="Mingqing Huang">
      <organization showOnFrontPage="true">Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>huangmq@mail.zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="N." surname="Geng" fullname="Nan Geng">
      <organization showOnFrontPage="true">Huawei</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>gengnan@huawei.com</email>
      </address>
    </author>
    <date month="10" year="2026"/>
    <area>RTG</area>
    <workgroup>savnet</workgroup>
    <keyword>SAV</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">Source Address Validation (SAV) is an important means to mitigate IP source address spoofing (RFC 2827). This document analyzes the gaps in current operational mechanisms for intra-domain SAV. It also identifies the properties that new intra-domain SAV mechanisms are expected to provide.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This document is not an Internet Standards Track specification; it is
            published for informational purposes.  
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by the
            Internet Engineering Steering Group (IESG).  Not all documents
            approved by the IESG are candidates for any level of Internet
            Standard; see Section 2 of RFC 7841. 
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc10078" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2026 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-problem-statement">Problem Statement</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-current-operational-intra-d">Current Operational Intra-Domain SAV Mechanisms</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-gap-analysis">Gap Analysis</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-asymmetric-routing-scenario">Asymmetric Routing Scenario</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-hidden-prefix-scenario">Hidden Prefix Scenario</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-for-new-sav-me">Requirements for New SAV Mechanisms</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-accurate-validation">Accurate Validation</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-automatic-updates">Automatic Updates</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-incremental-deployment-supp">Incremental Deployment Support</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.4">
                <t indent="0" pn="section-toc.1-1.5.2.4.1"><xref derivedContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-no-adverse-impact-on-routin">No Adverse Impact on Routing Convergence and Fast Reroute</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.5">
                <t indent="0" pn="section-toc.1-1.5.2.5.1"><xref derivedContent="5.5" format="counter" sectionFormat="of" target="section-5.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-authentication-of-informati">Authentication of Information Used for SAV</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="sec-intro" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">Source Address Validation (SAV) defends against IP source address spoofing <xref target="RFC2827" format="default" sectionFormat="of" derivedContent="RFC2827"/>. Network operators can enforce SAV at the following levels (see <xref target="RFC5210" format="default" sectionFormat="of" derivedContent="RFC5210"/>):</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1-2">
        <li pn="section-1-2.1">
          <t indent="0" pn="section-1-2.1.1">IP SAV in the access network</t>
        </li>
        <li pn="section-1-2.2">
          <t indent="0" pn="section-1-2.2.1">IP SAV at intra-AS/ingress point</t>
        </li>
        <li pn="section-1-2.3">
          <t indent="0" pn="section-1-2.3.1">IP SAV in the inter-AS case (neighboring Autonomous System (AS))</t>
        </li>
      </ul>
      <t indent="0" pn="section-1-3">Some access networks have already deployed SAV mechanisms. These mechanisms are typically deployed on switches in the access network and prevent hosts connected to those switches from using the source address of another host on the Internet <xref target="RFC5210" format="default" sectionFormat="of" derivedContent="RFC5210"/>. Mechanisms include:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1-4">
        <li pn="section-1-4.1">
          <t indent="0" pn="section-1-4.1.1">Source Address Validation Improvement (SAVI) Solution for DHCP <xref target="RFC7513" format="default" sectionFormat="of" derivedContent="RFC7513"/></t>
        </li>
        <li pn="section-1-4.2">
          <t indent="0" pn="section-1-4.2.1">IP Source Guard (IPSG) based on DHCP snooping <xref target="IPSG" format="default" sectionFormat="of" derivedContent="IPSG"/></t>
        </li>
        <li pn="section-1-4.3">
          <t indent="0" pn="section-1-4.3.1">Cable Source-Verify <xref target="cable-verify" format="default" sectionFormat="of" derivedContent="cable-verify"/></t>
        </li>
      </ul>
      <t indent="0" pn="section-1-5">However, access-network SAV mechanisms are not universally deployed <xref target="CAIDA-spoofer" format="default" sectionFormat="of" derivedContent="CAIDA-spoofer"/>. Therefore, intra-domain (i.e., intra-AS) SAV and inter-domain (i.e., inter-AS) SAV are required <xref target="RFC5210" format="default" sectionFormat="of" derivedContent="RFC5210"/>. For the purpose of this document, intra-domain SAV is defined as follows:</t>
      <t indent="3" pn="section-1-6">The AS validates the source addresses of data traffic that it originates directly or indirectly. Intra-domain SAV is applied at external interfaces (on routers) facing entities that are not deployed as neighboring ASes and are therefore not covered by inter-domain SAV. For example, as illustrated in <xref target="intra-domain" format="default" sectionFormat="of" derivedContent="Figure 1"/>, an entity can be a single host, a set of hosts, or a customer network with no AS that manages one or more IP prefixes. The entity may source traffic using prefixes assigned by the AS or its own Bring Your Own IP (BYOIP) prefixes. From the perspective of other ASes, such traffic is originated by the AS.</t>
      <t indent="0" pn="section-1-7">SAV on traffic received on external interfaces facing a neighboring AS is considered inter-domain SAV, regardless of whether the neighboring AS uses a public Autonomous System Number (ASN) or a private ASN. SAV on internal interfaces (e.g., interfaces between Router 1 and Router 3 in <xref target="intra-domain" format="default" sectionFormat="of" derivedContent="Figure 1"/>) is also outside the scope of this document. This is because routers inside the same AS are generally assumed to be trusted, so SAV on internal interfaces provides limited additional benefit when SAV is already applied at external interfaces. In addition, techniques such as fast reroute can make SAV at internal interfaces technically challenging.</t>
      <figure anchor="intra-domain" align="center" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-deployment-locations-of-int">Deployment Locations of Intra-Domain SAV</name>
        <artwork align="left" pn="section-1-8.1">
    +--------------------+
    |  A neighboring AS  |
    +--------------------+
              |
              |
              |
+-------------|-------------------------------------+
|Domain       |                                     |
|         +----------+               +----------+   |
|         | Router 3 +---------------+ Router 4 |   |
|         +----------+               +----------+   |
|          /        \                     |         |
|         /          \                    |         |
|        /            \                   |         |
| +----------+     +----------+      +----------+   |
| | Router 1 |     | Router 2 +------+ Router 5 |   |
| +------*---+     +--*-------+      +----X-----+   |
|        /\           /\                  /\        |
|         \           /                   |         |
+----------\---------/--------------------|---------+
       +----------------+         +---------------+
       | A customer     |         | A single host |
       | network with   |         | or a set of   |
       | no AS          |         | hosts         |
       +----------------+         +---------------+</artwork>
      </figure>
      <t indent="0" pn="section-1-9">Intra-domain SAV is applied at interfaces "*" and "X".</t>
      <t indent="0" pn="section-1-10">This document analyzes the gaps in current operational mechanisms for intra-domain SAV. It also identifies the properties that new intra-domain SAV mechanisms are expected to provide.</t>
      <section anchor="terminology" numbered="true" removeInRFC="false" toc="include" pn="section-1.1">
        <name slugifiedName="name-terminology">Terminology</name>
        <dl newline="true" indent="3" spacing="normal" pn="section-1.1-1">
          <dt pn="section-1.1-1.1">SAV Rule:</dt>
          <dd pn="section-1.1-1.2">
            <t indent="0" pn="section-1.1-1.2.1">The rule that indicates the validity of a specific source IP address or source IP prefix per router interface. It is used by a router to make SAV decisions.</t>
          </dd>
          <dt pn="section-1.1-1.3">Improper Block:</dt>
          <dd pn="section-1.1-1.4">
            <t indent="0" pn="section-1.1-1.4.1">The validation results in packets with legitimate source addresses being blocked improperly due to inaccurate SAV rules. (The terms "improper block" and "false positive" are used synonymously.)</t>
          </dd>
          <dt pn="section-1.1-1.5">Improper Permit:</dt>
          <dd pn="section-1.1-1.6">
            <t indent="0" pn="section-1.1-1.6.1">The validation results in packets with spoofed source addresses being permitted improperly due to inaccurate SAV rules. (The terms "improper permit" and "false negative" are used synonymously.)</t>
          </dd>
          <dt pn="section-1.1-1.7">Proper Block:</dt>
          <dd pn="section-1.1-1.8">
            <t indent="0" pn="section-1.1-1.8.1">The validation results in packets with spoofed source addresses being blocked.</t>
          </dd>
          <dt pn="section-1.1-1.9">Proper Permit:</dt>
          <dd pn="section-1.1-1.10">
            <t indent="0" pn="section-1.1-1.10.1">The validation results in packets with legitimate source addresses being permitted.</t>
          </dd>
          <dt pn="section-1.1-1.11">SAV-specific Information:</dt>
          <dd pn="section-1.1-1.12">
            <t indent="0" pn="section-1.1-1.12.1">The information specialized for SAV rule generation.</t>
          </dd>
          <dt pn="section-1.1-1.13">Direct Server Return (DSR):</dt>
          <dd pn="section-1.1-1.14">
            <t indent="0" pn="section-1.1-1.14.1">A traffic delivery model commonly used by Content Delivery Networks (CDNs) that use anycast service addresses while delivering data from edge locations that do not announce those addresses. In such deployments, a request is received by the anycast server or location, but the response is sent directly by another server (i.e., the edge location) with the anycast service address as the source address, rather than the address used to reach the edge server. This can create a legitimate hidden-prefix scenario.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="sec-problem" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-problem-statement">Problem Statement</name>
      <t indent="0" pn="section-2-1">The problems of existing intra-domain SAV mechanisms can be characterized along three dimensions: improper block, improper permit, and operational overhead:</t>
      <dl spacing="normal" newline="false" indent="3" pn="section-2-2">
        <dt pn="section-2-2.1">Improper block:</dt>
        <dd pn="section-2-2.2">Existing intra-domain SAV mechanisms may block data packets using legitimate source addresses when the applied SAV rules are inaccurate.</dd>
        <dt pn="section-2-2.3">Improper permit:</dt>
        <dd pn="section-2-2.4">Existing intra-domain SAV mechanisms may permit data packets using spoofed source addresses when the applied SAV rules are inaccurate.</dd>
        <dt pn="section-2-2.5">Operational overhead:</dt>
        <dd pn="section-2-2.6">Existing intra-domain SAV mechanisms may require operator involvement to determine and update SAV rules. This overhead depends on how much manual effort is needed to keep the SAV rules up to date.</dd>
      </dl>
      <t indent="0" pn="section-2-3">In this document, these three dimensions are used to analyze the gaps in existing intra-domain SAV mechanisms.</t>
    </section>
    <section anchor="sec-mechanisms" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-current-operational-intra-d">Current Operational Intra-Domain SAV Mechanisms</name>
      <t indent="0" pn="section-3-1">Although <xref target="RFC2827" format="default" sectionFormat="of" derivedContent="RFC2827"/> and <xref target="RFC3704" format="default" sectionFormat="of" derivedContent="RFC3704"/> specify several ingress filtering methods primarily intended for inter-domain SAV, some of these methods have also been applied to intra-domain SAV in operational practice. This section introduces the mechanisms currently used to implement intra-domain SAV.</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-2">
        <li pn="section-3-2.1">
          <t indent="0" pn="section-3-2.1.1">Access Control Lists (ACLs) can be used as SAV filters <xref target="RFC2827" format="default" sectionFormat="of" derivedContent="RFC2827"/> to check the source address of each packet against a set of permitted or prohibited prefixes. When applied on a router interface, each Access Control Entry (ACE) used for SAV filtering specifies both matching conditions (i.e., prefixes) and the corresponding action (e.g., permit or deny), and packets are processed accordingly.</t>
        </li>
        <li pn="section-3-2.2">
          <t indent="0" pn="section-3-2.2.1">Strict unicast Reverse Path Forwarding (uRPF) <xref target="RFC3704" format="default" sectionFormat="of" derivedContent="RFC3704"/> provides an automated SAV filter by validating the source address of each packet against the router's local Forwarding Information Base (FIB). A packet is accepted only if (i) the FIB contains a prefix covering the source address and (ii) the FIB entry's outgoing interface matches the packet's incoming interface. Otherwise, the packet is discarded.</t>
        </li>
        <li pn="section-3-2.3">
          <t indent="0" pn="section-3-2.3.1">Loose uRPF <xref target="RFC3704" format="default" sectionFormat="of" derivedContent="RFC3704"/> also relies on the local FIB for validation but only checks for the presence of a covering prefix. A packet is accepted if the FIB contains a prefix that covers the source address, regardless of the incoming interface.</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-gap" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-gap-analysis">Gap Analysis</name>
      <t indent="0" pn="section-4-1">This section analyzes the gaps of the current operational intra-domain SAV mechanisms.</t>
      <t indent="0" pn="section-4-2">ACLs can be used on interfaces facing a customer network with no AS or a set of hosts to permit only packets whose source addresses belong to specific prefixes. To ensure correct filtering behavior, the ACLs used for SAV filtering need to be updated when the permitted prefixes change; otherwise, packets may be improperly permitted or blocked. In ACL-based SAV deployments, keeping these ACLs up to date can introduce operational challenges when operators need to detect prefix changes and determine and apply the corresponding ACL updates.</t>
      <t indent="0" pn="section-4-3">As described in <xref target="sec-mechanisms" format="default" sectionFormat="of" derivedContent="Section 3"/> and also noted in <xref target="RFC3704" format="default" sectionFormat="of" derivedContent="RFC3704"/>, loose uRPF sacrifices directionality when validating source addresses of data packets. Since its rules are overly permissive, any spoofed packet with a source address present in the FIB may be permitted by loose uRPF (i.e., an improper permit problem).</t>
      <t indent="0" pn="section-4-4">Strict uRPF may block legitimate traffic in the asymmetric routing or hidden prefix scenarios (see Sections <xref target="subsec-ar" format="counter" sectionFormat="of" derivedContent="4.1"/> and <xref target="subsec-hp" format="counter" sectionFormat="of" derivedContent="4.2"/>). It may mistakenly consider a valid incoming interface as invalid, resulting in legitimate packets being blocked (i.e., an improper block problem).</t>
      <t indent="0" pn="section-4-5">The following subsections describe two specific gap scenarios for intra-domain SAV.</t>
      <section anchor="subsec-ar" numbered="true" removeInRFC="false" toc="include" pn="section-4.1">
        <name slugifiedName="name-asymmetric-routing-scenario">Asymmetric Routing Scenario</name>
        <t indent="0" pn="section-4.1-1">Asymmetric routing means a packet traverses from a source to a destination in one path and takes a different path when it returns to the source. Asymmetric routing can occur due to routing policy, traffic engineering, etc.</t>
        <t indent="0" pn="section-4.1-2">For example, a customer network with no AS connected to multiple routers of the AS may need to perform load balancing on incoming traffic, thereby resulting in asymmetric routing. <xref target="multi-home" format="default" sectionFormat="of" derivedContent="Figure 2"/> illustrates an example of asymmetric routing. The customer network owns prefix 2001:db8::/55 and connects to two routers of the AS, Router 1 and Router 2. Router 1, Router 2, and Router 3 exchange routing information via the intra-domain routing protocol. To achieve load balancing for inbound traffic, the customer network expects traffic destined for 2001:db8:0::/56 to enter through Router 1 and traffic destined for 2001:db8:0:100::/56 to enter through Router 2. To this end, Router 1 advertises 2001:db8:0::/56 and Router 2 advertises 2001:db8:0:100::/56 through the intra-domain routing protocol. <xref target="multi-home" format="default" sectionFormat="of" derivedContent="Figure 2"/> also shows the corresponding FIB entries of Router 1 and Router 2 for the two prefixes.</t>
        <figure anchor="multi-home" align="center" suppress-title="false" pn="figure-2">
          <name slugifiedName="name-an-example-of-asymmetric-ro">An Example of Asymmetric Routing</name>
          <artwork align="left" pn="section-4.1-3.1">
 +----------------------------------------------------------+
 |Domain                                                    |
 |                      +----------+                        |
 |                      | Router 3 |                        |
 |                      +----------+                        |
 |                       /       \                          |
 |                      /         \                         |
 |                     /           \                        |
 |            +----------+       +----------+               |
 |            | Router 1 |       | Router 2 |               |
 |            +-----*----+       +----------+               |
 |                  /\               /                      |
 |                   \              /                       |
 +--------------------\------------/------------------------+
  Traffic with         \          / Traffic with
  source IP addresses   \        /  destination IP addresses
  of 2001:db8:0:100::/56 \      \/  of 2001:db8:0:100::/56
                    +----------------+
                    |Customer network|
                    |with no AS      |
                    |(2001:db8::/55) |
                    +----------------+

 FIB of Router 1                FIB of Router 2
 Dest                Next_hop   Dest                Next_hop
 2001:db8:0::/56     Customer   2001:db8:0:100::/56 Customer
                     Network                        Network
 2001:db8:0:100::/56 Router 3   2001:db8:0::/56     Router 3</artwork>
        </figure>
        <t indent="0" pn="section-4.1-4">The legitimate traffic originated from the customer network 
 with source addresses in 2001:db8:0:100::/56 will be improperly 
 blocked by strict uRPF on Router 1.</t>
        <t indent="0" pn="section-4.1-5">Although the customer network does not expect to receive inbound traffic for 2001:db8:0:100::/56 via Router 1, it can send outbound traffic with source addresses in that prefix through Router 1. As a result, data packets between the customer network and Router 1 may follow asymmetric paths. Arrows in <xref target="multi-home" format="default" sectionFormat="of" derivedContent="Figure 2"/> indicate the direction of traffic flow.</t>
        <t indent="0" pn="section-4.1-6">If Router 1 enforces strict uRPF by checking the FIB entry for the prefix 2001:db8:0:100::/56, the corresponding SAV rule would only allow packets with a source address from 2001:db8:0:100::/56 that arrive via Router 3. Consequently, when the customer network sends packets with a source address in 2001:db8:0:100::/56 to Router 1, strict uRPF would improperly drop these legitimate packets. Similarly, if Router 2 enforces strict uRPF, it would improperly block legitimate packets from the customer network that use source addresses within the prefix 2001:db8:0::/56.</t>
      </section>
      <section anchor="subsec-hp" numbered="true" removeInRFC="false" toc="include" pn="section-4.2">
        <name slugifiedName="name-hidden-prefix-scenario">Hidden Prefix Scenario</name>
        <t indent="0" pn="section-4.2-1">The intra-domain hidden prefix scenario refers to situations in which a host or a customer network with no AS legitimately originates traffic using source addresses that are not visible to the intra-domain routing protocol within the domain.</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-2">
          <li pn="section-4.2-2.1">
            <t indent="0" pn="section-4.2-2.1.1">A host (for example, a cloud server instance operated by a tenant) may originate traffic using a source address not allocated by the AS operator. This can occur in deployments such as DSR, where return traffic is sent directly from the server using a service IP address that is not part of the operator's internal routing view.</t>
          </li>
          <li pn="section-4.2-2.2">
            <t indent="0" pn="section-4.2-2.2.1">A customer network with no AS may originate traffic using source addresses that are not advertised to the AS operator. This can occur in scenarios such as DSR deployments or when the customer network uses address space assigned by another provider (e.g., in multi-homing or hybrid connectivity scenarios), and such prefixes are not propagated within the operator's intra-domain routing system.</t>
          </li>
        </ul>
        <t indent="0" pn="section-4.2-3">For ACL-based SAV, enforcing correct filtering in these scenarios requires authoritative information that explicitly specifies which source addresses the host or the customer network is authorized to use. In practice, such authoritative information is often missing. Strict uRPF and loose uRPF also fail in hidden prefix scenarios. They will drop packets from hidden prefixes because the source addresses are absent from the router's FIB or are received from unexpected interfaces.</t>
      </section>
    </section>
    <section anchor="sec-requirement" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-requirements-for-new-sav-me">Requirements for New SAV Mechanisms</name>
      <t indent="0" pn="section-5-1">This section identifies five requirements that can inform the design of new intra-domain SAV mechanisms. These requirements describe the properties that new mechanisms are expected to provide in order to improve upon existing mechanisms but do not make assumptions about how those properties are achieved. They do not mandate or justify any specific extension to routing or other protocols and therefore cannot be used to directly initiate standards-track protocol changes.</t>
      <t indent="0" pn="section-5-2">Existing intra-domain SAV mechanisms have problems in terms of validation accuracy and operational overhead. Current uRPF-based mechanisms derive SAV decisions solely from routing or forwarding state, which is intended to express reachability rather than authorization of source address usage. More generally, current mechanisms lack authoritative information specifically intended for SAV that can be consistently and automatically consumed by SAV mechanisms. As a result, uRPF-based mechanisms may not provide accurate validation in scenarios such as asymmetric routing or hidden prefixes (<xref target="sec-gap" format="default" sectionFormat="of" derivedContent="Section 4"/>). Existing ACL-based SAV deployments may have limited applicability in dynamic environments when they rely on operator-driven ACL maintenance. These problems motivate the first two requirements below (in Sections <xref target="sub-require1" format="counter" sectionFormat="of" derivedContent="5.1"/> and <xref target="sub-require2" format="counter" sectionFormat="of" derivedContent="5.2"/>). The remaining three requirements (in Sections <xref target="sub-require3" format="counter" sectionFormat="of" derivedContent="5.3"/>, <xref target="sub-require4" format="counter" sectionFormat="of" derivedContent="5.4"/>, and <xref target="sub-require5" format="counter" sectionFormat="of" derivedContent="5.5"/>) are motivated by deployment and operational considerations.</t>
      <section anchor="sub-require1" numbered="true" removeInRFC="false" toc="include" pn="section-5.1">
        <name slugifiedName="name-accurate-validation">Accurate Validation</name>
        <t indent="0" pn="section-5.1-1">Any new intra-domain SAV mechanism must improve SAV accuracy over existing intra-domain SAV mechanisms. This improvement can be reflected in reduced improper blocks (false positives), reduced improper permits (false negatives), or both. Furthermore, it must seek to mitigate improper blocks and improve the ability to reject spoofed traffic in the gap scenarios described in <xref target="sec-gap" format="default" sectionFormat="of" derivedContent="Section 4"/>. To support this, additional information beyond the local FIB, such as SAV-specific information, may be needed to make validation decisions and generate accurate SAV rules.</t>
      </section>
      <section anchor="sub-require2" numbered="true" removeInRFC="false" toc="include" pn="section-5.2">
        <name slugifiedName="name-automatic-updates">Automatic Updates</name>
        <t indent="0" pn="section-5.2-1">Any new intra-domain SAV mechanism must be capable of automatically collecting and processing relevant information and updating the corresponding SAV rules in response to relevant information changes. Automation helps reduce operational complexity and maintenance overhead while allowing some initial configuration to improve SAV accuracy. This ensures the mechanism is deployable in practical networks without introducing an excessive management burden.</t>
      </section>
      <section anchor="sub-require3" numbered="true" removeInRFC="false" toc="include" pn="section-5.3">
        <name slugifiedName="name-incremental-deployment-supp">Incremental Deployment Support</name>
        <t indent="0" pn="section-5.3-1">Any new intra-domain SAV mechanism must support incremental deployment and provide measurable benefits even when deployed on only a subset of external interfaces facing hosts or customer networks with no AS.</t>
      </section>
      <section anchor="sub-require4" numbered="true" removeInRFC="false" toc="include" pn="section-5.4">
        <name slugifiedName="name-no-adverse-impact-on-routin">No Adverse Impact on Routing Convergence and Fast Reroute</name>
        <t indent="0" pn="section-5.4-1">If any new intra-domain SAV mechanism requires disseminating SAV-specific information among intra-domain routers via a protocol, it must not adversely affect the convergence of existing routing protocols or the operation of fast-reroute mechanisms.</t>
      </section>
      <section anchor="sub-require5" numbered="true" removeInRFC="false" toc="include" pn="section-5.5">
        <name slugifiedName="name-authentication-of-informati">Authentication of Information Used for SAV</name>
        <t indent="0" pn="section-5.5-1">Any new intra-domain SAV mechanism must use information that is authenticated or trusted, either through verification of its integrity and authenticity or via an established trust relationship with the information source.</t>
      </section>
    </section>
    <section anchor="sec-security" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-6-1">This document discusses the problems with existing intra-domain SAV practices and identifies informational requirements for new intra-domain SAV mechanisms. As it does not specify any new protocol/mechanism or protocol extension, it does not introduce new security considerations.</t>
    </section>
    <section anchor="sec-iana" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-7-1">This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references" pn="section-8">
      <name slugifiedName="name-references">References</name>
      <references anchor="sec-normative-references" pn="section-8.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2827" target="https://www.rfc-editor.org/info/rfc2827" quoteTitle="true" derivedAnchor="RFC2827">
          <front>
            <title>Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing</title>
            <author fullname="P. Ferguson" initials="P." surname="Ferguson"/>
            <author fullname="D. Senie" initials="D." surname="Senie"/>
            <date month="May" year="2000"/>
            <abstract>
              <t indent="0">This paper discusses a simple, effective, and straightforward method for using ingress traffic filtering to prohibit DoS (Denial of Service) attacks which use forged IP addresses to be propagated from 'behind' an Internet Service Provider's (ISP) aggregation point. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="38"/>
          <seriesInfo name="RFC" value="2827"/>
          <seriesInfo name="DOI" value="10.17487/RFC2827"/>
        </reference>
        <reference anchor="RFC3704" target="https://www.rfc-editor.org/info/rfc3704" quoteTitle="true" derivedAnchor="RFC3704">
          <front>
            <title>Ingress Filtering for Multihomed Networks</title>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="P. Savola" initials="P." surname="Savola"/>
            <date month="March" year="2004"/>
            <abstract>
              <t indent="0">BCP 38, RFC 2827, is designed to limit the impact of distributed denial of service attacks, by denying traffic with spoofed addresses access to the network, and to help ensure that traffic is traceable to its correct source network. As a side effect of protecting the Internet against such attacks, the network implementing the solution also protects itself from this and other attacks, such as spoofed management access to networking equipment. There are cases when this may create problems, e.g., with multihoming. This document describes the current ingress filtering operational mechanisms, examines generic issues related to ingress filtering, and delves into the effects on multihoming in particular. This memo updates RFC 2827. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="84"/>
          <seriesInfo name="RFC" value="3704"/>
          <seriesInfo name="DOI" value="10.17487/RFC3704"/>
        </reference>
        <reference anchor="RFC5210" target="https://www.rfc-editor.org/info/rfc5210" quoteTitle="true" derivedAnchor="RFC5210">
          <front>
            <title>A Source Address Validation Architecture (SAVA) Testbed and Deployment Experience</title>
            <author fullname="J. Wu" initials="J." surname="Wu"/>
            <author fullname="J. Bi" initials="J." surname="Bi"/>
            <author fullname="X. Li" initials="X." surname="Li"/>
            <author fullname="G. Ren" initials="G." surname="Ren"/>
            <author fullname="K. Xu" initials="K." surname="Xu"/>
            <author fullname="M. Williams" initials="M." surname="Williams"/>
            <date month="June" year="2008"/>
            <abstract>
              <t indent="0">Because the Internet forwards packets according to the IP destination address, packet forwarding typically takes place without inspection of the source address and malicious attacks have been launched using spoofed source addresses. In an effort to enhance the Internet with IP source address validation, a prototype implementation of the IP Source Address Validation Architecture (SAVA) was created and an evaluation was conducted on an IPv6 network. This document reports on the prototype implementation and the test results, as well as the lessons and insights gained from experimentation. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5210"/>
          <seriesInfo name="DOI" value="10.17487/RFC5210"/>
        </reference>
        <reference anchor="RFC7513" target="https://www.rfc-editor.org/info/rfc7513" quoteTitle="true" derivedAnchor="RFC7513">
          <front>
            <title>Source Address Validation Improvement (SAVI) Solution for DHCP</title>
            <author fullname="J. Bi" initials="J." surname="Bi"/>
            <author fullname="J. Wu" initials="J." surname="Wu"/>
            <author fullname="G. Yao" initials="G." surname="Yao"/>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <date month="May" year="2015"/>
            <abstract>
              <t indent="0">This document specifies the procedure for creating a binding between a DHCPv4/DHCPv6-assigned IP address and a binding anchor on a Source Address Validation Improvement (SAVI) device. The bindings set up by this procedure are used to filter packets with forged source IP addresses. This mechanism complements BCP 38 (RFC 2827) ingress filtering, providing finer-grained source IP address validation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7513"/>
          <seriesInfo name="DOI" value="10.17487/RFC7513"/>
        </reference>
      </references>
      <references anchor="sec-informative-references" pn="section-8.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="cable-verify" target="https://www.cisco.com/c/en/us/support/docs/broadband-cable/cable-security/20691-source-verify.html" quoteTitle="true" derivedAnchor="cable-verify">
          <front>
            <title>Cable Source-Verify and IP Address Security</title>
            <author>
              <organization showOnFrontPage="true">Cisco</organization>
            </author>
            <date year="2021" month="January"/>
          </front>
        </reference>
        <reference anchor="CAIDA-spoofer" target="https://spoofer.caida.org/summary.php?" quoteTitle="true" derivedAnchor="CAIDA-spoofer">
          <front>
            <title>State of IP Spoofing</title>
            <author>
              <organization showOnFrontPage="true">CAIDA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IPSG" target="https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst2960/software/release/12-2_53_se/configuration/guide/2960scg/swdhcp82.html" quoteTitle="true" derivedAnchor="IPSG">
          <front>
            <title>Configuring DHCP Features and IP Source Guard</title>
            <author>
              <organization showOnFrontPage="true">Cisco</organization>
            </author>
            <date year="2008" month="August"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">The authors thank <contact fullname="Jared Mauch"/>, <contact fullname="Joel Halpern"/>, <contact fullname="Aijun Wang"/>, <contact fullname="Michael Richardson"/>, <contact fullname="Gert Doering"/>, <contact fullname="Tony Przygienda"/>, <contact fullname="Yingzhen Qu"/>, <contact fullname="James Guichard"/>, <contact fullname="Ron Bonica"/>, <contact fullname="Xueyan Song"/>, and others for their valuable comments. The authors also thank <contact fullname="Kotikalapudi Sriram"/> for his suggestions on the definition of "intra-domain SAV". The authors thank the IETF directorates and the IESG for their reviews and comments, which helped improve the clarity of this document.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="L." surname="Qin" fullname="Lancheng Qin">
        <organization showOnFrontPage="true">Zhongguancun Laboratory</organization>
        <address>
          <postal>
            <city>Beijing</city>
            <country>China</country>
          </postal>
          <email>qinlc@mail.zgclab.edu.cn</email>
        </address>
      </author>
      <author initials="D." surname="Li" fullname="Dan Li">
        <organization showOnFrontPage="true">Tsinghua University</organization>
        <address>
          <postal>
            <city>Beijing</city>
            <country>China</country>
          </postal>
          <email>tolidan@tsinghua.edu.cn</email>
        </address>
      </author>
      <author initials="J." surname="Wu" fullname="Jianping Wu">
        <organization showOnFrontPage="true">Tsinghua University</organization>
        <address>
          <postal>
            <city>Beijing</city>
            <country>China</country>
          </postal>
          <email>jianping@cernet.edu.cn</email>
        </address>
      </author>
      <author initials="M." surname="Huang" fullname="Mingqing Huang">
        <organization showOnFrontPage="true">Zhongguancun Laboratory</organization>
        <address>
          <postal>
            <city>Beijing</city>
            <country>China</country>
          </postal>
          <email>huangmq@mail.zgclab.edu.cn</email>
        </address>
      </author>
      <author initials="N." surname="Geng" fullname="Nan Geng">
        <organization showOnFrontPage="true">Huawei</organization>
        <address>
          <postal>
            <city>Beijing</city>
            <country>China</country>
          </postal>
          <email>gengnan@huawei.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
