<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="3"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e., [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="info"
     docName="draft-wu-savnet-inter-domain-problem-statement-03"
     ipr="trust200902">
  <front>
    <title abbrev="Inter-domain SAVNET Problem Statement">Source Address
    Validation in Inter-domain Networks (Inter-domain SAVNET) Gap Analysis,
    Problem Statement, and Requirements</title>

    <author fullname="Jianping Wu" initials="J." surname="Wu">
      <organization>Tsinghua University</organization>

      <address>
        <postal>
          <street/>

          <city>Beijing</city>

          <region/>

          <code/>

          <country>China</country>
        </postal>

        <email>jianping@cernet.edu.cn</email>

        <uri/>
      </address>
    </author>

    <author fullname="Dan Li" initials="D." surname="Li">
      <organization>Tsinghua University</organization>

      <address>
        <postal>
          <street/>

          <city>Beijing</city>

          <country>China</country>
        </postal>

        <email>tolidan@tsinghua.edu.cn</email>
      </address>
    </author>

    <author fullname="Lancheng Qin" initials="L." surname="Qin">
      <organization>Tsinghua University</organization>

      <address>
        <postal>
          <street/>

          <city>Beijing</city>

          <region/>

          <code/>

          <country>China</country>
        </postal>

        <email>qlc19@mails.tsinghua.edu.cn</email>

        <uri/>
      </address>
    </author>

    <author fullname="Mingqing Huang" initials="M." surname="Huang">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street/>

          <city>Beijing</city>

          <region/>

          <code/>

          <country>China</country>
        </postal>

        <email>huangmingqing@huawei.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Nan Geng" initials="N." surname="Geng">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street/>

          <city>Beijing</city>

          <region/>

          <code/>

          <country>China</country>
        </postal>

        <email>gengnan@huawei.com</email>

        <uri/>
      </address>
    </author>

    <date day="7" month="November" year="2022"/>

    <!---->

    <keyword/>

    <abstract>
      <t>Source Address Validation in Inter-domain Networks (Inter-domain
      SAVNET) focuses on narrowing the technical gaps of existing source
      address validation (SAV) mechanisms in inter-domain scenarios. This
      document provides a gap analysis of existing inter-domain SAV
      mechanisms, describes the problem statement based on the analysis
      results, and concludes the requirements for improving inter-domain
      SAV.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
      "OPTIONAL" in this document are to be interpreted as described in BCP 14
      <xref target="RFC2119"/><xref target="RFC8174"/> when, and only when,
      they appear in all capitals, as shown here.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>Source address validation in inter-domain networks (Inter-domain
      SAVNET) is vital to mitigate source address spoofing between Autonomous
      Systems (ASes). Inter-domain SAV is essential to the Internet security
      <xref target="RFC5210"/>. Many efforts have been taken on the tasks of
      inter-domain SAV.</t>

      <t>Ingress filtering <xref target="RFC2827"/> <xref target="RFC3704"/>
      is a typical method of inter-domain SAV. Strict uRPF <xref
      target="RFC3704"/> reversely looks up the FIB table and requires that
      the valid incoming interface must be the same interface which would be
      used to forward traffic to the source address in the FIB table.
      Feasible-path uRPF (FP-uRPF) <xref target="RFC3704"/>, taking a looser
      SAV than strict uRPF, is designed to add more alternative valid incoming
      interfaces for the source address. To be more flexible about
      directionality, BCP 84 <xref target="RFC3704"/><xref target="RFC8704"/>
      recommends that i) the loose uRPF method which loses directionality
      completely SHOULD be applied on lateral peer and transit provider
      interfaces, and that ii) the Enhanced FP-uRPF (EFP-uRPF) method with
      Algorithm B, looser than strict uRPF, FP-uRPF, and EFP-uRPF with
      Algorithm A, SHOULD be applied on customer interfaces. Routers deploying
      EFP-uRPF accept a data packet from customer interfaces only when the
      source address of the packet is contained in that of the customer
      cone.</t>

      <t>Despite the diversity of inter-domain SAV mechanisms, there are still
      some points that are under considered but important for enhancing
      Internet security. Moreover, in the currently focused SAV work scope,
      these mechanisms may lead to improper permit or improper block problems
      in some scenarios.</t>

      <t>This document does an analysis of the existing inter-domain SAV
      mechanisms and answers: i) what are the technical gaps, ii) what are the
      major problems needing to be solved, and iii) what are the potential
      directions for further enhancing inter-domain SAV.</t>
    </section>

    <section title="Terminology">
      <t>SAV: Source Address Validation, i.e., validating the authenticity of
      a packet's source IP address.</t>

      <t>SAV rule: The rule generated by intra-domain SAV mechanisms that
      determines valid incoming interfaces for a specific source prefix.</t>

      <t>SAV table: The data structure that stores SAV rules on the data
      plane. The router queries its local SAV table to validate the
      authenticity of source addresses.</t>

      <t>Improper block: The packets with legitimate source IP addresses are
      blocked improperly due to inaccurate SAV rules.</t>

      <t>Improper permit: The packets with spoofed source IP addresses are
      permitted improperly due to inaccurate SAV rules.</t>
    </section>

    <section title="Gap Analysis">
      <t>BCP 84 recommends loose uRPF at provider/peer interfaces and EFP-uRPF
      at customer interfaces. The followings are the gap analysis of these SAV
      mechanisms.</t>

      <section title="Improper Permit">
        <t>Existing SAV mechanisms may have improper permit problems that the
        packets with spoofed source addresses are considered as legal. Here
        are two cases where improper permit will appear.</t>

        <section title="Reflection Attack Scenario">
          <t>The first case is at provider or peer interfaces where loose uRPF
          is deployed. Loose uRPF almost accepts any source address, which
          fails to protect ASes in the customer cone from externally injected
          attacks.</t>

          <t><figure>
              <artwork align="center"><![CDATA[                  +----------+
  Attacker(P1') +-+  AS3(P3) |
                  +----+-----+
                       |
                 (P2C) |
                       |
                  +----v-----+
                  |  AS4(P4) |
                  +/\+----+/\+
                   /        \
                  /          \
           (C2P) /            \ (C2P)
         +----------+       +----------+
Victim +-+  AS1(P1) |       |  AS2(P2) +-+Server
         +----------+       +----------+
  
 P1' is the spoofed source prefix P1 by the attacker 
 which is attached to AS3 

 Figure 1: A reflection attack scenario
]]></artwork>
            </figure></t>

          <t/>

          <t>Figure 1 shows a reflection attack scenario. AS 3 is the provider
          of AS 4. AS 4 is the provider of AS 1 and AS 2. EFP-uRPF is deployed
          at AS 4's customer interfaces, and loose uRPF is implemented at AS
          4's provider interface. Assume a reflection attacker is attached to
          AS 3. It sends packets spoofing source addresses of P1 to the server
          located in AS 2 for attacking the victim in AS 1. However, this
          attack cannot be successfully blocked though AS 4 has deployed
          inter-domain SAV.</t>
        </section>

        <section title="Spoofing within a Customer Cone">
          <t>The second case is at customer interfaces where EFP-uRPF with
          algorithm B is deployed. It allows packets with source addresses of
          the customer cone to enter from any customer interfaces to avoid
          potential improper block problems that EFP-uRPF with algorithm A may
          have. However, vulnerability is imported. Although EFP-uRPF with
          algorithm B can prevent ASes inside the customer cone from using
          source addresses of ASes outside the customer cone, it sacrifices
          the directionality of traffic from different customers, which will
          lead to improper permit problems.</t>

          <t><figure>
              <artwork align="center"><![CDATA[
                  +----------+
                  + AS 3(P3) |
                  +----------+
                       |
                 (P2C) | 
                       |
                  +----v-----+
                  | AS 4(P4) |
                  +/\+----+/\+
                   /        \
                  /          \ 
           (C2P) /            \ (C2P)
          +----------+       +----------+
  Victim+-+ AS 1(P1) |       | AS 2(P2) +-+Attacker(P1')
          +----------+       +----------+
  
 P1' is the spoofed source prefix P1 by the attacker 
 which is attached to AS2 

 Figure 2: Spoofing within a customer cone
]]></artwork>
            </figure></t>

          <t/>

          <t>In Figure 2, assume AS 4 implements EFP-uRPF with algorithm B at
          customer interfaces. Under EFP-uRPF with algorithm B, AS 4 will
          generate SAV rules with legitimate P1 and P2 at both customer
          interfaces. When the attacker in AS 2 spoofs source address of AS 1,
          AS 4 will improperly permit these packets with spoofed source
          addresses of prefix P1. The same also applies when the attacker in
          AS 1 forges source prefix P2. That is to say, EFP-uRPF algorithm B
          cannot prevent source address spoofing between ASes of the customer
          cone.</t>
        </section>
      </section>

      <section title="Improper Block">
        <t>In some cases, existing SAV mechanisms may improperly block the
        packets with legitimate source addresses. Here are two cases where
        improper permit will appear.</t>

        <section title="NO_EXPORT in BGP Advertisement">
          <t>Figure 3 presents a NO_EXPORT scenario. AS 1 is the common
          customer of AS 2 and AS 3. AS 4 is the provider of AS 2. The
          relationship between AS 3 and AS 4 is customer-to-provider (C2P) or
          peer-to-peer (P2P). All arrows in Figure 2 represent BGP
          advertisements. AS 2 owns prefix P2 and advertises it to AS 4
          through BGP. AS 3 also advertises its own prefix P3 to AS 4. AS 1
          has prefix P1 and advertises the prefix to the providers, i.e., AS 2
          and AS 3. After receiving the route for prefix P1 from AS 1, AS 3
          propagates this route to AS 4. Differently, AS 2 does not propagate
          the route for prefix P1 to AS 4, since AS 1 adds the NO_EXPORT
          community attribute in the BGP advertisement destined to AS 2. In
          the end, AS 4 only learns the route for prefix P1 from AS 3.</t>

          <t>Assume that AS 3 is the customer of AS 4. If AS 4 runs EFP-uRPF
          with algorithm A at customer interfaces, the packets with source
          addresses of P1 are required to arrive only from AS 3. When AS 1
          sends the packets with legitimate source addresses of prefix P1 to
          AS 4 through AS 2, AS 4 will improperly block these packets.
          EFP-uRPF with algorithm B works well in this case.</t>

          <t>Assume that AS 3 is the peer of AS 4. AS 4 will never learn the
          route of P1 from its customer interfaces. So, no matter EFP-uRPF
          with algorithm A or that with algorithm B are used by AS 4, there
          will be improper block problems.</t>

          <t>Besides the NO_EXPORT case above, there are also many route
          filtering policies that can result in interruption of BGP
          advertisement. Improper block may be induced by existing
          inter-domain SAV mechanisms in such cases, and it is hard to prevent
          networks from taking these configurations.</t>

          <figure>
            <artwork align="center"><![CDATA[
                        +-----------------+
                        |       AS 4      |
                        +-+/\+-------+/\+-+
                          /           \
                         /             \  
                P3[AS 3]/(P2P/C2P) (C2P)\ P2[AS 2]
        P1[AS 3, AS 1] /                 \
                      /                   \
            +----------------+    +----------------+
       P3---+      AS 3      |    |      AS 2      +---P2
            +--------/\------+    +-------/\-------+
                       \                   /
                P1[AS 1]\(C2P)       (C2P)/P1[AS 1]
                         \               / NO_EXPORT
                        +-----------------+
                        |       AS 1      +---P1
                        +-----------------+

    Figure 3: Interrupted BGP advertisement caused by NO_EXPORT
  ]]></artwork>
          </figure>
        </section>

        <section title="Direct Server Return (DSR) Scenario">
          <t>Anycast is a network addressing and routing methodology. An
          anycast IP address is shared by devices in multiple locations, and
          incoming requests are routed to the location closest to the sender.
          Therefore, anycast is widely used in Content Delivery Network (CDN)
          to improve the quality of service by bringing the content to the
          user as soon as possible. In practice, anycast IP addresses are
          usually announced only from some locations with a lot of
          connectivity. Upon receiving incoming requests from users, requests
          are then tunneled to the edge locations where the content is.
          Subsequently, the edge locations do direct server return (DSR),
          i.e., directly sending the content to the users. To ensure that DSR
          works, servers in edge locations must send response packets with
          anycast IP address as the source address. However, since edge
          locations never advertise the anycast prefixes through BGP, an
          intermediate AS with EFP-uRPF may improperly block these response
          packets.</t>

          <figure>
            <artwork align="center"><![CDATA[                  
                  +----------+
  Anycast Server+-+  AS3(P3) |
                  +----------+
                       |
                 (P2C) | P3[AS3]
                       |
                  +----v-----+
                  |   AS4    |
                  +/\+----+/\+
                   /        \
          P1[AS1] /          \ P2[AS2]
           (C2P) /            \ (C2P)
       +----------+          +----------+
 User+-+  AS1(P1) |          |  AS2(P2) +-+Edge Server
       +----------+          +----------+
  
 P3 is the anycast prefix and is only advertised from AS3

 Figure 4: A Direct Server Return (DSR) scenario
]]></artwork>
          </figure>

          <t/>

          <t>Figure 4 shows a specific DSR scenario. The anycast IP prefix
          (i.e., prefix P3) is only advertised from AS 3 through BGP. Assume
          AS 3 is the provider of AS 4. AS 4 is the provider of AS 1 and AS 2.
          When users in AS 1 send requests to the anycast destination IP, the
          forwarding path from users to anycast servers is AS 1 -&gt; AS 4
          -&gt; AS 3. Anycast servers in AS 3 receive the requests and then
          tunnel them to the edge servers in AS 2. Finally, the edge servers
          send the content to the users with source addresses of prefix P3.
          The reverse forwarding path is AS 2 -&gt; AS 4 -&gt; AS 1. Since AS
          4 never receives routing information for prefix P3 from AS 2,
          EFP-uRPF algorithm A/EFP-uRPF algorithm B or other existing
          uRPF-like mechanisms at AS 4 will improperly block the response
          packets from AS 2.</t>

          <t/>
        </section>
      </section>

      <section title="Misaligned Incentive">
        <t>Existing SAV mechanisms validate upstream (i.e., the packets from
        customers to providers) strictly but take a loose validation for
        downstream (i.e., the packets from providers/peers to customers). Even
        an AS as well as its provider deploy BCP 84, the AS may still suffer
        source address spoofing attacks. In particular, the victim network in
        a reflection attack cannot gain additional protection by deploying
        existing SAV mechanisms. For example, in the reflection attack
        scenario in Figure 1, even if the victim network (i.e. AS1) and its
        provider (i.e. AS4) deploy SAV, AS1 is still vulnerable to the
        reflection attack from AS3, because it cannot help AS4 accurately
        identify and reject the forged request from AS3.</t>

        <t>The scenario in Figure 2 is another example. AS 4 deploying
        EFP-uRPF with algorithm B cannot prevent source address spoofing
        within the same customer cone. Technical limitations induce inaccurate
        SAV (especially improper permit) and further degrade the incentive of
        deployers.</t>

        <t>A detailed discussion about misaligned incentive can be found in
        <xref target="draft-qin-savnet-incentive"/>.</t>
      </section>
    </section>

    <section title="Problem Statement">
      <section title="Inaccurate Validation">
        <t>Existing inter-domain SAV mechanisms have accuracy gaps in some
        scenarios like routing asymmetry induced by BGP route policies or
        configurations. Particularly, EFP-uRPF takes the RPF list in
        data-plane, which means the packets from customer interfaces with
        unknown source prefixes (not appear in the RPF list) will be discarded
        directly. Improper block issues will arise when legitimate source
        prefixes are not accurately learned by EFP-uRPF. The root cause is
        that these mechanisms leverage local RIB table of routers to learn the
        source addresses and determine the valid incoming interface, which may
        not match the real data-plane forwarding path from the source. It may
        mistakenly consider a valid incoming interface as invalid, resulting
        in improper block problems; or consider an invalid incoming interface
        as valid, resulting in improper permit problems. Essentially, it is
        impossible to generate an accurate SAV table solely based on the
        router's local information due to the existence of asymmetric
        routes.</t>
      </section>

      <section title="Misaligned Incentive">
        <t>Existing inter-domain SAV mechanisms pay more attention to upstream
        (traffic from customer to provider/peer), resulting in weak source
        address checking of downstream (traffic from provider/peer to
        customer). It only prevents customer cone from originating spoofed
        traffic, but does not protect customer cone from receiving spoofed
        traffic from outside customer cone. Therefore, the "strict upstream
        but weak downstream checking" makes the benefits of deploying SAV
        mainly flow to ASes outside the customer cone. Moreover, the AS who
        deploys SAV is still vulnerable to reflection attack, because the
        victim with SAV deployment does not participate in protecting its
        source addresses from being forged.</t>
      </section>
    </section>

    <section title="Requirements">
      <t>Inter-domain SAVNET focuses on narrowing the technical gaps of
      existing inter-domain SAV mechanisms. The new inter-domain SAV mechanism
      MUST satisfy the following requirements.</t>

      <section title="Accurate SAV">
        <t>The new inter-domain SAV mechanism MUST ensure accurate SAV, i.e.,
        avoiding improper block problems while trying best to reduce improper
        permit problems. Generating SAV rules solely depending on local
        routing information (e.g., RIB) results in inaccurate SAV in the case
        of asymmetric routing. Accurate SAV requires that SAV rules MUST match
        real data-plane paths. Therefore, to ensure the accuracy of SAV, extra
        information out of local routing information is required as a
        supplement.</t>
      </section>

      <section title="Direct Incentive">
        <t>The new inter-domain SAV mechanism MUST provide direct incentives.
        It would be attractive if the network who deploys SAV can protect
        itself from source address spoofing attacks (espacially reflection
        attacks) instead of only providing protection to others. In
        particular, the mechanism MUST work for both upstream and downstream
        traffic, and downstream SHOULD be under the same SAV criteria as
        upstream. It would be easy to achieve perfect all-round protection
        supposing SAV is fully deployed. But when some ASes do not deploy SAV,
        efforts are needed to narrow the gaps as much as possible.</t>
      </section>

      <section title="Working in Partial Deployment">
        <t>The new inter-domain SAV mechanism MUST provide protection for
        source addresses even the mechanism is partially deployed. It is
        impractical to assume that all the ASes or most of the ASes enable SAV
        simultaneously. Partial deployment or incremental deployment have to
        be considered during the work of SAV.</t>
      </section>

      <section title="Acceptable Overhead">
        <t>The new inter-domain SAV mechanism MUST not induce much overhead.
        Any improvement designs for SAV mechanisms MUST not overload control
        plane. Besides, data plane MUST not modify packets for simplifying the
        process of data plane, which keeps same as existing SAV
        mechanisms.</t>
      </section>
    </section>

    <section title="Inter-domain SAVNET Scope">
      <t>This document focus on the same scope corresponding to existing
      inter-domain SAV mechanisms. Generally, it includes all IP-encapsulated
      scenarios:</t>

      <t><list style="symbols">
          <t>Native IP forwarding: including both global routing table
          forwarding and CE site forwarding of VPN;</t>

          <t>IP-encapsulated Tunnel (IPsec, GRE, SRv6, etc.): focusing on the
          validation of the outer layer IP address;</t>

          <t>Both IPv4 and IPv6 addresses</t>
        </list>Scope does not include:<list style="symbols">
          <t>Non-IP packets: including MPLS label-based forwarding and other
          non-IP-based forwarding.</t>
        </list></t>
    </section>

    <section title="Security Considerations">
      <t>SAV rules can be generated based on route information (FIB/RIB) or
      non-route information. If the information is poisoned by attackers, the
      SAV rules will be false. Lots of legal packets may be dropped improperly
      or malicious traffic with spoofed source addresses may be permitted
      improperly. Route security should be considered by routing protocols.
      Non-route information should also be protected by corresponding
      mechanisms or infrastructure. If SAV mechanisms or protocols require
      information exchange, there should be some considerations on the
      avoidance of message alteration or message injection.</t>

      <t>The SAV procedure referred in this document modifies no field of
      packets. So, security considerations on data-plane is not in the scope
      of this document.</t>
    </section>

    <section title="IANA Considerations">
      <t>This document does not request any IANA allocations.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.RFC.8174'?>

      <?rfc include='reference.RFC.2119'?>

      <?rfc include='reference.RFC.3704'?>

      <?rfc include='reference.RFC.8704'?>

      <?rfc include='reference.RFC.2827'?>

      <?rfc include='reference.RFC.5210'?>

      <reference anchor="draft-qin-savnet-incentive">
        <front>
          <title>The Incentive Consideration for Source Address Validation in
          Intra-domain and Inter-domain Networks (SAVNET)</title>

          <author fullname="Lancheng Qin" initials="L." surname="Qin"/>

          <author fullname="Dan Li" initials="D." surname="Li"/>

          <author fullname="Jianping Wu" initials="J." surname="Wu"/>

          <author fullname="Li Chen" initials="L." surname="Chen">
            <organization>Zhongguancun Laboratory</organization>

            <address>
              <postal>
                <street/>

                <city>Beijing</city>

                <region/>

                <code/>

                <country>China</country>
              </postal>

              <phone/>

              <facsimile/>

              <email>Lichen@zgclab.edu.cn</email>

              <uri/>
            </address>
          </author>

          <author fullname="Fang Gao" initials="F." surname="Gao">
            <organization>Zhongguancun Laboratory</organization>

            <address>
              <postal>
                <street/>

                <city>Beijing</city>

                <region/>

                <code/>

                <country>China</country>
              </postal>

              <phone/>

              <facsimile/>

              <email>gaofang@zgclab.edu.cn</email>

              <uri/>
            </address>
          </author>

          <date day="24" month="October" year="2022"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>
