<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc ipr="trust200902"
     docName="draft-herdes-idr-otc-rs-verification-00"
     category="std"
     submissionType="IETF"
     updates="9234"
     consensus="true"
     tocInclude="true"
     tocDepth="3"
     sortRefs="true"
     symRefs="true"
     version="3"
     xml:lang="en">

  <front>
    <title abbrev="Strict OTC Verification on RS Sessions">Strict Only to Customer (OTC) Verification on Route Server Sessions</title>

    <seriesInfo name="Internet-Draft" value="draft-herdes-idr-otc-rs-verification-00" stream="IETF"/>

    <author fullname="Bryton Herdes" initials="B." surname="Herdes">
      <organization abbrev="Cloudflare">Cloudflare, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city>Champaign</city>
          <region>Illinois</region>
          <code/>
          <country>United States of America</country>
        </postal>
        <email>bryton@cloudflare.com</email>
      </address>
    </author>

    <author fullname="Alexander Azimov" initials="A." surname="Azimov">
      <organization>Yandex</organization>
      <address>
        <postal>
          <street>Ulitsa Lva Tolstogo 16</street>
          <city>Moscow</city>
          <code>119021</code>
          <country>Russian Federation</country>
        </postal>
        <email>a.e.azimov@gmail.com</email>
      </address>
    </author>

    <area>Routing</area>
    <workgroup>Inter-Domain Routing</workgroup>

    <keyword>BGP</keyword>
    <keyword>route leak</keyword>
    <keyword>OTC</keyword>
    <keyword>route server</keyword>
    <keyword>IXP</keyword>

    <abstract>
      <t>
        RFC 9234 specifies how an AS receiving a route from a lateral Peer can check if route was lekaed, but doesn't specify any checks for routes received from Route Server (RS).
        This makes quility of filtering dependent on whether the RS implements RFC 9234.
      </t>
      <t>
        This document updates RFC 9234 by adding complimentary ingress check by RS-Client.
      </t>
    </abstract>
  </front>

  <middle>
    <section anchor="introduction" numbered="true">
      <name>Introduction</name>

      <t>
        The <xref target="RFC9234"/> specifies OTC attribute and Peering Roles: Cusromer, Provider, Peer, RS, and RS-Client.
        Section 5 of <xref target="RFC9234"/>, specifies ingress filtering based on OTC value for routes received from Peer. It says: 
      </t>
      <blockquote quotedFrom="RFC 9234">
        If a route with the OTC Attribute is received from a Peer (i.e., remote AS with a Peer Role) and the Attribute has a value that is not equal to the remote (i.e., Peer's) AS number, then it is a route leak and MUST be considered ineligible.
      </blockquote>
      <t>
        For the routes received from an RS, <xref target="RFC9234"/> doesn't specify any checks, though an RS basically provides service for indirect peering, thus same procedure to a Peer should be applied.
      </t>
      <t>
        <xref target="update"/> extends the OTC check on RS-Clients to verify that if OTC is present, its value matches the RS's AS number.
      </t>

      <section anchor="requirements" numbered="true">
        <name>Requirements Language</name>
        <t>
          The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>

      <section anchor="terminology" numbered="true">
        <name>Terminology</name>
        <t>
          Terminology follows <xref target="RFC9234"/>: the BGP Roles Provider, Customer, RS, RS-Client, and Peer are as defined in its Sections 3.1 and 4, and "local AS" and "remote AS" are the two ends of an eBGP session.
          "Route is ineligible" is as in <xref target="RFC4271"/>.
          A transparent RS does not insert its own AS number into the AS_PATH of routes it redistributes <xref target="RFC7947"/>; most production route servers are transparent.
          Example AS numbers are from the documentation range <xref target="RFC5398"/>.
        </t>
      </section>
    </section>

    <section anchor="problem" numbered="true">
      <name>Problem Statement</name>

      <t>
        A RS exists to redistribute routes between RS-Clients that peer laterally through it.
        The <xref target="RFC9234"/> states that if route receved by RS has OTC attribute, its a route leak.
        But if RS is non-compiant, it will accept the route without checking OTC value and redistribute it to its RS-Clients.
      </t>
      <t>
        If RS is implementing <xref target="RFC9234"/>, it will reject received routes if OTC is present and will add OTC attribute with value equal to its own AS (the RS's AS number) when advertising routes to its RS-Clients.
      </t>
      <t>
        From the point of RS-Client, a correct route received from an RS must carry either no OTC Attribute or one equal to the RS's AS number.
        Otherwise, it's a route leak.
      </t>
      <t>
        That is true of transparent and non-transparent route servers alike, since transparency affects only whether the RS appears in the AS_PATH.
      </t>
    </section>

    <section anchor="update" numbered="true">
      <name>Update to the OTC Ingress Procedure</name>

      <t>
        This section updates Section 5 of <xref target="RFC9234"/> by adding a new rule for RS-Client.
      </t>
      <t>
        If a route with the OTC Attribute is received from a RS (i.e., remote AS with a RS Role) and the Attribute has a value that is not equal to the remote (i.e., RS's) AS number, then it is a route leak and MUST be considered ineligible.
      </t>
    </section>

    <section anchor="ops" numbered="true">
      <name>Operational Considerations</name>
      <t>
        The above update in OTC processing is fully backwards compatible with <xref target="RFC9234"/>.
        It doesn't require new version or BGP capability negotiations between implementations.
      </t>
    </section>

    <!-- ================================================================= -->
    <section anchor="iana" numbered="true">
      <name>IANA Considerations</name>
      <t>
        This document has no IANA actions.
      </t>
    </section>

    <!-- ================================================================= -->
    <section anchor="security" numbered="true">
      <name>Security Considerations</name>
      <t>
        TODO.
      </t>
    </section>

  </middle>

  <back>

    <references>
      <name>References</name>

      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC7947" target="https://www.rfc-editor.org/info/rfc7947">
          <front>
            <title>Internet Exchange BGP Route Server</title>
            <author fullname="E. Jasinska" initials="E." surname="Jasinska"/>
            <author fullname="N. Hilliard" initials="N." surname="Hilliard"/>
            <author fullname="R. Raszuk" initials="R." surname="Raszuk"/>
            <author fullname="N. Bakker" initials="N." surname="Bakker"/>
            <date month="September" year="2016"/>
            <abstract>
              <t>This document outlines a specification for multilateral interconnections at Internet Exchange Points (IXPs). Multilateral interconnection is a method of exchanging routing information among three or more External BGP (EBGP) speakers using a single intermediate broker system, referred to as a route server. Route servers are typically used on shared access media networks, such as IXPs, to facilitate simplified interconnection among multiple Internet routers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7947"/>
          <seriesInfo name="DOI" value="10.17487/RFC7947"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9234" target="https://www.rfc-editor.org/info/rfc9234">
          <front>
            <title>Route Leak Prevention and Detection Using Roles in UPDATE and OPEN Messages</title>
            <author fullname="A. Azimov" initials="A." surname="Azimov"/>
            <author fullname="E. Bogomazov" initials="E." surname="Bogomazov"/>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <author fullname="K. Sriram" initials="K." surname="Sriram"/>
            <date month="May" year="2022"/>
            <abstract>
              <t>Route leaks are the propagation of BGP prefixes that violate assumptions of BGP topology relationships, e.g., announcing a route learned from one transit provider to another transit provider or a lateral (i.e., non-transit) peer or announcing a route learned from one lateral peer to another lateral peer or a transit provider. These are usually the result of misconfigured or absent BGP route filtering or lack of coordination between autonomous systems (ASes). Existing approaches to leak prevention rely on marking routes by operator configuration, with no check that the configuration corresponds to that of the External BGP (eBGP) neighbor, or enforcement of the two eBGP speakers agreeing on the peering relationship. This document enhances the BGP OPEN message to establish an agreement of the peering relationship on each eBGP session between autonomous systems in order to enforce appropriate configuration on both sides. Propagated routes are then marked according to the agreed relationship, allowing both prevention and detection of route leaks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9234"/>
          <seriesInfo name="DOI" value="10.17487/RFC9234"/>
        </reference>
        <reference anchor="RFC4271" target="https://www.rfc-editor.org/info/rfc4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
            <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR). These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t>This document obsoletes RFC 1771. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
      </references>

      <references>
        <name>Informative References</name>
        <reference anchor="RFC5398" target="https://www.rfc-editor.org/info/rfc5398">
          <front>
            <title>Autonomous System (AS) Number Reservation for Documentation Use</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <date month="December" year="2008"/>
            <abstract>
              <t>To reduce the likelihood of conflict and confusion when relating documented examples to deployed systems, two blocks of Autonomous System numbers (ASNs) are reserved for use in examples in RFCs, books, documentation, and the like. This document describes the reservation of two blocks of ASNs as reserved numbers for use in documentation. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5398"/>
          <seriesInfo name="DOI" value="10.17487/RFC5398"/>
        </reference>
      </references>

    </references>

  </back>
</rfc>
