<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="rfc7991bis.rnc"?>  <!-- Required for schema validation and schema-aware editing -->


<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="info"
  docName="draft-haas-savnet-inter-domain-scaling-00"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="IETF"
  xml:lang="en"
  version="3">

  <front>
    <title abbrev="SAVNET inter-domain scaling">Inter-domain scaling considerations for source address validation (SAV)</title>

    <seriesInfo name="Internet-Draft" value="draft-haas-savnet-inter-domain-scaling-00"/>

    <author fullname="Jeffrey Haas" initials="J." surname="Haas">
      <organization>HPE</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>US</country>
          </postal>
          <email>jhaas@juniper.net</email>
      </address>
    </author>
   
    <date year="2025"/>

    <area>Routing</area>
    <workgroup>SAVNET</workgroup>

    <keyword>Source Address Validation</keyword>
    <keyword>savnet</keyword>
    <keyword>bgp</keyword>
    <keyword>scaling</keyword>

    <abstract>
      <t>Source address validation (SAV) covers the general techniques to
      prevent IP source address spoofing, which is often used in networking attacks.
      Two primary problem spaces addressed in work on SAV include building the
      "source of truth" for what IP networks should be permitted to source IP
      traffic behind a set of network interfaces, and implementing the data
      plane enforcement for the validation.</t>

      <t>Implementing data plane enforcement, especially for inter-domain
      networking for the Internet carried by BGP-4 [RFC 4271] has a number of
      scaling considerations.  One consideration is the potentially large and
      often asymmetric sizes of the per-interface SAV tables vs. the Forwarding
      Information Base (FIB).  A second consideration is synchronization issues
      between SAV enforcement mechanisms and the forwarding state for the FIB
      where a lack of coordination may result in dropped or mis-forwarded
      traffic.</t>

      <t>This draft explores these two considerations under the title, "The
      asymmetric contract, and the broken promise."</t>
    </abstract>
 
  </front>

  <middle>
    
    <section>
      <name>Introduction</name>

      <t>This document discusses the implications for when the two parallel
      control plane inputs for forwarding and for SAV enforcement are not
      appropriately synchronized, especially at scale.</t>

      <t>The IETF SAVNET working group is chartered to address source address
      validation for Internet Protocol (IP) networking.  Spoofing of source IP
      addresses is a common network attack technique.  Such spoofing enhances
      other network attack techniques by obscuring the attacker and making it
      more difficult to mitigate such attacks.</t>

      <t>Various work has been done over the years to mitigate the use of source
      address spoofing.  A long standing best current practice is using source
      address filtering (<xref target="RFC2827"/>).  For edge and access networks, such filtering
      can be quite successful.  Unicast reverse path forwarding checks
      (<xref target="RFC3704"/>) in many cases is also successful at limiting such spoofing.
      However, techniques attempting to leverage the routing or forwarding
      tables (RIB/FIB) for such enforcement are known to be problematic,
      especially in case of asymmetric routing.  <xref target="RFC8704"/>  discusses some of
      these situations for "missing routes".</t>

      <t>Within the SAVNET working group, this problem space and also discussion
      about mitigating such issues are discussed at length in the
      <xref target="I-D.ietf-savnet-inter-domain-problem-statement"/>
      and 
      <xref target="I-D.ietf-savnet-inter-domain-architecture"/>
      documents.</t>

      <t>Similarly, much of the work within SAVNET has gone to attempting to
      address how an operator can construct the appropriate source address
      enforcement state on a per-device, per-interface basis.  This document
      does not discuss how such a "source of truth" is constructed for
      enforcement.  However, it is presumed that such SAV enforcement state,
      generally termed the "SAV tables", will be constructed from a variety of
      inputs, including BGP routing data, RPKI, and local provisioning.  
      <xref target="RFC8704"/> discusses some of this, and so do documents such as 
      <xref target="I-D.ietf-sidrops-bar-sav"/>.</t>

      <t>Mechanisms to distribute and synchronize these SAV tables to network
      elements have started to be discussed within the SAVNET working group, but the
      work is still early.  However, it is reasonable to discuss such mechanisms
      as a component of these devices' control plane.  This helps frame the
      distribution of the SAV tables as a control plane convergence problem.
      Comparisons vs. existing routing protocols, even without a specific
      proposal, helps to frame expectations about convergence time and
      persistence for this state.</t>

      <t>Implementations of SAV enforcement from these SAV tables has also had
      productive discussion.  <xref target="I-D.ietf-savnet-general-sav-capabilities"/>
      captures at a high level possible enforcement strategies.  Note that it is
      this author's opinion that there remain gaps in the proposed enforcement
      capabilities, but that document provides a reasonable starting point for
      the discussion.  The key consideration is that installation of any
      enforcement mechanism is a programming operation to instantiate the SAV
      enforcement for one or more interfaces on the device.  Such programming
      operations have their own latency and thus contribute toward the overall
      convergence story for SAV enforcement.</t>

      <t>This long-winded setup exists to highlight that the distribution of SAV
      enforcement state and its installation into network elements has a time
      dimension.</t>

      <t>Routing control planes such as BGP also have known time dimensions to
      distribute the routes and to program the network elements' FIBs.</t>

      <section>
        <name>Requirements Language</name>
        <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>
      </section>
      <!-- [CHECK] The 'Requirements Language' section is optional -->

    </section>
    
    <section>
      <name>The promises of forwarding</name>

      <section>
        <name>The promise of destination-based forwarding</name>

        <t>The IPv4 and IPv6 routing technologies have long relied on classless
        inter-domain routing (CIDR - <xref target="RFC1519"/>).  For this document, the
        critical property of CIDR is the longest-prefix match lookup for destination based
        routes.  Routing protocols, including BGP for Internet use, distribute
        destination-based prefixes.</t>

        <t>Network elements announce destination-based routing state to each other
        to attract traffic for the covered destinations.  Whether that announced
        state succeeds in attracting the traffic depends on the routing protocol
        and local configuration of that network element.</t>

        <t>The high level "promise" when one network element distributes a
        destination-based route to another network element is that if it receives
        IP traffic for an address for that destination that it will be forwarded
        toward that destination.</t>

        <t>While there have always been mitigating circumstances that may prevent
        forwarding from succeeding, such as firewalls, the implicit promise
        is that if you accept and use that route, traffic will be delivered.
        Firewalls "inappropriately" deployed are an illustration of when that
        promise has been broken.  When such situations are detected by an
        operator, that operator may take measures to not use routes sent by
        providers that are inappropriately filtering traffic.</t>
      </section>

      <section>
        <name>The promise of source address validation enforcement</name>

        <t>Source address validation becomes involved in this destination-based
        forwarding promise.  SAV enforcement, when the traffic's source address is
        out-of-profile for the installed enforcement policy, may result in the
        traffic not being delivered.</t>

        <t>The expectation is that the SAV state will fully cover "legitimate"
        sources.  As noted previously in the document, this depends on a fully
        known "source of truth" to be distributed and installed in SAV enforcing
        devices.</t>
      </section>

      <section>
        <name>The broken promise</name>

        <t>A significant amount of the current discussion in SAVNET is around how
        to best calculate the source of truth for SAV enforcement.  However, it is
        simple to distill the situation where the resultant behavior is incorrect
        and may cause harm to the expectations of users of the involved
        networks.</t>

        <t>If a destination-based route is distributed between two network
        elements, and both network elements consider the route to be "legitimate",
        the expectation is that all "legitimately" sourced IP traffic for the
        covered destinations that can reach that network element MUST be
        forwarded.</t>

        <t>Any technique for calculating a network element's source of truth for
        SAV enforcement that cannot arrive at the same result as yielded by
        destination-based routing and locally perceived "legitimate" source
        addresses has broken the promise of destination-based forwarding.</t>

        <t>This property MUST be used as a sanity-check for any technique used to
        build the source of truth for SAV enforcement.</t>
      </section>
    </section>

    <section>
      <name>The contract between the synchronization of forwarding and SAV enforcement
      state</name>

      <t>Even when the fully known SAV enforcement state has been determined,
      inconsistencies in the SAV enforcement state vs. forwarding can lead to
      inappropriately dropped traffic.  In order to avoid breaking the promise of
      destination-based forwarding, there is the contract that SAV enforcement
      state MUST NOT be installed in such a way as to lead to such dropped
      traffic.</t>

      <t>The core considerations are these:</t>

      <ul spacing="compact">
        <li>SAV enforcement for all legitimate sources MUST be installed prior
        to attracting traffic to the network element.</li>

        <li>SAV enforcement state MAY be installed but NOT enforced prior to
        attracting traffic to the network element.</li>
      </ul>

      <t>This requirement for synchronization of enforcement and forwarding
      illustrates several scaling considerations that will be discussed in the
      following sections.</t>

      <section>
        <name>The asymmetric contract between routing and SAV enforcement</name>

        <t>Consider a simple dual-homed BGP stub-AS customer, C, with two providers, P1 and
        P2.  P1 and P2 are Internet Service Providers.</t>

        <figure>
          <name>Dual-homed stub-AS customer</name>
          <artset>
          <!-- This <artset> includes two <artwork> elements, each of a different type -->
            <artwork type="ascii-art" align="center">
              <![CDATA[
  +----+         +----+
  | P1 |         | P2 |
  +----+         +----+
    |     +---+    |
    +-----| C |----+
          +---+
              ]]>
            </artwork>
          </artset>
        </figure>

        <t>Presume that C has a single network, N, it wishes to advertise to the
        Internet via both P1 and P2.</t>

        <t>Presume that C wishes to make load balancing choices for its Internet
        traffic and thus receives the majority of the current Internet table
        (approximately 1 million destinations as of the writing of this document)
        from both P1 and P2.</t>

        <section anchor="provider-receiving-customer-route">
          <name>Provider receiving the customer route</name>

          <t>If P1 and P2 wish to deploy SAV enforcement for C, their SAV tables for
          their interfaces towards C contain only "N".  Presuming that C always
          advertises its full set of routes to its providers, unicast-RPF works well
          as an enforcement mechanism.  However, even for this trivial case we can
          illustrate the synchronization consideration between SAV enforcement and
          routing.</t>

          <t>If C has not yet advertised N to P1, and P1 advertises a single
          route to C that will start attracting traffic, P1 will drop C's
          traffic.</t>

          <t>As P1 continues to advertise destinations to C, C advertises its route
          to P1.  During this time, any traffic attracted to P1 prior to C being
          installed in P1's FIB will still be dropped.  This continues until C's
          route is installed in the FIB and u-RPF as the SAV enforcement mechanism
          stops dropping traffic.</t>

          <t>This example highlights that if enforcement occurs prior to programming
          that traffic is inappropriately dropped.</t>
        </section>

        <section anchor="customer-receiving-provider-routes">
          <name>Customer receiving the provider routes</name>

          <t>Consider the somewhat ludicrous opposite scenario: C wishes to deploy
          SAV enforcement vs. P1 and P2, which send full Internet feeds.  Since C is
          taking full Internet table feeds, it also considers using RPF as its SAV
          enforcement mechanism.</t>

          <t>C has yet to receive any routes from either P1 or P2.</t>

          <t>C advertises its route to P1 and P2.  These providers install that
          route into their FIBs and propagate the route to the rest of the Internet.
          This begins attracting traffic to C.</t>

          <t>P1 and P2 start advertising their Internet feeds to C.  During the time
          while the Internet feeds are being advertised to C, traffic may arrive
          from the Internet for C.  Until the covering routes from the providers are
          received and installed in C's FIB, traffic is dropped.</t>
        </section>

        <section>
          <name>Scaling and synchronization considerations</name>

          <t>The above two examples illustrate where differences in scaling and a
          lack of synchronization between routing and SAV enforcement can lead to
          dropped traffic.</t>

          <t>A potentially different conclusion is that RPF as a SAV enforcement
          mechanism is the wrong tool.  Consider instead that in each direction for
          the network peering that the full source of truth was pre-calculated and
          is complete.  If this is known a priori, and the SAV enforcement state is
          installed prior to advertising routes that will attract traffic, then
          traffic will not be dropped. Excellent!</t>

          <t>Even with pre-calculated sources of truth, using the two prior
          examples, there are still properties where scaling considerations are
          illustrated:</t>

          <ul spacing="compact">
            <li>Your enforcement state MUST be fully installed prior to advertising
            routing that can attract traffic that will otherwise be dropped.</li>

            <li>The availability of the SAV table state used for enforcement, if
            distributed dynamically, becomes a convergence consideration that needs
            to be addressed before routing convergence can start.</li>

            <li>SAV table state is very likely to be significantly greater in scale
            that routing state. It could vary more on a per-interface basis than
            similar routing state received by the network element.</li>

            <li>In-band distribution of SAV table state could compete for converging
            both of these sub-systems - routing and SAV enforcement.  The example
            of RPF as an enforcement mechanism shows how SAV enforcement and routing
            require full alignment.  A mechanism where SAV enforcement is similarly
            distributed in BGP and competes vs. routing data becomes comparable at a
            higher scale.</li>
          </ul>
        </section>

        <section>
          <name>Dynamic updates for SAV enforcement state</name>

          <t>SAV enforcement state is likely to require dynamic update
          mechanisms.  Updates to even a single destination's state for "source of
          truth" require that the entire routing system - e.g., the Internet - need
          to be able to absorb and install such updates dynamically to avoid dropped
          traffic.  BGP handles the distribution of destinations for the Internet.
          A similar dynamic mechanism for distributing SAV sources of truth is required.
          A requirement for Internet-scale SAVE enforcement requires SAV
          enforcement and forwarding to be synchronized.</t>

          <t>The trivial examples
          (<xref target="provider-receiving-customer-route"/>, 
           <xref target="customer-receiving-provider-routes"/>)
          demonstrate how difficult addressing synchronization across the
          Internet is likely to be, if attempted at scale.</t>
        </section>
      </section>
    </section>

    <section>
      <name>SAV enforcement scaling considerations for network elements</name>

      <t>Most discussion to date about full SAV enforcement makes a highly
      inappropriate assumption: There are infinite resources to install not only
      forwarding state, but able to absorb and implement SAV enforcement
      mechanisms.  Instead, it's quite normal for there to be highly asymmetric
      capabilities in the network elements involved in forwarding.</t>

      <t>Using the prior example, for their edge routers, providers P1 and P2
      likely have the capacity to carry multiple views of the Internet routing
      table along with handling all customer routes.  If C does indeed wish to
      carry two full views of the Internet, that's certainly possible.  But
      perhaps it uses a lower capability device where it only can carry 20% of
      the Internet routing table in its FIB.  Stub AS customers can obtain
      significant benefit for outbound traffic load balancing by only
      selectively using a portion of the Internet's table and otherwise choosing
      to "default" its traffic to its upstream providers.</t>

      <t>Similarly, it may not be possible for C to do SAV enforcement based on
      limited hardware resources.  RPF as an enforcement mechanism becomes
      "silly" to do when defaults are involved.  In such situations, perhaps it
      is better to not do SAV enforcement at all?</t>

      <t>While the trivial example seems inapplicable to broader scenarios, the
      discussion above has similar considerations for any device participating
      in SAV enforcement with constrained resources.  If your enforcement policy
      drops traffic that is out-of-profile, less than perfect and less than
      fully synchronized enforcement state will lead to inappropriately dropped
      traffic.</t>

      <t>There are two conclusions from these scaling and limiting capacity
      considerations:</t>

      <ul spacing="compact">
        <li>Using "drop" for out-of-profile SAV traffic is only safe when the
        devices have both fully synchronized SAV enforcement state, but also all
        enforcement state.</li>

        <li>Selectively providing SAV enforcement could provide benefit to
        operators.  Developing the forms of selective enforcement and qualifying
        their benefits is work that should be taken up for future study.</li>
      </ul>
    </section>

    <section>
      <name>Violating the contract based on security posture.</name>

      <t>The discussion above is written from the general Internet stance that
      dropping traffic as routing and SAV enforcement is synchronized is always
      problematic.  It's worth noting that in specific operator scenarios that a
      "fail closed" model may be appropriate for security reasons.  In such
      cases, until enforcement for the known good source addresses is installed,
      dropping all traffic that fails to match the SAV enforcement mechanism is
      permitted.</t>
    </section>

    <section>
      <name>The asymmetric contract and the broken promise.</name>

      <t>Asymmetry will exist in in device forwarding and SAV enforcement
      capabilities.  Performing aggressive SAV enforcement and dropping
      out-of-profile traffic requires having perfect sources of truth and
      tightly coupled procedures to install and enable SAV enforcement state
      require significant care.</t>

      <t>Ordered installation of up to date SAV tables is required before
      routing information can be disseminated by a SAV enforcing network
      element.</t>

      <t>SAV enforcement "sources of truth" must be fully aligned with any valid
      distribution of destination based routing state to avoid breaking the
      promise of destination based forwarding.</t>

      <t>Achieving perfection in such a system at Internet scale may prove to be
      impossible.  Benefits of selective enforcement of SAV may prove to be more
      deployable.</t>
    </section>

    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This memo includes no request to IANA.</t>
    </section>
    
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>This document discusses the impacts to inappropriately dropped IP
      traffic when source address validation enforcement is deployed
      inconsistently routing.  This document primarily provides the framework to
      consider some of the inputs that cause this impact to permit implementors
      to avoid such issues.</t>
    </section>
    
  </middle>

  <back>
    <displayreference target="RFC2827" to="BCP38"/>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-savnet-inter-domain-problem-statement.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-savnet-inter-domain-architecture.xml"/>
      </references>
 
      <references>
        <name>Informative References</name>

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1519.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2827.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3704.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8704.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-sidrops-bar-sav.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-savnet-general-sav-capabilities.xml"/>
      </references>
    </references>

    <section anchor="Acknowledgements" numbered="false">
      <!-- [REPLACE/DELETE] an Acknowledgements section is optional -->
      <name>Acknowledgements</name>
      <t>TBD</t>
    </section>
    
    <section anchor="Contributors" numbered="false">
      <!-- [REPLACE/DELETE] a Contributors section is optional -->
      <name>Contributors</name>
      <t>TBD</t>
    </section>
    
 </back>
</rfc>
