<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-ospf-ospfv3-segment-routing-extensions-23" indexInclude="true" ipr="trust200902" number="8666" prepTime="2019-12-06T13:42:53" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-ospf-ospfv3-segment-routing-extensions-23" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8666" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="OSPFv3 Extensions for Segment Routing">OSPFv3 Extensions for Segment Routing</title>
    <seriesInfo name="RFC" value="8666" stream="IETF"/>
    <author fullname="Peter Psenak" initials="P." role="editor" surname="Psenak">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Eurovea Centre, Central 3</street>
          <street>Pribinova Street 10</street>
          <city>Bratislava</city>
          <code>81109</code>
          <country>Slovakia</country>
        </postal>
        <email>ppsenak@cisco.com</email>
      </address>
    </author>
    <author fullname="Stefano Previdi" initials="S." role="editor" surname="Previdi">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <code/>
          <country/>
        </postal>
        <email>stefano@previdi.net</email>
      </address>
    </author>
    <date month="12" year="2019"/>
    <area>Routing</area>
    <workgroup>Open Shortest Path First IGP</workgroup>
    <keyword>MPLS, SID, IGP, OSPF, Label advertisement, Segment Routing</keyword>
    <abstract pn="section-abstract">
      <t pn="section-abstract-1">Segment Routing (SR) allows a flexible definition of end-to-end
      paths within IGP topologies by encoding paths as sequences of
      topological subpaths called "segments". These segments are advertised
      by the link-state routing protocols (IS-IS and OSPF).</t>
      <t pn="section-abstract-2">This document describes the OSPFv3 extensions required for Segment Routing
      with the MPLS data plane.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc8666" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t pn="section-boilerplate.2-1">
            Copyright (c) 2019 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Simplified BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Simplified BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-segment-routing-identifiers">Segment Routing Identifiers</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sid-label-sub-tlv">SID/Label Sub-TLV</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t keepWithNext="true" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-segment-routing-capabilitie">Segment Routing Capabilities</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t keepWithNext="true" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ospfv3-extended-prefix-rang">OSPFv3 Extended Prefix Range TLV</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t keepWithNext="true" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-prefix-sid-sub-tlv">Prefix-SID Sub-TLV</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t keepWithNext="true" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-adjacency-segment-identifie">Adjacency Segment Identifier (Adj-SID)</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-adj-sid-sub-tlv">Adj-SID Sub-TLV</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-lan-adj-sid-sub-tlv">LAN Adj-SID Sub-TLV</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t keepWithNext="true" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-elements-of-procedure">Elements of Procedure</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 keepWithNext="true" 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-intra-area-segment-routing-">Intra-area Segment Routing in OSPFv3</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t keepWithNext="true" 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-inter-area-segment-routing-">Inter-area Segment Routing in OSPFv3</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.3">
                <t keepWithNext="true" 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-segment-routing-for-externa">Segment Routing for External Prefixes</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.4">
                <t keepWithNext="true" 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-advertisement-of-adj-sid">Advertisement of Adj-SID</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2.4.2">
                  <li pn="section-toc.1-1.8.2.4.2.1">
                    <t keepWithNext="true" pn="section-toc.1-1.8.2.4.2.1.1"><xref derivedContent="8.4.1" format="counter" sectionFormat="of" target="section-8.4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-advertisement-of-adj-sid-on">Advertisement of Adj-SID on Point-to-Point Links</xref></t>
                  </li>
                  <li pn="section-toc.1-1.8.2.4.2.2">
                    <t keepWithNext="true" pn="section-toc.1-1.8.2.4.2.2.1"><xref derivedContent="8.4.2" format="counter" sectionFormat="of" target="section-8.4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-adjacency-sid-on-broadcast-">Adjacency SID on Broadcast or NBMA Interfaces</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t keepWithNext="true" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ospfv3-extended-lsa-tlvs-re">"OSPFv3 Extended-LSA TLVs" Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ospfv3-extended-lsa-sub-tlv">"OSPFv3 Extended-LSA Sub-TLVs" Registry</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t keepWithNext="true" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-tlv-sub-tlv-error-handling">TLV/Sub-TLV Error Handling                                                                                            
</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t keepWithNext="true" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t keepWithNext="true" pn="section-toc.1-1.12.1"><xref derivedContent="12" format="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.12.2">
              <li pn="section-toc.1-1.12.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.12.2.1.1"><xref derivedContent="12.1" format="counter" sectionFormat="of" target="section-12.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.12.2.2.1"><xref derivedContent="12.2" format="counter" sectionFormat="of" target="section-12.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.13">
            <t keepWithNext="true" pn="section-toc.1-1.13.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-contributors">Contributors</xref></t>
          </li>
          <li pn="section-toc.1-1.14">
            <t keepWithNext="true" pn="section-toc.1-1.14.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t pn="section-1-1">Segment Routing (SR) allows a flexible definition of end-to-end paths
      within IGP topologies by encoding paths as sequences of topological
      subpaths called "segments". These segments are advertised by the
      link-state routing protocols (IS-IS and OSPF). Prefix segments represent
      an ECMP-aware shortest path to a prefix (or a node) as per the state of
      the IGP topology. Adjacency segments represent a hop over a specific
      adjacency between two nodes in the IGP. A prefix segment is typically a
      multi-hop path while an adjacency segment, in most cases, is a one-hop
      path. SR's control plane can be applied to both IPv6 and MPLS data
      planes, and it does not require any additional signaling (other than IGP
      extensions). The IPv6 data plane is out of the scope of this
      specification; the OSPFv3 extension for SR with the IPv6 data plane will be
      specified in a separate document.  When used in MPLS networks, SR paths
      do not require any LDP or RSVP-TE signaling.  However, SR can
      interoperate in the presence of Label Switched Paths (LSPs) established with RSVP or LDP.</t>
      <t pn="section-1-2">This document describes the OSPFv3 extensions required for Segment
      Routing with the MPLS data plane.</t>
      <t pn="section-1-3">Segment Routing architecture is described in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>.</t>
      <t pn="section-1-4">Segment Routing use cases are described in <xref target="RFC7855" format="default" sectionFormat="of" derivedContent="RFC7855"/>.</t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t pn="section-2-1">This section lists some of the terminology used in this document:
    
      </t>
      <dl newline="false" spacing="normal" indent="12" pn="section-2-2">
        <dt pn="section-2-2.1">ABR:</dt>
        <dd pn="section-2-2.2">Area Border Router</dd>
        <dt pn="section-2-2.3">Adj-SID:</dt>
        <dd pn="section-2-2.4">Adjacency Segment Identifier</dd>
        <dt pn="section-2-2.5">AS:</dt>
        <dd pn="section-2-2.6">Autonomous System</dd>
        <dt pn="section-2-2.7">ASBR:</dt>
        <dd pn="section-2-2.8">Autonomous System Boundary Router</dd>
        <dt pn="section-2-2.9">DR:</dt>
        <dd pn="section-2-2.10">Designated Router</dd>
        <dt pn="section-2-2.11">IS-IS:</dt>
        <dd pn="section-2-2.12">Intermediate System to Intermediate System</dd>
        <dt pn="section-2-2.13">LDP:</dt>
        <dd pn="section-2-2.14">Label Distribution Protocol</dd>
        <dt pn="section-2-2.15">LSP:</dt>
        <dd pn="section-2-2.16">Label Switched Path</dd>
        <dt pn="section-2-2.17">MPLS:</dt>
        <dd pn="section-2-2.18">Multiprotocol Label Switching</dd>
        <dt pn="section-2-2.19">OSPF:</dt>
        <dd pn="section-2-2.20">Open Shortest Path First</dd>
        <dt pn="section-2-2.21">SPF:</dt>
        <dd pn="section-2-2.22">Shortest Path First</dd>
        <dt pn="section-2-2.23">RSVP:</dt>
        <dd pn="section-2-2.24">Resource Reservation Protocol</dd>
        <dt pn="section-2-2.25">SID:</dt>
        <dd pn="section-2-2.26">Segment Identifier</dd>
        <dt pn="section-2-2.27">SR:</dt>
        <dd pn="section-2-2.28">Segment Routing</dd>
        <dt pn="section-2-2.29">SRGB:</dt>
        <dd pn="section-2-2.30">Segment Routing Global Block</dd>
        <dt pn="section-2-2.31">SRLB:</dt>
        <dd pn="section-2-2.32">Segment Routing Local Block</dd>
        <dt pn="section-2-2.33">SRMS:</dt>
        <dd pn="section-2-2.34">Segment Routing Mapping Server</dd>
        <dt pn="section-2-2.35">TLV:</dt>
        <dd pn="section-2-2.36">Type Length Value</dd>
      </dl>
      <t pn="section-2-3">
    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-3">
      <name slugifiedName="name-segment-routing-identifiers">Segment Routing Identifiers</name>
      <t pn="section-3-1">Segment Routing defines various types of Segment Identifiers (SIDs):
      Prefix-SID, Adjacency SID, and LAN Adjacency SID.</t>
      <section anchor="SIDLABEL" numbered="true" toc="include" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-sid-label-sub-tlv">SID/Label Sub-TLV</name>
        <t pn="section-3.1-1">The SID/Label sub-TLV appears in multiple TLVs or sub-TLVs defined
        later in this document. It is used to advertise the SID or label
        associated with a prefix or adjacency. The SID/Label sub-TLV has the following
        format:</t>
        <artwork name="" type="" align="left" alt="" pn="section-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             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      SID/Label (variable)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
        <t pn="section-3.1-3">where:</t>
        <ul empty="true" bare="false" spacing="normal" pn="section-3.1-4">
          <li pn="section-3.1-4.1">
            <dl newline="false" spacing="normal" pn="section-3.1-4.1.1">
              <dt pn="section-3.1-4.1.1.1">Type:</dt>
              <dd pn="section-3.1-4.1.1.2">7</dd>
              <dt pn="section-3.1-4.1.1.3">Length:</dt>
              <dd pn="section-3.1-4.1.1.4">3 or 4 octets.</dd>
              <dt pn="section-3.1-4.1.1.5">SID/Label:</dt>
              <dd pn="section-3.1-4.1.1.6">If the length is set to 3, then the 20 rightmost bits
            represent a label. If the length is set to 4, then the value represents
            a 32-bit SID.</dd>
            </dl>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="SRCAP" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-segment-routing-capabilitie">Segment Routing Capabilities</name>
      <t pn="section-4-1">Segment Routing requires some additional router capabilities to be advertised to 
      other routers in the area.</t>
      <t pn="section-4-2">These SR capabilities are advertised in the OSPFv3 Router Information Opaque LSA 
      (defined in <xref target="RFC7770" format="default" sectionFormat="of" derivedContent="RFC7770"/>) and specified in 
      <xref target="RFC8665" format="default" sectionFormat="of" derivedContent="RFC8665"/>.</t>
    </section>
    <section anchor="PFXRANGE" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-ospfv3-extended-prefix-rang">OSPFv3 Extended Prefix Range TLV</name>
      <t pn="section-5-1">In some cases, it is useful to advertise attributes for a range of
      prefixes in a single advertisement. The SR Mapping Server, 
      which is described in <xref target="RFC8661" format="default" sectionFormat="of" derivedContent="RFC8661"/>,
      is an example of where SIDs for multiple prefixes can be advertised. To
      optimize such advertisement in case of multiple prefixes from a
      contiguous address range, OSPFv3 Extended Prefix Range TLV is defined.</t>
      <t pn="section-5-2">The OSPFv3 Extended Prefix Range TLV is a top-level TLV of the following LSAs
      defined in <xref target="RFC8362" format="default" sectionFormat="of" derivedContent="RFC8362"/>:
      </t>
      <ul empty="true" spacing="normal" bare="false" pn="section-5-3">
        <li pn="section-5-3.1">E-Intra-Area-Prefix-LSA</li>
        <li pn="section-5-3.2">E-Inter-Area-Prefix-LSA</li>
        <li pn="section-5-3.3">E-AS-External-LSA</li>
        <li pn="section-5-3.4">E-Type-7-LSA</li>
      </ul>
      <t pn="section-5-4">Multiple OSPFv3 Extended Prefix Range TLVs <bcp14>MAY</bcp14> be advertised in each LSA mentioned 
      above. The OSPFv3 Extended Prefix Range TLV has the following
      format: </t>
      <artwork name="" type="" align="left" alt="" pn="section-5-5">
 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             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix Length |       AF      |         Range Size            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Flags      |                 Reserved                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Address Prefix (variable)                 |
|                           ...                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Sub-TLVs (variable)                      |
+-                                                             -+
|                                                               |</artwork>
      <t pn="section-5-6">where:</t>
      <ul empty="true" bare="false" spacing="normal" pn="section-5-7">
        <li pn="section-5-7.1">
          <dl newline="false" spacing="normal" pn="section-5-7.1.1">
            <dt pn="section-5-7.1.1.1">Type:</dt>
            <dd pn="section-5-7.1.1.2">9</dd>
            <dt pn="section-5-7.1.1.3">Length:</dt>
            <dd pn="section-5-7.1.1.4">Variable, in octets, depending on the sub-TLVs.</dd>
            <dt pn="section-5-7.1.1.5">Prefix Length:</dt>
            <dd pn="section-5-7.1.1.6">Length of prefix in bits.</dd>
            <dt pn="section-5-7.1.1.7">AF:</dt>
            <dd pn="section-5-7.1.1.8">
              <t pn="section-5-7.1.1.8.1">Address family for the prefix. 
            
              </t>
              <dl newline="false" spacing="normal" pn="section-5-7.1.1.8.2">
                <dt pn="section-5-7.1.1.8.2.1">AF:</dt>
                <dd pn="section-5-7.1.1.8.2.2">0 - IPv4 unicast</dd>
                <dt pn="section-5-7.1.1.8.2.3">AF:</dt>
                <dd pn="section-5-7.1.1.8.2.4">1 - IPv6 unicast</dd>
              </dl>
            </dd>
            <dt pn="section-5-7.1.1.9">Range Size:</dt>
            <dd pn="section-5-7.1.1.10">
              <t pn="section-5-7.1.1.10.1">Represents the number of prefixes that are covered by the
            advertisement. The Range Size <bcp14>MUST NOT</bcp14> exceed the number of	
			prefixes that could be satisfied by the Prefix Length without	
			including:
              </t>
              <ul empty="true" spacing="normal" bare="false" pn="section-5-7.1.1.10.2">
                <li pn="section-5-7.1.1.10.2.1">Addresses from the IPv4 multicast address range (224.0.0.0/3), if the 
            		AF is IPv4 unicast.</li>
                <li pn="section-5-7.1.1.10.2.2">Addresses other than the IPv6 unicast addresses, if the
            		AF is IPv6 unicast.</li>
              </ul>
            </dd>
            <dt pn="section-5-7.1.1.11">Flags:</dt>
            <dd pn="section-5-7.1.1.12">Reserved. <bcp14>MUST</bcp14> be zero when sent and are ignored when received.</dd>
            <dt pn="section-5-7.1.1.13">Reserved:</dt>
            <dd pn="section-5-7.1.1.14">
              <bcp14>SHOULD</bcp14> be set to 0 on transmission and <bcp14>MUST</bcp14> be ignored on reception.</dd>
            <dt pn="section-5-7.1.1.15">Address Prefix:</dt>
            <dd pn="section-5-7.1.1.16">
              <ul empty="true" spacing="normal" bare="false" pn="section-5-7.1.1.16.1">
                <li pn="section-5-7.1.1.16.1.1">For the address family IPv4 unicast, the prefix itself is 
               encoded as a 32-bit value. The default route is represented by a prefix of 
               length 0.</li>
                <li pn="section-5-7.1.1.16.1.2">For the address family IPv6 unicast, the prefix is encoded as an even
multiple of 32-bit words and padded with zeroed bits as necessary. This
encoding consumes ((PrefixLength + 31) / 32) 32-bit words. </li>
                <li pn="section-5-7.1.1.16.1.3">Prefix encoding for other address families is beyond the scope of
               this specification. Prefix encoding for other address families can
               be defined in future Standards Track specifications from the IETF stream.</li>
              </ul>
            </dd>
          </dl>
        </li>
      </ul>
      <t pn="section-5-8">The range represents the contiguous set of prefixes with the same prefix length 
     as specified by the Prefix Length field. The set starts with the prefix that is 
     specified by the Address Prefix field. The number of prefixes in the range is equal 
     to the Range Size.</t>
      <t pn="section-5-9">If the OSPFv3 Extended Prefix Range TLVs advertising the exact same range appears 
     in multiple LSAs of the same type, originated by the same OSPFv3 router, the LSA with
     the numerically smallest Instance ID <bcp14>MUST</bcp14> be used, and subsequent instances of the 
     OSPFv3 Extended Prefix Range TLVs <bcp14>MUST</bcp14> be ignored.</t>
    </section>
    <section anchor="PREFIXSID" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-prefix-sid-sub-tlv">Prefix-SID Sub-TLV</name>
      <t pn="section-6-1">The Prefix-SID sub-TLV is a sub-TLV of the following OSPFv3 TLVs as
        defined in <xref target="RFC8362" format="default" sectionFormat="of" derivedContent="RFC8362"/> and in <xref target="PFXRANGE" format="default" sectionFormat="of" derivedContent="Section 5"/>: 
      </t>
      <ul empty="true" spacing="normal" bare="false" pn="section-6-2">
        <li pn="section-6-2.1">Intra-Area Prefix TLV</li>
        <li pn="section-6-2.2">Inter-Area Prefix TLV</li>
        <li pn="section-6-2.3">External Prefix TLV</li>
        <li pn="section-6-2.4">OSPFv3 Extended Prefix Range TLV</li>
      </ul>
      <t pn="section-6-3">It <bcp14>MAY</bcp14> appear more than once in the parent TLV and has the following format: 
      </t>
      <artwork name="" type="" align="left" alt="" pn="section-6-4">
 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            |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Flags     |  Algorithm    |           Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       SID/Index/Label (variable)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
      <t pn="section-6-5">where:</t>
      <ul empty="true" bare="false" spacing="normal" pn="section-6-6">
        <li pn="section-6-6.1">
          <dl newline="false" spacing="normal" pn="section-6-6.1.1">
            <dt pn="section-6-6.1.1.1">Type:</dt>
            <dd pn="section-6-6.1.1.2">4</dd>
            <dt pn="section-6-6.1.1.3">Length:</dt>
            <dd pn="section-6-6.1.1.4">7 or 8 octets, depending on the V-Flag.</dd>
            <dt pn="section-6-6.1.1.5">Flags:</dt>
            <dd pn="section-6-6.1.1.6">
              <t pn="section-6-6.1.1.6.1">Single-octet field. The following flags are defined: </t>
              <artwork name="" type="" align="left" alt="" pn="section-6-6.1.1.6.2">                
  0  1  2  3  4  5  6  7 
+--+--+--+--+--+--+--+--+
|  |NP|M |E |V |L |  |  |
+--+--+--+--+--+--+--+--+</artwork>
              <t pn="section-6-6.1.1.6.3">where:</t>
              <dl newline="false" spacing="normal" pn="section-6-6.1.1.6.4">
                <dt pn="section-6-6.1.1.6.4.1">NP-Flag:</dt>
                <dd pn="section-6-6.1.1.6.4.2">No-PHP (Penultimate Hop Popping) Flag. If set, then the penultimate hop <bcp14>MUST NOT</bcp14> pop the Prefix-SID before delivering packets to the
                node that advertised the Prefix-SID.</dd>
                <dt pn="section-6-6.1.1.6.4.3">M-Flag:</dt>
                <dd pn="section-6-6.1.1.6.4.4">Mapping Server Flag.  If set, the SID was advertised
                by an SR Mapping Server as described in 
                <xref target="RFC8661" format="default" sectionFormat="of" derivedContent="RFC8661"/>.</dd>
                <dt pn="section-6-6.1.1.6.4.5">E-Flag:</dt>
                <dd pn="section-6-6.1.1.6.4.6">Explicit Null Flag. If set, any upstream neighbor 
                of the Prefix-SID originator <bcp14>MUST</bcp14> replace the Prefix-SID with 
                the Explicit NULL label (0 for IPv4, 2 for IPv6) before forwarding the packet.</dd>
                <dt pn="section-6-6.1.1.6.4.7">V-Flag:</dt>
                <dd pn="section-6-6.1.1.6.4.8">Value/Index Flag. If set, then the Prefix-SID 
                carries an absolute value. If not set, then the Prefix-SID carries 
                an index.</dd>
                <dt pn="section-6-6.1.1.6.4.9">L-Flag:</dt>
                <dd pn="section-6-6.1.1.6.4.10">Local/Global Flag. If set, then the value/index 
                carried by the Prefix-SID has local significance. If not set, then
                the value/index carried by this sub-TLV has global significance.</dd>
                <dt pn="section-6-6.1.1.6.4.11">Other bits:</dt>
                <dd pn="section-6-6.1.1.6.4.12">Reserved. These <bcp14>MUST</bcp14> be zero when sent and are ignored when
                received.</dd>
              </dl>
            </dd>
            <dt pn="section-6-6.1.1.7">Reserved:</dt>
            <dd pn="section-6-6.1.1.8">
              <bcp14>SHOULD</bcp14> be set to 0 on transmission and <bcp14>MUST</bcp14> be ignored on reception.</dd>
            <dt pn="section-6-6.1.1.9">Algorithm:</dt>
            <dd pn="section-6-6.1.1.10">
              <t pn="section-6-6.1.1.10.1">Single octet identifying the algorithm the Prefix-SID
            is associated with as defined in the IGP Algorithm Types registry 
            <xref target="ALGOREG" format="default" sectionFormat="of" derivedContent="ALGOREG"/>.</t>
              <t pn="section-6-6.1.1.10.2">A router receiving a Prefix-SID from a remote node and with an algorithm 
            value that the remote node has not advertised in the SR-Algorithm TLV
            <xref target="RFC8665" format="default" sectionFormat="of" derivedContent="RFC8665"/> <bcp14>MUST</bcp14> ignore the 
            Prefix-SID sub-TLV.</t>
            </dd>
            <dt pn="section-6-6.1.1.11">SID/Index/Label:</dt>
            <dd pn="section-6-6.1.1.12">
              <t pn="section-6-6.1.1.12.1">According to the V-Flag and L-Flag, it contains:
              </t>
              <ul empty="true" spacing="normal" bare="false" pn="section-6-6.1.1.12.2">
                <li pn="section-6-6.1.1.12.2.1">V-Flag is set to 0 and L-Flag is set to 0: The SID/Index/Label
            field is a 4-octet index defining the offset in the SID/Label
            space advertised by this router.</li>
                <li pn="section-6-6.1.1.12.2.2">V-Flag is set to 1 and L-Flag is set to 1: The SID/Index/Label
            field is a 3-octet local label where the 20 rightmost bits are
            used for encoding the label value.</li>
                <li pn="section-6-6.1.1.12.2.3">All other combinations of V-Flag and L-Flag are invalid and
            any SID Advertisement received with an invalid setting for V- and
            L-Flags <bcp14>MUST</bcp14> be ignored.</li>
              </ul>
            </dd>
          </dl>
        </li>
      </ul>
      <t pn="section-6-7">If an OSPFv3 router advertises multiple Prefix-SIDs for the same prefix,
        topology, and algorithm, all of them <bcp14>MUST</bcp14> be ignored.</t>
      <t pn="section-6-8">When calculating the outgoing label for the prefix, the router <bcp14>MUST</bcp14>
        take into account, as described below, the E-, NP-, and M-Flags advertised by the 
        next-hop router if that router advertised the SID for the prefix.  This <bcp14>MUST</bcp14> be done
        regardless of whether the next-hop router contributes to the best path to the
        prefix.</t>
      <t pn="section-6-9">The NP-Flag (No-PHP) <bcp14>MUST</bcp14> be set and the E-Flag <bcp14>MUST</bcp14> be clear for Prefix-SIDs 
        allocated to prefixes that are propagated between areas by an ABR based on 
        intra-area or inter-area reachability, unless the advertised prefix is directly 
        attached to such ABR.</t>
      <t pn="section-6-10">The NP-Flag (No-PHP) <bcp14>MUST</bcp14> be set and the E-Flag <bcp14>MUST</bcp14> be clear for Prefix-SIDs 
        allocated to redistributed prefixes, unless the redistributed prefix is directly
        attached to the advertising ASBR.</t>
      <t pn="section-6-11">If the NP-Flag is not set, then:</t>
      <ul empty="true" spacing="normal" bare="false" pn="section-6-12">
        <li pn="section-6-12.1">Any upstream neighbor of the Prefix-SID
        originator <bcp14>MUST</bcp14> pop the Prefix-SID. This is equivalent to the
	penultimate hop-popping mechanism used in the MPLS data plane.</li>
        <li pn="section-6-12.2">The received E-Flag is ignored.</li>
      </ul>
      <t pn="section-6-13">If the NP-Flag is set and the E-Flag is not set, then:</t>
      <ul empty="true" spacing="normal" bare="false" pn="section-6-14">
        <li pn="section-6-14.1">Any upstream neighbor of the Prefix-SID originator <bcp14>MUST</bcp14> keep the
        Prefix-SID on top of the stack.  This is useful when the originator of
        the Prefix-SID needs to stitch the incoming packet into a continuing
        MPLS LSP to the final destination.  This could occur at an ABR (prefix
        propagation from one area to another) or at an ASBR (prefix
        propagation from one domain to another).
        </li>
      </ul>
      <t pn="section-6-15">If both the NP-Flag and E-Flag are set, then:</t>
      <ul empty="true" spacing="normal" bare="false" pn="section-6-16">
        <li pn="section-6-16.1">Any upstream neighbor of the Prefix-SID originator 
         <bcp14>MUST</bcp14> replace the Prefix-SID with an Explicit NULL label. This
         is useful, e.g., when the originator of the Prefix-SID is the final destination
         for the related prefix and the originator wishes to receive the packet with the 
         original Traffic Class field <xref target="RFC5462" format="default" sectionFormat="of" derivedContent="RFC5462"/>.</li>
      </ul>
      <t pn="section-6-17">When the M-Flag is set, the NP-Flag and the E-Flag <bcp14>MUST</bcp14> be ignored on reception.</t>
      <t pn="section-6-18">As the Mapping Server does not specify the originator of a prefix advertisement,
        it is not possible to determine PHP behavior solely based on the Mapping Server 
        Advertisement. However, PHP behavior <bcp14>SHOULD</bcp14> be done in the following cases:
      </t>
      <ul empty="true" spacing="normal" bare="false" pn="section-6-19">
        <li pn="section-6-19.1">The Prefix is intra-area type and the downstream neighbor is the originator 
        	of the prefix.</li>
        <li pn="section-6-19.2">The Prefix is inter-area type and the downstream neighbor is an ABR, which is 
        	advertising prefix reachability and is setting the LA-bit in the Prefix 
        	Options as described in <xref target="RFC8362" format="default" sectionFormat="of" derivedContent="RFC8362"/>.</li>
        <li pn="section-6-19.3">The Prefix is external type and the downstream neighbor is an ASBR, which is 
        	advertising prefix reachability and is setting the LA-bit in the Prefix 
        	Options as described in <xref target="RFC8362" format="default" sectionFormat="of" derivedContent="RFC8362"/>.</li>
      </ul>
      <t pn="section-6-20">When a Prefix-SID is advertised in the OSPFv3 Extended Prefix Range TLV, then
         the value advertised in the Prefix-SID sub-TLV is interpreted as a starting 
         SID/Label value.</t>
      <t pn="section-6-21">Example 1: If the following router addresses (loopback addresses)
        need to be mapped into the corresponding Prefix-SID indexes: </t>
      <artwork name="" type="" align="left" alt="" pn="section-6-22">
          Router-A: 2001:DB8::1/128, Prefix-SID: Index 1
          Router-B: 2001:DB8::2/128, Prefix-SID: Index 2
          Router-C: 2001:DB8::3/128, Prefix-SID: Index 3
          Router-D: 2001:DB8::4/128, Prefix-SID: Index 4</artwork>
      <t pn="section-6-23">then the Address Prefix field in the OSPFv3 Extended Prefix Range TLV would be set
        to 2001:DB8::1, the Prefix Length would be set to 128, the Range Size would be set to 4, and 
        the Index value in the Prefix-SID sub-TLV would be set to 1.</t>
      <t pn="section-6-24">Example 2: If the following prefixes need to be mapped into the
        corresponding Prefix-SID indexes: </t>
      <artwork name="" type="" align="left" alt="" pn="section-6-25">
          2001:DB8:1::0/120,   Prefix-SID: Index 51
          2001:DB8:1::100/120, Prefix-SID: Index 52
          2001:DB8:1::200/120, Prefix-SID: Index 53
          2001:DB8:1::300/120, Prefix-SID: Index 54
          2001:DB8:1::400/120, Prefix-SID: Index 55
          2001:DB8:1::500/120, Prefix-SID: Index 56
          2001:DB8:1::600/120, Prefix-SID: Index 57</artwork>
      <t pn="section-6-26">then the Prefix field in the OSPFv3 Extended Prefix Range TLV would be set 
        to 2001:DB8:1::0, the Prefix Length would be set to 120, the Range Size would be set to 7,
        and the Index value in the Prefix-SID sub-TLV would be set to 51.</t>
    </section>
    <section anchor="ADJSID" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-adjacency-segment-identifie">Adjacency Segment Identifier (Adj-SID)</name>
      <t pn="section-7-1">An Adjacency Segment Identifier (Adj-SID) represents a router
      adjacency in Segment Routing.</t>
      <section anchor="ADJSIDSUBTLV" numbered="true" toc="include" removeInRFC="false" pn="section-7.1">
        <name slugifiedName="name-adj-sid-sub-tlv">Adj-SID Sub-TLV</name>
        <t pn="section-7.1-1">The Adj-SID sub-TLV is an optional sub-TLV of the Router-Link TLV as defined in 
        <xref target="RFC8362" format="default" sectionFormat="of" derivedContent="RFC8362"/>. It <bcp14>MAY</bcp14> appear multiple times
        in the Router-Link TLV. 
        
        The Adj-SID sub-TLV has the following format:</t>
        <artwork name="" type="" align="left" alt="" pn="section-7.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            |              Length           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags         |     Weight    |             Reserved          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   SID/Label/Index (variable)                  |
+---------------------------------------------------------------+</artwork>
        <t pn="section-7.1-3">where:</t>
        <ul empty="true" bare="false" spacing="normal" pn="section-7.1-4">
          <li pn="section-7.1-4.1">
            <dl newline="false" spacing="normal" pn="section-7.1-4.1.1">
              <dt pn="section-7.1-4.1.1.1">Type:</dt>
              <dd pn="section-7.1-4.1.1.2">5</dd>
              <dt pn="section-7.1-4.1.1.3">Length:</dt>
              <dd pn="section-7.1-4.1.1.4">7 or 8 octets, depending on the V-Flag.</dd>
              <dt pn="section-7.1-4.1.1.5">Flags:</dt>
              <dd pn="section-7.1-4.1.1.6">
                <t pn="section-7.1-4.1.1.6.1">Single-octet field containing the following flags:</t>
                <artwork name="" type="" align="left" alt="" pn="section-7.1-4.1.1.6.2">
    0 1 2 3 4 5 6 7 
   +-+-+-+-+-+-+-+-+
   |B|V|L|G|P|     |
   +-+-+-+-+-+-+-+-+</artwork>
                <t pn="section-7.1-4.1.1.6.3">where:</t>
                <dl newline="false" spacing="normal" pn="section-7.1-4.1.1.6.4">
                  <dt pn="section-7.1-4.1.1.6.4.1">B-Flag:</dt>
                  <dd pn="section-7.1-4.1.1.6.4.2">Backup Flag. If set, the Adj-SID refers to an
                adjacency that is eligible for protection (e.g., using IP Fast
		Reroute (IPFRR) or MPLS-FRR (MPLS Fast Reroute)) as
                described in <xref target="RFC8402" sectionFormat="of" section="3.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8402#section-3.4" derivedContent="RFC8402"/>.</dd>
                  <dt pn="section-7.1-4.1.1.6.4.3">V-Flag:</dt>
                  <dd pn="section-7.1-4.1.1.6.4.4">Value/Index Flag. If set, then the Adj-SID 
                carries an absolute value. If not set, then the Adj-SID carries 
                an index.</dd>
                  <dt pn="section-7.1-4.1.1.6.4.5">L-Flag:</dt>
                  <dd pn="section-7.1-4.1.1.6.4.6">Local/Global Flag. If set, then the value/index 
                carried by the Adj-SID has local significance. If not set, then
                the value/index carried by this sub-TLV has global significance.</dd>
                  <dt pn="section-7.1-4.1.1.6.4.7">G-Flag:</dt>
                  <dd pn="section-7.1-4.1.1.6.4.8">Group Flag. When set, the G-Flag indicates that the 
                Adj-SID refers to a group of adjacencies (and therefore <bcp14>MAY</bcp14> be assigned
                to other adjacencies as well).</dd>
                  <dt pn="section-7.1-4.1.1.6.4.9">P-Flag.</dt>
                  <dd pn="section-7.1-4.1.1.6.4.10">Persistent Flag. When set, the P-Flag indicates that	
			    the Adj-SID is persistently allocated, i.e., the Adj-SID value	
			    remains the same across router restart and/or interface flap.</dd>
                  <dt pn="section-7.1-4.1.1.6.4.11">Other bits:</dt>
                  <dd pn="section-7.1-4.1.1.6.4.12">Reserved. These <bcp14>MUST</bcp14> be zero when sent and are 
                ignored when received.</dd>
                </dl>
              </dd>
              <dt pn="section-7.1-4.1.1.7">Reserved:</dt>
              <dd pn="section-7.1-4.1.1.8">
                <bcp14>SHOULD</bcp14> be set to 0 on transmission and <bcp14>MUST</bcp14> be ignored on reception.</dd>
              <dt pn="section-7.1-4.1.1.9">Weight:</dt>
              <dd pn="section-7.1-4.1.1.10">Weight used for load-balancing purposes. The use of the
            weight is defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>.</dd>
              <dt pn="section-7.1-4.1.1.11">SID/Index/Label:</dt>
              <dd pn="section-7.1-4.1.1.12">As described in <xref target="PREFIXSID" format="default" sectionFormat="of" derivedContent="Section 6"/>.</dd>
            </dl>
          </li>
        </ul>
        <t pn="section-7.1-5">An SR-capable router <bcp14>MAY</bcp14> allocate an Adj-SID for each of its
        adjacencies and set the B-Flag when the adjacency is eligible for protection by an
        FRR mechanism (IP or MPLS) as described in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>.</t>
        <t pn="section-7.1-6">An SR-capable router <bcp14>MAY</bcp14> allocate more than one Adj-SID to an adjacency.</t>
        <t pn="section-7.1-7">An SR-capable router <bcp14>MAY</bcp14> allocate the same Adj-SID to different adjacencies.</t>
        <t pn="section-7.1-8">When the P-Flag is not set, the Adj-SID <bcp14>MAY</bcp14> be persistent. When	
	    the P-Flag is set, the Adj-SID <bcp14>MUST</bcp14> be persistent.</t>
      </section>
      <section anchor="LANADJSIDSUBTLV" numbered="true" toc="include" removeInRFC="false" pn="section-7.2">
        <name slugifiedName="name-lan-adj-sid-sub-tlv">LAN Adj-SID Sub-TLV</name>
        <t pn="section-7.2-1">The LAN Adjacency SID is an optional sub-TLV of the Router-Link
        TLV. It <bcp14>MAY</bcp14> appear multiple times in the Router-Link TLV. It is used
        to advertise a SID/Label for an adjacency to a non-DR router on a
        broadcast, Non-Broadcast Multi-Access (NBMA), or hybrid <xref target="RFC6845" format="default" sectionFormat="of" derivedContent="RFC6845"/> network.
        </t>
        <artwork name="" type="" align="left" alt="" pn="section-7.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             |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Flags     |     Weight    |            Reserved           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Neighbor ID                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    SID/Label/Index (variable)                 |
+---------------------------------------------------------------+</artwork>
        <t pn="section-7.2-3">where:</t>
        <ul empty="true" bare="false" spacing="normal" pn="section-7.2-4">
          <li pn="section-7.2-4.1">
            <dl newline="false" spacing="normal" pn="section-7.2-4.1.1">
              <dt pn="section-7.2-4.1.1.1">Type:</dt>
              <dd pn="section-7.2-4.1.1.2">6</dd>
              <dt pn="section-7.2-4.1.1.3">Length:</dt>
              <dd pn="section-7.2-4.1.1.4">11 or 12 octets, depending on the V-Flag.</dd>
              <dt pn="section-7.2-4.1.1.5">Flags:</dt>
              <dd pn="section-7.2-4.1.1.6">Same as in <xref target="ADJSIDSUBTLV" format="default" sectionFormat="of" derivedContent="Section 7.1"/>.</dd>
              <dt pn="section-7.2-4.1.1.7">Weight:</dt>
              <dd pn="section-7.2-4.1.1.8">Weight used for load-balancing purposes. The use of the
            weight is defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>.</dd>
              <dt pn="section-7.2-4.1.1.9">Reserved:</dt>
              <dd pn="section-7.2-4.1.1.10">
                <bcp14>SHOULD</bcp14> be set to 0 on transmission and <bcp14>MUST</bcp14> be ignored on reception.</dd>
              <dt pn="section-7.2-4.1.1.11">Neighbor ID:</dt>
              <dd pn="section-7.2-4.1.1.12">The Router ID of the neighbor for which the LAN Adjacency SID is 
            advertised.</dd>
              <dt pn="section-7.2-4.1.1.13">SID/Index/Label:</dt>
              <dd pn="section-7.2-4.1.1.14">
                <t pn="section-7.2-4.1.1.14.1">As described in <xref target="PREFIXSID" format="default" sectionFormat="of" derivedContent="Section 6"/>.</t>
                <t pn="section-7.2-4.1.1.14.2">When the P-Flag is not set, the LAN Adjacency SID <bcp14>MAY</bcp14> be persistent. When	
	        the P-Flag is set, the LAN Adjacency SID <bcp14>MUST</bcp14> be persistent.</t>
              </dd>
            </dl>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-elements-of-procedure">Elements of Procedure</name>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.1">
        <name slugifiedName="name-intra-area-segment-routing-">Intra-area Segment Routing in OSPFv3</name>
        <t pn="section-8.1-1">An OSPFv3 router that supports Segment Routing <bcp14>MAY</bcp14> advertise Prefix-
        SIDs for any prefix to which it is advertising reachability (e.g.,
        a loopback IP address as described in <xref target="PREFIXSID" format="default" sectionFormat="of" derivedContent="Section 6"/>).</t>
        <t pn="section-8.1-2">A Prefix-SID can also be advertised by SR Mapping Servers (as
        described in <xref target="RFC8661" format="default" sectionFormat="of" derivedContent="RFC8661"/>). A Mapping
        Server advertises Prefix-SIDs for remote prefixes that exist in the
        OSPFv3 routing domain. Multiple Mapping Servers can advertise Prefix-SIDs 
        for the same prefix, in which case the same Prefix-SID <bcp14>MUST</bcp14> be advertised by
        all of them. The SR Mapping Server could use either area flooding scope or
        autonomous system flooding scope when advertising Prefix-SIDs for
        prefixes, based on the configuration of the SR Mapping Server.
        Depending on the flooding scope used, the SR Mapping Server chooses the
        OSPFv3 LSA type that will be used. If the area flooding scope is needed,
        an E-Intra-Area-Prefix-LSA <xref target="RFC8362" format="default" sectionFormat="of" derivedContent="RFC8362"/>
        is used. If autonomous system flooding scope is needed,
        an E-AS-External-LSA <xref target="RFC8362" format="default" sectionFormat="of" derivedContent="RFC8362"/> is used.</t>
        <t pn="section-8.1-3">When a Prefix-SID is advertised by the Mapping Server, which is
        indicated by the M-Flag in the Prefix-SID sub-TLV (<xref target="PREFIXSID" format="default" sectionFormat="of" derivedContent="Section 6"/>), the route type as implied by
        the LSA type is ignored and the Prefix-SID is bound to the
        corresponding prefix independent of the route type.</t>
        <t pn="section-8.1-4">Advertisement of the Prefix-SID by the Mapping Server using an
        Inter-Area Prefix TLV, External-Prefix TLV, or Intra-Area-Prefix TLV
        <xref target="RFC8362" format="default" sectionFormat="of" derivedContent="RFC8362"/> does not itself
        contribute to the prefix reachability. The NU-bit <xref target="RFC5340" format="default" sectionFormat="of" derivedContent="RFC5340"/> <bcp14>MUST</bcp14> be set in the
        PrefixOptions field of the LSA, which is used by the Mapping Server to
        advertise SID or SID Range, which prevents the advertisement from contributing to
        prefix reachability.</t>
        <t pn="section-8.1-5">An SR Mapping Server <bcp14>MUST</bcp14> use the OSPFv3 Extended Prefix Range TLVs when advertising SIDs
        for prefixes. Prefixes of different route types can be combined in a single OSPFv3 
        Extended Prefix Range TLV advertised by an SR Mapping Server.</t>
        <t pn="section-8.1-6">Area-scoped OSPFv3 Extended Prefix Range TLVs are propagated between areas, similar 
        to propagation of prefixes between areas. Same rules that are used for propagating 
        prefixes between areas <xref target="RFC5340" format="default" sectionFormat="of" derivedContent="RFC5340"/> are used for the propagation of 
        the prefix ranges.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.2">
        <name slugifiedName="name-inter-area-segment-routing-">Inter-area Segment Routing in OSPFv3</name>
        <t pn="section-8.2-1">In order to support SR in a multiarea environment, OSPFv3 <bcp14>MUST</bcp14>
        propagate Prefix-SID information between areas. The following
        procedure is used to propagate Prefix-SIDs between areas.</t>
        <t pn="section-8.2-2">When an OSPFv3 ABR advertises an Inter-Area-Prefix-LSA from an
        intra-area prefix to all its connected areas, it will also include the
        Prefix-SID sub-TLV as described in <xref target="PREFIXSID" format="default" sectionFormat="of" derivedContent="Section 6"/>. The
        Prefix-SID value will be set as follows: </t>
        <ul empty="true" spacing="normal" bare="false" pn="section-8.2-3">
          <li pn="section-8.2-3.1">The ABR will look at its best path to the prefix in the source area
            and find the advertising router associated with the best
            path to that prefix.</li>
          <li pn="section-8.2-3.2">The ABR will then determine if this router advertised a Prefix-SID	
			for the prefix and use it when advertising the Prefix-SID to other	
			connected areas.</li>
          <li pn="section-8.2-3.3">If no Prefix-SID was advertised for the prefix in the source
            area by the router that contributes to the best path to the
            prefix, the originating ABR will use the Prefix-SID advertised by any
            other router when propagating the Prefix-SID for the prefix to other areas.</li>
        </ul>
        <t pn="section-8.2-4">When an OSPFv3 ABR advertises an Inter-Area-Prefix-LSA from an
        inter-area route to all its connected areas, it will also include the
        Prefix-SID sub-TLV as described in <xref target="PREFIXSID" format="default" sectionFormat="of" derivedContent="Section 6"/>. The
        Prefix-SID value will be set as follows: </t>
        <ul empty="true" spacing="normal" bare="false" pn="section-8.2-5">
          <li pn="section-8.2-5.1">The ABR will look at its best path to the prefix in the backbone
            area and find the advertising router associated with the best
            path to that prefix.</li>
          <li pn="section-8.2-5.2">The ABR will then determine if this router advertised a Prefix-SID
            for the prefix and use it when advertising the Prefix-SID to other
            connected areas.</li>
          <li pn="section-8.2-5.3">If no Prefix-SID was advertised for the prefix in the backbone
            area by the ABR that contributes to the best path to the prefix,
            the originating ABR will use the Prefix-SID advertised by any
            other router when propagating the Prefix-SID for the prefix to other areas.</li>
        </ul>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.3">
        <name slugifiedName="name-segment-routing-for-externa">Segment Routing for External Prefixes</name>
        <t pn="section-8.3-1">AS-External-LSAs are flooded domain wide. When an ASBR, which
        supports SR, originates an E-AS-External-LSA, it <bcp14>SHOULD</bcp14> also include
        a Prefix-SID sub-TLV as described in <xref target="PREFIXSID" format="default" sectionFormat="of" derivedContent="Section 6"/>.
        The Prefix-SID value will be set to the SID that has been reserved for
        that prefix.</t>
        <t pn="section-8.3-2">When a Not-So-Stubby Area (NSSA) <xref target="RFC3101" format="default" sectionFormat="of" derivedContent="RFC3101"/> ABR
        translates an E-NSSA-LSA into an E-AS-External-LSA, it <bcp14>SHOULD</bcp14> also
        advertise the Prefix-SID for the prefix. The NSSA ABR determines its
        best path to the prefix advertised in the translated E-NSSA-LSA and
        finds the advertising router associated with that path.  If the
        advertising router has advertised a Prefix-SID for the prefix, then
        the NSSA ABR uses it when advertising the Prefix-SID for the
        E-AS-External-LSA. Otherwise, the Prefix-SID advertised by any other
        router will be used.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.4">
        <name slugifiedName="name-advertisement-of-adj-sid">Advertisement of Adj-SID</name>
        <t pn="section-8.4-1">The Adjacency Segment Routing Identifier (Adj-SID) is advertised
        using the Adj-SID sub-TLV as described in <xref target="ADJSID" format="default" sectionFormat="of" derivedContent="Section 7"/>.</t>
        <section numbered="true" toc="include" removeInRFC="false" pn="section-8.4.1">
          <name slugifiedName="name-advertisement-of-adj-sid-on">Advertisement of Adj-SID on Point-to-Point Links</name>
          <t pn="section-8.4.1-1">An Adj-SID <bcp14>MAY</bcp14> be advertised for any adjacency on a
          point-to-point (P2P) link that is in neighbor state 2-Way or
          higher. If the adjacency on a P2P link transitions from the FULL
          state, then the Adj-SID for that adjacency <bcp14>MAY</bcp14> be removed from the
          area. If the adjacency transitions to a state lower than 2-Way, then
          the Adj-SID Advertisement <bcp14>MUST</bcp14> be withdrawn from the area.</t>
        </section>
        <section numbered="true" toc="include" removeInRFC="false" pn="section-8.4.2">
          <name slugifiedName="name-adjacency-sid-on-broadcast-">Adjacency SID on Broadcast or NBMA Interfaces</name>
          <t pn="section-8.4.2-1">Broadcast, NBMA, or hybrid <xref target="RFC6845" format="default" sectionFormat="of" derivedContent="RFC6845"/> networks in OSPFv3 are 
          represented by a star topology where the DR is the central 
          point to which all other routers on the broadcast, NBMA, or hybrid network connect. 
          As a result, routers on the broadcast, NBMA, or hybrid network advertise only
          their adjacency to the DR. Routers that do not act as DR do not form or advertise
          adjacencies with each other. They do, however, maintain 2-Way adjacency state
          with each other and are directly reachable.</t>
          <t pn="section-8.4.2-2">When Segment Routing is used, each router on the broadcast, NBMA, or hybrid
          network <bcp14>MAY</bcp14> advertise the Adj-SID for its adjacency to the DR using the
          Adj-SID sub-TLV as described in <xref target="ADJSIDSUBTLV" format="default" sectionFormat="of" derivedContent="Section 7.1"/>.</t>
          <t pn="section-8.4.2-3">SR-capable routers <bcp14>MAY</bcp14> also advertise a LAN
          Adjacency SID for other neighbors (e.g., Backup Designated Router
          (BDR), DR-OTHER, etc.) on the broadcast, NBMA, or hybrid network
          using the LAN Adj-SID sub-TLV as described in <xref target="LANADJSIDSUBTLV" format="default" sectionFormat="of" derivedContent="Section 7.2"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t pn="section-9-1">This specification updates two existing OSPFv3 registries.</t>
      <section anchor="EPLTLVREG" numbered="true" toc="include" removeInRFC="false" pn="section-9.1">
        <name slugifiedName="name-ospfv3-extended-lsa-tlvs-re">"OSPFv3 Extended-LSA TLVs" Registry</name>
        <t pn="section-9.1-1">The following values have been allocated:</t>
        <table anchor="IANA1" align="left" pn="table-1">
          <name slugifiedName="name-ospfv3-extended-lsa-tlvs">OSPFv3 Extended-LSA TLVs</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Value</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">9</td>
              <td align="left" colspan="1" rowspan="1">OSPFv3 Extended Prefix Range TLV</td>
              <td align="left" colspan="1" rowspan="1">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="EXTLSAREG" numbered="true" toc="include" removeInRFC="false" pn="section-9.2">
        <name slugifiedName="name-ospfv3-extended-lsa-sub-tlv">"OSPFv3 Extended-LSA Sub-TLVs" Registry</name>
        <t pn="section-9.2-1">The following values have been allocated:</t>
        <table anchor="IANA2" align="left" pn="table-2">
          <name slugifiedName="name-ospfv3-extended-lsa-sub-tlvs">OSPFv3 Extended-LSA Sub-TLVs</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Value</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">4</td>
              <td align="left" colspan="1" rowspan="1">Prefix-SID sub-TLV</td>
              <td align="left" colspan="1" rowspan="1">This document</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">5</td>
              <td align="left" colspan="1" rowspan="1">Adj-SID sub-TLV</td>
              <td align="left" colspan="1" rowspan="1">This document</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">6</td>
              <td align="left" colspan="1" rowspan="1">LAN Adj-SID sub-TLV</td>
              <td align="left" colspan="1" rowspan="1">This document</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">7</td>
              <td align="left" colspan="1" rowspan="1">SID/Label sub-TLV</td>
              <td align="left" colspan="1" rowspan="1">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="Error-handling" numbered="true" toc="include" removeInRFC="false" pn="section-10">
      <name slugifiedName="name-tlv-sub-tlv-error-handling">TLV/Sub-TLV Error Handling</name>
      <t pn="section-10-1">For any new TLVs/sub-TLVs defined in this document, if the length is
invalid, the LSA in which it is advertised is considered malformed and
<bcp14>MUST</bcp14> be ignored. Errors <bcp14>SHOULD</bcp14> be logged subject
to rate limiting.
</t>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-11">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t pn="section-11-1">With the OSPFv3 Segment Routing extensions defined herein,
      OSPFv3 will now program the MPLS data plane <xref target="RFC3031" format="default" sectionFormat="of" derivedContent="RFC3031"/>.
      Previously, LDP <xref target="RFC5036" format="default" sectionFormat="of" derivedContent="RFC5036"/> or 
      another label distribution mechanism was required to advertise MPLS labels and 
      program the MPLS data plane.</t>
      <t pn="section-11-2">In general, the same types of attacks that can be carried out on the IP
      control plane can be carried out on the MPLS control plane resulting in traffic
      being misrouted in the respective data planes. However, the latter can be more
      difficult to detect and isolate.</t>
      <t pn="section-11-3">Existing security extensions, as described in <xref target="RFC5340" format="default" sectionFormat="of" derivedContent="RFC5340"/> and
       <xref target="RFC8362" format="default" sectionFormat="of" derivedContent="RFC8362"/>, apply to these Segment Routing
       extensions. While OSPFv3 is under a single administrative domain, there can be 
       deployments where potential attackers have access to one or more networks in the
       OSPFv3 routing domain. In these deployments, stronger authentication mechanisms,
       such as those specified in <xref target="RFC4552" format="default" sectionFormat="of" derivedContent="RFC4552"/> or 
       <xref target="RFC7166" format="default" sectionFormat="of" derivedContent="RFC7166"/>,
       <bcp14>SHOULD</bcp14> be used.</t>
      <t pn="section-11-4">Implementations <bcp14>MUST</bcp14> ensure that malformed TLVs and sub-TLVs defined in this document 
       are detected and that they do not provide a vulnerability for attackers to crash the OSPFv3 
       router or routing process. Reception of a malformed TLV or sub-TLV <bcp14>SHOULD</bcp14> be counted 
       and/or logged for further analysis. Logging of malformed TLVs and sub-TLVs <bcp14>SHOULD</bcp14>
       be rate limited to prevent a Denial-of-Service (DoS) attack (distributed or otherwise) 
       from overloading the OSPFv3 control plane.</t>
    </section>
  </middle>
  <back>
    <references pn="section-12">
      <name slugifiedName="name-references">References</name>
      <references pn="section-12.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="ALGOREG" target="https://www.iana.org/assignments/igp-parameters" quoteTitle="true" derivedAnchor="ALGOREG">
          <front>
            <title>Interior Gateway Protocol (IGP) Parameters</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <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 initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t>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="RFC3031" target="https://www.rfc-editor.org/info/rfc3031" quoteTitle="true" derivedAnchor="RFC3031">
          <front>
            <title>Multiprotocol Label Switching Architecture</title>
            <author initials="E." surname="Rosen" fullname="E. Rosen">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Viswanathan" fullname="A. Viswanathan">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Callon" fullname="R. Callon">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2001" month="January"/>
            <abstract>
              <t>This document specifies the architecture for Multiprotocol Label Switching (MPLS).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3031"/>
          <seriesInfo name="DOI" value="10.17487/RFC3031"/>
        </reference>
        <reference anchor="RFC3101" target="https://www.rfc-editor.org/info/rfc3101" quoteTitle="true" derivedAnchor="RFC3101">
          <front>
            <title>The OSPF Not-So-Stubby Area (NSSA) Option</title>
            <author initials="P." surname="Murphy" fullname="P. Murphy">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2003" month="January"/>
            <abstract>
              <t>This memo documents an optional type of Open Shortest Path First (OSPF) area that is somewhat humorously referred to as a "not-so-stubby" area (or NSSA).  NSSAs are similar to the existing OSPF stub area configuration option but have the additional capability of importing AS external routes in a limited fashion. The OSPF NSSA Option was originally defined in RFC 1587.  The functional differences between this memo and RFC 1587 are explained in Appendix F. All differences, while expanding capability, are backward-compatible in nature.  Implementations of this memo and of RFC 1587 will interoperate. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3101"/>
          <seriesInfo name="DOI" value="10.17487/RFC3101"/>
        </reference>
        <reference anchor="RFC5036" target="https://www.rfc-editor.org/info/rfc5036" quoteTitle="true" derivedAnchor="RFC5036">
          <front>
            <title>LDP Specification</title>
            <author initials="L." surname="Andersson" fullname="L. Andersson" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="I." surname="Minei" fullname="I. Minei" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Thomas" fullname="B. Thomas" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="October"/>
            <abstract>
              <t>The architecture for Multiprotocol Label Switching (MPLS) is described in RFC 3031.  A fundamental concept in MPLS is that two Label Switching Routers (LSRs) must agree on the meaning of the labels used to forward traffic between and through them.  This common understanding is achieved by using a set of procedures, called a label distribution protocol, by which one LSR informs another of label bindings it has made.  This document defines a set of such procedures called LDP (for Label Distribution Protocol) by which LSRs distribute labels to support MPLS forwarding along normally routed paths.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5036"/>
          <seriesInfo name="DOI" value="10.17487/RFC5036"/>
        </reference>
        <reference anchor="RFC5340" target="https://www.rfc-editor.org/info/rfc5340" quoteTitle="true" derivedAnchor="RFC5340">
          <front>
            <title>OSPF for IPv6</title>
            <author initials="R." surname="Coltun" fullname="R. Coltun">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Ferguson" fullname="D. Ferguson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Moy" fullname="J. Moy">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Lindem" fullname="A. Lindem">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="July"/>
            <abstract>
              <t>This document describes the modifications to OSPF to support version 6 of the Internet Protocol (IPv6).  The fundamental mechanisms of OSPF (flooding, Designated Router (DR) election, area support, Short Path First (SPF) calculations, etc.) remain unchanged.  However, some changes have been necessary, either due to changes in protocol semantics between IPv4 and IPv6, or simply to handle the increased address size of IPv6.  These modifications will necessitate incrementing the protocol version from version 2 to version 3.  OSPF for IPv6 is also referred to as OSPF version 3 (OSPFv3).</t>
              <t>Changes between OSPF for IPv4, OSPF Version 2, and OSPF for IPv6 as described herein include the following.  Addressing semantics have been removed from OSPF packets and the basic Link State Advertisements (LSAs).  New LSAs have been created to carry IPv6 addresses and prefixes.  OSPF now runs on a per-link basis rather than on a per-IP-subnet basis.  Flooding scope for LSAs has been generalized.  Authentication has been removed from the OSPF protocol and instead relies on IPv6's Authentication Header and Encapsulating Security Payload (ESP).</t>
              <t>Even with larger IPv6 addresses, most packets in OSPF for IPv6 are almost as compact as those in OSPF for IPv4.  Most fields and packet- size limitations present in OSPF for IPv4 have been relaxed.  In addition, option handling has been made more flexible.</t>
              <t>All of OSPF for IPv4's optional capabilities, including demand circuit support and Not-So-Stubby Areas (NSSAs), are also supported in OSPF for IPv6.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5340"/>
          <seriesInfo name="DOI" value="10.17487/RFC5340"/>
        </reference>
        <reference anchor="RFC5462" target="https://www.rfc-editor.org/info/rfc5462" quoteTitle="true" derivedAnchor="RFC5462">
          <front>
            <title>Multiprotocol Label Switching (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic Class" Field</title>
            <author initials="L." surname="Andersson" fullname="L. Andersson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Asati" fullname="R. Asati">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2009" month="February"/>
            <abstract>
              <t>The early Multiprotocol Label Switching (MPLS) documents defined the form of the MPLS label stack entry.  This includes a three-bit field called the "EXP field".  The exact use of this field was not defined by these documents, except to state that it was to be "reserved for experimental use".</t>
              <t>Although the intended use of the EXP field was as a "Class of Service" (CoS) field, it was not named a CoS field by these early documents because the use of such a CoS field was not considered to be sufficiently defined.  Today a number of standards documents define its usage as a CoS field.</t>
              <t>To avoid misunderstanding about how this field may be used, it has become increasingly necessary to rename this field.  This document changes the name of the field to the "Traffic Class field" ("TC field").  In doing so, it also updates documents that define the current use of the EXP field.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5462"/>
          <seriesInfo name="DOI" value="10.17487/RFC5462"/>
        </reference>
        <reference anchor="RFC6845" target="https://www.rfc-editor.org/info/rfc6845" quoteTitle="true" derivedAnchor="RFC6845">
          <front>
            <title>OSPF Hybrid Broadcast and Point-to-Multipoint Interface Type</title>
            <author initials="N." surname="Sheth" fullname="N. Sheth">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Wang" fullname="L. Wang">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Zhang" fullname="J. Zhang">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2013" month="January"/>
            <abstract>
              <t>This document describes a mechanism to model a broadcast network as a hybrid of broadcast and point-to-multipoint networks for purposes of OSPF operation.  Neighbor discovery and maintenance as well as Link State Advertisement (LSA) database synchronization are performed using the broadcast model, but the network is represented using the point-to-multipoint model in the router-LSAs of the routers connected to it.  This allows an accurate representation of the cost of communication between different routers on the network, while maintaining the network efficiency of broadcast operation.  This approach is relatively simple and requires minimal changes to OSPF.</t>
              <t>This document updates both OSPFv2 (RFC 2328) and OSPFv3 (RFC 5340).   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6845"/>
          <seriesInfo name="DOI" value="10.17487/RFC6845"/>
        </reference>
        <reference anchor="RFC7770" target="https://www.rfc-editor.org/info/rfc7770" quoteTitle="true" derivedAnchor="RFC7770">
          <front>
            <title>Extensions to OSPF for Advertising Optional Router Capabilities</title>
            <author initials="A." surname="Lindem" fullname="A. Lindem" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="N." surname="Shen" fullname="N. Shen">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="JP." surname="Vasseur" fullname="JP. Vasseur">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Aggarwal" fullname="R. Aggarwal">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Shaffer" fullname="S. Shaffer">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="February"/>
            <abstract>
              <t>It is useful for routers in an OSPFv2 or OSPFv3 routing domain to know the capabilities of their neighbors and other routers in the routing domain.  This document proposes extensions to OSPFv2 and OSPFv3 for advertising optional router capabilities.  The Router Information (RI) Link State Advertisement (LSA) is defined for this purpose.  In OSPFv2, the RI LSA will be implemented with an Opaque LSA type ID.  In OSPFv3, the RI LSA will be implemented with a unique LSA type function code.  In both protocols, the RI LSA can be advertised at any of the defined flooding scopes (link, area, or autonomous system (AS)).  This document obsoletes RFC 4970 by providing a revised specification that includes support for advertisement of multiple instances of the RI LSA and a TLV for functional capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7770"/>
          <seriesInfo name="DOI" value="10.17487/RFC7770"/>
        </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 initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t>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="RFC8362" target="https://www.rfc-editor.org/info/rfc8362" quoteTitle="true" derivedAnchor="RFC8362">
          <front>
            <title>OSPFv3 Link State Advertisement (LSA) Extensibility</title>
            <author initials="A." surname="Lindem" fullname="A. Lindem">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Roy" fullname="A. Roy">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Goethals" fullname="D. Goethals">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="V." surname="Reddy Vallem" fullname="V. Reddy Vallem">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="F." surname="Baker" fullname="F. Baker">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="April"/>
            <abstract>
              <t>OSPFv3 requires functional extension beyond what can readily be done with the fixed-format Link State Advertisement (LSA) as described in RFC 5340.  Without LSA extension, attributes associated with OSPFv3 links and advertised IPv6 prefixes must be advertised in separate LSAs and correlated to the fixed-format LSAs.  This document extends the LSA format by encoding the existing OSPFv3 LSA information in Type-Length-Value (TLV) tuples and allowing advertisement of additional information with additional TLVs.  Backward-compatibility mechanisms are also described.</t>
              <t>This document updates RFC 5340, "OSPF for IPv6", and RFC 5838, "Support of Address Families in OSPFv3", by providing TLV-based encodings for the base OSPFv3 unicast support and OSPFv3 address family support.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8362"/>
          <seriesInfo name="DOI" value="10.17487/RFC8362"/>
        </reference>
        <reference anchor="RFC8402" target="https://www.rfc-editor.org/info/rfc8402" quoteTitle="true" derivedAnchor="RFC8402">
          <front>
            <title>Segment Routing Architecture</title>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Ginsberg" fullname="L. Ginsberg">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Decraene" fullname="B. Decraene">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Litkowski" fullname="S. Litkowski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Shakir" fullname="R. Shakir">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="July"/>
            <abstract>
              <t>Segment Routing (SR) leverages the source routing paradigm.  A node steers a packet through an ordered list of instructions, called "segments".  A segment can represent any instruction, topological or service based.  A segment can have a semantic local to an SR node or global within an SR domain.  SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t>
              <t>SR can be directly applied to the MPLS architecture with no change to the forwarding plane.  A segment is encoded as an MPLS label.  An ordered list of segments is encoded as a stack of labels.  The segment to process is on the top of the stack.  Upon completion of a segment, the related label is popped from the stack.</t>
              <t>SR can be applied to the IPv6 architecture, with a new type of routing header.  A segment is encoded as an IPv6 address.  An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header.  The active segment is indicated by the Destination Address (DA) of the packet.  The next active segment is indicated by a pointer in the new routing header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8402"/>
          <seriesInfo name="DOI" value="10.17487/RFC8402"/>
        </reference>
        <reference anchor="RFC8661" target="https://www.rfc-editor.org/info/rfc8661" quoteTitle="true" derivedAnchor="RFC8661">
          <front>
            <title>Segment Routing MPLS Interworking with LDP</title>
            <author initials="A" surname="Bashandy" fullname="Ahmed Bashandy" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C" surname="Filsfils" fullname="Clarence Filsfils" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Previdi" fullname="Stefano Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B" surname="Decraene" fullname="Bruno Decraene">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Litkowski" fullname="Stephane Litkowski">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="December" year="2019"/>
          </front>
          <seriesInfo name="RFC" value="8661"/>
          <seriesInfo name="DOI" value="10.17487/RFC8661"/>
        </reference>
        <reference anchor="RFC8665" target="https://www.rfc-editor.org/info/rfc8665" quoteTitle="true" derivedAnchor="RFC8665">
          <front>
            <title>OSPF Extensions for Segment Routing</title>
            <author initials="P" surname="Psenak" fullname="Peter Psenak" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Previdi" fullname="Stefano Previdi" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C" surname="Filfils" fullname="Clarence Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H" surname="Gredler" fullname="Hannes Gredler">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R" surname="Shakir" fullname="Rob Shakir">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="W" surname="Henderickx" fullname="Wim Henderickx">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J" surname="Tantsura" fullname="Jeff Tantsura">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="December" year="2019"/>
          </front>
          <seriesInfo name="RFC" value="8665"/>
          <seriesInfo name="DOI" value="10.17487/RFC8665"/>
        </reference>
      </references>
      <references pn="section-12.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC4552" target="https://www.rfc-editor.org/info/rfc4552" quoteTitle="true" derivedAnchor="RFC4552">
          <front>
            <title>Authentication/Confidentiality for OSPFv3</title>
            <author initials="M." surname="Gupta" fullname="M. Gupta">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="N." surname="Melam" fullname="N. Melam">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="June"/>
            <abstract>
              <t>This document describes means and mechanisms to provide authentication/confidentiality to OSPFv3 using an IPv6 Authentication Header/Encapsulating Security Payload (AH/ESP) extension header.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4552"/>
          <seriesInfo name="DOI" value="10.17487/RFC4552"/>
        </reference>
        <reference anchor="RFC7166" target="https://www.rfc-editor.org/info/rfc7166" quoteTitle="true" derivedAnchor="RFC7166">
          <front>
            <title>Supporting Authentication Trailer for OSPFv3</title>
            <author initials="M." surname="Bhatia" fullname="M. Bhatia">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="V." surname="Manral" fullname="V. Manral">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Lindem" fullname="A. Lindem">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2014" month="March"/>
            <abstract>
              <t>Currently, OSPF for IPv6 (OSPFv3) uses IPsec as the only mechanism for authenticating protocol packets.  This behavior is different from authentication mechanisms present in other routing protocols (OSPFv2, Intermediate System to Intermediate System (IS-IS), RIP, and Routing Information Protocol Next Generation (RIPng)).  In some environments, it has been found that IPsec is difficult to configure and maintain and thus cannot be used.  This document defines an alternative mechanism to authenticate OSPFv3 protocol packets so that OSPFv3 does not depend only upon IPsec for authentication.</t>
              <t>The OSPFv3 Authentication Trailer was originally defined in RFC 6506. This document obsoletes RFC 6506 by providing a revised definition, including clarifications and refinements of the procedures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7166"/>
          <seriesInfo name="DOI" value="10.17487/RFC7166"/>
        </reference>
        <reference anchor="RFC7855" target="https://www.rfc-editor.org/info/rfc7855" quoteTitle="true" derivedAnchor="RFC7855">
          <front>
            <title>Source Packet Routing in Networking (SPRING) Problem Statement and Requirements</title>
            <author initials="S." surname="Previdi" fullname="S. Previdi" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Decraene" fullname="B. Decraene">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Litkowski" fullname="S. Litkowski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Horneffer" fullname="M. Horneffer">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Shakir" fullname="R. Shakir">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="May"/>
            <abstract>
              <t>The ability for a node to specify a forwarding path, other than the normal shortest path, that a particular packet will traverse, benefits a number of network functions.  Source-based routing mechanisms have previously been specified for network protocols but have not seen widespread adoption.  In this context, the term "source" means "the point at which the explicit route is imposed"; therefore, it is not limited to the originator of the packet (i.e., the node imposing the explicit route may be the ingress node of an operator's network).</t>
              <t>This document outlines various use cases, with their requirements, that need to be taken into account by the Source Packet Routing in Networking (SPRING) architecture for unicast traffic.  Multicast use cases and requirements are out of scope for this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7855"/>
          <seriesInfo name="DOI" value="10.17487/RFC7855"/>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-contributors">Contributors</name>
      <t pn="section-appendix.a-1">The following people gave a substantial contribution to the content
      of this document and should be considered coauthors:</t>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.a-2">    
   Clarence Filsfils
   Cisco Systems, Inc.
   Brussels
   Belgium
   
   Email: cfilsfil@cisco.com</artwork>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.a-3">  
   Hannes Gredler
   RtBrick Inc.
   Austria

   Email: hannes@rtbrick.com</artwork>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.a-4">     
   Rob Shakir
   Google, Inc.
   United States of America 

   Email: robjs@google.com</artwork>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.a-5">     
   Wim Henderickx
   Nokia
   Belgium

   Email: wim.henderickx@nokia.com</artwork>
      <artwork name="" type="" align="left" alt="" pn="section-appendix.a-6">     
   Jeff Tantsura
   Apstra, Inc.
   United States of America

   Email: jefftant.ietf@gmail.com</artwork>
      <t pn="section-appendix.a-7">Thanks to Acee Lindem for his substantial contribution to the content of 
      this document.</t>
      <t pn="section-appendix.a-8">We would like to thank Anton Smirnov for his contribution as well.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Peter Psenak" initials="P." role="editor" surname="Psenak">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street>Eurovea Centre, Central 3</street>
            <street>Pribinova Street 10</street>
            <city>Bratislava</city>
            <code>81109</code>
            <country>Slovakia</country>
          </postal>
          <email>ppsenak@cisco.com</email>
        </address>
      </author>
      <author fullname="Stefano Previdi" initials="S." role="editor" surname="Previdi">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street/>
            <city/>
            <code/>
            <country/>
          </postal>
          <email>stefano@previdi.net</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
