<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC5440 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5440.xml">
<!ENTITY RFC3704 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3704.xml">
<!ENTITY RFC8231 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8231.xml">
<!ENTITY RFC5394 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5394.xml">
<!ENTITY RFC4655 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4655.xml">
<!ENTITY RFC8051 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8051.xml">
<!ENTITY RFC9846 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9846.xml">
<!ENTITY I-D.ietf-savnet-intra-domain-architecture SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-savnet-intra-domain-architecture.xml">
<!ENTITY I-D.ietf-savnet-inter-domain-architecture SYSTEM "https://datatracker.ietf.org/doc/bibxml3/draft-ietf-savnet-inter-domain-architecture.xml">
<!ENTITY I-D.ietf-savnet-intra-domain-problem-statement SYSTEM "https://datatracker.ietf.org/doc/bibxml3/draft-ietf-savnet-intra-domain-problem-statement.xml">
<!ENTITY I-D.ietf-savnet-inter-domain-problem-statement SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-savnet-inter-domain-problem-statement.xml">
<!ENTITY I-D.ietf-savnet-general-sav-capabilities SYSTEM "https://datatracker.ietf.org/doc/bibxml3/draft-ietf-savnet-general-sav-capabilities.xml">
]>

<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr="trust200902" docName="draft-song-pce-pcep-sav-03" consensus="true" submissionType="IETF" tocInclude="true" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="PCEP for SAV"> Path Computation Element Communication Protocol for Source Address Validation 
    </title>
    <seriesInfo name="Internet-Draft" value="draft-song-pce-pcep-sav-03"/>
    <author fullname="Xueyan Song" initials="X." surname="Song">
      <organization>ZTE Corp.</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="Weiqiang Cheng" initials="W." surname="Cheng">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city/>
          <region/>
          <code/>
          <country>China</country>
        </postal>
        <phone/>
        <email>chengweiqiang@chinamobile.com</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
    <author fullname="Shengna 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>
    <date month="August" day="31" year="2026"/>
    <area>Routing</area>
    <workgroup>PCE Working Group</workgroup>
    <keyword>Request for Comments</keyword>
    <keyword>RFC</keyword>
    <keyword>Internet Draft</keyword>
    <keyword>I-D</keyword>
    <abstract>
       <t>  This document presents a method of Path Computation Element (PCE) for Source Address Validation (SAV) in networks. 
	   It extends Path Computation Element Communication Protocol (PCEP) to support SAV policy distribution and synchronization between PCEP speakers 
	   for threat mitigation for source address spoofing.</t>
    </abstract>
  </front>
  <middle>
    <section>
      <name>Introduction</name>
      <t> Source Address Validation (SAV) is a critical security mechanism designed to mitigate IPv4 and IPv6 source address spoofing attacks by validating 
	  the legitimacy of source prefixes against their ingress interfaces. Traditional methods like ACL-based ingress filtering, strict uRPF and loose uRPF 
	  mechanisms <xref target="RFC3704"/> have some issues as described in 
	  <xref target="I-D.ietf-savnet-intra-domain-problem-statement"/> and <xref target="I-D.ietf-savnet-inter-domain-problem-statement"/>. 
	  The new inter-domain SAV mechanism is required not to generate false positive or false negative policies leading to improper block or permit of traffic.</t>

      <t> The PCE architecture, defined in <xref target="RFC4655"/>, provides a centralized control framework for path computation in networks. This document presents a 
	  PCE-based SAVNET solution to enable dynamic policy enforcement within the networks. By extending the PCEP protocol, the PCE can efficiently manage SAV policies, 
	  validate the legitimacy of source address prefixes, and enforce traffic filtering actions to mitigate the threats posed by source address spoofing. </t>
    </section>
	
    <section>
      <name>Conventions</name>
      <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>
	  
      <section>
        <name>Terminology</name>
        <t> This document uses the following terms defined in <xref target="RFC5440"/>: PCC, PCE, PCEP Peer, and PCEP speaker.</t>
        <t> This document uses the following terms defined in <xref target="RFC8051"/>: stateful PCE.</t> 
        <t> This document uses the following terms defined in <xref target="I-D.ietf-savnet-intra-domain-architecture"/>: SAV, SAV rule, SAV Information Base.</t>
      </section>
    </section>
    
	<section>
      <name>PCE-based Solution for SAVNET</name>
      <section>
        <name>PCE Integration to SAVNET Architecture</name>
        <t> A PCC may use PCEP protocol to send a SAV request for one or more incoming interfaces to a PCE. The PCE may reply with a set of computed SAV policies to the PCC.
		For example, in an enterprise AS, a PCE receives SAV request from a PCC (e.g., edge routers or border routers). The PCE computes that source prefix 
		(for example, 2001:db8:1::/48) is only valid on interfaces connected to the data center Subnet. Any traffic with this prefix arriving at an AS border router is 
		dropped unless it originates from the designated interfaces. </t>

        <t> The PCE-based SAVNET solution supports both single-PCE and multi-PCE coorperative environments. It is applicable to single-domain and multi-domain AS networks,
		which may leverage PCE for cross-domain policy coordination. For example, if the attacker switches the entry from Eth1/0 of R1 in AS60001 to Eth5/0 of R5 
		in AS60004, the PCE as network controller needs to synchronize and enforce the SAV policies across domains. The centralized control capability of PCE can enhance 
		the dynamics of SAV strategies and the efficiency of cross-domain coordination. </t>
      </section>

      <section>
        <name>PCE as SAV Policy Controller</name>
        <t> The PCE provides a centralized control framework for SAV policy computation, the visibility of global SAV policy and global filtering policy optimization and 
		across-domains coordination. PCE as SAV policy controller manages and delivers SAV information to the underlay network, which acquires SAV policies eliminating the
		needs for mutual communication between network nodes. The following figure shows an example of process for a PCE using PCEP to install SAV policies on PCC (i.e., AS boarder routers) 
		in inter-domain networks.</t>
        <figure anchor="Figure_1">
          <name>An example of PCE for SAV</name>
          <artwork align="center"><![CDATA[  
                   +----------------+
                   |      PCE       |
      -------------+(SAV Controller)+-----------
      |            +-------+--------+           |<--PCEP
      |                    |                    |
+-----+--------+    +------+-------+    +-------+------+ 
|   PCC        |    |   PCC        |    |   PCC        |
|(ASx NetNodes)|    |(ASy NetNodes)|    |(ASz NetNodes)|
+--------------+    +--------------+    +--------------+
]]></artwork>
        </figure>
		
        <t> PCE as SAV controller collects SAV information for SAV policy generation of mapping valid interfaces with prefix (e.g., 2001:db8::/32) to have the capability of
		global SAV policy visibility for single or multiple domains policy enforcement and coordination. </t>
		<t> The PCE sends PCEP protocol messages (see <xref target="RFC8231"/>) to instal SAV policies, dynamic SAV policy updates.</t>
        <t> The PCC deploys SAV policies which are stored in the SAV Information Database for mapping of source address prefix with valid ingress interfaces for ingress traffic filtering.</t>
        <t> This document leverages the Stateful PCE model defined in [RFC8231]. SAV policy state is maintained by both the PCE and the PCC. The PCE MAY actively 
		update SAV policies via PCUpd messages, and the PCC MUST report its current SAV policy state via PCRpt messages.</t>
	  </section>
	  
      <section>
        <name>Requirements</name>
		<t> When PCE speakers support SAV, PCEP is required to support the following functionalities.</t>
		<t> The PCEP MUST support SAV information collection for intra-domain and cross-domain networks.</t>
		<t> The PCEP MUST support SAV capability advertisement in single and multi-domains.</t>
		<t> The PCEP MUST support dynamic updates of SAV policies for network changes (e.g., link failures, prefix additions).</t>
		<t> The PCEP MUST support backward compatibility with existing SAVNET mechanisms (e.g., BAR-SAV).</t>
		<t> The PCEP sessions for SAV MUST be secured against tampering and unauthorized access.</t>
     </section>
	 
    </section>

    <section>
      <name> PCEP Extenstions</name>
      <section>
        <name>SAV Capability Advertisement</name>	  
        <t> The OPEN message is used to establish a PCEP session between PCEP speakers. To support SAV functionality, a new flag SAV-CAPABILITY is introduced in the STATEFUL-PCE-CAPABILITY TLV for SAV capability advertisement.</t>
		<t> The STATEFUL-PCE-CAPABILITY TLV format is defined in figure 9 in <xref target="RFC8231"/>.The document defines a new flag bit in the Flags field.</t>
		<t> SAV-CAPABILITY (Bit TBD): A PCEP speaker sets this bit to 1 to indicate that it supports the SAV extensions and objects defined in this document.</t>
      </section>
	  
      <section>
        <name>SAV-POLICY Object</name>
        <t> A new optional SAV object (Object-Class=TBD) is introduced to carrySAV policy information within PCEP messages (e.g., PCUpd, PCRpt). 
		A SAV object is used to carry information of SAV policy within a PCEP update message for SAV policy delivery and updates.</t>
        <t> The format of the SAV-POLICY object follows the standard PCEP Object format defined in <xref target="RFC5440"/>.</t>
		
        <figure anchor="Figure_3">
          <name>SAV-POLICY Object Format</name>
          <artwork align="center"><![CDATA[          
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Object-Class  |   OT  |Res|P|I|   Object Length (bytes)       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   //                        (Object body)                        //
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>

	 <t> The value for Object-Class and Object-Type (OT) are TBD. The P and I flags are used as defined in <xref target="RFC5440"/>.</t>
	 <t> The object body contains one or more SAV-POLICY-TLVs. Each TLV represents a single SAV rule mapping a source prefix to an interface list. 
	 The SAV-POLICY-TLV format is aligned with the standard PCEP TLV format and shown in the following figure:</t>

        <figure anchor="Figure_4">
          <name>SAV-POLICY-TLV Format</name>
          <artwork align="center"><![CDATA[  	 
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |           Type (TBD)          |             Length            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |L|    Flag     | Prefix Length |           Reserved            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                       IP Source Prefix                        |
  |                          (4 or 16 bytes)                      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  //                  Interface List Sub-TLVs                    //
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>	
		
     <t> Type: 16 bits. The TLV Type Indicator of value is TBD.</t>  
	 <t> Length: 16 bits. Indicates the total length of the TLV in octects. </t>
	 <t> The value field contains the following fields:</t>
     <t> L: 1 bit. A value of 0 indicates an IPv4 prefix (4 bytes); a value of 1 indicates an IPv6 prefix (16 bytes).</t>
	 <t> Reserved: 7 bits. MUST be set to 0 on transmission and MUST be ignored on receipt.</t>
     <t> Flag: 7 bits. Identifies the validation modes used in network nodes. The validation modes include 4 modes: interface-based prefix allowlist, interface-based prefix blocklist, prefix-based 
	 interface allowlist, prefix-based interface blocklist. By selecting modes in different scenarios, the network can be secured to mitigate spoofing attacks, as introduced 
	 in <xref target="I-D.ietf-savnet-general-sav-capabilities"/>. </t>
	 <t> Prefix Length: 8 bits. Indicates the length of the IP source prefix in bits.</t>
	 <t> IP source prefix: contains the source address prefix information.</t>
     <t> Interface List: contains a list of interface List Sub-TLVs. If it is a allowlist, it represents a list of interfaces allowed to access; if it is a blocklist, it represents a list 
	 of interfaces not allowed to access. The Interface List is encoded as a sequence of zero or more Sub-TLVs, and the format for the Sub-TLV is shown in Figure 5.</t>

        <figure anchor="Figure_5">
          <name>Sub-TLVs for Interface List Format</name>
          <artwork align="center"><![CDATA[  	 
   0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Sub-TLV Type |          Sub-TLV Length                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
//              Sub-TLV Value (variable)                        //
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>	
	 
	 <t> Sub-TLV Types are defined as follows:</t>	
	 <t> Value 1: Interface Index. Value is a 32-bit unsigned integer representing the interface index.</t>	
	 <t> Value 2: Interface Name. Value is a variable-length UTF-8 encoded string.</t>	
	 <t> Value 3-255: Reserved.</t>		 
     </section>

      <section>
        <name>Mechanism for Updates</name>
        <t> The SAV extensions defined in this document rely on the Stateful PCE model <xref target="RFC8231"/>. The PCE maintains SAV policy state and uses PCUpd messages to actively push SAV 
		policy updates to PCCs.</t>
		<t> The PCE sends PCUpd message to trigger mechanism when it determines the SAV policies need to change. Possible trigger conditions may involve: topology 
		changes (e.g., interface status modified), policy updates (e.g., the new added IP source prefix affiliated interfaces), and attack response from external threats.
		Upon receiving a PCUpd message containing SAV-POLICY objects, the PCC MUST process the policies and respond with a PCRpt message containing the acknowledged SAV-POLICY objects.</t>
	  </section>

    </section>

    <section>
      <name>IANA Considerations</name>
      <t> IANA is requested to allocate the following values:</t>
	  <t> A new flag bit for SAV-CAPABILITY within the "STATEFUL-PCE-CAPABILITYTLV Flag Field" subregistry of the "Path Computation Element Protocol(PCEP) Numbers" registry.</t>
	  <t> A new object-class value and object type for the SAV-POLICY object within the  "PCEP Objects" subregistry of the "Path Computation ElementProtocol (PCEP) Numbers" registry.</t>
	  <t> A new TLV Type Indicator value for SAV-POLICY-TLV within the "PCEP TLV Type Indicators" subregistry of the "Path Computation ElementProtocol (PCEP) Numbers" registry.</t>
	  
    </section>

    <section>
      <name>Security Considerations</name>
      <t> PCE security introduced in PCE Architecture <xref target="RFC5394"/>, PCEP <xref target="RFC5440"/> and stateful PCE <xref target="RFC8231"/> also applies for this draft. 
	  PCEP sessions for SAV policy distribution MUST use TLS 1.3 <xref target="RFC9846"/> to prevent tampering. SAVNET security considerations covered in 
	  <xref target="I-D.ietf-savnet-intra-domain-architecture"/> and <xref target="I-D.ietf-savnet-inter-domain-architecture"/> are also applicable to the PCE-based SAVNET solution 
	  defined in this document.</t>
    </section>

    <section>
      <name>Acknowledgements</name>
      <t> The authors would like to acknowledge Haisheng Wu and Zhenghai Wang for their helpful comments. </t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
    &RFC2119; 
    &RFC8174;
    &RFC5440;	
    &RFC8231;
    </references>
    <references title="Informative References">
    &RFC5394;
    &RFC3704;
    &RFC4655;
    &RFC8051;
    &RFC9846;
	&I-D.ietf-savnet-intra-domain-architecture;
    &I-D.ietf-savnet-inter-domain-architecture;
	&I-D.ietf-savnet-intra-domain-problem-statement;
    &I-D.ietf-savnet-inter-domain-problem-statement;
	&I-D.ietf-savnet-general-sav-capabilities;
    </references>
  </back>
</rfc>


