<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" consensus="true" docName="draft-ietf-spring-segment-routing-central-epe-10" indexInclude="true" ipr="trust200902" number="9087" prepTime="2021-08-14T05:50:41" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-spring-segment-routing-central-epe-10" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9087" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Segment Routing Centralized EPE">Segment Routing Centralized BGP Egress Peer Engineering</title>
    <seriesInfo name="RFC" value="9087" stream="IETF"/>
    <author fullname="Clarence Filsfils" initials="C." role="editor" surname="Filsfils">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city>Brussels</city>
          <region/>
          <code/>
          <country>Belgium</country>
        </postal>
        <email>cfilsfil@cisco.com</email>
      </address>
    </author>
    <author fullname="Stefano Previdi" initials="S." surname="Previdi">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <code/>
          <country>Italy</country>
        </postal>
        <email>stefano@previdi.net</email>
      </address>
    </author>
    <author fullname="Gaurav Dawra" initials="G." role="editor" surname="Dawra">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <code/>
          <country>United States of America</country>
        </postal>
        <email>gdawra.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Ebben Aries" initials="E." surname="Aries">
      <organization showOnFrontPage="true">Juniper Networks</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>United States of America</country>
        </postal>
        <email>exa@juniper.net</email>
      </address>
    </author>
    <author fullname="Dmitry Afanasiev" initials="D." surname="Afanasiev">
      <organization showOnFrontPage="true">Yandex</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <code/>
          <country>Russian Federation</country>
        </postal>
        <email>fl0w@yandex-team.ru</email>
      </address>
    </author>
    <date month="08" year="2021"/>
    <area>RTG</area>
    <workgroup>SPRING</workgroup>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">Segment Routing (SR) leverages source routing. A node steers a packet
      through a controlled set of instructions, called segments, by prepending
      the packet with an SR header. A segment can represent any instruction,
      topological or service based. SR allows for the enforcement of a flow
      through any topological path while maintaining per-flow state only at
      the ingress node of the SR domain.</t>
      <t indent="0" pn="section-abstract-2">The Segment Routing architecture can be directly applied to the MPLS
      data plane with no change on the forwarding plane. It requires a minor
      extension to the existing link-state routing protocols.</t>
      <t indent="0" pn="section-abstract-3">This document illustrates the application of Segment Routing to solve
      the BGP Egress Peer Engineering (BGP-EPE) requirement. The SR-based
      BGP-EPE solution allows a centralized (Software-Defined Networking, or SDN)
      controller to program any egress peer policy at ingress border routers
      or at hosts within the domain.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This document is not an Internet Standards Track specification; it is
            published for informational purposes.  
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by the
            Internet Engineering Steering Group (IESG).  Not all documents
            approved by the IESG are candidates for any level of Internet
            Standard; see Section 2 of RFC 7841. 
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9087" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2021 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Simplified BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Simplified BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-problem-statement">Problem Statement</xref></t>
              </li>
              <li pn="section-toc.1-1.1.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.2.1"><xref derivedContent="1.2" format="counter" sectionFormat="of" target="section-1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-peering-segments">BGP Peering Segments</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-distribution-of-topology-an">Distribution of Topology and TE Information Using BGP-LS</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-peernode-sid-to-d">PeerNode SID to D</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-peernode-sid-to-e">PeerNode SID to E</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-peernode-sid-to-f">PeerNode SID to F</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.4">
                <t indent="0" pn="section-toc.1-1.3.2.4.1"><xref derivedContent="3.4" format="counter" sectionFormat="of" target="section-3.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-first-peeradj-to-f">First PeerAdj to F</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.5">
                <t indent="0" pn="section-toc.1-1.3.2.5.1"><xref derivedContent="3.5" format="counter" sectionFormat="of" target="section-3.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-second-peeradj-to-f">Second PeerAdj to F</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.6">
                <t indent="0" pn="section-toc.1-1.3.2.6.1"><xref derivedContent="3.6" format="counter" sectionFormat="of" target="section-3.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-fast-reroute-frr">Fast Reroute (FRR)</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-epe-controller">BGP-EPE Controller</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-valid-paths-from-peers">Valid Paths from Peers</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-intra-domain-topology">Intra-Domain Topology</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-external-topology">External Topology</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.4">
                <t indent="0" pn="section-toc.1-1.4.2.4.1"><xref derivedContent="4.4" format="counter" sectionFormat="of" target="section-4.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sla-characteristics-of-each">SLA Characteristics of Each Peer</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.5">
                <t indent="0" pn="section-toc.1-1.4.2.5.1"><xref derivedContent="4.5" format="counter" sectionFormat="of" target="section-4.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-traffic-matrix">Traffic Matrix</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.6">
                <t indent="0" pn="section-toc.1-1.4.2.6.1"><xref derivedContent="4.6" format="counter" sectionFormat="of" target="section-4.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-business-policies">Business Policies</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.7">
                <t indent="0" pn="section-toc.1-1.4.2.7.1"><xref derivedContent="4.7" format="counter" sectionFormat="of" target="section-4.7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-epe-policy">BGP-EPE Policy</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-programming-an-input-policy">Programming an Input Policy</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-at-a-host">At a Host</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-at-a-router-sr-traffic-engi">At a Router - SR Traffic-Engineering Tunnel</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-at-a-router-unicast-route-l">At a Router - Unicast Route Labeled Using BGP (RFC 8277)</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.4">
                <t indent="0" pn="section-toc.1-1.5.2.4.1"><xref derivedContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-at-a-router-vpn-policy-rout">At a Router - VPN Policy Route</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ipv6-data-plane">IPv6 Data Plane</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-benefits">Benefits</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-manageability-consideration">Manageability Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.11.2">
              <li pn="section-toc.1-1.11.2.1">
                <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent="11.1" format="counter" sectionFormat="of" target="section-11.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.11.2.2">
                <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent="11.2" format="counter" sectionFormat="of" target="section-11.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-contributors">Contributors</xref></t>
          </li>
          <li pn="section-toc.1-1.14">
            <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="INTRO" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">The document is structured as follows: </t>
      <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-1-2">
        <li pn="section-1-2.1">
          <xref target="INTRO" format="default" sectionFormat="of" derivedContent="Section 1"/> states the BGP-EPE problem statement and provides the key references.
</li>
        <li pn="section-1-2.2">
          <xref target="BGPSEGMENTS" format="default" sectionFormat="of" derivedContent="Section 2"/> defines the different BGP
Peering Segments and the semantic associated to them.
</li>
        <li pn="section-1-2.3">
          <xref target="TOPOBGPLS" format="default" sectionFormat="of" derivedContent="Section 3"/> describes the automated
allocation of BGP Peering Segment-IDs (SIDs) by the BGP-EPE-enabled egress
border router and the automated signaling of the external peering topology and
the related BGP Peering SIDs to the collector <xref target="RFC9086" format="default" sectionFormat="of" derivedContent="RFC9086"/>.
</li>
        <li pn="section-1-2.4">
          <xref target="BGPPECTRL" format="default" sectionFormat="of" derivedContent="Section 4"/> overviews the components of a
centralized BGP-EPE controller. The definition of the BGP-EPE controller is
outside the scope of this document.
</li>
        <li pn="section-1-2.5">
          <xref target="PROGRINPUTPOL" format="default" sectionFormat="of" derivedContent="Section 5"/> overviews the methods that
could be used by the centralized BGP-EPE controller to implement a BGP-EPE
policy at an ingress border router or at a source host within the domain. The
exhaustive definition of all the means to program a BGP-EPE input policy is
outside the scope of this document.
</li>
      </ul>
      <t indent="0" pn="section-1-3">For editorial reasons, the solution is described with IPv6 addresses
      and MPLS SIDs. This solution is equally applicable to IPv4 with MPLS
      SIDs and also to IPv6 with native IPv6 SIDs.</t>
      <section anchor="PROBSTATE" numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-problem-statement">Problem Statement</name>
        <t indent="0" pn="section-1.1-1">The BGP-EPE problem statement is defined in <xref target="RFC7855" format="default" sectionFormat="of" derivedContent="RFC7855"/>.</t>
        <t indent="0" pn="section-1.1-2">A centralized controller should be able to instruct an ingress
        Provider Edge (PE) router or a content source within the domain to use
        a specific egress PE and a specific external interface/neighbor to
        reach a particular destination.</t>
        <t indent="0" pn="section-1.1-3">Let's call this solution "BGP-EPE" for "BGP Egress Peer
        Engineering". The centralized controller is called the "BGP-EPE
        controller". The egress border router where the BGP-EPE traffic
        steering functionality is implemented is called a BGP-EPE-enabled
        border router. The input policy programmed at an ingress border router
        or at a source host is called a BGP-EPE policy.</t>
        <t indent="0" pn="section-1.1-4">The requirements that have motivated the solution described in this
        document are listed here below:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1.1-5">
          <li pn="section-1.1-5.1">The solution <bcp14>MUST</bcp14> apply to the Internet use case
          where the Internet routes are assumed to use IPv4 unlabeled or IPv6
          unlabeled. 

	  It is not required to place the Internet routes in a VPN Routing and
	  Forwarding (VRF) instance and allocate labels on a per-route or
	  per-path basis.

	  </li>
          <li pn="section-1.1-5.2">The solution <bcp14>MUST</bcp14> support any deployed Internal BGP (iBGP)
	  schemes (Route Reflectors (RRs),
            confederations, or iBGP full meshes).</li>
          <li pn="section-1.1-5.3">The solution <bcp14>MUST</bcp14> be applicable to both routers with external
            and internal peers.</li>
          <li pn="section-1.1-5.4">The solution should minimize the need for new BGP capabilities
            at the ingress PEs.</li>
          <li pn="section-1.1-5.5">The solution <bcp14>MUST</bcp14> accommodate an ingress BGP-EPE policy at an
            ingress PE or directly at a source within the domain.</li>
          <li pn="section-1.1-5.6">The solution <bcp14>MAY</bcp14> support automated Fast Reroute (FRR) and fast
            convergence mechanisms.</li>
        </ul>
        <t indent="0" pn="section-1.1-6">The following reference diagram is used throughout this
        document.</t>
        <figure anchor="REFDIAGRAMFIG" align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-reference-diagram">Reference Diagram</name>
          <artwork name="" type="" align="left" alt="" pn="section-1.1-7.1">+---------+      +------+
|         |      |      |
|    H    B------D      G
|         | +---/| AS 2 |\  +------+
|         |/     +------+ \ |      |---L/8
A   AS1   C---+            \|      |
|         |\\  \  +------+ /| AS 4 |---M/8
|         | \\  +-E      |/ +------+
|    X    |  \\   |      K
|         |   +===F AS 3 |
+---------+       +------+
</artwork>
        </figure>
        <t indent="0" pn="section-1.1-8">IP addressing:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1.1-9">
          <li pn="section-1.1-9.1">C's interface to D: 2001:db8:cd::c/64, D's
            interface: 2001:db8:cd::d/64</li>
          <li pn="section-1.1-9.2">C's interface to E: 2001:db8:ce::c/64, E's
            interface: 2001:db8:ce::e/64</li>
          <li pn="section-1.1-9.3">C's upper interface to F: 2001:db8:cf1::c/64, F's
            interface: 2001:db8:cf1::f/64</li>
          <li pn="section-1.1-9.4">C's lower interface to F: 2001:db8:cf2::c/64, F's
            interface: 2001:db8:cf2::f/64</li>
          <li pn="section-1.1-9.5">BGP router-ID of C: 192.0.2.3</li>
          <li pn="section-1.1-9.6">BGP router-ID of D: 192.0.2.4</li>
          <li pn="section-1.1-9.7">BGP router-ID of E: 192.0.2.5</li>
          <li pn="section-1.1-9.8">BGP router-ID of F: 192.0.2.6</li>
          <li pn="section-1.1-9.9">Loopback of F used for External BGP (eBGP) multi-hop peering to
          C: 2001:db8:f::f/128</li>
          <li pn="section-1.1-9.10">C's loopback is 2001:db8:c::c/128 with SID 64</li>
        </ul>
        <t indent="0" pn="section-1.1-10">C's BGP peering:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1.1-11">
          <li pn="section-1.1-11.1">Single-hop eBGP peering with neighbor 2001:db8:cd::d (D)</li>
          <li pn="section-1.1-11.2">Single-hop eBGP peering with neighbor 2001:db8:ce::e (E)</li>
          <li pn="section-1.1-11.3">Multi-hop eBGP peering with F on IP address 2001:db8:f::f
            (F)</li>
        </ul>
        <t indent="0" pn="section-1.1-12">C's resolution of the multi-hop eBGP session to F:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1.1-13">
          <li pn="section-1.1-13.1">Static route to 2001:db8:f::f/128 via 2001:db8:cf1::f</li>
          <li pn="section-1.1-13.2">Static route to 2001:db8:f::f/128 via 2001:db8:cf2::f</li>
        </ul>
        <t indent="0" pn="section-1.1-14">C is configured with a local policy that defines a BGP PeerSet as the
        set of peers (2001:db8:ce::e for E and 2001:db8:f::f for F).</t>
        <t indent="0" pn="section-1.1-15">X is the BGP-EPE controller within the AS1 domain.</t>
        <t indent="0" pn="section-1.1-16">H is a content source within the AS1 domain.</t>
      </section>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-1.2">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-1.2-1">
    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 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/>
          <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals,
    as shown here.
        </t>
      </section>
    </section>
    <section anchor="BGPSEGMENTS" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-bgp-peering-segments">BGP Peering Segments</name>
      <t indent="0" pn="section-2-1">As defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>, certain
      segments are defined by a BGP-EPE-capable node and correspond to their
      attached peers. These segments are called BGP Peering Segments or BGP
      Peering SIDs. They enable the expression of source-routed inter-domain
      paths.</t>
      <t indent="0" pn="section-2-2">An ingress border router of an AS may compose a list of segments to
      steer a flow along a selected path within the AS, towards a selected
      egress border router C of the AS and through a specific peer. At
      minimum, a BGP Egress Peer Engineering policy applied at an ingress
      EPE involves two segments: the Node SID of the chosen egress EPE and
      then the BGP Peering Segment for the chosen egress EPE peer or peering
      interface.</t>
      <t indent="0" pn="section-2-3"><xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/> defines three types
      of BGP Peering Segments/SIDs: PeerNode SID, PeerAdj SID, and PeerSet
      SID.</t>
      <ul empty="true" bare="false" indent="3" spacing="normal" pn="section-2-4">
        <li pn="section-2-4.1">
          <dl newline="false" indent="3" spacing="normal" pn="section-2-4.1.1">
            <dt pn="section-2-4.1.1.1">Peer Node Segment:
</dt>
            <dd pn="section-2-4.1.1.2">A segment describing a peer, including the SID (PeerNode SID) allocated to it
</dd>
            <dt pn="section-2-4.1.1.3">Peer Adjacency Segment:
</dt>
            <dd pn="section-2-4.1.1.4">A segment describing a link, including the SID (PeerAdj SID) allocated to it
</dd>
            <dt pn="section-2-4.1.1.5">Peer Set Segment:
</dt>
            <dd pn="section-2-4.1.1.6">A segment describing a link or a node that is part of the set, including
the SID (PeerSet SID) allocated to the set
</dd>
          </dl>
        </li>
      </ul>
    </section>
    <section anchor="TOPOBGPLS" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-distribution-of-topology-an">Distribution of Topology and TE Information Using BGP-LS</name>
      <t indent="0" pn="section-3-1">In ships-in-the-night mode with respect to the pre-existing iBGP
      design, a Border Gateway Protocol - Link State (BGP-LS) <xref target="RFC7752" format="default" sectionFormat="of" derivedContent="RFC7752"/> session is established between the
      BGP-EPE-enabled border router and the BGP-EPE controller.</t>
      <t indent="0" pn="section-3-2">As a result of its local configuration and according to the behavior
      described in <xref target="RFC9086" format="default" sectionFormat="of" derivedContent="RFC9086"/>,
      Node C allocates the following BGP Peering Segments <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-3">
        <li pn="section-3-3.1">A PeerNode segment for each of its defined peers (D: 1012, E: 1022
          and F: 1052).</li>
        <li pn="section-3-3.2">A PeerAdj segment for each recursing interface to a multi-hop
          peer (e.g., the upper and lower interfaces from C to F in <xref target="REFDIAGRAMFIG" format="default" sectionFormat="of" derivedContent="Figure 1"/>).</li>
        <li pn="section-3-3.3">A PeerSet segment to the set of peers (E and F). In this case, the
          PeerSet represents a set of peers (E, F) belonging to the same AS
          (AS 3).</li>
      </ul>
      <t indent="0" pn="section-3-4">C programs its forwarding table accordingly:</t>
      <table anchor="c-table" align="center" pn="table-1">
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Incoming Label</th>
            <th align="left" colspan="1" rowspan="1">Operation</th>
            <th align="left" colspan="1" rowspan="1">Outgoing Interface</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">1012</td>
            <td align="left" colspan="1" rowspan="1">POP</td>
            <td align="left" colspan="1" rowspan="1">link to D</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">1022</td>
            <td align="left" colspan="1" rowspan="1">POP</td>
            <td align="left" colspan="1" rowspan="1">link to E</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">1032</td>
            <td align="left" colspan="1" rowspan="1">POP</td>
            <td align="left" colspan="1" rowspan="1">upper link to F</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">1042</td>
            <td align="left" colspan="1" rowspan="1">POP</td>
            <td align="left" colspan="1" rowspan="1">lower link to F</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">1052</td>
            <td align="left" colspan="1" rowspan="1">POP</td>
            <td align="left" colspan="1" rowspan="1">load balance on any link to F</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">1060</td>
            <td align="left" colspan="1" rowspan="1">POP</td>
            <td align="left" colspan="1" rowspan="1">load balance on any link to E or to F</td>
          </tr>
        </tbody>
      </table>
      <t indent="0" pn="section-3-6">C signals each related BGP-LS instance of Network Layer Reachability
      Information (NLRI) to the BGP-EPE controller.  Each such BGP-LS route is
      described in the following subsections according to the encoding details
      defined in <xref target="RFC9086" format="default" sectionFormat="of" derivedContent="RFC9086"/>.</t>
      <section anchor="PEERNODED" numbered="true" toc="include" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-peernode-sid-to-d">PeerNode SID to D</name>
        <t indent="0" pn="section-3.1-1">Descriptors: </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.1-2">
          <li pn="section-3.1-2.1">Local Node Descriptors (BGP router-ID, ASN, BGP-LS Identifier):
            192.0.2.3, AS1, 1000</li>
          <li pn="section-3.1-2.2">Remote Node Descriptors (BGP router-ID, ASN): 192.0.2.4,
            AS2</li>
          <li pn="section-3.1-2.3">Link Descriptors (IPv6 Interface Address, IPv6 Neighbor
            Address): 2001:db8:cd::c, 2001:db8:cd::d</li>
        </ul>
        <t indent="0" pn="section-3.1-3">Attributes: </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.1-4">
          <li pn="section-3.1-4.1">PeerNode SID: 1012</li>
        </ul>
      </section>
      <section anchor="PEERNODEE" numbered="true" toc="include" removeInRFC="false" pn="section-3.2">
        <name slugifiedName="name-peernode-sid-to-e">PeerNode SID to E</name>
        <t indent="0" pn="section-3.2-1">Descriptors: </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2-2">
          <li pn="section-3.2-2.1">Local Node Descriptors (BGP router-ID, ASN, BGP-LS
            Identifier): 192.0.2.3, AS1, 1000</li>
          <li pn="section-3.2-2.2">Remote Node Descriptors (BGP router-ID, ASN): 192.0.2.5,
            AS3</li>
          <li pn="section-3.2-2.3">Link Descriptors (IPv6 Interface Address, IPv6 Neighbor
            Address): 2001:db8:ce::c, 2001:db8:ce::e</li>
        </ul>
        <t indent="0" pn="section-3.2-3">Attributes: </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2-4">
          <li pn="section-3.2-4.1">PeerNode SID: 1022</li>
          <li pn="section-3.2-4.2">PeerSetSID: 1060</li>
          <li pn="section-3.2-4.3">Link Attributes: see <xref target="RFC7752" sectionFormat="of" section="3.3.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7752#section-3.3.2" derivedContent="RFC7752"/></li>
        </ul>
      </section>
      <section anchor="PEERNODEF" numbered="true" toc="include" removeInRFC="false" pn="section-3.3">
        <name slugifiedName="name-peernode-sid-to-f">PeerNode SID to F</name>
        <t indent="0" pn="section-3.3-1">Descriptors: </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.3-2">
          <li pn="section-3.3-2.1">Local Node Descriptors (BGP router-ID, ASN, BGP-LS
            Identifier): 192.0.2.3, AS1, 1000</li>
          <li pn="section-3.3-2.2">Remote Node Descriptors (BGP router-ID, ASN): 192.0.2.6,
            AS3</li>
          <li pn="section-3.3-2.3">Link Descriptors (IPv6 Interface Address, IPv6 Neighbor
            Address): 2001:db8:c::c, 2001:db8:f::f</li>
        </ul>
        <t indent="0" pn="section-3.3-3">Attributes: </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.3-4">
          <li pn="section-3.3-4.1">PeerNode SID: 1052</li>
          <li pn="section-3.3-4.2">PeerSetSID: 1060</li>
        </ul>
      </section>
      <section anchor="PEERNODEFLINK1" numbered="true" toc="include" removeInRFC="false" pn="section-3.4">
        <name slugifiedName="name-first-peeradj-to-f">First PeerAdj to F</name>
        <t indent="0" pn="section-3.4-1">Descriptors: </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.4-2">
          <li pn="section-3.4-2.1">Local Node Descriptors (BGP router-ID, ASN, BGP-LS
            Identifier): 192.0.2.3, AS1, 1000</li>
          <li pn="section-3.4-2.2">Remote Node Descriptors (BGP router-ID, ASN): 192.0.2.6,
            AS3</li>
          <li pn="section-3.4-2.3">Link Descriptors (IPv6 Interface Address, IPv6 Neighbor
            Address): 2001:db8:cf1::c, 2001:db8:cf1::f</li>
        </ul>
        <t indent="0" pn="section-3.4-3">Attributes: </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.4-4">
          <li pn="section-3.4-4.1">PeerAdj-SID: 1032</li>
          <li pn="section-3.4-4.2">Link Attributes: see <xref target="RFC7752" sectionFormat="of" section="3.3.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7752#section-3.3.2" derivedContent="RFC7752"/></li>
        </ul>
      </section>
      <section anchor="PEERNODEFLINK2" numbered="true" toc="include" removeInRFC="false" pn="section-3.5">
        <name slugifiedName="name-second-peeradj-to-f">Second PeerAdj to F</name>
        <t indent="0" pn="section-3.5-1">Descriptors: </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.5-2">
          <li pn="section-3.5-2.1">Local Node Descriptors (BGP router-ID, ASN, BGP-LS
            Identifier): 192.0.2.3 , AS1, 1000</li>
          <li pn="section-3.5-2.2">Remote Node Descriptors (peer router-ID, peer ASN): 192.0.2.6,
            AS3</li>
          <li pn="section-3.5-2.3">Link Descriptors (IPv6 Interface Address, IPv6 Neighbor
            Address): 2001:db8:cf2::c, 2001:db8:cf2::f</li>
        </ul>
        <t indent="0" pn="section-3.5-3">Attributes: </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.5-4">
          <li pn="section-3.5-4.1">PeerAdj-SID: 1042</li>
          <li pn="section-3.5-4.2">Link Attributes: see <xref target="RFC7752" sectionFormat="of" section="3.3.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7752#section-3.3.2" derivedContent="RFC7752"/></li>
        </ul>
      </section>
      <section anchor="FRR" numbered="true" toc="include" removeInRFC="false" pn="section-3.6">
        <name slugifiedName="name-fast-reroute-frr">Fast Reroute (FRR)</name>
        <t indent="0" pn="section-3.6-1">A BGP-EPE-enabled border router <bcp14>MAY</bcp14> allocate an FRR backup entry on
        a per-BGP-Peering-SID basis. One example is as follows:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.6-2">
          <li pn="section-3.6-2.1">
            <t indent="0" pn="section-3.6-2.1.1">PeerNode SID</t>
            <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-3.6-2.1.2">
              <li pn="section-3.6-2.1.2.1" derivedCounter="1.">If multi-hop, back up via the remaining PeerADJ SIDs (if
                available) to the same peer.</li>
              <li pn="section-3.6-2.1.2.2" derivedCounter="2.">Else, back up via another PeerNode SID to the same AS.</li>
              <li pn="section-3.6-2.1.2.3" derivedCounter="3.">Else, pop the PeerNode SID and perform an IP lookup.</li>
            </ol>
          </li>
          <li pn="section-3.6-2.2">
            <t indent="0" pn="section-3.6-2.2.1">PeerAdj SID</t>
            <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-3.6-2.2.2">
              <li pn="section-3.6-2.2.2.1" derivedCounter="1.">If to a multi-hop peer, back up via the remaining PeerADJ
                SIDs (if available) to the same peer.</li>
              <li pn="section-3.6-2.2.2.2" derivedCounter="2.">Else, back up via a PeerNode SID to the same AS.</li>
              <li pn="section-3.6-2.2.2.3" derivedCounter="3.">Else, pop the PeerNode SID and perform an IP lookup.</li>
            </ol>
          </li>
          <li pn="section-3.6-2.3">
            <t indent="0" pn="section-3.6-2.3.1">PeerSet SID</t>
            <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-3.6-2.3.2">
              <li pn="section-3.6-2.3.2.1" derivedCounter="1.">Back up via remaining PeerNode SIDs in the same PeerSet.</li>
              <li pn="section-3.6-2.3.2.2" derivedCounter="2.">Else, pop the PeerNode SID and IP lookup.</li>
            </ol>
          </li>
        </ul>
        <t indent="0" pn="section-3.6-3">Let's illustrate different types of possible backups using the
        reference diagram and considering the Peering SIDs allocated by C.</t>
        <t indent="0" pn="section-3.6-4">PeerNode SID 1052, allocated by C for peer F:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.6-5">
          <li pn="section-3.6-5.1">Upon the failure of the upper connected link CF, C can reroute
            all the traffic onto the lower CF link to the same peer (F).</li>
        </ul>
        <t indent="0" pn="section-3.6-6">PeerNode SID 1022, allocated by C for peer E:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.6-7">
          <li pn="section-3.6-7.1">Upon the failure of the connected link CE, C can reroute all
            the traffic onto the link to PeerNode SID 1052 (F).</li>
        </ul>
        <t indent="0" pn="section-3.6-8">PeerNode SID 1012, allocated by C for peer D:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.6-9">
          <li pn="section-3.6-9.1">Upon the failure of the connected link CD, C can pop the
            PeerNode SID and look up the IP destination address in its FIB and
            route accordingly.</li>
        </ul>
        <t indent="0" pn="section-3.6-10">PeerSet SID 1060, allocated by C for the set of peers E and F:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.6-11">
          <li pn="section-3.6-11.1">Upon the failure of a connected link in the group, the traffic
            to PeerSet SID 1060 is rerouted on any other member of the
            group.</li>
        </ul>
        <t indent="0" pn="section-3.6-12">For specific business reasons, the operator might not want the
        default FRR behavior applied to a PeerNode SID or any of its dependent
        PeerADJ SIDs.</t>
        <t indent="0" pn="section-3.6-13">The operator should be able to associate a specific backup PeerNode
        SID for a PeerNode SID; e.g., 1022 (E) must be backed up by 1012 (D),
        which overrules the default behavior that would have preferred F as a
        backup for E.</t>
      </section>
    </section>
    <section anchor="BGPPECTRL" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-bgp-epe-controller">BGP-EPE Controller</name>
      <t indent="0" pn="section-4-1">In this section, Let's provide a non-exhaustive set of inputs that a
      BGP-EPE controller would likely collect such as to perform the BGP-EPE
      policy decision.</t>
      <t indent="0" pn="section-4-2">The exhaustive definition is outside the scope of this document.</t>
      <section anchor="PATHSFROMPEERS" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-valid-paths-from-peers">Valid Paths from Peers</name>
        <t indent="0" pn="section-4.1-1">The BGP-EPE controller should collect all the BGP paths (i.e., IP
        destination prefixes) advertised by all the BGP-EPE-enabled border
        routers.</t>
        <t indent="0" pn="section-4.1-2">This could be realized by setting an iBGP session with the
        BGP-EPE-enabled border router, with the router configured to advertise
        all paths using BGP ADD-PATH <xref target="RFC7911" format="default" sectionFormat="of" derivedContent="RFC7911"/>
        and the original next hop preserved.</t>
        <t indent="0" pn="section-4.1-3">In this case, C would advertise the following Internet routes to
        the BGP-EPE controller:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.1-4">
          <li pn="section-4.1-4.1">
            <t indent="0" pn="section-4.1-4.1.1">NLRI &lt;2001:db8:abcd::/48&gt;, next hop 2001:db8:cd::d, AS Path {AS 2, 4}</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.1-4.1.2">
              <li pn="section-4.1-4.1.2.1">X (i.e., the BGP-EPE controller) knows that C receives a
                path to 2001:db8:abcd::/48 via neighbor 2001:db8:cd::d of
                AS2.</li>
            </ul>
          </li>
          <li pn="section-4.1-4.2">
            <t indent="0" pn="section-4.1-4.2.1">NLRI &lt;2001:db8:abcd::/48&gt;, next hop 2001:db8:ce::e, AS Path {AS 3, 4}</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.1-4.2.2">
              <li pn="section-4.1-4.2.2.1">X knows that C receives a path to 2001:db8:abcd::/48 via
                neighbor 2001:db8:ce::e of AS2.</li>
            </ul>
          </li>
          <li pn="section-4.1-4.3">
            <t indent="0" pn="section-4.1-4.3.1">NLRI &lt;2001:db8:abcd::/48&gt;, next hop 2001:db8:f::f, AS Path {AS 3, 4} </t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.1-4.3.2">
              <li pn="section-4.1-4.3.2.1">X knows that C has an eBGP path to 2001:db8:abcd::/48 via
                AS3 via neighbor 2001:db8:f::f.</li>
            </ul>
          </li>
        </ul>
        <t indent="0" pn="section-4.1-5">An alternative option would be for a BGP-EPE collector to use the
        BGP Monitoring Protocol (BMP) <xref target="RFC7854" format="default" sectionFormat="of" derivedContent="RFC7854"/> to track the Adj-RIB-In of BGP-EPE-enabled border
        routers.</t>
      </section>
      <section anchor="INTRATOPO" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-intra-domain-topology">Intra-Domain Topology</name>
        <t indent="0" pn="section-4.2-1">The BGP-EPE controller should collect the internal topology and the
        related IGP SIDs.</t>
        <t indent="0" pn="section-4.2-2">This could be realized by collecting the IGP Link-State Database
        (LSDB) of each area or running a BGP-LS session with a node in each
        IGP area.</t>
      </section>
      <section anchor="EXTRATOPO" numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-external-topology">External Topology</name>
        <t indent="0" pn="section-4.3-1">Thanks to the collected BGP-LS routes described in <xref target="TOPOBGPLS" format="default" sectionFormat="of" derivedContent="Section 3"/>, the BGP-EPE controller is able to maintain an
        accurate description of the egress topology of Node C. Furthermore,
        the BGP-EPE controller is able to associate BGP Peering SIDs to the
        various components of the external topology.</t>
      </section>
      <section anchor="SLA" numbered="true" toc="include" removeInRFC="false" pn="section-4.4">
        <name slugifiedName="name-sla-characteristics-of-each">SLA Characteristics of Each Peer</name>
        <t indent="0" pn="section-4.4-1">The BGP-EPE controller might collect Service Level Agreement (SLA)
        characteristics across peers. This requires a BGP-EPE solution, as the
        SLA probes need to be steered via non-best-path peers.</t>
        <t indent="0" pn="section-4.4-2">Unidirectional SLA monitoring of the desired path is likely
        required. This might be possible when the application is controlled at
        the source and the receiver side. Unidirectional monitoring
        dissociates the SLA characteristic of the return path (which cannot
        usually be controlled) from the forward path (the one of interest for
        pushing content from a source to a consumer and the one that can be
        controlled).</t>
        <t indent="0" pn="section-4.4-3">Alternatively, Metric Extensions, as defined in <xref target="RFC8570" format="default" sectionFormat="of" derivedContent="RFC8570"/>, could also be advertised using BGP-LS <xref target="RFC8571" format="default" sectionFormat="of" derivedContent="RFC8571"/>.</t>
      </section>
      <section anchor="MATRIX" numbered="true" toc="include" removeInRFC="false" pn="section-4.5">
        <name slugifiedName="name-traffic-matrix">Traffic Matrix</name>
        <t indent="0" pn="section-4.5-1">The BGP-EPE controller might collect the traffic matrix to its
        peers or the final destinations. IP Flow Information Export (IPFIX)
        <xref target="RFC7011" format="default" sectionFormat="of" derivedContent="RFC7011"/> is a likely option.</t>
        <t indent="0" pn="section-4.5-2">An alternative option consists of collecting the link utilization
        statistics of each of the internal and external links, also available
        in the current definition in <xref target="RFC7752" format="default" sectionFormat="of" derivedContent="RFC7752"/>.</t>
      </section>
      <section anchor="BUSINESS" numbered="true" toc="include" removeInRFC="false" pn="section-4.6">
        <name slugifiedName="name-business-policies">Business Policies</name>
        <t indent="0" pn="section-4.6-1">The BGP-EPE controller should be configured or collect business
        policies through any desired mechanisms. These mechanisms by which
        these policies are configured or collected are outside the scope of
        this document.</t>
      </section>
      <section anchor="BGPPOLICY" numbered="true" toc="include" removeInRFC="false" pn="section-4.7">
        <name slugifiedName="name-bgp-epe-policy">BGP-EPE Policy</name>
        <t indent="0" pn="section-4.7-1">On the basis of all these inputs (and likely others), the BGP-EPE
        controller decides to steer some demands away from their best BGP
        path.</t>
        <t indent="0" pn="section-4.7-2">The BGP-EPE policy is likely expressed as a two-entry segment list
        where the first element is the IGP Prefix-SID of the selected egress
        border router and the second element is a BGP Peering SID at the
        selected egress border router.</t>
        <t indent="0" pn="section-4.7-3">A few examples are provided hereafter:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.7-4">
          <li pn="section-4.7-4.1">Prefer egress PE C and peer AS AS2: {64, 1012}. "64" being the
            SID of PE C as defined in <xref target="PROBSTATE" format="default" sectionFormat="of" derivedContent="Section 1.1"/>.</li>
          <li pn="section-4.7-4.2">Prefer egress PE C and peer AS AS3 via eBGP peer
            2001:db8:ce::e, {64, 1022}.</li>
          <li pn="section-4.7-4.3">Prefer egress PE C and peer AS AS3 via eBGP peer 2001:db8:f::f,
            {64, 1052}.</li>
          <li pn="section-4.7-4.4">Prefer egress PE C and peer AS AS3 via interface
            2001:db8:cf2::f of multi-hop eBGP peer 2001:db8:f::f, {64,
            1042}.</li>
          <li pn="section-4.7-4.5">Prefer egress PE C and any interface to any peer in the group
            1060: {64, 1060}.</li>
        </ul>
        <t indent="0" pn="section-4.7-5">Note that the first SID could be replaced by a list of segments.
        This is useful when an explicit path within the domain is required for
        traffic-engineering purposes. For example, if the Prefix-SID of Node B
        is 60 and the BGP-EPE controller would like to steer the traffic from
        A to C via B then through the external link to peer D, then the segment
        list would be {60, 64, 1012}.</t>
      </section>
    </section>
    <section anchor="PROGRINPUTPOL" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-programming-an-input-policy">Programming an Input Policy</name>
      <t indent="0" pn="section-5-1">The detailed/exhaustive description of all the means to implement a
      BGP-EPE policy are outside the scope of this document. A few examples
      are provided in this section.</t>
      <section anchor="ATHOST" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-at-a-host">At a Host</name>
        <t indent="0" pn="section-5.1-1">A static IP/MPLS route can be programmed at the host H. The static
        route would define a destination prefix, a next hop, and a label stack
        to push. Assuming the same Segment Routing Global Block (SRGB), at
        least on all access routers connecting the hosts, the same policy can
        be programmed across all hosts, which is convenient.</t>
      </section>
      <section anchor="ATROUTER" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-at-a-router-sr-traffic-engi">At a Router - SR Traffic-Engineering Tunnel</name>
        <t indent="0" pn="section-5.2-1">The BGP-EPE controller can configure the ingress border router with
        an SR traffic-engineering tunnel T1 and a steering policy S1, which
        causes a certain class of traffic to be mapped on the tunnel T1.</t>
        <t indent="0" pn="section-5.2-2">The tunnel T1 would be configured to push the required segment
        list.</t>
        <t indent="0" pn="section-5.2-3">The tunnel and the steering policy could be configured via multiple
        means. A few examples are given below:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.2-4">
          <li pn="section-5.2-4.1">The Path Computation Element Communication Protocol (PCEP) according
          to <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/> and <xref target="RFC8281" format="default" sectionFormat="of" derivedContent="RFC8281"/></li>
          <li pn="section-5.2-4.2">NETCONF <xref target="RFC6241" format="default" sectionFormat="of" derivedContent="RFC6241"/></li>
          <li pn="section-5.2-4.3">Other static or ephemeral APIs</li>
        </ul>
        <t indent="0" pn="section-5.2-5">Example: at router A (<xref target="REFDIAGRAMFIG" format="default" sectionFormat="of" derivedContent="Figure 1"/>).</t>
        <sourcecode markers="false" pn="section-5.2-6">
Tunnel T1: push {64, 1042}
IP route L/8 set next-hop T1
</sourcecode>
      </section>
      <section anchor="ATROUTER8277" numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-at-a-router-unicast-route-l">At a Router - Unicast Route Labeled Using BGP (RFC 8277)</name>
        <t indent="0" pn="section-5.3-1">The BGP-EPE controller could build a unicast route labeled using BGP
   <xref target="RFC8277" format="default" sectionFormat="of" derivedContent="RFC8277"/> (from scratch) and send it to the ingress
   router.</t>
        <t indent="0" pn="section-5.3-2">Such a route would require the following:</t>
        <dl newline="true" indent="3" spacing="normal" pn="section-5.3-3">
          <dt pn="section-5.3-3.1">NLRI 
</dt>
          <dd pn="section-5.3-3.2">the destination prefix to engineer (e.g., L/8)
</dd>
          <dt pn="section-5.3-3.3">Next Hop
</dt>
          <dd pn="section-5.3-3.4">the selected egress border router: C
</dd>
          <dt pn="section-5.3-3.5">Label 
</dt>
          <dd pn="section-5.3-3.6">the selected egress peer: 1042
</dd>
          <dt pn="section-5.3-3.7">Autonomous System (AS) path
</dt>
          <dd pn="section-5.3-3.8">the selected valid AS path
</dd>
        </dl>
        <t indent="0" pn="section-5.3-4">
  Some BGP policy to ensure it will be selected as best by the ingress
  router. Note that as discussed in <xref target="RFC8277" sectionFormat="of" section="5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8277#section-5" derivedContent="RFC8277"/>, the comparison of a labeled and unlabeled unicast BGP route
  is implementation dependent and hence may require an implementation-specific
  policy on each ingress router.
</t>
        <t indent="0" pn="section-5.3-5">This unicast route labeled using BGP <xref target="RFC8277" format="default" sectionFormat="of" derivedContent="RFC8277"/> "overwrites"
        an equivalent or less-specific "best path". As the
        best path is changed, this BGP-EPE input policy option may influence
        the path propagated to the upstream peer/customers. Indeed,
        implementations treating the SAFI-1 and SAFI-4 routes for a given
        prefix as comparable would trigger a BGP WITHDRAW of the SAFI-1 route
        to their BGP upstream peers.</t>
      </section>
      <section anchor="ATROUTERVPN" numbered="true" toc="include" removeInRFC="false" pn="section-5.4">
        <name slugifiedName="name-at-a-router-vpn-policy-rout">At a Router - VPN Policy Route</name>
        <t indent="0" pn="section-5.4-1">The BGP-EPE controller could build a VPNv4 route (from scratch) and
        send it to the ingress router.</t>
        <t indent="0" pn="section-5.4-2">Such a route would require the following:</t>
        <dl newline="true" indent="3" spacing="normal" pn="section-5.4-3">
          <dt pn="section-5.4-3.1">NLRI
</dt>
          <dd pn="section-5.4-3.2">the destination prefix to engineer: e.g., L/8
</dd>
          <dt pn="section-5.4-3.3">Next Hop
</dt>
          <dd pn="section-5.4-3.4">the selected egress border router: C
</dd>
          <dt pn="section-5.4-3.5">Label
</dt>
          <dd pn="section-5.4-3.6">the selected egress peer: 1042
</dd>
          <dt pn="section-5.4-3.7">Route-Target
</dt>
          <dd pn="section-5.4-3.8">the selected appropriate VRF instance at the ingress router
</dd>
          <dt pn="section-5.4-3.9">AS path
</dt>
          <dd pn="section-5.4-3.10">the selected valid AS path
</dd>
        </dl>
        <t indent="0" pn="section-5.4-4">
    Some BGP policy to ensure it will be selected as best by the ingress
    router in the related VRF instance.
</t>
        <t indent="0" pn="section-5.4-5">The related VRF instance must be preconfigured. A VRF fallback to the main
        FIB might be beneficial to avoid replicating all the "normal" Internet
        paths in each VRF instance.</t>
      </section>
    </section>
    <section anchor="IPv6" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-ipv6-data-plane">IPv6 Data Plane</name>
      <t indent="0" pn="section-6-1">The described solution is applicable to IPv6, either with MPLS-based
      or IPv6-native segments. In both cases, the same three steps of the
      solution are applicable:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6-2">
        <li pn="section-6-2.1">BGP-LS-based signaling of the external topology and BGP Peering
          Segments to the BGP-EPE controller.</li>
        <li pn="section-6-2.2">Collecting, by the BGP-EPE controller, various inputs to come up
        with a policy decision.</li>
        <li pn="section-6-2.3">Programming at an ingress router or source host of the desired
          BGP-EPE policy, which consists of a list of segments to push on a
          defined traffic class.</li>
      </ul>
    </section>
    <section anchor="BENEFITS" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-benefits">Benefits</name>
      <t indent="0" pn="section-7-1">The BGP-EPE solutions described in this document have the following
      benefits:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7-2">
        <li pn="section-7-2.1">No assumption on the iBGP design within AS1.</li>
        <li pn="section-7-2.2">Next-hop-self on the Internet routes propagated to the ingress
          border routers is possible. This is a common design rule to minimize
          the number of IGP routes and to avoid importing external churn into
          the internal routing domain.</li>
        <li pn="section-7-2.3">Consistent support for traffic engineering within the domain and
          at the external edge of the domain.</li>
        <li pn="section-7-2.4">Support for both host and ingress border router BGP-EPE policy
          programming.</li>
        <li pn="section-7-2.5">BGP-EPE functionality is only required on the BGP-EPE-enabled
          egress border router and the BGP-EPE controller; an ingress policy
          can be programmed at the ingress border router without any new
          functionality.</li>
        <li pn="section-7-2.6">Ability to deploy the same input policy across hosts connected to
        different routers (assuming the global property of IGP
        Prefix-SIDs).</li>
      </ul>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-8-1">This document has no IANA actions.</t>
    </section>
    <section anchor="Manageability" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-manageability-consideration">Manageability Considerations</name>
      <t indent="0" pn="section-9-1">
The BGP-EPE use case described in this document requires BGP-LS <xref target="RFC7752" format="default" sectionFormat="of" derivedContent="RFC7752"/> extensions that are described in <xref target="RFC9086" format="default" sectionFormat="of" derivedContent="RFC9086"/> and that consists of additional BGP-LS
descriptors and TLVs.  Manageability functions of BGP-LS, described in <xref target="RFC7752" format="default" sectionFormat="of" derivedContent="RFC7752"/>, also apply to the extensions required by
the EPE use case.

</t>
      <t indent="0" pn="section-9-2">Additional manageability considerations are described in <xref target="RFC9086" format="default" sectionFormat="of" derivedContent="RFC9086"/>.</t>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-10">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-10-1"><xref target="RFC7752" format="default" sectionFormat="of" derivedContent="RFC7752"/> defines BGP-LS NLRI
      instances and their associated security aspects.</t>
      <t indent="0" pn="section-10-2"><xref target="RFC9086" format="default" sectionFormat="of" derivedContent="RFC9086"/> defines the BGP-LS extensions required by the BGP-EPE
      mechanisms described in this document. BGP-EPE BGP-LS extensions also
      include the related security.</t>
    </section>
  </middle>
  <back>
    <references pn="section-11">
      <name slugifiedName="name-references">References</name>
      <references pn="section-11.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">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="RFC7752" target="https://www.rfc-editor.org/info/rfc7752" quoteTitle="true" derivedAnchor="RFC7752">
          <front>
            <title>North-Bound Distribution of Link-State and Traffic Engineering (TE) Information Using BGP</title>
            <author initials="H." surname="Gredler" fullname="H. Gredler" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Medved" fullname="J. Medved">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Farrel" fullname="A. Farrel">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Ray" fullname="S. Ray">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="March"/>
            <abstract>
              <t indent="0">In a number of environments, a component external to a network is called upon to perform computations based on the network topology and current state of the connections within the network, including Traffic Engineering (TE) information.  This is information typically distributed by IGP routing protocols within the network.</t>
              <t indent="0">This document describes a mechanism by which link-state and TE information can be collected from networks and shared with external components using the BGP routing protocol.  This is achieved using a new BGP Network Layer Reachability Information (NLRI) encoding format.  The mechanism is applicable to physical and virtual IGP links.  The mechanism described is subject to policy control.</t>
              <t indent="0">Applications of this technique include Application-Layer Traffic Optimization (ALTO) servers and Path Computation Elements (PCEs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7752"/>
          <seriesInfo name="DOI" value="10.17487/RFC7752"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">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="RFC8402" target="https://www.rfc-editor.org/info/rfc8402" quoteTitle="true" derivedAnchor="RFC8402">
          <front>
            <title>Segment Routing Architecture</title>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Ginsberg" fullname="L. Ginsberg">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Decraene" fullname="B. Decraene">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Litkowski" fullname="S. Litkowski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Shakir" fullname="R. Shakir">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="July"/>
            <abstract>
              <t indent="0">Segment Routing (SR) leverages the source routing paradigm.  A node steers a packet through an ordered list of instructions, called "segments".  A segment can represent any instruction, topological or service based.  A segment can have a semantic local to an SR node or global within an SR domain.  SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t>
              <t indent="0">SR can be directly applied to the MPLS architecture with no change to the forwarding plane.  A segment is encoded as an MPLS label.  An ordered list of segments is encoded as a stack of labels.  The segment to process is on the top of the stack.  Upon completion of a segment, the related label is popped from the stack.</t>
              <t indent="0">SR can be applied to the IPv6 architecture, with a new type of routing header.  A segment is encoded as an IPv6 address.  An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header.  The active segment is indicated by the Destination Address (DA) of the packet.  The next active segment is indicated by a pointer in the new routing header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8402"/>
          <seriesInfo name="DOI" value="10.17487/RFC8402"/>
        </reference>
        <reference anchor="RFC9086" target="https://www.rfc-editor.org/info/rfc9086" quoteTitle="true" derivedAnchor="RFC9086">
          <front>
            <title>Border Gateway Protocol - Link State (BGP-LS) Extensions for Segment Routing BGP Egress Peer Engineering</title>
            <author initials="S." surname="Previdi" fullname="Stefano Previdi">
              <organization showOnFrontPage="true">Individual</organization>
            </author>
            <author initials="K." surname="Talaulikar" fullname="Ketan Talaulikar" role="editor">
              <organization showOnFrontPage="true">Cisco Systems</organization>
            </author>
            <author initials="C." surname="Filsfils" fullname="Clarence Filsfils">
              <organization showOnFrontPage="true">Cisco Systems</organization>
            </author>
            <author initials="K." surname="Patel" fullname="Keyur Patel">
              <organization showOnFrontPage="true">Arrcus, Inc.</organization>
            </author>
            <author initials="S." surname="Ray" fullname="Saikat Ray">
              <organization showOnFrontPage="true">Individual Contributor</organization>
            </author>
            <author initials="J." surname="Dong" fullname="Jie Dong">
              <organization showOnFrontPage="true">Huawei Technologies</organization>
            </author>
            <date month="August" year="2021"/>
          </front>
          <seriesInfo name="RFC" value="9086"/>
          <seriesInfo name="DOI" value="10.17487/RFC9086"/>
        </reference>
      </references>
      <references pn="section-11.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6241" quoteTitle="true" derivedAnchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author initials="R." surname="Enns" fullname="R. Enns" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Bjorklund" fullname="M. Bjorklund" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Schoenwaelder" fullname="J. Schoenwaelder" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Bierman" fullname="A. Bierman" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2011" month="June"/>
            <abstract>
              <t indent="0">The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices.  It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages.  The NETCONF protocol operations are realized as remote procedure calls (RPCs).  This document obsoletes RFC 4741.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC7011" target="https://www.rfc-editor.org/info/rfc7011" quoteTitle="true" derivedAnchor="RFC7011">
          <front>
            <title>Specification of the IP Flow Information Export (IPFIX) Protocol for the Exchange of Flow Information</title>
            <author initials="B." surname="Claise" fullname="B. Claise" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Trammell" fullname="B. Trammell" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P." surname="Aitken" fullname="P. Aitken">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2013" month="September"/>
            <abstract>
              <t indent="0">This document specifies the IP Flow Information Export (IPFIX) protocol, which serves as a means for transmitting Traffic Flow information over the network.  In order to transmit Traffic Flow information from an Exporting Process to a Collecting Process, a common representation of flow data and a standard means of communicating them are required.  This document describes how the IPFIX Data and Template Records are carried over a number of transport protocols from an IPFIX Exporting Process to an IPFIX Collecting Process.  This document obsoletes RFC 5101.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="77"/>
          <seriesInfo name="RFC" value="7011"/>
          <seriesInfo name="DOI" value="10.17487/RFC7011"/>
        </reference>
        <reference anchor="RFC7854" target="https://www.rfc-editor.org/info/rfc7854" quoteTitle="true" derivedAnchor="RFC7854">
          <front>
            <title>BGP Monitoring Protocol (BMP)</title>
            <author initials="J." surname="Scudder" fullname="J. Scudder" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Fernando" fullname="R. Fernando">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Stuart" fullname="S. Stuart">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="June"/>
            <abstract>
              <t indent="0">This document defines the BGP Monitoring Protocol (BMP), which can be used to monitor BGP sessions.  BMP is intended to provide a convenient interface for obtaining route views.  Prior to the introduction of BMP, screen scraping was the most commonly used approach to obtaining such views.  The design goals are to keep BMP simple, useful, easily implemented, and minimally service affecting. BMP is not suitable for use as a routing protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7854"/>
          <seriesInfo name="DOI" value="10.17487/RFC7854"/>
        </reference>
        <reference anchor="RFC7855" target="https://www.rfc-editor.org/info/rfc7855" quoteTitle="true" derivedAnchor="RFC7855">
          <front>
            <title>Source Packet Routing in Networking (SPRING) Problem Statement and Requirements</title>
            <author initials="S." surname="Previdi" fullname="S. Previdi" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Decraene" fullname="B. Decraene">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Litkowski" fullname="S. Litkowski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Horneffer" fullname="M. Horneffer">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Shakir" fullname="R. Shakir">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="May"/>
            <abstract>
              <t indent="0">The ability for a node to specify a forwarding path, other than the normal shortest path, that a particular packet will traverse, benefits a number of network functions.  Source-based routing mechanisms have previously been specified for network protocols but have not seen widespread adoption.  In this context, the term "source" means "the point at which the explicit route is imposed"; therefore, it is not limited to the originator of the packet (i.e., the node imposing the explicit route may be the ingress node of an operator's network).</t>
              <t indent="0">This document outlines various use cases, with their requirements, that need to be taken into account by the Source Packet Routing in Networking (SPRING) architecture for unicast traffic.  Multicast use cases and requirements are out of scope for this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7855"/>
          <seriesInfo name="DOI" value="10.17487/RFC7855"/>
        </reference>
        <reference anchor="RFC7911" target="https://www.rfc-editor.org/info/rfc7911" quoteTitle="true" derivedAnchor="RFC7911">
          <front>
            <title>Advertisement of Multiple Paths in BGP</title>
            <author initials="D." surname="Walton" fullname="D. Walton">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Retana" fullname="A. Retana">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Chen" fullname="E. Chen">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Scudder" fullname="J. Scudder">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="July"/>
            <abstract>
              <t indent="0">This document defines a BGP extension that allows the advertisement of multiple paths for the same address prefix without the new paths implicitly replacing any previous ones.  The essence of the extension is that each path is identified by a Path Identifier in addition to the address prefix.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7911"/>
          <seriesInfo name="DOI" value="10.17487/RFC7911"/>
        </reference>
        <reference anchor="RFC8277" target="https://www.rfc-editor.org/info/rfc8277" quoteTitle="true" derivedAnchor="RFC8277">
          <front>
            <title>Using BGP to Bind MPLS Labels to Address Prefixes</title>
            <author initials="E." surname="Rosen" fullname="E. Rosen">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="October"/>
            <abstract>
              <t indent="0">This document specifies a set of procedures for using BGP to advertise that a specified router has bound a specified MPLS label (or a specified sequence of MPLS labels organized as a contiguous part of a label stack) to a specified address prefix.  This can be done by sending a BGP UPDATE message whose Network Layer Reachability Information field contains both the prefix and the MPLS label(s) and whose Next Hop field identifies the node at which said prefix is bound to said label(s).  This document obsoletes RFC 3107.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8277"/>
          <seriesInfo name="DOI" value="10.17487/RFC8277"/>
        </reference>
        <reference anchor="RFC8281" target="https://www.rfc-editor.org/info/rfc8281" quoteTitle="true" derivedAnchor="RFC8281">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model</title>
            <author initials="E." surname="Crabbe" fullname="E. Crabbe">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="I." surname="Minei" fullname="I. Minei">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Sivabalan" fullname="S. Sivabalan">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Varga" fullname="R. Varga">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="December"/>
            <abstract>
              <t indent="0">The Path Computation Element Communication Protocol (PCEP) provides mechanisms for Path Computation Elements (PCEs) to perform path computations in response to Path Computation Client (PCC) requests.</t>
              <t indent="0">The extensions for stateful PCE provide active control of Multiprotocol Label Switching (MPLS) Traffic Engineering Label Switched Paths (TE LSPs) via PCEP, for a model where the PCC delegates control over one or more locally configured LSPs to the PCE.  This document describes the creation and deletion of PCE-initiated LSPs under the stateful PCE model.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8281"/>
          <seriesInfo name="DOI" value="10.17487/RFC8281"/>
        </reference>
        <reference anchor="RFC8570" target="https://www.rfc-editor.org/info/rfc8570" quoteTitle="true" derivedAnchor="RFC8570">
          <front>
            <title>IS-IS Traffic Engineering (TE) Metric Extensions</title>
            <author initials="L." surname="Ginsberg" fullname="L. Ginsberg" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Giacalone" fullname="S. Giacalone">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Ward" fullname="D. Ward">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Drake" fullname="J. Drake">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Q." surname="Wu" fullname="Q. Wu">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="March"/>
            <abstract>
              <t indent="0">In certain networks, such as, but not limited to, financial information networks (e.g., stock market data providers), network-performance criteria (e.g., latency) are becoming as critical to data-path selection as other metrics.</t>
              <t indent="0">This document describes extensions to IS-IS Traffic Engineering Extensions (RFC 5305).  These extensions provide a way to distribute and collect network-performance information in a scalable fashion. The information distributed using IS-IS TE Metric Extensions can then be used to make path-selection decisions based on network performance.</t>
              <t indent="0">Note that this document only covers the mechanisms with which network-performance information is distributed.  The mechanisms for measuring network performance or acting on that information, once distributed, are outside the scope of this document.</t>
              <t indent="0">This document obsoletes RFC 7810.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8570"/>
          <seriesInfo name="DOI" value="10.17487/RFC8570"/>
        </reference>
        <reference anchor="RFC8571" target="https://www.rfc-editor.org/info/rfc8571" quoteTitle="true" derivedAnchor="RFC8571">
          <front>
            <title>BGP - Link State (BGP-LS) Advertisement of IGP Traffic Engineering Performance Metric Extensions</title>
            <author initials="L." surname="Ginsberg" fullname="L. Ginsberg" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Q." surname="Wu" fullname="Q. Wu">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Tantsura" fullname="J. Tantsura">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="March"/>
            <abstract>
              <t indent="0">This document defines new BGP - Link State (BGP-LS) TLVs in order to carry the IGP Traffic Engineering Metric Extensions defined in the IS-IS and OSPF protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8571"/>
          <seriesInfo name="DOI" value="10.17487/RFC8571"/>
        </reference>
        <reference anchor="RFC8664" target="https://www.rfc-editor.org/info/rfc8664" quoteTitle="true" derivedAnchor="RFC8664">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing</title>
            <author initials="S." surname="Sivabalan" fullname="S. Sivabalan">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Tantsura" fullname="J. Tantsura">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="W." surname="Henderickx" fullname="W. Henderickx">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Hardwick" fullname="J. Hardwick">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="December"/>
            <abstract>
              <t indent="0">Segment Routing (SR) enables any head-end node to select any path without relying on a hop-by-hop signaling technique (e.g., LDP or RSVP-TE). It depends only on "segments" that are advertised by link-state Interior Gateway Protocols (IGPs). An SR path can be derived from a variety of mechanisms, including an IGP Shortest Path Tree (SPT), an explicit configuration, or a Path Computation Element (PCE). This document specifies extensions to the Path Computation Element Communication Protocol (PCEP) that allow a stateful PCE to compute and initiate Traffic-Engineering (TE) paths, as well as a Path Computation Client (PCC) to request a path subject to certain constraints and optimization criteria in SR networks.</t>
              <t indent="0">This document updates RFC 8408.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8664"/>
          <seriesInfo name="DOI" value="10.17487/RFC8664"/>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">The authors would like to thank <contact fullname="Acee Lindem"/> for his comments and
      contribution.</t>
    </section>
    <section anchor="Contributors" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-contributors">Contributors</name>
      <t indent="0" pn="section-appendix.b-1"><contact fullname="Daniel Ginsburg"/> substantially contributed to the content of this
      document.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Clarence Filsfils" initials="C." role="editor" surname="Filsfils">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street/>
            <city>Brussels</city>
            <region/>
            <code/>
            <country>Belgium</country>
          </postal>
          <email>cfilsfil@cisco.com</email>
        </address>
      </author>
      <author fullname="Stefano Previdi" initials="S." surname="Previdi">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street/>
            <city/>
            <code/>
            <country>Italy</country>
          </postal>
          <email>stefano@previdi.net</email>
        </address>
      </author>
      <author fullname="Gaurav Dawra" initials="G." role="editor" surname="Dawra">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street/>
            <city/>
            <code/>
            <country>United States of America</country>
          </postal>
          <email>gdawra.ietf@gmail.com</email>
        </address>
      </author>
      <author fullname="Ebben Aries" initials="E." surname="Aries">
        <organization showOnFrontPage="true">Juniper Networks</organization>
        <address>
          <postal>
            <street>1133 Innovation Way</street>
            <city>Sunnyvale</city>
            <region>CA</region>
            <code>94089</code>
            <country>United States of America</country>
          </postal>
          <email>exa@juniper.net</email>
        </address>
      </author>
      <author fullname="Dmitry Afanasiev" initials="D." surname="Afanasiev">
        <organization showOnFrontPage="true">Yandex</organization>
        <address>
          <postal>
            <street/>
            <city/>
            <code/>
            <country>Russian Federation</country>
          </postal>
          <email>fl0w@yandex-team.ru</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
