<?xml version="1.0" encoding="utf-8"?>
<!-- 
     draft-rfcxml-general-template-standard-00
  
     This template includes examples of the most commonly used features of RFCXML with comments 
     explaining how to customise them. This template can be quickly turned into an I-D by editing 
     the examples provided. Look for [REPLACE], [REPLACE/DELETE], [CHECK] and edit accordingly.
     Note - 'DELETE' means delete the element or attribute, not just the contents.
     
     Documentation is at https://authors.ietf.org/en/templates-and-schemas
-->
<?xml-model href="rfc7991bis.rnc"?>  <!-- Required for schema validation and schema-aware editing -->
<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> -->
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->


<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<!-- If further character entities are required then they should be added to the DOCTYPE above.
     Use of an external entity file is not recommended. -->

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="exp"
  docName="draft-flechier-sidrops-pava-01"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="IETF"
  xml:lang="en"
  version="3">
<!-- [REPLACE] 
       * docName with name of your draft
     [CHECK] 
       * category should be one of std, bcp, info, exp, historic
       * ipr should be one of trust200902, noModificationTrust200902, noDerivativesTrust200902, pre5378Trust200902
       * updates can be an RFC number as NNNN
       * obsoletes can be an RFC number as NNNN 
-->

  <front>
    <title abbrev="PAVA">PAVA: BGP AS_PATH Validation by Querying ASes about Their Relationships</title>
    <!--  [REPLACE/DELETE] abbrev. The abbreviated title is required if the full title is longer than 39 characters -->

    <seriesInfo name="Internet-Draft" value="draft-flechier-sidrops-pava-01"/>
   
    <author fullname="Maxence Flechier" initials="M" surname="Flechier">
      <!-- [CHECK]
             * initials should not include an initial for the surname
             * role="editor" is optional -->
    <!-- Can have more than one author -->
      
    <!-- all of the following elements are optional -->
      <organization>Univ. Grenoble Alpes, CNRS, Grenoble INP, LIG</organization>
      <address>
        <postal>
          <!-- Reorder these if your country does things differently -->
          <city>Grenoble</city>
          <code>38000</code>
          <country>FR</country>
          <!-- Uses two letter country code -->
        </postal>        
        <email>maxence.flechier@univ-grenoble-alpes.fr</email>  
        <!-- Can have more than one <email> element -->
      </address>
    </author>
    <author fullname="Martin Heusse" initials="M" surname="Heusse">
      <organization>Univ. Grenoble Alpes, CNRS, Grenoble INP, LIG</organization>
      <address>
        <email>martin.heusse@univ-grenoble-alpes.fr</email>  
      </address>
      </author>
    <author fullname="Andrzej Duda" initials="A" surname="Duda">
      <organization>Univ. Grenoble Alpes, CNRS, Grenoble INP, LIG</organization>
      <address>
        <email>andrzej.duda@univ-grenoble-alpes.fr</email>  
      </address>
      </author>
     
   
    <date year="2026"/>
    <!-- On draft submission:
         * If only the current year is specified, the current day and month will be used.
         * If the month and year are both specified and are the current ones, the current day will
           be used
         * If the year is not the current one, it is necessary to specify at least a month and day="1" will be used.
    -->

    <area>General</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <!-- "Internet Engineering Task Force" is fine for individual submissions.  If this element is 
          not present, the default is "Network Working Group", which is used by the RFC Editor as 
          a nod to the history of the RFC Series. -->

    <keyword>BGP, PATHSEC, DNS</keyword>
    <!-- [REPLACE/DELETE]. Multiple allowed.  Keywords are incorporated into HTML output files for 
         use by search engines. -->

    <abstract>
      <t>This document defines PAth VAlidation (PAVA), a scheme for validating
      the Border Gateway Protocol (BGP) AS_PATH field based on the AS relationships. 
      Validation is performed by sending queries to the ASes along the path, each
      query containing information about the prefix and the relevant path segment.
      We implement querying the ASes in a path with a system relying on Domain Name System (DNS) and
      DNSSEC. </t>
    </abstract>
 
  </front>

  <middle>
    
    <section>
      <name>Introduction</name>
      <t>The Border Gateway Protocol <xref target="RFC4271"/> is not secure by design. However, the evolving context of the Internet brings the need to enhance its security, reflected in several schemes advanced along the years. Path Security (PATHSEC), conceptualized in <xref target="RFC7132"/> brings the need to secure the AS_PATH of BGP Update announcements to protect against vulnerabilities such as path hijacks and route leaks. Path hijacks are attacks that alter an AS_PATH, and route leaks as per <xref target="RFC7908"/> are incidents in which an announcement is propagated outside of its intended scope. Proposed solutions like BGPsec <xref target="RFC8205"/>, OTC <xref target="RFC9234"/> and the use of a Large Community <xref target="I-D.ietf-grow-route-leak-detection-mitigation"/> offer limited solutions to these issues. ASPA <xref target="I-D.ietf-sidrops-aspa-verification"/> is the best answer but has limited coverage in cases of complex relationships and needs up-to-date information in an often external repository constituted by the Resource Public Key Infrastructure (RPKI) <xref target="RFC6480"/>. </t>
      <t>PAth VAlidation (PAVA) aims to improve PATHSEC while supporting any kind of AS peering relationships as defined in <xref target="RFC9234"/> as well as any complex relationship configuration. Moreover, PAVA allows to keep the control of relationship information directly under the AS governance and responsibility. 
      To this aim, PAVA carries out sequential queries targeting the ASes that appear in the AS_PATH and combines the answers to assess its validity. Each individual AS discloses only partial information about its immediate neighbors.
      In the validation step, PAVA verifies that all pairs of ASes in the AS_PATH are effectively neighbors and that the path is valley-free <xref target="Gao"/>. The valley-free rule guarantees protection against route leaks whereas the queried ASes guarantee protection against path forgeries.</t>
    </section>
      
    <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>
    <name>Terminology and List of Acronyms</name>
      <t>The following abbreviations are used.</t>
      <dl newline="false">
        <dt>C2P:</dt>
        <dd>Customer to Provider relationship</dd>
        <dt>P2C:</dt>
        <dd>Provider to Customer relationship</dd>
        <dt>P2P:</dt>
        <dd>Peer to Peer relationship</dd>
      </dl>
    </section>   

    <section>
    <name>PAVA Operations</name>

      <section>
        <name>Principles</name>
        <t>There are two parts in PAVA: the first one is the distribution of information related to AS relationships along a path and for a given destination prefix; the second one is the validation of the AS_PATH. The more information is available along a path, the more effective is the validation process, although partial deployment and adoption still offer partial verification.</t>
        <t>Information distribution in PAVA relies on the deployment of DNS servers that share information pertaining to the local relationships of an AS with its neighbors. The information is relatively static and takes the form of a DNS zone file.</t>
        <t>The verification of an AS_PATH comprises of cutting the AS_PATH in tiled segments of 3 ASes. The DNS server associated with the central AS in each triplet is in charge of providing an answer. The validating process compiles the received answers to determine the validity of the AS_PATH.</t>
        <t>The verifying algorithm checks if the AS_PATH is valley-free <xref target="Gao"/> to prevent route leaks and path hijackings. The validator verifies that the list of answers is such that the relationships are first ascending with consistent C2P (up) and then descending with P2C (down), with possibly P2P between the asending and descending parts.</t>
      </section>

      <section>
        <name>Validating AS Operations</name>
        <section>
          <name>DNS Queries</name>
          <t> The AS_PATH is split into tiled segments of 3 unique ASN such that each AS in the AS_PATH is at the center of a triplet. The end segments are made of only 2 ASes (e.g. an AS_PATH of [4 3 2 1 1 1] corresponds to 4 segments [4 3], [4 3 2], [3 2 1] and [2 1]). The validator generates a DNS query for each triplet, to which adopting ASes SHOULD answer with a status among UP, DOWN, SUMMIT, or ERROR. The validating AS compiles the answers into a list of status for the verification step.</t>
          <t>The DNS query is of the following form:</t>
          <t>[Prefix].[AS3].[AS1].[AS2].bgp.arpa,</t>
          <t>where the Prefix corresponds to the prefix of the NLRI field from the BGP Update being verified, and AS1, AS2, and AS3 correspond to the ASes in the segment [3 2 1] at stakes. All fields are encoded in plaintext.</t>
          <t>Queries resulting in a DNS error or without any answer after a reasonable time, are attributed the UNKNOWN status.</t>
        </section>
        <section>
          <name>Path Verification</name>
          <t>The finite state machine below processes the list of gathered status in the order of announcement propagation, that is in reverse from the AS_PATH order. The finite state machine decides on the outcome of the verification, either valid or invalid, in the sense of route eligibility as defined in <xref target="RFC4271"/>.</t>
          <artwork type="ascii-art" name="Verifying FSM">
            <![CDATA[
           Start                                       
             |                                         
             v                                         
        +---------+ SUMMIT|DOWN  +----------+          
   UP┌--|Ascending|------------->|Descending|--┐DOWN   
     └->+---------+              +----------+<-┘       
           |    |End               |    |              
           |    └------------------|-┐  |              
      ERROR|                       | |  |End           
           |      ERROR|SUMMIT|UP  | |  |              
           |   ┌-------------------┘ |  |              
           v   v                     v  v              
        +-------+                   +-----+            
        |Invalid|                   |Valid|            
        +-------+                   +-----+            
            ]]>
          </artwork>
        </section>
      </section>

      <section>
        <name>DNS Operations</name>
        <section>
          <name>Segment Status</name>
          <t>A segment of three ASes alongside a prefix forms a PAVA tuple ([3 2 1], prefix). The return status for a tuple depends on the BGP topology relationships (the relationships follow common definitions as used in <xref target="RFC9234"/>). This status SHOULD be adapted in cases of complex relationships. The use of a prefix provides flexibility and fine-tuning in definining a status.</t>
          <t>The status MUST be one of UP, DOWN, SUMMIT, ERROR. The status is defined as such, following the pairwise relationships in the segment (AS3-AS2, AS2-AS1):</t>
          <ul spacing="normal">
            <li>SUMMIT: (C2P, P2P), (C2P, P2P)</li>
            <li>UP: (C2P, C2P)</li>
            <li>DOWN: (P2P, P2C), (P2C, P2C)</li>
            <li>ERROR: any other case</li>
          </ul>
        </section>
        <section>
          <name>Zone File Creation</name>
          <t>PAVA uses the TXT Resource Record (RR) to store its status. An AS implementing PAVA SHOULD create a master file corresponding to its zone listing any possible segment it knows to be part of, with the answer as a status corresponding to said segment. The use of wildcards MAY be useful to limit the size of the generated master file.</t>
        </section>
      </section>   
    </section>

    <section>
      <name>Complementarity of PAVA with Other Proposals</name>
      <section>
        <name>BGPsec</name>
        <t>BGPsec, defined in <xref target="RFC8205"/>, allows cryptographic verification of BGP paths by means of recursive signatures of the path. BGPSec prevents attacks that alter the AS path but does not cope with route leaks, and adds burden to the routers with cryptographic operations. Furthermore, it does not tolerate partial deployment. </t>
      </section>
      <section>
        <name>OTC</name>
        <t>Only-To-Customer is a BGP attribute shared with BGP Open messages defined in <xref target="RFC9234"/>. OTC prevents route leaks in BGP sessions and is a great way to mitigate them. It however does not offer any additional PATHSEC mechanism, which means that ASes need to trust BGP Update messages. It does not prevent path forgeries.</t>
      </section>
      <section>
        <name>ASPA</name>
        <t>Current work on AS_PATH Verification based on Autonomous System Provider Authorization (ASPA) <xref target="I-D.ietf-sidrops-aspa-verification"/> brings similar security guarantees as PAVA. ASPA protects against simple path forgeries and route leaks and relies on the RPKI which is already widely used for Route Origin Authorization (ROA). However, ASPA handles complex relationships through the blanket of labelling any as a Provider to Provider relationship. In contrast, PAVA addresses those relationships through per-destination prefix verifications, which allows fine-tuning and flexibility. The two approaches are also be complementary, providing different information that can be used to achieve further verification. </t>
      </section>
      <section>
        <name>ASRA</name>
        <t>Efforts for AS_PATH Verification based on Autonomous System Relationship Authorization (ASRA) in <xref target="I-D.sriram-sidrops-asra-verification"/> aims at obviating some vulnerabilities of ASPA by publishing every relationship an AS has instead of just its providers. ASRA helps further detecting complex path forgeries like PAVA but like ASPA, it does not focus on handling complex relationships, but can provide additional information to work with PAVA.</t>
      </section>
    </section>
    
    <section anchor="IANA">
    <!-- All drafts are required to have an IANA considerations section. See RFC 8126 for a guide.-->
      <name>IANA Considerations</name>
      <t>This document uses a second-level new special domain bgp.arpa</t>
    </section>
    
    <section anchor="Security">
      <!-- All drafts are required to have a security considerations section. See RFC 3552 for a guide. -->
      <name>Security Considerations</name>
      <t>PAVA is subject to the following security issues and concerns. PAVA also aims to follow security requirements provided in <xref target="RFC7353"/>.</t>
      <ul>
        <li>Relying on the DNS infrastructure means being exposed to security issues from DNS and DNSSEC, be it protocol vulnerabilities or attacks like distributed denial of service (DDoS).</li>
        <li>The DNS system used to provide information may also disclose routing interests from some ASes. This is limited through the use of status that recover several cases, but in-depth analysis of a massive number of queries could reveal more information than intended.</li>
        <li>Partial deployment means partial information and as such, verification can not be completely thorough unless every AS in the path has adopted PAVA. As such, partial deployment only provides partial security.</li>
        <li>The system relies on the information provided by the ASes. Incorrect information can result in incorrect verification of the AS_PATH. </li>
      </ul>
    </section>
    
    <!-- NOTE: The Acknowledgements and Contributors sections are at the end of this template -->
  </middle>

  <back>
    <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.4271.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6480.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7132.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7353.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7908.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8205.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9234.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-sidrops-aspa-verification.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.sriram-sidrops-asra-verification.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-grow-route-leak-detection-mitigation.xml"/>
        <!-- The recommended and simplest way to include a well known reference -->
        
      </references>
 
      <references>
        <name>Informative References</name>
       
        <reference anchor="Gao">
          <front>
            <title>Stable Internet routing without global coordination</title>
            <author initials="L" surname="Gao"/>
            <author initials="J" surname="Rexford"/>
            <date year="2001"/>
          </front>
        </reference>

      </references>
    </references>

    <section anchor="Acknowledgements" numbered="false">
      <!-- [REPLACE/DELETE] an Acknowledgements section is optional -->
      <name>Acknowledgements</name>
      <t></t>
    </section>
    
    <section anchor="Contributors" numbered="false">
      <!-- [REPLACE/DELETE] a Contributors section is optional -->
      <name>Contributors</name>
      <t>Thanks to all of the contributors. </t>
      <!-- [CHECK] it is optional to add a <contact> record for some or all contributors -->
      <contact fullname="Sebastien Viardot" initials="S" surname="Viardot">
        <organization>Grenoble INP</organization>
        <address>
          <email>sebastien.viardot@grenoble-inp.fr</email>  
        </address>
      </contact>
      <contact fullname="Jun Zhang" initials="J" surname="Zhang">
        <organization>Huawei</organization>
        <address>
          <email>junzhang1@huawei.com</email>  
        </address>
      </contact>
      <contact fullname="Houda Labiod" initials="H" surname="Labiod">
        <organization>Huawei</organization>
        <address>
          <email>houda.labiod@huawei.com</email>  
        </address>
      </contact>
    </section>
    
 </back>
</rfc>
