<?xml version="1.0" encoding="iso-8859-1" ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>

<rfc category="bcp" ipr="trust200902" docName="draft-song-savnet-inter-domain-bgp-ops-01"  consensus="true" submissionType="IETF">

<front>
        <title abbrev="BGP OPS for Inter-domain SAV"> BGP Operations for Inter-domain SAV
 </title>

  <author fullname="Xueyan Song" initials="X." surname="Song">
      <organization>ZTE Corporation</organization>
     <address>
       <postal>
         <street/>

         <!-- Reorder these if your country does things differently -->

         <city/>

         <region/>

         <code/>

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

       <email>song.xueyan2@zte.com.cn</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
	
  <author fullname="Chunning Dai" initials="C." surname="Dai">
      <organization>ZTE Corporation</organization>
     <address>
       <postal>
         <street/>

         <!-- Reorder these if your country does things differently -->

         <city/>

         <region/>

         <code/>

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

       <phone/>

       <email>dai.chunning@zte.com.cn</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
	
  <author fullname="Shengnan Yue" initials="S." surname="Yue">
      <organization>China Mobile</organization>
     <address>
       <postal>
         <street/>

         <!-- Reorder these if your country does things differently -->

         <city/>

         <region/>

         <code/>

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

       <phone/>

       <email>yueshengnan@chinamobile.com</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
	
  <author fullname="Changwang Lin" initials="C." surname="Lin">
      <organization>New H3C Technologies</organization>
     <address>
       <postal>
         <street/>

         <!-- Reorder these if your country does things differently -->

         <city/>

         <region/>

         <code/>

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

       <phone/>

       <email>linchangwang.04414@h3c.com</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
	
    <date month="Jan" day="26" year="2024"/>		

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

    <keyword>Request for Comments</keyword>
    <keyword>RFC</keyword>
    <keyword>Internet Draft</keyword>
    <keyword>I-D</keyword>

    <abstract>
    <t>  This document attempts to present deployment considerations of source address validation using BGP protocol in inter-domain network.</t>
    </abstract>
    
</front>
  
<middle>

   <section title="Introduction">
  
   <t> It is well known that internet routing security challenges include: route leaks, route prefix hijacking and source address spoofing. 
   To address these challenges, Resource Public Key Infrastructure (RPKI) provides an approach to build a formally verifiable database of IP
   addresses and AS numbers as resources. And there are RPKI-based BGP Prefix Origin Validation (POV) (see <xref target="RFC7115"/>) and BGP AS path validation
   (see <xref target="I-D.ietf-sidrops-aspa-verification"/>) to mitigate route leaks. The Route Origin Authorization currently used for RPKI-ROA 
   (see <xref target="RFC6811"/>, <xref target="RFC9319"/>) prevents hijacking of route prefix. Unlike RPKI-based BGP ROA, POV or ASPA, Source Address
   Validation (SAV) is one feasible way to filter invalid address and mitigate source address spoofing attacks in the data plane. </t>
   <t> To help reduce source address spoofing attacks in networks the feasible way is to validate whether the source address is spoofed or not. 
   The security requirement is the ability to validate the accuracy of incoming interface of the traffic for specific IP address prefixes. More 
   specifically, one router needs to validate that the incoming interface receiving the source IP address prefixes is in fact the right interface. 
   This document describes a BGP validation mechanism to satisfy this security requirement in inter-domain networks.</t>
  
    <t> As analyzed at <xref target="I-D.ietf-savnet-inter-domain-problem-statement"/>, there are existing urpf-like mechanisms which describe an approach to 
	build source address filtering. However, the urpf technologies may improperly permit spoofed traffic or block legitimate traffic. For example, 
	strict uRPF (see <xref target="RFC3704"/>) technology is a simple way to implement and provides a very reasonable way to single-homing scenarios
	for ingress filtering. But in asymmetrical or multi-homing scenarios it brings wrong block for logic source address prefixes. Loose URPF [RFC3704]
	takes a looser validation mechanism than strict URPF to avoid improper block but may permit improperly spoofed source address. However, the urpf
	technologies may improperly permit spoofed traffic or block legitimate traffic. The FP-uRPF (see <xref target="RFC3704"/>) attempts to strike the banlance 
	of the strict and loose uRPF but still has some shortcoming. The EFP-uRPF (see <xref target="RFC8704"/>) provides a more feasible way in overcoming 
	the improper block of strict uRPF in asymetric routing scenario, but EFP-uRPF has not been implemented in practical networks yet.</t> 
    
	<t> The BGP validation mechanism introduced in this document aims to reduce false positives regarding invalid incoming interface, mitigate 
	source address spoofing, resolve the inflexibility about directionality of strict-URPF to improve accuracy of source address validation in 
	inter-domain networks. The deployment of Source Address Validation using BGP may have many operational considerations.</t> 
	
	<t> This document attempts to collect and present some operational and security considerations to deploy Source Address Validation on routers in inter-domain networks.</t> 
  
   </section>
  

   <section title="Prefix-to-Interface Mapping">
	
     <t> The Source Address Validation needs only be done by edge routers (or AS boarder routers) in a network and is deployed on current routers 
	 without significant hardware upgrades. The prefix-to-interface mapping method introduced in this document does not need to update current routers with hardware upgrades nor big software updates. 
	 The mapping policy should be used in boarder routers (i.e., ASBR) from other large networks (such as small stub, enterprise, edge networks, etc.). </t>
	 
	 <t> The following terms in this document are used:</t>
	 <ol spacing="compact">
     <li>Prefix: Has the content (IP address, prefix length), interpreted as customary (see <xref target="RFC4632"/>).</li>
     <li>Incoming Interface: The interface which received the traffic of source route prefixes.</li>
     <li>Route Prefix: The prefix derived from a route.</li>
     <li>POI: A tag for IGP/BGP source Prefix Origin Identification (POI).</li>
     </ol>

	 <t> Based-on these definitions, any given IP address received from the traffic of one specific address prefix derived from a BGP route needs 
	 be verified locally using BGP validation method. The deployment for prefix-to-interface mapping policy on routers listed as the following:</t>	 
	 <ol spacing="compact">
     <li>Add Prefix Origin Identification (POI) to BGP route, the POI tag can be set to BGP route prefix from BGP neighbors.</li>
     <li>Create prefix-to-interface mapping policy and apply the policy to the incoming interface of the source address received from 
	 the packets of one specific address prefix.</li>
     <li>When the source prefix is validated to be matched with the incoming interface, the packets received are permit to transit; if not, 
	 the packets received should be discarded or redirected to other interfaces based-on the deployed route policy.</li>
     </ol>
	 
  </section>  	

  <section title="SAV Function">  

	
	<t> An implementation should provide the ability to match the validation policy and set validation state of routes as part of its source address 
	validation policy SAV function. The SAV function involves 2 characters: source address prefix and incoming interface.</t>
	<t> The objectives of SAV function include (1) set prefix-to-interface mapping of BGP route prefix from BGP neighbor with the incoming interface 
	as route policy deployed at the edge routers, (2) match the validation mapping policy and (3) decide the validation state for the source address.
	When the traffic of one specific address prefix received at one interface of the edge routers, the validation policy should be deployed and filtered
	 the source address. And based-on the validation state the source address should be validated correctly.</t>
 
 
	<t> The validation state is considered to include:</t>
	<ul spacing="compact">
	<li>Valid: The address prefix of received traffic matches the incoming interface.</li>
	<li>Invalid: The address prefix of received traffic does not match the incoming interface.</li>
	<li>NotFound: The address prefix of received traffic is not found.</li>
	</ul>
	
	<t> When the source address received of traffic which prefix derived from the BGP route is not matched with the incoming interface, the validation 
	state is considered as "Invalid". Only the prefix matched with the incoming interface the validation state is set as "valid". Similarly, if no valid
	route be found its corresponding address packets should be discarded and its validation state should be set as "NotFound".</t>
 
   </section>  
   
	<section title="Scalability">

	<t> The POI policy can be deployed as different granularity to satisfy scalability requirements for source address validation. The document provides 
	the following policies: </t>

	<ul spacing="compact">
	<li>AS level Prefix Originated Indicator (AS POI): The AS number information which can be obtained along the prefix advertisement is used for SAV 
	filtering policy. </li>
	<li>Community level Prefix Originated Indicator (Community POI): The policy uses BGP Community feature for source address validation. It may require 
	BGP extentions to carry the necessary POI information.</li>
	<li>Router level Prefix Originated Indicator (Router POI): This is one practical way to reuse some of the existing fields to indicate the directionality 
	or location of the source packets belong to. The policy suggests to use router-id as POI.</li>
	<li>Prefix level Prefix Originated Indicator (Prefix POI): The policy is the smallest filtering granularity for source address validation. The traffic
	packets received at incoming interface of BGP ASBR are validated by the POI. Considering the inter BGP domains may be managed by different operators, 
	the Prefix POI is recommended be deployed as local policy.</li>
	</ul>		
	
    </section>
  
   <section title="Multi-homing Scenarios">  
	<section title="Scenario 1">    
   
   <t> In terms of the URPF technologies may improperly permit spoofed traffic or block legitimate traffic, the URPF enhancements for solving 
   limitations of strict URPF for inter-domain networks is mainly on improvement of ingress filtering accuracy in multi-homing scenarios.</t>
   
   <t> The following figure 1 shows an example for Content Delivery Networks (CDN) service access to Service Provider Networks (SPN) through the
   Internet Service Provider (ISP) networks. For the ISPs are outside networks of SPN, the SPN needs to verify the validity of source address 
   prefix of traffic received from ISPs. The CDN1 announces source prefix P1 to the ISP1 and ISP2, announces source prefix P2 to ISP1, and prefix
   P3 to ISP2. The POP1 (Point of Presence) is the point or infrastructure used for access of ISP1 and ISP2. The POP1 learns routes directly 
   connected ISPs and some non-directly connected ISPs/CDNs from multiple ISPs. The set of routes learned from the same non-directly connected
   ISP is inconsistent but overlapped.</t> 
 
   <t> It's assumed that the prefix from ISPs in the following figure are trusted.</t> 
 
<figure anchor="Figure_1" title="SAV Functions for CDN Multi-homing Scenario">
<artwork align="left"> <![CDATA[		 
                       Prefix:A,B,D,F
                       +------------+
                   /---|   ISP100   |---\
   +---------+    /    +------------+    \
   | SP      |   /                        \ Prefix: A,B,C
   |        +----+                        +----------+
   |        |POP1|                        |   CDN1   |
   |        +----+                        +----------+
   +---------|    \    +------------+    /
                   \---|   ISP200   |---/
                       +------------+
                       Prefix:A,C,E,F
]]>

</artwork>
 </figure>	 


    <t> It's assumed that the POI for the prefix origin from ISP100 is set as 100, and POI for ISP200 is set as 200. The prefix-to-interface mapping rule is 
	based-on AS level and is showed as the below table 1.</t>
	<texttable title="Prefix-to-Interface Mapping" >
      <ttcol align='left'>Prefix</ttcol>
      <ttcol align='left'>POI</ttcol>
      <ttcol align='left'>Interface</ttcol>
      <c>A</c>
      <c>100,200</c>
      <c>1,2</c>
	  <c>B</c>
      <c>100</c>
      <c>1</c>
	  <c>C</c>
      <c>200</c>
      <c>2</c>
	  <c>D</c>
      <c>100</c>
      <c>1</c>	  
	  <c>E</c>
      <c>200</c>
      <c>2</c>
	  <c>F</c>
      <c>100,200</c>
      <c>1,2</c>
	</texttable>
	<t> When the packets received in POP1 the source address is validated using prefix-to-interface mapping rule. For example, prefix A tagged with 
	POI 100 and 200, respectively matched with Int1 and Int2 of POP1, so the packets of prefix A will be permitted to transit by Int1 and Int2. For 
	prefix B tagged with POI 100 can only be permitted by Int1 according to the prefix-to-interface mapping rule. Similarly, the prefix F comes from
	both ISP1 and ISP2 will be permitted by Int1 and Int2.</t>
	<t> The SAV actions table shows as table 2.</t>
	<texttable title="SAV Action" >
      <ttcol align='left'>Interface</ttcol>
      <ttcol align='left'>Prefix</ttcol>
      <ttcol align='left'>Action</ttcol>
      <c>1</c>
      <c>A</c>
      <c>Permit</c>
	  <c>1</c>
      <c>B</c>
      <c>Permit</c>
	  <c>1</c>
      <c>C</c>
      <c>Deny</c>
	  <c>1</c>
      <c>D</c>
      <c>Permit</c>	  
	  <c>1</c>
      <c>E</c>
      <c>Deny</c>
	  <c>1</c>
      <c>F</c>
      <c>Permit</c>
      <c>2</c>
      <c>A</c>
      <c>Permit</c>
	  <c>2</c>
      <c>B</c>
      <c>Deny</c>
	  <c>2</c>
      <c>C</c>
      <c>Permit</c>
	  <c>2</c>
      <c>D</c>
      <c>Deny</c>	  
	  <c>2</c>
      <c>E</c>
      <c>Permit</c>
	  <c>2</c>
      <c>F</c>
      <c>Permit</c>
	</texttable>
	<t>In this case, the prefix from the same origin (i.e., AS number) as a whole set is trusted and the prefix-to-interface mapping rule is applied to the incoming interfaces of 
	traffic received for source validation in routers. </t>

    </section>  
	<section title="Scenario 2"> 
	<t> The following figure 2 shows an example of multipoint interconnection between multiple POP points and the same ISP. In this case, the set of
	routes learned from different POP points to the same ISP is inconsistent but overlapped. This section provides 2 POI policies apllied in AS-level and Router-level.</t>	

<figure anchor="Figure_2" title="SAV Functions for Multiple POPs Access Scenario">
<artwork align="left"> <![CDATA[                               
        +----------------------------------+
        |              ISP200              |
        +----------------------------------+
             |            |          |
             |  Prefix:A,C|          |
   Prefix:A,B|            |          |Prefix:A,B,C
           +----+       +----+     +----+
        +--|POP1|-------|POP2|-----|POP3|--+
        |  +----+       +----+     +----+  |
        |     \           |          /     |
        |      \          |         /      |
        |       \         |        /       |
        |         +---------------+        |
        |         |      RR       |        |
        |         +---------------+    SP  |
        +----------------------------------+
]]></artwork></figure>

    <t> In this case, the prefix-to-interface mapping rule shows as the table 3.</t>
	<texttable title="Prefix-to-Interface Mapping" >
      <ttcol align='left'>Prefix</ttcol>
      <ttcol align='left'>POI</ttcol>
      <ttcol align='left'>Interface</ttcol>
      <c>A</c>
      <c>200</c>
      <c>1,2,3</c>
	  <c>B</c>
      <c>200</c>
      <c>1,3</c>
	  <c>C</c>
      <c>200</c>
      <c>2,3</c>
	</texttable>
	<t> If AS POI applied in the case the traffic packets of prefix (i.e., A, B and C in this example) received at POP1 from AS 200 are treated from
	the same trusted source. If the POI policy replaced by router POI the packets of prefix C will be filtered and processed as invalid source address
	at POP1 in this example.</t>

   <t> Through BGP method provided in this document, the SAV function is applied by BGP edge routers (i.e., SAV validation node) using prefix-to-interface rules to complete 
   source address validation accurately. It's obvious that the BGP method described in section 5.1 and 5.2 improves the source address validation 
   accuracy and overcomes the limitation of strict URPF method in multi-homing scenarios.</t>
 
	</section>   
	</section> 
 
	<section title="Implementation and Operation Considerations">
   <t> This document assumes the BGP route prefix origin is trusted. The validation to the origination Autonomous System (AS) of BGP routes is out
   of the scope of the document. The source address validation is selected for filtering invalid address or mitigating source address spoofing 
   through validating the incoming interface of traffic received for one specific source prefix is in fact the right interface. The mapping policy
   as discussed in section 2 can be used to take action and based on the validation state to complete SAV function introduced in section 3 for 
   address filtering.</t>
   <t> The policies can be implemented include (1) identifying the route prefix advertised by different ISPs(i.e., BGP neighbors) as different POIs.
   (2) applying Prefix-to-Interface mapping rule to the BGP edge routers and process the Source Address Validation (SAV) function. (3) making the 
   corresponding action based-on the validation state.</t>	
   <t>The validating router uses the result of source address validation to influence local policy in one network. In deployment, the policy should
   fit into the routers existing policy and allows a network to deploy incrementally or partially. The prefix-to-interface mapping rules used by the
   BGP edge routers are expected to be updated based-on the real network requirement. </t>
    </section>   
	
	<section title="Security Considerations">
	<t> The BGP method introduced in this document provides a feasible way to validate address of traffic received for one specific source prefix.
	In this document, the BGP route prefix in inter-domain network is considered as trusted. If there are invalid routes which are not matched with 
	the current BGP route table should be blocked. The validation of origination AS of BGP routes is introduced in BGP POV document (see <xref target="RFC6811"/>). 
	This document only attempts to verify the incoming interface is in fact the right interface for the source prefix. The detailed inter-domain 
	SAV security please refer to <xref target="I-D.wu-savnet-inter-domain-architecture"/>. </t>
	</section>

	<section title="IANA Considerations">
	<t> This document has no requests for IANA.</t>
	</section>  
	
	<section title="Acknowledgements">
	<t> The authors would like to acknowledge Wei Yuehua, Xiao Min, Liu Yao, Zhou Fenlin for their thorough review and feedbacks. </t>
	</section>  
  
</middle>
  
<back>
	
    <references title="Informative References">
		<?rfc include="reference.RFC.7115"?>
		<?rfc include="reference.RFC.6811"?>
		<?rfc include="reference.RFC.9319"?>
		<?rfc include="reference.RFC.3704"?>
		<?rfc include="reference.RFC.8704"?>	
		<?rfc include="reference.RFC.4632"?>
	    <?rfc include='reference.I-D.ietf-sidrops-aspa-verification'?>
	    <?rfc include='reference.I-D.wu-savnet-inter-domain-architecture'?>	
	    <?rfc include='reference.I-D.ietf-savnet-inter-domain-problem-statement'?>	
    </references>	
	
</back>

</rfc>

