<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3277 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3277.xml">
<!ENTITY RFC3719 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3719.xml">
<!ENTITY RFC4271 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4271.xml">
<!ENTITY RFC5301 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5301.xml">
<!ENTITY RFC5303 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5303.xml">
<!ENTITY RFC5304 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5304.xml">
<!ENTITY RFC5305 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5305.xml">
<!ENTITY RFC5308 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5308.xml">
<!ENTITY RFC5311 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5311.xml">
<!ENTITY RFC5316 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5316.xml">
<!ENTITY RFC5440 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5440.xml">
<!ENTITY RFC5449 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5449.xml">
<!ENTITY RFC5614 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5614.xml">
<!ENTITY RFC6232 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6232.xml">
<!ENTITY RFC7182 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7182.xml">
<!ENTITY RFC7356 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7356.xml">
<!ENTITY RFC7921 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7921.xml">
<!ENTITY RFC7981 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7981.xml">
]>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="info" docName="draft-white-openfabric-02" ipr="trust200902">

<!-- ***** FRONT MATTER ***** -->

<front>

<title>Openfabric</title>

<author initials='R.' surname='White' fullname='Russ White' role='editor'>
<organization>LinkedIn</organization>
<address>
<email>russ@riw.us</email>
</address>
</author>

<author initials='S.' surname='Zandi' fullname='Shawn Zandi' role='editor'>
<organization>LinkedIn</organization>
<address>
<email>szandi@linkedin.com</email>
</address>
</author>

<date/>

<abstract>
<t>Spine and leaf topologies are widely used in hyperscale and cloud scale networks. In most of these networks, configuration is automated, but difficult, and topology information is extracted through broad based connections. Policy is often integrated into the control plane, as well, making configuration, management, and troubleshooting difficult. Openfabric is an adaptation of an existing, widely deployed link state protocol, Intermediate System to Intermediate System (IS-IS) that is designed to:</t>

<t>
<list style="symbols">
<t>Provide a full view of the topology from a single point in the network to simplify operations</t>
<t>Minimize configuration of each router (or switch) in the network</t>
<t>Optimize the operation of IS-IS within a spine and leaf fabric to enable scaling</t>
</list>
</t>

<t>This document begins with an overview of openfabric, including a description of what may be removed from IS-IS to enable scaling. The document then describes an optimized adjacency formation process; an optimized flooding scheme; some thoughts on the operation of openfabric, metrics, and aggregation; and finally a description of the changes to the IS-IS protocol required for openfabric.</t>

</abstract>

</front>

<middle>

<!-- 1 -->
<section title="Introduction" toc="default">

<!-- 2 -->
<section title="Goals" toc="default">

<t>Spine and leaf fabrics are often used in large scale data centers; in this application, they are commonly called a fabric because of their regular structure and predictable forwarding and convergence properties. This document describes modifications to the IS-IS protocol to enable it to run efficiently on a large scale spine and leaf fabric, openfabric. The goals of this control plane are:</t>

<t>
<list style="symbols">
<t>Provide a full view of the topology from a single point in the network to simplify operations</t>
<t>Minimize configuration of each router (or switch) in the network</t>
<t>Optimize the operation of IS-IS within a spine and leaf fabric to enable scaling</t>
</list>
</t>

</section> <!-- end of goals -->

<!-- 2 -->
<section title="Contributors" toc="default">

<t>The following people have contributed to this draft: Nikos Triantafillis (reflected flooding optimization), Ivan Pepelnjak (three stage fabric modifications), Hannes Gredler (do not reflood optimizations), Les Ginsberg (capabilities encoding, circuit local reflooding), Naiming Shen (capabilities encoding, circuit local reflooding), Uma Chunduri (failure mode suggestions, flooding), Nick Russo, and Rodny Molina.</t>

<t>See <xref target="RFC5449" />, <xref target="RFC5614" />, and <xref target="RFC7182" /> for similar solutions in the Mobile Ad Hoc Networking (MANET) solution space.</t>

</section> <!-- end of contributors -->

<!-- 2 -->
<section title="Simplification" toc="default">

<t>In building any scalable system, it is often best to begin by removing what is not needed. In this spirit, openfabric implementations MAY remove the following from IS-IS:</t>

<t>
<list style="symbols">
<t>Multilevel flooding domain support. The modifications described in this document will not work across multiple flooding domains. It is assumed that multiple fabrics will be connected through an Exterior Gateway Protocol (EGP), specifically <xref target="RFC4271">BGP</xref>.</t>
<t>All mutliaccess link processing, including Designated Intermediate Systems (DIS). Spine and leaf fabrics are normally built using only point-to-point links, so multiaccess link processing is not required in openfabric.</t>
<t>External metrics. There is no need for external metrics in large scale spine and leaf fabrics; it is assumed that metrics will be properly configured by the operator to account for the correct order of route preference at any route redistribution point.</t>
<t>Tags and traffic engineering processing. Openfabric is only designed to provide topology and reachability information. It is not designed to provide for traffic engineering, route preference through tags, or other policy mechanisms. It is assumed that all routing policy will be provided through an overlay system which communicates directly with each router in the fabric, such as <xref target="RFC5440">PCEP</xref> or <xref target="RFC7921">I2RS</xref>. Traffic engineering is assumed to be provided through <xref target="I-D.ietf-spring-segment-routing">Segment Routing (SR)</xref>.</t>
</list>
</t>

</section> <!-- end of simplification section -->

<!-- 2 -->
<section title="Additions and Requirements" toc="default">

<t>To create a scalable link state fabric, openfabric includes the following:</t>

<t>
<list style="symbols">
<t>A slightly modified adjacency formation process. This is largely a matter of forming adjacencies in a specific order, rather than forming an adjacency with every discovered neighbor at the same time.</t>
<t>A mechanism for determining which tier within a spine and leaf fabric in which the router is located.</t>
<t>A mechanism that reduces flooding to the minimum possible, while still ensuring complete database synchronization among the routers within the fabric.</t>
<t>New sub-TLVs to carry openfabric specific information; specifically a new IS reachability tier sub-TLV.</t>
</list>
</t>

<t>Openfabric implementations:</t>

<t>
<list style="symbols">
<t>MUST support <xref target="RFC5301" /> and enable hostname advertisement by default if a hostname is configured on the intermediate system.</t>
<t>MUST support <xref target="RFC5311" />, simplified extension of the link state PDU space for IS-IS.</t>
<t>MUST support <xref target="RFC5303" /> and enable three-way handshakes by default.</t>
<t>MUST use TLV type 135 for carrying IPv4 reachability information, as defined in <xref target="RFC5305" />.</t>
<t>MUST use TLV type 236 for carrying IPv6 reachability information, as defined in <xref target="RFC5308" />.</t>
<t>MUST use TLV type 22 for carrying IS reachability information, as defined in <xref target="RFC5305" />.</t>
<t>SHOULD support <xref target="RFC6232" />, purge originator identification for IS-IS.</t>
<t>SHOULD support <xref target="I-D.ietf-spring-segment-routing">Segment Routing (SR).</xref></t>
<t>SHOULD support <xref target="I-D.ietf-isis-segment-routing-extensions" />.</t>
<t>SHOULD support <xref target="RFC3719" />, section 4, hello padding for IS-IS. Variable hello padding SHOULD NOT be used, as data center fabrics are built using high speed links on which padded hellos will have little performance impact.</t>
</list>
</t>

<t>Openfabric implementations MUST NOT be mixed with standard IS-IS implementations in operational deployments. Openfabric and standard IS-IS implementations SHOULD be treated as two separate protocols.</t>

</section> <!-- end of additions -->

<!-- 2 -->
<section title="Sample Network" toc="default">

<t>The following spine and leaf fabric will be used to describe these modifications.</t>

<figure align="center" anchor="router-model">
<artwork align="left"><![CDATA[
+----+ +----+ +----+ +----+ +----+ +----+
| 1A | | 1B | | 1C | | 1D | | 1E | | 1F | (T0)
+----+ +----+ +----+ +----+ +----+ +----+

+----+ +----+ +----+ +----+ +----+ +----+
| 2A | | 2B | | 2C | | 2D | | 2E | | 2F | (T1)
+----+ +----+ +----+ +----+ +----+ +----+

+----+ +----+ +----+ +----+ +----+ +----+
| 3A | | 3B | | 3C | | 3D | | 3E | | 3F | (T2)
+----+ +----+ +----+ +----+ +----+ +----+

+----+ +----+ +----+ +----+ +----+ +----+
| 4A | | 4B | | 4C | | 4D | | 4E | | 4F | (T1)
+----+ +----+ +----+ +----+ +----+ +----+

+----+ +----+ +----+ +----+ +----+ +----+
| 5A | | 5B | | 5C | | 5D | | 5E | | 5F | (T0)
+----+ +----+ +----+ +----+ +----+ +----+
]]></artwork>
</figure>

<t>To reduce confusion (spine and leaf fabrics are difficult to draw in plain text art), this diagram does not contain the connections between devices. The reader should assume that each device in a given layer is connected to every device in the layer above it. For instance:</t>

<t>
<list style="symbols">
<t>5A is connected to 4A, 4B, 4C, 4D, 4E, and 4F</t>
<t>5B is connected to 4A, 4B, 4C, 4D, 4E, and 4F</t>
<t>4A is connected to 3A, 3B, 3C, 3D, 3E, 3F, 5A, 5B, 5C, 5D, 5E, and 5F</t>
<t>4B is connected to 3A, 3B, 3C, 3D, 3E, 3F, 5A, 5B, 5C, 5D, 5E, and 5F</t>
<t>etc.</t>
</list>
</t>

<t>The tiers or stages of the fabric are also marked for easier reference. T0 is assumed to be connected to application servers, or rather they are Top of Rack (ToR) routers. The remaining tiers, T1 and T2, are connected only to the fabric itself.  Note there are no "cross links," or "east west" links in the illustrated fabric. The fabric locality detection mechanism described here will not work if there are cross links running east/west through the fabric. Locality detection may be possible in such a fabric; this is an area for further study.</t>

</section> <!-- end of sample network -->

</section> <!-- End of the introduction section -->

<!-- 1 -->
<section title="Modified Adjacency Formation" toc="default">

<t>While adjacency formation is not considered particularly burdensome in IS-IS, it is still useful to reduce the amount of state transferred across the network when connecting a new router to the fabric. Any such optimization is bound to present a tradeoff between several factors; the mechanism described here increases the amount of time required to form adjacencies slightly in order to reduce the total state carried across the network. The process is:</t>

<t>
<list style="symbols">
<t>An IS connected to the fabric will send hellos on all links.</t>
<t>The IS will only complete the three-way handshake with one newly discovered neighbor; this would normally be the first neighbor which sends the newly connected intermediate system's ID back in the three-way handshake process.</t>
<t>The IS will complete its database exchange with this one newly adjacent neighbor.</t>
<t>Once this process is completed, the IS will continue processing the remaining neighbors as normal.</t>
</list>
</t>

<t>This process allows each IS newly added to the fabric to exchange a full table once; a very minimal amount of information will be transferred with the remaining neighbors to reach full synchronization.</t>

</section> <!-- end of modified adjacency formation -->

<!-- 1 -->
<section title="Determining Location on the Fabric" toc="default">

<t>The tier to which a router is connected is useful to enable autoconfiguration of routers connected to the fabric, and to reduce flooding. This section describes mechanisms for determining the tier at which a router is connected in the fabric in several steps. The first step is to find the Farthest Distance (FD) and the Total Distance (TD), which are useful in this process. To find the FD and TD:</t>

<t>
<list style="symbols">
<t>Calculate a Shortest Path Tree (SPT) for the entire network with all link metrics set to 1; this has the effect of calculating a tree based only on hop count</t>
<t>Find one node that is the farthest from the local node in the resulting tree; call this node F, and the distance to this node FD</t>
<t>Calculate an SPT for the entire network with all link metrics set to 1 from the perspective of F; call this TD</t>
</list>
</t>

<!-- 2 -->
<section title="Determining T0" toc="default">

<t>If FD == TD == 2, this is a three stage fabric; it is not possible to determine the tier at which the local node is located based on any calculation, because the topology is perfectly symmetric. In this case:</t>

<t>
<list style="symbols">
<t>The T0 routers MAY be manually configured to advertise 0x00 in their IS reachability tier sub-TLV, indicating they are at the edge of the fabric (a ToR router).</t>
<t>The T0 routers MAY detect that they are T0 through the presence connected hosts (i.e. through a request for address assignment or some other means). This means of detection may not be reliable in all operational environments, and SHOULD be used with care. If such detection is used, and the router determines it is located at T0, it should advertise 0x00 in its IS reachability tier sub-TLV.</t>
<t>The router MAY examine the IS reachability tier sub-TLV of directly connected neighbors and determine one or more is advertising 0x1 in its IS reachability tier sub-TLVs. This would be the case if the spine routers in a three stage spine and leaf fabric are manually configured to advertise their tier as 0x1.</t>
<t>If there is no way to determine whether or not the local device is in T0 or T1, it MUST advertise 0xFF in its IS reachability tier sub-TLV.</t>
</list>
</t>

<t>If FD == TD, and TD >= 4, this is a greater than three stage fabric; the local device SHOULD advertise 0x00 in its IS reachability tier sub-TLV.</t>

<t>For instance, in the diagram above, 1A would:</t>

<t>
<list style="symbols">
<t>Calculate an SPT with all link metrics set to 1; on this SPT, 5A through 5F would all have a distance of 4</t>
<t>Select one of these nodes as F; assume 5F is chosen as F</t>
<t>Set FD to 4, the distance to 5F</t>
<t>Run SPF from the perspective of 5F with all link metrics set to 1</t>
<t>Set TD to 4, the cost from 5F to 1A</t>
<t>TD - FD == 0, so 1A is at T0, and is a ToR</t>
</list>
</t>

</section> <!-- end of T0 -->

<!-- 2 -->
<section title="Determining T1 and above" toc="default">

<t>If FD == TD == 2, this is a three stage fabric; it is not possible to determine the tier at which the local node is located based on any calculation, because the topology is perfectly symmetric. In this case:</t>

<t>
<list style="symbols">
<t>The T1 routers MAY be manually configured to advertise 0x01 in their IS reachability tier sub-TLV.</t>
<t>The router MAY examine the IS reachability tier sub-TLV of directly connected neighbors and determine that one or more is advertising 0x00 in its IS reachability tier sub-TLVs. This would be the case if the ToR routers in a three stage spine and leaf fabric are manually configured to advertise their tier as 0x00.</t>
<t>If there is no way to determine whether or not the local device is in T0 or T1, it should advertise 0xFF in its IS reachability tier sub-TLV.</t>
</list>
</t>

<t>If TD != FD, this is a greater than three stage fabric; the local device SHOULD advertise (TD - FD) in its IS reachability tier sub-TLV.</t>

<t>For example, in the above five stage fabric, 3B would:</t>

<t>
<list style="symbols">
<t>Calculate an SPT with all link metrics set to 1; on this SPT, 5A through 5F and 1A through 1F would all have a cost of 2</t>
<t>Select one of these nodes as F; assume 5F is chosen as F</t>
<t>Set FD to 2, the distance to 5F</t>
<t>Run SPF from the perspective of 5F with all link metrics set to 1</t>
<t>Set TD to 4, the cost from 5F to 1A</t>
<t>TD - FD == 2, so 1A is at T2, and is a spine switch</t>
</list>
</t>

</section> <!-- end of T1 and above -->
</section> <!-- end of fabric location calculation -->

<!-- 1 -->
<section title="Flooding Optimization" toc="default">

<t>Flooding is perhaps the most challenging scaling issue for a link state protocol running on a dense, large scale fabric. To reduce flooding, Openfabric takes advantage of information already available in the link state protocol, the list of the local intermediate system's neighbor's neighbors, and the fabric locality computed above. The following tables are required to compute a set of reflooders:</t>

<t>
<list style="symbols">
<t>NL list: The set of neighbors</t>
<t>NN list: The set of neighbor's neighbors; this can be calculated by running SPF truncated to two hops</t>
<t>DNR list: The set of neighbors who should have LSPs (or fragments) marked Do Not Reflood (DNR)</t>
<t>RF list: The set of neighbors who should flood LSPs (or fragments) to their adjacent neighbors to ensure synchronization</t>
</list>
</t>

<t>NL is set to contain all neighbors, and sorted deterministically (for instance, from the highest router ID to the lowest). All intermediate systems within a single fabric SHOULD use the same mechanism for sorting the NL list. NN is set to contain all neighbor's neighbors, or all intermediate systems that are two hops away, as determined by performing a truncated SPF. The DNR and RF tables are initially empty. To begin, the following steps are taken to reduce the size of NN and NL:</t>

<t>
<list style="symbols">
<t>Move any IS in NL with its tier (or fabric location) set to T0 to DNR</t>
<t>Remove all intermediate systems from NL and NN that in the shortest path to the IS that originated the LSP</t>
</list>
</t>

<t>Then, for every IS in NL:</t>

<t>
<list style="symbols">
<t>If the current entry in NL is connected to any entries in NN:
<list style="symbols">
<t>Move the IS  to RF</t>
<t>Remove the intermediate systems connected to the IS from NN</t>
</list></t>
<t>Else move the IS to DNR</t>
</list>
</t>

<t>When flooding, LSPs transmitted to adjacent neighbors on the RF list will be transmitted normally. Adjacent intermediate systems on this list will reflood received LSPs into the next stage of the topology, ensuring database synchronization. LSPs transmitted to adjacent neighbors on the DNR list, however, will be transmitted to the DNR address (see modifications to the IS-IS protocol, below).</t>

<t>Any IS receiving a link state packet transmitted to the DNR address SHOULD NOT set the Send Route Message (SRM) flag on any interface for this LSP; hence the LSP will not be reflooded by this IS to any adjacent neighbor. This reduces flooding to the minimum possible while retaining full Link State Database (LSDB) synchronization.</t>

<!-- 2 -->
<section title="Flooding Failures" toc="default">

<t>It is possible in some failure modes for flooding to be incomplete because of the flooding optimizations outlined. Specifically, if a reflooder fails, or is somehow disconnected from all the links across which it should be reflooding, it is possible an LSP is only partially flooded through the fabric. To prevent such situations, any IS receiving an LSP transmitted using DNR SHOULD:</t>

<t>
<list style="symbols">
<t>Set a short timer; the default should be less than one second</t>
<t>When the timer expires, send a Complete Sequence Number Packet (CSNP) to all neighbors</t>
<t>Process any Partial Sequence Number Packets (PSNPs) as required to resynchronize</t>
<t>If a resynchronization is required, notify the network operator through a network management system</t>
</list>
</t>

</section> <!-- end of flooding failures -->

</section> <!-- end of flooding optimization -->

<!-- 1 -->
<section title="Other Optimizations" toc="default">

<!-- 2 -->
<section title="Transit Link Reachability" toc="default">

<t>In order to reduce the amount of control plane state carried on large scale spine and leaf fabrics, openfabric implementations SHOULD NOT advertise reachability for transit links. These links MAY remain unnumbered, as IS-IS does not require layer 3 IP addresses to operate. Each router SHOULD be configured with a single loopback address, which is assigned an IPv6 address, to provide reachability to routers which make up the fabric.</t>

</section> <!-- end of transit link reachability section -->

<!-- 2 -->
<section title="Transiting T0 Routers" toc="default">

<t>In data center fabrics, ToR routers SHOULD NOT be used to transit between two T1 (or above) spine routers. The simplest way to prevent this is to set the <xref target="RFC3277">overload bit</xref> for all the LSPs originated from T0 routers. However, this solution would have the unfortunate side effect of causing all reachability beyond any T0 router to have the same metric, and many implementations treat a set overload bit as a metric of 0xFFFF in calculating the Shortest Path Tree (SPT). This document proposes an alternate solution which preserves the leaf node metric, while still avoiding transiting T0 routers.</t>

<t>Specifically, all T0 routers SHOULD advertise their metric to reach any T1 adjacent neighbor with a cost of 0XFFE. T1 routers, on the other hand, will advertise T0 routers with the actual interface cost used to reach the T0 router. Hence, links connecting T0 and T1 routers will be advertised with an asymmetric cost that discourages transiting T0 routers, while leaving reachability to the destinations attached to T0 devices the same.</t>

</section> <!-- end of metric modifications for T0 -->
</section> <!-- end of section on other optimizations -->

<!-- 1 -->
<section title="Openfabric and Route Aggregation" toc="default">

<t>While aggregation is not recommended in openfabric deployments, aggregation MAY take place when routing information is being transmitted from higher level tiers to lower level tiers. For instance, in the example network, 2A through 2F could advertise a single default route to 1A through 1F. 2A through 2F would simply advertise the default as if it were an attached to each router locally using either a type 135 or 236 TLV, and then block TLVs that contain reachability information (such as types 135 and 236). Type 22 TLVs, however, MUST be flooded through this boundary, so that every router in the network shares a common view of the topology.</t>

<t>Note that aggregation in a DC fabric can result in routing black holes in some cases, and also possibly reduce the efficiency of traffic engineering in the network.</t>

</section> <!-- end of aggregation section -->

<!-- 1 -->
<section title="Openfabric Modifications to the IS-IS protocol" toc="default">

<!-- 2 -->
<section title="Advertising Tier Level" toc="default">

<t>The tier level is carried as a subTLV of the router capabilities TLV described in <xref target="RFC7981" />. The subTLV number is TBA; the TLV will contain one octet encoding the tier number as an integer. If the openfabric IS only supports IPv6, the procedure described in section 3 of <xref target="RFC7981" /> MUST be followed, and an IPv6 address carried in the IPv6 TE Router ID sub-TLV according to <xref target="RFC5316" />.</t>

</section> <!-- end of advertising tier level -->

<!-- 2 -->
<section title="Do Not Reflood (DNR)" toc="default">

<t>Link state packets MUST be encoded in a circuit scope PDU as described in <xref target="RFC7356" /></t>

</section> <!-- end of DNR -->
</section> <!-- end of modifications -->

<!-- 1 -->
<section title="Security Considerations" toc="default">

<t>This document outlines modifications to the IS-IS protocol for operation on large scale data center fabrics. While it does add new TLVs, and some local processing changes, it does not add any new security vulnerabilities to the operation of IS-IS. However, openfabric implementations SHOULD implement IS-IS cryptographic authentication, as described in <xref target="RFC5304" />, and should enable other security measures in accordance with best common practices for the IS-IS protocol.</t>

</section> <!-- end of security considerations -->

</middle>

<back>

<references title="Normative References">

&RFC2119;
&RFC2629;
&RFC5301;
&RFC5303;
&RFC5305;
&RFC5308;
&RFC5311;
&RFC5316;
&RFC7356;
&RFC7981;

</references> <!-- end of normative references -->

<references title="Informative References">

&RFC3277;
&RFC3719;
&RFC4271;
&RFC5304;
&RFC5440;
&RFC5449;
&RFC5614;
&RFC6232;
&RFC7182;
&RFC7921;

<?rfc include="reference.I-D.ietf-spring-segment-routing.xml"?>
<?rfc include="reference.I-D.ietf-isis-segment-routing-extensions.xml"?>

</references> <!-- end of informative references -->

</back>

</rfc>
