<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-michielsen-srv6ops-service-rr-ai-dc-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="BGP Service-Route Distribution">BGP Service-Route distribution in AI data centers</title>
    <seriesInfo name="Internet-Draft" value="draft-michielsen-srv6ops-service-rr-ai-dc-00"/>
    <author initials="K." surname="Michielsen" fullname="Kris Michielsen" role="editor">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Belgium</country>
        </postal>
        <email>kmichiel@cisco.com</email>
      </address>
    </author>
    <author initials="C." surname="Filsfils" fullname="Clarence Filsfils">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Belgium</country>
        </postal>
        <email>cf@cisco.com</email>
      </address>
    </author>
    <author initials="E." surname="Ruan" fullname="Eddie Ruan">
      <organization>Alibaba Cloud</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>eddie.ruan@alibaba-inc.com</email>
      </address>
    </author>
    <author initials="Y." surname="Zhao" fullname="Yuqing Zhao">
      <organization>Alibaba Cloud</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>galadriel.zyq@alibaba-inc.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>OPS</area>
    <workgroup>SRv6 Operations</workgroup>
    <keyword>SRv6</keyword>
    <keyword>Route Reflector</keyword>
    <keyword>AI</keyword>
    <abstract>
      <?line 50?>

<t>AI clusters and hyperscale data centers can contain hundreds of leaf switches and large
numbers of service prefixes.  In a conventional BGP leaf-spine design,
each spine distributes routes for the service prefixes originated by one
leaf to all other leaves.  This leads to a large number of received BGP
route instances on the leaves and many FIB entries for service prefixes
on the spines.</t>
      <t>This document describes an alternative deployment in which dedicated
eBGP speakers, referred to in this document as Service RRs, distribute service routes.  The
spines continue to distribute infrastructure routes but do not carry
service routes.  A Service RR uses regular eBGP procedures while
advertising service routes with NEXT_HOP unchanged.  The leaves encapsulate the
service traffic and the spines 
forward the encapsulated service traffic using
infrastructure reachability.</t>
      <t>The design improves control- and data-plane scaling by reducing the number of service-route instances received by
each leaf and removing service-route state and processing
from the spines.  This document defines no new BGP extension.</t>
    </abstract>
  </front>
  <middle>
    <?line 72?>

<section anchor="sec-introduction">
      <name>Introduction</name>
      <t>AI clusters and large data-center networks commonly use BGP as their routing protocol
<xref target="RFC7938"/>.  A typical design uses a two-tier folded Clos topology in
which every leaf has an eBGP session with every spine.  The spines
share one ASN, and each leaf uses a distinct ASN.  The BGP sessions
distribute both infrastructure reachability and service reachability.</t>
      <t>The fabric offers many equal-cost paths between leaves.  When service
routes are distributed through the spines, every spine advertises a
route for every remote service prefix to every leaf.  The number of
received BGP route instances is multiplied by the number of spines.</t>
      <t>This document describes a deployment that separates the two route
distribution functions.  Existing leaf-spine eBGP sessions continue to
distribute infrastructure routes.  A separate set of eBGP speakers,
called Service RRs, distributes the service routes.  Each leaf adds a
multihop eBGP session to each Service RR.</t>
      <t>The term Service RR does not indicate use of the iBGP route-reflection procedures
defined in <xref target="RFC4456"/>.  A Service RR is a regular eBGP speaker.  It applies the
existing BGP procedures defined in <xref target="RFC4271"/>, including best-path
selection and AS_PATH processing.  When advertising a service route to
a leaf, its one special behavior is to leave the BGP NEXT_HOP
unchanged.  The next hop therefore continues to identify the leaf that
originated the service route.  The receiving leaf resolves that next
hop through the infrastructure routes distributed by the spines.
If the service route carries an SRv6 Service SID, the Service RR also propagates 
the associated SRv6 Service TLV, as specified in <xref target="RFC9252"/> for advertisements 
that retain the BGP next hop.</t>
      <t>The Service RRs do not forward service traffic.  An ingress leaf
encapsulates the traffic in IPv6.  The outer IPv6 destination identifies 
an encapsulation destination reachable through the infrastructure routes, 
such as an egress-leaf address or an SRv6 Service SID.
The spines forward the encapsulated packet using infrastructure
reachability.</t>
      <t>The benefit of this design is a reduction in service-route instances at each leaf and the
removal of service routes and their update processing from the spines.</t>
      <t>This document does not define new BGP extensions or data-plane behavior.</t>
    </section>
    <section anchor="sec-terminology">
      <name>Terminology</name>
      <t>The following terms are used in this document:</t>
      <t><strong>BGP route:</strong> A service or infrastructure prefix together with the 
BGP path attributes associated with that prefix.</t>
      <t><strong>BGP route instance:</strong> A BGP route received from a particular peer. 
A leaf can receive multiple route instances for the same prefix from different peers.</t>
      <t><strong>Infrastructure prefix:</strong>  A prefix used to reach a switch loopback,
link, tunnel endpoint, SRv6 locator, or other part of the fabric
infrastructure.</t>
      <t><strong>Service prefix:</strong>  A prefix used to reach a server, workload, or
service endpoint.</t>
      <t><strong>Service RR:</strong>  An eBGP speaker that receives service routes from
leaves and advertises selected service routes to other leaves.  It uses
regular eBGP procedures and preserves NEXT_HOP when propagating a
service route.  It does not use the iBGP route-reflection procedures of
<xref target="RFC4456"/>.</t>
    </section>
    <section anchor="sec-existing-leaf-spine-design">
      <name>Existing Leaf-Spine Design</name>
      <section anchor="sec-topology-and-addressing-model">
        <name>Topology and Addressing Model</name>
        <t>Consider a full-bandwidth two-tier folded Clos in which each spine has
one link to each leaf.  This document uses rounded values to make the
calculations easier to follow:</t>
        <artwork><![CDATA[
S = 200 spines
L = 500 leaves
P = 200 service endpoint prefixes per leaf
Q = 4 Service RRs
]]></artwork>
        <t>Assuming one infrastructure prefix per switch, the fabric contains 700
infrastructure prefixes.  Assuming one service prefix per endpoint, the fabric
contains 100,000 service prefixes, corresponding to 500 leaves with 200 endpoint prefixes per
leaf in this example.</t>
        <t>Following the ASN-allocation style described in <xref target="RFC7938"/>, this
document assumes that all spines use a common ASN and that every leaf
uses a distinct ASN.  The common spine ASN prevents a route received
from one spine from being advertised by a leaf to another spine,
because the receiving spine's ASN would already be present in the
AS_PATH.</t>
        <t>Servers do not need to run BGP in this model.  A leaf can learn locally
attached service reachability by connected or static routing and
originate the corresponding service routes into BGP.</t>
      </section>
      <section anchor="sec-infrastructure-route-distribution">
        <name>Infrastructure-Route Distribution</name>
        <t>Every leaf has a direct eBGP session with every spine.  Each leaf
originates and advertises a route for its infrastructure prefix to every
spine.  A spine advertises a leaf's infrastructure route to all other
leaves.  Each spine originates and advertises a route for its own
infrastructure prefix to every leaf.</t>
        <t>For <tt>S = 200</tt> and <tt>L = 500</tt>, there are 700 infrastructure prefixes: 200
spine prefixes and 500 leaf prefixes.</t>
        <t>Since a spine receives one leaf infrastructure route from each of the
<tt>L</tt> leaves, it holds <tt>L</tt> received leaf-originated routes, in addition
to its locally originated infrastructure route.</t>
        <t>A leaf receives one directly originated spine route from each of the
<tt>S</tt> spines.  It also receives one route from each spine for every other
leaf's infrastructure prefix.  Its received infrastructure-route count
is therefore:</t>
        <artwork><![CDATA[
S + S * (L - 1) = S * L
]]></artwork>
        <t>For <tt>S = 200</tt> and <tt>L = 500</tt>, a leaf receives 100,000 BGP route
instances from its neighbors.  These route instances represent 699
remote infrastructure prefixes: 200 spine prefixes and 499 other-leaf
prefixes.</t>
        <t>When supported and enabled, BGP multipath allows the leaf to install
multiple ECMP paths for a remote leaf prefix in the forwarding table.
The leaf could install the 499 other-leaf infrastructure prefixes with 200 ECMP paths per prefix.</t>
      </section>
      <section anchor="sec-service-route-distribution">
        <name>Service-Route Distribution</name>
        <t>In the existing design, not using Service RRs, each leaf advertises one route 
for each of its <tt>P</tt> locally attached service endpoint prefixes to
each spine.  A spine receives one route for every service prefix, for a
total of:</t>
        <artwork><![CDATA[
L * P
]]></artwork>
        <t>With <tt>L = 500</tt> and <tt>P = 200</tt>, each spine receives 100,000 service
routes.  It advertises each service route to the other leaves.</t>
        <t>A leaf receives one route from every spine for every service prefix
originated by another leaf.  Its received remote service-route count is:</t>
        <artwork><![CDATA[
S * (L - 1) * P
]]></artwork>
        <t>For the example topology:</t>
        <artwork><![CDATA[
200 * (500 - 1) * 200 = 19,960,000 route instances
]]></artwork>
        <t>The leaf receives 19,960,000 remote BGP route instances representing
99,800 remote service prefixes.  Together with its 200 locally attached
service prefixes, the leaf represents 100,000 unique service prefixes.</t>
        <t>When supported and enabled, BGP multipath allows the leaf to install
multiple ECMP paths for a remote service prefix in the forwarding
table.
The leaf could install the 99,800 remote service prefixes with 200 ECMP paths per prefix.</t>
      </section>
    </section>
    <section anchor="sec-service-rr-architecture">
      <name>Service RR Architecture</name>
      <section anchor="sec-route-separation">
        <name>Route Separation</name>
        <t>The Service RR design separates infrastructure-route distribution from
service-route distribution:</t>
        <ul spacing="normal">
          <li>
            <t>The existing leaf-spine eBGP sessions distribute infrastructure
routes.</t>
          </li>
          <li>
            <t>Leaves do not advertise service routes to the spines, and the spines
do not hold or advertise service routes.</t>
          </li>
          <li>
            <t>Each leaf establishes an additional multihop eBGP session with each
Service RR.</t>
          </li>
          <li>
            <t>Leaves advertise service routes to the Service RRs.</t>
          </li>
          <li>
            <t>Each Service RR distributes eligible service routes to the leaves.</t>
          </li>
        </ul>
        <t>Import and export policies enforce this separation.  Infrastructure
routes remain available to resolve BGP next hops and IPv6 encapsulation destinations 
and to forward encapsulated traffic across the fabric.</t>
        <t>The Service RR is a control-plane node.  It is not in the forwarding
path between leaves.</t>
      </section>
      <section anchor="sec-service-rr-bgp-behavior">
        <name>Service RR BGP Behavior</name>
        <t>A Service RR is a regular eBGP speaker.  It performs the existing
BGP procedures in <xref target="RFC4271"/>.</t>
        <t>Each Service RR uses an ASN different from every leaf ASN, so every Service RR-to-leaf session is an eBGP session.
Service RRs can share an ASN or use different ASNs.
This choice can affect multipath eligibility but does not change the route-distribution procedures described here.</t>
        <t>The behavior specific to this architecture is
that the Service RR advertises a service route with NEXT_HOP unchanged.
The NEXT_HOP received from the originating leaf is therefore retained
when the route is advertised to another leaf.  The receiving leaf
resolves that next hop through the infrastructure routes learned from
the spines.</t>
        <t>If a service route carries an SRv6 Service SID, the Service RR also 
propagates the associated SRv6 Service TLV, as specified in <xref target="RFC9252"/> for 
advertisements that retain the BGP next hop.
When present, the receiving leaf
resolves the Service SID through the infrastructure route that covers its locator.</t>
        <t>When a route for an IPv4 service prefix is advertised with the originating
leaf's IPv6 address as NEXT_HOP, the peers use the Extended Next Hop
Encoding capability and procedures specified in <xref target="RFC8950"/>.  The
Service RR preserves that IPv6 next hop when advertising the service
route to another leaf.  This next-hop encoding applies independently 
of the encapsulation selected for the service traffic.</t>
        <t>Service RRs operate independently and do not need to
exchange service routes with one another because each leaf advertises
its service routes to each Service RR.</t>
      </section>
      <section anchor="sec-use-of-multiple-service-rrs">
        <name>Use of Multiple Service RRs</name>
        <t>Each leaf establishes a multihop eBGP session with each of the <tt>Q</tt>
Service RRs.  Every Service RR receives the service routes directly
from the originating leaves, independently selects its best routes,
and advertises eligible routes to the other leaves.</t>
        <t>The Service RRs should reside in separate failure domains.  No
Service RR is a data-plane next hop, so the loss of one Service RR does
not directly affect service traffic forwarding, provided that at least one other Service RR remains
available and advertises equivalent usable routes.</t>
        <t>Adding Service RRs increases the number of BGP sessions at a leaf.  In
the example, a leaf retains its 200 sessions to the spines and adds
<tt>Q</tt> Service RR sessions.  With four Service RRs, a leaf has 204 BGP
sessions in total.</t>
      </section>
      <section anchor="sec-scaling-analysis">
        <name>Scaling Analysis</name>
        <t>Each Service RR receives one route for each of the <tt>L * P</tt> service
prefixes.  In the example, each Service RR receives 100,000 service
routes.</t>
        <t>Each Service RR advertises one selected route for a remote service
prefix to a leaf.  A leaf can therefore receive <tt>Q</tt> route instances for
each remote service prefix.  Its received remote service-route count is:</t>
        <artwork><![CDATA[
Q * (L - 1) * P
]]></artwork>
        <t>With four Service RRs (Q = 4):</t>
        <artwork><![CDATA[
4 * (500 - 1) * 200 = 399,200 route instances
]]></artwork>
        <t>Compared with the design without Service RRs, the number of remote service-route 
instances received by each leaf is significantly reduced. In this example, 
it is reduced from 19,960,000 to 399,200, a factor of 50.
The number of unique service prefixes and associated FIB entries for
service prefixes at a leaf remains approximately 100,000.</t>
        <t>The Service RR
design reduces replicated BGP route state and update processing at leaves
and removes service-route state and update processing from the spines.</t>
      </section>
    </section>
    <section anchor="sec-data-plane-forwarding">
      <name>Data-Plane Forwarding</name>
      <section anchor="sec-encapsulation-and-resolution">
        <name>Encapsulation and Resolution</name>
        <t>The spine routing tables do not contain routes for service prefixes.  An
ingress leaf therefore encapsulates a service packet in an outer IPv6
packet before sending it across the fabric.  The spines forward the
outer IPv6 packet using infrastructure routes.  The encapsulation
determines how the outer destination is selected and resolved.</t>
        <t>This document describes IP-in-IPv6 and SRv6 encapsulation as examples.</t>
        <t>For IP-in-IPv6 encapsulation <xref target="RFC2473"/>, the BGP NEXT_HOP of the
service route identifies the egress leaf rather than the Service RR.
The ingress leaf recursively resolves this next hop through an
infrastructure route to the egress leaf.  That infrastructure route can
provide equal-cost paths through multiple spines.</t>
        <t>The ingress leaf places the original IPv4 or IPv6 packet in an outer
IPv6 packet whose destination is an IPv6 address assigned to the egress
leaf, such as its loopback address.  The egress leaf removes the outer
IPv6 header and forwards the inner packet to the service endpoint.</t>
        <t>For SRv6 encapsulation, an egress leaf allocates an SRv6 Service SID for
the applicable forwarding context and associates that SID with the
advertised service routes.  For a global IPv4 and IPv6 service, the
Service SID can be an End.DT46 SID associated with the main IPv4 and
IPv6 forwarding tables, as specified in <xref target="RFC8986"/>.  The egress leaf
advertises the service route and its Service SID using the SRv6 L3
Service TLV of the BGP Prefix-SID attribute, as specified in
<xref target="RFC9252"/>.</t>
        <t>The Service SID is allocated from an SRv6 locator for which the egress
leaf advertises an infrastructure route.  The ingress leaf uses the
Service SID as the destination of the outer IPv6 header, and the spines
forward the packet using the route for the locator.  The BGP NEXT_HOP
continues to identify the egress leaf and is used to track reachability
to that leaf.</t>
        <t>At the egress leaf, the Service SID behavior processes the packet.  If
the Service SID is an End.DT46 SID, the egress leaf decapsulates the
packet and performs the IPv4 or IPv6 lookup.</t>
        <t>A service route remains an individual route regardless of the encapsulation. 
It is usable only while its BGP next hop and the forwarding information required by 
the selected encapsulation remain resolvable.</t>
      </section>
    </section>
    <section anchor="sec-service-rr-failure-handling">
      <name>Service RR Failure Handling</name>
      <t>A Service RR does not appear in the forwarding chain.  Loss
of a single Service RR therefore does not directly break the data
plane.  The affected eBGP session fails, routes learned only over that
session are withdrawn, and regular BGP route selection chooses among
the routes remaining from other Service RRs.  Forwarding is expected to
continue when at least one other Service RR remains established and
advertises an equivalent usable route.</t>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="sec-iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2473">
          <front>
            <title>Generic Packet Tunneling in IPv6 Specification</title>
            <author fullname="A. Conta" initials="A." surname="Conta"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <date month="December" year="1998"/>
            <abstract>
              <t>This document defines the model and generic mechanisms for IPv6 encapsulation of Internet packets, such as IPv6 and IPv4. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2473"/>
          <seriesInfo name="DOI" value="10.17487/RFC2473"/>
        </reference>
        <reference anchor="RFC4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
            <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR). These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t>This document obsoletes RFC 1771. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
        <reference anchor="RFC8950">
          <front>
            <title>Advertising IPv4 Network Layer Reachability Information (NLRI) with an IPv6 Next Hop</title>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="S. Agrawal" initials="S." surname="Agrawal"/>
            <author fullname="K. Ananthamurthy" initials="K." surname="Ananthamurthy"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <date month="November" year="2020"/>
            <abstract>
              <t>Multiprotocol BGP (MP-BGP) specifies that the set of usable next-hop address families is determined by the Address Family Identifier (AFI) and the Subsequent Address Family Identifier (SAFI). The AFI/SAFI definitions for the IPv4 address family only have provisions for advertising a next-hop address that belongs to the IPv4 protocol when advertising IPv4 Network Layer Reachability Information (NLRI) or VPN-IPv4 NLRI.</t>
              <t>This document specifies the extensions necessary to allow the advertising of IPv4 NLRI or VPN-IPv4 NLRI with a next-hop address that belongs to the IPv6 protocol. This comprises an extension of the AFI/SAFI definitions to allow the address of the next hop for IPv4 NLRI or VPN-IPv4 NLRI to also belong to the IPv6 protocol, the encoding of the next hop to determine which of the protocols the address actually belongs to, and a BGP Capability allowing MP-BGP peers to dynamically discover whether they can exchange IPv4 NLRI and VPN-IPv4 NLRI with an IPv6 next hop. This document obsoletes RFC 5549.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8950"/>
          <seriesInfo name="DOI" value="10.17487/RFC8950"/>
        </reference>
        <reference anchor="RFC8986">
          <front>
            <title>Segment Routing over IPv6 (SRv6) Network Programming</title>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="P. Camarillo" initials="P." role="editor" surname="Camarillo"/>
            <author fullname="J. Leddy" initials="J." surname="Leddy"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
            <author fullname="Z. Li" initials="Z." surname="Li"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>The Segment Routing over IPv6 (SRv6) Network Programming framework enables a network operator or an application to specify a packet processing program by encoding a sequence of instructions in the IPv6 packet header.</t>
              <t>Each instruction is implemented on one or several nodes in the network and identified by an SRv6 Segment Identifier in the packet.</t>
              <t>This document defines the SRv6 Network Programming concept and specifies the base set of SRv6 behaviors that enables the creation of interoperable overlays with underlay optimization.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8986"/>
          <seriesInfo name="DOI" value="10.17487/RFC8986"/>
        </reference>
        <reference anchor="RFC9252">
          <front>
            <title>BGP Overlay Services Based on Segment Routing over IPv6 (SRv6)</title>
            <author fullname="G. Dawra" initials="G." role="editor" surname="Dawra"/>
            <author fullname="K. Talaulikar" initials="K." role="editor" surname="Talaulikar"/>
            <author fullname="R. Raszuk" initials="R." surname="Raszuk"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="S. Zhuang" initials="S." surname="Zhuang"/>
            <author fullname="J. Rabadan" initials="J." surname="Rabadan"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document defines procedures and messages for SRv6-based BGP services, including Layer 3 Virtual Private Network (L3VPN), Ethernet VPN (EVPN), and Internet services. It builds on "BGP/MPLS IP Virtual Private Networks (VPNs)" (RFC 4364) and "BGP MPLS-Based Ethernet VPN" (RFC 7432).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9252"/>
          <seriesInfo name="DOI" value="10.17487/RFC9252"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4456">
          <front>
            <title>BGP Route Reflection: An Alternative to Full Mesh Internal BGP (IBGP)</title>
            <author fullname="T. Bates" initials="T." surname="Bates"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <date month="April" year="2006"/>
            <abstract>
              <t>The Border Gateway Protocol (BGP) is an inter-autonomous system routing protocol designed for TCP/IP internets. Typically, all BGP speakers within a single AS must be fully meshed so that any external routing information must be re-distributed to all other routers within that Autonomous System (AS). This represents a serious scaling problem that has been well documented with several alternatives proposed.</t>
              <t>This document describes the use and design of a method known as "route reflection" to alleviate the need for "full mesh" Internal BGP (IBGP).</t>
              <t>This document obsoletes RFC 2796 and RFC 1966. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4456"/>
          <seriesInfo name="DOI" value="10.17487/RFC4456"/>
        </reference>
        <reference anchor="RFC7938">
          <front>
            <title>Use of BGP for Routing in Large-Scale Data Centers</title>
            <author fullname="P. Lapukhov" initials="P." surname="Lapukhov"/>
            <author fullname="A. Premji" initials="A." surname="Premji"/>
            <author fullname="J. Mitchell" initials="J." role="editor" surname="Mitchell"/>
            <date month="August" year="2016"/>
            <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>
      </references>
    </references>
    <?line 408?>

<section numbered="false" anchor="sec-acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank Ahmed Abdelsalam for his input and review.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
