<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" docName="draft-ietf-lsvr-bgp-spf-51" number="9815" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" consensus="true" prepTime="2025-07-20T14:08:25" indexInclude="true" scripts="Common,Latin">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-lsvr-bgp-spf-51" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9815" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="BGP-LS SPF Routing">BGP Link State (BGP-LS) Shortest Path First (SPF) Routing</title>
    <seriesInfo name="RFC" value="9815" stream="IETF"/>
    <author fullname="Keyur Patel" initials="K" surname="Patel">
      <organization showOnFrontPage="true">Arrcus, Inc.</organization>
      <address>
        <email>keyur@arrcus.com</email>
      </address>
    </author>
    <author fullname="Acee Lindem" initials="A" surname="Lindem">
      <organization showOnFrontPage="true">Arrcus, Inc.</organization>
      <address>
        <postal>
          <street>301 Midenhall Way</street>
          <city>Cary</city>
          <region>NC</region>
          <code>27513</code>
          <country>United States of America</country>
        </postal>
        <email>acee.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Shawn Zandi" initials="S" surname="Zandi">
      <organization showOnFrontPage="true"/>
      <address>
        <email>shafagh@shafagh.com</email>
      </address>
    </author>
    <author fullname="Wim Henderickx" initials="W" surname="Henderickx">
      <organization showOnFrontPage="true">Nokia</organization>
      <address>
        <postal>
          <street>copernicuslaan 50</street>
          <city>Antwerp</city>
          <code>2018</code>
          <country>Belgium</country>
        </postal>
        <email>wim.henderickx@nokia.com</email>
      </address>
    </author>
    <date month="07" year="2025"/>
    <area>RTG</area>
    <workgroup>lsvr</workgroup>
    <keyword>IDR</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
        Many Massively Scaled Data Centers (MSDCs) have converged on simplified
        Layer 3 (L3) routing. Furthermore, requirements for operational simplicity
        have led many of these MSDCs to converge on BGP as their single routing
        protocol for both fabric routing and Data Center Interconnect
        (DCI) routing. This document describes extensions to BGP for use with BGP Link State (BGP-LS) distribution and the Shortest Path First (SPF) algorithm.
        In doing this, it allows
        BGP to be efficiently used as both the underlay protocol and the overlay protocol in
        MSDCs.
      </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 indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" 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).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" 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/rfc9815" 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 indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2025 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" 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 Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised 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 indent="0" 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>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
              </li>
              <li pn="section-toc.1-1.1.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.2.1"><xref derivedContent="1.2" format="counter" sectionFormat="of" target="section-1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
              <li pn="section-toc.1-1.1.2.3">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.3.1"><xref derivedContent="1.3" format="counter" sectionFormat="of" target="section-1.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-shortest-path-first-spf">BGP Shortest Path First (SPF) Motivation</xref></t>
              </li>
              <li pn="section-toc.1-1.1.2.4">
                <t indent="0" pn="section-toc.1-1.1.2.4.1"><xref derivedContent="1.4" format="counter" sectionFormat="of" target="section-1.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-document-overview">Document Overview</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" 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-base-bgp-protocol-relations">Base BGP Protocol Relationship</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" 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-bgp-link-state-bgp-ls-relat">BGP Link State (BGP-LS) Relationship</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" 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-bgp-spf-peering-models">BGP SPF Peering Models</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 indent="0" 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-single-hop-peering-on-n">BGP Single-Hop Peering on Network Node Connections</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" 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-bgp-peering-between-directl">BGP Peering Between Directly Connected Nodes</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" 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-bgp-peering-in-route-reflec">BGP Peering in Route-Reflector or Controller Topology</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" 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-bgp-shortest-path-first-spf-">BGP Shortest Path First (SPF) Routing Protocol Extensions</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-safi">BGP-LS-SPF SAFI</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.1.2">
                  <li pn="section-toc.1-1.5.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.5.2.1.2.1.1"><xref derivedContent="5.1.1" format="counter" sectionFormat="of" target="section-5.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-nlri-tlvs">BGP-LS-SPF NLRI TLVs</xref></t>
                  </li>
                  <li pn="section-toc.1-1.5.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.5.2.1.2.2.1"><xref derivedContent="5.1.2" format="counter" sectionFormat="of" target="section-5.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-attribute">BGP-LS Attribute</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-extensions-to-bgp-ls">Extensions to BGP-LS</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.2.2">
                  <li pn="section-toc.1-1.5.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.5.2.2.2.1.1"><xref derivedContent="5.2.1" format="counter" sectionFormat="of" target="section-5.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-node-nlri-usage">Node NLRI Usage</xref></t>
                    <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.2.2.1.2">
                      <li pn="section-toc.1-1.5.2.2.2.1.2.1">
                        <t indent="0" pn="section-toc.1-1.5.2.2.2.1.2.1.1"><xref derivedContent="5.2.1.1" format="counter" sectionFormat="of" target="section-5.2.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-node-nlri-attrib">BGP-LS-SPF Node NLRI Attribute SPF Status TLV</xref></t>
                      </li>
                    </ul>
                  </li>
                  <li pn="section-toc.1-1.5.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.5.2.2.2.2.1"><xref derivedContent="5.2.2" format="counter" sectionFormat="of" target="section-5.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-link-nlri-usage">Link NLRI Usage</xref></t>
                    <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.2.2.2.2">
                      <li pn="section-toc.1-1.5.2.2.2.2.2.1">
                        <t indent="0" pn="section-toc.1-1.5.2.2.2.2.2.1.1"><xref derivedContent="5.2.2.1" format="counter" sectionFormat="of" target="section-5.2.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-link-nlri-address-fa">BGP-LS Link NLRI Address Family Link Descriptor TLV</xref></t>
                      </li>
                      <li pn="section-toc.1-1.5.2.2.2.2.2.2">
                        <t indent="0" pn="section-toc.1-1.5.2.2.2.2.2.2.1"><xref derivedContent="5.2.2.2" format="counter" sectionFormat="of" target="section-5.2.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-link-nlri-attrib">BGP-LS-SPF Link NLRI Attribute SPF Status TLV</xref></t>
                      </li>
                    </ul>
                  </li>
                  <li pn="section-toc.1-1.5.2.2.2.3">
                    <t indent="0" pn="section-toc.1-1.5.2.2.2.3.1"><xref derivedContent="5.2.3" format="counter" sectionFormat="of" target="section-5.2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ipv4-ipv6-prefix-nlri-usage">IPv4/IPv6 Prefix NLRI Usage</xref></t>
                    <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.2.2.3.2">
                      <li pn="section-toc.1-1.5.2.2.2.3.2.1">
                        <t indent="0" pn="section-toc.1-1.5.2.2.2.3.2.1.1"><xref derivedContent="5.2.3.1" format="counter" sectionFormat="of" target="section-5.2.3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-prefix-nlri-attr">BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV</xref></t>
                      </li>
                    </ul>
                  </li>
                  <li pn="section-toc.1-1.5.2.2.2.4">
                    <t indent="0" pn="section-toc.1-1.5.2.2.2.4.1"><xref derivedContent="5.2.4" format="counter" sectionFormat="of" target="section-5.2.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-attribute-sequence-n">BGP-LS Attribute Sequence Number TLV</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-end-of-rib-eor-m">BGP-LS-SPF End of RIB (EoR) Marker</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.4">
                <t indent="0" pn="section-toc.1-1.5.2.4.1"><xref derivedContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-next-hop-information">BGP Next-Hop Information</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" 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-decision-process-with-the-s">Decision Process with the SPF Algorithm</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-spf-nlri-selection">BGP SPF NLRI Selection</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2.1.2">
                  <li pn="section-toc.1-1.6.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.6.2.1.2.1.1"><xref derivedContent="6.1.1" format="counter" sectionFormat="of" target="section-6.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-self-originated-nlri">BGP Self-Originated NLRI</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dual-stack-support">Dual-Stack Support</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-spf-calculation-based-on-bg">SPF Calculation Based on BGP-LS-SPF NLRI</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.4">
                <t indent="0" pn="section-toc.1-1.6.2.4.1"><xref derivedContent="6.4" format="counter" sectionFormat="of" target="section-6.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ipv4-ipv6-unicast-address-f">IPv4/IPv6 Unicast Address Family Interaction</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.5">
                <t indent="0" pn="section-toc.1-1.6.2.5.1"><xref derivedContent="6.5" format="counter" sectionFormat="of" target="section-6.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-nlri-advertisement">NLRI Advertisement</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2.5.2">
                  <li pn="section-toc.1-1.6.2.5.2.1">
                    <t indent="0" pn="section-toc.1-1.6.2.5.2.1.1"><xref derivedContent="6.5.1" format="counter" sectionFormat="of" target="section-6.5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-link-prefix-failure-converg">Link/Prefix Failure Convergence</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.5.2.2">
                    <t indent="0" pn="section-toc.1-1.6.2.5.2.2.1"><xref derivedContent="6.5.2" format="counter" sectionFormat="of" target="section-6.5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-node-failure-convergence">Node Failure Convergence</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" 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-error-handling">Error Handling</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 indent="0" 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-processing-of-bgp-ls-spf-tl">Processing of BGP-LS-SPF TLVs</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" 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-processing-of-bgp-ls-spf-nl">Processing of BGP-LS-SPF NLRIs</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.3">
                <t indent="0" 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-processing-of-bgp-ls-attrib">Processing of BGP-LS Attributes</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.4">
                <t indent="0" 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-bgp-ls-spf-link-state-datab">BGP-LS-SPF Link State Database Synchronization</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" 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-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-allocation-in-th">BGP-LS-SPF Allocation in the SAFI Values Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-assignments-in-t">BGP-LS-SPF Assignments in the BGP-LS NLRI and Attribute TLVs Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.3">
                <t indent="0" pn="section-toc.1-1.8.2.3.1"><xref derivedContent="8.3" format="counter" sectionFormat="of" target="section-8.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-node-nlri-attribu">BGP-LS-SPF Node NLRI Attribute SPF Status TLV Values Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.4">
                <t indent="0" pn="section-toc.1-1.8.2.4.1"><xref derivedContent="8.4" format="counter" sectionFormat="of" target="section-8.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-link-nlri-attribu">BGP-LS-SPF Link NLRI Attribute SPF Status TLV Values Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.5">
                <t indent="0" pn="section-toc.1-1.8.2.5.1"><xref derivedContent="8.5" format="counter" sectionFormat="of" target="section-8.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-prefix-nlri-attri">BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV Values Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.6">
                <t indent="0" pn="section-toc.1-1.8.2.6.1"><xref derivedContent="8.6" format="counter" sectionFormat="of" target="section-8.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-assignment-in-the-bgp-error">Assignment in the BGP Error (Notification) Codes Registry</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" 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-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" 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-management-considerations">Management Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.10.2">
              <li pn="section-toc.1-1.10.2.1">
                <t indent="0" pn="section-toc.1-1.10.2.1.1"><xref derivedContent="10.1" format="counter" sectionFormat="of" target="section-10.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-configuration">Configuration</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.2">
                <t indent="0" pn="section-toc.1-1.10.2.2.1"><xref derivedContent="10.2" format="counter" sectionFormat="of" target="section-10.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-link-metric-configuration">Link Metric Configuration</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.3">
                <t indent="0" pn="section-toc.1-1.10.2.3.1"><xref derivedContent="10.3" format="counter" sectionFormat="of" target="section-10.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-unnumbered-link-configurati">Unnumbered Link Configuration</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.4">
                <t indent="0" pn="section-toc.1-1.10.2.4.1"><xref derivedContent="10.4" format="counter" sectionFormat="of" target="section-10.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-adjacency-end-of-rib-eor-ma">Adjacency End-of-RIB (EOR) Marker Requirement</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.5">
                <t indent="0" pn="section-toc.1-1.10.2.5.1"><xref derivedContent="10.5" format="counter" sectionFormat="of" target="section-10.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-backoff-config">backoff-config</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.6">
                <t indent="0" pn="section-toc.1-1.10.2.6.1"><xref derivedContent="10.6" format="counter" sectionFormat="of" target="section-10.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-nlri-readvertise">BGP-LS-SPF NLRI Readvertisement Delay</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.7">
                <t indent="0" pn="section-toc.1-1.10.2.7.1"><xref derivedContent="10.7" format="counter" sectionFormat="of" target="section-10.7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-operational-data">Operational Data</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.8">
                <t indent="0" pn="section-toc.1-1.10.2.8.1"><xref derivedContent="10.8" format="counter" sectionFormat="of" target="section-10.8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bgp-ls-spf-address-family-s">BGP-LS-SPF Address Family Session Isolation</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" 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-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.11.2">
              <li pn="section-toc.1-1.11.2.1">
                <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent="11.1" format="counter" sectionFormat="of" target="section-11.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.11.2.2">
                <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent="11.2" format="counter" sectionFormat="of" target="section-11.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.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.13">
            <t indent="0" pn="section-toc.1-1.13.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.14">
            <t indent="0" pn="section-toc.1-1.14.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="introduction" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
        Many Massively Scaled Data Centers (MSDCs) have converged on simplified
        Layer 3 (L3) routing. Furthermore, requirements for operational simplicity
        has led many of these MSDCs to converge on BGP <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>
        as their single routing protocol for both fabric routing and
        Data Center Interconnect (DCI) routing <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/>. This document describes an alternative solution that leverages
        BGP-LS <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>
        and the Shortest Path First (SPF) algorithm used by
        Interior Gateway Protocols (IGPs).
      </t>
      <t indent="0" pn="section-1-2">
        This document leverages both the BGP protocol <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/> and
        BGP-LS extensions <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>. The relationship as well as
        the scope of changes are described in Sections <xref target="BGP-base" format="counter" sectionFormat="of" derivedContent="2"/>
        and <xref target="BGP-LS" format="counter" sectionFormat="of" derivedContent="3"/>, respectively.
	The modifications to
        <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>
        for BGP SPF described herein only apply to IPv4 and IPv6 as underlay unicast
        Subsequent Address Family Identifiers (SAFIs).
        Operations for any other BGP SAFIs are outside the scope of this document.
      </t>
      <t indent="0" pn="section-1-3">
        This solution avails the benefits of both BGP and SPF-based IGPs.
        These include TCP-based flow-control, no periodic link-state refresh, and
        completely incremental Network Layer Reachability Information (NLRI) advertisement.
	These advantages can reduce the
        overhead in MSDCs where there is a high degree of Equal-Cost Multipath
        (ECMP) load balancing.
        Additionally, using an SPF-based computation can support fast convergence and
        the computation of Loop-Free Alternatives (LFAs). The SPF LFA extensions defined
        in <xref target="RFC5286" format="default" sectionFormat="of" derivedContent="RFC5286"/> can be similarly applied to BGP SPF calculations.
        However, the details are specific to implementation and are out of scope for this
        document.
        Furthermore, a BGP-based solution lends itself to multiple peering models
        including those incorporating route reflectors <xref target="RFC4456" format="default" sectionFormat="of" derivedContent="RFC4456"/>
        or controllers.
      </t>
      <section anchor="terms" numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-terminology">Terminology</name>
        <t indent="0" pn="section-1.1-1">
          This specification reuses terms defined in <xref section="1.1" target="RFC4271" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc4271#section-1.1" derivedContent="RFC4271"/>.
        </t>
        <t indent="0" pn="section-1.1-2">Additionally, this document introduces the following terms:
        </t>
        <dl newline="false" spacing="normal" indent="3" pn="section-1.1-3">
          <dt pn="section-1.1-3.1">BGP SPF Routing Domain:</dt>
          <dd pn="section-1.1-3.2"> A set of BGP routers under a single
          administrative domain that exchange link-state information using the BGP-LS-SPF SAFI
          and compute routes using BGP SPF, as described herein.</dd>
          <dt pn="section-1.1-3.3">BGP-LS-SPF NLRI:</dt>
          <dd pn="section-1.1-3.4">The BGP-LS Network Layer Reachability
          Information (NLRI) that is being advertised in the BGP-LS-SPF SAFI (<xref target="SAFI" format="default" sectionFormat="of" derivedContent="Section 5.1"/>)
          and is being used for BGP SPF route computation.</dd>
          <dt pn="section-1.1-3.5">Dijkstra Algorithm:</dt>
          <dd pn="section-1.1-3.6">
            An algorithm for computing the shortest path from a given node in a graph
            to every other node in the graph.
          </dd>
          <dt pn="section-1.1-3.7">Prefix NLRI:</dt>
          <dd pn="section-1.1-3.8">
            In the context of BGP SPF, this term refers to the IPv4 Topology Prefix NLRI
            and/or the IPv6 Topology Prefix NLRI.
          </dd>
        </dl>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-1.2">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-1.2-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-1.3">
        <name slugifiedName="name-bgp-shortest-path-first-spf">BGP Shortest Path First (SPF) Motivation</name>
        <t indent="0" pn="section-1.3-1">
          Given that <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/> already describes how BGP could be used
          as the sole routing protocol in an MSDC, one might question the motivation for
          defining an alternative BGP deployment model when a mature solution exists.
          For both alternatives, BGP offers the operational benefits of a single
          routing protocol as opposed to the combination of an IGP for the underlay
          and BGP as the overlay. However, BGP SPF offers some unique advantages above
          and beyond standard BGP path-vector routing. With BGP SPF, the
          simple single-hop peering model recommended in <xref section="5.2.1" target="RFC7938" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc7938#section-5.2.1" derivedContent="RFC7938"/>
          is augmented with peering models requiring fewer BGP sessions.
        </t>
        <t indent="0" pn="section-1.3-2">
          A primary advantage is that all BGP speakers in the BGP SPF routing domain
          have a complete view of the topology. This allows support for ECMP,
          IP fast-reroute (e.g., Loop-Free Alternatives (LFAs) <xref target="RFC5286" format="default" sectionFormat="of" derivedContent="RFC5286"/>,
          Shared Risk Link Groups (SRLGs) <xref target="RFC4202" format="default" sectionFormat="of" derivedContent="RFC4202"/>,
          and other routing enhancements without advertisement of additional
          BGP paths <xref target="RFC7911" format="default" sectionFormat="of" derivedContent="RFC7911"/>  or other extensions.
        </t>
        <t indent="0" pn="section-1.3-3">
          With the BGP SPF Decision Process as defined in
          <xref target="bgp-decision" format="default" sectionFormat="of" derivedContent="Section 6"/>, NLRI changes can be disseminated throughout the BGP
          routing domain much more rapidly. The added advantage of BGP using TCP for reliable
          transport leverages TCP's inherent flow-control and guaranteed in-order delivery.
        </t>
        <t indent="0" pn="section-1.3-4">
            Another primary advantage is a potential reduction in NLRI advertisement.

            With standard BGP path-vector routing, a single link failure may impact
            hundreds or thousands of prefixes and result in the withdrawal or readvertisement of
            the attendant NLRI. With BGP SPF, only the BGP speakers originating
            the Link NLRI need to withdraw the corresponding BGP-LS-SPF Link NLRI. Additionally,
            the changed NLRI is advertised immediately as opposed to normal BGP where it
            is only advertised after the best route selection. These advantages provide
            NLRI dissemination throughout the BGP SPF routing domain with efficiencies similar
            to link-state protocols.
        </t>
        <t indent="0" pn="section-1.3-5">
            With controller and route-reflector peering models, BGP SPF advertisement
            and distributed computation require a minimal number of sessions and
            copies of the NLRI as only the latest version of the NLRI from the
            originator is required (see <xref target="peering-models" format="default" sectionFormat="of" derivedContent="Section 4"/>).
            Given that verification of whether or not to advertise a link (with a
            BGP-LS-SPF Link NLRI) is done outside of BGP, each BGP
            speaker only needs as many sessions and copies of the NLRI as required for
            redundancy. Additionally, a controller could inject topology (i.e., BGP-LS-SPF NLRI)
            that is learned outside the BGP SPF routing domain.
        </t>
        <t indent="0" pn="section-1.3-6">
            Given that BGP-LS NLRI is already defined
            <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>, this functionality
            can be reused for BGP-LS-SPF NLRI.
        </t>
        <t indent="0" pn="section-1.3-7">
            Another advantage of BGP SPF is that both IPv6 and IPv4 can
            be supported using the BGP-LS-SPF SAFI with the same BGP-LS-SPF Link NLRIs. In many
            MSDC fabrics, the IPv4 and IPv6 topologies are congruent (refer to
            <xref target="Link-NLRI" format="default" sectionFormat="of" derivedContent="Section 5.2.2"/>).
            However, beyond the scope of this document, BGP-LS-SPF NLRI multi-topology extensions could
            be defined to support separate IPv4, IPv6, unicast, and multicast topologies
            while sharing the same NLRI.
        </t>
        <t indent="0" pn="section-1.3-8">
            Finally, the BGP SPF topology can be used as an underlay for other BGP
            SAFIs (using the existing model) and obtain all the above
            advantages.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-1.4">
        <name slugifiedName="name-document-overview">Document Overview</name>
        <t indent="0" pn="section-1.4-1">
            This document begins with <xref target="BGP-base" format="default" sectionFormat="of" derivedContent="Section 2"/> defining the
            precise relationship that BGP SPF has
            with the base BGP protocol <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/> and <xref target="BGP-LS" format="default" sectionFormat="of" derivedContent="Section 3"/> defining the
            BGP Link State (BGP-LS) extensions <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>.
            The BGP peering models as well as
            their respective trade-offs are then discussed in
            <xref target="peering-models" format="default" sectionFormat="of" derivedContent="Section 4"/>. The remaining sections, which make up the bulk of the
            document, define the protocol enhancements necessary to support BGP SPF including BGP-LS extensions
            (<xref target="protocol-extend" format="default" sectionFormat="of" derivedContent="Section 5"/>), replacement of the base BGP Decision Process
            with the SPF computation (<xref target="bgp-decision" format="default" sectionFormat="of" derivedContent="Section 6"/>), and BGP SPF error
            handling (<xref target="error-handling" format="default" sectionFormat="of" derivedContent="Section 7"/>).
        </t>
      </section>
    </section>
    <section anchor="BGP-base" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-base-bgp-protocol-relations">Base BGP Protocol Relationship</name>
      <t indent="0" pn="section-2-1">
  With the exception of the Decision Process, BGP SPF extensions leverage the BGP
  protocol <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>  without change. This includes the BGP protocol
  Finite State Machine, BGP messages and their encodings, the processing of BGP messages,
  BGP attributes and path attributes, BGP NLRI encodings, and any error handling
  defined in <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>, <xref target="RFC4760" format="default" sectionFormat="of" derivedContent="RFC4760"/>,
  and <xref target="RFC7606" format="default" sectionFormat="of" derivedContent="RFC7606"/>.
</t>
      <t indent="0" pn="section-2-2">
  Due to changes in the Decision
  Process, there are mechanisms and encodings that are no longer applicable.
  Unless explicitly specified in the context of BGP SPF, all optional path
  attributes <bcp14>SHOULD NOT</bcp14> be advertised.  If received, all path attributes <bcp14>MUST</bcp14>
  be accepted, validated, and propagated consistently with the BGP protocol
  <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>, even if not needed by BGP SPF.
</t>
      <t indent="0" pn="section-2-3">
  <xref section="9.1" target="RFC4271" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc4271#section-9.1" derivedContent="RFC4271"/> defines the Decision Process that
  is used to select routes for subsequent advertisement
  by applying the policies in the local Policy Information Base (PIB) to the
  routes stored in its Adj-RIBs-In. The output of the Decision Process is the
  set of routes that is announced by a BGP speaker to its peers. These
  selected routes are stored by a BGP speaker in the speaker's Adj-RIBs-Out,
  according to policy.
</t>
      <t indent="0" pn="section-2-4">
  The BGP SPF extension fundamentally changes the Decision Process, as described
  herein. Specifically:
</t>
      <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-2-5">
  <li pn="section-2-5.1" derivedCounter="1.">
    BGP advertisements are readvertised to neighbors immediately without waiting
    or dependence on the route computation, as specified in phase 3 of the base BGP
    Decision Process. Multiple peering models are supported, as specified in
    <xref target="peering-models" format="default" sectionFormat="of" derivedContent="Section 4"/>.
</li>
        <li pn="section-2-5.2" derivedCounter="2.">
  Determining the degree of preference for BGP routes, as described in phase 1 of the base BGP Decision Process, is replaced with the mechanisms
  in <xref target="Phase-1" format="default" sectionFormat="of" derivedContent="Section 6.1"/> for the SPF calculation.
</li>
        <li pn="section-2-5.3" derivedCounter="3.">
  Phase 2 of the base BGP protocol Decision Process is replaced with the
  SPF algorithm, also known as the Dijkstra algorithm.
</li>
      </ol>
    </section>
    <section anchor="BGP-LS" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-bgp-link-state-bgp-ls-relat">BGP Link State (BGP-LS) Relationship</name>
      <t indent="0" pn="section-3-1">
  <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/> describes a mechanism by
  which link-state and Traffic Engineering (TE) information can be collected from networks and shared with external
  entities using BGP.
  This is achieved by defining NLRIs that are advertised using the BGP-LS AFI. The BGP-LS extensions defined in
  <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/> make use of the Decision Process defined in
  <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>.  Rather than reusing the BGP-LS SAFI, the BGP-LS-SPF SAFI
  (<xref target="SAFI" format="default" sectionFormat="of" derivedContent="Section 5.1"/>) is introduced to ensure backward compatibility
  for BGP-LS SAFI usage.
</t>
      <t indent="0" pn="section-3-2">
  The "BGP-LS NLRI and Attribute TLVs" registry <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/> is shared between
  the BGP-LS SAFI and the BGP-LS-SPF SAFI.
  However, the TLVs defined in this document may not be applicable to
  the BGP-LS SAFI.  As specified in <xref section="5.1" target="RFC9552" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9552#section-5.1" derivedContent="RFC9552"/>, the presence
  of unknown or unexpected TLVs is required so that the NLRI or
  BGP-LS Attribute will not be considered
  malformed (<xref section="5.2" target="RFC9552" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9552#section-5.2" derivedContent="RFC9552"/>).  The list of BGP-LS TLVs applicable
  to the BGP-LS-SPF SAFI are described in
  <xref target="NLRI-Use" format="default" sectionFormat="of" derivedContent="Section 5.2"/>. By default, the usage of other BGP-LS TLVs or
  extensions are ignored for the BGP-LS-SPF SAFI. However, this doesn't preclude the usage
  specification of these TLVs for the BGP-LS-SPF SAFI in future documents.
</t>
    </section>
    <section anchor="peering-models" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-bgp-spf-peering-models">BGP SPF Peering Models</name>
      <t indent="0" pn="section-4-1">
  Depending on the topology, scaling, capabilities of the BGP speakers, and redundancy
  requirements, various peering models are supported. The only requirement is that all BGP
  speakers in the BGP SPF routing domain adhere to this specification.
</t>
      <t indent="0" pn="section-4-2">
  The choice of the deployment model is up to the operator and their requirements and policies.
  Deployment model choice is out of scope for this document and is discussed in
  <xref target="RFC9816" format="default" sectionFormat="of" derivedContent="RFC9816"/>. The subsections below
  describe several BGP SPF deployment models. However, this doesn't preclude other
  deployment models.
</t>
      <section anchor="single-hop-peering" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-bgp-single-hop-peering-on-n">BGP Single-Hop Peering on Network Node Connections</name>
        <t indent="0" pn="section-4.1-1">
  The simplest peering model is the one where
  External BGP (EBGP) single-hop sessions are established over direct point-to-point links
  interconnecting the nodes in the BGP SPF routing domain.

  Once the single-hop BGP session has been
  established and the Multiprotocol Extensions Capability with the BGP-LS-SPF AFI/SAFI
  <xref target="RFC4760" format="default" sectionFormat="of" derivedContent="RFC4760"/> has been exchanged for the corresponding session, then the link is considered up and available from
  a BGP SPF perspective, and the corresponding BGP-LS-SPF Link NLRI is advertised.
</t>
        <t indent="0" pn="section-4.1-2">
  An End-of-RIB (EoR) marker (<xref target="BGP-LS-SPF-EOR" format="default" sectionFormat="of" derivedContent="Section 5.3"/>) for the BGP-LS-SPF
  SAFI <bcp14>MAY</bcp14> be required from a peer prior to advertising the BGP-LS-SPF Link NLRI
  for the corresponding link to that peer.

  When required, the default is to
  wait indefinitely for the EoR marker prior to advertising the BGP-LS-SPF Link NLRI.
  Refer to <xref target="Adjacency-EoR-Required" format="default" sectionFormat="of" derivedContent="Section 10.4"/>.
</t>
        <t indent="0" pn="section-4.1-3">
  A failure to consistently configure the use of the EoR marker can
  result in transient micro-loops and dropped traffic due to incomplete
  forwarding state.
</t>
        <t indent="0" pn="section-4.1-4">
  If the session goes down, the corresponding Link NLRIs are withdrawn. Topologically,
  this would be equivalent to the peering model in <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/> where there
  is a BGP session on every link in the data center switch fabric.  The content of the Link NLRI
  is described in <xref target="Link-NLRI" format="default" sectionFormat="of" derivedContent="Section 5.2.2"/>.
</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-bgp-peering-between-directl">BGP Peering Between Directly Connected Nodes</name>
        <t indent="0" pn="section-4.2-1">
  In this model, BGP speakers peer with all directly connected
  nodes but the sessions may be between loopback addresses (i.e.,
  two-hop sessions), and the direct connection
  discovery and liveness detection for the interconnecting links are
  independent of the BGP protocol. The Bidirectional Forwarding Detection (BFD) protocol <xref target="RFC5880" format="default" sectionFormat="of" derivedContent="RFC5880"/>
  is <bcp14>RECOMMENDED</bcp14> for liveness detection. Usage of other liveness connection mechanisms
  is outside the scope of this document.
  Consequently, there is a single BGP session even if there are multiple
  direct connections between BGP speakers. The BGP-LS-SPF Link NLRI is advertised
  as long as a BGP session has been established, the BGP-LS-SPF AFI/SAFI
  capability has been exchanged <xref target="RFC4760" format="default" sectionFormat="of" derivedContent="RFC4760"/>,
  the link is operational as determined using liveness detection mechanisms,
  and, optionally, the EoR marker has been received as described in
  <xref target="BGP-LS-SPF-EOR" format="default" sectionFormat="of" derivedContent="Section 5.3"/>.
  This is much like the previous peering model, except peering is between
  loopback addresses and the interconnecting links can be unnumbered. However,
  since there are BGP sessions between every directly connected node in the
  BGP SPF routing domain, there is a reduction in BGP sessions when there
  are parallel links between nodes. Hence, this peering model is <bcp14>RECOMMENDED</bcp14>
  over the single-hop peering model <xref target="single-hop-peering" format="default" sectionFormat="of" derivedContent="Section 4.1"/>.
</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-bgp-peering-in-route-reflec">BGP Peering in Route-Reflector or Controller Topology</name>
        <t indent="0" pn="section-4.3-1">
  In this model, BGP speakers peer solely with one or more route reflectors
  <xref target="RFC4456" format="default" sectionFormat="of" derivedContent="RFC4456"/> or controllers. As in the previous model, direct
  connection discovery and liveness detection for those links in the BGP
  SPF routing domain are done outside of the BGP protocol.
  BGP-LS-SPF Link NLRI is advertised as long as the corresponding link is
  considered up and available as per the chosen liveness detection mechanism (thus, the BFD protocol
  <xref target="RFC5880" format="default" sectionFormat="of" derivedContent="RFC5880"/> is <bcp14>RECOMMENDED</bcp14>).
</t>
        <t indent="0" pn="section-4.3-2">
  This peering model, known as "sparse peering", allows for fewer BGP sessions
  and, consequently, fewer instances of the same NLRI received from multiple peers.
  Ideally, the route reflectors or controller BGP sessions would be on directly connected
  links to avoid dependence on another routing protocol for session connectivity. However,
  multi-hop peering is not precluded. The number of BGP sessions is dependent
  on the redundancy requirements and the stability of the BGP sessions.
</t>
        <t indent="0" pn="section-4.3-3">
  The controller may use constraints to determine
  when to advertise BGP-LS-SPF NLRI for BGP-LS peers. For example, a controller
  may delay advertisement of a link between two peers the until the EoR
   marker <xref target="BGP-LS-SPF-EOR" format="default" sectionFormat="of" derivedContent="Section 5.3"/> has been
  received from both BGP peers and the BGP-LS Link NLRI for the link(s) between the two nodes
  has been received from both BGP peers.
</t>
      </section>
    </section>
    <section anchor="protocol-extend" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-bgp-shortest-path-first-spf-">BGP Shortest Path First (SPF) Routing Protocol Extensions</name>
      <section anchor="SAFI" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-bgp-ls-spf-safi">BGP-LS-SPF SAFI</name>
        <t indent="0" pn="section-5.1-1">
  This document introduces the BGP-LS-SPF SAFI with a value of 80.
  The SPF-based Decision Process (<xref target="bgp-decision" format="default" sectionFormat="of" derivedContent="Section 6"/>) applies only to the
  BGP-LS-SPF SAFI and <bcp14>MUST NOT</bcp14> be used with other combinations of
  the BGP-LS AFI (16388).
  In order for two BGP speakers to
  exchange BGP-LS-SPF NLRI, they <bcp14>MUST</bcp14> exchange the Multiprotocol
  Extensions Capability <xref target="RFC4760" format="default" sectionFormat="of" derivedContent="RFC4760"/>
  to ensure that they are both capable of properly processing such an
  NLRI.  This is done with AFI 16388 / SAFI 80.  The BGP-LS-SPF SAFI
  is used to advertise IPv4 and IPv6 prefix information in a
  format facilitating an SPF-based Decision Process.
</t>
        <section anchor="BGP-LS-TLV" numbered="true" toc="include" removeInRFC="false" pn="section-5.1.1">
          <name slugifiedName="name-bgp-ls-spf-nlri-tlvs">BGP-LS-SPF NLRI TLVs</name>
          <t indent="0" pn="section-5.1.1-1">
  All the TLVs defined for BGP-LS <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>
  are applicable and can be used with the BGP-LS-SPF SAFI to describe links, nodes,
  and prefixes comprising BGP SPF Link State Database (LSDB) information.
</t>
          <t indent="0" pn="section-5.1.1-2">
  The NLRI and comprising TLVs <bcp14>MUST</bcp14> be encoded as specified in
  <xref section="5.1" target="RFC9552" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9552#section-5.1" derivedContent="RFC9552"/>. TLVs specified as
  mandatory in <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/> are
  considered mandatory for the BGP-LS-SPF SAFI as
  well. If a mandatory TLV is not present, the NLRI <bcp14>MUST NOT</bcp14> be used in the
  BGP SPF route calculation. All the other TLVs are considered as optional TLVs. Documents
  specifying usage of optional TLVs for BGP SPF <bcp14>MUST</bcp14> address backward compatibility.
</t>
        </section>
        <section numbered="true" toc="include" removeInRFC="false" pn="section-5.1.2">
          <name slugifiedName="name-bgp-ls-attribute">BGP-LS Attribute</name>
          <t indent="0" pn="section-5.1.2-1">
  The BGP-LS Attribute of the BGP-LS-SPF SAFI uses the exact same format as the BGP-LS AFI
  <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>. In
  other words, all the TLVs used in the BGP-LS Attribute of the BGP-LS AFI are applicable
  and are used for the BGP-LS Attribute of the BGP-LS-SPF SAFI. This attribute is an optional,
  non-transitive BGP attribute that is used to advertise link, node, and prefix
  properties and attributes. The BGP-LS Attribute is a set of TLVs.
</t>
          <t indent="0" pn="section-5.1.2-2">
  All the TLVs defined for the BGP-LS Attribute  <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>
  are applicable and can be used with the BGP-LS-SPF SAFI to advertise link, node, and prefix
  properties and attributes.
</t>
          <t indent="0" pn="section-5.1.2-3">
  The BGP-LS Attribute may potentially be quite large depending on
  the amount of link-state information associated with a single BGP-LS-SPF NLRI.
  The BGP specification <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/> mandates a maximum BGP
  message size of 4096 octets.  It is <bcp14>RECOMMENDED</bcp14> that an
  implementation support <xref target="RFC8654" format="default" sectionFormat="of" derivedContent="RFC8654"/> in order to accommodate a greater
  amount of information within the BGP-LS Attribute.  BGP speakers <bcp14>MUST</bcp14>
  ensure that they limit the TLVs included in the BGP-LS Attribute to
  ensure that a BGP UPDATE message for a single BGP-LS-SPF NLRI does
  not cross the maximum limit for a BGP message.  The determination of
  the types of TLVs to be included by the BGP speaker
  originating the attribute is outside the scope of this document.
  If, due to the limits on the maximum size of an UPDATE message, a single
  route doesn't fit into the message, the BGP speaker <bcp14>MUST NOT</bcp14> advertise the
  route to its peer and <bcp14>MAY</bcp14> choose to log an error locally <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>.
</t>
        </section>
      </section>
      <section anchor="NLRI-Use" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-extensions-to-bgp-ls">Extensions to BGP-LS</name>
        <t indent="0" pn="section-5.2-1">
  <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/> describes a mechanism
  by which link-state and TE
  information can be collected from IGPs and shared with external components
  using the BGP protocol. It describes both the definition of the BGP-LS NLRI
  that advertise links, nodes, and prefixes comprising IGP link-state
  information and the definition of a BGP path attribute (BGP-LS
  Attribute) that carries link, node, and prefix properties and
  attributes, such as the link and prefix metric or auxiliary
  Router-IDs of nodes, etc. This document extends the usage of BGP-LS NLRI for
  the purpose of BGP SPF calculation via advertisement in the BGP-LS-SPF SAFI.
</t>
        <t indent="0" pn="section-5.2-2">
  The protocol identifier specified in the Protocol-ID field
  <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>
  represents the origin of the advertised NLRI. For Node NLRI and Link NLRI,
  the specified Protocol-ID <bcp14>MUST</bcp14> be the direct protocol (4). Node or Link NLRI with a
  Protocol-ID other than the direct protocol is considered malformed.
  For Prefix NLRI, the specified Protocol-ID
  <bcp14>MUST</bcp14> be the origin of the prefix. The Local and Remote Node Descriptors for all NLRI <bcp14>MUST</bcp14>
  include the BGP Router-ID (TLV 516) <xref target="RFC9086" format="default" sectionFormat="of" derivedContent="RFC9086"/>
  and the Autonomous System (TLV 512) number
  <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>.
  The BGP Confederation Member (TLV 517)
  <xref target="RFC9086" format="default" sectionFormat="of" derivedContent="RFC9086"/> is not applicable.
</t>
        <section numbered="true" toc="include" removeInRFC="false" pn="section-5.2.1">
          <name slugifiedName="name-node-nlri-usage">Node NLRI Usage</name>
          <t indent="0" pn="section-5.2.1-1">
  The Node NLRI <bcp14>MUST</bcp14> be advertised unconditionally by all routers in
  the BGP SPF routing domain.
</t>
          <section anchor="node-status-tlv" numbered="true" toc="include" removeInRFC="false" pn="section-5.2.1.1">
            <name slugifiedName="name-bgp-ls-spf-node-nlri-attrib">BGP-LS-SPF Node NLRI Attribute SPF Status TLV</name>
            <t indent="0" pn="section-5.2.1.1-1">
  A BGP-LS Attribute SPF Status TLV of the BGP-LS-SPF Node NLRI is defined to indicate the status of
  the node with respect to the BGP SPF calculation. This is used to rapidly take a
  node out of service (refer to <xref target="node-failure" format="default" sectionFormat="of" derivedContent="Section 6.5.2"/>)
  or to indicate that the node is not to be
  used for transit (i.e., non-local) traffic (refer to <xref target="BGP-SPF" format="default" sectionFormat="of" derivedContent="Section 6.3"/>).
  If the SPF Status TLV is not included with the Node NLRI, the node is considered to be up
  and is available for transit traffic. A single TLV type is shared by the Node, Link, and
   Prefix NLRI.  The TLV type is 1184.
</t>
            <artwork align="left" name="" type="" alt="" pn="section-5.2.1.1-2">
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Type (1184)                 |       Length (1 Octet)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SPF Status    |
+-+-+-+-+-+-+-+-+
</artwork>
            <table align="center" pn="table-1">
              <name slugifiedName="name-node-nlri-attribute-status-">Node NLRI Attribute Status Values</name>
              <thead>
                <tr>
                  <th align="left" colspan="1" rowspan="1">Value</th>
                  <th align="left" colspan="1" rowspan="1">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left" colspan="1" rowspan="1">0</td>
                  <td align="left" colspan="1" rowspan="1">Reserved</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">1</td>
                  <td align="left" colspan="1" rowspan="1">Node unreachable with respect to BGP SPF</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">2</td>
                  <td align="left" colspan="1" rowspan="1">Node does not support transit with respect to BGP SPF</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">3-254</td>
                  <td align="left" colspan="1" rowspan="1">Unassigned</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">255</td>
                  <td align="left" colspan="1" rowspan="1">Reserved</td>
                </tr>
              </tbody>
            </table>
            <t indent="0" pn="section-5.2.1.1-4">
  If a BGP speaker received the Node NLRI but
  the SPF Status TLV is not received, then any previously received SPF status information is
  considered as implicitly withdrawn, and the NLRI is propagated to other BGP speakers.
  A BGP speaker receiving a BGP Update containing
  an SPF Status TLV in the BGP-LS Attribute <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>
  with an unknown value <bcp14>SHOULD</bcp14> be advertised to other
  BGP speakers and <bcp14>MUST</bcp14> ignore the Status TLV with an unknown value in
  the SPF computation.
  An implementation <bcp14>MAY</bcp14> log this condition for further analysis.
  If the SPF Status TLV contains a reserved value (0 or 255), the TLV is considered malformed and
  is handled as described in <xref target="new-TLVs" format="default" sectionFormat="of" derivedContent="Section 7.1"/>.
</t>
          </section>
        </section>
        <section anchor="Link-NLRI" numbered="true" toc="include" removeInRFC="false" pn="section-5.2.2">
          <name slugifiedName="name-link-nlri-usage">Link NLRI Usage</name>
          <t indent="0" pn="section-5.2.2-1">
  The criteria for advertisement of Link NLRIs are discussed in
  <xref target="peering-models" format="default" sectionFormat="of" derivedContent="Section 4"/>.
</t>
          <t indent="0" pn="section-5.2.2-2">
  Link NLRI is advertised with unique Local and Remote Node Descriptors
  dependent on the IP addressing.

  For IPv4 links, the
  link's local IPv4 interface address (TLV 259) and remote IPv4 neighbor address (TLV 260) are used.
  For IPv6 links, the local IPv6 interface address (TLV 261) and remote IPv6 neighbor address (TLV 262)
  are used (see <xref section="5.2.2" target="RFC9552" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9552#section-5.2.2" derivedContent="RFC9552"/>). IPv6 links without
  global IPv6 addresses are considered unnumbered links and are handled as
  described below.
  For links supporting both IPv4 and IPv6 addresses, both sets
  of descriptors <bcp14>MAY</bcp14> be included in the same Link NLRI.
</t>
          <t indent="0" pn="section-5.2.2-3">
  For unnumbered links, the Link Local/Remote Identifiers (TLV 258)
  are used. The Link Remote Identifier isn't normally exchanged in BGP,
  and discovering the Link Remote Identifier is beyond the scope of this
  document. If the Link Remote Identifier is unknown, a Link Remote Identifier of
  0 <bcp14>MUST</bcp14> be advertised. When 0 is advertised and there are parallel unnumbered links
  between a pair of BGP speakers, there may be transient intervals where the
  BGP speakers don't agree on which of the parallel unnumbered links are operational.
  For this reason, it is <bcp14>RECOMMENDED</bcp14> that the Link Remote Identifiers be
  known (e.g., discovered using alternate mechanisms or configured) in the presence
  of parallel unnumbered links.
</t>
          <t indent="0" pn="section-5.2.2-4">
  The link descriptors are
  described in Table 4 of <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>.
  Additionally, the Address Family (AF) Link Descriptor TLV is defined to determine whether an
  unnumbered link can be used in the IPv4 SPF, the IPv6, or both (refer to
  <xref target="af-link-descriptor-tlv" format="default" sectionFormat="of" derivedContent="Section 5.2.2.1"/>).
</t>
          <t indent="0" pn="section-5.2.2-5">
  
  For a link to be used in SPF computation for a given address family,
  i.e., IPv4 or IPv6, both routers connecting the link <bcp14>MUST</bcp14> have matching addresses (i.e.,
  router interface addresses must be on the same subnet for numbered interfaces, or the
  Link Local/Remote Identifiers (<xref target="BGP-SPF" format="default" sectionFormat="of" derivedContent="Section 6.3"/>) must match for unnumbered
  interfaces).
</t>
          <t indent="0" pn="section-5.2.2-6">
  The IGP Metric (TLV 1095) <bcp14>MUST</bcp14> be advertised. If a BGP speaker
  receives a Link NLRI without an IGP Metric attribute TLV, then it <bcp14>MUST</bcp14> consider
  the received NLRI as malformed and is handled as described in <xref target="new-TLVs" format="default" sectionFormat="of" derivedContent="Section 7.1"/>.
  The BGP SPF metric length is 4 octets. A metric is associated with the output side of each
  router interface.  This metric is configurable by the system administrator.  The
  lower the metric, the more likely the interface is to be used to forward data traffic.
  One possible default for the  metric would be to give each interface a metric of 1
  making the SPF metric effectively a hop count.
</t>
          <t indent="0" pn="section-5.2.2-7">
  The usage of other link attribute TLVs is beyond the scope of this document.
</t>
          <section anchor="af-link-descriptor-tlv" numbered="true" toc="include" removeInRFC="false" pn="section-5.2.2.1">
            <name slugifiedName="name-bgp-ls-link-nlri-address-fa">BGP-LS Link NLRI Address Family Link Descriptor TLV</name>
            <t indent="0" pn="section-5.2.2.1-1">
    For unnumbered links, the address family cannot be ascertained from the
    endpoint link descriptors. Hence, the Address Family Link Descriptor TLV <bcp14>SHOULD</bcp14>
    be included with the Link Local/Remote Identifiers TLV for unnumbered links,
    so that the link can be used in the respective address family SPF. If the
    Address Family Link
    Descriptor TLV is not present for an unnumbered link, the link will not be
    used in the SPF computation for either address family. If the Address Family Link
    Descriptor TLV is present for a numbered link, the link descriptor
    will be ignored. If the Address Family Link Descriptor TLV contains an
    undefined value (3-254), the link descriptor will be ignored.
    If the Address Family Link Descriptor TLV contains a
    reserved value (0 or 255), the TLV is considered malformed and
    is handled as described in <xref target="new-TLVs" format="default" sectionFormat="of" derivedContent="Section 7.1"/>.
            </t>
            <t indent="0" pn="section-5.2.2.1-2">
    Note that an unnumbered link can be used for both the IPv4 and IPv6
    SPF computation by advertising separate Address Family Link Descriptor
    TLVs for IPv4 and IPv6.
            </t>
            <artwork align="left" name="" type="" alt="" pn="section-5.2.2.1-3">
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |   Type (1185)                 |      Length (1 Octet)         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | Address Family|
  +-+-+-+-+-+-+-+-+
</artwork>
            <table align="center" pn="table-2">
              <name slugifiedName="name-address-family-values">Address Family Values</name>
              <thead>
                <tr>
                  <th align="left" colspan="1" rowspan="1">Value</th>
                  <th align="left" colspan="1" rowspan="1">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left" colspan="1" rowspan="1">0</td>
                  <td align="left" colspan="1" rowspan="1">Reserved</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">1</td>
                  <td align="left" colspan="1" rowspan="1">IPv4 Address Family</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">2</td>
                  <td align="left" colspan="1" rowspan="1">IPv6 Address Family</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">3-254</td>
                  <td align="left" colspan="1" rowspan="1">Undefined</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">255</td>
                  <td align="left" colspan="1" rowspan="1">Reserved</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="link-status-tlv" numbered="true" toc="include" removeInRFC="false" pn="section-5.2.2.2">
            <name slugifiedName="name-bgp-ls-spf-link-nlri-attrib">BGP-LS-SPF Link NLRI Attribute SPF Status TLV</name>
            <t indent="0" pn="section-5.2.2.2-1">
    The BGP-LS Attribute SPF Status TLV of the BGP-LS-SPF Link NLRI is defined to
    indicate the status of the link with respect to the BGP SPF calculation. This is used to expedite
    convergence for link failures as discussed in <xref target="failure-converge" format="default" sectionFormat="of" derivedContent="Section 6.5.1"/>. If the
    SPF Status TLV is not included with the Link NLRI, the link is considered
    up and available. The SPF status is acted upon with the execution of the
    next SPF calculation (<xref target="BGP-SPF" format="default" sectionFormat="of" derivedContent="Section 6.3"/>).
    A single TLV type is shared by the Node, Link, and Prefix NLRI.
    The TLV type is 1184.
            </t>
            <artwork align="left" name="" type="" alt="" pn="section-5.2.2.2-2">
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |   Type (1184)                 |      Length (1 Octet)         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | SPF Status    |
  +-+-+-+-+-+-+-+-+
</artwork>
            <table align="center" pn="table-3">
              <name slugifiedName="name-link-nlri-attribute-status-">Link NLRI Attribute Status Values</name>
              <thead>
                <tr>
                  <th align="left" colspan="1" rowspan="1">Value</th>
                  <th align="left" colspan="1" rowspan="1">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left" colspan="1" rowspan="1">0</td>
                  <td align="left" colspan="1" rowspan="1">Reserved</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">1</td>
                  <td align="left" colspan="1" rowspan="1">Link unreachable with respect to BGP SPF</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">2-254</td>
                  <td align="left" colspan="1" rowspan="1">Unassigned</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">255</td>
                  <td align="left" colspan="1" rowspan="1">Reserved</td>
                </tr>
              </tbody>
            </table>
            <t indent="0" pn="section-5.2.2.2-4">
    If a BGP speaker received the Link NLRI but
    the SPF Status TLV is not received, then any previously received SPF status information is
    considered as implicitly withdrawn, and the NLRI is propagated to other BGP speakers.
    A BGP speaker receiving a BGP Update containing
    an SPF Status TLV in the BGP-LS Attribute <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>
    with an unknown value <bcp14>SHOULD</bcp14> be advertised to other
    BGP speakers and <bcp14>MUST</bcp14> ignore the SPF Status TLV with an unknown value in
    the SPF computation.
    An implementation <bcp14>MAY</bcp14> log this information for further analysis.
    If the SPF Status TLV contains a reserved value (0 or 255), the TLV is considered malformed and
    is handled as described in <xref target="new-TLVs" format="default" sectionFormat="of" derivedContent="Section 7.1"/>.
            </t>
          </section>
        </section>
        <section anchor="Prefix-NLRI" numbered="true" toc="include" removeInRFC="false" pn="section-5.2.3">
          <name slugifiedName="name-ipv4-ipv6-prefix-nlri-usage">IPv4/IPv6 Prefix NLRI Usage</name>
          <t indent="0" pn="section-5.2.3-1">
    An IPv4/IPv6 Prefix NLRI is advertised with a Local Node Descriptor and
    the prefix and length. The Prefix Descriptor field includes IP Reachability
    Information (TLV 265) as described in <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>.
    The Prefix Metric (TLV 1155) <bcp14>MUST</bcp14> be advertised to be considered for route calculation. The IGP Route Tag (TLV 1153) <bcp14>MAY</bcp14> be advertised. The usage of other BGP-LS
    Attribute TLVs is beyond the scope of this document.
          </t>
          <section anchor="prefix-status-tlv" numbered="true" toc="include" removeInRFC="false" pn="section-5.2.3.1">
            <name slugifiedName="name-bgp-ls-spf-prefix-nlri-attr">BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV</name>
            <t indent="0" pn="section-5.2.3.1-1">
      A BGP-LS Attribute SPF Status TLV of the BGP-LS-SPF Prefix NLRI is defined to indicate the status of
      the prefix with respect to the BGP SPF calculation. This is used to expedite
      convergence for prefix unreachability, as discussed in <xref target="failure-converge" format="default" sectionFormat="of" derivedContent="Section 6.5.1"/>.
      If the SPF Status TLV is not included with the Prefix NLRI, the prefix is considered
      reachable.
      A single TLV type is shared by the Node, Link, and Prefix NLRI.
      The TLV type is 1184.
            </t>
            <artwork align="left" name="" type="" alt="" pn="section-5.2.3.1-2">
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   Type (1184)                 |      Length (1 Octet)         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | SPF Status    |
    +-+-+-+-+-+-+-+-+
    </artwork>
            <table align="center" pn="table-4">
              <name slugifiedName="name-prefix-nlri-attribute-statu">Prefix NLRI Attribute Status Values</name>
              <thead>
                <tr>
                  <th align="left" colspan="1" rowspan="1">Value</th>
                  <th align="left" colspan="1" rowspan="1">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left" colspan="1" rowspan="1">0</td>
                  <td align="left" colspan="1" rowspan="1">Reserved</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">1</td>
                  <td align="left" colspan="1" rowspan="1">Prefix unreachable with respect to BGP SPF</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">2-254</td>
                  <td align="left" colspan="1" rowspan="1">Unassigned</td>
                </tr>
                <tr>
                  <td align="left" colspan="1" rowspan="1">255</td>
                  <td align="left" colspan="1" rowspan="1">Reserved</td>
                </tr>
              </tbody>
            </table>
            <t indent="0" pn="section-5.2.3.1-4">
      If a BGP speaker received the Prefix NLRI but
      the SPF Status TLV is not received, then any previously received SPF status information is
      considered as implicitly withdrawn, and the NLRI is propagated to other BGP speakers.
      A BGP speaker receiving a BGP Update containing
      an SPF Status TLV in the BGP-LS Attribute <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>
      with an unknown value <bcp14>SHOULD</bcp14> be advertised to other
      BGP speakers and <bcp14>MUST</bcp14> ignore the Status TLV with an unknown value in
      the SPF computation.
      An implementation <bcp14>MAY</bcp14> log this information for further analysis.
      If the SPF Status TLV contains a reserved value (0 or 255), the TLV is considered malformed and
      is handled as described in <xref target="new-TLVs" format="default" sectionFormat="of" derivedContent="Section 7.1"/>.
            </t>
          </section>
        </section>
        <section anchor="sequence-number-tlv" numbered="true" toc="include" removeInRFC="false" pn="section-5.2.4">
          <name slugifiedName="name-bgp-ls-attribute-sequence-n">BGP-LS Attribute Sequence Number TLV</name>
          <t indent="0" pn="section-5.2.4-1">
    A BGP-LS Attribute Sequence Number TLV of the BGP-LS-SPF NLRI types is defined to assure the most
    recent version of a given NLRI is used in the SPF computation. The Sequence Number TLV is
    mandatory for BGP-LS-SPF NLRI.
    The TLV type 1181 has been assigned by IANA. The BGP-LS
    Attribute Sequence Number TLV contains an 8-octet sequence number. The usage of the
    Sequence Number TLV is described in <xref target="Phase-1" format="default" sectionFormat="of" derivedContent="Section 6.1"/>.
          </t>
          <artwork align="left" name="" type="" alt="" pn="section-5.2.4-2">
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |   Type (1181)                 |      Length (8 Octets)        |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                Sequence Number (High-Order 32 Bits)           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                Sequence Number (Low-Order 32 Bits)            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  </artwork>
          <t indent="0" pn="section-5.2.4-3">
    Sequence Number:
    The 64-bit strictly increasing sequence number <bcp14>MUST</bcp14> be incremented for every
    self-originated version of a BGP-LS-SPF NLRI. BGP speakers implementing this specification
    <bcp14>MUST</bcp14> use available mechanisms to preserve the sequence number's strictly increasing property
    for the deployed life of the BGP speaker (including cold restarts).
    One mechanism for accomplishing this would be to use the high-order 32 bits of the
    sequence number as a wrap/boot count that is incremented any time the BGP router
    loses its sequence number state or the low-order 32 bits wrap.
          </t>
          <t indent="0" pn="section-5.2.4-4">
    When incrementing the sequence number for each self-originated NLRI,
    the sequence number should be treated as an unsigned 64-bit
    value. If the lower-order 32-bit value wraps, the higher-order 32-bit value should
    be incremented and saved in non-volatile storage. If a BGP speaker completely
    loses its sequence number state (e.g., the BGP speaker hardware
    is replaced or experiences a cold start), the BGP NLRI selection rules
    (see <xref target="Phase-1" format="default" sectionFormat="of" derivedContent="Section 6.1"/>) ensure convergence, albeit not immediately.
          </t>
          <t indent="0" pn="section-5.2.4-5">
    If the Sequence Number TLV
    is not received, then the corresponding NLRI is considered as malformed and
    <bcp14>MUST</bcp14> be handled as described in <xref target="new-TLVs" format="default" sectionFormat="of" derivedContent="Section 7.1"/>. An implementation <bcp14>SHOULD</bcp14> log an error for
    further analysis.
          </t>
        </section>
      </section>
      <section anchor="BGP-LS-SPF-EOR" numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-bgp-ls-spf-end-of-rib-eor-m">BGP-LS-SPF End of RIB (EoR) Marker</name>
        <t indent="0" pn="section-5.3-1">
   The usage of the EoR marker <xref target="RFC4724" format="default" sectionFormat="of" derivedContent="RFC4724"/> with the BGP-LS-SPF
   SAFI is somewhat different than the other BGP SAFIs. Reception of the EoR
   marker <bcp14>MAY</bcp14> optionally be expected prior to advertising a Link NLRI for a given peer.
        </t>
      </section>
      <section anchor="NEXT-HOP" numbered="true" toc="include" removeInRFC="false" pn="section-5.4">
        <name slugifiedName="name-bgp-next-hop-information">BGP Next-Hop Information</name>
        <t indent="0" pn="section-5.4-1">
    The rules for setting the BGP Next-Hop in the MP_REACH_NLRI attribute <xref target="RFC4760" format="default" sectionFormat="of" derivedContent="RFC4760"/>
    for the BGP-LS-SPF SAFI follow the rules in <xref section="5.5" target="RFC9552" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9552#section-5.5" derivedContent="RFC9552"/>.
    All BGP peers that support SPF extensions will locally compute the Local-RIB Next-Hop
    as a result of the SPF process. Hence, the use of the MP_REACH_NLRI Next-Hop as a tiebreaker in the
    standard BGP path decision processing is not applicable.
        </t>
      </section>
    </section>
    <section anchor="bgp-decision" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-decision-process-with-the-s">Decision Process with the SPF Algorithm</name>
      <t indent="0" pn="section-6-1">
    The Decision Process described in <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/> takes place in
    three distinct phases. The Phase 1 decision function of the Decision Process is
    responsible for calculating the degree
    of preference for each route received from a BGP speaker's peer. The Phase 2 decision
    function is invoked on completion of the Phase 1 decision function and is responsible
    for choosing the best route out of all those available for each
    distinct destination and for installing each chosen route into the Local-RIB.
    The combination of the Phase 1 and 2 decision functions is characterized as
    a Path Vector algorithm.
      </t>
      <t indent="0" pn="section-6-2">
    The SPF-based Decision Process replaces the BGP Decision Process described in
    <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>.
    Since BGP-LS-SPF NLRI always contains the Local Node Descriptor as described in
    <xref target="NLRI-Use" format="default" sectionFormat="of" derivedContent="Section 5.2"/>, each NLRI is uniquely originated by a single
    BGP speaker in the BGP SPF routing domain (the BGP node matching the NLRI's Node
    Descriptors). Instances of the same NLRI originated by multiple BGP speakers would be
    indicative of a configuration error or a masquerading attack
    (refer to <xref target="Security" format="default" sectionFormat="of" derivedContent="Section 9"/>).
    These selected Node NLRIs and their Link/Prefix NLRIs are used to build a directed
    graph during the SPF computation as described below. The best routes for BGP prefixes
    are installed in the RIB as a result of the SPF process.
</t>
      <t indent="0" pn="section-6-3">
  When BGP-LS-SPF NLRI is received, all that is required is to determine
  whether it is the most recent by examining the Node-ID and sequence number as described
  in <xref target="Phase-1" format="default" sectionFormat="of" derivedContent="Section 6.1"/>. If the received NLRI has changed, it is advertised
  to other BGP-LS-SPF peers. If the attributes have changed (other than the sequence number),
  a BGP SPF calculation is triggered. However, a changed NLRI <bcp14>MAY</bcp14> be advertised immediately
  to other peers and prior to any SPF calculation. Note that the BGP
  MinASOriginationIntervalTimer <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/> timer is not applicable
  to the BGP-LS-SPF SAFI. The MinRouteAdvertisementIntervalTimer is applicable with a suggested default
  of 5 seconds consistent with Internal BGP (IBGP) (refer to <xref section="10" target="RFC4271" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc4271#section-10" derivedContent="RFC4271"/>).

  The scheduling of the SPF calculation, as described in
  <xref target="BGP-SPF" format="default" sectionFormat="of" derivedContent="Section 6.3"/>, is an implementation and/or configuration matter.
  Scheduling <bcp14>MAY</bcp14> be dampened consistent with the SPF Back-Off Delay algorithm
  specified in <xref target="RFC8405" format="default" sectionFormat="of" derivedContent="RFC8405"/>.
</t>
      <t indent="0" pn="section-6-4">
  The Phase 3 decision function
  of the Decision Process <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/> is also simplified because under
  normal SPF operation, a BGP speaker <bcp14>MUST</bcp14> advertise the changed NLRIs
  to all BGP peers with the BGP-LS-SPF AFI/SAFI and install the changed routes in
  the GLOBAL-RIB. The only exceptions are unchanged
  NLRIs or stale NLRIs, i.e., an NLRI received with a less recent (numerically smaller)
  sequence number.
</t>
      <section anchor="Phase-1" numbered="true" toc="include" removeInRFC="false" pn="section-6.1">
        <name slugifiedName="name-bgp-spf-nlri-selection">BGP SPF NLRI Selection</name>
        <t indent="0" pn="section-6.1-1">
   For all BGP-LS-SPF NLRIs, the selection rules for Phase 1 of the BGP
   Decision Process (see <xref section="9.1.1" target="RFC4271" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc4271#section-9.1.1" derivedContent="RFC4271"/>) no longer apply.
</t>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-6.1-2"><li pn="section-6.1-2.1" derivedCounter="1.">
  NLRIs self-originated from directly connected BGP SPF peers are preferred.
  This condition can be determined by comparing the BGP Identifiers in
  the received Local Node Descriptor and the BGP OPEN message for an active
  BGP session. This rule assures that a stale NLRI is updated even if a BGP SPF router
  loses its sequence number state due to a cold start. Note that once the BGP session
  goes down, the NLRI received is no longer considered as being from a directly
  connected BGP SPF peer.
</li>
          <li pn="section-6.1-2.2" derivedCounter="2.">
  Consistent with base BGP <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>, an NLRI received from a peer will always
  replace the same NLRI received from that peer. Coupled with rule #1, this will ensure that
  any stale NLRI in the BGP SPF routing domain will be updated.
</li>
          <li pn="section-6.1-2.3" derivedCounter="3.">
  The NLRI with the most recent Sequence Number TLV, i.e., the highest sequence number is selected.
</li>
          <li pn="section-6.1-2.4" derivedCounter="4.">
  The NLRI received from the BGP speaker with the numerically larger BGP
  Identifier is preferred.
</li>
        </ol>
        <t indent="0" pn="section-6.1-3">
  When a BGP speaker completely loses its sequence number state, e.g., due to a cold start, or
  in the unlikely possibility that a 64-bit sequence number wraps, the BGP routing domain will
  still converge.

  This is due to the fact that BGP speakers adjacent to the router
  always accept self-originated NLRIs from the associated speaker as more recent (rule #1). When a
  BGP speaker reestablishes a connection with its peers, any existing sessions are taken
  down and stale NLRIs are replaced. The adjacent BGP speakers update their NLRI
  advertisements and advertise to their neighbors until the BGP routing domain has converged.
</t>
        <t indent="0" pn="section-6.1-4">
  The modified SPF Decision Process performs an SPF calculation rooted at the local BGP
  speaker using the metrics from the Link Attribute IGP Metric (TLV 1095) and
  the Prefix Attribute Prefix Metric (TLV 1155) <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>.
  These metrics are considered consistently across the BGP SPF domain.
  As a result, any other BGP attributes that
  would influence the BGP Decision Process defined in <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/> including
  ORIGIN, MULTI_EXIT_DISC, and
  LOCAL_PREF attributes are ignored by the SPF algorithm. The Next Hop in the MP_REACH_NLRI attribute
  <xref target="RFC4760" format="default" sectionFormat="of" derivedContent="RFC4760"/> is discussed in <xref target="NEXT-HOP" format="default" sectionFormat="of" derivedContent="Section 5.4"/>.
  The AS_PATH and AS4_PATH attributes <xref target="RFC6793" format="default" sectionFormat="of" derivedContent="RFC6793"/>
  are preserved and used for loop detection <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>. They are ignored
  during the SPF computation for BGP-LS-SPF NLRIs.
</t>
        <section anchor="Self-Origin" numbered="true" toc="include" removeInRFC="false" pn="section-6.1.1">
          <name slugifiedName="name-bgp-self-originated-nlri">BGP Self-Originated NLRI</name>
          <t indent="0" pn="section-6.1.1-1">
  Nodes, Links, or Prefix NLRIs with Node Descriptors matching the local BGP speaker are
  considered self-originated. When a self-originated NLRI is received and it doesn't match the
  local node's NLRI content (including the sequence number), special processing is required.
</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.1.1-2">
            <li pn="section-6.1.1-2.1">
    If a self-originated NLRI is received and the sequence number is more recent (i.e., greater than
    the local node's sequence number for the NLRI), the NLRI sequence number is advanced to
    one greater than the received sequence number, and the NLRI is readvertised to all peers.
  </li>
            <li pn="section-6.1.1-2.2">
    If a self-originated NLRI is received and the sequence number is the same as the local node's
    sequence number but the attributes differ, the NLRI sequence number is advanced to
    one greater than the received sequence number, and the NLRI is readvertised to all peers.
  </li>
          </ul>
          <t indent="0" pn="section-6.1.1-3">
  The above actions are performed immediately when the first instance of a newer self-originated NLRI is
  received. In this case, the newer instance is considered to be a stale instance that was advertised by
  the local node prior to a restart where the NLRI state was lost.
  However, if subsequent newer self-originated
  NLRI is received for the same Node, Link, or Prefix NLRI, the readvertisement
  or withdrawal is delayed by BGP_LS_SPF_SELF_READVERTISEMENT_DELAY (default 5) seconds
  since it is likely being advertised by a misconfigured or rogue BGP speaker
  (refer to <xref target="Security" format="default" sectionFormat="of" derivedContent="Section 9"/>).
</t>
        </section>
      </section>
      <section anchor="dual-stack" numbered="true" toc="include" removeInRFC="false" pn="section-6.2">
        <name slugifiedName="name-dual-stack-support">Dual-Stack Support</name>
        <t indent="0" pn="section-6.2-1">
  The SPF-based Decision Process operates on Node, Link, and Prefix NLRIs that support
  both IPv4 and IPv6 addresses. Whether to run a single SPF computation or multiple
  SPF computations for separate AFs is an implementation and/or policy matter. Normally, IPv4
  next-hops are calculated for IPv4 prefixes, and IPv6 next-hops are calculated for IPv6
  prefixes.
</t>
      </section>
      <section anchor="BGP-SPF" numbered="true" toc="include" removeInRFC="false" pn="section-6.3">
        <name slugifiedName="name-spf-calculation-based-on-bg">SPF Calculation Based on BGP-LS-SPF NLRI</name>
        <t indent="0" pn="section-6.3-1">
  This section details the BGP-LS-SPF local Routing Information Base (RIB) calculation.
  The router uses BGP-LS-SPF Node, Link, and Prefix NLRIs to compute routes using the
  following algorithm. This calculation yields the set of routes associated
  with the BGP SPF routing domain.  A router calculates the shortest-path tree using itself
  as the root. Optimizations to the BGP-LS-SPF algorithm are possible but <bcp14>MUST</bcp14> yield
  the same set of routes. The algorithm below supports ECMP
  routes. Weighted Unequal-Cost Multipath (UCMP) routes are out of scope.
</t>
        <t indent="0" pn="section-6.3-2">
  The following abstract data structures are defined in order to specify the algorithm.
</t>
        <dl spacing="normal" newline="false" indent="3" pn="section-6.3-3">
          <dt pn="section-6.3-3.1">Local Route Information Base (Local-RIB):</dt>
          <dd pn="section-6.3-3.2">A routing table
   that contains reachability information (i.e., next-hops) for all prefixes (both
   IPv4 and IPv6) as well as BGP-LS-SPF node reachability.
   Implementations may
   choose to implement this with separate RIBs for each address family and/or
   separate RIBs for prefix and node reachability.</dd>
          <dt pn="section-6.3-3.3">Global Routing Information Base (GLOBAL-RIB):</dt>
          <dd pn="section-6.3-3.4">The
   RIB containing the current routes that are
   installed in the router's forwarding plane.  This is commonly referred to
   in networking parlance as "the RIB".</dd>
          <dt pn="section-6.3-3.5">Link State Database (LSDB):</dt>
          <dd pn="section-6.3-3.6">A database of BGP-LS-SPF NLRIs
   that facilitate access to all Node, Link, and Prefix NLRIs.</dd>
          <dt pn="section-6.3-3.7">Candidate List (CAN-LIST):</dt>
          <dd pn="section-6.3-3.8">A list of candidate Node
   NLRIs used during the BGP SPF calculation. The list is sorted by the cost
   to reach the Node NLRI, with the Node NLRI that has the lowest reachability cost
   at the head of the list. This facilitates the execution of the Dijkstra
   algorithm, where the shortest paths between the local node and other nodes
   in the graph are computed.  The CAN-LIST is typically implemented as a heap but
   other data structures have been used.</dd>
        </dl>
        <t indent="0" pn="section-6.3-4">The Dijkstra algorithm consists of the steps below:</t>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-6.3-5"><li pn="section-6.3-5.1" derivedCounter="1.">
  The current Local-RIB is invalidated, and the CAN-LIST is initialized to be empty.
  The Local-RIB is rebuilt during the course of the SPF computation.  The existing routing entries
  are preserved for comparison to determine changes that need to be made to the GLOBAL-RIB in
  Step 6. These routes are referred to as "stale routes".
</li>
          <li pn="section-6.3-5.2" derivedCounter="2.">
   The cost of the Local-RIB Node route entry for the computing router is set to 0.
   The computing router's Node NLRI is added to the CAN-LIST (which was previously initialized
   to be empty in Step 1). The next-hop list is set to the internal loopback next-hop.
</li>
          <li pn="section-6.3-5.3" derivedCounter="3.">
  The Node NLRI with the lowest cost is removed from the CAN-LIST for processing.
  If the BGP-LS Attribute includes an SPF Status TLV
  (refer to <xref target="node-status-tlv" format="default" sectionFormat="of" derivedContent="Section 5.2.1.1"/>)
  indicating the node is unreachable, the Node NLRI is ignored and the next lowest-cost
  Node NLRI is selected from the CAN-LIST. The
  Node corresponding to this NLRI is referred to as the "Current-Node". If the CAN-LIST
  list is empty, the SPF calculation has completed and the algorithm proceeds to Step 6.
</li>
          <li pn="section-6.3-5.4" derivedCounter="4.">
            <t indent="0" pn="section-6.3-5.4.1">
    All the Prefix NLRIs with the same Local Node Descriptors as the Current-Node are considered
    for installation. The next-hop(s) for these Prefix NLRIs are inherited from the Current-Node.
    If the Current-Node is for the local BGP router, the next-hop for the prefix is a direct
    next-hop.  The cost for each prefix is the metric advertised in the Prefix Attribute
    Prefix Metric (TLV 1155) added to the cost to reach the Current-Node. The following
    is done for each Prefix NLRI (referred to as the "Current-Prefix"):
</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.3-5.4.2">
              <li pn="section-6.3-5.4.2.1">
    If the BGP-LS Prefix Attribute includes an SPF Status TLV indicating the prefix is
    unreachable, the Current-Prefix is considered unreachable, and the next Prefix
    NLRI is examined in Step 4.
  </li>
              <li pn="section-6.3-5.4.2.2">
    If the Current-Prefix's corresponding prefix is in the Local-RIB and the
    Local-RIB metric is less than the Current-Prefix's metric,
    the Current-Prefix does not contribute to the route, and the next Prefix NLRI is
    examined in Step 4.
  </li>
              <li pn="section-6.3-5.4.2.3">
    If the Current-Prefix's corresponding prefix is not in the Local-RIB,
    the prefix is installed with the Current-Node's next-hops
    installed as the Local-RIB route's next-hops. The Local-RIB route metric is set to the sum of the cost for Current-Node and the Current-Prefix's metric. If the
    IGP Route Tag (TLV 1153) is
    included in the Current-Prefix's NLRI Attribute, the tag(s) is installed in the
    current Local-RIB route's tag(s).
  </li>
              <li pn="section-6.3-5.4.2.4">
    If the Current-Prefix's corresponding prefix is in the Local-RIB and the cost is less
    than the Local-RIB route's metric, the prefix is installed with the Current-Node's next-hops, which 
    replace the Local-RIB route's next-hops and the metric being updated, and any route tags
    are removed. If the IGP Route Tag (TLV 1153) is
    included in the Current-Prefix's NLRI Attribute, the tag(s) is installed in the
    current Local-RIB route's tag(s).
  </li>
              <li pn="section-6.3-5.4.2.5">
    If the Current-Prefix's corresponding prefix is in the Local-RIB and the cost
    is the same as the Local-RIB route's metric, the Current-Node's next-hops are merged
    with the Local-RIB route's next-hops.
    The algorithm below supports ECMP routes.
    Some platforms or implementations may have limits on the number of
    ECMP routes that can be supported.  The setting or identification
    of any limitations is outside the scope if this document.
    Weighted UCMP routes are out of scope as well.
  </li>
            </ul>
          </li>
          <li pn="section-6.3-5.5" derivedCounter="5.">
            <t indent="0" pn="section-6.3-5.5.1">
    All the Link NLRIs with the same Node Identifiers as the Current-Node are considered
    for installation. Each link is examined and referred to as the "Current-Link" in the following text. The cost of the Current-Link is the advertised IGP Metric (TLV 1095)
    from the Link NLRI BGP-LS attribute added to the cost to reach the Current-Node.
    If the Current-Node is for the local BGP router,
    the next-hop for the link is a direct next-hop pointing to the corresponding local
    interface. For any other Current-Node, the next-hop(s) for the Current-Link is inherited
    from the Current-Node. The following is done for each link:
</t>
            <ol spacing="normal" type="a" indent="adaptive" start="1" pn="section-6.3-5.5.2">
<li pn="section-6.3-5.5.2.1" derivedCounter="a.">
  If the Current-Link's NLRI attribute includes an SPF Status TLV indicating the link is
  down, the BGP-LS-SPF Link NLRI is considered down, and the next link
  for the Current-Node is examined in Step 5.
</li>
              <li pn="section-6.3-5.5.2.2" derivedCounter="b.">
  If the Current-Node NLRI attributes include the SPF Status TLV
  (refer to <xref target="node-status-tlv" format="default" sectionFormat="of" derivedContent="Section 5.2.1.1"/>) and the status
  indicates that the Node doesn't support transit, the next link for the Current-Node is
  processed in Step 5.
</li>
              <li pn="section-6.3-5.5.2.3" derivedCounter="c.">
                <t indent="0" pn="section-6.3-5.5.2.3.1">
    The Current-Link's Remote Node NLRI is accessed (i.e., the Node NLRI
    with the same Node Identifiers as the Current-Link's Remote Node Descriptors). If it exists,
    it is referred to as the "Remote-Node" and the algorithm proceeds as follows:
                </t>
                <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.3-5.5.2.3.2">
                  <li pn="section-6.3-5.5.2.3.2.1">
    If the Remote-Node's NLRI attribute includes an SPF Status TLV indicating the node is
    unreachable, the next link for the Current-Node is examined in Step 5.
</li>
                  <li pn="section-6.3-5.5.2.3.2.2">
                    <t indent="0" pn="section-6.3-5.5.2.3.2.2.1">
  All the Link NLRIs corresponding to the Remote-Node are searched for a Link
  NLRI pointing to the Current-Node. Each Remote-Node's Link NLRI (referred to as the
  Remote-Link) is examined for Remote Node Descriptors matching the Current-Node and
  Link Descriptors matching the Current-Link.
                    </t>
                    <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.3-5.5.2.3.2.2.2">
                      <li pn="section-6.3-5.5.2.3.2.2.2.1">
      For IPv4/IPv6 numbered Link Descriptors to match during the IPv4 SPF computation, the
      Current-Link's IP4/IPv6 interface address link descriptor <bcp14>MUST</bcp14> match the Remote-Link
      IPv4/IPv6 neighbor address link descriptor, and the Current-Link's IPv4/IPv6 neighbor
      address <bcp14>MUST</bcp14> match the Remote-Link's IPv4/IPv6 interface address.
    </li>
                      <li pn="section-6.3-5.5.2.3.2.2.2.2">
      For unnumbered links to match during the IPv4 or IPv6 SPF computation,
      the Current-Link and Remote-Link's Address Family Link Descriptor TLV must match
      the address family of the IPv4 or IPv6 SPF computation,
      the Current-Link's Remote Identifier <bcp14>MUST</bcp14> match the Remote-Link's Local
      Identifier, and the Current-Link's Remote Identifier <bcp14>MUST</bcp14> match the
      Remote-Link's Local Identifier.
      Since the Link's Remote Identifier may not be known, a value of 0
      is considered a wildcard and will match any Current or Remote Link's Local
      Identifier (see TLV 258 <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>).
      Address Family Link Descriptor TLVs for multiple address families may be
      advertised so that an unnumbered link can be used in the SPF computation for
      multiple address families.
    </li>
                    </ul>
                    <t indent="0" pn="section-6.3-5.5.2.3.2.2.3">
    If these conditions are satisfied for one of the Remote-Node's links,
    the bidirectional connectivity
    check succeeds and the Remote-Node may be processed further. The
    Remote-Node's Link NLRI providing bidirectional connectivity
    is referred to as the Remote-Link. If no Remote-Link is found, the next
    link for the Current-Node is examined in Step 5.
                    </t>
                  </li>
                  <li pn="section-6.3-5.5.2.3.2.3">
  If the Remote-Link NLRI attribute includes an SPF Status TLV indicating
  the link is down, the Remote-Link NLRI is considered down, and the next link
  for the Current-Node is examined in Step 5.
</li>
                  <li pn="section-6.3-5.5.2.3.2.4">
  If the Remote-Node is not on the CAN-LIST, it is inserted based
  on the cost. The Remote Node's cost is the cost of the Current-Node added
  to the Current-Link's IGP Metric (TLV 1095). The next-hop(s) for the Remote-Node
  is inherited from the Current-Link.
</li>
                  <li pn="section-6.3-5.5.2.3.2.5">
  If the Remote-Node NLRI is already on the CAN-LIST with a higher cost, it
  must be removed and reinserted with the Remote-Node cost based on the
  Current-Link (as calculated in the previous step). The
  next-hop(s) for the Remote-Node is inherited from the Current-Link.
</li>
                  <li pn="section-6.3-5.5.2.3.2.6">
  If the Remote-Node NLRI is already on the CAN-LIST with the same cost, it need
  not be reinserted on the CAN-LIST. However, the Current-Link's next-hop(s)
  must be merged into the current set of next-hops for the Remote-Node.
</li>
                  <li pn="section-6.3-5.5.2.3.2.7">
  If the Remote-Node NLRI is already on the CAN-LIST with a lower cost, it need
  not be reinserted on the CAN-LIST.
</li>
                </ul>
              </li>
              <li pn="section-6.3-5.5.2.4" derivedCounter="d.">
  Return to Step 3 to process the next lowest-cost Node NLRI on the CAN-LIST.
</li>
            </ol>
          </li>
          <li pn="section-6.3-5.6" derivedCounter="6.">
            <t indent="0" pn="section-6.3-5.6.1">
    The Local-RIB is examined and changes (adds, deletes, and modifications) are installed into
    the GLOBAL-RIB. For each route in the Local-RIB:
</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.3-5.6.2">
              <li pn="section-6.3-5.6.2.1">
    If the route was added during the current BGP SPF computation, install the route into
    the GLOBAL-RIB.
</li>
              <li pn="section-6.3-5.6.2.2">
  If the route was modified during the current BGP SPF computation (e.g., metric, tags,
  or next-hops), update the route in the GLOBAL-RIB.
</li>
              <li pn="section-6.3-5.6.2.3">
  If the route was not installed during the current BGP SPF computation, remove the route
  from the GLOBAL-RIB.
</li>
            </ul>
          </li>
        </ol>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.4">
        <name slugifiedName="name-ipv4-ipv6-unicast-address-f">IPv4/IPv6 Unicast Address Family Interaction</name>
        <t indent="0" pn="section-6.4-1">
  While the BGP-LS-SPF address family and the BGP unicast address families may install routes
  into the routing tables of the same device, they operate independently (i.e., "ships-in-the-night" mode).
  There is no implicit route redistribution between the BGP-LS-SPF address family and the BGP
  unicast address families.
</t>
        <t indent="0" pn="section-6.4-2">
  It is <bcp14>RECOMMENDED</bcp14> that BGP-LS-SPF IPv4/IPv6 route computation and
  installation be given scheduling priority by default over other BGP address families
  as the BGP-LS-SPF SAFI is considered an underlay SAFI.
</t>
      </section>
      <section anchor="NLRI-Advertise" numbered="true" toc="include" removeInRFC="false" pn="section-6.5">
        <name slugifiedName="name-nlri-advertisement">NLRI Advertisement</name>
        <section anchor="failure-converge" numbered="true" toc="include" removeInRFC="false" pn="section-6.5.1">
          <name slugifiedName="name-link-prefix-failure-converg">Link/Prefix Failure Convergence</name>
          <t indent="0" pn="section-6.5.1-1">
  A local failure prevents a link from being used in the SPF calculation
  due to the IGP bidirectional connectivity requirement. Consequently, local link
  failures <bcp14>SHOULD</bcp14> always be communicated as quickly as possible and given priority
  over other categories of changes to ensure expeditious propagation
  and optimal convergence.
</t>
          <t indent="0" pn="section-6.5.1-2">
  According to standard BGP procedures, the link would continue
  to be used until the last copy of the BGP-LS-SPF Link NLRI is
  withdrawn. In order to avoid this delay, the originator of the Link NLRI <bcp14>SHOULD</bcp14>
  advertise a more recent version with an increased Sequence Number TLV for
  the BGP-LS-SPF Link NLRI including the SPF Status TLV
  (refer to <xref target="link-status-tlv" format="default" sectionFormat="of" derivedContent="Section 5.2.2.2"/>) indicating the link
  is down with respect to BGP SPF.
  The configurable LinkStatusDownAdvertise timer
  controls the interval that the BGP-LS-SPF Link NLRI is advertised with SPF Status indicating
  the link is down prior to withdrawal.

 If the BGP-LS-SPF Link NLRI is advertised with the SPF Status TLV
 included in the BGP-LS Attribute, and the link becomes available in that period,
 the originator of the BGP-LS-SPF Link NLRI <bcp14>MUST</bcp14> advertise a more recent
 version of the BGP-LS-SPF Link NLRI without the SPF Status TLV in the
 BGP-LS Link Attribute.

  The suggested default value for the LinkStatusDownAdvertise timer is 2 seconds.
</t>
          <t indent="0" pn="section-6.5.1-3">
  Similarly, when a prefix becomes unreachable, a more recent version of the BGP-LS-SPF
  Prefix NLRI <bcp14>SHOULD</bcp14> be advertised with the SPF Status TLV
  (refer to <xref target="prefix-status-tlv" format="default" sectionFormat="of" derivedContent="Section 5.2.3.1"/>)
  to indicate that the prefix is unreachable in the BGP-LS Prefix Attributes, and the prefix will be
  considered unreachable with respect to BGP SPF.

  The configurable PrefixStatusDownAdvertise timer
  controls the interval that the BGP-LS-Prefix NLRI is advertised with SPF Status indicating
  the prefix is unreachable prior to withdrawal.
  If the BGP-LS-SPF Prefix has been advertised with the SPF Status TLV and the prefix
  becomes reachable in that period, the originator of the BGP-LS-SPF Prefix NLRI
  <bcp14>MUST</bcp14> advertise a more recent version of the BGP-LS-SPF Prefix NLRI without the
  SPF Status TLV in the BGP-LS Prefix Attributes.
  The suggested default value for the PrefixStatusDownAdvertise timer is 2 seconds.
</t>
        </section>
        <section anchor="node-failure" numbered="true" toc="include" removeInRFC="false" pn="section-6.5.2">
          <name slugifiedName="name-node-failure-convergence">Node Failure Convergence</name>
          <t indent="0" pn="section-6.5.2-1">
  By default, all the NLRIs advertised by a node are withdrawn when a session
  failure is detected <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>. If fast failure detection such as BFD
  <xref target="RFC5880" format="default" sectionFormat="of" derivedContent="RFC5880"/> is utilized, and the node is
  on the fastest converging path, the most recent versions of BGP-LS-SPF NLRI will be
  withdrawn. This may result in older versions of NLRIs received from one or more peers on
  a different path(s) in the LSDB until they are withdrawn.
  These stale NLRIs will not delay convergence since the adjacent nodes detect the
  link failure and advertise a more recent NLRI indicating the link is down with respect to
  BGP SPF (refer to <xref target="failure-converge" format="default" sectionFormat="of" derivedContent="Section 6.5.1"/>) and the
  bidirectional connectivity check fails during the BGP SPF calculation
  (refer to <xref target="BGP-SPF" format="default" sectionFormat="of" derivedContent="Section 6.3"/>).
</t>
        </section>
      </section>
    </section>
    <section anchor="error-handling" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-error-handling">Error Handling</name>
      <t indent="0" pn="section-7-1">
  This section describes error-handling actions, as described in
  <xref target="RFC7606" format="default" sectionFormat="of" derivedContent="RFC7606"/>, that are specific to BGP-LS-SPF SAFI BGP UPDATE
  message processing.
</t>
      <section anchor="new-TLVs" numbered="true" toc="include" removeInRFC="false" pn="section-7.1">
        <name slugifiedName="name-processing-of-bgp-ls-spf-tl">Processing of BGP-LS-SPF TLVs</name>
        <t indent="0" pn="section-7.1-1">
  When a BGP speaker receives a BGP Update containing a malformed Node NLRI
  SPF Status TLV in the BGP-LS Attribute <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>,
  the corresponding Node NLRI is
  considered malformed and <bcp14>MUST</bcp14> be handled as 'treat-as-withdraw'. An
  implementation <bcp14>SHOULD</bcp14> log an error (subject to rate limiting) for further analysis.
</t>
        <t indent="0" pn="section-7.1-2">
  When a BGP speaker receives a BGP Update containing a malformed Link NLRI
  SPF Status TLV in the BGP-LS Attribute <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>,
  the corresponding Link NLRI is
  considered malformed and <bcp14>MUST</bcp14> be handled as 'treat-as-withdraw'. An
  implementation <bcp14>SHOULD</bcp14> log an error (subject to rate limiting) for further analysis.
</t>
        <t indent="0" pn="section-7.1-3">
  When a BGP speaker receives a BGP Update containing a malformed Address Family
  Link Descriptor TLV in the BGP-LS Attribute <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>,
  the corresponding Link NLRI is
  considered malformed and <bcp14>MUST</bcp14> be handled as 'treat-as-withdraw'. An
  implementation <bcp14>SHOULD</bcp14> log an error (subject to rate limiting) for further analysis.
</t>
        <t indent="0" pn="section-7.1-4">
  When a BGP speaker receives a BGP Update containing a malformed Prefix NLRI
  SPF Status TLV in the BGP-LS Attribute <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>,
  the corresponding Prefix NLRI is
  considered malformed and <bcp14>MUST</bcp14> be handled as 'treat-as-withdraw'. An
  implementation <bcp14>SHOULD</bcp14> log an error (subject to rate limiting) for further analysis.
</t>
        <t indent="0" pn="section-7.1-5">
  When a BGP speaker receives a BGP Update containing a malformed BGP-LS Attribute TE
  and IGP Metric TLV, the corresponding NLRI is considered malformed
  and <bcp14>MUST</bcp14> be handled as 'treat-as-withdraw' <xref target="RFC7606" format="default" sectionFormat="of" derivedContent="RFC7606"/>.
  An implementation <bcp14>SHOULD</bcp14> log an error (subject to rate limiting) for further analysis.
</t>
        <t indent="0" pn="section-7.1-6">
  The BGP-LS Attribute consists of Node attribute TLVs, Link attribute TLVs, and Prefix
  attribute TLVs. Node attribute TLVs and their error-handling rules are either defined in
  <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>
  or derived from <xref target="RFC5305" format="default" sectionFormat="of" derivedContent="RFC5305"/> and <xref target="RFC6119" format="default" sectionFormat="of" derivedContent="RFC6119"/>.
  If a BGP speaker receives a BGP-LS Attribute that is considered malformed based on these
  error-handling rules, then it <bcp14>MUST</bcp14> consider the received NLRI as malformed, and the receiving
  BGP speaker <bcp14>MUST</bcp14> handle such a malformed NLRI as 'treat-as-withdraw' <xref target="RFC7606" format="default" sectionFormat="of" derivedContent="RFC7606"/>.
</t>
        <t indent="0" pn="section-7.1-7">
  Node Descriptor TLVs and their error-handling rules are defined in
  <xref section="5.2.1" target="RFC9552" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9552#section-5.2.1" derivedContent="RFC9552"/>.
  Node Attribute TLVs and their error-handling rules are either defined in
  <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>
  or derived from <xref target="RFC5305" format="default" sectionFormat="of" derivedContent="RFC5305"/> and <xref target="RFC6119" format="default" sectionFormat="of" derivedContent="RFC6119"/>.
</t>
        <t indent="0" pn="section-7.1-8">
  Link Descriptor TLVs and their error-handling rules are defined in
  <xref section="5.2.2" target="RFC9552" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9552#section-5.2.2" derivedContent="RFC9552"/>.
  Link Attribute TLVs and their error-handling rules are either defined in
  <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>
  or derived from <xref target="RFC5305" format="default" sectionFormat="of" derivedContent="RFC5305"/> and <xref target="RFC6119" format="default" sectionFormat="of" derivedContent="RFC6119"/>.
</t>
        <t indent="0" pn="section-7.1-9">
  Prefix Descriptor TLVs and their error-handling rules are defined in
  <xref section="5.2.3" target="RFC9552" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9552#section-5.2.3" derivedContent="RFC9552"/>.
  Prefix Attribute TLVs and their error-handling rules are either defined in
  <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>
  or derived from <xref target="RFC5130" format="default" sectionFormat="of" derivedContent="RFC5130"/> and
  <xref target="RFC2328" format="default" sectionFormat="of" derivedContent="RFC2328"/>.
</t>
        <t indent="0" pn="section-7.1-10">
  If a BGP speaker receives NLRI with a Node Descriptor TLV, Link Descriptor TLV, or Prefix Descriptor
  TLV that is considered malformed based on error handling rules defined in the above references,
  then it <bcp14>MUST</bcp14> consider the received NLRI as malformed, and the receiving
  BGP speaker <bcp14>MUST</bcp14> handle such a malformed NLRI as 'treat-as-withdraw' <xref target="RFC7606" format="default" sectionFormat="of" derivedContent="RFC7606"/>.
</t>
        <t indent="0" pn="section-7.1-11">
  When a BGP speaker receives a BGP Update that does not contain any BGP-LS Attributes,
  it is most likely an indication of 'Attribute Discard' fault handling, and the
  BGP speaker <bcp14>SHOULD</bcp14> preserve and propagate the BGP-LS-SPF NLRI as described in
  <xref section="8.2.2" target="RFC9552" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9552#section-8.2.2" derivedContent="RFC9552"/>. However, NLRIs without the BGP-LS Attribute
  <bcp14>MUST NOT</bcp14> be used in the SPF calculation (<xref target="BGP-SPF" format="default" sectionFormat="of" derivedContent="Section 6.3"/>). How this is accomplished
  is an implementation matter, but one way would be for these NLRIs not to be returned in
  LSDB lookups.
</t>
      </section>
      <section anchor="bgpspf-nlri" numbered="true" toc="include" removeInRFC="false" pn="section-7.2">
        <name slugifiedName="name-processing-of-bgp-ls-spf-nl">Processing of BGP-LS-SPF NLRIs</name>
        <t indent="0" pn="section-7.2-1">
  A BGP speaker supporting the BGP-LS-SPF SAFI <bcp14>MUST</bcp14> perform the syntactic validation checks of the
  BGP-LS-SPF NLRI listed in <xref section="8.2.2" target="RFC9552" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9552#section-8.2.2" derivedContent="RFC9552"/> to determine if
  it is malformed.
</t>
      </section>
      <section anchor="bgpspf-attribute" numbered="true" toc="include" removeInRFC="false" pn="section-7.3">
        <name slugifiedName="name-processing-of-bgp-ls-attrib">Processing of BGP-LS Attributes</name>
        <t indent="0" pn="section-7.3-1">
 A BGP speaker supporting the BGP-LS-SPF SAFI <bcp14>MUST</bcp14> perform the syntactic validation checks of the
 BGP-LS Attribute listed in <xref section="8.2.2" target="RFC9552" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9552#section-8.2.2" derivedContent="RFC9552"/> to determine if
 it is malformed.
        </t>
        <t indent="0" pn="section-7.3-2">
  An implementation <bcp14>SHOULD</bcp14> log an error for further analysis for problems
  detected during syntax validation.
</t>
      </section>
      <section anchor="bgp-sync" numbered="true" toc="include" removeInRFC="false" pn="section-7.4">
        <name slugifiedName="name-bgp-ls-spf-link-state-datab">BGP-LS-SPF Link State Database Synchronization</name>
        <t indent="0" pn="section-7.4-1">
    While uncommon, there may be situations where the LSDBs of two
    BGP speakers support the BGP-LS-SPF SAFI lose synchronization.
    In these situations, the BGP
    session <bcp14>MUST</bcp14> be reset unless other means of resynchronization are used
    (beyond the scope of this document).
    When the session is reset, the BGP speaker <bcp14>MUST</bcp14> send a NOTIFICATION
    message with the BGP error code "Loss of LSDB Synchronization" as described
    in <xref section="3" target="RFC4271" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc4271#section-3" derivedContent="RFC4271"/>. The mechanisms to detect loss of
    synchronization are beyond the scope of this document.
        </t>
      </section>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.1">
        <name slugifiedName="name-bgp-ls-spf-allocation-in-th">BGP-LS-SPF Allocation in the SAFI Values Registry</name>
        <t indent="0" pn="section-8.1-1">
  IANA has assigned value 80 for BGP-LS-SPF from the First Come First
  Served range <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/> and listed this document as a reference in the "SAFI Values" registry within the "Subsequent Address Family Identifiers (SAFI) Parameters" registry group.
</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.2">
        <name slugifiedName="name-bgp-ls-spf-assignments-in-t">BGP-LS-SPF Assignments in the BGP-LS NLRI and Attribute TLVs Registry</name>
        <t indent="0" pn="section-8.2-1">
  IANA has assigned six TLVs for BGP-LS-SPF NLRI in the "BGP-LS NLRI and Attribute
  TLVs" registry. Supported TLV types include Sequence Number, SPF Status, and Address Family Link
  Descriptor.  Deprecated TLV types include SPF Capability, IPv4 Link Prefix Length, and IPv6
  Link Prefix Length.
</t>
        <table anchor="tab.iana-attr" align="center" pn="table-5">
          <name slugifiedName="name-nlri-attribute-tlvs">NLRI Attribute TLVs</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">TLV Code Point</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">1181</td>
              <td align="left" colspan="1" rowspan="1">Sequence Number</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="sequence-number-tlv" format="default" sectionFormat="of" derivedContent="Section 5.2.4"/> of RFC 9815</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">1184</td>
              <td align="left" colspan="1" rowspan="1">SPF Status</td>
              <td align="left" colspan="1" rowspan="1">Sections <xref target="node-status-tlv" format="counter" sectionFormat="of" derivedContent="5.2.1.1"/>,
<xref target="link-status-tlv" format="counter" sectionFormat="of" derivedContent="5.2.2.2"/>, and <xref target="prefix-status-tlv" format="counter" sectionFormat="of" derivedContent="5.2.3.1"/> of RFC 9815</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">1185</td>
              <td align="left" colspan="1" rowspan="1">Address Family Link Descriptor</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="af-link-descriptor-tlv" format="default" sectionFormat="of" derivedContent="Section 5.2.2.1"/> of RFC 9815</td>
            </tr>
          </tbody>
        </table>
        <t indent="0" pn="section-8.2-3">
  The early allocation assignments for the TLV types SPF Capability (1180),
  IPv4 Link Prefix Length (1182), and IPv6 Link Prefix Length (1183) are no longer required
  and have been deprecated.
</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.3">
        <name slugifiedName="name-bgp-ls-spf-node-nlri-attribu">BGP-LS-SPF Node NLRI Attribute SPF Status TLV Values Registry</name>
        <t indent="0" pn="section-8.3-1">
    IANA has created the "BGP-LS-SPF Node NLRI Attribute SPF
    Status TLV Values" registry for status values within the "BGP Shortest Path First (BGP SPF)" registry group.
    Initial values for this registry are provided below.  Future assignments
    are to be made using the Expert Review registration policy <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/>
    with guidance for designated experts as per <xref section="7.2" target="RFC9552" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9552#section-7.2" derivedContent="RFC9552"/>.
        </t>
        <table anchor="tab.iana-node-status" align="center" pn="table-6">
          <name slugifiedName="name-bgp-ls-spf-node-nlri-attribut">BGP-LS-SPF Node NLRI Attribute SPF Status TLV Values Registry Assignments</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Values</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">0</td>
              <td align="left" colspan="1" rowspan="1">Reserved</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">1</td>
              <td align="left" colspan="1" rowspan="1">Node unreachable with respect to BGP SPF</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">2</td>
              <td align="left" colspan="1" rowspan="1">Node does not support transit traffic with respect to BGP SPF</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">3-254</td>
              <td align="left" colspan="1" rowspan="1">Unassigned</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">255</td>
              <td align="left" colspan="1" rowspan="1">Reserved</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.4">
        <name slugifiedName="name-bgp-ls-spf-link-nlri-attribu">BGP-LS-SPF Link NLRI Attribute SPF Status TLV Values Registry</name>
        <t indent="0" pn="section-8.4-1">
    IANA has created the "BGP-LS-SPF Link NLRI Attribute SPF
    Status TLV Values" registry for status values within the BGP Shortest Path First (BGP SPF)" registry group.
    Initial values for this registry are provided below.  Future assignments
    are to be made using the IETF Review registration policy <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/>.
        </t>
        <table anchor="tab.iana-link-status" align="center" pn="table-7">
          <name slugifiedName="name-bgp-ls-spf-link-nlri-attribut">BGP-LS-SPF Link NLRI Attribute SPF Status TLV Values Registry Assignments</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Value</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">0</td>
              <td align="left" colspan="1" rowspan="1">Reserved</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">1</td>
              <td align="left" colspan="1" rowspan="1">Link unreachable with respect to BGP SPF</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">2-254</td>
              <td align="left" colspan="1" rowspan="1">Unassigned</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">255</td>
              <td align="left" colspan="1" rowspan="1">Reserved</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.5">
        <name slugifiedName="name-bgp-ls-spf-prefix-nlri-attri">BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV Values Registry</name>
        <t indent="0" pn="section-8.5-1">
    IANA has created the "BGP-LS-SPF Prefix NLRI Attribute SPF
    Status TLV Values" registry for status values within the "BGP Shortest Path First (BGP SPF)" registry group.
    Initial values for this registry are provided below.  Future assignments
    are to be made using the IETF Review registration policy <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/>.
        </t>
        <table anchor="tab.iana-prefix-status" align="center" pn="table-8">
          <name slugifiedName="name-bgp-ls-spf-prefix-nlri-attrib">BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV Values Registry Assignments</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Value</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">0</td>
              <td align="left" colspan="1" rowspan="1">Reserved</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">1</td>
              <td align="left" colspan="1" rowspan="1">Prefix unreachable with respect to BGP SPF</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">2-254</td>
              <td align="left" colspan="1" rowspan="1">Unassigned</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">255</td>
              <td align="left" colspan="1" rowspan="1">Reserved</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.6">
        <name slugifiedName="name-assignment-in-the-bgp-error">Assignment in the BGP Error (Notification) Codes Registry</name>
        <t indent="0" pn="section-8.6-1">
    IANA has assigned value 9 for Loss of LSDB Synchronization in the
    "BGP Error (Notification) Codes" registry within the
    "Border Gateway Protocol (BGP) Parameters" registry group.
        </t>
      </section>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-9-1">
  This document defines a BGP SAFI, i.e., the BGP-LS-SPF SAFI. This document
  does not change the underlying security issues inherent in the BGP protocol
  <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>. The security considerations
  discussed in <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/> apply to the BGP SPF functionality as well.
  The analysis of the security issues for BGP mentioned
  in <xref target="RFC4272" format="default" sectionFormat="of" derivedContent="RFC4272"/> and <xref target="RFC6952" format="default" sectionFormat="of" derivedContent="RFC6952"/> also applies to this document.
  The threats and security considerations are similar to the BGP IPv4 unicast SAFI and
  IPv6 unicast SAFI when utilized in similar deployments, e.g., <xref target="RFC7938" format="default" sectionFormat="of" derivedContent="RFC7938"/>.
  The analysis of generic threats to routing protocols in <xref target="RFC4593" format="default" sectionFormat="of" derivedContent="RFC4593"/>
  is also worth noting.
</t>
      <t indent="0" pn="section-9-2">
  As the modifications for
  BGP SPF described in this document apply to IPv4 unicast and IPv6 unicast as underlay SAFIs in a single
  BGP SPF routing domain, the BGP
  security solutions described in <xref target="RFC6811" format="default" sectionFormat="of" derivedContent="RFC6811"/> and <xref target="RFC8205" format="default" sectionFormat="of" derivedContent="RFC8205"/>
  are out of scope as they are meant to apply for inter-domain BGP, where
  multiple BGP routing domains are typically involved. The BGP-LS-SPF SAFI NLRIs described
  in this document are typically advertised between EBGP or
  IBGP speakers under a single administrative domain.
</t>
      <t indent="0" pn="section-9-3">
 The BGP-LS-SPF SAFI and associated BGP SPF processing inherit the
 encodings from BGP-LS <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>, and consequently, inherit the security
 considerations for BGP-LS associated with these encodings. 
  Additionally,
  given that BGP SPF processing
  is used to install IPv4 and IPv6 unicast routes, the BGP SPF processing is vulnerable to
  attacks to the routing control plane that aren't applicable to BGP-LS. One notable
  Denial-of-Service attack would be to include malformed BGP attributes in a replicated
  BGP Update, causing the receiving peer to treat the advertised BGP-LS-SPF to a
  withdrawal <xref target="RFC7606" format="default" sectionFormat="of" derivedContent="RFC7606"/>.
</t>
      <t indent="0" pn="section-9-4">
  In order to mitigate the risk of peering with BGP speakers masquerading
  as legitimate authorized BGP speakers, it is <bcp14>RECOMMENDED</bcp14> that
  the TCP Authentication Option (TCP-AO) <xref target="RFC5925" format="default" sectionFormat="of" derivedContent="RFC5925"/> be used to
  authenticate BGP sessions. If an authorized BGP peer is compromised, that
  BGP peer could advertise a modified Node, Link, or Prefix NLRI that results
  in misrouting, repeating origination of NLRI, and/or excessive SPF
  calculations. When a BGP speaker detects that its self-originated NLRI
  is being originated by another BGP speaker, an appropriate error <bcp14>SHOULD</bcp14>
  be logged so that the operator can take corrective action. This exposure is similar
  to other BGP AFI/SAFIs.
</t>
    </section>
    <section anchor="Management" numbered="true" toc="include" removeInRFC="false" pn="section-10">
      <name slugifiedName="name-management-considerations">Management Considerations</name>
      <t indent="0" pn="section-10-1">
  This section includes unique management considerations for the BGP-LS-SPF address family.
</t>
      <section anchor="Config" numbered="true" toc="include" removeInRFC="false" pn="section-10.1">
        <name slugifiedName="name-configuration">Configuration</name>
        <t indent="0" pn="section-10.1-1">
  All routers in the BGP SPF routing domain are under a single administrative domain
  allowing for consistent configuration.
</t>
      </section>
      <section anchor="link-metric-config" numbered="true" toc="include" removeInRFC="false" pn="section-10.2">
        <name slugifiedName="name-link-metric-configuration">Link Metric Configuration</name>
        <t indent="0" pn="section-10.2-1">
    For loopback prefixes, it is <bcp14>RECOMMENDED</bcp14> that the metric be 0.
    For non-loopback prefixes, the setting of the
    metric is a local matter and beyond the scope of this document.
        </t>
        <t indent="0" pn="section-10.2-2">
    Algorithms that set the metric inversely to the link speed 
    in some IGP implementations <bcp14>MAY</bcp14> be supported. However, the
    details of how the metric is computed are beyond the scope of this document.
        </t>
        <t indent="0" pn="section-10.2-3">
   Within a BGP SPF routing domain, the IGP metrics for all advertised links <bcp14>SHOULD</bcp14> be configured or
   defaulted consistently. For example, if a default metric is used for one router's links, then a
   similar metric should be used for all router's links. Similarly, if the link metric is
   derived from using the inverse of the link bandwidth on one router, then this <bcp14>SHOULD</bcp14>
   be done for all routers, and the same reference bandwidth <bcp14>SHOULD</bcp14> be used to derive the
   inversely proportional metric. Failure to do so will result in incorrect routing based on
   the link metric.
        </t>
      </section>
      <section anchor="neighbor-config" numbered="true" toc="include" removeInRFC="false" pn="section-10.3">
        <name slugifiedName="name-unnumbered-link-configurati">Unnumbered Link Configuration</name>
        <t indent="0" pn="section-10.3-1">
    When parallel unnumbered links between BGP SPF routers are included in the BGP SPF routing
    domain and the Remote Link Identifiers aren't readily discovered, it is <bcp14>RECOMMENDED</bcp14> that
    the Remote Link Identifiers be configured so that precise Link NLRI matching can be done.
        </t>
      </section>
      <section anchor="Adjacency-EoR-Required" numbered="true" toc="include" removeInRFC="false" pn="section-10.4">
        <name slugifiedName="name-adjacency-end-of-rib-eor-ma">Adjacency End-of-RIB (EOR) Marker Requirement</name>
        <t indent="0" pn="section-10.4-1">
  Depending on the peering model, topology, and convergence requirements, an
  EoR marker (<xref target="BGP-LS-SPF-EOR" format="default" sectionFormat="of" derivedContent="Section 5.3"/>) for the BGP-LS-SPF
  SAFI <bcp14>MAY</bcp14> be required from the peer prior to advertising a BGP-LS Link NLRI
  for the peer. If configuration is supported, this <bcp14>MUST</bcp14> be configurable at
  the BGP SPF instance level and <bcp14>MUST</bcp14> be configured consistently throughout
  the BGP SPF routing domain.
</t>
        <t indent="0" pn="section-10.4-2">
  When this configuration is provided, the default <bcp14>MUST</bcp14> be to wait
  indefinitely prior to advertising a BGP-LS Link NLRI. Configuration of
  a timer specifying the maximum time to wait prior to advertisement
  <bcp14>MAY</bcp14> be provided.
</t>
      </section>
      <section anchor="spf-backoff-config" numbered="true" toc="include" removeInRFC="false" pn="section-10.5">
        <name slugifiedName="name-backoff-config">backoff-config</name>
        <t indent="0" pn="section-10.5-1">
  In addition to the configuration of the BGP-LS-SPF address family, implementations <bcp14>SHOULD</bcp14>
  support "Shortest Path First (SPF) Back-Off Delay Algorithm for Link-State IGPs"
  <xref target="RFC8405" format="default" sectionFormat="of" derivedContent="RFC8405"/>. If supported, configuration of the INITIAL_SPF_DELAY, SHORT_SPF_DELAY,
  LONG_SPF_DELAY, TIME_TO_LEARN, and HOLDDOWN_INTERVAL <bcp14>MUST</bcp14> be supported <xref target="RFC8405" format="default" sectionFormat="of" derivedContent="RFC8405"/>.
  <xref section="6" target="RFC8405" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8405#section-6" derivedContent="RFC8405"/> recommends consistent configuration of these values
  throughout the IGP routing domain, and this also applies to the BGP SPF routing domain.
</t>
      </section>
      <section anchor="bgp-ls-spf-readvertisement-delay" numbered="true" toc="include" removeInRFC="false" pn="section-10.6">
        <name slugifiedName="name-bgp-ls-spf-nlri-readvertise">BGP-LS-SPF NLRI Readvertisement Delay</name>
        <t indent="0" pn="section-10.6-1">
  The configuration parameter that specifies the delay for readvertising a more recent
  instance of a self-originated NLRI when received more than once in succession
  is BGP_LS_SPF_SELF_READVERTISEMENT_DELAY. The default is 5 seconds.
</t>
      </section>
      <section anchor="Operation" numbered="true" toc="include" removeInRFC="false" pn="section-10.7">
        <name slugifiedName="name-operational-data">Operational Data</name>
        <t indent="0" pn="section-10.7-1">
  In order to troubleshoot SPF issues, implementations <bcp14>SHOULD</bcp14> support an SPF log including
  entries for previous SPF computations. Each SPF log entry would include the BGP-LS-SPF NLRI SPF
  triggering the SPF, SPF scheduled time, SPF start time, and SPF end time.
  Since the size of the log is finite, implementations
  <bcp14>SHOULD</bcp14> also maintain counters for the total number of SPF computations and the
  total number of SPF triggering events. Additionally, troubleshooting should be available for SPF scheduling and
  back-off <xref target="RFC8405" format="default" sectionFormat="of" derivedContent="RFC8405"/>, the current SPF back-off state, the remaining time-to-learn,
  the remaining hold-down interval, the last trigger event time, the last SPF time, and the next SPF time.
</t>
      </section>
      <section anchor="bgp-ls-spf-isolation" numbered="true" toc="include" removeInRFC="false" pn="section-10.8">
        <name slugifiedName="name-bgp-ls-spf-address-family-s">BGP-LS-SPF Address Family Session Isolation</name>
        <t indent="0" pn="section-10.8-1">
  In common deployment scenarios, the unicast routes installed during
  the BGP-LS-SPF AFI/SAFI computation serve as the
  underlay for other BGP AFI/SAFIs.
  To avoid errors encountered in other AFI/SAFIs from impacting
  the BGP-LS-SPF AFI/SAFI or vice versa, isolation mechanisms such as
  separate BGP instances or separate BGP sessions (e.g., using different
  addresses for peering) for BGP-LS-SPF information distribution
  <bcp14>SHOULD</bcp14> be used.
</t>
      </section>
    </section>
  </middle>
  <back>
    <references pn="section-11">
      <name slugifiedName="name-references">References</name>
      <references pn="section-11.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC2328" target="https://www.rfc-editor.org/info/rfc2328" quoteTitle="true" derivedAnchor="RFC2328">
          <front>
            <title>OSPF Version 2</title>
            <author fullname="J. Moy" initials="J." surname="Moy"/>
            <date month="April" year="1998"/>
            <abstract>
              <t indent="0">This memo documents version 2 of the OSPF protocol. OSPF is a link- state routing protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="54"/>
          <seriesInfo name="RFC" value="2328"/>
          <seriesInfo name="DOI" value="10.17487/RFC2328"/>
        </reference>
        <reference anchor="RFC4202" target="https://www.rfc-editor.org/info/rfc4202" quoteTitle="true" derivedAnchor="RFC4202">
          <front>
            <title>Routing Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)</title>
            <author fullname="K. Kompella" initials="K." role="editor" surname="Kompella"/>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
            <date month="October" year="2005"/>
            <abstract>
              <t indent="0">This document specifies routing extensions in support of carrying link state information for Generalized Multi-Protocol Label Switching (GMPLS). This document enhances the routing extensions required to support MPLS Traffic Engineering (TE). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4202"/>
          <seriesInfo name="DOI" value="10.17487/RFC4202"/>
        </reference>
        <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 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 indent="0">This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t indent="0">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 indent="0">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 indent="0">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="RFC4760" target="https://www.rfc-editor.org/info/rfc4760" quoteTitle="true" derivedAnchor="RFC4760">
          <front>
            <title>Multiprotocol Extensions for BGP-4</title>
            <author fullname="T. Bates" initials="T." surname="Bates"/>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <author fullname="D. Katz" initials="D." surname="Katz"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="January" year="2007"/>
            <abstract>
              <t indent="0">This document defines extensions to BGP-4 to enable it to carry routing information for multiple Network Layer protocols (e.g., IPv6, IPX, L3VPN, etc.). The extensions are backward compatible - a router that supports the extensions can interoperate with a router that doesn't support the extensions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4760"/>
          <seriesInfo name="DOI" value="10.17487/RFC4760"/>
        </reference>
        <reference anchor="RFC5130" target="https://www.rfc-editor.org/info/rfc5130" quoteTitle="true" derivedAnchor="RFC5130">
          <front>
            <title>A Policy Control Mechanism in IS-IS Using Administrative Tags</title>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <author fullname="M. Shand" initials="M." role="editor" surname="Shand"/>
            <author fullname="C. Martin" initials="C." surname="Martin"/>
            <date month="February" year="2008"/>
            <abstract>
              <t indent="0">This document describes an extension to the IS-IS protocol to add operational capabilities that allow for ease of management and control over IP prefix distribution within an IS-IS domain. This document enhances the IS-IS protocol by extending the information that an Intermediate System (IS) router can place in Link State Protocol (LSP) Data Units for policy use. This extension will provide operators with a mechanism to control IP prefix distribution throughout multi-level IS-IS domains. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5130"/>
          <seriesInfo name="DOI" value="10.17487/RFC5130"/>
        </reference>
        <reference anchor="RFC5305" target="https://www.rfc-editor.org/info/rfc5305" quoteTitle="true" derivedAnchor="RFC5305">
          <front>
            <title>IS-IS Extensions for Traffic Engineering</title>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <author fullname="H. Smit" initials="H." surname="Smit"/>
            <date month="October" year="2008"/>
            <abstract>
              <t indent="0">This document describes extensions to the Intermediate System to Intermediate System (IS-IS) protocol to support Traffic Engineering (TE). This document extends the IS-IS protocol by specifying new information that an Intermediate System (router) can place in Link State Protocol Data Units (LSP). This information describes additional details regarding the state of the network that are useful for traffic engineering computations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5305"/>
          <seriesInfo name="DOI" value="10.17487/RFC5305"/>
        </reference>
        <reference anchor="RFC5880" target="https://www.rfc-editor.org/info/rfc5880" quoteTitle="true" derivedAnchor="RFC5880">
          <front>
            <title>Bidirectional Forwarding Detection (BFD)</title>
            <author fullname="D. Katz" initials="D." surname="Katz"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <date month="June" year="2010"/>
            <abstract>
              <t indent="0">This document describes a protocol intended to detect faults in the bidirectional path between two forwarding engines, including interfaces, data link(s), and to the extent possible the forwarding engines themselves, with potentially very low latency. It operates independently of media, data protocols, and routing protocols. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5880"/>
          <seriesInfo name="DOI" value="10.17487/RFC5880"/>
        </reference>
        <reference anchor="RFC5925" target="https://www.rfc-editor.org/info/rfc5925" quoteTitle="true" derivedAnchor="RFC5925">
          <front>
            <title>The TCP Authentication Option</title>
            <author fullname="J. Touch" initials="J." surname="Touch"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <date month="June" year="2010"/>
            <abstract>
              <t indent="0">This document specifies the TCP Authentication Option (TCP-AO), which obsoletes the TCP MD5 Signature option of RFC 2385 (TCP MD5). TCP-AO specifies the use of stronger Message Authentication Codes (MACs), protects against replays even for long-lived TCP connections, and provides more details on the association of security with TCP connections than TCP MD5. TCP-AO is compatible with either a static Master Key Tuple (MKT) configuration or an external, out-of-band MKT management mechanism; in either case, TCP-AO also protects connections when using the same MKT across repeated instances of a connection, using traffic keys derived from the MKT, and coordinates MKT changes between endpoints. The result is intended to support current infrastructure uses of TCP MD5, such as to protect long-lived connections (as used, e.g., in BGP and LDP), and to support a larger set of MACs with minimal other system and operational changes. TCP-AO uses a different option identifier than TCP MD5, even though TCP-AO and TCP MD5 are never permitted to be used simultaneously. TCP-AO supports IPv6, and is fully compatible with the proposed requirements for the replacement of TCP MD5. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5925"/>
          <seriesInfo name="DOI" value="10.17487/RFC5925"/>
        </reference>
        <reference anchor="RFC6119" target="https://www.rfc-editor.org/info/rfc6119" quoteTitle="true" derivedAnchor="RFC6119">
          <front>
            <title>IPv6 Traffic Engineering in IS-IS</title>
            <author fullname="J. Harrison" initials="J." surname="Harrison"/>
            <author fullname="J. Berger" initials="J." surname="Berger"/>
            <author fullname="M. Bartlett" initials="M." surname="Bartlett"/>
            <date month="February" year="2011"/>
            <abstract>
              <t indent="0">This document specifies a method for exchanging IPv6 traffic engineering information using the IS-IS routing protocol. This information enables routers in an IS-IS network to calculate traffic-engineered routes using IPv6 addresses. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6119"/>
          <seriesInfo name="DOI" value="10.17487/RFC6119"/>
        </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 fullname="Q. Vohra" initials="Q." surname="Vohra"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <date month="December" year="2012"/>
            <abstract>
              <t indent="0">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="RFC6811" target="https://www.rfc-editor.org/info/rfc6811" quoteTitle="true" derivedAnchor="RFC6811">
          <front>
            <title>BGP Prefix Origin Validation</title>
            <author fullname="P. Mohapatra" initials="P." surname="Mohapatra"/>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <date month="January" year="2013"/>
            <abstract>
              <t indent="0">To help reduce well-known threats against BGP including prefix mis- announcing and monkey-in-the-middle attacks, one of the security requirements is the ability to validate the origination Autonomous System (AS) of BGP routes. More specifically, one needs to validate that the AS number claiming to originate an address prefix (as derived from the AS_PATH attribute of the BGP route) is in fact authorized by the prefix holder to do so. This document describes a simple validation mechanism to partially satisfy this requirement. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6811"/>
          <seriesInfo name="DOI" value="10.17487/RFC6811"/>
        </reference>
        <reference anchor="RFC7606" target="https://www.rfc-editor.org/info/rfc7606" quoteTitle="true" derivedAnchor="RFC7606">
          <front>
            <title>Revised Error Handling for BGP UPDATE Messages</title>
            <author fullname="E. Chen" initials="E." role="editor" surname="Chen"/>
            <author fullname="J. Scudder" initials="J." role="editor" surname="Scudder"/>
            <author fullname="P. Mohapatra" initials="P." surname="Mohapatra"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <date month="August" year="2015"/>
            <abstract>
              <t indent="0">According to the base BGP specification, a BGP speaker that receives an UPDATE message containing a malformed attribute is required to reset the session over which the offending attribute was received. This behavior is undesirable because a session reset would impact not only routes with the offending attribute but also other valid routes exchanged over the session. This document partially revises the error handling for UPDATE messages and provides guidelines for the authors of documents defining new attributes. Finally, it revises the error handling procedures for a number of existing attributes.</t>
              <t indent="0">This document updates error handling for RFCs 1997, 4271, 4360, 4456, 4760, 5543, 5701, and 6368.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7606"/>
          <seriesInfo name="DOI" value="10.17487/RFC7606"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" quoteTitle="true" derivedAnchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t indent="0">Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t indent="0">To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t indent="0">This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8205" target="https://www.rfc-editor.org/info/rfc8205" quoteTitle="true" derivedAnchor="RFC8205">
          <front>
            <title>BGPsec Protocol Specification</title>
            <author fullname="M. Lepinski" initials="M." role="editor" surname="Lepinski"/>
            <author fullname="K. Sriram" initials="K." role="editor" surname="Sriram"/>
            <date month="September" year="2017"/>
            <abstract>
              <t indent="0">This document describes BGPsec, an extension to the Border Gateway Protocol (BGP) that provides security for the path of Autonomous Systems (ASes) through which a BGP UPDATE message passes. BGPsec is implemented via an optional non-transitive BGP path attribute that carries digital signatures produced by each AS that propagates the UPDATE message. The digital signatures provide confidence that every AS on the path of ASes listed in the UPDATE message has explicitly authorized the advertisement of the route.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8205"/>
          <seriesInfo name="DOI" value="10.17487/RFC8205"/>
        </reference>
        <reference anchor="RFC8405" target="https://www.rfc-editor.org/info/rfc8405" quoteTitle="true" derivedAnchor="RFC8405">
          <front>
            <title>Shortest Path First (SPF) Back-Off Delay Algorithm for Link-State IGPs</title>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="H. Gredler" initials="H." surname="Gredler"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="P. Francois" initials="P." surname="Francois"/>
            <author fullname="C. Bowers" initials="C." surname="Bowers"/>
            <date month="June" year="2018"/>
            <abstract>
              <t indent="0">This document defines a standard algorithm to temporarily postpone or "back off" link-state IGP Shortest Path First (SPF) computations. This reduces the computational load and churn on IGP nodes when multiple temporally close network events trigger multiple SPF computations.</t>
              <t indent="0">Having one standard algorithm improves interoperability by reducing the probability and/or duration of transient forwarding loops during the IGP convergence when the IGP reacts to multiple temporally close IGP events.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8405"/>
          <seriesInfo name="DOI" value="10.17487/RFC8405"/>
        </reference>
        <reference anchor="RFC8654" target="https://www.rfc-editor.org/info/rfc8654" quoteTitle="true" derivedAnchor="RFC8654">
          <front>
            <title>Extended Message Support for BGP</title>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <date month="October" year="2019"/>
            <abstract>
              <t indent="0">The BGP specification (RFC 4271) mandates a maximum BGP message size of 4,096 octets. As BGP is extended to support new Address Family Identifiers (AFIs), Subsequent AFIs (SAFIs), and other features, there is a need to extend the maximum message size beyond 4,096 octets. This document updates the BGP specification by extending the maximum message size from 4,096 octets to 65,535 octets for all messages except for OPEN and KEEPALIVE messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8654"/>
          <seriesInfo name="DOI" value="10.17487/RFC8654"/>
        </reference>
        <reference anchor="RFC9086" target="https://www.rfc-editor.org/info/rfc9086" quoteTitle="true" derivedAnchor="RFC9086">
          <front>
            <title>Border Gateway Protocol - Link State (BGP-LS) Extensions for Segment Routing BGP Egress Peer Engineering</title>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <author fullname="K. Talaulikar" initials="K." role="editor" surname="Talaulikar"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <author fullname="S. Ray" initials="S." surname="Ray"/>
            <author fullname="J. Dong" initials="J." surname="Dong"/>
            <date month="August" year="2021"/>
            <abstract>
              <t indent="0">A node steers a packet through a controlled set of instructions, called segments, by prepending the packet with a list of segment identifiers (SIDs). A segment can represent any instruction, topological or service based. SR segments allow steering a flow through any topological path and service chain while maintaining per-flow state only at the ingress node of the SR domain.</t>
              <t indent="0">This document describes an extension to Border Gateway Protocol - Link State (BGP-LS) for advertisement of BGP Peering Segments along with their BGP peering node information so that efficient BGP Egress Peer Engineering (EPE) policies and strategies can be computed based on Segment Routing.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9086"/>
          <seriesInfo name="DOI" value="10.17487/RFC9086"/>
        </reference>
        <reference anchor="RFC9552" target="https://www.rfc-editor.org/info/rfc9552" quoteTitle="true" derivedAnchor="RFC9552">
          <front>
            <title>Distribution of Link-State and Traffic Engineering Information Using BGP</title>
            <author fullname="K. Talaulikar" initials="K." role="editor" surname="Talaulikar"/>
            <date month="December" year="2023"/>
            <abstract>
              <t indent="0">In many environments, a component external to a network is called upon to perform computations based on the network topology and the current state of the connections within the network, including Traffic Engineering (TE) information. This is information typically distributed by IGP routing protocols within the network.</t>
              <t indent="0">This document describes a mechanism by which link-state and TE information can be collected from networks and shared with external components using the BGP routing protocol. This is achieved using a BGP Network Layer Reachability Information (NLRI) encoding format. The mechanism applies to physical and virtual (e.g., tunnel) IGP links. The mechanism described is subject to policy control.</t>
              <t indent="0">Applications of this technique include Application-Layer Traffic Optimization (ALTO) servers and Path Computation Elements (PCEs).</t>
              <t indent="0">This document obsoletes RFC 7752 by completely replacing that document. It makes some small changes and clarifications to the previous specification. This document also obsoletes RFC 9029 by incorporating the updates that it made to RFC 7752.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9552"/>
          <seriesInfo name="DOI" value="10.17487/RFC9552"/>
        </reference>
      </references>
      <references pn="section-11.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC4272" target="https://www.rfc-editor.org/info/rfc4272" quoteTitle="true" derivedAnchor="RFC4272">
          <front>
            <title>BGP Security Vulnerabilities Analysis</title>
            <author fullname="S. Murphy" initials="S." surname="Murphy"/>
            <date month="January" year="2006"/>
            <abstract>
              <t indent="0">Border Gateway Protocol 4 (BGP-4), along with a host of other infrastructure protocols designed before the Internet environment became perilous, was originally designed with little consideration for protection of the information it carries. There are no mechanisms internal to BGP that protect against attacks that modify, delete, forge, or replay data, any of which has the potential to disrupt overall network routing behavior.</t>
              <t indent="0">This document discusses some of the security issues with BGP routing data dissemination. This document does not discuss security issues with forwarding of packets. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4272"/>
          <seriesInfo name="DOI" value="10.17487/RFC4272"/>
        </reference>
        <reference anchor="RFC4456" target="https://www.rfc-editor.org/info/rfc4456" quoteTitle="true" derivedAnchor="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 indent="0">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 indent="0">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 indent="0">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="RFC4593" target="https://www.rfc-editor.org/info/rfc4593" quoteTitle="true" derivedAnchor="RFC4593">
          <front>
            <title>Generic Threats to Routing Protocols</title>
            <author fullname="A. Barbir" initials="A." surname="Barbir"/>
            <author fullname="S. Murphy" initials="S." surname="Murphy"/>
            <author fullname="Y. Yang" initials="Y." surname="Yang"/>
            <date month="October" year="2006"/>
            <abstract>
              <t indent="0">Routing protocols are subject to attacks that can harm individual users or network operations as a whole. This document provides a description and a summary of generic threats that affect routing protocols in general. This work describes threats, including threat sources and capabilities, threat actions, and threat consequences, as well as a breakdown of routing functions that might be attacked separately. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4593"/>
          <seriesInfo name="DOI" value="10.17487/RFC4593"/>
        </reference>
        <reference anchor="RFC4724" target="https://www.rfc-editor.org/info/rfc4724" quoteTitle="true" derivedAnchor="RFC4724">
          <front>
            <title>Graceful Restart Mechanism for BGP</title>
            <author fullname="S. Sangli" initials="S." surname="Sangli"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <author fullname="R. Fernando" initials="R." surname="Fernando"/>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="January" year="2007"/>
            <abstract>
              <t indent="0">This document describes a mechanism for BGP that would help minimize the negative effects on routing caused by BGP restart. An End-of-RIB marker is specified and can be used to convey routing convergence information. A new BGP capability, termed "Graceful Restart Capability", is defined that would allow a BGP speaker to express its ability to preserve forwarding state during BGP restart. Finally, procedures are outlined for temporarily retaining routing information across a TCP session termination/re-establishment.</t>
              <t indent="0">The mechanisms described in this document are applicable to all routers, both those with the ability to preserve forwarding state during BGP restart and those without (although the latter need to implement only a subset of the mechanisms described in this document). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4724"/>
          <seriesInfo name="DOI" value="10.17487/RFC4724"/>
        </reference>
        <reference anchor="RFC5286" target="https://www.rfc-editor.org/info/rfc5286" quoteTitle="true" derivedAnchor="RFC5286">
          <front>
            <title>Basic Specification for IP Fast Reroute: Loop-Free Alternates</title>
            <author fullname="A. Atlas" initials="A." role="editor" surname="Atlas"/>
            <author fullname="A. Zinin" initials="A." role="editor" surname="Zinin"/>
            <date month="September" year="2008"/>
            <abstract>
              <t indent="0">This document describes the use of loop-free alternates to provide local protection for unicast traffic in pure IP and MPLS/LDP networks in the event of a single failure, whether link, node, or shared risk link group (SRLG). The goal of this technology is to reduce the packet loss that happens while routers converge after a topology change due to a failure. Rapid failure repair is achieved through use of precalculated backup next-hops that are loop-free and safe to use until the distributed network convergence process completes. This simple approach does not require any support from other routers. The extent to which this goal can be met by this specification is dependent on the topology of the network. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5286"/>
          <seriesInfo name="DOI" value="10.17487/RFC5286"/>
        </reference>
        <reference anchor="RFC6952" target="https://www.rfc-editor.org/info/rfc6952" quoteTitle="true" derivedAnchor="RFC6952">
          <front>
            <title>Analysis of BGP, LDP, PCEP, and MSDP Issues According to the Keying and Authentication for Routing Protocols (KARP) Design Guide</title>
            <author fullname="M. Jethanandani" initials="M." surname="Jethanandani"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <author fullname="L. Zheng" initials="L." surname="Zheng"/>
            <date month="May" year="2013"/>
            <abstract>
              <t indent="0">This document analyzes TCP-based routing protocols, the Border Gateway Protocol (BGP), the Label Distribution Protocol (LDP), the Path Computation Element Communication Protocol (PCEP), and the Multicast Source Distribution Protocol (MSDP), according to guidelines set forth in Section 4.2 of "Keying and Authentication for Routing Protocols Design Guidelines", RFC 6518.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6952"/>
          <seriesInfo name="DOI" value="10.17487/RFC6952"/>
        </reference>
        <reference anchor="RFC7911" target="https://www.rfc-editor.org/info/rfc7911" quoteTitle="true" derivedAnchor="RFC7911">
          <front>
            <title>Advertisement of Multiple Paths in BGP</title>
            <author fullname="D. Walton" initials="D." surname="Walton"/>
            <author fullname="A. Retana" initials="A." surname="Retana"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <date month="July" year="2016"/>
            <abstract>
              <t indent="0">This document defines a BGP extension that allows the advertisement of multiple paths for the same address prefix without the new paths implicitly replacing any previous ones. The essence of the extension is that each path is identified by a Path Identifier in addition to the address prefix.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7911"/>
          <seriesInfo name="DOI" value="10.17487/RFC7911"/>
        </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 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 indent="0">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="RFC9816" target="https://www.rfc-editor.org/info/rfc9816" quoteTitle="true" derivedAnchor="RFC9816">
          <front>
            <title>Usage and Applicability of BGP Link State (BGP-LS) Shortest Path First (SPF) Routing in Data Centers</title>
            <author fullname="Keyur Patel" initials="K." surname="Patel">
              <organization showOnFrontPage="true">Arrcus, Inc.</organization>
            </author>
            <author fullname="Acee Lindem" initials="A." surname="Lindem">
    </author>
            <author fullname="Shawn Zandi" initials="S." surname="Zandi">
    </author>
            <author fullname="Gaurav Dawra" initials="G." surname="Dawra">
    </author>
            <author fullname="Jie Dong" initials="J." surname="Dong">
    </author>
            <date month="July" year="2025"/>
          </front>
          <seriesInfo name="RFC" value="9816"/>
          <seriesInfo name="DOI" value="10.17487/RFC9816"/>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">The authors would like to thank <contact fullname="Sue Hares"/>,
  <contact fullname="Jorge Rabadan"/>, <contact fullname="Boris Hassanov"/>,
  <contact fullname="Dan Frost"/>, <contact fullname="Matt Anderson"/>,
  <contact fullname="Fred Baker"/>, <contact fullname="Lukas Krattiger"/>,
  <contact fullname="Yingzhen Qu"/>, and <contact fullname="Haibo Wang"/> for
  their reviews and comments. Thanks to <contact fullname="Pushpasis Sarkar"/>
  for discussions on preventing a BGP SPF router from being used for non-local
  traffic (i.e., transit traffic).</t>
      <t indent="0" pn="section-appendix.a-2">The authors extend a special thanks to <contact fullname="Eric Rosen"/> for
  fruitful discussions on BGP-LS-SPF convergence as compared to IGPs.</t>
      <t indent="0" pn="section-appendix.a-3">The authors would also like to thank the following people:</t>
      <ul empty="false" bare="false" indent="3" spacing="normal" pn="section-appendix.a-4">
        <li pn="section-appendix.a-4.1">
          <t indent="0" pn="section-appendix.a-4.1.1"><contact fullname="Alvaro Retana"/> for multiple AD
  reviews and discussions.</t>
        </li>
        <li pn="section-appendix.a-4.2">
          <t indent="0" pn="section-appendix.a-4.2.1"><contact fullname="Ketan Talaulikar"/> for an
  extensive shepherd review.</t>
        </li>
        <li pn="section-appendix.a-4.3">
          <t indent="0" pn="section-appendix.a-4.3.1"><contact fullname="Adrian Farrel"/>,
  <contact fullname="Li Zhang"/>, and <contact fullname="Jie Dong"/> for WG
  Last Call review comments.</t>
        </li>
        <li pn="section-appendix.a-4.4">
          <t indent="0" pn="section-appendix.a-4.4.1"><contact fullname="Jim Guichard"/> for his AD review and
  discussion.</t>
        </li>
        <li pn="section-appendix.a-4.5">
          <t indent="0" pn="section-appendix.a-4.5.1"><contact fullname="David Dong"/> for his IANA review.</t>
        </li>
        <li pn="section-appendix.a-4.6">
          <t indent="0" pn="section-appendix.a-4.6.1"><contact fullname="Joel Halpern"/> for his GENART review.</t>
        </li>
        <li pn="section-appendix.a-4.7">
          <t indent="0" pn="section-appendix.a-4.7.1"><contact fullname="Erik Kline"/>,
  <contact fullname="Eric Vyncke"/>, <contact fullname="Mahesh   Jethanandani"/>, and <contact fullname="Roman Danyliw"/> for IESG review
  comments.</t>
        </li>
        <li pn="section-appendix.a-4.8">
          <t indent="0" pn="section-appendix.a-4.8.1"><contact fullname="John Scudder"/> for his detailed IESG
  review and specifically for helping align the document with BGP documents.</t>
        </li>
      </ul>
    </section>
    <section anchor="Contributors" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-contributors">Contributors</name>
      <t indent="0" pn="section-appendix.b-1">The following people contributed substantially to the content of this document and should be considered
coauthors:</t>
      <contact fullname="Derek Yeung">
        <organization showOnFrontPage="true">Arrcus, Inc.</organization>
        <address>
          <email>derek@arrcus.com</email>
        </address>
      </contact>
      <contact fullname="Gunter Van de Velde">
        <organization showOnFrontPage="true">Nokia</organization>
        <address>
          <email>gunter.van_de_velde@nokia.com</email>
        </address>
      </contact>
      <contact fullname="Abhay Roy">
        <organization showOnFrontPage="true">Arrcus, Inc.</organization>
        <address>
          <email>abhay@arrcus.com</email>
        </address>
      </contact>
      <contact fullname="Venu Venugopal">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <email>venuv@cisco.com</email>
        </address>
      </contact>
      <contact fullname="Chaitanya Yadlapalli">
        <organization showOnFrontPage="true">AT&amp;T</organization>
        <address>
          <email>cy098d@att.com</email>
        </address>
      </contact>
    </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="Keyur Patel" initials="K" surname="Patel">
        <organization showOnFrontPage="true">Arrcus, Inc.</organization>
        <address>
          <email>keyur@arrcus.com</email>
        </address>
      </author>
      <author fullname="Acee Lindem" initials="A" surname="Lindem">
        <organization showOnFrontPage="true">Arrcus, Inc.</organization>
        <address>
          <postal>
            <street>301 Midenhall Way</street>
            <city>Cary</city>
            <region>NC</region>
            <code>27513</code>
            <country>United States of America</country>
          </postal>
          <email>acee.ietf@gmail.com</email>
        </address>
      </author>
      <author fullname="Shawn Zandi" initials="S" surname="Zandi">
        <organization showOnFrontPage="true"/>
        <address>
          <email>shafagh@shafagh.com</email>
        </address>
      </author>
      <author fullname="Wim Henderickx" initials="W" surname="Henderickx">
        <organization showOnFrontPage="true">Nokia</organization>
        <address>
          <postal>
            <street>copernicuslaan 50</street>
            <city>Antwerp</city>
            <code>2018</code>
            <country>Belgium</country>
          </postal>
          <email>wim.henderickx@nokia.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
