| rfc9087xml2.original.xml | rfc9087.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | ||||
| <?rfc toc="yes"?> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <?rfc tocompact="yes"?> | ||||
| <?rfc tocdepth="3"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" | |||
| <?rfc tocindent="yes"?> | docName="draft-ietf-spring-segment-routing-central-epe-10" number="9087" | |||
| <?rfc symrefs="yes"?> | ipr="trust200902" obsoletes="" updates="" submissionType="IETF" | |||
| <?rfc sortrefs="yes"?> | category="info" consensus="true" xml:lang="en" tocInclude="true" | |||
| <?rfc comments="yes"?> | tocDepth="3" symRefs="true" sortRefs="true" version="3"> | |||
| <?rfc inline="yes"?> | ||||
| <?rfc compact="yes"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <rfc category="info" | ||||
| docName="draft-ietf-spring-segment-routing-central-epe-10" | ||||
| ipr="trust200902"> | ||||
| <front> | <front> | |||
| <title abbrev="Segment Routing Centralized EPE">Segment Routing | <title abbrev="Segment Routing Centralized EPE">Segment Routing | |||
| Centralized BGP Egress Peer Engineering</title> | Centralized BGP Egress Peer Engineering</title> | |||
| <seriesInfo name="RFC" value="9087"/> | ||||
| <author fullname="Clarence Filsfils" initials="C." role="editor" | <author fullname="Clarence Filsfils" initials="C." role="editor" surname="Fi | |||
| surname="Filsfils"> | lsfils"> | |||
| <organization>Cisco Systems, Inc.</organization> | <organization>Cisco Systems, Inc.</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <city>Brussels</city> | <city>Brussels</city> | |||
| <region/> | <region/> | |||
| <code/> | <code/> | |||
| <country>Belgium</country> | ||||
| <country>BE</country> | ||||
| </postal> | </postal> | |||
| <email>cfilsfil@cisco.com</email> | <email>cfilsfil@cisco.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Stefano Previdi" initials="S." surname="Previdi"> | <author fullname="Stefano Previdi" initials="S." surname="Previdi"> | |||
| <organization>Cisco Systems, Inc.</organization> | <organization>Cisco Systems, Inc.</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <city/> | <city/> | |||
| <code/> | <code/> | |||
| <country>Italy</country> | <country>Italy</country> | |||
| </postal> | </postal> | |||
| <email>stefano@previdi.net</email> | <email>stefano@previdi.net</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Gaurav Dawra" initials="G." role="editor" surname="Dawra"> | ||||
| <author fullname="Gaurav Dawra" initials="G." role="editor" | ||||
| surname="Dawra"> | ||||
| <organization>Cisco Systems, Inc.</organization> | <organization>Cisco Systems, Inc.</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <city/> | <city/> | |||
| <code/> | <code/> | |||
| <country>United States of America</country> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <email>gdawra.ietf@gmail.com</email> | <email>gdawra.ietf@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Ebben Aries" initials="E." surname="Aries"> | <author fullname="Ebben Aries" initials="E." surname="Aries"> | |||
| <organization>Juniper Networks</organization> | <organization>Juniper Networks</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>1133 Innovation Way</street> | <street>1133 Innovation Way</street> | |||
| <city>Sunnyvale</city> | <city>Sunnyvale</city> | |||
| <region>CA</region> | ||||
| <code>CA 94089</code> | <code>94089</code> | |||
| <country>United States of America</country> | ||||
| <country>US</country> | ||||
| </postal> | </postal> | |||
| <email>exa@juniper.net</email> | <email>exa@juniper.net</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Dmitry Afanasiev" initials="D." surname="Afanasiev"> | <author fullname="Dmitry Afanasiev" initials="D." surname="Afanasiev"> | |||
| <organization>Yandex</organization> | <organization>Yandex</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <city/> | <city/> | |||
| <code/> | <code/> | |||
| <country>Russian Federation</country> | ||||
| <country>RU</country> | ||||
| </postal> | </postal> | |||
| <email>fl0w@yandex-team.ru</email> | <email>fl0w@yandex-team.ru</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2021" month="August" /> | ||||
| <date year="2017"/> | <area>RTG</area> | |||
| <workgroup>SPRING</workgroup> | ||||
| <workgroup>Network Working Group</workgroup> | ||||
| <abstract> | <abstract> | |||
| <t>Segment Routing (SR) leverages source routing. A node steers a packet | <t>Segment Routing (SR) leverages source routing. A node steers a packet | |||
| through a controlled set of instructions, called segments, by prepending | through a controlled set of instructions, called segments, by prepending | |||
| the packet with an SR header. A segment can represent any instruction | the packet with an SR header. A segment can represent any instruction, | |||
| topological or service-based. SR allows to enforce a flow through any | topological or service based. SR allows for the enforcement of a flow | |||
| topological path while maintaining per-flow state only at the ingress | through any topological path while maintaining per-flow state only at | |||
| node of the SR domain.</t> | the ingress node of the SR domain.</t> | |||
| <t>The Segment Routing architecture can be directly applied to the MPLS | <t>The Segment Routing architecture can be directly applied to the MPLS | |||
| dataplane with no change on the forwarding plane. It requires a minor | data plane with no change on the forwarding plane. It requires a minor | |||
| extension to the existing link-state routing protocols.</t> | extension to the existing link-state routing protocols.</t> | |||
| <t>This document illustrates the application of Segment Routing to solve | <t>This document illustrates the application of Segment Routing to solve | |||
| the BGP Egress Peer Engineering (BGP-EPE) requirement. The SR-based | the BGP Egress Peer Engineering (BGP-EPE) requirement. The SR-based | |||
| BGP-EPE solution allows a centralized (Software Defined Network, SDN) | BGP-EPE solution allows a centralized (Software-Defined Networking, or SDN ) | |||
| controller to program any egress peer policy at ingress border routers | controller to program any egress peer policy at ingress border routers | |||
| or at hosts within the domain.</t> | or at hosts within the domain.</t> | |||
| </abstract> | </abstract> | |||
| <note title="Requirements Language"> | ||||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | ||||
| document are to be interpreted as described in <xref | ||||
| target="RFC2119">RFC 2119</xref>.</t> | ||||
| </note> | ||||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="INTRO" title="Introduction"> | <section anchor="INTRO" numbered="true" toc="default"> | |||
| <t>The document is structured as follows: <list style="symbols"> | <name>Introduction</name> | |||
| <t><xref target="INTRO"/> states the BGP-EPE problem statement and | <t>The document is structured as follows: </t> | |||
| provides the key references.</t> | ||||
| <t><xref target="BGPSEGMENTS"/> defines the different BGP Peering | <ul> | |||
| Segments and the semantic associated to them.</t> | ||||
| <t><xref target="TOPOBGPLS"/> describes the automated allocation of | <li><xref target="INTRO" format="default"/> states the BGP-EPE problem statement | |||
| BGP Peering Segment-IDs (SIDs) by the BGP-EPE enabled egress border | and provides the key references. | |||
| router and the automated signaling of the external peering topology | </li> | |||
| and the related BGP Peering SID’s to the collector <xref | ||||
| target="I-D.ietf-idr-bgpls-segment-routing-epe"/>.</t> | ||||
| <t><xref target="BGPPECTRL"/> overviews the components of a | <li><xref target="BGPSEGMENTS" format="default"/> defines the different BGP | |||
| centralized BGP-EPE controller. The definition of the BGP-EPE | Peering Segments and the semantic associated to them. | |||
| controller is outside the scope of this document.</t> | </li> | |||
| <t><xref target="PROGRINPUTPOL"/> overviews the methods that could | <li><xref target="TOPOBGPLS" format="default"/> describes the automated | |||
| be used by the centralized BGP-EPE controller to implement a BGP-EPE | allocation of BGP Peering Segment-IDs (SIDs) by the BGP-EPE-enabled egress | |||
| policy at an ingress border router or at a source host within the | border router and the automated signaling of the external peering topology and | |||
| domain. The exhaustive definition of all the means to program an | the related BGP Peering SIDs to the collector <xref | |||
| BGP-EPE input policy is outside the scope of this document.</t> | target="RFC9086" format="default"/>. | |||
| </list></t> | </li> | |||
| <li><xref target="BGPPECTRL" format="default"/> 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><xref target="PROGRINPUTPOL" format="default"/> 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>For editorial reasons, the solution is described with IPv6 addresses | <t>For editorial reasons, the solution is described with IPv6 addresses | |||
| and MPLS SIDs. This solution is equally applicable to IPv4 with MPLS | and MPLS SIDs. This solution is equally applicable to IPv4 with MPLS | |||
| SIDs and also to IPv6 with native IPv6 SIDs.</t> | SIDs and also to IPv6 with native IPv6 SIDs.</t> | |||
| <section anchor="PROBSTATE" numbered="true" toc="default"> | ||||
| <section anchor="PROBSTATE" title="Problem Statement"> | <name>Problem Statement</name> | |||
| <t>The BGP-EPE problem statement is defined in <xref | <t>The BGP-EPE problem statement is defined in <xref target="RFC7855" fo | |||
| target="RFC7855"/>.</t> | rmat="default"/>.</t> | |||
| <t>A centralized controller should be able to instruct an ingress | <t>A centralized controller should be able to instruct an ingress | |||
| Provider Edge router (PE) or a content source within the domain to use | Provider Edge (PE) router or a content source within the domain to use | |||
| a specific egress PE and a specific external interface/neighbor to | a specific egress PE and a specific external interface/neighbor to | |||
| reach a particular destination.</t> | reach a particular destination.</t> | |||
| <t>Let's call this solution "BGP-EPE" for "BGP Egress Peer | <t>Let's call this solution "BGP-EPE" for "BGP Egress Peer | |||
| Engineering". The centralized controller is called the “BGP-EPE | Engineering". The centralized controller is called the "BGP-EPE | |||
| Controller”. The egress border router where the BGP-EPE traffic | controller". The egress border router where the BGP-EPE traffic | |||
| steering functionality is implemented is called a BGP-EPE enabled | steering functionality is implemented is called a BGP-EPE-enabled | |||
| border router. The input policy programmed at an ingress border router | border router. The input policy programmed at an ingress border router | |||
| or at a source host is called a BGP-EPE policy.</t> | or at a source host is called a BGP-EPE policy.</t> | |||
| <t>The requirements that have motivated the solution described in this | <t>The requirements that have motivated the solution described in this | |||
| document are listed here below:<list style="symbols"> | document are listed here below:</t> | |||
| <t>The solution MUST apply to the Internet use-case where the | <ul spacing="normal"> | |||
| Internet routes are assumed to use IPv4 unlabeled or IPv6 | ||||
| unlabeled. It is not required to place the Internet routes in a | ||||
| VRF and allocate labels on a per route, or on a per-path | ||||
| basis.</t> | ||||
| <t>The solution MUST support any deployed iBGP schemes (RRs, | ||||
| confederations or iBGP full meshes).</t> | ||||
| <t>The solution MUST be applicable to both routers with external | ||||
| and internal peers.</t> | ||||
| <t>The solution should minimize the need for new BGP capabilities | ||||
| at the ingress PEs.</t> | ||||
| <t>The solution MUST accommodate an ingress BGP-EPE policy at an | <li>The solution <bcp14>MUST</bcp14> apply to the Internet use case | |||
| ingress PE or directly at a source within the domain.</t> | where the Internet routes are assumed to use IPv4 unlabeled or IPv6 | |||
| unlabeled. | ||||
| <t>The solution MAY support automated Fast Reroute (FRR) and fast | It is not required to place the Internet routes in a VPN Routing and | |||
| convergence mechanisms.</t> | Forwarding (VRF) instance and allocate labels on a per-route or | |||
| </list></t> | per-path basis. | |||
| </li> | ||||
| <li>The solution <bcp14>MUST</bcp14> support any deployed Internal BGP | ||||
| (iBGP) | ||||
| schemes (Route Reflectors (RRs), | ||||
| confederations, or iBGP full meshes).</li> | ||||
| <li>The solution <bcp14>MUST</bcp14> be applicable to both routers wit | ||||
| h external | ||||
| and internal peers.</li> | ||||
| <li>The solution should minimize the need for new BGP capabilities | ||||
| at the ingress PEs.</li> | ||||
| <li>The solution <bcp14>MUST</bcp14> accommodate an ingress BGP-EPE po | ||||
| licy at an | ||||
| ingress PE or directly at a source within the domain.</li> | ||||
| <li>The solution <bcp14>MAY</bcp14> support automated Fast Reroute (FR | ||||
| R) and fast | ||||
| convergence mechanisms.</li> | ||||
| </ul> | ||||
| <t>The following reference diagram is used throughout this | <t>The following reference diagram is used throughout this | |||
| document.</t> | document.</t> | |||
| <figure anchor="REFDIAGRAMFIG"> | ||||
| <figure anchor="REFDIAGRAMFIG" title="Reference Diagram"> | <name>Reference Diagram</name> | |||
| <artwork>+---------+ +------+ | <artwork name="" type="" align="left" alt=""><![CDATA[+---------+ | |||
| +------+ | ||||
| | | | | | | | | | | |||
| | H B------D G | | H B------D G | |||
| | | +---/| AS 2 |\ +------+ | | | +---/| AS 2 |\ +------+ | |||
| | |/ +------+ \ | |---L/8 | | |/ +------+ \ | |---L/8 | |||
| A AS1 C---+ \| | | A AS1 C---+ \| | | |||
| | |\\ \ +------+ /| AS 4 |---M/8 | | |\\ \ +------+ /| AS 4 |---M/8 | |||
| | | \\ +-E |/ +------+ | | | \\ +-E |/ +------+ | |||
| | X | \\ | K | | X | \\ | K | |||
| | | +===F AS 3 | | | | +===F AS 3 | | |||
| +---------+ +------+ | +---------+ +------+ | |||
| </artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>IP addressing:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>C's interface to D: 2001:db8:cd::c/64, D's | ||||
| interface: 2001:db8:cd::d/64</li> | ||||
| <li>C's interface to E: 2001:db8:ce::c/64, E's | ||||
| interface: 2001:db8:ce::e/64</li> | ||||
| <li>C's upper interface to F: 2001:db8:cf1::c/64, F's | ||||
| interface: 2001:db8:cf1::f/64</li> | ||||
| <li>C's lower interface to F: 2001:db8:cf2::c/64, F's | ||||
| interface: 2001:db8:cf2::f/64</li> | ||||
| <li>BGP router-ID of C: 192.0.2.3</li> | ||||
| <li>BGP router-ID of D: 192.0.2.4</li> | ||||
| <li>BGP router-ID of E: 192.0.2.5</li> | ||||
| <li>BGP router-ID of F: 192.0.2.6</li> | ||||
| <li>Loopback of F used for External BGP (eBGP) multi-hop peering to | ||||
| C: 2001:db8:f::f/128</li> | ||||
| <li>C's loopback is 2001:db8:c::c/128 with SID 64</li> | ||||
| </ul> | ||||
| <t>C's BGP peering:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>Single-hop eBGP peering with neighbor 2001:db8:cd::d (D)</li> | ||||
| <li>Single-hop eBGP peering with neighbor 2001:db8:ce::e (E)</li> | ||||
| <li>Multi-hop eBGP peering with F on IP address 2001:db8:f::f | ||||
| (F)</li> | ||||
| </ul> | ||||
| <t>C's resolution of the multi-hop eBGP session to F:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>Static route to 2001:db8:f::f/128 via 2001:db8:cf1::f</li> | ||||
| <li>Static route to 2001:db8:f::f/128 via 2001:db8:cf2::f</li> | ||||
| </ul> | ||||
| <t>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>X is the BGP-EPE controller within the AS1 domain.</t> | ||||
| <t>H is a content source within the AS1 domain.</t> | ||||
| </section> | ||||
| <t>IP addressing:<list style="symbols"> | <section> | |||
| <t>C’s interface to D: 2001:db8:cd::c/64, D’s | <name>Requirements Language</name> | |||
| interface: 2001:db8:cd::d/64</t> | <t> | |||
| The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
| <t>C’s interface to E: 2001:db8:ce::c/64, E’s | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| interface: 2001:db8:ce::e/64</t> | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
| "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| <t>C’s upper interface to F: 2001:db8:cf1::c/64, F’s | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | |||
| interface: 2001:db8:cf1::f/64</t> | to be interpreted as described in BCP 14 <xref target="RFC2119"/> | |||
| <xref target="RFC8174"/> when, and only when, they appear in all capitals, | ||||
| <t>C’s lower interface to F: 2001:db8:cf2::c/64, F’s | as shown here. | |||
| interface: 2001:db8:cf2::f/64</t> | </t> | |||
| <t>BGP router-ID of C: 192.0.2.3</t> | ||||
| <t>BGP router-ID of D: 192.0.2.4</t> | ||||
| <t>BGP router-ID of E: 192.0.2.5</t> | ||||
| <t>BGP router-ID of F: 192.0.2.6</t> | ||||
| <t>Loopback of F used for eBGP multi-hop peering to C: | ||||
| 2001:db8:f::f/128</t> | ||||
| <t>C’s loopback is 2001:db8:c::c/128 with SID 64</t> | ||||
| </list></t> | ||||
| <t>C’s BGP peering:<list style="symbols"> | ||||
| <t>Single-hop eBGP peering with neighbor 2001:db8:cd::d (D)</t> | ||||
| <t>Single-hop eBGP peering with neighbor 2001:db8:ce::e (E)</t> | ||||
| <t>Multi-hop eBGP peering with F on IP address 2001:db8:f::f | ||||
| (F)</t> | ||||
| </list></t> | ||||
| <t>C’s resolution of the multi-hop eBGP session to F:<list | ||||
| style="symbols"> | ||||
| <t>Static route to 2001:db8:f::f/128 via 2001:db8:cf1::f</t> | ||||
| <t>Static route to 2001:db8:f::f/128 via 2001:db8:cf2::f</t> | ||||
| </list></t> | ||||
| <t>C is configured with 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>X is the BGP-EPE controller within AS1 domain.</t> | ||||
| <t>H is a content source within AS1 domain.</t> | </section> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="BGPSEGMENTS" numbered="true" toc="default"> | ||||
| <section anchor="BGPSEGMENTS" title="BGP Peering Segments"> | <name>BGP Peering Segments</name> | |||
| <t>As defined in <xref target="I-D.ietf-spring-segment-routing"/>, | <t>As defined in <xref target="RFC8402" format="default"/>, certain | |||
| certain segments are defined by a BGP-EPE capable node and corresponding | segments are defined by a BGP-EPE-capable node and correspond to their | |||
| to its attached peers. These segments are called BGP peering segments or | attached peers. These segments are called BGP Peering Segments or BGP | |||
| BGP Peering SIDs. They enable the expression of source-routed | Peering SIDs. They enable the expression of source-routed inter-domain | |||
| inter-domain paths.</t> | paths.</t> | |||
| <t>An ingress border router of an AS may compose a list of segments to | <t>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 | 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 | egress border router C of the AS and through a specific peer. At | |||
| minimum, a BGP Egress Peering Engineering policy applied at an ingress | minimum, a BGP Egress Peer Engineering policy applied at an ingress | |||
| EPE involves two segments: the Node SID of the chosen egress EPE and | 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 | then the BGP Peering Segment for the chosen egress EPE peer or peering | |||
| interface.</t> | interface.</t> | |||
| <t><xref target="RFC8402" format="default"/> defines three types | ||||
| <t><xref target="I-D.ietf-spring-segment-routing"/> defines three types | of BGP Peering Segments/SIDs: PeerNode SID, PeerAdj SID, and PeerSet | |||
| of BGP peering segments/SIDs: PeerNode SID, PeerAdj SID and PeerSet | ||||
| SID.</t> | SID.</t> | |||
| <t>A Peer Node Segment is a segment describing a peer, including the SID | <ul empty="true"> | |||
| (PeerNode SID) allocated to it.</t> | <li> | |||
| <dl newline="false"> | ||||
| <t>A Peer Adjacency Segment is a segment describing a link, including | ||||
| the SID (PeerAdj SID) allocated to it.</t> | ||||
| <t>A Peer Set Segment is a segment describing a link or a node that is | <dt>Peer Node Segment: | |||
| part of the set, including the SID (PeerSet SID) allocated to the | </dt> | |||
| set.</t> | <dd>A segment describing a peer, including the SID (PeerNode SID) allocated to i | |||
| </section> | t | |||
| </dd> | ||||
| <section anchor="TOPOBGPLS" | <dt>Peer Adjacency Segment: | |||
| title="Distribution of Topology and TE Information using BGP-LS"> | </dt> | |||
| <t>In ships-in-the-night mode with respect to the pre-existing iBGP | <dd>A segment describing a link, including the SID (PeerAdj SID) allocated to it | |||
| design, a BGP-LS <xref target="RFC7752"/> session is established between | </dd> | |||
| the BGP-EPE enabled border router and the BGP-EPE controller.</t> | ||||
| <t>As a result of its local configuration and according to the behavior | <dt>Peer Set Segment: | |||
| described in <xref target="I-D.ietf-idr-bgpls-segment-routing-epe"/>, | </dt> | |||
| node C allocates the following BGP Peering Segments (<xref | <dd>A segment describing a link or a node that is part of the set, including | |||
| target="I-D.ietf-spring-segment-routing"/>):<list style="symbols"> | the SID (PeerSet SID) allocated to the set | |||
| <t>A PeerNode segment for each of its defined peer (D: 1012, E: 1022 | </dd> | |||
| and F: 1052).</t> | ||||
| <t>A PeerAdj segment for each recursing interface to a multi-hop | </dl> | |||
| peer (e.g.: the upper and lower interfaces from C to F in figure | </li> | |||
| 1).</t> | </ul> | |||
| <t>A PeerSet segment to the set of peers (E and F). In this case the | </section> | |||
| <section anchor="TOPOBGPLS" numbered="true" toc="default"> | ||||
| <name>Distribution of Topology and TE Information Using BGP-LS</name> | ||||
| <t>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"/> session is established between the | ||||
| BGP-EPE-enabled border router and the BGP-EPE controller.</t> | ||||
| <t>As a result of its local configuration and according to the behavior | ||||
| described in <xref target="RFC9086" format="default"/>, | ||||
| Node C allocates the following BGP Peering Segments <xref | ||||
| target="RFC8402" format="default"/>:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>A PeerNode segment for each of its defined peers (D: 1012, E: 1022 | ||||
| and F: 1052).</li> | ||||
| <li>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"/>).</li> | ||||
| <li>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 | PeerSet represents a set of peers (E, F) belonging to the same AS | |||
| (AS 3).</t> | (AS 3).</li> | |||
| </list></t> | </ul> | |||
| <t>C programs its forwarding table accordingly:</t> | ||||
| <t>C programs its forwarding table accordingly:<figure | ||||
| suppress-title="true"> | ||||
| <artwork>Incoming Outgoing | ||||
| Label Operation Interface | ||||
| 1012 POP link to D | ||||
| 1022 POP link to E | ||||
| 1032 POP upper link to F | ||||
| 1042 POP lower link to F | ||||
| 1052 POP load balance on any link to F | ||||
| 1060 POP load balance on any link to E or to F | ||||
| </artwork> | ||||
| </figure></t> | ||||
| <t>C signals the related BGP-LS NLRI’s 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="I-D.ietf-idr-bgpls-segment-routing-epe"/>.</t> | ||||
| <section anchor="PEERNODED" title="PeerNode SID to D"> | ||||
| <t>Descriptors: <list style="symbols"> | ||||
| <t>Local Node Descriptors (BGP router-ID, ASN, BGP-LS Identifier): | ||||
| 192.0.2.3, AS1, 1000</t> | ||||
| <t>Remote Node Descriptors (BGP router-ID, ASN): 192.0.2.4, | <table anchor="c-table"> | |||
| AS2</t> | ||||
| <t>Link Descriptors (IPv6 Interface Address, IPv6 Neighbor | <thead> | |||
| Address): 2001:db8:cd::c, 2001:db8:cd::d</t> | <tr> | |||
| </list></t> | <th>Incoming Label</th> | |||
| <th>Operation</th> | ||||
| <th>Outgoing Interface</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td>1012</td> | ||||
| <td>POP</td> | ||||
| <td>link to D</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>1022</td> | ||||
| <td>POP</td> | ||||
| <td>link to E</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>1032</td> | ||||
| <td>POP</td> | ||||
| <td>upper link to F</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>1042</td> | ||||
| <td>POP</td> | ||||
| <td>lower link to F</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>1052</td> | ||||
| <td>POP</td> | ||||
| <td>load balance on any link to F</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>1060</td> | ||||
| <td>POP</td> | ||||
| <td>load balance on any link to E or to F</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t>Attributes: <list style="symbols"> | <t>C signals each related BGP-LS instance of Network Layer Reachability | |||
| <t>PeerNode SID: 1012</t> | Information (NLRI) to the BGP-EPE controller. Each such BGP-LS route is | |||
| </list></t> | described in the following subsections according to the encoding details | |||
| defined in <xref target="RFC9086" format="default"/>.</t> | ||||
| <section anchor="PEERNODED" numbered="true" toc="default"> | ||||
| <name>PeerNode SID to D</name> | ||||
| <t>Descriptors: </t> | ||||
| <ul spacing="normal"> | ||||
| <li>Local Node Descriptors (BGP router-ID, ASN, BGP-LS Identifier): | ||||
| 192.0.2.3, AS1, 1000</li> | ||||
| <li>Remote Node Descriptors (BGP router-ID, ASN): 192.0.2.4, | ||||
| AS2</li> | ||||
| <li>Link Descriptors (IPv6 Interface Address, IPv6 Neighbor | ||||
| Address): 2001:db8:cd::c, 2001:db8:cd::d</li> | ||||
| </ul> | ||||
| <t>Attributes: </t> | ||||
| <ul spacing="normal"> | ||||
| <li>PeerNode SID: 1012</li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="PEERNODEE" numbered="true" toc="default"> | ||||
| <section anchor="PEERNODEE" title="PeerNode SID to E"> | <name>PeerNode SID to E</name> | |||
| <t>Descriptors: <list style="symbols"> | <t>Descriptors: </t> | |||
| <t>Local Node Descriptors (BGP router-ID, ASN, BGP-LS | <ul spacing="normal"> | |||
| Identifier)): 192.0.2.3, AS1, 1000</t> | <li>Local Node Descriptors (BGP router-ID, ASN, BGP-LS | |||
| Identifier): 192.0.2.3, AS1, 1000</li> | ||||
| <t>Remote Node Descriptors (BGP router-ID, ASN): 192.0.2.5, | <li>Remote Node Descriptors (BGP router-ID, ASN): 192.0.2.5, | |||
| AS3</t> | AS3</li> | |||
| <li>Link Descriptors (IPv6 Interface Address, IPv6 Neighbor | ||||
| <t>Link Descriptors (IPv6 Interface Address, IPv6 Neighbor | Address): 2001:db8:ce::c, 2001:db8:ce::e</li> | |||
| Address): 2001:db8:ce::c, 2001:db8:ce::e</t> | </ul> | |||
| </list></t> | <t>Attributes: </t> | |||
| <ul spacing="normal"> | ||||
| <t>Attributes: <list style="symbols"> | <li>PeerNode SID: 1022</li> | |||
| <t>PeerNode SID: 1022</t> | <li>PeerSetSID: 1060</li> | |||
| <li>Link Attributes: see <xref target="RFC7752" sectionFormat="of" | ||||
| <t>PeerSetSID: 1060</t> | section="3.3.2"/></li> | |||
| </ul> | ||||
| <t>Link Attributes: see section 3.3.2 of <xref | ||||
| target="RFC7752"/></t> | ||||
| </list></t> | ||||
| </section> | </section> | |||
| <section anchor="PEERNODEF" numbered="true" toc="default"> | ||||
| <section anchor="PEERNODEF" title="PeerNode SID to F"> | <name>PeerNode SID to F</name> | |||
| <t>Descriptors: <list style="symbols"> | <t>Descriptors: </t> | |||
| <t>Local Node Descriptors (BGP router-ID, ASN, BGP-LS | <ul spacing="normal"> | |||
| Identifier)): 192.0.2.3, AS1, 1000</t> | <li>Local Node Descriptors (BGP router-ID, ASN, BGP-LS | |||
| Identifier): 192.0.2.3, AS1, 1000</li> | ||||
| <t>Remote Node Descriptors (BGP router-ID, ASN): 192.0.2.6, | <li>Remote Node Descriptors (BGP router-ID, ASN): 192.0.2.6, | |||
| AS3</t> | AS3</li> | |||
| <li>Link Descriptors (IPv6 Interface Address, IPv6 Neighbor | ||||
| <t>Link Descriptors (IPv6 Interface Address, IPv6 Neighbor | Address): 2001:db8:c::c, 2001:db8:f::f</li> | |||
| Address): 2001:db8:c::c, 2001:db8:f::f</t> | </ul> | |||
| </list></t> | <t>Attributes: </t> | |||
| <ul spacing="normal"> | ||||
| <t>Attributes: <list style="symbols"> | <li>PeerNode SID: 1052</li> | |||
| <t>PeerNode SID: 1052</t> | <li>PeerSetSID: 1060</li> | |||
| </ul> | ||||
| <t>PeerSetSID: 1060</t> | ||||
| </list></t> | ||||
| </section> | </section> | |||
| <section anchor="PEERNODEFLINK1" numbered="true" toc="default"> | ||||
| <section anchor="PEERNODEFLINK1" title="First PeerAdj to F"> | <name>First PeerAdj to F</name> | |||
| <t>Descriptors: <list style="symbols"> | <t>Descriptors: </t> | |||
| <t>Local Node Descriptors (BGP router-ID, ASN, BGP-LS | <ul spacing="normal"> | |||
| Identifier)): 192.0.2.3, AS1, 1000</t> | <li>Local Node Descriptors (BGP router-ID, ASN, BGP-LS | |||
| Identifier): 192.0.2.3, AS1, 1000</li> | ||||
| <t>Remote Node Descriptors (BGP router-ID, ASN): 192.0.2.6, | <li>Remote Node Descriptors (BGP router-ID, ASN): 192.0.2.6, | |||
| AS3</t> | AS3</li> | |||
| <li>Link Descriptors (IPv6 Interface Address, IPv6 Neighbor | ||||
| <t>Link Descriptors (IPv6 Interface Address, IPv6 Neighbor | Address): 2001:db8:cf1::c, 2001:db8:cf1::f</li> | |||
| Address): 2001:db8:cf1::c, 2001:db8:cf1::f</t> | </ul> | |||
| </list></t> | <t>Attributes: </t> | |||
| <ul spacing="normal"> | ||||
| <t>Attributes: <list style="symbols"> | <li>PeerAdj-SID: 1032</li> | |||
| <t>PeerAdj-SID: 1032</t> | <li>Link Attributes: see <xref target="RFC7752" | |||
| sectionFormat="of" section="3.3.2"/></li> | ||||
| <t>LinkAttributes: see section 3.3.2 of <xref | </ul> | |||
| target="RFC7752"/></t> | ||||
| </list></t> | ||||
| </section> | </section> | |||
| <section anchor="PEERNODEFLINK2" numbered="true" toc="default"> | ||||
| <name>Second PeerAdj to F</name> | ||||
| <t>Descriptors: </t> | ||||
| <section anchor="PEERNODEFLINK2" title="Second PeerAdj to F"> | <ul spacing="normal"> | |||
| <t>Descriptors: <list style="symbols"> | <li>Local Node Descriptors (BGP router-ID, ASN, BGP-LS | |||
| <t>Local Node Descriptors (BGP router-ID, ASN, BGP-LS | Identifier): 192.0.2.3 , AS1, 1000</li> | |||
| Identifier)): 192.0.2.3 , AS1</t> | <li>Remote Node Descriptors (peer router-ID, peer ASN): 192.0.2.6, | |||
| AS3</li> | ||||
| <t>Remote Node Descriptors (peer router-ID, peer ASN): 192.0.2.6, | <li>Link Descriptors (IPv6 Interface Address, IPv6 Neighbor | |||
| AS3</t> | Address): 2001:db8:cf2::c, 2001:db8:cf2::f</li> | |||
| </ul> | ||||
| <t>Link Descriptors (IPv6 Interface Address, IPv6 Neighbor | <t>Attributes: </t> | |||
| Address): 2001:db8:cf2::c, 2001:db8:cf2::f</t> | <ul spacing="normal"> | |||
| </list></t> | <li>PeerAdj-SID: 1042</li> | |||
| <li>Link Attributes: see <xref target="RFC7752" sectionFormat="of" | ||||
| <t>Attributes: <list style="symbols"> | section="3.3.2"/></li> | |||
| <t>PeerAdj-SID: 1042</t> | </ul> | |||
| <t>LinkAttributes: see section 3.3.2 of <xref | ||||
| target="RFC7752"/></t> | ||||
| </list></t> | ||||
| </section> | </section> | |||
| <section anchor="FRR" numbered="true" toc="default"> | ||||
| <section anchor="FRR" title="Fast Reroute (FRR)"> | <name>Fast Reroute (FRR)</name> | |||
| <t>A BGP-EPE enabled border router MAY allocate a FRR backup entry on | <t>A BGP-EPE-enabled border router <bcp14>MAY</bcp14> allocate an FRR ba | |||
| a per BGP Peering SID basis. One example is as follows:<list | ckup entry on | |||
| style="symbols"> | a per-BGP-Peering-SID basis. One example is as follows:</t> | |||
| <t>PeerNode SID<list style="numbers"> | <ul spacing="normal"> | |||
| <t>If multi-hop, backup via the remaining PeerADJ SIDs (if | <li> | |||
| available) to the same peer.</t> | <t>PeerNode SID</t> | |||
| <ol spacing="normal" type="1"> | ||||
| <t>Else backup via another PeerNode SID to the same AS.</t> | <li>If multi-hop, back up via the remaining PeerADJ SIDs (if | |||
| available) to the same peer.</li> | ||||
| <t>Else pop the PeerNode SID and perform an IP lookup.</t> | <li>Else, back up via another PeerNode SID to the same AS.</li> | |||
| </list></t> | <li>Else, pop the PeerNode SID and perform an IP lookup.</li> | |||
| </ol> | ||||
| <t>PeerAdj SID<list style="numbers"> | </li> | |||
| <t>If to a multi-hop peer, backup via the remaining PeerADJ | <li> | |||
| SIDs (if available) to the same peer.</t> | <t>PeerAdj SID</t> | |||
| <ol spacing="normal" type="1"> | ||||
| <t>Else backup via a PeerNode SID to the same AS.</t> | <li>If to a multi-hop peer, back up via the remaining PeerADJ | |||
| SIDs (if available) to the same peer.</li> | ||||
| <t>Else pop the PeerNode SID and perform an IP lookup.</t> | <li>Else, back up via a PeerNode SID to the same AS.</li> | |||
| </list></t> | <li>Else, pop the PeerNode SID and perform an IP lookup.</li> | |||
| </ol> | ||||
| <t>PeerSet SID<list style="numbers"> | </li> | |||
| <t>Backup via remaining PeerNode SIDs in the same PeerSet.</t> | <li> | |||
| <t>PeerSet SID</t> | ||||
| <t>Else pop the PeerNode SID and IP lookup.</t> | <ol spacing="normal" type="1"> | |||
| </list></t> | <li>Back up via remaining PeerNode SIDs in the same PeerSet.</li> | |||
| </list></t> | <li>Else, pop the PeerNode SID and IP lookup.</li> | |||
| </ol> | ||||
| </li> | ||||
| </ul> | ||||
| <t>Let's illustrate different types of possible backups using the | <t>Let's illustrate different types of possible backups using the | |||
| reference diagram and considering the Peering SIDs allocated by C.</t> | reference diagram and considering the Peering SIDs allocated by C.</t> | |||
| <t>PeerNode SID 1052, allocated by C for peer F:</t> | ||||
| <t>PeerNode SID 1052, allocated by C for peer F:<list style="symbols"> | <ul spacing="normal"> | |||
| <t>Upon the failure of the upper connected link CF, C can reroute | <li>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).</t> | all the traffic onto the lower CF link to the same peer (F).</li> | |||
| </list></t> | </ul> | |||
| <t>PeerNode SID 1022, allocated by C for peer E:</t> | ||||
| <t>PeerNode SID 1022, allocated by C for peer E:<list style="symbols"> | <ul spacing="normal"> | |||
| <t>Upon the failure of the connected link CE, C can reroute all | <li>Upon the failure of the connected link CE, C can reroute all | |||
| the traffic onto the link to PeerNode SID 1052 (F).</t> | the traffic onto the link to PeerNode SID 1052 (F).</li> | |||
| </list></t> | </ul> | |||
| <t>PeerNode SID 1012, allocated by C for peer D:</t> | ||||
| <t>PeerNode SID 1012, allocated by C for peer D:<list style="symbols"> | <ul spacing="normal"> | |||
| <t>Upon the failure of the connected link CD, C can pop the | <li>Upon the failure of the connected link CD, C can pop the | |||
| PeerNode SID and lookup the IP destination address in its FIB and | PeerNode SID and look up the IP destination address in its FIB and | |||
| route accordingly.</t> | route accordingly.</li> | |||
| </list></t> | </ul> | |||
| <t>PeerSet SID 1060, allocated by C for the set of peers E and F:</t> | ||||
| <t>PeerSet SID 1060, allocated by C for the set of peers E and F:<list | <ul spacing="normal"> | |||
| style="symbols"> | <li>Upon the failure of a connected link in the group, the traffic | |||
| <t>Upon the failure of a connected link in the group, the traffic | ||||
| to PeerSet SID 1060 is rerouted on any other member of the | to PeerSet SID 1060 is rerouted on any other member of the | |||
| group.</t> | group.</li> | |||
| </list></t> | </ul> | |||
| <t>For specific business reasons, the operator might not want the | <t>For specific business reasons, the operator might not want the | |||
| default FRR behavior applied to a PeerNode SID or any of its dependent | default FRR behavior applied to a PeerNode SID or any of its dependent | |||
| PeerADJ SID.</t> | PeerADJ SIDs.</t> | |||
| <t>The operator should be able to associate a specific backup PeerNode | <t>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) | SID for a PeerNode SID; e.g., 1022 (E) must be backed up by 1012 (D), | |||
| which overrules the default behavior which would have preferred F as a | which overrules the default behavior that would have preferred F as a | |||
| backup for E.</t> | backup for E.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="BGPPECTRL" numbered="true" toc="default"> | ||||
| <section anchor="BGPPECTRL" title="BGP-EPE Controller"> | <name>BGP-EPE Controller</name> | |||
| <t>In this section, Let's provide a non-exhaustive set of inputs that a | <t>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 | BGP-EPE controller would likely collect such as to perform the BGP-EPE | |||
| policy decision.</t> | policy decision.</t> | |||
| <t>The exhaustive definition is outside the scope of this document.</t> | <t>The exhaustive definition is outside the scope of this document.</t> | |||
| <section anchor="PATHSFROMPEERS" numbered="true" toc="default"> | ||||
| <section anchor="PATHSFROMPEERS" title="Valid Paths From Peers"> | <name>Valid Paths from Peers</name> | |||
| <t>The BGP-EPE controller should collect all the BGP paths (i.e.: IP | <t>The BGP-EPE controller should collect all the BGP paths (i.e., IP | |||
| destination prefixes) advertised by all the BGP-EPE enabled border | destination prefixes) advertised by all the BGP-EPE-enabled border | |||
| router.</t> | routers.</t> | |||
| <t>This could be realized by setting an iBGP session with the | ||||
| <t>This could be realized by setting an iBGP session with the BGP-EPE | BGP-EPE-enabled border router, with the router configured to advertise | |||
| enabled border router, with the router configured to advertise all | all paths using BGP ADD-PATH <xref target="RFC7911" format="default"/> | |||
| paths using BGP add-path <xref target="RFC7911"/> and the original | and the original next hop preserved.</t> | |||
| next-hop preserved.</t> | ||||
| <t>In this case, C would advertise the following Internet routes to | <t>In this case, C would advertise the following Internet routes to | |||
| the BGP-EPE controller:<list style="symbols"> | the BGP-EPE controller:</t> | |||
| <t>NLRI <2001:db8:abcd::/48>, next-hop 2001:db8:cd::d, AS | <ul spacing="normal"> | |||
| Path {AS 2, 4}<list> | <li> | |||
| <t>X (i.e.: the BGP-EPE controller) knows that C receives a | <t>NLRI <2001:db8:abcd::/48>, next hop 2001:db8:cd::d, AS | |||
| Path {AS 2, 4}</t> | ||||
| <ul spacing="normal"> | ||||
| <li>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 | path to 2001:db8:abcd::/48 via neighbor 2001:db8:cd::d of | |||
| AS2.</t> | AS2.</li> | |||
| </list></t> | </ul> | |||
| </li> | ||||
| <t>NLRI <2001:db8:abcd::/48>, next-hop 2001:db8:ce::e, AS | <li> | |||
| Path {AS 3, 4}<list> | <t>NLRI <2001:db8:abcd::/48>, next hop 2001:db8:ce::e, AS | |||
| <t>X knows that C receives a path to 2001:db8:abcd::/48 via | Path {AS 3, 4}</t> | |||
| neighbor 2001:db8:ce::e of AS2.</t> | <ul spacing="normal"> | |||
| </list></t> | <li>X knows that C receives a path to 2001:db8:abcd::/48 via | |||
| neighbor 2001:db8:ce::e of AS2.</li> | ||||
| <t>NLRI <2001:db8:abcd::/48>, next-hop 2001:db8:f::f, AS | </ul> | |||
| Path {AS 3, 4} <list> | </li> | |||
| <t>X knows that C has an eBGP path to 2001:db8:abcd::/48 via | <li> | |||
| AS3 via neighbor 2001:db8:f::f</t> | <t>NLRI <2001:db8:abcd::/48>, next hop 2001:db8:f::f, AS | |||
| </list></t> | Path {AS 3, 4} </t> | |||
| </list></t> | <ul spacing="normal"> | |||
| <li>X knows that C has an eBGP path to 2001:db8:abcd::/48 via | ||||
| <t>An alternative option would be for a BGP-EPE collector to use BGP | AS3 via neighbor 2001:db8:f::f.</li> | |||
| Monitoring Protocol (BMP) <xref target="RFC7854"/> to track the | </ul> | |||
| Adj-RIB-In of BGP-EPE enabled border routers.</t> | </li> | |||
| </ul> | ||||
| <t>An alternative option would be for a BGP-EPE collector to use the | ||||
| BGP Monitoring Protocol (BMP) <xref target="RFC7854" | ||||
| format="default"/> to track the Adj-RIB-In of BGP-EPE-enabled border | ||||
| routers.</t> | ||||
| </section> | </section> | |||
| <section anchor="INTRATOPO" numbered="true" toc="default"> | ||||
| <section anchor="INTRATOPO" title="Intra-Domain Topology"> | <name>Intra-Domain Topology</name> | |||
| <t>The BGP-EPE controller should collect the internal topology and the | <t>The BGP-EPE controller should collect the internal topology and the | |||
| related IGP SIDs.</t> | related IGP SIDs.</t> | |||
| <t>This could be realized by collecting the IGP Link-State Database | ||||
| <t>This could be realized by collecting the IGP LSDB of each area or | (LSDB) of each area or running a BGP-LS session with a node in each | |||
| running a BGP-LS session with a node in each IGP area.</t> | IGP area.</t> | |||
| </section> | </section> | |||
| <section anchor="EXTRATOPO" numbered="true" toc="default"> | ||||
| <name>External Topology</name> | ||||
| <section anchor="EXTRATOPO" title="External Topology"> | <t>Thanks to the collected BGP-LS routes described in <xref | |||
| <t>Thanks to the collected BGP-LS routes described in section 2, the | target="TOPOBGPLS"/>, the BGP-EPE controller is able to maintain an | |||
| BGP-EPE controller is able to maintain an accurate description of the | accurate description of the egress topology of Node C. Furthermore, | |||
| egress topology of node C. Furthermore, the BGP-EPE controller is able | the BGP-EPE controller is able to associate BGP Peering SIDs to the | |||
| to associate BGP Peering SIDs to the various components of the | various components of the external topology.</t> | |||
| external topology.</t> | ||||
| </section> | </section> | |||
| <section anchor="SLA" numbered="true" toc="default"> | ||||
| <name>SLA Characteristics of Each Peer</name> | ||||
| <section anchor="SLA" title="SLA characteristics of each peer"> | <t>The BGP-EPE controller might collect Service Level Agreement (SLA) | |||
| <t>The BGP-EPE controller might collect SLA characteristics across | characteristics across peers. This requires a BGP-EPE solution, as the | |||
| peers. This requires an BGP-EPE solution as the SLA probes need to be | SLA probes need to be steered via non-best-path peers.</t> | |||
| steered via non-best-path peers.</t> | ||||
| <t>Unidirectional SLA monitoring of the desired path is likely | <t>Unidirectional SLA monitoring of the desired path is likely | |||
| required. This might be possible when the application is controlled at | required. This might be possible when the application is controlled at | |||
| the source and the receiver side. Unidirectional monitoring | the source and the receiver side. Unidirectional monitoring | |||
| dissociates the SLA characteristic of the return path (which cannot | dissociates the SLA characteristic of the return path (which cannot | |||
| usually be controlled) from the forward path (the one of interest for | usually be controlled) from the forward path (the one of interest for | |||
| pushing content from a source to a consumer and the one which can be | pushing content from a source to a consumer and the one that can be | |||
| controlled).</t> | controlled).</t> | |||
| <t>Alternatively, Extended Metrics, as defined in <xref | <t>Alternatively, Metric Extensions, as defined in <xref target="RFC8570 | |||
| target="RFC7810"/> could also be advertised using BGP-LS (<xref | " format="default"/>, could also be advertised using BGP-LS <xref target="RFC857 | |||
| target="I-D.ietf-idr-te-pm-bgp"/>).</t> | 1" format="default"/>.</t> | |||
| </section> | </section> | |||
| <section anchor="MATRIX" title="Traffic Matrix"> | <section anchor="MATRIX" numbered="true" toc="default"> | |||
| <name>Traffic Matrix</name> | ||||
| <t>The BGP-EPE controller might collect the traffic matrix to its | <t>The BGP-EPE controller might collect the traffic matrix to its | |||
| peers or the final destinations. IPFIX <xref target="RFC7011"/> is a | peers or the final destinations. IP Flow Information Export (IPFIX) | |||
| likely option.</t> | <xref target="RFC7011" format="default"/> is a likely option.</t> | |||
| <t>An alternative option consists of collecting the link utilization | ||||
| <t>An alternative option consists in collecting the link utilization | ||||
| statistics of each of the internal and external links, also available | statistics of each of the internal and external links, also available | |||
| in the current definition of <xref target="RFC7752"/>.</t> | in the current definition in <xref target="RFC7752" format="default"/>.< /t> | |||
| </section> | </section> | |||
| <section anchor="BUSINESS" title="Business Policies"> | <section anchor="BUSINESS" numbered="true" toc="default"> | |||
| <name>Business Policies</name> | ||||
| <t>The BGP-EPE controller should be configured or collect business | <t>The BGP-EPE controller should be configured or collect business | |||
| policies through any desired mechanisms. These mechanisms by which | policies through any desired mechanisms. These mechanisms by which | |||
| these policies are configured or collected are outside the scope of | these policies are configured or collected are outside the scope of | |||
| this document.</t> | this document.</t> | |||
| </section> | </section> | |||
| <section anchor="BGPPOLICY" numbered="true" toc="default"> | ||||
| <section anchor="BGPPOLICY" title="BGP-EPE Policy"> | <name>BGP-EPE Policy</name> | |||
| <t>On the basis of all these inputs (and likely others), the BGP-EPE | <t>On the basis of all these inputs (and likely others), the BGP-EPE | |||
| Controller decides to steer some demands away from their best BGP | controller decides to steer some demands away from their best BGP | |||
| path.</t> | path.</t> | |||
| <t>The BGP-EPE policy is likely expressed as a two-entry segment list | <t>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 | 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 | border router and the second element is a BGP Peering SID at the | |||
| selected egress border router.</t> | selected egress border router.</t> | |||
| <t>A few examples are provided hereafter:</t> | ||||
| <t>A few examples are provided hereafter:<list style="symbols"> | <ul spacing="normal"> | |||
| <t>Prefer egress PE C and peer AS AS2: {64, 1012}. "64" being the | <li>Prefer egress PE C and peer AS AS2: {64, 1012}. "64" being the | |||
| SID of PE C as defined in <xref target="PROBSTATE"/>.</t> | SID of PE C as defined in <xref target="PROBSTATE" format="default"/ | |||
| >.</li> | ||||
| <t>Prefer egress PE C and peer AS AS3 via eBGP peer | <li>Prefer egress PE C and peer AS AS3 via eBGP peer | |||
| 2001:db8:ce::e, {64, 1022}.</t> | 2001:db8:ce::e, {64, 1022}.</li> | |||
| <li>Prefer egress PE C and peer AS AS3 via eBGP peer 2001:db8:f::f, | ||||
| <t>Prefer egress PE C and peer AS AS3 via eBGP peer 2001:db8:f::f, | {64, 1052}.</li> | |||
| {64, 1052}.</t> | <li>Prefer egress PE C and peer AS AS3 via interface | |||
| <t>Prefer egress PE C and peer AS AS3 via interface | ||||
| 2001:db8:cf2::f of multi-hop eBGP peer 2001:db8:f::f, {64, | 2001:db8:cf2::f of multi-hop eBGP peer 2001:db8:f::f, {64, | |||
| 1042}.</t> | 1042}.</li> | |||
| <li>Prefer egress PE C and any interface to any peer in the group | ||||
| <t>Prefer egress PE C and any interface to any peer in the group | 1060: {64, 1060}.</li> | |||
| 1060: {64, 1060}.</t> | </ul> | |||
| </list></t> | ||||
| <t>Note that the first SID could be replaced by a list of segments. | <t>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 | 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 | 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 | 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 | A to C via B then through the external link to peer D, then the segment | |||
| list would be {60, 64, 1012}.</t> | list would be {60, 64, 1012}.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="PROGRINPUTPOL" title="Programming an input policy"> | <section anchor="PROGRINPUTPOL" numbered="true" toc="default"> | |||
| <t>The detailed/exhaustive description of all the means to implement an | <name>Programming an Input Policy</name> | |||
| <t>The detailed/exhaustive description of all the means to implement a | ||||
| BGP-EPE policy are outside the scope of this document. A few examples | BGP-EPE policy are outside the scope of this document. A few examples | |||
| are provided in this section.</t> | are provided in this section.</t> | |||
| <section anchor="ATHOST" numbered="true" toc="default"> | ||||
| <name>At a Host</name> | ||||
| <section anchor="ATHOST" title="At a Host"> | ||||
| <t>A static IP/MPLS route can be programmed at the host H. The static | <t>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 | route would define a destination prefix, a next hop, and a label stack | |||
| to push. Assuming a global SRGB, at least on all access routers | to push. Assuming the same Segment Routing Global Block (SRGB), at | |||
| connecting the hosts, the same policy can be programmed across all | least on all access routers connecting the hosts, the same policy can | |||
| hosts, which is convenient.</t> | be programmed across all hosts, which is convenient.</t> | |||
| </section> | </section> | |||
| <section anchor="ATROUTER" numbered="true" toc="default"> | ||||
| <section anchor="ATROUTER" | <name>At a Router - SR Traffic-Engineering Tunnel</name> | |||
| title="At a router – SR Traffic Engineering tunnel"> | ||||
| <t>The BGP-EPE controller can configure the ingress border router with | <t>The BGP-EPE controller can configure the ingress border router with | |||
| an SR traffic engineering tunnel T1 and a steering-policy S1 which | 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> | causes a certain class of traffic to be mapped on the tunnel T1.</t> | |||
| <t>The tunnel T1 would be configured to push the required segment | <t>The tunnel T1 would be configured to push the required segment | |||
| list.</t> | list.</t> | |||
| <t>The tunnel and the steering policy could be configured via multiple | <t>The tunnel and the steering policy could be configured via multiple | |||
| means. A few examples are given below:<list style="symbols"> | means. A few examples are given below:</t> | |||
| <t>PCEP according to <xref target="I-D.ietf-pce-segment-routing"/> | <ul spacing="normal"> | |||
| and <xref target="I-D.ietf-pce-pce-initiated-lsp"/>.</t> | <li>The Path Computation Element Communication Protocol (PCEP) accordi | |||
| ng | ||||
| <t>Netconf (<xref target="RFC6241"/>).</t> | to <xref target="RFC8664" format="default"/> and <xref | |||
| target="RFC8281" format="default"/></li> | ||||
| <t>Other static or ephemeral APIs</t> | <li>NETCONF <xref target="RFC6241" format="default"/></li> | |||
| </list></t> | <li>Other static or ephemeral APIs</li> | |||
| </ul> | ||||
| <t>Example: at router A (<xref target="REFDIAGRAMFIG"/>).<figure | <t>Example: at router A (<xref target="REFDIAGRAMFIG" format="default"/> | |||
| align="left" suppress-title="true"> | ).</t> | |||
| <artwork align="center"> | <sourcecode> | |||
| Tunnel T1: push {64, 1042} | Tunnel T1: push {64, 1042} | |||
| IP route L/8 set next-hop T1 | IP route L/8 set next-hop T1 | |||
| </artwork> | </sourcecode> | |||
| </figure></t> | ||||
| </section> | </section> | |||
| <section anchor="ATROUTER8277" | <section anchor="ATROUTER8277" numbered="true" toc="default"> | |||
| title="At a Router – BGP Labeled Unicast route (RFC8277)"> | <name>At a Router - Unicast Route Labeled Using BGP (RFC 8277)</name> | |||
| <t>The BGP-EPE Controller could build a BGP Labeled Unicast route | ||||
| <xref target="RFC8277"/>) route (from scratch) and send it to the | ||||
| ingress router:<list style="symbols"> | ||||
| <t>NLRI: the destination prefix to engineer: e.g., L/8.</t> | ||||
| <t>Next-Hop: the selected egress border router: C.</t> | <t>The BGP-EPE controller could build a unicast route labeled using BGP | |||
| <xref target="RFC8277"/> (from scratch) and send it to the ingress | ||||
| router.</t> | ||||
| <t>Label: the selected egress peer: 1042.</t> | <t>Such a route would require the following:</t> | |||
| <t>AS path: reflecting the selected valid AS path.</t> | <dl newline="true"> | |||
| <t>Some BGP policy to ensure it will be selected as best by the | <dt>NLRI | |||
| ingress router. Note that as discussed in RFC 8277 section 5, the | </dt> | |||
| comparison of labeled and unlabeled unicast BGP route is | <dd>the destination prefix to engineer (e.g., L/8) | |||
| implementation dependent and hence may require an implementation | </dd> | |||
| specific policy on each ingress router.</t> | ||||
| </list></t> | ||||
| <t>This BGP Labeled unicast route (RFC8277) “overwrites” | <dt>Next Hop | |||
| an equivalent or less-specific “best path”. As the | </dt> | |||
| best-path is changed, this BGP-EPE input policy option may influence | <dd>the selected egress border router: C | |||
| </dd> | ||||
| <dt>Label | ||||
| </dt> | ||||
| <dd>the selected egress peer: 1042 | ||||
| </dd> | ||||
| <dt>Autonomous System (AS) path | ||||
| </dt> | ||||
| <dd>the selected valid AS path | ||||
| </dd> | ||||
| </dl> | ||||
| <t> | ||||
| 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"/>, 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>This unicast route labeled using BGP <xref target="RFC8277"/> "overwr | ||||
| ites" | ||||
| 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, | the path propagated to the upstream peer/customers. Indeed, | |||
| implementations treating the SAFI-1 and SAFI-4 routes for a given | 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 | prefix as comparable would trigger a BGP WITHDRAW of the SAFI-1 route | |||
| to their BGP upstream peers.</t> | to their BGP upstream peers.</t> | |||
| </section> | </section> | |||
| <section anchor="ATROUTERVPN" numbered="true" toc="default"> | ||||
| <name>At a Router - VPN Policy Route</name> | ||||
| <t>The BGP-EPE controller could build a VPNv4 route (from scratch) and | ||||
| send it to the ingress router.</t> | ||||
| <section anchor="ATROUTERVPN" | <t>Such a route would require the following:</t> | |||
| title="At a Router – VPN policy route"> | ||||
| <t>The BGP-EPE Controller could build a VPNv4 route (from scratch) and | ||||
| send it to the ingress router:<list style="symbols"> | ||||
| <t>NLRI: the destination prefix to engineer: e.g., L/8.</t> | ||||
| <t>Next-Hop: the selected egress border router: C.</t> | <dl newline="true"> | |||
| <t>Label: the selected egress peer: 1042.</t> | <dt>NLRI | |||
| </dt> | ||||
| <dd>the destination prefix to engineer: e.g., L/8 | ||||
| </dd> | ||||
| <t>Route-Target: selecting the appropriate VRF at the ingress | <dt>Next Hop | |||
| router.</t> | </dt> | |||
| <dd>the selected egress border router: C | ||||
| </dd> | ||||
| <t>AS path: reflecting the selected valid AS path.</t> | <dt>Label | |||
| </dt> | ||||
| <dd>the selected egress peer: 1042 | ||||
| </dd> | ||||
| <t>Some BGP policy to ensure it will be selected as best by the | <dt>Route-Target | |||
| ingress router in the related VRF.</t> | </dt> | |||
| </list></t> | <dd>the selected appropriate VRF instance at the ingress router | |||
| </dd> | ||||
| <t>The related VRF must be preconfigured. A VRF fallback to the main | <dt>AS path | |||
| </dt> | ||||
| <dd>the selected valid AS path | ||||
| </dd> | ||||
| </dl> | ||||
| <t> | ||||
| Some BGP policy to ensure it will be selected as best by the ingress | ||||
| router in the related VRF instance. | ||||
| </t> | ||||
| <t>The related VRF instance must be preconfigured. A VRF fallback to the | ||||
| main | ||||
| FIB might be beneficial to avoid replicating all the "normal" Internet | FIB might be beneficial to avoid replicating all the "normal" Internet | |||
| paths in each VRF.</t> | paths in each VRF instance.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="IPv6" numbered="true" toc="default"> | ||||
| <section anchor="IPv6" title="IPv6 Dataplane"> | <name>IPv6 Data Plane</name> | |||
| <t>The described solution is applicable to IPv6, either with MPLS-based | <t>The described solution is applicable to IPv6, either with MPLS-based | |||
| or IPv6-Native segments. In both cases, the same three steps of the | or IPv6-native segments. In both cases, the same three steps of the | |||
| solution are applicable:<list style="symbols"> | solution are applicable:</t> | |||
| <t>BGP-LS-based signaling of the external topology and BGP Peering | <ul spacing="normal"> | |||
| Segments to the BGP-EPE controller.</t> | <li>BGP-LS-based signaling of the external topology and BGP Peering | |||
| Segments to the BGP-EPE controller.</li> | ||||
| <t>Collection of various inputs by the BGP-EPE controller to come up | ||||
| with a policy decision.</t> | ||||
| <t>Programming at an ingress router or source host of the desired | <li>Collecting, by the BGP-EPE controller, various inputs to come up | |||
| BGP-EPE policy which consists in a list of segments to push on a | with a policy decision.</li> | |||
| defined traffic class.</t> | <li>Programming at an ingress router or source host of the desired | |||
| </list></t> | BGP-EPE policy, which consists of a list of segments to push on a | |||
| defined traffic class.</li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="BENEFITS" numbered="true" toc="default"> | ||||
| <section anchor="BENEFITS" title="Benefits"> | <name>Benefits</name> | |||
| <t>The BGP-EPE solutions described in this document have the following | <t>The BGP-EPE solutions described in this document have the following | |||
| benefits:<list style="symbols"> | benefits:</t> | |||
| <t>No assumption on the iBGP design within AS1.</t> | <ul spacing="normal"> | |||
| <li>No assumption on the iBGP design within AS1.</li> | ||||
| <t>Next-Hop-Self on the Internet routes propagated to the ingress | <li>Next-hop-self on the Internet routes propagated to the ingress | |||
| border routers is possible. This is a common design rule to minimize | 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 number of IGP routes and to avoid importing external churn into | |||
| the internal routing domain.</t> | the internal routing domain.</li> | |||
| <li>Consistent support for traffic engineering within the domain and | ||||
| <t>Consistent support for traffic engineering within the domain and | at the external edge of the domain.</li> | |||
| at the external edge of the domain.</t> | <li>Support for both host and ingress border router BGP-EPE policy | |||
| programming.</li> | ||||
| <t>Support both host and ingress border router BGP-EPE policy | <li>BGP-EPE functionality is only required on the BGP-EPE-enabled | |||
| programming.</t> | egress border router and the BGP-EPE controller; an ingress policy | |||
| <t>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 | can be programmed at the ingress border router without any new | |||
| functionality.</t> | functionality.</li> | |||
| <li>Ability to deploy the same input policy across hosts connected to | ||||
| <t>Ability to deploy the same input policy across hosts connected to | different routers (assuming the global property of IGP | |||
| different routers (assuming the global property of IGP prefix | Prefix-SIDs).</li> | |||
| SIDs).</t> | </ul> | |||
| </list></t> | ||||
| </section> | ||||
| <section anchor="IANA" title="IANA Considerations"> | ||||
| <t>This document does not request any IANA allocations.</t> | ||||
| </section> | </section> | |||
| <section anchor="IANA" numbered="true" toc="default"> | ||||
| <section anchor="Manageability" title="Manageability Considerations"> | <name>IANA Considerations</name> | |||
| <t>The BGP-EPE use-case described in this document requires BGP-LS | <t>This document has no IANA actions.</t> | |||
| (<xref target="RFC7752"/>) extensions that are described in <xref | ||||
| target="I-D.ietf-idr-bgpls-segment-routing-epe"/>. The required | ||||
| extensions consists of additional BGP-LS descriptors and TLVs that will | ||||
| follow the same. Manageability functions of BGP-LS, described in <xref | ||||
| target="RFC7752"/> also apply to the extensions required by the EPE | ||||
| use-case.</t> | ||||
| <t>Additional Manageability considerations are described in <xref | ||||
| target="I-D.ietf-idr-bgpls-segment-routing-epe"/>.</t> | ||||
| </section> | </section> | |||
| <section anchor="Manageability" numbered="true" toc="default"> | ||||
| <name>Manageability Considerations</name> | ||||
| <t> | ||||
| The BGP-EPE use case described in this document requires BGP-LS <xref | ||||
| target="RFC7752" format="default"/> extensions that are described in <xref | ||||
| target="RFC9086" format="default"/> and that consists of additional BGP-LS | ||||
| descriptors and TLVs. Manageability functions of BGP-LS, described in <xref | ||||
| target="RFC7752" format="default"/>, also apply to the extensions required by | ||||
| the EPE use case. | ||||
| <section anchor="Security" title="Security Considerations"> | </t> | |||
| <t><xref target="RFC7752"/> defines BGP-LS NLRIs and their associated | ||||
| security aspects.</t> | ||||
| <t><xref target="I-D.ietf-idr-bgpls-segment-routing-epe"/> defines the | <t>Additional manageability considerations are described in <xref target=" | |||
| BGP-LS extensions required by the BGP-EPE mechanisms described in this | RFC9086" format="default"/>.</t> | |||
| document. BGP-EPE BGP-LS extensions also include the related | ||||
| security.</t> | ||||
| </section> | </section> | |||
| <section anchor="Security" numbered="true" toc="default"> | ||||
| <section anchor="Contributors" title="Contributors"> | <name>Security Considerations</name> | |||
| <t>Daniel Ginsburg substantially contributed to the content of this | <t><xref target="RFC7752" format="default"/> defines BGP-LS NLRI | |||
| document.</t> | instances and their associated security aspects.</t> | |||
| <t><xref target="RFC9086" | ||||
| format="default"/> 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> | </section> | |||
| <section anchor="Acknowledgements" title="Acknowledgements"> | ||||
| <t>The authors would like to thank Acee Lindem for his comments and | ||||
| contribution.</t> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title="Normative References"> | ||||
| <?rfc include="reference.RFC.2119.xml"?> | ||||
| <?rfc include="reference.RFC.7752.xml"?> | <references> | |||
| <name>References</name> | ||||
| <references> | ||||
| <name>Normative References</name> | ||||
| <?rfc include="reference.I-D.ietf-idr-bgpls-segment-routing-epe.xml"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119. | |||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7752. | ||||
| xml"/> | ||||
| <?rfc include="reference.I-D.ietf-spring-segment-routing.xml"?> | <reference anchor="RFC9086" target="https://www.rfc-editor.org/info/rfc9086"> | |||
| </references> | <front> | |||
| <title>Border Gateway Protocol - Link State (BGP-LS) Extensions for Segmen | ||||
| t Routing BGP Egress Peer Engineering</title> | ||||
| <author initials="S." surname="Previdi" fullname="Stefano Previdi"> | ||||
| <organization>Individual</organization> | ||||
| </author> | ||||
| <author initials="K." surname="Talaulikar" fullname="Ketan Talaulikar" rol | ||||
| e="editor"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Filsfils" fullname="Clarence Filsfils"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="K." surname="Patel" fullname="Keyur Patel"> | ||||
| <organization>Arrcus, Inc.</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Ray" fullname="Saikat Ray"> | ||||
| <organization>Individual Contributor</organization> | ||||
| </author> | ||||
| <author initials="J." surname="Dong" fullname="Jie Dong"> | ||||
| <organization>Huawei Technologies</organization> | ||||
| </author> | ||||
| <date month="August" year="2021" /> | ||||
| <references title="Informative References"> | </front> | |||
| <?rfc include="reference.RFC.7855.xml"?> | <seriesInfo name="RFC" value="9086"/> | |||
| <seriesInfo name="DOI" value="10.17487/RFC9086"/> | ||||
| </reference> | ||||
| <?rfc include="reference.RFC.7911.xml"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8402. xml"/> | |||
| <?rfc include="reference.RFC.7810.xml"?> | </references> | |||
| <references> | ||||
| <name>Informative References</name> | ||||
| <?rfc include="reference.RFC.7854.xml"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7855. | |||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7911. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8570. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7854. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7011. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6241. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8277. | ||||
| xml"/> | ||||
| <?rfc include="reference.RFC.7011.xml"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8664. xml"/> | |||
| <?rfc include="reference.RFC.6241.xml"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8281. xml"/> | |||
| <?rfc include="reference.RFC.8277.xml"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8571. | |||
| xml"/> | ||||
| </references> | ||||
| </references> | ||||
| <?rfc include="reference.I-D.ietf-pce-segment-routing.xml"?> | <section anchor="Acknowledgements" numbered="false" toc="default"> | |||
| <name>Acknowledgements</name> | ||||
| <t>The authors would like to thank <contact fullname="Acee Lindem"/> for h | ||||
| is comments and | ||||
| contribution.</t> | ||||
| </section> | ||||
| <?rfc include="reference.I-D.ietf-pce-pce-initiated-lsp.xml"?> | <section anchor="Contributors" numbered="false" toc="default"> | |||
| <name>Contributors</name> | ||||
| <t><contact fullname="Daniel Ginsburg"/> substantially contributed to the | ||||
| content of this | ||||
| document.</t> | ||||
| </section> | ||||
| <?rfc include="reference.I-D.ietf-idr-te-pm-bgp.xml"?> | ||||
| </references> | ||||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 158 change blocks. | ||||
| 611 lines changed or deleted | 701 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||