<?xml version="1.0" encoding="US-ASCII"?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="info" docName="draft-ietf-lsvr-applicability-19"
     ipr="trust200902" submissionType="IETF" tocDepth="5" version="2">
  <front>
    <title abbrev="BGP-SPF Applicability">Usage and Applicability of
     BGP Link-State Shortest Path Routing (BGP-SPF) in Data Centers</title>

    <author fullname="Keyur Patel" initials="K" surname="Patel">
      <organization>Arrcus, Inc.</organization>
      <address>
        <postal>
          <street>2077 Gateway Pl</street>
          <city>San Jose, CA</city>
          <country>USA</country>
          <code>95110</code>
        </postal>
        <phone/>
        <email>keyur@arrcus.com</email>
      </address>
    </author>

    <author fullname="Acee Lindem" initials="A" surname="Lindem">
      <organization>LabN Consulting, L.L.C.</organization>
      <address>
        <postal>
          <street>301 Midenhall Way</street>
          <city>Cary, NC</city>
          <country>USA</country>
          <code>95110</code>
        </postal>
        <phone/>
        <email>acee.ietf@gmail.com</email>
      </address>
    </author>

    <author fullname="Shawn Zandi" initials="S" surname="Zandi">
      <organization>Linkedin</organization>
      <address>
        <postal>
          <street>222 2nd Street</street>
          <city>San Francisco</city>
          <region>CA</region>
          <code>94105</code>
          <country>USA</country>
        </postal>
        <email>szandi@linkedin.com</email>
      </address>
    </author>

    <author fullname="Gaurav Dawra" initials="G" surname="Dawra">
      <organization>Linkedin</organization>
      <address>
        <postal>
          <street>222 2nd Street</street>
          <city>San Francisco</city>
          <region>CA</region>
          <code>94105</code>
          <country>USA</country>
        </postal>
        <email>gdawra@linkedin.com</email>
      </address>
    </author>

    <author fullname="Jie Dong" initials="J." surname="Dong">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>No. 156 Beiqing Road</street>
          <city>Beijing</city>
          <region/>
          <code/>
          <country>China</country>
        </postal>
        <email>jie.dong@huawei.com</email>
      </address>
    </author>
    <date/>

    <abstract>
      <t>
        This document discusses the usage and applicability of BGP Link-State
        Shortest Path First (BGP-SPF) extensions in data center networks
        utilizing Clos or Fat-Tree topologies. The document is intended to
        provide simplified guidance for the deployment of BGP-SPF extensions.
      </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>
        This document complements <xref format="default"
        target="I-D.ietf-lsvr-bgp-spf"/> by discussing the applicability of the
        BGP-SPF technology in a simple and fairly common deployment scenario,
        which is described in <xref format="default" target="usecases"/>.
      </t>

      <t>
        <xref format="default" target="motivation"/> describes the reasons
        for BGP modifications for
        such deployments.
      </t>

      <t>
        <xref format="default" target="bgpspf"/> covers the BGP-SPF protocol
        enhancements to BGP to meet these requirements and their applicability
        to data center <xref format="default" target="Clos"/> networks.
      </t>
    </section>

    <section anchor="reco" title="Recommended Reading">
      <t>
        This document assumes knowledge of existing data center networks and
        data center network topologies <xref format="default" target="Clos"/>.
        This document also assumes knowledge of data center routing protocols
        such as BGP <xref format="default" target="RFC4271"/>, BGP-SPF <xref
        format="default" target="I-D.ietf-lsvr-bgp-spf"/>, OSPF <xref
        format="default" target="RFC2328"/>, as well as data center
        Operations, Administration, and Maintenance (OAM)
        protocols like Link Layer Discovery Protocol (LLDP)
        <xref format="default" target="RFC4957"/> and Bi-Directional Forwarding
        Detection (BFD) <xref format="default" target="RFC5580"/>.
      </t>
    </section>

    <section anchor="usecases" title="Common Deployment Scenario">
      <t>
        Within a data center, servers are commonly interconnected using the
        Clos topology <xref format="default" target="Clos"/>. The Clos topology
        is fully non-blocking and the topology is realized using Equal Cost
        Multi-Path (ECMP). In a multi-stage Clos topology, the minimum number of
        parallel paths in each tier is determined by the width of the stage as
        shown in the figure 1.
      </t>

      <t>
        <figure anchor="fig1">
          <name>Illustration of the basic Clos</name>

          <artwork align="left" alt="" name="" type=""><![CDATA[

                                  Tier 1
                                  +-----+
                                  |NODE |
                               +->|  1  |--+
                               |  +-----+  |
                       Tier 2  |           |  Tier 2
                      +-----+  |  +-----+  |  +-----+
       +------------->|NODE |--+->|NODE |--+--|NODE |--------------+
       |        +-----|  5  |--+  |  2  |  +--|  7  |-----+        |
       |        |     +-----+     +-----+     +-----+     |        |
       |        |                                         |        |
       |        |     +-----+     +-----+     +-----+     |        |
       | +------+---->|NODE |--+  |NODE |  +--|NODE |-----+------+ |
       | |      | +---|  6  |--+->|  3  |--+--|  8  |---+ |      | |
       | |      | |   +-----+  |  +-----+  |  +-----+   | |      | |
       | |Tier 3| |            |           |            | |Tier 3| |
     +-----+ +-----+           |  +-----+  |          +-----+ +-----+
     |NODE | |NODE |           +->|NODE |--+          |NODE | |NODE |
     |  9  | | 10  |              |  4  |             | 11  | | 12  |
     +-----+ +-----+              +-----+             +-----+ +-----+
      | | |   | | |                                    | | |    | | |
      <- Servers ->                                    <- Servers ->

      Tier 1 is comprised of Nodes 1, 2, 3, and 4
      Tier 2 is comprised of Nodes 5, 6, 7, and 8
      Tier 3 is comprised of Nodes 9, 10, 11, and 12

        ]]></artwork>
        </figure>
      </t>
    </section>

    <section anchor="motivation" title="Justification for BGP-SPF Extension">
      <t>
        To simplify L3 routing and operations, many data centers use BGP as a
        routing protocol to create both an underlay and an overlay network for their Clos
        Topologies <xref format="default" target="RFC7938"/>.
        However, BGP is a path-vector routing protocol. Since it
        does not create a fabric topology, it uses hop-by-hop External BGP
        (EBGP) peering to facilitate hop-by-hop routing to create the underlay
        network and to resolve any overlay next hops. The hop-by-hop BGP peering
        paradigm imposes several restrictions within a Clos. It severely
        prohibits the deployment of Route Reflectors/Route Controllers as the EBGP
        sessions are congruent with the data path. The BGP best-path algorithm
        is prefix-based and it prevents announcements of prefixes to other BGP
        speakers until the best-path decision process has been performed for the
        prefix at each intermediate hop. These restrictions significantly delay
        the overall convergence of the underlay network within a Clos
        network. Additional motivation for deploying BGP-SPF is included in
        <xref target="I-D.ietf-lsvr-bgp-spf"/>.
      </t>

      <t>
        The BGP-SPF modifications allow BGP to overcome these limitations.
        Furthermore, using the BGP-LS Network Layer Reachability Information
        (NLRI) format allows the BGP-SPF data to be
        advertised for nodes, links, and prefixes in the BGP routing domain and
        used for SPF computations <xref target="RFC9552"/>.
      </t>
    </section>

    <section anchor="bgpspf" title="BGP-SPF Applicability to Clos Networks">
      <t>
        With the BGP-SPF extensions <xref format="default"
        target="I-D.ietf-lsvr-bgp-spf"/>, the BGP best-path computation and
        route computation are replaced with link-state algorithms such as those
        used by OSPF <xref format="default" target="RFC2328"/>, both to determine
        whether an BGP-LS SPF NLRI has changed and needs to be re-advertised and
        to compute the BGP routes. These modifications will significantly
        improve convergence of the underlay while affording the operational
        benefits of a single routing protocol <xref format="default"
        target="RFC7938"/>.
      </t>

      <t>
        Data center controllers typically require visibility to the BGP
        topology to compute traffic-engineered paths. These controllers learn
        the topology and other relevant information via the BGP-LS address
        family <xref format="default" target="RFC9552"/> which is totally
        independent of the underlay address families (usually IPv4/IPv6
        unicast). Furthermore, in traditional BGP underlays, all the BGP routers
        will need to advertise their BGP-LS information independently. With the
        BGP-SPF extensions, controllers can learn the topology using the same
        BGP advertisements used to compute the underlay routes. Furthermore,
        these data center controllers can avail the convergence advantages of
        the BGP-SPF extensions. The placement of controllers can be outside of
        the forwarding path or within the forwarding path.
      </t>

      <t>
        Alternatively, as each and every router in the BGP-SPF domain will
        have a complete view of the topology, the operator can also choose to
        configure BGP sessions in the hop-by-hop peering model described in <xref
        format="default" target="RFC7938"/> along with BFD <xref
        format="default" target="RFC5580"/>. In doing so, while the hop-by-hop
        peering model lacks the inherent benefits of the controller-based model,
        BGP updates need not be serialized by the BGP best-path algorithm in either
        of these models. This helps overall network convergence.
      </t>

      <section anchor="lsvrsafi" title="Usage of BGP-LS SPF SAFI">
        <t>
          Section 5.1 of <xref format="default"
          target="I-D.ietf-lsvr-bgp-spf"/> defines a new BGP-LS-SPF SAFI for
          announcement of the BGP-SPF link-state. The NLRI format and its associated
          attributes follow the format of BGP-LS for node, link, and prefix
          announcements. Whether the peering model within a Clos follows
          hop-by-hop peering described in <xref format="default"
          target="RFC7938"/> or any controller-based or route-reflector peering,
          an operator can exchange BGP-LS SPF SAFI routes over the BGP peering
          by simply configuring BGP-LS SPF SAFI between the necessary BGP
          speakers.
        </t>

        <t>
          The BGP-LS SPF SAFI can also co-exist with BGP IP Unicast SAFI
          <xref target="RFC4760"/> which could exchange overlapping IP routes.
          One use case for this is where BGP-LS SPF routes are used for the
          underlay and BGP IP Unicast routes for VPNs are advertised in the
          overlay as described in <xref target="RFC4364"/>.
          The routes received by these SAFIs are
          evaluated, stored, and announced independently according to the rules
          of <xref format="default" target="RFC4760"/>. The tie-breaking of
          route installation is a matter of the local policies and preferences
          of the network operator.
        </t>

        <t>
          Finally, as the BGP-SPF peering is done following the procedures
          described in <xref format="default" target="RFC4271"/>, all the
          existing transport security mechanisms including <xref
          format="default" target="RFC5925"/> are available for the BGP-LS SPF
          SAFI.
        </t>

        <section anchor="other-safi"
                 title="Relationship to Other BGP AFI/SAFI Tuples">
          <t>
            Normally, the BGP-LS SPF AFI/SAFI is used solely to compute the
            underlay and is given preference over other AFI/SAFIs. Other BGP
            SAFIs, e.g., IPv6/IPv6 Unicast VPN would use the BGP-SPF computed
            routes for next hop resolution.
          </t>
        </section>
      </section>

      <section anchor="peering" title="Peering Models">
        <t>
          As previously stated, BGP-SPF can be deployed using the existing
          peering model where there is a single-hop BGP session on each and
          every link in the data center fabric <xref format="default"
          target="RFC7938"/>. This provides for both the advertisement of routes
          and the determination of link and neighboring switch availability.
          With BGP-SPF, the underlay will converge faster due to changes to the
          decision process that will allow NLRI changes to be advertised faster
          after detecting a change.
        </t>

        <section anchor="sparse-peering" title="Sparse Peering Model">
          <t>
            Alternately, BFD <xref format="default" target="RFC5580"/> can be
            used to swiftly determine the availability of links and the BGP
            peering model can be significantly sparser than the data center
            fabric. BGP-SPF sessions only need to be established with enough
            peers to provide a bi-connected graph. If Internal BGP (IBGP)
            is used, then the BGP routers at tier N-1 will act as route-reflectors
            for the routers at tier N.
          </t>

          <t>
            The obvious usage of sparse peering is to avoid parallel BGP
            sessions on links between the same two switches in the data center
            fabric. However, this use case is not very useful since parallel L3
            links between the same two BGP routers are rare in Clos or Fat-Tree
            topologies. Additionally, when there are multiple links, they are
            often aggregated at the link layer rather than the IP layer. Two
            more interesting scenarios are described below.
          </t>

          <t>
            In current data center topologies, there is often a very dense
            mesh of links between levels, e.g., leaf and spine, providing
            32-way, 64-way, or more Equal-Cost Multi-Path (ECMP) paths. In these
            topologies, it is desirable not to have a BGP session on every link
            and techniques such as the one described in <xref format="default"
            target="bi-connected"/> can be used to establish sessions on some
            subset of northbound links. For example, in a Spine-Leaf topology,
            each leaf switch would only peer with a subset of the spines
            dependent on the flooding redundancy required to be reasonably
            certain that every node within the BGP-LS SPF routing domain has the
            complete topology.
          </t>

          <t>
            Alternately, controller-based data center topologies are
            envisioned where BGP speakers within the data center only establish
            BGP sessions with two or more controllers. In these topologies,
            fabric nodes below the first tier, as shown in Figure 1 of
            <xref format="default" target="RFC7938"/>, will establish BGP
            multi-hop sessions with the controllers. For the multi-hop sessions,
            determining the
            route to the controllers without depending on BGP would need to be
            through some other means beyond the scope of this document. However,
            the BGP discovery mechanisms described in <xref format="default"
            target="bgp-discovery"/> would be one possibility.
          </t>
        </section>

        <section anchor="bi-connected" title="Bi-Connected Graph Heuristic">
          <t>
            With this heuristic, discovery of BGP SPF peers is assumed, e.g., as
            described in <xref format="default" target="bgp-discovery"/>. In
            this context, "bi-connected" refers to the fact that there must
            be an adverised link NLRI for both BGP SPF peers associated with
            the link before the link can be used in the BGP SPF route
            calcuation.
            Additionally, it assumed that the direction of the peering can be
            ascertained. In the context of a data center fabric, the direction is
            either northbound (toward the spine), southbound (toward the
            Top-Of-Rack (ToR) switches) or east-west (same level in the hierarchy).
            The determination of the direction is beyond the scope of this
            document. However, it would be reasonable to assume a technique
            where the ToR switches can be identified and the number of hops to
            the ToR is used to determine the direction.
          </t>
          <t>
            In this heuristic, BGP speakers allow passive session
            establishment for southbound BGP sessions. For northbound sessions,
            BGP speakers will attempt to maintain two northbound BGP sessions
            with different switches (in data center fabrics there is normally a
            single layer-3 connection anyway). For east-west sessions, passive
            BGP session establishment is allowed. However, a BGP speaker will
            never actively establish an east-west BGP session unless it cannot
            establish two northbound BGP sessions.
          </t>
          <t>
            BGP SPF sparse peering deployments not using this hueristic
            are possible but are not described herein and are considered
            out of scope.
          </t>
        </section>
      </section>

      <section anchor="bgp-policy" title="BGP Spine/Leaf Topology Policy">
        <t>
          One of the advantages of using BGP-SPF as the underlay protocol is
          that BGP policy can be applied at any level. For example, depending on
          the topology, it may be possible to aggregate prefix advertisements
          using existing BGP policy. In Spine/Leaf topologies, it is not
          necessary to advertise BGP-LS Prefix NLRI received by leaves
          northbound to the spine nodes. An aggregate route or a default route
          could suffice. If a common AS is used for the spine nodes, this can
          easily be accomplished with EBGP and a simple policy to filter
          advertisements from the leaves to the spine if the first AS in the AS
          path is the spine AS.
        </t>
        <t>
          In the figure below, the leaves would not advertise any NLRI with
          AS 64512 as the first AS in the AS path.
        </t>
        <t>
          <figure anchor="fig2">
            <name>Spine/Leaf Topology Policy</name>

            <artwork align="left" alt="" name="" type=""><![CDATA[
             +--------+    +--------+             +--------+
 AS 64512    |        |    |        |             |        |
 for Spine   | Spine 1+----+ Spine 2+- ......... -+ Spine N|
 Nodes at    |        |    |        |             |        |
 this Level  +-+-+-+-++    ++-+-+-+-+             +-+-+-+-++
        +------+ | | |      | | | |                 | | | |
        |  +-----|-|-|------+ | | |                 | | | |
        |  |  +--|-|-|--------+-|-|-----------------+ | | |
        |  |  |  | | |    +---+ | |                   | | |
        |  |  |  | | |    |  +--|-|-------------------+ | |
        |  |  |  | | |    |  |  | |              +------+ +----+
        |  |  |  | | |    |  |  | +--------------|----------+  |
        |  |  |  | | |    |  |  +-------------+  |          |  |
        |  |  |  | | +----|--|----------------|--|--------+ |  |
        |  |  |  | +------|--|--------------+ |  |        | |  |
        |  |  |  +------+ |  |              | |  |        | |  |
       ++--+--++      +-+-+--++            ++-+--+-+     ++-+--+-+
       | Leaf 1|      | Leaf 2|  ........  | Leaf X|     | Leaf Y|
       +-------+      +-------+            +-------+     +-------+


       ]]></artwork>
          </figure>
        </t>
      </section>

      <section anchor="bgp-discovery-req"
               title="BGP Peer Discovery Requirements">
        <t>
          The basic requirement is to be able to discover the address of a
          single-hop peer in case where the peer address is not pre-configured.
          This is being accomplished today by using IPv6 Router Advertisements
          (RA) <xref format="default" target="RFC4861"/> and assuming that a BGP
          session is desired with any discovered peer. Beyond the basic
          requirement, it is useful to have to following information relating to
          the BGP session:
        </t>
        <list style="symbols">
          <t>
            Autonomous System (AS) and BGP Identifier of a potential peer.
            The latter can be used for debugging and to decrease the
            likelihood of BGP session establishment collisions.
          </t>
          <t>
            Security capabilities supported and for cryptographic
            authentication, the security capabilities and possibly a key-chain
            <xref format="default" target="RFC8177"/> to be used.
          </t>
          <t>
            Session Policy Identifier - A group number or name used to
            associate common session parameters with the peer. For example, in
            a data center, BGP sessions with a ToR device could have different
            parameters than BGP sessions between leaf and spine.
          </t>
        </list>
        <t>
          In a data center fabric, it is often useful to know whether a
          peer is southbound (towards the servers) or northbound (towards the
          spine or super-spine), e.g., <xref format="default"
          target="bi-connected"/>. A potential requirement would be to determine
          this dynamically. One mechanism, without specifying all the details,
          might be for the ToR switches to be identified when installed and for
          the others switches in the fabric to determine their level based on
          the distance from the closest ToR switch.
        </t>

        <t>
          If there are multiple links between BGP speakers or the links
          between BGP speakers are unnumbered, it is also useful to be able to
          establish multi-hop sessions using the loopback addresses. This will
          often require the discovery protocol to install route(s) toward the
          potential peer loopback addresses prior to BGP session
          establishment.
        </t>

        <t>
          Finally, a simple BGP discovery protocol could also be used to
          establish a multi-hop session with one or more controllers by
          advertising connectivity to one or more controllers. However, once the
          multi-hop session traverses multiple nodes, it is bordering a
          distance-vector routing protocol and possibly this is not a good
          requirement for the discovery protocol.
        </t>
      </section>

      <section anchor="bgp-discovery" title="BGP Peer Discovery">
        <section anchor="bgp-ipv6-peering" title="BGP IPv6 Simplified Peering">
          <t>
            To conserve IPv4 address space and simplify operations, BGP-LS
            SPF routers in Clos/Fat Tree deployments can use IPv6 addresses as
            peer address. For IPv4 address families, IPv6 peering as specified
            in <xref format="default" target="RFC8950"/> can be deployed to
            avoid configuring IPv4 addresses on BGP-LS SPF router interfaces.
            When this is done, dynamic discovery mechanisms, as described in
            <xref format="default" target="bgp-discovery"/>, can be used to learn
            the global or link-local IPv6 peer addresses and IPv4 addresses need
            not be configured on these interfaces. If IPv6 link-local peering is
            used, then configuration of IPv6 global addresses is also not
            required <xref target="RFC7404"/> and these IPv6 link-local
            addresses must then be advertised
            in the BGP-LS Link Descriptor IPv6 Address TLV (262)
            <xref format="default" target="RFC9552"/>.
          </t>
        </section>

        <section anchor="config-checking"
                 title="BGP-LS SPF Topology Visibility for Management">
          <t>
            Irrespective of whether or not BGP-LS SPF is used for route
            calculation, the BGP-LS SPF route advertisements can be used to
            periodically construct the Clos/Fat Tree topology. This is
            especially useful in deployments where an Interior Gateway Protocol
            (IGP) is not used and the
            base BGP-LS routes <xref format="default" target="RFC9552"/> are not
            available. The resultant topology visibility can then be used for
            troubleshooting and consistency checking. This would normally be
            done on a central controller or other management tool which could
            also be used for fabric data path verification. The precise
            algorithms and heuristics, as well as the complete set of management
            applications is beyond the scope of this document.
          </t>
        </section>

        <section anchor="dci"
                 title="Data Center Interconnect (DCI) Applicability">
          <t>
            Since BGP-SPF is to be used for the routing underlay and DCI
            gateway boxes typically have direct or very simple connectivity, BGP
            external sessions would typically not include the BGP-LS SPF
            SAFI.
          </t>
        </section>
      </section>
    </section>

    <section anchor="other-env"
             title="Non-CLOS/FAT Tree Topology Applicability">
      <t>
        The BGP-SPF extensions <xref format="default"
        target="I-D.ietf-lsvr-bgp-spf"/> can be used in other topologies and
        avail the inherent convergence improvements. Additionally, sparse
        peering techniques may be utilized <xref format="default"
        target="peering"/>. However, determining whether to establish a BGP
        session is more complex and the heuristic described in <xref
        format="default" target="bi-connected"/> cannot be used. In such
        topologies, other techniques such as those described in <xref
        format="default" target="RFC9667"/> may be employed. One potential
        deployment would be the underlay for a Service Provider (SP) backbone
        where usage of a single protocol, i.e., BGP, is desired.
      </t>
    </section>

    <section anchor="non-transit-node" title="Non-Transit Node Capability">
      <t>
        In certain scenarios, a BGP node wishes to participate in the BGP-SPF
        topology but never be used for transit traffic. These include situations
        where a server wants to make application services available to clients
        homed at subnets throughout the BGP-SPF domain but does not ever want to
        be used as a router (i.e., carry transit traffic). Another specific
        instance is where a controller is resident on a server and direct
        connectivity to the controller is required throughout the entire domain.
        This can readily be accomplished using the BGP-LS Node NLRI Attribute
        SPF Status TLV as described in <xref format="default"
        target="I-D.ietf-lsvr-bgp-spf"/>.
      </t>
    </section>

    <section anchor="policy" title="BGP Policy Applicability">
      <t>
        Existing BGP policy including aggregation and prefix filtering may be
        used in conjunction with the BGP-LS SPF SAFI. When aggregation policy is
        used, BGP-LS SPF prefix NLRI will be originated for the aggregate prefix
        and BGP-LS SPF prefix NLRI for components will be filtered.
        Additionally, link and node NLRI may be filtered and abstracted by
        the prefix NLRI.
      </t>

      <t>
        When BGP policy is used with the BGP-LS SPF SAFI, BGP speakers in the
        BGP-LS SPF routing domain will not all have the same set of NLRI and
        will compute a different BGP local routing table. Consequently, care
        must be taken to assure routing is consistent and blackholes or routing
        loops do not ensue. However, this is no different than if traditional BGP
        routing using the IPv4 and IPv6 address families were used.
      </t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>
        No IANA updates are requested by this document.
      </t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>
        This document introduces no new security considerations above and
        beyond those already specified in the <xref format="default"
        target="RFC4271"/> and <xref format="default"
        target="I-D.ietf-lsvr-bgp-spf"/>.
      </t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>
        The authors would like to thank Alvaro Retana, Yan Filyurin, Boris
        Hassanov, Stig Venaas, Ron Bonica, Mallory Knodel, Dhruv Dhody, and
        Erik Kline for their review and comments.
      </t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.I-D.ietf-lsvr-bgp-spf.xml'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.2328.xml'?>
      <?rfc include='reference.RFC.4271.xml'?>
      <?rfc include='reference.RFC.4364.xml'?>
      <?rfc include='reference.RFC.4760.xml'?>
      <?rfc include='reference.RFC.4861.xml'?>
      <?rfc include='reference.RFC.4957.xml'?>
      <?rfc include='reference.RFC.5580.xml'?>
      <?rfc include='reference.RFC.5925.xml'?>
      <?rfc include='reference.RFC.7404.xml'?>
      <?rfc include='reference.RFC.7938.xml'?>
      <?rfc include='reference.RFC.8177.xml'?>
      <?rfc include='reference.RFC.8950.xml'?>
      <?rfc include='reference.RFC.9552.xml'?>
      <?rfc include='reference.RFC.9667.xml'?>
      <reference anchor="Clos" target="">
        <front>
          <title>A Study of Non-Blocking Switching Networks</title>

          <author initials="" surname="">
            <organization/>
          </author>

          <date month="March" year="1953"/>
        </front>

        <seriesInfo name=""
                    value="The Bell System Technical Journal, Vol. 32(2), DOI 10.1002/j.1538-7305.1953.tb01433.x"/>
      </reference>
    </references>
  </back>
</rfc>
