<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" consensus="true" docName="draft-ietf-spring-segment-routing-msdc-11" indexInclude="true" ipr="trust200902" number="8670" prepTime="2019-12-06T14:00:23" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-spring-segment-routing-msdc-11" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8670" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="BGP Prefix-SID in Large-Scale DCs">BGP Prefix Segment in Large-Scale Data Centers</title>
    <seriesInfo name="RFC" value="8670" stream="IETF"/>
    <author fullname="Clarence Filsfils" initials="C." role="editor" surname="Filsfils">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city>Brussels</city>
          <region/>
          <code/>
          <country>Belgium</country>
        </postal>
        <email>cfilsfil@cisco.com</email>
      </address>
    </author>
    <author fullname="Stefano Previdi" initials="S." surname="Previdi">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <code/>
          <country>Italy</country>
        </postal>
        <email>stefano@previdi.net</email>
      </address>
    </author>
    <author fullname="Gaurav Dawra" initials="G." surname="Dawra">
      <organization showOnFrontPage="true">LinkedIn</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <code/>
          <country>United States of America</country>
        </postal>
        <email>gdawra.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Ebben Aries" initials="E." surname="Aries">
      <organization showOnFrontPage="true">Arrcus, Inc.</organization>
      <address>
        <postal>
          <street>2077 Gateway Place, Suite #400</street>
          <city>San Jose</city>
          <code>CA 95119</code>
          <country>United States of America</country>
        </postal>
        <email>exa@arrcus.com</email>
      </address>
    </author>
    <author fullname="Petr Lapukhov" initials="P." surname="Lapukhov">
      <organization showOnFrontPage="true">Facebook</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <code/>
          <country>United States of America</country>
        </postal>
        <email>petr@fb.com</email>
      </address>
    </author>
    <date month="12" year="2019"/>
    <workgroup>Network Working Group</workgroup>
    <keyword>example</keyword>
    <abstract pn="section-abstract">
      <t pn="section-abstract-1">This document describes the motivation for, and benefits of, applying
      Segment Routing (SR) in BGP-based large-scale data centers. It describes the
      design to deploy SR in those data centers for both the
      MPLS and IPv6 data planes.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t pn="section-boilerplate.1-1">
            This document is not an Internet Standards Track specification; it is
            published for informational purposes.  
        </t>
        <t pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by the
            Internet Engineering Steering Group (IESG).  Not all documents
            approved by the IESG are candidates for any level of Internet
            Standard; see Section 2 of RFC 7841. 
        </t>
        <t pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc8670" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t pn="section-boilerplate.2-1">
            Copyright (c) 2019 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Simplified BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Simplified BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-large-scale-data-center-net">Large-Scale Data-Center Network Design Summary</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-reference-design">Reference Design</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-some-open-problems-in-large">Some Open Problems in Large Data-Center Networks</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t keepWithNext="true" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-applying-segment-routing-in">Applying Segment Routing in the DC with MPLS Data Plane</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-prefix-segment-bgp-pref">BGP Prefix Segment (BGP Prefix-SID)</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ebgp-labeled-unicast-rfc-82">EBGP Labeled Unicast (RFC 8277)</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2.2.2">
                  <li pn="section-toc.1-1.4.2.2.2.1">
                    <t keepWithNext="true" pn="section-toc.1-1.4.2.2.2.1.1"><xref derivedContent="4.2.1" format="counter" sectionFormat="of" target="section-4.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-control-plane">Control Plane</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.2.2.2">
                    <t keepWithNext="true" pn="section-toc.1-1.4.2.2.2.2.1"><xref derivedContent="4.2.2" format="counter" sectionFormat="of" target="section-4.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-data-plane">Data Plane</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.2.2.3">
                    <t keepWithNext="true" pn="section-toc.1-1.4.2.2.2.3.1"><xref derivedContent="4.2.3" format="counter" sectionFormat="of" target="section-4.2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-design-variation">Network Design Variation</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.2.2.4">
                    <t keepWithNext="true" pn="section-toc.1-1.4.2.2.2.4.1"><xref derivedContent="4.2.4" format="counter" sectionFormat="of" target="section-4.2.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-global-bgp-prefix-segment-t">Global BGP Prefix Segment through the Fabric</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.2.2.5">
                    <t keepWithNext="true" pn="section-toc.1-1.4.2.2.2.5.1"><xref derivedContent="4.2.5" format="counter" sectionFormat="of" target="section-4.2.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-incremental-deployments">Incremental Deployments</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t keepWithNext="true" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ibgp-labeled-unicast-rfc-82">IBGP Labeled Unicast (RFC 8277)</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t keepWithNext="true" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-applying-segment-routing-in-">Applying Segment Routing in the DC with IPv6 Data Plane</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t keepWithNext="true" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-communicating-path-informat">Communicating Path Information to the Host</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t keepWithNext="true" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-additional-benefits">Additional Benefits</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mpls-data-plane-with-operat">MPLS Data Plane with Operational Simplicity</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-minimizing-the-fib-table">Minimizing the FIB Table</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.3">
                <t keepWithNext="true" pn="section-toc.1-1.7.2.3.1"><xref derivedContent="7.3" format="counter" sectionFormat="of" target="section-7.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-egress-peer-engineering">Egress Peer Engineering</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.4">
                <t keepWithNext="true" pn="section-toc.1-1.7.2.4.1"><xref derivedContent="7.4" format="counter" sectionFormat="of" target="section-7.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-anycast">Anycast</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t keepWithNext="true" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-preferred-srgb-allocation">Preferred SRGB Allocation</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t keepWithNext="true" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t keepWithNext="true" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-manageability-consideration">Manageability Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t keepWithNext="true" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t keepWithNext="true" pn="section-toc.1-1.12.1"><xref derivedContent="12" format="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.12.2">
              <li pn="section-toc.1-1.12.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.12.2.1.1"><xref derivedContent="12.1" format="counter" sectionFormat="of" target="section-12.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.12.2.2.1"><xref derivedContent="12.2" format="counter" sectionFormat="of" target="section-12.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.13">
            <t keepWithNext="true" pn="section-toc.1-1.13.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.14">
            <t keepWithNext="true" pn="section-toc.1-1.14.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-contributors">Contributors</xref></t>
          </li>
          <li pn="section-toc.1-1.15">
            <t keepWithNext="true" pn="section-toc.1-1.15.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="INTRO" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t pn="section-1-1">Segment Routing (SR), as described in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>, leverages the source-routing
      paradigm. A node steers a packet through an ordered list of
      instructions called "segments". A segment can represent any instruction,
      topological or service based. A segment can have a local semantic to an
      SR node or a global semantic within an SR domain. SR allows the enforcement of a flow
      through any topological path while maintaining per-flow state only from
      the ingress node to the SR domain. SR can be applied to the
      MPLS and IPv6 data planes.</t>
      <t pn="section-1-2">The use cases described in this document should be considered in the
      context of the BGP-based large-scale data-center (DC) design described
      in <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/>. This document extends it by applying SR
      both with IPv6 and MPLS data planes.</t>
    </section>
    <section anchor="LARGESCALEDC" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-large-scale-data-center-net">Large-Scale Data-Center Network Design Summary</name>
      <t pn="section-2-1">This section provides a brief summary of the Informational RFC
      <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/>, which outlines a practical network design
      suitable for data centers of various scales:</t>
      <ul spacing="normal" bare="false" empty="false" pn="section-2-2">
        <li pn="section-2-2.1">Data-center networks have highly symmetric topologies with
          multiple parallel paths between two server-attachment points. The
          well-known Clos topology is most popular among the operators (as
          described in <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/>). In a Clos topology, the
          minimum number of parallel paths between two elements is determined
          by the "width" of the "Tier-1" stage. See <xref target="FIGLARGE" format="default" sectionFormat="of" derivedContent="Figure 1"/>
          for an illustration of the concept.</li>
        <li pn="section-2-2.2">Large-scale data centers commonly use a routing protocol, such as
          BGP-4 <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>, in order to provide endpoint
          connectivity. Therefore, recovery after a network failure is driven
          either by local knowledge of directly available backup paths or by
          distributed signaling between the network devices.</li>
        <li pn="section-2-2.3">Within data-center networks, traffic is load shared using the
          Equal Cost Multipath (ECMP) mechanism. With ECMP, every network
          device implements a pseudorandom decision, mapping packets to one
          of the parallel paths by means of a hash function calculated over
          certain parts of the packet, typically a combination of various
          packet header fields.</li>
      </ul>
      <t pn="section-2-3">The following is a schematic of a five-stage Clos topology with four
      devices in the "Tier-1" stage. Notice that the number of paths between Node1
      and Node12 equals four; the paths have to cross all of the Tier-1
      devices. At the same time, the number of paths between Node1 and Node2
      equals two, and the paths only cross Tier-2 devices. Other topologies
      are possible, but for simplicity, only the topologies that have a single
      path from Tier-1 to Tier-3 are considered below. The rest could be
      treated similarly, with a few modifications to the logic.</t>
      <section anchor="REFDESIGN" numbered="true" toc="include" removeInRFC="false" pn="section-2.1">
        <name slugifiedName="name-reference-design">Reference Design</name>
        <figure anchor="FIGLARGE" align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-5-stage-clos-topology">5-Stage Clos Topology</name>
          <artwork name="" type="" align="left" alt="" pn="section-2.1-1.1">                                Tier-1
                               +-----+
                               |NODE |
                            +-&gt;|  5  |--+
                            |  +-----+  |
                    Tier-2  |           |   Tier-2
                   +-----+  |  +-----+  |  +-----+
     +------------&gt;|NODE |--+-&gt;|NODE |--+--|NODE |-------------+
     |       +-----|  3  |--+  |  6  |  +--|  9  |-----+       |
     |       |     +-----+     +-----+     +-----+     |       |
     |       |                                         |       |
     |       |     +-----+     +-----+     +-----+     |       |
     | +-----+----&gt;|NODE |--+  |NODE |  +--|NODE |-----+-----+ |
     | |     | +---|  4  |--+-&gt;|  7  |--+--|  10 |---+ |     | |
     | |     | |   +-----+  |  +-----+  |  +-----+   | |     | |
     | |     | |            |           |            | |     | |
   +-----+ +-----+          |  +-----+  |          +-----+ +-----+
   |NODE | |NODE | Tier-3   +-&gt;|NODE |--+   Tier-3 |NODE | |NODE |
   |  1  | |  2  |             |  8  |             | 11  | |  12 |
   +-----+ +-----+             +-----+             +-----+ +-----+
     | |     | |                                     | |     | |
     A O     B O            &lt;- Servers -&gt;            Z O     O O</artwork>
        </figure>
        <t pn="section-2.1-2">In the reference topology illustrated in <xref target="FIGLARGE" format="default" sectionFormat="of" derivedContent="Figure 1"/>,
        it is assumed:</t>
        <ul spacing="normal" bare="false" empty="false" pn="section-2.1-3">
          <li pn="section-2.1-3.1">
            <t pn="section-2.1-3.1.1">Each node is its own autonomous system (AS) (Node X has AS X). 4-byte AS numbers
            are recommended (<xref target="RFC6793" format="default" sectionFormat="of" derivedContent="RFC6793"/>).</t>
            <ul spacing="normal" bare="false" empty="false" pn="section-2.1-3.1.2">
              <li pn="section-2.1-3.1.2.1">For simple and efficient route propagation filtering,
                Node5, Node6, Node7, and Node8 use the same AS; Node3 and Node4
                use the same AS; and Node9 and Node10 use the same AS.</li>
              <li pn="section-2.1-3.1.2.2">In the case in which 2-byte autonomous system numbers are used
                for efficient usage of the scarce 2-byte Private Use AS pool,
                different Tier-3 nodes might use the same AS.</li>
              <li pn="section-2.1-3.1.2.3">Without loss of generality, these details will be
                simplified in this document. It is to be assumed that each node has its
                own AS.</li>
            </ul>
          </li>
          <li pn="section-2.1-3.2">Each node peers with its neighbors with a BGP session. If not
            specified, external BGP (EBGP) is assumed. In a specific use case,
            internal BGP (IBGP) will be used, but this will be called out
            explicitly in that case.</li>
          <li pn="section-2.1-3.3">
            <t pn="section-2.1-3.3.1">Each node originates the IPv4 address of its loopback interface
            into BGP and announces it to its neighbors. </t>
            <ul spacing="normal" bare="false" empty="false" pn="section-2.1-3.3.2">
              <li pn="section-2.1-3.3.2.1">The loopback of Node X is 192.0.2.x/32.</li>
            </ul>
          </li>
        </ul>
        <t pn="section-2.1-4">In this document, the Tier-1, Tier-2, and Tier-3 nodes are referred
        to as "Spine", "Leaf", and "ToR" (top of rack) nodes, respectively.  When a ToR
        node acts as a gateway to the "outside world", it is referred to as a
        "border node".</t>
      </section>
    </section>
    <section anchor="OPENPROBS" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-some-open-problems-in-large">Some Open Problems in Large Data-Center Networks</name>
      <t pn="section-3-1">The data-center-network design summarized above provides means for
      moving traffic between hosts with reasonable efficiency. There are few
      open performance and reliability problems that arise in such a design:
      </t>
      <ul spacing="normal" bare="false" empty="false" pn="section-3-2">
        <li pn="section-3-2.1">ECMP routing is most commonly realized per flow. This means that
          large, long-lived "elephant" flows may affect performance of
          smaller, short-lived "mouse" flows and may reduce efficiency
          of per-flow load sharing. In other words, per-flow ECMP does not
          perform efficiently when flow-lifetime distribution is heavy tailed.
          Furthermore, due to hash-function inefficiencies, it is possible to
          have frequent flow collisions where more flows get placed on one
          path over the others.</li>
        <li pn="section-3-2.2">Shortest-path routing with ECMP implements an oblivious routing
          model that is not aware of the network imbalances. If the network
          symmetry is broken, for example, due to link failures, utilization
          hotspots may appear. For example, if a link fails between Tier-1 and
          Tier-2 devices (e.g., Node5 and Node9), Tier-3 devices Node1 and
          Node2 will not be aware of that since there are other paths
          available from the perspective of Node3. They will continue sending
          roughly equal traffic to Node3 and Node4 as if the failure didn't
          exist, which may cause a traffic hotspot.</li>
        <li pn="section-3-2.3">Isolating faults in the network with multiple parallel paths and
          ECMP-based routing is nontrivial due to lack of determinism.
          Specifically, the connections from HostA to HostB may take a
          different path every time a new connection is formed, thus making
          consistent reproduction of a failure much more difficult. This
          complexity scales linearly with the number of parallel paths in the
          network and stems from the random nature of path selection by the
          network devices.</li>
      </ul>
    </section>
    <section anchor="APPLYSR" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-applying-segment-routing-in">Applying Segment Routing in the DC with MPLS Data Plane</name>
      <section anchor="BGPREFIXSEGMENT" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-bgp-prefix-segment-bgp-pref">BGP Prefix Segment (BGP Prefix-SID)</name>
        <t pn="section-4.1-1">A BGP Prefix Segment is a segment associated with a BGP prefix. A
        BGP Prefix Segment is a network-wide instruction to forward the packet
        along the ECMP-aware best path to the related prefix.</t>
        <t pn="section-4.1-2">The BGP Prefix Segment is defined as the BGP Prefix-SID Attribute
        in <xref target="RFC8669" format="default" sectionFormat="of" derivedContent="RFC8669"/>, which contains an
        index. Throughout this document, the BGP Prefix Segment Attribute is
        referred to as the "BGP Prefix-SID" and the encoded index as the
        label index.</t>
        <t pn="section-4.1-3">In this document, the network design decision has been made to
        assume that all the nodes are allocated the same SRGB (Segment Routing
        Global Block), e.g., [16000, 23999]. This provides operational
        simplification as explained in <xref target="SINGLESRGB" format="default" sectionFormat="of" derivedContent="Section 8"/>, but this
        is not a requirement.</t>
        <t pn="section-4.1-4">For illustration purposes, when considering an MPLS data plane, it
        is assumed that the label index allocated to prefix 192.0.2.x/32 is X.
        As a result, a local label (16000+x) is allocated for prefix
        192.0.2.x/32 by each node throughout the DC fabric.</t>
        <t pn="section-4.1-5">When the IPv6 data plane is considered, it is assumed that Node X is
        allocated IPv6 address (segment) 2001:DB8::X.</t>
      </section>
      <section anchor="eBGP8277" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-ebgp-labeled-unicast-rfc-82">EBGP Labeled Unicast (RFC 8277)</name>
        <t pn="section-4.2-1">Referring to <xref target="FIGLARGE" format="default" sectionFormat="of" derivedContent="Figure 1"/> and 
	<xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/>, the following design modifications are
        introduced:</t>
        <ul spacing="normal" bare="false" empty="false" pn="section-4.2-2">
          <li pn="section-4.2-2.1">Each node peers with its neighbors via an EBGP session with
            extensions defined in <xref target="RFC8277" format="default" sectionFormat="of" derivedContent="RFC8277"/> (named "EBGP8277"
            throughout this document) and with the BGP Prefix-SID attribute
            extension as defined in <xref target="RFC8669" format="default" sectionFormat="of" derivedContent="RFC8669"/>.</li>
          <li pn="section-4.2-2.2">The forwarding plane at Tier-2 and Tier-1 is MPLS.</li>
          <li pn="section-4.2-2.3">The forwarding plane at Tier-3 is either IP2MPLS (if the host
            sends IP traffic) or MPLS2MPLS (if the host sends MPLS-encapsulated traffic).</li>
        </ul>
        <t pn="section-4.2-3"><xref target="FIGSMALL" format="default" sectionFormat="of" derivedContent="Figure 2"/> zooms into a path from ServerA to ServerZ within the topology of <xref target="FIGLARGE" format="default" sectionFormat="of" derivedContent="Figure 1"/>.</t>
        <figure anchor="FIGSMALL" align="left" suppress-title="false" pn="figure-2">
          <name slugifiedName="name-path-from-a-to-z-via-nodes-">Path from A to Z via Nodes 1, 4, 7, 10, and 11</name>
          <artwork name="" type="" align="left" alt="" pn="section-4.2-4.1">                   +-----+     +-----+     +-----+    
       +----------&gt;|NODE |     |NODE |     |NODE |
       |           |  4  |--+-&gt;|  7  |--+--|  10 |---+  
       |           +-----+     +-----+     +-----+   |  
       |                                             |  
   +-----+                                         +-----+ 
   |NODE |                                         |NODE |
   |  1  |                                         | 11  |
   +-----+                                         +-----+ 
     |                                              |     
     A                    &lt;- Servers -&gt;             Z</artwork>
        </figure>
        <t pn="section-4.2-5">Referring to Figures <xref target="FIGLARGE" format="counter" sectionFormat="of" derivedContent="1"/> and <xref target="FIGSMALL" format="counter" sectionFormat="of" derivedContent="2"/>, and assuming the IP address with the AS and
        label-index allocation previously described, the following sections
        detail the control-plane operation and the data-plane states for the
        prefix 192.0.2.11/32 (loopback of Node11).</t>
        <section anchor="CONTROLPLANE" numbered="true" toc="include" removeInRFC="false" pn="section-4.2.1">
          <name slugifiedName="name-control-plane">Control Plane</name>
          <t pn="section-4.2.1-1">Node11 originates 192.0.2.11/32 in BGP and allocates to it a
          BGP Prefix-SID with label-index: index11 <xref target="RFC8669" format="default" sectionFormat="of" derivedContent="RFC8669"/>.</t>
          <t pn="section-4.2.1-2">Node11 sends the following EBGP8277 update to Node10:</t>
          <ul empty="true" bare="false" spacing="normal" pn="section-4.2.1-3">
            <li pn="section-4.2.1-3.1">
              <dl newline="false" spacing="normal" pn="section-4.2.1-3.1.1">
                <dt pn="section-4.2.1-3.1.1.1">IP Prefix:
</dt>
                <dd pn="section-4.2.1-3.1.1.2">192.0.2.11/32
</dd>
                <dt pn="section-4.2.1-3.1.1.3">Label:
</dt>
                <dd pn="section-4.2.1-3.1.1.4">Implicit NULL
</dd>
                <dt pn="section-4.2.1-3.1.1.5">Next hop:
</dt>
                <dd pn="section-4.2.1-3.1.1.6">Node11's interface address on the link to Node10
</dd>
                <dt pn="section-4.2.1-3.1.1.7">AS Path:
</dt>
                <dd pn="section-4.2.1-3.1.1.8">{11}
</dd>
                <dt pn="section-4.2.1-3.1.1.9">BGP Prefix-SID:
</dt>
                <dd pn="section-4.2.1-3.1.1.10">Label-Index 11
</dd>
              </dl>
            </li>
          </ul>
          <t pn="section-4.2.1-4">Node10 receives the above update. As it is SR capable, Node10 is
          able to interpret the BGP Prefix-SID; therefore, it understands that it
          should allocate the label from its own SRGB block, offset by the
          label index received in the BGP Prefix-SID (16000+11, hence, 16011) to
          the Network Layer Reachability Information (NLRI) instead of
          allocating a nondeterministic label out of a dynamically allocated
          portion of the local label space. The implicit NULL label in the
          NLRI tells Node10 that it is the penultimate hop and that it must pop the
          top label on the stack before forwarding traffic for this prefix to
          Node11.</t>
          <t pn="section-4.2.1-5">Then, Node10 sends the following EBGP8277 update to Node7:</t>
          <ul empty="true" bare="false" spacing="normal" pn="section-4.2.1-6">
            <li pn="section-4.2.1-6.1">
              <dl newline="false" spacing="normal" pn="section-4.2.1-6.1.1">
                <dt pn="section-4.2.1-6.1.1.1">IP Prefix:
</dt>
                <dd pn="section-4.2.1-6.1.1.2">192.0.2.11/32
</dd>
                <dt pn="section-4.2.1-6.1.1.3">Label:
</dt>
                <dd pn="section-4.2.1-6.1.1.4">16011
</dd>
                <dt pn="section-4.2.1-6.1.1.5">Next hop:
</dt>
                <dd pn="section-4.2.1-6.1.1.6">Node10's interface address on the link to Node7
</dd>
                <dt pn="section-4.2.1-6.1.1.7">AS Path:
</dt>
                <dd pn="section-4.2.1-6.1.1.8">{10, 11}
</dd>
                <dt pn="section-4.2.1-6.1.1.9">BGP Prefix-SID:
</dt>
                <dd pn="section-4.2.1-6.1.1.10">Label-Index 11
</dd>
              </dl>
            </li>
          </ul>
          <t pn="section-4.2.1-7">Node7 receives the above update. As it is SR capable, Node7 is
          able to interpret the BGP Prefix-SID; therefore, it allocates the local
          (incoming) label 16011 (16000 + 11) to the NLRI (instead of
          allocating a "dynamic" local label from its label
          manager). Node7 uses the label in the received EBGP8277 NLRI as the
          outgoing label (the index is only used to derive the local/incoming
          label).</t>
          <t pn="section-4.2.1-8">Node7 sends the following EBGP8277 update to Node4:</t>
          <ul empty="true" bare="false" spacing="normal" pn="section-4.2.1-9">
            <li pn="section-4.2.1-9.1">
              <dl newline="false" spacing="normal" pn="section-4.2.1-9.1.1">
                <dt pn="section-4.2.1-9.1.1.1">IP Prefix:
</dt>
                <dd pn="section-4.2.1-9.1.1.2">192.0.2.11/32
</dd>
                <dt pn="section-4.2.1-9.1.1.3">Label:
</dt>
                <dd pn="section-4.2.1-9.1.1.4">16011
</dd>
                <dt pn="section-4.2.1-9.1.1.5">Next hop:
</dt>
                <dd pn="section-4.2.1-9.1.1.6">Node7's interface address on the link to Node4
</dd>
                <dt pn="section-4.2.1-9.1.1.7">AS Path:
</dt>
                <dd pn="section-4.2.1-9.1.1.8">{7, 10, 11}
</dd>
                <dt pn="section-4.2.1-9.1.1.9">BGP Prefix-SID:
</dt>
                <dd pn="section-4.2.1-9.1.1.10">Label-Index 11
</dd>
              </dl>
            </li>
          </ul>
          <t pn="section-4.2.1-10">Node4 receives the above update. As it is SR capable, Node4 is
          able to interpret the BGP Prefix-SID; therefore, it allocates the local
          (incoming) label 16011 to the NLRI (instead of allocating a
          "dynamic" local label from its label manager). Node4
          uses the label in the received EBGP8277 NLRI as an outgoing label (the
          index is only used to derive the local/incoming label).</t>
          <t pn="section-4.2.1-11">Node4 sends the following EBGP8277 update to Node1:</t>
          <ul empty="true" bare="false" spacing="normal" pn="section-4.2.1-12">
            <li pn="section-4.2.1-12.1">
              <dl newline="false" spacing="normal" pn="section-4.2.1-12.1.1">
                <dt pn="section-4.2.1-12.1.1.1">IP Prefix:
</dt>
                <dd pn="section-4.2.1-12.1.1.2">192.0.2.11/32 
</dd>
                <dt pn="section-4.2.1-12.1.1.3">Label:
</dt>
                <dd pn="section-4.2.1-12.1.1.4">16011
</dd>
                <dt pn="section-4.2.1-12.1.1.5">Next hop:
</dt>
                <dd pn="section-4.2.1-12.1.1.6">Node4's interface address on the link to Node1
</dd>
                <dt pn="section-4.2.1-12.1.1.7">AS Path:
</dt>
                <dd pn="section-4.2.1-12.1.1.8">{4, 7, 10, 11}
</dd>
                <dt pn="section-4.2.1-12.1.1.9">BGP Prefix-SID:
</dt>
                <dd pn="section-4.2.1-12.1.1.10">Label-Index 11
</dd>
              </dl>
            </li>
          </ul>
          <t pn="section-4.2.1-13">Node1 receives the above update. As it is SR capable, Node1 is
          able to interpret the BGP Prefix-SID; therefore, it allocates the local
          (incoming) label 16011 to the NLRI (instead of allocating a
          "dynamic" local label from its label manager). Node1
          uses the label in the received EBGP8277 NLRI as an outgoing label (the
          index is only used to derive the local/incoming label).</t>
        </section>
        <section anchor="DATAPLANE" numbered="true" toc="include" removeInRFC="false" pn="section-4.2.2">
          <name slugifiedName="name-data-plane">Data Plane</name>
          <t pn="section-4.2.2-1">Referring to <xref target="FIGLARGE" format="default" sectionFormat="of" derivedContent="Figure 1"/>, and assuming all nodes
          apply the same advertisement rules described above and all nodes
          have the same SRGB (16000-23999), here are the IP/MPLS forwarding
          tables for prefix 192.0.2.11/32 at Node1, Node4, Node7, and
          Node10.</t>
          <table anchor="NODE1FIB" align="center" pn="table-1">
            <name slugifiedName="name-node1-forwarding-table">Node1 Forwarding Table
</name>
            <tbody>
              <tr>
                <td align="center" colspan="1" rowspan="1">Incoming Label or IP Destination
</td>
                <td align="center" colspan="1" rowspan="1">Outgoing Label
</td>
                <td align="center" colspan="1" rowspan="1">Outgoing Interface
</td>
              </tr>
              <tr>
                <td align="center" colspan="1" rowspan="1">16011
</td>
                <td align="center" colspan="1" rowspan="1">16011 
</td>
                <td align="center" colspan="1" rowspan="1">ECMP{3, 4}
</td>
              </tr>
              <tr>
                <td align="center" colspan="1" rowspan="1">192.0.2.11/32
</td>
                <td align="center" colspan="1" rowspan="1">16011 
</td>
                <td align="center" colspan="1" rowspan="1">ECMP{3, 4}
</td>
              </tr>
            </tbody>
          </table>
          <table anchor="NODE4FIB" align="center" pn="table-2">
            <name slugifiedName="name-node4-forwarding-table">Node4 Forwarding Table
</name>
            <tbody>
              <tr>
                <td align="center" colspan="1" rowspan="1">Incoming Label or IP Destination
</td>
                <td align="center" colspan="1" rowspan="1">Outgoing Label
</td>
                <td align="center" colspan="1" rowspan="1">Outgoing Interface
</td>
              </tr>
              <tr>
                <td align="center" colspan="1" rowspan="1">16011
</td>
                <td align="center" colspan="1" rowspan="1">16011 
</td>
                <td align="center" colspan="1" rowspan="1">ECMP{7, 8}
</td>
              </tr>
              <tr>
                <td align="center" colspan="1" rowspan="1">192.0.2.11/32
</td>
                <td align="center" colspan="1" rowspan="1">16011 
</td>
                <td align="center" colspan="1" rowspan="1">ECMP{7, 8}
</td>
              </tr>
            </tbody>
          </table>
          <table anchor="NODE7FIB" align="center" pn="table-3">
            <name slugifiedName="name-node7-forwarding-table">Node7 Forwarding Table
</name>
            <tbody>
              <tr>
                <td align="center" colspan="1" rowspan="1">Incoming Label or IP Destination
</td>
                <td align="center" colspan="1" rowspan="1">Outgoing Label
</td>
                <td align="center" colspan="1" rowspan="1">Outgoing Interface
</td>
              </tr>
              <tr>
                <td align="center" colspan="1" rowspan="1">16011
</td>
                <td align="center" colspan="1" rowspan="1">16011 
</td>
                <td align="center" colspan="1" rowspan="1">10
</td>
              </tr>
              <tr>
                <td align="center" colspan="1" rowspan="1">192.0.2.11/32
</td>
                <td align="center" colspan="1" rowspan="1">16011 
</td>
                <td align="center" colspan="1" rowspan="1">10
</td>
              </tr>
            </tbody>
          </table>
          <table anchor="NODE10FIB" align="center" pn="table-4">
            <name slugifiedName="name-node10-forwarding-table">Node10 Forwarding Table
</name>
            <tbody>
              <tr>
                <td align="center" colspan="1" rowspan="1">Incoming Label or IP Destination
</td>
                <td align="center" colspan="1" rowspan="1">Outgoing Label
</td>
                <td align="center" colspan="1" rowspan="1">Outgoing Interface
</td>
              </tr>
              <tr>
                <td align="center" colspan="1" rowspan="1">16011
</td>
                <td align="center" colspan="1" rowspan="1">POP 
</td>
                <td align="center" colspan="1" rowspan="1">11
</td>
              </tr>
              <tr>
                <td align="center" colspan="1" rowspan="1">192.0.2.11/32
</td>
                <td align="center" colspan="1" rowspan="1">N/A 
</td>
                <td align="center" colspan="1" rowspan="1">11
</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="VARIATIONS" numbered="true" toc="include" removeInRFC="false" pn="section-4.2.3">
          <name slugifiedName="name-network-design-variation">Network Design Variation</name>
          <t pn="section-4.2.3-1">A network design choice could consist of switching all the
          traffic through Tier-1 and Tier-2 as MPLS traffic. In this case, one
          could filter away the IP entries at Node4, Node7, and Node10. This
          might be beneficial in order to optimize the forwarding table
          size.</t>
          <t pn="section-4.2.3-2">A network design choice could consist of allowing the hosts to
          send MPLS-encapsulated traffic based on the Egress Peer Engineering
          (EPE) use case as defined in <xref target="I-D.ietf-spring-segment-routing-central-epe" format="default" sectionFormat="of" derivedContent="SR-CENTRAL-EPE"/>. For example,
          applications at HostA would send their Z-destined traffic to Node1
          with an MPLS label stack where the top label is 16011 and the next
          label is an EPE peer segment (<xref target="I-D.ietf-spring-segment-routing-central-epe" format="default" sectionFormat="of" derivedContent="SR-CENTRAL-EPE"/>) at Node11
          directing the traffic to Z.</t>
        </section>
        <section anchor="FABRIC" numbered="true" toc="include" removeInRFC="false" pn="section-4.2.4">
          <name slugifiedName="name-global-bgp-prefix-segment-t">Global BGP Prefix Segment through the Fabric</name>
          <t pn="section-4.2.4-1">When the previous design is deployed, the operator enjoys global
          BGP Prefix-SID and label allocation throughout the DC fabric.</t>
          <t pn="section-4.2.4-2">A few examples follow:</t>
          <ul spacing="normal" bare="false" empty="false" pn="section-4.2.4-3">
            <li pn="section-4.2.4-3.1">Normal forwarding to Node11: A packet with top label 16011
              received by any node in the fabric will be forwarded along the
              ECMP-aware BGP best path towards Node11, and the label 16011 is
              penultimate popped at Node10 (or at Node 9).</li>
            <li pn="section-4.2.4-3.2">Traffic-engineered path to Node11: An application on a host
              behind Node1 might want to restrict its traffic to paths via the
              Spine node Node5. The application achieves this by sending its
              packets with a label stack of {16005, 16011}. BGP Prefix-SID
              16005 directs the packet up to Node5 along the path (Node1,
              Node3, Node5). BGP Prefix-SID 16011 then directs the packet down
              to Node11 along the path (Node5, Node9, Node11).</li>
          </ul>
        </section>
        <section anchor="INCRDEP" numbered="true" toc="include" removeInRFC="false" pn="section-4.2.5">
          <name slugifiedName="name-incremental-deployments">Incremental Deployments</name>
          <t pn="section-4.2.5-1">The design previously described can be deployed incrementally.
          Let us assume that Node7 does not support the BGP Prefix-SID, and let
          us show how the fabric connectivity is preserved.</t>
          <t pn="section-4.2.5-2">From a signaling viewpoint, nothing would change; even though
          Node7 does not support the BGP Prefix-SID, it does propagate the
          attribute unmodified to its neighbors.</t>
          <t pn="section-4.2.5-3">From a label-allocation viewpoint, the only difference is that
          Node7 would allocate a dynamic (random) label to the prefix
          192.0.2.11/32 (e.g., 123456) instead of the "hinted" label as
          instructed by the BGP Prefix-SID. The neighbors of Node7 adapt
          automatically as they always use the label in the BGP8277 NLRI as
          an outgoing label.</t>
          <t pn="section-4.2.5-4">Node4 does understand the BGP Prefix-SID; therefore, it allocates the
          indexed label in the SRGB (16011) for 192.0.2.11/32.</t>
          <t pn="section-4.2.5-5">As a result, all the data-plane entries across the network would
          be unchanged except the entries at Node7 and its neighbor Node4 as
          shown in the figures below.</t>
          <t pn="section-4.2.5-6">The key point is that the end-to-end Label Switched Path (LSP) is
          preserved because the outgoing label is always derived from the
          received label within the BGP8277 NLRI. The index in the
          BGP Prefix-SID is only used as a hint on how to allocate the local
          label (the incoming label) but never for the outgoing label.</t>
          <table anchor="NODE7FIBINC" align="center" pn="table-5">
            <name slugifiedName="name-node7-forwarding-table-2">Node7 Forwarding Table
</name>
            <tbody>
              <tr>
                <td align="center" colspan="1" rowspan="1">Incoming Label or IP Destination
</td>
                <td align="center" colspan="1" rowspan="1">Outgoing Label
</td>
                <td align="center" colspan="1" rowspan="1">Outgoing Interface
</td>
              </tr>
              <tr>
                <td align="center" colspan="1" rowspan="1">12345
</td>
                <td align="center" colspan="1" rowspan="1">16011
</td>
                <td align="center" colspan="1" rowspan="1">10
</td>
              </tr>
            </tbody>
          </table>
          <table anchor="NODE4FIBINC" align="center" pn="table-6">
            <name slugifiedName="name-node4-forwarding-table-2">Node4 Forwarding Table
</name>
            <tbody>
              <tr>
                <td align="center" colspan="1" rowspan="1">Incoming Label or IP Destination
</td>
                <td align="center" colspan="1" rowspan="1">Outgoing Label
</td>
                <td align="center" colspan="1" rowspan="1">Outgoing Interface
</td>
              </tr>
              <tr>
                <td align="center" colspan="1" rowspan="1">16011
</td>
                <td align="center" colspan="1" rowspan="1">12345
</td>
                <td align="center" colspan="1" rowspan="1">7
</td>
              </tr>
            </tbody>
          </table>
          <t pn="section-4.2.5-9">The BGP Prefix-SID can thus be deployed incrementally, i.e., one node at
          a time.</t>
          <t pn="section-4.2.5-10">When deployed together with a homogeneous SRGB (the same SRGB across
          the fabric), the operator incrementally enjoys the global prefix
          segment benefits as the deployment progresses through the
          fabric.</t>
        </section>
      </section>
      <section anchor="iBGP3107" numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-ibgp-labeled-unicast-rfc-82">IBGP Labeled Unicast (RFC 8277)</name>
        <t pn="section-4.3-1">The same exact design as EBGP8277 is used with the following
        modifications:</t>
        <ul spacing="normal" bare="false" empty="false" pn="section-4.3-2">
          <li pn="section-4.3-2.1">All nodes use the same AS number.</li>
          <li pn="section-4.3-2.2">Each node peers with its neighbors via an internal BGP session
            (IBGP) with extensions defined in <xref target="RFC8277" format="default" sectionFormat="of" derivedContent="RFC8277"/> (named
            "IBGP8277" throughout this document).</li>
          <li pn="section-4.3-2.3">Each node acts as a route reflector for each of its neighbors
            and with the next-hop-self option. Next-hop-self is a well-known
            operational feature that consists of rewriting the next hop of a
            BGP update prior to sending it to the neighbor. Usually,
            it's a common practice to apply next-hop-self behavior
            towards IBGP peers for EBGP-learned routes. In the case outlined
            in this section, it is proposed to use the next-hop-self mechanism
            also to IBGP-learned routes.</li>
        </ul>
        <figure anchor="IBGPFIG" align="left" suppress-title="false" pn="figure-3">
          <name slugifiedName="name-ibgp-sessions-with-reflecti">IBGP Sessions with Reflection and Next-Hop-Self</name>
          <artwork name="" type="" align="left" alt="" pn="section-4.3-3.1">
                               Cluster-1  
                            +-----------+
                            |  Tier-1   |
                            |  +-----+  |
                            |  |NODE |  |
                            |  |  5  |  |
                 Cluster-2  |  +-----+  |  Cluster-3
                +---------+ |           | +---------+
                | Tier-2  | |           | |  Tier-2 |
                | +-----+ | |  +-----+  | | +-----+ |
                | |NODE | | |  |NODE |  | | |NODE | |
                | |  3  | | |  |  6  |  | | |  9  | | 
                | +-----+ | |  +-----+  | | +-----+ |
                |         | |           | |         |
                |         | |           | |         |
                | +-----+ | |  +-----+  | | +-----+ |
                | |NODE | | |  |NODE |  | | |NODE | |
                | |  4  | | |  |  7  |  | | |  10 | |
                | +-----+ | |  +-----+  | | +-----+ |
                +---------+ |           | +---------+
                            |           |
                            |  +-----+  |         
                            |  |NODE |  |      
          Tier-3            |  |  8  |  |         Tier-3       
      +-----+ +-----+       |  +-----+  |      +-----+ +-----+ 
      |NODE | |NODE |       +-----------+      |NODE | |NODE | 
      |  1  | |  2  |                          | 11  | |  12 | 
      +-----+ +-----+                          +-----+ +-----+</artwork>
        </figure>
        <ul spacing="normal" bare="false" empty="false" pn="section-4.3-4">
          <li pn="section-4.3-4.1">
            <t pn="section-4.3-4.1.1">For simple and efficient route propagation filtering and as
            illustrated in <xref target="IBGPFIG" format="default" sectionFormat="of" derivedContent="Figure 3"/>: </t>
            <ul spacing="normal" bare="false" empty="false" pn="section-4.3-4.1.2">
              <li pn="section-4.3-4.1.2.1">Node5, Node6, Node7, and Node8 use the same Cluster ID
                (Cluster-1).</li>
              <li pn="section-4.3-4.1.2.2">Node3 and Node4 use the same Cluster ID (Cluster-2).</li>
              <li pn="section-4.3-4.1.2.3">Node9 and Node10 use the same Cluster ID (Cluster-3).</li>
            </ul>
          </li>
          <li pn="section-4.3-4.2">The control-plane behavior is mostly the same as described in
            the previous section; the only difference is that the EBGP8277
            path propagation is simply replaced by an IBGP8277 path reflection
            with next hop changed to self.</li>
          <li pn="section-4.3-4.3">The data-plane tables are exactly the same.</li>
        </ul>
      </section>
    </section>
    <section anchor="IPV6" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-applying-segment-routing-in-">Applying Segment Routing in the DC with IPv6 Data Plane</name>
      <t pn="section-5-1">The design described in <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/> is reused with one
      single modification. It is highlighted using the example of the
      reachability to Node11 via Spine node Node5.</t>
      <t pn="section-5-2">Node5 originates 2001:DB8::5/128 with the attached BGP Prefix-SID for
      IPv6 packets destined to segment 2001:DB8::5 (<xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>).</t>
      <t pn="section-5-3">Node11 originates 2001:DB8::11/128 with the attached BGP Prefix-SID
      advertising the support of the Segment Routing Header (SRH) for IPv6 packets destined to segment
      2001:DB8::11.</t>
      <t pn="section-5-4">The control-plane and data-plane processing of all the other nodes in
      the fabric is unchanged. Specifically, the routes to 2001:DB8::5 and
      2001:DB8::11 are installed in the FIB along the EBGP best path to Node5
      (Spine node) and Node11 (ToR node) respectively.</t>
      <t pn="section-5-5">An application on HostA that needs to send traffic to HostZ via only
      Node5 (Spine node) can do so by sending IPv6 packets with a Segment
      Routing Header (SRH, <xref target="I-D.ietf-6man-segment-routing-header" format="default" sectionFormat="of" derivedContent="IPv6-SRH"/>). The destination
      address and active segment is set to 2001:DB8::5. The next and last
      segment is set to 2001:DB8::11.</t>
      <t pn="section-5-6">The application must only use IPv6 addresses that have been
      advertised as capable for SRv6 segment processing (e.g., for which the
      BGP Prefix Segment capability has been advertised). How applications
      learn this (e.g., centralized controller and orchestration) is outside
      the scope of this document.</t>
    </section>
    <section anchor="COMMHOSTS" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-communicating-path-informat">Communicating Path Information to the Host</name>
      <t pn="section-6-1">There are two general methods for communicating path information to
      the end-hosts: "proactive" and "reactive", aka "push" and "pull" models.
      There are multiple ways to implement either of these methods. Here, it
      is noted that one way could be using a centralized controller: the
      controller either tells the hosts of the prefix-to-path mappings
      beforehand and updates them as needed (network event driven push) or
      responds to the hosts making requests for a path to a specific destination
      (host event driven pull). It is also possible to use a hybrid model,
      i.e., pushing some state from the controller in response to particular
      network events, while the host pulls other state on demand.</t>
      <t pn="section-6-2">Note also that when disseminating network-related data to the
      end-hosts, a trade-off is made to balance the amount of information
      vs. the level of visibility in the network state. This applies 
      to both push and pull models. In the extreme case, the host would request
      path information on every flow and keep no local state at all. On the
      other end of the spectrum, information for every prefix in the network
      along with available paths could be pushed and continuously updated on
      all hosts.</t>
    </section>
    <section anchor="BENEFITS" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-additional-benefits">Additional Benefits</name>
      <section anchor="MPLSIMPLE" numbered="true" toc="include" removeInRFC="false" pn="section-7.1">
        <name slugifiedName="name-mpls-data-plane-with-operat">MPLS Data Plane with Operational Simplicity</name>
        <t pn="section-7.1-1">As required by <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/>, no new signaling protocol
        is introduced. The BGP Prefix-SID is a lightweight extension to BGP
        Labeled Unicast <xref target="RFC8277" format="default" sectionFormat="of" derivedContent="RFC8277"/>. It applies either to EBGP- or
        IBGP-based designs.</t>
        <t pn="section-7.1-2">Specifically, LDP and RSVP-TE are not used. These protocols would
        drastically impact the operational complexity of the data center and
        would not scale. This is in line with the requirements expressed in
        <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/>.</t>
        <t pn="section-7.1-3">Provided the same SRGB is configured on all nodes, all nodes use
        the same MPLS label for a given IP prefix. This is simpler from an
        operation standpoint, as discussed in <xref target="SINGLESRGB" format="default" sectionFormat="of" derivedContent="Section 8"/>.</t>
      </section>
      <section anchor="MINFIB" numbered="true" toc="include" removeInRFC="false" pn="section-7.2">
        <name slugifiedName="name-minimizing-the-fib-table">Minimizing the FIB Table</name>
        <t pn="section-7.2-1">The designer may decide to switch all the traffic at Tier-1 and
        Tier-2 based on MPLS, thereby drastically decreasing the IP table size
        at these nodes.</t>
        <t pn="section-7.2-2">This is easily accomplished by encapsulating the traffic either
        directly at the host or at the source ToR node. The encapsulation is
        done by pushing the BGP Prefix-SID of the destination ToR for intra-DC
        traffic, or by pushing the BGP Prefix-SID for the border node for
        inter-DC or DC-to-outside-world traffic.</t>
      </section>
      <section anchor="EPE" numbered="true" toc="include" removeInRFC="false" pn="section-7.3">
        <name slugifiedName="name-egress-peer-engineering">Egress Peer Engineering</name>
        <t pn="section-7.3-1">It is straightforward to combine the design illustrated in this
        document with the Egress Peer Engineering (EPE) use case described in
        <xref target="I-D.ietf-spring-segment-routing-central-epe" format="default" sectionFormat="of" derivedContent="SR-CENTRAL-EPE"/>.</t>
        <t pn="section-7.3-2">In such a case, the operator is able to engineer its outbound traffic
        on a per-host-flow basis, without incurring any additional state at
        intermediate points in the DC fabric.</t>
        <t pn="section-7.3-3">For example, the controller only needs to inject a per-flow state
        on the HostA to force it to send its traffic destined to a specific
        Internet destination D via a selected border node (say Node12 in <xref target="FIGLARGE" format="default" sectionFormat="of" derivedContent="Figure 1"/> instead of another border node, Node11) and a
        specific egress peer of Node12 (say peer AS 9999 of local PeerNode
        segment 9999 at Node12 instead of any other peer that provides a path
        to the destination D). Any packet matching this state at HostA would
        be encapsulated with SR segment list (label stack) {16012, 9999}.
        16012 would steer the flow through the DC fabric, leveraging any ECMP,
        along the best path to border node Node12. Once the flow gets to
        border node Node12, the active segment is 9999 (because of Penultimate
        Hop Popping (PHP) on the upstream neighbor of Node12). This EPE
        PeerNode segment forces border node Node12 to forward the packet to
        peer AS 9999 without any IP lookup at the border node. There is no
        per-flow state for this engineered flow in the DC fabric. A benefit of
        SR is that the per-flow state is only required at the
        source.</t>
        <t pn="section-7.3-4">As well as allowing full traffic-engineering control, such a design
        also offers FIB table-minimization benefits as the Internet-scale FIB
        at border node Node12 is not required if all FIB lookups are avoided
        there by using EPE.</t>
      </section>
      <section anchor="ANYCAST" numbered="true" toc="include" removeInRFC="false" pn="section-7.4">
        <name slugifiedName="name-anycast">Anycast</name>
        <t pn="section-7.4-1">The design presented in this document preserves the availability
        and load-balancing properties of the base design presented in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>.</t>
        <t pn="section-7.4-2">For example, one could assign an anycast loopback 192.0.2.20/32 and
        associate segment index 20 to it on the border nodes Node11 and Node12 (in
        addition to their node-specific loopbacks). Doing so, the EPE
        controller could express a default "go-to-the-Internet via any border
        node" policy as segment list {16020}. Indeed, from any host in the DC
        fabric or from any ToR node, 16020 steers the packet towards the
        border nodes Node11 or Node12 leveraging ECMP where available along the best
        paths to these nodes.</t>
      </section>
    </section>
    <section anchor="SINGLESRGB" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-preferred-srgb-allocation">Preferred SRGB Allocation</name>
      <t pn="section-8-1">In the MPLS case, it is recommended to use the same SRGBs at each node.</t>
      <t pn="section-8-2">Different SRGBs in each node likely increase the complexity of the
      solution both from an operational viewpoint and from a controller
      viewpoint.</t>
      <t pn="section-8-3">From an operational viewpoint, it is much simpler to have the same
      global label at every node for the same destination (the MPLS
      troubleshooting is then similar to the IPv6 troubleshooting where this
      global property is a given).</t>
      <t pn="section-8-4">From a controller viewpoint, this allows us to construct simple
      policies applicable across the fabric.</t>
      <t pn="section-8-5">Let us consider two applications, A and B, respectively connected to
      Node1 and Node2 (ToR nodes). Application A has two flows, FA1 and FA2, destined to Z.
      B has two flows, FB1 and FB2, destined to Z. The controller wants FA1 and
      FB1 to be load shared across the fabric while FA2 and FB2 must be
      respectively steered via Node5 and Node8.</t>
      <t pn="section-8-6">Assuming a consistent unique SRGB across the fabric as described in
      this document, the controller can simply do it by instructing A and B to
      use {16011} respectively for FA1 and FB1 and by instructing A and B to
      use {16005 16011} and {16008 16011} respectively for FA2 and FB2.</t>
      <t pn="section-8-7">Let us assume a design where the SRGB is different at every node and
      where the SRGB of each node is advertised using the Originator SRGB TLV
      of the BGP Prefix-SID as defined in <xref target="RFC8669" format="default" sectionFormat="of" derivedContent="RFC8669"/>: SRGB of Node K starts at value
      K*1000, and the SRGB length is 1000 (e.g., Node1's SRGB is [1000,
      1999], Node2's SRGB is [2000, 2999], ...).</t>
      <t pn="section-8-8">In this case, the controller would need to collect and store all of
      these different SRGBs (e.g., through the Originator SRGB TLV of the
      BGP Prefix-SID); furthermore, it would also need to adapt the policy for
      each host. Indeed, the controller would instruct A to use {1011} for FA1
      while it would have to instruct B to use {2011} for FB1 (while with the
      same SRGB, both policies are the same {16011}).</t>
      <t pn="section-8-9">Even worse, the controller would instruct A to use {1005, 5011} for
      FA1 while it would instruct B to use {2011, 8011} for FB1 (while with
      the same SRGB, the second segment is the same across both policies:
      16011). When combining segments to create a policy, one needs to
      carefully update the label of each segment. This is obviously more error
      prone, more complex, and more difficult to troubleshoot.</t>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t pn="section-9-1">This document has no IANA actions.</t>
    </section>
    <section anchor="MANAGE" numbered="true" toc="include" removeInRFC="false" pn="section-10">
      <name slugifiedName="name-manageability-consideration">Manageability Considerations</name>
      <t pn="section-10-1">The design and deployment guidelines described in this document are
      based on the network design described in <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/>.</t>
      <t pn="section-10-2">The deployment model assumed in this document is based on a single
      domain where the interconnected DCs are part of the same administrative
      domain (which, of course, is split into different autonomous systems).
      The operator has full control of the whole domain, and the usual
      operational and management mechanisms and procedures are used in order
      to prevent any information related to internal prefixes and topology to
      be leaked outside the domain.</t>
      <t pn="section-10-3">As recommended in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>,
      the same SRGB should be allocated in all nodes in order to facilitate
      the design, deployment, and operations of the domain.</t>
      <t pn="section-10-4">When EPE (<xref target="I-D.ietf-spring-segment-routing-central-epe" format="default" sectionFormat="of" derivedContent="SR-CENTRAL-EPE"/>) is used (as
      explained in <xref target="EPE" format="default" sectionFormat="of" derivedContent="Section 7.3"/>), the same operational model is
      assumed. EPE information is originated and propagated throughout the
      domain towards an internal server, and unless explicitly configured by
      the operator, no EPE information is leaked outside the domain
      boundaries.</t>
    </section>
    <section anchor="SEC" numbered="true" toc="include" removeInRFC="false" pn="section-11">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t pn="section-11-1">This document proposes to apply SR to a well-known
      scalability requirement expressed in <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/> using the
      BGP Prefix-SID as defined in <xref target="RFC8669" format="default" sectionFormat="of" derivedContent="RFC8669"/>.</t>
      <t pn="section-11-2">It has to be noted, as described in <xref target="MANAGE" format="default" sectionFormat="of" derivedContent="Section 10"/>, that the
      design illustrated in <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/> and in this document
      refer to a deployment model where all nodes are under the same
      administration. In this context, it is assumed that the operator doesn't
      want to leak outside of the domain any information related to internal
      prefixes and topology. The internal information includes Prefix-SID and
      EPE information. In order to prevent such leaking, the standard BGP
      mechanisms (filters) are applied on the boundary of the domain.</t>
      <t pn="section-11-3">Therefore, the solution proposed in this document does not introduce
      any additional security concerns from what is expressed in <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/> and <xref target="RFC8669" format="default" sectionFormat="of" derivedContent="RFC8669"/>. It
      is assumed that the security and confidentiality of the prefix and
      topology information is preserved by outbound filters at each peering
      point of the domain as described in <xref target="MANAGE" format="default" sectionFormat="of" derivedContent="Section 10"/>.</t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-spring-segment-routing-central-epe" to="SR-CENTRAL-EPE"/>
    <displayreference target="I-D.ietf-6man-segment-routing-header" to="IPv6-SRH"/>
    <references pn="section-12">
      <name slugifiedName="name-references">References</name>
      <references pn="section-12.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC4271" target="https://www.rfc-editor.org/info/rfc4271" quoteTitle="true" derivedAnchor="RFC4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author initials="Y." surname="Rekhter" fullname="Y. Rekhter" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Li" fullname="T. Li" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Hares" fullname="S. Hares" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="January"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems.  This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR).  These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP.  BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t>This document obsoletes RFC 1771.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
        <reference anchor="RFC7938" target="https://www.rfc-editor.org/info/rfc7938" quoteTitle="true" derivedAnchor="RFC7938">
          <front>
            <title>Use of BGP for Routing in Large-Scale Data Centers</title>
            <author initials="P." surname="Lapukhov" fullname="P. Lapukhov">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Premji" fullname="A. Premji">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Mitchell" fullname="J. Mitchell" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="August"/>
            <abstract>
              <t>Some network operators build and operate data centers that support over one hundred thousand servers.  In this document, such data centers are referred to as "large-scale" to differentiate them from smaller infrastructures.  Environments of this scale have a unique set of network requirements with an emphasis on operational simplicity and network stability.  This document summarizes operational experience in designing and operating large-scale data centers using BGP as the only routing protocol.  The intent is to report on a proven and stable routing design that could be leveraged by others in the industry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7938"/>
          <seriesInfo name="DOI" value="10.17487/RFC7938"/>
        </reference>
        <reference anchor="RFC8277" target="https://www.rfc-editor.org/info/rfc8277" quoteTitle="true" derivedAnchor="RFC8277">
          <front>
            <title>Using BGP to Bind MPLS Labels to Address Prefixes</title>
            <author initials="E." surname="Rosen" fullname="E. Rosen">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="October"/>
            <abstract>
              <t>This document specifies a set of procedures for using BGP to advertise that a specified router has bound a specified MPLS label (or a specified sequence of MPLS labels organized as a contiguous part of a label stack) to a specified address prefix.  This can be done by sending a BGP UPDATE message whose Network Layer Reachability Information field contains both the prefix and the MPLS label(s) and whose Next Hop field identifies the node at which said prefix is bound to said label(s).  This document obsoletes RFC 3107.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8277"/>
          <seriesInfo name="DOI" value="10.17487/RFC8277"/>
        </reference>
        <reference anchor="RFC8402" target="https://www.rfc-editor.org/info/rfc8402" quoteTitle="true" derivedAnchor="RFC8402">
          <front>
            <title>Segment Routing Architecture</title>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Ginsberg" fullname="L. Ginsberg">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Decraene" fullname="B. Decraene">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Litkowski" fullname="S. Litkowski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Shakir" fullname="R. Shakir">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="July"/>
            <abstract>
              <t>Segment Routing (SR) leverages the source routing paradigm.  A node steers a packet through an ordered list of instructions, called "segments".  A segment can represent any instruction, topological or service based.  A segment can have a semantic local to an SR node or global within an SR domain.  SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t>
              <t>SR can be directly applied to the MPLS architecture with no change to the forwarding plane.  A segment is encoded as an MPLS label.  An ordered list of segments is encoded as a stack of labels.  The segment to process is on the top of the stack.  Upon completion of a segment, the related label is popped from the stack.</t>
              <t>SR can be applied to the IPv6 architecture, with a new type of routing header.  A segment is encoded as an IPv6 address.  An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header.  The active segment is indicated by the Destination Address (DA) of the packet.  The next active segment is indicated by a pointer in the new routing header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8402"/>
          <seriesInfo name="DOI" value="10.17487/RFC8402"/>
        </reference>
        <reference anchor="RFC8669" target="https://www.rfc-editor.org/info/rfc8669" quoteTitle="true" derivedAnchor="RFC8669">
          <front>
            <title>Segment Routing Prefix Segment Identifier Extensions for BGP</title>
            <author initials="S" surname="Previdi" fullname="Stefano Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C" surname="Filsfils" fullname="Clarence Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A" surname="Lindem" fullname="Acee Lindem" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A" surname="Sreekantiah" fullname="Arjun Sreekantiah">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H" surname="Gredler" fullname="Hannes Gredler">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="December" year="2019"/>
          </front>
          <seriesInfo name="RFC" value="8669"/>
          <seriesInfo name="DOI" value="10.17487/RFC8669"/>
        </reference>
      </references>
      <references pn="section-12.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.ietf-6man-segment-routing-header" quoteTitle="true" target="https://tools.ietf.org/html/draft-ietf-6man-segment-routing-header-26" derivedAnchor="IPv6-SRH">
          <front>
            <title>IPv6 Segment Routing Header (SRH)</title>
            <author initials="C" surname="Filsfils" fullname="Clarence Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D" surname="Dukes" fullname="Darren Dukes">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Previdi" fullname="Stefano Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J" surname="Leddy" fullname="John Leddy">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Matsushima" fullname="Satoru Matsushima">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D" surname="Voyer" fullname="Daniel Voyer">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="October" day="22" year="2019"/>
            <abstract>
              <t>Segment Routing can be applied to the IPv6 data plane using a new type of Routing Extension Header called the Segment Routing Header. This document describes the Segment Routing Header and how it is used by Segment Routing capable nodes.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-6man-segment-routing-header-26"/>
          <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-6man-segment-routing-header-26.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC6793" target="https://www.rfc-editor.org/info/rfc6793" quoteTitle="true" derivedAnchor="RFC6793">
          <front>
            <title>BGP Support for Four-Octet Autonomous System (AS) Number Space</title>
            <author initials="Q." surname="Vohra" fullname="Q. Vohra">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Chen" fullname="E. Chen">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2012" month="December"/>
            <abstract>
              <t>The Autonomous System number is encoded as a two-octet entity in the base BGP specification.  This document describes extensions to BGP to carry the Autonomous System numbers as four-octet entities.  This document obsoletes RFC 4893 and updates RFC 4271.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6793"/>
          <seriesInfo name="DOI" value="10.17487/RFC6793"/>
        </reference>
        <reference anchor="I-D.ietf-spring-segment-routing-central-epe" quoteTitle="true" target="https://tools.ietf.org/html/draft-ietf-spring-segment-routing-central-epe-10" derivedAnchor="SR-CENTRAL-EPE">
          <front>
            <title>Segment Routing Centralized BGP Egress Peer Engineering</title>
            <author initials="C" surname="Filsfils" fullname="Clarence Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Previdi" fullname="Stefano Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G" surname="Dawra" fullname="Gaurav Dawra">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E" surname="Aries" fullname="Ebben Aries">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D" surname="Afanasiev" fullname="Dmitry Afanasiev">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="December" day="21" year="2017"/>
            <abstract>
              <t>Segment Routing (SR) leverages source routing.  A node steers a packet through a controlled set of instructions, called segments, by prepending the packet with an SR header.  A segment can represent any instruction topological or service-based.  SR allows to enforce a flow through any topological path while maintaining per-flow state only at the ingress node of the SR domain.  The Segment Routing architecture can be directly applied to the MPLS dataplane with no change on the forwarding plane.  It requires a minor extension to the existing link-state routing protocols.  This document illustrates the application of Segment Routing to solve the BGP Egress Peer Engineering (BGP-EPE) requirement.  The SR-based BGP-EPE solution allows a centralized (Software Defined Network, SDN) controller to program any egress peer policy at ingress border routers or at hosts within the domain.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-spring-segment-routing-central-epe-10"/>
          <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-spring-segment-routing-central-epe-10.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t pn="section-appendix.a-1">The authors would like to thank Benjamin Black, Arjun Sreekantiah,
      Keyur Patel, Acee Lindem, and Anoop Ghanwani for their comments and
      review of this document.</t>
    </section>
    <section anchor="Contributors" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-contributors">Contributors</name>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.b-1">Gaya Nagarajan
Facebook
United States of America

Email: gaya@fb.com</artwork>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.b-2">Gaurav Dawra
Cisco Systems
United States of America

Email: gdawra.ietf@gmail.com</artwork>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.b-3">Dmitry Afanasiev
Yandex
Russian Federation

Email: fl0w@yandex-team.ru</artwork>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.b-4">Tim Laberge
Cisco
United States of America

Email: tlaberge@cisco.com</artwork>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.b-5">Edet Nkposong
Salesforce.com Inc.
United States of America

Email: enkposong@salesforce.com</artwork>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.b-6">Mohan Nanduri
Microsoft
United States of America

Email: mohan.nanduri@oracle.com</artwork>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.b-7">James Uttaro
ATT
United States of America

Email: ju1738@att.com</artwork>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.b-8">Saikat Ray
Unaffiliated
United States of America

Email: raysaikat@gmail.com</artwork>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.b-9">Jon Mitchell
Unaffiliated
United States of America

Email: jrmitche@puck.nether.net</artwork>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Clarence Filsfils" initials="C." role="editor" surname="Filsfils">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street/>
            <city>Brussels</city>
            <region/>
            <code/>
            <country>Belgium</country>
          </postal>
          <email>cfilsfil@cisco.com</email>
        </address>
      </author>
      <author fullname="Stefano Previdi" initials="S." surname="Previdi">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street/>
            <city/>
            <code/>
            <country>Italy</country>
          </postal>
          <email>stefano@previdi.net</email>
        </address>
      </author>
      <author fullname="Gaurav Dawra" initials="G." surname="Dawra">
        <organization showOnFrontPage="true">LinkedIn</organization>
        <address>
          <postal>
            <street/>
            <city/>
            <code/>
            <country>United States of America</country>
          </postal>
          <email>gdawra.ietf@gmail.com</email>
        </address>
      </author>
      <author fullname="Ebben Aries" initials="E." surname="Aries">
        <organization showOnFrontPage="true">Arrcus, Inc.</organization>
        <address>
          <postal>
            <street>2077 Gateway Place, Suite #400</street>
            <city>San Jose</city>
            <code>CA 95119</code>
            <country>United States of America</country>
          </postal>
          <email>exa@arrcus.com</email>
        </address>
      </author>
      <author fullname="Petr Lapukhov" initials="P." surname="Lapukhov">
        <organization showOnFrontPage="true">Facebook</organization>
        <address>
          <postal>
            <street/>
            <city/>
            <code/>
            <country>United States of America</country>
          </postal>
          <email>petr@fb.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
