rfc8666xml2.original.xml | rfc8666.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<?rfc toc="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" number="8666" | |||
<?rfc tocompact="yes"?> | docName="draft-ietf-ospf-ospfv3-segment-routing-extensions-23" category="st | |||
<?rfc tocdepth="3"?> | d" submissionType="IETF" consensus="true" ipr="trust200902" obsoletes="" updates | |||
<?rfc tocindent="yes"?> | ="" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" version="3"> | |||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc comments="yes"?> | ||||
<?rfc inline="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<rfc category="std" | ||||
docName="draft-ietf-ospf-ospfv3-segment-routing-extensions-23" | ||||
ipr="trust200902"> | ||||
<front> | <front> | |||
<title abbrev="OSPFv3 Extensions for Segment Routing">OSPFv3 Extensions | <title abbrev="OSPFv3 Extensions for Segment Routing">OSPFv3 Extensions | |||
for Segment Routing</title> | for Segment Routing</title> | |||
<seriesInfo name="RFC" value="8666"/> | ||||
<author fullname="Peter Psenak" initials="P." role="editor" | <author fullname="Peter Psenak" initials="P." role="editor" surname="Psenak" | |||
surname="Psenak"> | > | |||
<organization>Cisco Systems, Inc.</organization> | <organization>Cisco Systems, Inc.</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Eurovea Centre, Central 3</street> | <street>Eurovea Centre, Central 3</street> | |||
<street>Pribinova Street 10</street> | <street>Pribinova Street 10</street> | |||
<city>Bratislava</city> | <city>Bratislava</city> | |||
<code>81109</code> | <code>81109</code> | |||
<country>Slovakia</country> | <country>Slovakia</country> | |||
</postal> | </postal> | |||
<email>ppsenak@cisco.com</email> | <email>ppsenak@cisco.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Stefano Previdi" initials="S." role="editor" surname="Prev | ||||
<author fullname="Stefano Previdi" initials="S." role="editor" | idi"> | |||
surname="Previdi"> | <organization>Cisco Systems, Inc.</organization> | |||
<organization>Individual</organization> | ||||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <street/> | |||
<city/> | ||||
<city></city> | <code/> | |||
<country/> | ||||
<code></code> | ||||
<country></country> | ||||
</postal> | </postal> | |||
<email>stefano.previdi@net</email> | <email>stefano@previdi.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="December" year="2019"/> | ||||
<date year=""/> | ||||
<area>Routing</area> | <area>Routing</area> | |||
<workgroup>Open Shortest Path First IGP</workgroup> | <workgroup>Open Shortest Path First IGP</workgroup> | |||
<keyword>MPLS, SID, IGP, OSPF, Label advertisement, Segment Routing</keyword | ||||
<keyword>MPLS</keyword> | > | |||
<keyword>SID</keyword> | ||||
<keyword>IGP</keyword> | ||||
<keyword>OSPF</keyword> | ||||
<keyword>Label advertisement</keyword> | ||||
<keyword>Segment Routing</keyword> | ||||
<abstract> | <abstract> | |||
<t>Segment Routing (SR) allows a flexible definition of end-to-end | <t>Segment Routing (SR) allows a flexible definition of end-to-end | |||
paths within IGP topologies by encoding paths as sequences of | paths within IGP topologies by encoding paths as sequences of | |||
topological sub-paths, called "segments". These segments are advertised | topological subpaths called "segments". These segments are advertised | |||
by the link-state routing protocols (IS-IS and OSPF).</t> | by the link-state routing protocols (IS-IS and OSPF).</t> | |||
<t>This document describes the OSPFv3 extensions required for Segment Rout | ||||
<t>This draft describes the OSPFv3 extensions required for Segment Routing | ing | |||
with MPLS data plane.</t> | with the MPLS data plane.</t> | |||
</abstract> | </abstract> | |||
<note title="Requirements Language"> | ||||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | ||||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | ||||
"MAY", and "OPTIONAL" in this document are to be interpreted as | ||||
described in BCP14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here.</t> | ||||
</note> | ||||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="default"> | |||
<name>Introduction</name> | ||||
<t>Segment Routing (SR) allows a flexible definition of end-to-end | <t>Segment Routing (SR) allows a flexible definition of end-to-end paths | |||
paths within IGP topologies by encoding paths as sequences of | within IGP topologies by encoding paths as sequences of topological | |||
topological sub-paths, called "segments". These segments are advertised | subpaths called "segments". These segments are advertised by the | |||
by the link-state routing protocols (IS-IS and OSPF). Prefix segments | link-state routing protocols (IS-IS and OSPF). Prefix segments represent | |||
represent an ECMP-aware shortest-path to a prefix (or a node), as per | an ECMP-aware shortest path to a prefix (or a node) as per the state of | |||
the state of the IGP topology. Adjacency segments represent a hop over a | the IGP topology. Adjacency segments represent a hop over a specific | |||
specific adjacency between two nodes in the IGP. A prefix segment is | adjacency between two nodes in the IGP. A prefix segment is typically a | |||
typically a multi-hop path while an adjacency segment, in most cases, | multi-hop path while an adjacency segment, in most cases, is a one-hop | |||
is a one-hop path. SR's control-plane can be applied to both IPv6 | path. SR's control plane can be applied to both IPv6 and MPLS data | |||
and MPLS data-planes, and does not require any additional signalling (othe | planes, and it does not require any additional signaling (other than IGP | |||
r than | extensions). The IPv6 data plane is out of the scope of this | |||
IGP extensions). The IPv6 data plane is out of the scope of this specifica | specification; the OSPFv3 extension for SR with the IPv6 data plane will b | |||
tion - | e | |||
OSPFv3 extension for SR with IPv6 data plane will be specified in a separa | specified in a separate document. When used in MPLS networks, SR paths | |||
te document. | do not require any LDP or RSVP-TE signaling. However, SR can | |||
When used in MPLS networks, SR paths do not require any LDP or RSVP-TE sig | interoperate in the presence of Label Switched Paths (LSPs) established wi | |||
nalling. | th RSVP or LDP.</t> | |||
However, SR can interoperate in the presence of LSPs established with RSVP | <t>This document describes the OSPFv3 extensions required for Segment | |||
or LDP.</t> | Routing with the MPLS data plane.</t> | |||
<t>Segment Routing architecture is described in <xref target="RFC8402" for | ||||
<t>This draft describes the OSPFv3 extensions required for Segment Routing | mat="default"/>.</t> | |||
with MPLS | <t>Segment Routing use cases are described in <xref target="RFC7855" forma | |||
data plane.</t> | t="default"/>.</t> | |||
<t>Segment Routing architecture is described in <xref target="RFC8402"/>.< | ||||
/t> | ||||
<t>Segment Routing use cases are described in <xref target="RFC7855"/>.</t | ||||
> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>Terminology</name> | ||||
<t>This section lists some of the terminology used in this document: | ||||
<section title="Terminology"> | </t> | |||
<dl newline="false" spacing="normal" indent="12"> | ||||
<t>This section lists some of the terminology used in this document: | <dt>ABR:</dt> | |||
<dd>Area Border Router</dd> | ||||
<list style="hanging"> | <dt>Adj-SID:</dt> | |||
<dd>Adjacency Segment Identifier</dd> | ||||
<t>ABR - Area Border Router</t> | <dt>AS:</dt> | |||
<dd>Autonomous System</dd> | ||||
<t>Adj-SID - Adjacency Segment Identifier</t> | <dt>ASBR:</dt> | |||
<dd>Autonomous System Boundary Router</dd> | ||||
<t>AS - Autonomous System</t> | <dt>DR:</dt> | |||
<dd>Designated Router</dd> | ||||
<t>ASBR - Autonomous System Boundary Router</t> | <dt>IS-IS:</dt> | |||
<dd>Intermediate System to Intermediate System</dd> | ||||
<t>DR - Designated Router</t> | <dt>LDP:</dt> | |||
<dd>Label Distribution Protocol</dd> | ||||
<t>IS-IS - Intermediate System to Intermediate System</t> | <dt>LSP:</dt> | |||
<dd>Label Switched Path</dd> | ||||
<t>LDP - Label Distribution Protocol</t> | <dt>MPLS:</dt> | |||
<dd>Multiprotocol Label Switching</dd> | ||||
<t>LSP - Label Switched Path</t> | <dt>OSPF:</dt> | |||
<dd>Open Shortest Path First</dd> | ||||
<t>MPLS - Multi Protocol Label Switching</t> | <dt>SPF:</dt> | |||
<dd>Shortest Path First</dd> | ||||
<t>OSPF - Open Shortest Path First</t> | <dt>RSVP:</dt> | |||
<dd>Resource Reservation Protocol</dd> | ||||
<t>SPF - Shortest Path First</t> | <dt>SID:</dt> | |||
<dd>Segment Identifier</dd> | ||||
<t>RSVP - Resource Reservation Protocol</t> | <dt>SR:</dt> | |||
<dd>Segment Routing</dd> | ||||
<t>SID - Segment Identifier</t> | <dt>SRGB:</dt> | |||
<dd>Segment Routing Global Block</dd> | ||||
<t>SR - Segment Routing</t> | <dt>SRLB:</dt> | |||
<dd>Segment Routing Local Block</dd> | ||||
<t>SRGB - Segment Routing Global Block</t> | <dt>SRMS:</dt> | |||
<dd>Segment Routing Mapping Server</dd> | ||||
<t>SRLB - Segment Routing Local Block</t> | <dt>TLV:</dt> | |||
<dd>Type Length Value</dd> | ||||
<t>SRMS - Segment Routing Mapping Server</t> | </dl> | |||
<t> | ||||
<t>TLV - Type Length Value</t> | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
</list></t> | 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"/> <xref target=" | ||||
RFC8174" format="default"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Segment Routing Identifiers"> | <name>Segment Routing Identifiers</name> | |||
<t>Segment Routing defines various types of Segment Identifiers (SIDs): | <t>Segment Routing defines various types of Segment Identifiers (SIDs): | |||
Prefix-SID, Adjacency-SID, and LAN Adjacency SID.</t> | Prefix-SID, Adjacency SID, and LAN Adjacency SID.</t> | |||
<section anchor="SIDLABEL" numbered="true" toc="default"> | ||||
<section anchor="SIDLABEL" title="SID/Label Sub-TLV"> | <name>SID/Label Sub-TLV</name> | |||
<t>The SID/Label Sub-TLV appears in multiple TLVs or Sub-TLVs defined | <t>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 | 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 followi | associated with a prefix or adjacency. The SID/Label sub-TLV has the fol | |||
ng | lowing | |||
format:<figure> | format:</t> | |||
<artwork> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 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 | | | Type | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| SID/Label (variable) | | | SID/Label (variable) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork><t | |||
>where:</t> | ||||
where: | <ul empty="true"><li><dl newline="false" spacing="normal"> | |||
</artwork> | <dt>Type:</dt> | |||
</figure><list style="hanging"> | <dd>7</dd> | |||
<t>Type: 7</t> | <dt>Length:</dt> | |||
<dd>3 or 4 octets.</dd> | ||||
<t>Length: Either 3 or 4 octets</t> | <dt>SID/Label:</dt> | |||
<dd>If the length is set to 3, then the 20 rightmost bits | ||||
<t>SID/Label: If length is set to 3, then the 20 rightmost bits | represent a label. If the length is set to 4, then the value represe | |||
represent a label. If length is set to 4, then the value represents | nts | |||
a 32-bit SID.</t> | a 32-bit SID.</dd> | |||
</dl></li></ul> | ||||
<t>The receiving router MUST ignore the SID/Label Sub-TLV if the len | ||||
gth is | ||||
other than 3 or 4.</t> | ||||
</list></t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="SRCAP" numbered="true" toc="default"> | ||||
<section anchor="SRCAP" title="Segment Routing Capabilities"> | <name>Segment Routing Capabilities</name> | |||
<t>Segment Routing requires some additional router capabilities to be adve rtised to | <t>Segment Routing requires some additional router capabilities to be adve rtised to | |||
other routers in the area.</t> | other routers in the area.</t> | |||
<t>These SR capabilities are advertised in the OSPFv3 Router Information O paque LSA | <t>These SR capabilities are advertised in the OSPFv3 Router Information O paque LSA | |||
(defined in <xref target="RFC7770"/>) and specified in | (defined in <xref target="RFC7770" format="default"/>) and specified in | |||
<xref target="I-D.ietf-ospf-segment-routing-extensions"/>.</t> | <xref target="RFC8665" format="default"/>.</t> | |||
</section> | ||||
</section> | <section anchor="PFXRANGE" numbered="true" toc="default"> | |||
<name>OSPFv3 Extended Prefix Range TLV</name> | ||||
<section anchor="PFXRANGE" title="OSPFv3 Extended Prefix Range TLV"> | <t>In some cases, it is useful to advertise attributes for a range of | |||
prefixes in a single advertisement. The SR Mapping Server, | ||||
<t>In some cases it is useful to advertise attributes for a range of | which is described in <xref target="RFC8661" format="default"/>, | |||
prefixes in a single advertisement. The Segment Routing Mapping Server, | ||||
which is described in <xref target="I-D.ietf-spring-segment-routing-ldp-in | ||||
terop"/>, | ||||
is an example of where SIDs for multiple prefixes can be advertised. To | is an example of where SIDs for multiple prefixes can be advertised. To | |||
optimize such advertisement in case of multiple prefixes from a | optimize such advertisement in case of multiple prefixes from a | |||
contiguous address range, OSPFv3 Extended Prefix Range TLV is defined."</t | contiguous address range, OSPFv3 Extended Prefix Range TLV is defined.</t> | |||
> | ||||
<t>The OSPFv3 Extended Prefix Range TLV is a top-level TLV of the followin g LSAs | <t>The OSPFv3 Extended Prefix Range TLV is a top-level TLV of the followin g LSAs | |||
defined in <xref target="RFC8362"/>: | defined in <xref target="RFC8362" format="default"/>: | |||
<list style="hanging"> | </t> | |||
<t>E-Intra-Area-Prefix-LSA</t> | <ul empty="true" spacing="normal"> | |||
<t>E-Inter-Area-Prefix-LSA</t> | <li>E-Intra-Area-Prefix-LSA</li> | |||
<t>E-AS-External-LSA</t> | <li>E-Inter-Area-Prefix-LSA</li> | |||
<t>E-Type-7-LSA</t> | <li>E-AS-External-LSA</li> | |||
</list></t> | ||||
<t>Multiple OSPFv3 Extended Prefix Range TLVs MAY be advertised in each LS | <li>E-Type-7-LSA</li> | |||
A mentioned | </ul> | |||
above. The OSPFv3 Extended Prefix Range TLV has the following format: <fig | <t>Multiple OSPFv3 Extended Prefix Range TLVs <bcp14>MAY</bcp14> be advert | |||
ure> | ised in each LSA mentioned | |||
<artwork> | above. The OSPFv3 Extended Prefix Range TLV has the following | |||
format: </t> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 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 | | | Type | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Prefix Length | AF | Range Size | | | Prefix Length | AF | Range Size | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Flags | Reserved | | | Flags | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Address Prefix (variable) | | | Address Prefix (variable) | | |||
| ... | | | ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sub-TLVs (variable) | | | Sub-TLVs (variable) | | |||
+- -+ | +- -+ | |||
| | | | |]]></artwork> | |||
<t>where:</t><ul empty="true"><li><dl newline="false" spacing="normal"> | ||||
where: </artwork> | <dt>Type:</dt> | |||
</figure><list style="hanging"> | <dd>9</dd> | |||
<t>Type: 9</t> | <dt>Length:</dt> | |||
<dd>Variable, in octets, depending on the sub-TLVs.</dd> | ||||
<t>Length: Variable, in octets, dependent on Sub-TLVs.</t> | <dt>Prefix Length:</dt> | |||
<dd>Length of prefix in bits.</dd> | ||||
<t>Prefix length: Length of prefix in bits.</t> | <dt>AF:</dt> | |||
<dd> | ||||
<t>AF: Address family for the prefix. | <t>Address family for the prefix. | |||
<list style="hanging"> | ||||
<t>AF: 0 - IPv4 unicast</t> | ||||
<t>AF: 1 - IPv6 unicast</t> | ||||
</list></t> | ||||
<t>Range size: Represents the number of prefixes that are covered by | </t> | |||
the | <dl newline="false" spacing="normal"> | |||
advertisement. The Range Size MUST NOT exceed the number of | <dt>AF:</dt> | |||
prefixes that could be satisfied by the prefix length wit | <dd>0 - IPv4 unicast</dd> | |||
hout | <dt>AF:</dt> | |||
<dd>1 - IPv6 unicast</dd> | ||||
</dl> | ||||
</dd> | ||||
<dt>Range Size:</dt> | ||||
<dd> | ||||
<t>Represents the number of prefixes that are covered by the | ||||
advertisement. The Range Size <bcp14>MUST NOT</bcp14> exceed the num | ||||
ber of | ||||
prefixes that could be satisfied by the Prefix Length wit | ||||
hout | ||||
including: | including: | |||
<list style="hanging"> | </t> | |||
<ul empty="true" spacing="normal"> | ||||
<t>Addresses from the IPv4 multicast address range (224.0 | ||||
.0.0/3), if the | ||||
AF is IPv4 unicast</t> | ||||
<t>Addresses other than the IPv6 unicast addresses, if th | ||||
e | ||||
AF is IPv6 unicast</t> | ||||
</list></t> | ||||
<t>Flags: Reserved. MUST be zero when sent and are ignore | <li>Addresses from the IPv4 multicast address range (224.0.0.0/3), i | |||
d when received.</t> | f the | |||
AF is IPv4 unicast.</li> | ||||
<t>Reserved: SHOULD be set to 0 on transmission and MUST be ignored | <li>Addresses other than the IPv6 unicast addresses, if the | |||
on reception.</t> | AF is IPv6 unicast.</li> | |||
</ul> | ||||
</dd> | ||||
<dt>Flags:</dt> | ||||
<dd>Reserved. <bcp14>MUST</bcp14> be zero when sent and are ignored when | ||||
received.</dd> | ||||
<dt>Reserved:</dt> | ||||
<dd><bcp14>SHOULD</bcp14> be set to 0 on transmission and <bcp14>MUST</b | ||||
cp14> be ignored on reception.</dd> | ||||
<dt>Address Prefix:</dt> | ||||
<dd> | ||||
<t>Address Prefix: | <ul empty="true" spacing="normal"> | |||
<list style="hanging"> | ||||
<t>For the address family IPv4 unicast, the prefix itself is | <li>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 | encoded as a 32-bit value. The default route is represented by a prefix of | |||
length 0.</t> | length 0.</li> | |||
<t>For the address family IPv6 unicast, the prefix, encoded as an | <li>For the address family IPv6 unicast, the prefix is encoded as an even | |||
even multiple | multiple of 32-bit words and padded with zeroed bits as necessary. This | |||
of 32-bit words, padded with zeroed bits as necessary. This encod | encoding consumes ((PrefixLength + 31) / 32) 32-bit words. </li> | |||
ing | ||||
consumes ((PrefixLength + 31) / 32) 32-bit words. </t> | ||||
<t>Prefix encoding for other address families is beyond the scope of | <li>Prefix encoding for other address families is beyond the scope o f | |||
this specification. Prefix encoding for other address families ca n | this specification. Prefix encoding for other address families ca n | |||
be defined in the future standard-track IETF specifications.</t> | be defined in future Standards Track specifications from the IETF | |||
</list></t> | stream.</li> | |||
</list></t> | </ul> | |||
</dd> | ||||
<t>The range represents the contiguous set of prefixes with the same prefix | </dl></li></ul> | |||
length | <t>The range represents the contiguous set of prefixes with the same prefi | |||
x length | ||||
as specified by the Prefix Length field. The set starts with the prefix tha t is | as specified by the Prefix Length field. The set starts with the prefix tha t is | |||
specified by the Address Prefix field. The number of prefixes in the range is equal | specified by the Address Prefix field. The number of prefixes in the range is equal | |||
to the Range size.</t> | to the Range Size.</t> | |||
<t>If the OSPFv3 Extended Prefix Range TLVs advertising the exact same ran | ||||
<t>If the OSPFv3 Extended Prefix Range TLVs advertising the exact same rang | ge appears | |||
e appears | ||||
in multiple LSAs of the same type, originated by the same OSPFv3 router, th e LSA with | in multiple LSAs of the same type, originated by the same OSPFv3 router, th e LSA with | |||
the numerically smallest Instance ID MUST be used and subsequent instances | the numerically smallest Instance ID <bcp14>MUST</bcp14> be used, and subse | |||
of the | quent instances of the | |||
OSPFv3 Extended Prefix Range TLVs MUST be ignored.</t> | OSPFv3 Extended Prefix Range TLVs <bcp14>MUST</bcp14> be ignored.</t> | |||
</section> | </section> | |||
<section anchor="PREFIXSID" numbered="true" toc="default"> | ||||
<name>Prefix-SID Sub-TLV</name> | ||||
<t>The Prefix-SID sub-TLV is a sub-TLV of the following OSPFv3 TLVs as | ||||
defined in <xref target="RFC8362" format="default"/> and in <xref target | ||||
="PFXRANGE" format="default"/>: | ||||
</t> | ||||
<ul empty="true" spacing="normal"> | ||||
<section anchor="PREFIXSID" title="Prefix SID Sub-TLV"> | <li>Intra-Area Prefix TLV</li> | |||
<t>The Prefix SID Sub-TLV is a Sub-TLV of the following OSPFv3 TLVs as | ||||
defined in <xref target="RFC8362"/> and in <xref target="PFXRANGE"/>: | ||||
<list style="hanging"> | ||||
<t>Intra-Area Prefix TLV</t> | ||||
<t>Inter-Area Prefix TLV</t> | ||||
<t>External Prefix TLV</t> | <li>Inter-Area Prefix TLV</li> | |||
<t>OSPFv3 Extended Prefix Range TLV</t> | <li>External Prefix TLV</li> | |||
</list></t> | ||||
<t>It MAY appear more than once in the parent TLV and has the following | <li>OSPFv3 Extended Prefix Range TLV</li> | |||
format: | </ul> | |||
<figure> | <t>It <bcp14>MAY</bcp14> appear more than once in the parent TLV and has t | |||
<artwork> | he following format: | |||
</t> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 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 | | | Type | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Flags | Algorithm | Reserved | | | Flags | Algorithm | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| SID/Index/Label (variable) | | | SID/Index/Label (variable) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork><t | |||
where:</artwork> | >where:</t> | |||
</figure><list style="hanging"> | <ul empty="true"><li><dl newline="false" spacing="normal"> | |||
<t>Type: 4</t> | <dt>Type:</dt> | |||
<dd>4</dd> | ||||
<t>Length: 7 or 8 octets, dependent on the V-flag</t> | <dt>Length:</dt> | |||
<dd>7 or 8 octets, depending on the V-Flag.</dd> | ||||
<t>Flags: Single octet field. The following flags are defined: <figu | <dt>Flags:</dt> | |||
re | <dd> | |||
align="center"> | <t>Single-octet field. The following flags are defined: </t> | |||
<artwork> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+ | |||
| |NP|M |E |V |L | | | | | |NP|M |E |V |L | | | | |||
+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+]]></artwork> | |||
where:</artwork> | <t>where:</t> | |||
</figure><list style="hanging"> | <dl newline="false" spacing="normal"> | |||
<dt>NP-Flag:</dt> | ||||
<t>NP-Flag: No-PHP flag. If set, then the penultimate hop MUST | <dd>No-PHP (Penultimate Hop Popping) Flag. If set, then the penultim | |||
NOT pop the Prefix-SID before delivering packets to the | ate hop <bcp14>MUST | |||
node that advertised the Prefix-SID.</t> | NOT</bcp14> pop the Prefix-SID before delivering packets to the | |||
node that advertised the Prefix-SID.</dd> | ||||
<t>M-Flag: Mapping Server Flag. If set, the SID was advertised | <dt>M-Flag:</dt> | |||
by a Segment Routing Mapping Server as described in | <dd>Mapping Server Flag. If set, the SID was advertised | |||
<xref target="I-D.ietf-spring-segment-routing-ldp-interop"/>.</t | by an SR Mapping Server as described in | |||
> | <xref target="RFC8661" format="default"/>.</dd> | |||
<dt>E-Flag:</dt> | ||||
<t>E-Flag: Explicit-Null Flag. If set, any upstream neighbor | <dd>Explicit Null Flag. If set, any upstream neighbor | |||
of the Prefix-SID originator MUST replace the Prefix-SID with | of the Prefix-SID originator <bcp14>MUST</bcp14> replace the Pre | |||
the Explicit-NULL label (0 for IPv4, 2 for IPv6) before forwardi | fix-SID with | |||
ng the packet.</t> | the Explicit NULL label (0 for IPv4, 2 for IPv6) before forwardi | |||
ng the packet.</dd> | ||||
<t>V-Flag: Value/Index Flag. If set, then the Prefix-SID | <dt>V-Flag:</dt> | |||
<dd>Value/Index Flag. If set, then the Prefix-SID | ||||
carries an absolute value. If not set, then the Prefix-SID carri es | carries an absolute value. If not set, then the Prefix-SID carri es | |||
an index.</t> | an index.</dd> | |||
<dt>L-Flag:</dt> | ||||
<t>L-Flag: Local/Global Flag. If set, then the value/index | <dd>Local/Global Flag. If set, then the value/index | |||
carried by the Prefix-SID has local significance. If not set, th en | carried by the Prefix-SID has local significance. If not set, th en | |||
the value/index carried by this Sub-TLV has global significance. | the value/index carried by this sub-TLV has global significance. | |||
</t> | </dd> | |||
<dt>Other bits:</dt> | ||||
<t>Other bits: Reserved. These MUST be zero when sent and are ig | <dd>Reserved. These <bcp14>MUST</bcp14> be zero when sent and are ig | |||
nored when | nored when | |||
received.</t> | received.</dd> | |||
</list></t> | </dl> | |||
</dd> | ||||
<t>Reserved: SHOULD be set to 0 on transmission and MUST be ignored | <dt>Reserved:</dt> | |||
on reception.</t> | <dd><bcp14>SHOULD</bcp14> be set to 0 on transmission and <bcp14>MUST</b | |||
cp14> be ignored on reception.</dd> | ||||
<t>Algorithm: Single octet identifying the algorithm the Prefix-SID | <dt>Algorithm:</dt> | |||
is associated with as defined in | <dd><t>Single octet identifying the algorithm the Prefix-SID | |||
<xref target="I-D.ietf-ospf-segment-routing-extensions"/>.</t> | is associated with as defined in the IGP Algorithm Types registry | |||
<xref target="ALGOREG" format="default"/>.</t> | ||||
<t>A router receiving a Prefix-SID from a remote node and with an al | ||||
gorithm | ||||
value that such remote node has not advertised in the SR-Algorithm T | ||||
LV | ||||
<xref target="I-D.ietf-ospf-segment-routing-extensions"/> MUST ignor | ||||
e the | ||||
Prefix-SID Sub-TLV.</t> | ||||
<t>SID/Index/Label: According to the V-Flag and L-Flag, it contains: | ||||
<list style="hanging"> | ||||
<t>V-flag is set to 0 and L-flag is set to 0: The SID/Index/Label fi | ||||
eld | ||||
is a 4 octet index defining the offset in the SID/Labe | ||||
l space | ||||
advertised by this router</t> | ||||
<t>V-flag is set to 1 and L-flag is set to 1: The SID/Index/Label fi | ||||
eld | ||||
is a 3 octet local label where the 20 rightmost bits a | ||||
re used for | ||||
encoding the label value.</t> | ||||
<t>All other combinations of V-flag and L-flag are invalid and any S | <t>A router receiving a Prefix-SID from a remote node and with an algori | |||
ID | thm | |||
advertisement received with an invalid setting for V a | value that the remote node has not advertised in the SR-Algorithm TL | |||
nd L flags MUST | V | |||
be ignored.</t> | <xref target="RFC8665" format="default"/> <bcp14>MUST</bcp14> ignore | |||
</list></t> | the | |||
Prefix-SID sub-TLV.</t></dd> | ||||
<dt>SID/Index/Label:</dt> | ||||
<dd> | ||||
<t>According to the V-Flag and L-Flag, it contains: | ||||
</t> | ||||
<ul empty="true" spacing="normal"> | ||||
</list></t> | <li>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> | ||||
<t>If an OSPFv3 router advertises multiple Prefix-SIDs for the same pref | <li>V-Flag is set to 1 and L-Flag is set to 1: The SID/Index/Label | |||
ix, | field is a 3-octet local label where the 20 rightmost bits are | |||
topology, and algorithm, all of them MUST be ignored.</t> | used for encoding the label value.</li> | |||
<t>When calculating the outgoing label for the prefix, the router MUST | <li>All other combinations of V-Flag and L-Flag are invalid and | |||
take into account, as described below, the E, NP, and M flags advertised | any SID Advertisement received with an invalid setting for V- and | |||
by the | L-Flags <bcp14>MUST</bcp14> be ignored.</li> | |||
next-hop router if that router advertised the SID for the prefix. This | </ul> | |||
MUST be done | </dd> | |||
</dl></li></ul> | ||||
<t>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>When calculating the outgoing label for the prefix, the router <bcp14>M | ||||
UST</bcp14> | ||||
take into account, as described below, the E-, NP-, and M-Flags advertis | ||||
ed 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 t o the | regardless of whether the next-hop router contributes to the best path t o the | |||
prefix.</t> | prefix.</t> | |||
<t>The NP-Flag (No-PHP) <bcp14>MUST</bcp14> be set and the E-Flag <bcp14>M | ||||
<t>The NP-Flag (No-PHP) MUST be set and the E-flag MUST be clear for Pre | UST</bcp14> be clear for Prefix-SIDs | |||
fix-SIDs | ||||
allocated to prefixes that are propagated between areas by an ABR based on | allocated to prefixes that are propagated between areas by an ABR based on | |||
intra-area or inter-area reachability, unless the advertised prefix is d irectly | intra-area or inter-area reachability, unless the advertised prefix is d irectly | |||
attached to such ABR.</t> | attached to such ABR.</t> | |||
<t>The NP-Flag (No-PHP) <bcp14>MUST</bcp14> be set and the E-Flag <bcp14>M | ||||
<t>The NP-Flag (No-PHP) MUST be set and the E-flag MUST be clear for Pre | UST</bcp14> be clear for Prefix-SIDs | |||
fix-SIDs | ||||
allocated to redistributed prefixes, unless the redistributed prefix is directly | allocated to redistributed prefixes, unless the redistributed prefix is directly | |||
attached to the advertising ASBR.</t> | attached to the advertising ASBR.</t> | |||
<t>If the NP-Flag is not set, then any upstream neighbor of the Prefix-S | <t>If the NP-Flag is not set, then:</t> | |||
ID | <ul empty="true" spacing="normal"> | |||
originator MUST pop the Prefix-SID. This is equivalent to the penultimat | ||||
e | ||||
hop popping mechanism used in the MPLS dataplane. If the NP-flag is not | ||||
set, | ||||
then the received E-flag is ignored.</t> | ||||
<t>If the NP-flag is set then:<list style="hanging"> | <li>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> | ||||
<t> If the E-flag is not set, then any upstream neighbor of the Prefix-S | <li>The received E-Flag is ignored.</li> | |||
ID | </ul> | |||
originator MUST keep the Prefix-SID on top of the stack. This is useful | <t>If the NP-Flag is set and the E-Flag is not set, then:</t> | |||
when | <ul empty="true" spacing="normal"> | |||
the originator of the Prefix-SID needs to stitch the incoming packet int | ||||
o 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).</t> | ||||
<t>If the E-flag is set, then any upstream neighbor of the Prefix-SID o | <li>Any upstream neighbor of the Prefix-SID originator <bcp14>MUST</bcp1 | |||
riginator | 4> keep the | |||
MUST replace the Prefix-SID with an Explicit-NULL label. This | 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>If both the NP-Flag and E-Flag are set, then:</t> | ||||
<ul empty="true" spacing="normal"> | ||||
<li>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 des tination | is useful, e.g., when the originator of the Prefix-SID is the final des tination | |||
for the related prefix and the originator wishes to receive the packet with the | for the related prefix and the originator wishes to receive the packet with the | |||
original Traffic Class field <xref target="RFC5462"/>.</t> | original Traffic Class field <xref target="RFC5462" format="default"/>. | |||
</list></t> | </li> | |||
</ul> | ||||
<t>When the M-Flag is set, the NP-flag and the E-flag MUST be ignored on | <t>When the M-Flag is set, the NP-Flag and the E-Flag <bcp14>MUST</bcp14> | |||
reception.</t> | be ignored on reception.</t> | |||
<t>As the Mapping Server does not specify the originator of a prefix adver | ||||
<t>As the Mapping Server does not specify the originator of a prefix adv | tisement, | |||
ertisement, | ||||
it is not possible to determine PHP behavior solely based on the Mapping Server | it is not possible to determine PHP behavior solely based on the Mapping Server | |||
advertisement. However, PHP behavior SHOULD be done in following cases: | Advertisement. However, PHP behavior <bcp14>SHOULD</bcp14> be done in th | |||
<list style="hanging"> | e following cases: | |||
<t>The Prefix is intra-area type and the downstream neighbor is t | </t> | |||
he originator | <ul empty="true" spacing="normal"> | |||
of the prefix.</t> | ||||
<t>The Prefix is inter-area type and the downstream neighbor is a | <li>The Prefix is intra-area type and the downstream neighbor is the ori | |||
n ABR, which is | ginator | |||
advertising prefix reachability and is setting the LA-bit in the | of the prefix.</li> | |||
Prefix | ||||
Options as described in <xref target="RFC8362"/>.</t> | ||||
<t>The Prefix is external type and the downstream neighbor is an ASBR, which is | <li>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 | advertising prefix reachability and is setting the LA-bit in the Prefix | |||
Options as described in <xref target="RFC8362"/>.</t> | Options as described in <xref target="RFC8362" format="default"/> | |||
</list></t> | .</li> | |||
<t>When a Prefix-SID is advertised in the OSPFv3 Extended Prefix Range T | <li>The Prefix is external type and the downstream neighbor is an ASBR, | |||
LV, then | which is | |||
the value advertised in the Prefix SID Sub-TLV is interpreted as a star | advertising prefix reachability and is setting the LA-bit in the | |||
ting | Prefix | |||
Options as described in <xref target="RFC8362" format="default"/> | ||||
.</li> | ||||
</ul> | ||||
<t>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 star | ||||
ting | ||||
SID/Label value.</t> | SID/Label value.</t> | |||
<t>Example 1: If the following router addresses (loopback addresses) | ||||
<t>Example 1: If the following router addresses (loopback addresses) | need to be mapped into the corresponding Prefix-SID indexes: </t> | |||
need to be mapped into the corresponding Prefix SID indexes: <figure | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
suppress-title="true"> | ||||
<artwork> | ||||
Router-A: 2001:DB8::1/128, Prefix-SID: Index 1 | Router-A: 2001:DB8::1/128, Prefix-SID: Index 1 | |||
Router-B: 2001:DB8::2/128, Prefix-SID: Index 2 | Router-B: 2001:DB8::2/128, Prefix-SID: Index 2 | |||
Router-C: 2001:DB8::3/128, Prefix-SID: Index 3 | Router-C: 2001:DB8::3/128, Prefix-SID: Index 3 | |||
Router-D: 2001:DB8::4/128, Prefix-SID: Index 4 | Router-D: 2001:DB8::4/128, Prefix-SID: Index 4]]></artwork> | |||
</artwork> | <t>then the Address Prefix field in the OSPFv3 Extended Prefix Range TLV w | |||
</figure></t> | ould be set | |||
<t>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 wo uld be set to 4, and | to 2001:DB8::1, the Prefix Length would be set to 128, the Range Size wo uld be set to 4, and | |||
the Index value in the Prefix-SID Sub-TLV would be set to 1.</t> | the Index value in the Prefix-SID sub-TLV would be set to 1.</t> | |||
<t>Example 2: If the following prefixes need to be mapped into the | ||||
<t>Example 2: If the following prefixes need to be mapped into the | corresponding Prefix-SID indexes: </t> | |||
corresponding Prefix-SID indexes: <figure suppress-title="true"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<artwork> | ||||
2001:DB8:1::0/120, Prefix-SID: Index 51 | 2001:DB8:1::0/120, Prefix-SID: Index 51 | |||
2001:DB8:1::100/120, Prefix-SID: Index 52 | 2001:DB8:1::100/120, Prefix-SID: Index 52 | |||
2001:DB8:1::200/120, Prefix-SID: Index 53 | 2001:DB8:1::200/120, Prefix-SID: Index 53 | |||
2001:DB8:1::300/120, Prefix-SID: Index 54 | 2001:DB8:1::300/120, Prefix-SID: Index 54 | |||
2001:DB8:1::400/120, Prefix-SID: Index 55 | 2001:DB8:1::400/120, Prefix-SID: Index 55 | |||
2001:DB8:1::500/120, Prefix-SID: Index 56 | 2001:DB8:1::500/120, Prefix-SID: Index 56 | |||
2001:DB8:1::600/120, Prefix-SID: Index 57 | 2001:DB8:1::600/120, Prefix-SID: Index 57]]></artwork> | |||
</artwork> | <t>then the Prefix field in the OSPFv3 Extended Prefix Range TLV would be | |||
</figure></t> | set | |||
<t>then the Prefix field in the OSPFv3 Extended Prefix Range TLV would b | ||||
e set | ||||
to 2001:DB8:1::0, the Prefix Length would be set to 120, the Range Size would be set to 7, | 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> | and the Index value in the Prefix-SID sub-TLV would be set to 51.</t> | |||
</section> | </section> | |||
<section anchor="ADJSID" numbered="true" toc="default"> | ||||
<section anchor="ADJSID" title="Adjacency Segment Identifier (Adj-SID)"> | <name>Adjacency Segment Identifier (Adj-SID)</name> | |||
<t>An Adjacency Segment Identifier (Adj-SID) represents a router | <t>An Adjacency Segment Identifier (Adj-SID) represents a router | |||
adjacency in Segment Routing.</t> | adjacency in Segment Routing.</t> | |||
<section anchor="ADJSIDSUBTLV" numbered="true" toc="default"> | ||||
<section anchor="ADJSIDSUBTLV" title="Adj-SID Sub-TLV"> | <name>Adj-SID Sub-TLV</name> | |||
<t>The Adj-SID sub-TLV is an optional sub-TLV of the Router-Link TLV as | ||||
<t>The Adj-SID Sub-TLV is an optional Sub-TLV of the Router-Link TLV as | defined in | |||
defined in | <xref target="RFC8362" format="default"/>. It <bcp14>MAY</bcp14> appear | |||
<xref target="RFC8362"/>. It MAY appear multiple times | multiple times | |||
in the Router-Link TLV. | in the Router-Link TLV. | |||
The Adj-SID Sub-TLV has the following format:<figure> | The Adj-SID sub-TLV has the following format:</t> | |||
<artwork> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 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 | | | Type | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Flags | Weight | Reserved | | | Flags | Weight | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| SID/Label/Index (variable) | | | SID/Label/Index (variable) | | |||
+---------------------------------------------------------------+ | +---------------------------------------------------------------+]]></artwork><t | |||
>where:</t> | ||||
where:</artwork> | <ul empty="true"><li><dl newline="false" spacing="normal"> | |||
</figure><list style="hanging"> | <dt>Type:</dt> | |||
<t>Type: 5</t> | <dd>5</dd> | |||
<dt>Length:</dt> | ||||
<t>Length: 7 or 8 octets, dependent on the V flag.</t> | <dd>7 or 8 octets, depending on the V-Flag.</dd> | |||
<dt>Flags:</dt> | ||||
<t>Flags: Single octet field containing the following flags:<figure | <dd> | |||
align="center"> | <t>Single-octet field containing the following flags:</t> | |||
<artwork> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
|B|V|L|G|P| | | |B|V|L|G|P| | | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+]]></artwork><t>where:</t> | |||
<dl newline="false" spacing="normal"> | ||||
where:</artwork> | <dt>B-Flag:</dt> | |||
</figure><list style="hanging"> | <dd>Backup Flag. If set, the Adj-SID refers to an | |||
<t>B-Flag: Backup Flag. If set, the Adj-SID refers to an | adjacency that is eligible for protection (e.g., using IP Fast | |||
adjacency that is eligible for protection (e.g., using IPFRR or | Reroute (IPFRR) or MPLS-FRR (MPLS Fast Reroute)) as | |||
MPLS-FRR) as | described in <xref target="RFC8402" | |||
described in section 3.5 of <xref target="RFC8402"/>.</t> | sectionFormat="of" section="3.4"/>.</dd> | |||
<dt>V-Flag:</dt> | ||||
<t>The V-Flag: Value/Index Flag. If set, then the Adj-SID | <dd>Value/Index Flag. If set, then the Adj-SID | |||
carries an absolute value. If not set, then the Adj-SID carries | carries an absolute value. If not set, then the Adj-SID carries | |||
an index.</t> | an index.</dd> | |||
<dt>L-Flag:</dt> | ||||
<t>The L-Flag: Local/Global Flag. If set, then the value/index | <dd>Local/Global Flag. If set, then the value/index | |||
carried by the Adj-SID has local significance. If not set, then | carried by the Adj-SID has local significance. If not set, then | |||
the value/index carried by this Sub-TLV has global significance. | the value/index carried by this sub-TLV has global significance. | |||
</t> | </dd> | |||
<dt>G-Flag:</dt> | ||||
<t>The G-Flag: Group Flag. When set, the G-Flag indicates that t | <dd>Group Flag. When set, the G-Flag indicates that the | |||
he | Adj-SID refers to a group of adjacencies (and therefore <bcp14>M | |||
Adj-SID refers to a group of adjacencies (and therefore MAY be a | AY</bcp14> be assigned | |||
ssigned | to other adjacencies as well).</dd> | |||
to other adjacencies as well).</t> | <dt>P-Flag.</dt> | |||
<dd>Persistent Flag. When set, the P-Flag indicates that | ||||
<t>P-Flag. Persistent flag. When set, the P-Flag indicates that | ||||
the Adj-SID is persistently allocated, i.e., the Adj- SID value | the Adj-SID is persistently allocated, i.e., the Adj- SID value | |||
remains the same across router restart and/or interfa | remains the same across router restart and/or interfa | |||
ce flap.</t> | ce flap.</dd> | |||
<dt>Other bits:</dt> | ||||
<t>Other bits: Reserved. These MUST be zero when sent and are | <dd>Reserved. These <bcp14>MUST</bcp14> be zero when sent and are | |||
ignored when received.</t> | ignored when received.</dd> | |||
</list></t> | </dl> | |||
</dd> | ||||
<t>Reserved: SHOULD be set to 0 on transmission and MUST be ignored o | <dt>Reserved:</dt> | |||
n reception.</t> | <dd><bcp14>SHOULD</bcp14> be set to 0 on transmission and <bcp14>MUST< | |||
/bcp14> be ignored on reception.</dd> | ||||
<t>Weight: Weight used for load-balancing purposes. The use of the | <dt>Weight:</dt> | |||
weight is defined in <xref target="RFC8402"/>.</t> | <dd>Weight used for load-balancing purposes. The use of the | |||
weight is defined in <xref target="RFC8402" format="default"/>.</dd> | ||||
<t>SID/Index/Label: as described in <xref target="PREFIXSID"/>.</t> | <dt>SID/Index/Label:</dt> | |||
<dd>As described in <xref target="PREFIXSID" format="default"/>.</dd> | ||||
</list></t> | </dl></li></ul> | |||
<t>An SR-capable router <bcp14>MAY</bcp14> allocate an Adj-SID for each | ||||
<t>An SR-capable router MAY allocate an Adj-SID for each of its | of its | |||
adjacencies and set the B-Flag when the adjacency is eligible for protec tion by an | adjacencies and set the B-Flag when the adjacency is eligible for protec tion by an | |||
FRR mechanism (IP or MPLS) as described in <xref target="RFC8402"/>.</t> | FRR mechanism (IP or MPLS) as described in <xref target="RFC8402" format | |||
="default"/>.</t> | ||||
<t>An SR-capable router MAY allocate more than one Adj-SID to an adjacen | <t>An SR-capable router <bcp14>MAY</bcp14> allocate more than one Adj-SI | |||
cy.</t> | D to an adjacency.</t> | |||
<t>An SR-capable router <bcp14>MAY</bcp14> allocate the same Adj-SID to | ||||
<t>An SR-capable router MAY allocate the same Adj-SID to different adjac | different adjacencies.</t> | |||
encies.</t> | <t>When the P-Flag is not set, the Adj-SID <bcp14>MAY</bcp14> be persist | |||
ent. When | ||||
<t>When the P-flag is not set, the Adj-SID MAY be persistent. When | the P-Flag is set, the Adj-SID <bcp14>MUST</bcp14> be persistent.</t> | |||
the P-flag is set, the Adj-SID MUST be persistent.</t> | ||||
</section> | </section> | |||
<section anchor="LANADJSIDSUBTLV" numbered="true" toc="default"> | ||||
<section anchor="LANADJSIDSUBTLV" title="LAN Adj-SID Sub-TLV"> | <name>LAN Adj-SID Sub-TLV</name> | |||
<t>The LAN Adj-SID Sub-TLV is an optional Sub-TLV of the Router-Link TLV | <t>The LAN Adjacency SID is an optional sub-TLV of the Router-Link | |||
. It MAY | TLV. It <bcp14>MAY</bcp14> appear multiple times in the Router-Link TLV. | |||
appear multiple times in the Router-Link TLV. It is used to advertise | It is used | |||
a SID/Label for an adjacency to a non-DR router on a broadcast, NBMA, or | to advertise a SID/Label for an adjacency to a non-DR router on a | |||
hybrid | broadcast, Non-Broadcast Multi-Access (NBMA), or hybrid <xref target="RF | |||
<xref target="RFC6845"/> network. | C6845" format="default"/> network. | |||
<figure> | </t> | |||
<artwork> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 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 | | | Type | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Flags | Weight | Reserved | | | Flags | Weight | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Neighbor ID | | | Neighbor ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| SID/Label/Index (variable) | | | SID/Label/Index (variable) | | |||
+---------------------------------------------------------------+ | +---------------------------------------------------------------+]]></artwork><t | |||
>where:</t> | ||||
where:</artwork> | <ul empty="true"><li><dl newline="false" spacing="normal"> | |||
</figure><list style="hanging"> | <dt>Type:</dt> | |||
<t>Type: 6</t> | <dd>6</dd> | |||
<dt>Length:</dt> | ||||
<t>Length: 11 or 12 octets, dependent on V-flag.</t> | <dd>11 or 12 octets, depending on the V-Flag.</dd> | |||
<dt>Flags:</dt> | ||||
<t>Flags: same as in <xref target="ADJSIDSUBTLV"/></t> | <dd>Same as in <xref target="ADJSIDSUBTLV" format="default"/>.</dd> | |||
<dt>Weight:</dt> | ||||
<t>Weight: Weight used for load-balancing purposes. The use of the | <dd>Weight used for load-balancing purposes. The use of the | |||
weight is defined in <xref target="RFC8402"/>.</t> | weight is defined in <xref target="RFC8402" format="default"/>.</dd> | |||
<dt>Reserved:</dt> | ||||
<t>Reserved: SHOULD be set to 0 on transmission and MUST be ignored | <dd><bcp14>SHOULD</bcp14> be set to 0 on transmission and <bcp14>MUST< | |||
on reception.</t> | /bcp14> be ignored on reception.</dd> | |||
<dt>Neighbor ID:</dt> | ||||
<t>Neighbor ID: The Router ID of the neighbor for which the LAN-Adj- | <dd>The Router ID of the neighbor for which the LAN Adjacency SID is | |||
SID is | advertised.</dd> | |||
advertised.</t> | <dt>SID/Index/Label:</dt> | |||
<dd><t>As described in <xref target="PREFIXSID" format="default"/>.</t | ||||
<t>SID/Index/Label: as described in <xref target="PREFIXSID"/>.</t> | > | |||
<t>When the P-flag is not set, the LAN Adj-SID MAY be persistent. Wh | ||||
en | ||||
the P-flag is set, the LAN Adj-SID MUST be persistent.</t> | ||||
</list></t> | <t>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 p | ||||
ersistent.</t></dd> | ||||
</dl></li></ul> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Elements of Procedure"> | <name>Elements of Procedure</name> | |||
<section title="Intra-area Segment routing in OSPFv3 "> | <section numbered="true" toc="default"> | |||
<t>An OSPFv3 router that supports segment routing MAY advertise Prefix- | <name>Intra-area Segment Routing in OSPFv3</name> | |||
<t>An OSPFv3 router that supports Segment Routing <bcp14>MAY</bcp14> adv | ||||
ertise Prefix- | ||||
SIDs for any prefix to which it is advertising reachability (e.g., | SIDs for any prefix to which it is advertising reachability (e.g., | |||
a loopback IP address as described in <xref target="PREFIXSID"/>).</t> | a loopback IP address as described in <xref target="PREFIXSID" format="d | |||
efault"/>).</t> | ||||
<t>A Prefix-SID can also be advertised by SR Mapping Servers (as | <t>A Prefix-SID can also be advertised by SR Mapping Servers (as | |||
described in <xref target="I-D.ietf-spring-segment-routing-ldp-interop"/ >). A Mapping | described in <xref target="RFC8661" format="default"/>). A Mapping | |||
Server advertises Prefix-SIDs for remote prefixes that exist in the | Server advertises Prefix-SIDs for remote prefixes that exist in the | |||
OSPFv3 routing domain. Multiple Mapping Servers can advertise Prefix-SID s | OSPFv3 routing domain. Multiple Mapping Servers can advertise Prefix-SID s | |||
for the same prefix, in which case the same Prefix-SID MUST be advertise d by | for the same prefix, in which case the same Prefix-SID <bcp14>MUST</bcp1 4> be advertised by | |||
all of them. The SR Mapping Server could use either area flooding scope or | all of them. The SR Mapping Server could use either area flooding scope or | |||
autonomous system flooding scope when advertising Prefix SIDs for | autonomous system flooding scope when advertising Prefix-SIDs for | |||
prefixes, based on the configuration of the SR Mapping Server. | prefixes, based on the configuration of the SR Mapping Server. | |||
Depending on the flooding scope used, the SR Mapping Server chooses the | 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, | OSPFv3 LSA type that will be used. If the area flooding scope is needed, | |||
an E-Intra-Area-Prefix-LSA <xref target="RFC8362"/> | an E-Intra-Area-Prefix-LSA <xref target="RFC8362" format="default"/> | |||
is used. If autonomous system flooding scope is needed, | is used. If autonomous system flooding scope is needed, | |||
an E-AS-External-LSA <xref target="RFC8362"/> is used.</t> | an E-AS-External-LSA <xref target="RFC8362" format="default"/> is used.< | |||
/t> | ||||
<t>When a Prefix-SID is advertised by the Mapping Server, which is | <t>When a Prefix-SID is advertised by the Mapping Server, which is | |||
indicated by the M-flag in the Prefix-SID Sub-TLV (<xref | indicated by the M-Flag in the Prefix-SID sub-TLV (<xref | |||
target="PREFIXSID"/>), the route type as implied by the LSA type is igno | target="PREFIXSID" format="default"/>), the route type as implied by | |||
red and the | the LSA type is ignored and the Prefix-SID is bound to the | |||
Prefix-SID is bound to the corresponding prefix independent of the route | corresponding prefix independent of the route type.</t> | |||
type.</t> | ||||
<t>Advertisement of the Prefix-SID by the Mapping Server using an | <t>Advertisement of the Prefix-SID by the Mapping Server using an | |||
Inter-Area Prefix TLV, External-Prefix TLV, or Intra-Area-Prefix TLV | Inter-Area Prefix TLV, External-Prefix TLV, or Intra-Area-Prefix TLV | |||
<xref target="RFC8362"/> does not itself | <xref target="RFC8362" format="default"/> does not itself | |||
contribute to the prefix reachability. The NU-bit <xref target="RFC5340" | contribute to the prefix reachability. The NU-bit <xref target="RFC5340" | |||
/> MUST be set in the | format="default"/> <bcp14>MUST</bcp14> be set in the | |||
PrefixOptions field of the LSA which is used by the Mapping Server to | PrefixOptions field of the LSA, which is used by the Mapping Server to | |||
advertise SID or SID Range, which prevents the advertisement from contri buting to | advertise SID or SID Range, which prevents the advertisement from contri buting to | |||
prefix reachability.</t> | prefix reachability.</t> | |||
<t>An SR Mapping Server <bcp14>MUST</bcp14> use the OSPFv3 Extended Pref | ||||
<t>An SR Mapping Server MUST use the OSPFv3 Extended Prefix Range TLVs w | ix Range TLVs when advertising SIDs | |||
hen advertising SIDs | for prefixes. Prefixes of different route types can be combined in a sin | |||
for prefixes. Prefixes of different route-types can be combined in a sin | gle OSPFv3 | |||
gle OSPFv3 | ||||
Extended Prefix Range TLV advertised by an SR Mapping Server.</t> | Extended Prefix Range TLV advertised by an SR Mapping Server.</t> | |||
<t>Area-scoped OSPFv3 Extended Prefix Range TLVs are propagated between areas, similar | <t>Area-scoped OSPFv3 Extended Prefix Range TLVs are propagated between areas, similar | |||
to propagation of prefixes between areas. Same rules that are used for p ropagating | to propagation of prefixes between areas. Same rules that are used for p ropagating | |||
prefixes between areas <xref target="RFC5340"/> are used for the propaga tion of | prefixes between areas <xref target="RFC5340" format="default"/> are use d for the propagation of | |||
the prefix ranges.</t> | the prefix ranges.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Inter-area Segment routing in OSPFv3"> | <name>Inter-area Segment Routing in OSPFv3</name> | |||
<t>In order to support SR in a multi-area environment, OSPFv3 MUST | <t>In order to support SR in a multiarea environment, OSPFv3 <bcp14>MUST | |||
</bcp14> | ||||
propagate Prefix-SID information between areas. The following | propagate Prefix-SID information between areas. The following | |||
procedure is used to propagate Prefix SIDs between areas.</t> | procedure is used to propagate Prefix-SIDs between areas.</t> | |||
<t>When an OSPFv3 ABR advertises an Inter-Area-Prefix-LSA from an | <t>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 | intra-area prefix to all its connected areas, it will also include the | |||
Prefix-SID Sub-TLV, as described in <xref target="PREFIXSID"/>. The | Prefix-SID sub-TLV as described in <xref target="PREFIXSID" format="defa | |||
Prefix-SID value will be set as follows: <list style="hanging"> | ult"/>. The | |||
<t>The ABR will look at its best path to the prefix in the source ar | Prefix-SID value will be set as follows: </t> | |||
ea | <ul empty="true" spacing="normal"> | |||
<li>The ABR will look at its best path to the prefix in the source are | ||||
a | ||||
and find the advertising router associated with the best | and find the advertising router associated with the best | |||
path to that prefix.</t> | path to that prefix.</li> | |||
<t>The ABR will then determine if such router advertised a Prefix-SI D | <li>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 | for the prefix and use it when advertising the Prefix-SID to other | |||
connected areas.</t> | connected areas.</li> | |||
<t>If no Prefix-SID was advertised for the prefix in the source | <li>If no Prefix-SID was advertised for the prefix in the source | |||
area by the router that contributes to the best path to the | area by the router that contributes to the best path to the | |||
prefix, the originating ABR will use the Prefix-SID advertised by an y | prefix, the originating ABR will use the Prefix-SID advertised by an y | |||
other router when propagating the Prefix-SID for the prefix to other | other router when propagating the Prefix-SID for the prefix to other | |||
areas.</t> | areas.</li> | |||
</list></t> | </ul> | |||
<t>When an OSPFv3 ABR advertises Inter-Area-Prefix-LSA LSAs from an | <t>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 | inter-area route to all its connected areas, it will also include the | |||
Prefix-SID Sub-TLV, as described in <xref target="PREFIXSID"/>. The | Prefix-SID sub-TLV as described in <xref target="PREFIXSID" format="defa | |||
Prefix-SID value will be set as follows: <list style="hanging"> | ult"/>. The | |||
<t>The ABR will look at its best path to the prefix in the backbone | Prefix-SID value will be set as follows: </t> | |||
<ul empty="true" spacing="normal"> | ||||
<li>The ABR will look at its best path to the prefix in the backbone | ||||
area and find the advertising router associated with the best | area and find the advertising router associated with the best | |||
path to that prefix.</t> | path to that prefix.</li> | |||
<t>The ABR will then determine if such router advertised a Prefix-SI D | <li>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 | for the prefix and use it when advertising the Prefix-SID to other | |||
connected areas.</t> | connected areas.</li> | |||
<t>If no Prefix-SID was advertised for the prefix in the backbone | <li>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, | area by the ABR that contributes to the best path to the prefix, | |||
the originating ABR will use the Prefix-SID advertised by any | the originating ABR will use the Prefix-SID advertised by any | |||
other router when propagating the Prefix-SID for the prefix to other | other router when propagating the Prefix-SID for the prefix to other | |||
areas.</t> | areas.</li> | |||
</list></t> | </ul> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Segment Routing for External Prefixes"> | <name>Segment Routing for External Prefixes</name> | |||
<t>AS-External-LSAs are flooded domain wide. When an ASBR, which | <t>AS-External-LSAs are flooded domain wide. When an ASBR, which | |||
supports SR, originates an E-AS-External-LSA, it SHOULD also include | supports SR, originates an E-AS-External-LSA, it <bcp14>SHOULD</bcp14> a | |||
a Prefix-SID Sub-TLV, as described in <xref target="PREFIXSID"/>. | lso include | |||
a Prefix-SID sub-TLV as described in <xref target="PREFIXSID" format="de | ||||
fault"/>. | ||||
The Prefix-SID value will be set to the SID that has been reserved for | The Prefix-SID value will be set to the SID that has been reserved for | |||
that prefix.</t> | that prefix.</t> | |||
<t>When a Not-So-Stubby Area (NSSA) <xref target="RFC3101" format="defau | ||||
<t>When an NSSA <xref target="RFC3101"/> ABR translates an E-NSSA-LSA in | lt"/> ABR | |||
to an E-AS-External-LSA, it | translates an E-NSSA-LSA into an E-AS-External-LSA, it <bcp14>SHOULD</bc | |||
SHOULD also advertise the Prefix-SID for the prefix. The NSSA ABR | p14> also | |||
determines its best path to the prefix advertised in the translated | advertise the Prefix-SID for the prefix. The NSSA ABR determines its | |||
E-NSSA-LSA and finds the advertising router associated with that path. | best path to the prefix advertised in the translated E-NSSA-LSA and | |||
If the advertising router has advertised a Prefix-SID for the prefix, | finds the advertising router associated with that path. If the | |||
then the NSSA ABR uses it when advertising the Prefix-SID for 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 | E-AS-External-LSA. Otherwise, the Prefix-SID advertised by any other | |||
router will be used.</t> | router will be used.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Advertisement of Adj-SID"> | <name>Advertisement of Adj-SID</name> | |||
<t>The Adjacency Segment Routing Identifier (Adj-SID) is advertised | <t>The Adjacency Segment Routing Identifier (Adj-SID) is advertised | |||
using the Adj-SID Sub-TLV as described in <xref target="ADJSID"/>.</t> | using the Adj-SID sub-TLV as described in <xref target="ADJSID" format=" | |||
default"/>.</t> | ||||
<section title="Advertisement of Adj-SID on Point-to-Point Links"> | <section numbered="true" toc="default"> | |||
<t>An Adj-SID MAY be advertised for any adjacency on a P2P link that i | <name>Advertisement of Adj-SID on Point-to-Point Links</name> | |||
s | <t>An Adj-SID <bcp14>MAY</bcp14> be advertised for any adjacency on a | |||
in neighbor state 2-Way or higher. If the adjacency on a P2P link | point-to-point (P2P) link that is in neighbor state 2-Way or | |||
transitions from the FULL state, then the Adj-SID for that adjacency | higher. If the adjacency on a P2P link transitions from the FULL | |||
MAY be removed from the area. If the adjacency transitions to a | state, then the Adj-SID for that adjacency <bcp14>MAY</bcp14> be remov | |||
state lower than 2-Way, then the Adj-SID advertisement MUST be withdra | ed from the | |||
wn | area. If the adjacency transitions to a state lower than 2-Way, then | |||
from the area.</t> | the Adj-SID Advertisement <bcp14>MUST</bcp14> be withdrawn from the ar | |||
ea.</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Adjacency SID on Broadcast or NBMA Interfaces"> | <name>Adjacency SID on Broadcast or NBMA Interfaces</name> | |||
<t>Broadcast, NBMA, or hybrid <xref target="RFC6845"/> networks in OSP | <t>Broadcast, NBMA, or hybrid <xref target="RFC6845" format="default"/ | |||
Fv3 are | > networks in OSPFv3 are | |||
represented by a star topology where the DR is the central | represented by a star topology where the DR is the central | |||
point to which all other routers on the broadcast, NBMA, or hybrid net work connect. | point to which all other routers on the broadcast, NBMA, or hybrid net work connect. | |||
As a result, routers on the broadcast, NBMA, or hybrid network adverti se only | As a result, routers on the broadcast, NBMA, or hybrid network adverti se only | |||
their adjacency to the DR. Routers that do not act as DR do not form o r advertise | their adjacency to the DR. Routers that do not act as DR do not form o r advertise | |||
adjacencies with each other. They do, however, maintain 2-Way adjacenc y state | adjacencies with each other. They do, however, maintain 2-Way adjacenc y state | |||
with each other and are directly reachable.</t> | with each other and are directly reachable.</t> | |||
<t>When Segment Routing is used, each router on the broadcast, NBMA, o r hybrid | <t>When Segment Routing is used, each router on the broadcast, NBMA, o r hybrid | |||
network MAY advertise the Adj-SID for its adjacency to the DR using th | network <bcp14>MAY</bcp14> advertise the Adj-SID for its adjacency to | |||
e | the DR using the | |||
Adj-SID Sub-TLV as described in <xref target="ADJSIDSUBTLV"/>.</t> | Adj-SID sub-TLV as described in <xref target="ADJSIDSUBTLV" format="de | |||
fault"/>.</t> | ||||
<t>SR-capable routers MAY also advertise a LAN-Adj-SID for other neigh | <t>SR-capable routers <bcp14>MAY</bcp14> also advertise a LAN | |||
bors | Adjacency SID for other neighbors (e.g., Backup Designated Router | |||
(e.g., BDR, DR-OTHER) on the broadcast, NBMA, or hybrid network using | (BDR), DR-OTHER, etc.) on the broadcast, NBMA, or hybrid network | |||
the | using the LAN Adj-SID sub-TLV as described in <xref | |||
LAN-Adj-SID Sub-TLV as described in <xref target="LANADJSIDSUBTLV"/>.< | target="LANADJSIDSUBTLV" format="default"/>.</t> | |||
/t> | ||||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="IANA" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<t>This specification updates two existing OSPFv3 registries.</t> | ||||
<section anchor="EPLTLVREG" numbered="true" toc="default"> | ||||
<name>"OSPFv3 Extended-LSA TLVs" Registry</name> | ||||
<t>The following values have been allocated:</t> | ||||
<section anchor="IANA" title="IANA Considerations"> | <table anchor="IANA1" align="left"> | |||
<name>OSPFv3 Extended-LSA TLVs</name> | ||||
<t>This specification updates several existing OSPFv3 registries.</t> | <thead> | |||
<tr> | ||||
<section anchor="EPLTLVREG" title="OSPFv3 Extended-LSA TLV Registry"> | <th>Value</th> | |||
<th>Description</th> | ||||
<t>Following values are allocated:</t> | <th>Reference</th> | |||
</tr> | ||||
<t>o 9 - OSPFv3 Extended Prefix Range TLV</t> | </thead> | |||
<tbody> | ||||
<tr> | ||||
<td>9</td> | ||||
<td>OSPFv3 Extended Prefix Range TLV</td> | ||||
<td>This document</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
<section anchor="EXTLSAREG" numbered="true" toc="default"> | ||||
<name>"OSPFv3 Extended-LSA Sub-TLVs" Registry</name> | ||||
<t>The following values have been allocated:</t> | ||||
<section anchor="EXTLSAREG" title="OSPFv3 Extended-LSA Sub-TLV registry"> | <table anchor="IANA2" align="left"> | |||
<name>OSPFv3 Extended-LSA Sub-TLVs</name> | ||||
<thead> | ||||
<tr> | ||||
<th>Value</th> | ||||
<th>Description</th> | ||||
<th>Reference</th> | ||||
<t>o 4 - Prefix SID Sub-TLV</t> | </tr> | |||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>4</td> | ||||
<td>Prefix-SID sub-TLV</td> | ||||
<td>This document</td> | ||||
<t>o 5 - Adj-SID Sub-TLV</t> | </tr> | |||
<tr> | ||||
<td>5</td> | ||||
<td>Adj-SID sub-TLV</td> | ||||
<td>This document</td> | ||||
<t>o 6 - LAN Adj-SID Sub-TLV</t> | </tr> | |||
<tr> | ||||
<td>6</td> | ||||
<td>LAN Adj-SID sub-TLV</td> | ||||
<td>This document</td> | ||||
</tr> | ||||
<tr> | ||||
<td>7</td> | ||||
<td>SID/Label sub-TLV</td> | ||||
<td>This document</td> | ||||
<t>o 7 - SID/Label Sub-TLV</t> | </tr> | |||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="Security" title="Security Considerations"> | <section anchor="Error-handling" numbered="true" toc="default"> | |||
<name>TLV/Sub-TLV Error Handling | ||||
</name> | ||||
<t>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> | ||||
<t>With the OSPFv3 segment routing extensions defined herein, | <section anchor="Security" numbered="true" toc="default"> | |||
OSPFv3 will now program the MPLS data plane <xref target="RFC3031"></xref> | <name>Security Considerations</name> | |||
. | <t>With the OSPFv3 Segment Routing extensions defined herein, | |||
Previously, LDP <xref target="RFC5036"></xref> or | OSPFv3 will now program the MPLS data plane <xref target="RFC3031" format= | |||
"default"/>. | ||||
Previously, LDP <xref target="RFC5036" format="default"/> or | ||||
another label distribution mechanism was required to advertise MPLS labels and | another label distribution mechanism was required to advertise MPLS labels and | |||
program the MPLS data plane.</t> | program the MPLS data plane.</t> | |||
<t>In general, the same types of attacks that can be carried out on the IP | <t>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 tr affic | control plane can be carried out on the MPLS control plane resulting in tr affic | |||
being misrouted in the respective data planes. However, the latter can be more | being misrouted in the respective data planes. However, the latter can be more | |||
difficult to detect and isolate.</t> | difficult to detect and isolate.</t> | |||
<t>Existing security extensions, as described in <xref target="RFC5340" fo | ||||
<t>Existing security extensions as described in <xref target="RFC5340"></x | rmat="default"/> and | |||
ref> and | <xref target="RFC8362" format="default"/>, apply to these Segment Routing | |||
<xref target="RFC8362"/> apply to these segment routing | ||||
extensions. While OSPFv3 is under a single administrative domain, there c an be | extensions. While OSPFv3 is under a single administrative domain, there c an be | |||
deployments where potential attackers have access to one or more networks in the | deployments where potential attackers have access to one or more networks in the | |||
OSPFv3 routing domain. In these deployments, stronger authentication mech | OSPFv3 routing domain. In these deployments, stronger authentication mech | |||
anisms | anisms, | |||
such as those specified in <xref target="RFC4552"></xref> or | such as those specified in <xref target="RFC4552" format="default"/> or | |||
<xref target="RFC7166"></xref> | <xref target="RFC7166" format="default"/>, | |||
SHOULD be used.</t> | <bcp14>SHOULD</bcp14> be used.</t> | |||
<t>Implementations <bcp14>MUST</bcp14> ensure that malformed TLVs and sub- | ||||
<t>Implementations MUST assure that malformed TLV and Sub-TLV defined in | TLVs defined in this document | |||
this document | are detected and that they do not provide a vulnerability for attackers t | |||
are detected and do not provide a vulnerability for attackers to crash th | o crash the OSPFv3 | |||
e OSPFv3 | router or routing process. Reception of a malformed TLV or sub-TLV <bcp14 | |||
router or routing process. Reception of a malformed TLV or Sub-TLV SHOULD | >SHOULD</bcp14> be counted | |||
be counted | and/or logged for further analysis. Logging of malformed TLVs and sub-TLV | |||
and/or logged for further analysis. Logging of malformed TLVs and Sub-TLV | s <bcp14>SHOULD</bcp14> | |||
s SHOULD | be rate limited to prevent a Denial-of-Service (DoS) attack (distributed | |||
be rate-limited to prevent a Denial of Service (DoS) attack (distributed | or otherwise) | |||
or otherwise) | ||||
from overloading the OSPFv3 control plane.</t> | from overloading the OSPFv3 control plane.</t> | |||
</section> | </section> | |||
</middle> | ||||
<back> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.5340.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7770.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6845.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.3101.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.5036.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.3031.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8362.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8402.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.5462.xml"/> | ||||
<!-- I-D.ietf-spring-segment-routing-ldp-interop: Companion document --> | ||||
<reference anchor='RFC8661' target="https://www.rfc-editor.org/info/rfc8661"> | ||||
<front> | ||||
<title>Segment Routing MPLS Interworking with LDP</title> | ||||
<section anchor="Acknowledgements" title="Contributors"> | <author initials='A' surname='Bashandy' fullname='Ahmed Bashandy' role="editor"> | |||
<organization /> | ||||
</author> | ||||
<t>The following people gave a substantial contribution to the content | <author initials='C' surname='Filsfils' fullname='Clarence Filsfils' role="edito | |||
of this document and should be considered as co-authors:</t> | r"> | |||
<organization /> | ||||
</author> | ||||
<t><figure> | <author initials='S' surname='Previdi' fullname='Stefano Previdi'> | |||
<artwork><![CDATA[ | <organization /> | |||
</author> | ||||
<author initials='B' surname='Decraene' fullname='Bruno Decraene'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='S' surname='Litkowski' fullname='Stephane Litkowski'> | ||||
<organization /> | ||||
</author> | ||||
<date month='December' year='2019' /> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8661"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8661"/> | ||||
</reference> | ||||
<reference anchor="ALGOREG" | ||||
target="https://www.iana.org/assignments/igp-parameters"> | ||||
<front> | ||||
<title>Interior Gateway Protocol (IGP) Parameters</title> | ||||
<author><organization>IANA</organization> | ||||
</author> | ||||
</front> | ||||
</reference> | ||||
<!-- I-D.ietf-ospf-segment-routing-extensions: I-D exists--> | ||||
<reference anchor="RFC8665" target="https://www.rfc-editor.org/info/rfc866 | ||||
5"> | ||||
<front> | ||||
<title>OSPF Extensions for Segment Routing</title> | ||||
<author initials='P' surname='Psenak' fullname='Peter Psenak' role="editor"> | ||||
<organization/> | ||||
</author> | ||||
<author initials='S' surname='Previdi' fullname='Stefano Previdi' role="editor"> | ||||
<organization/> | ||||
</author> | ||||
<author initials='C' surname='Filfils' fullname='Clarence Filsfils'> | ||||
<organization/> | ||||
</author> | ||||
<author initials='H' surname='Gredler' fullname='Hannes Gredler'> | ||||
<organization/> | ||||
</author> | ||||
<author initials='R' surname='Shakir' fullname='Rob Shakir'> | ||||
<organization/> | ||||
</author> | ||||
<author initials='W' surname='Henderickx' fullname='Wim Henderickx'> | ||||
<organization/> | ||||
</author> | ||||
<author initials='J' surname='Tantsura' fullname='Jeff Tantsura'> | ||||
<organization/> | ||||
</author> | ||||
<date month='December' year='2019'/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8665"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8665"/> | ||||
</reference> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7855.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.4552.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7166.xml"/> | ||||
</references> | ||||
</references> | ||||
<section anchor="Acknowledgements" numbered="false" toc="default"> | ||||
<name>Contributors</name> | ||||
<t>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=""><![CDATA[ | ||||
Clarence Filsfils | Clarence Filsfils | |||
Cisco Systems, Inc. | Cisco Systems, Inc. | |||
Brussels | Brussels | |||
Belgium | Belgium | |||
Email: cfilsfil@cisco.com | Email: cfilsfil@cisco.com]]></artwork> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
Hannes Gredler | Hannes Gredler | |||
RtBrick Inc. | RtBrick Inc. | |||
Austria | Austria | |||
Email: hannes@rtbrick.com | Email: hannes@rtbrick.com]]></artwork> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
Rob Shakir | Rob Shakir | |||
Google, Inc. | Google, Inc. | |||
1600 Amphitheatre Parkway | United States of America | |||
Mountain View, CA 94043 | ||||
US | ||||
Email: robjs@google.com | ||||
Email: robjs@google.com]]></artwork> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
Wim Henderickx | Wim Henderickx | |||
Nokia | Nokia | |||
Copernicuslaan 50 | Belgium | |||
Antwerp 2018 | ||||
BE | ||||
Email: wim.henderickx@nokia.com | ||||
Email: wim.henderickx@nokia.com]]></artwork> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
Jeff Tantsura | Jeff Tantsura | |||
Nuage Networks | Apstra, Inc. | |||
US | United States of America | |||
Email: jefftant.ietf@gmail.com | ||||
]]></artwork> | ||||
</figure></t> | ||||
Email: jefftant.ietf@gmail.com]]></artwork> | ||||
<t>Thanks to Acee Lindem for his substantial contribution to the content o f | <t>Thanks to Acee Lindem for his substantial contribution to the content o f | |||
this document.</t> | this document.</t> | |||
<t>We would like to thank Anton Smirnov for his contribution as well.</t> | <t>We would like to thank Anton Smirnov for his contribution as well.</t> | |||
</section> | </section> | |||
</middle> | ||||
<back> | ||||
<references title="Normative References"> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.211 | ||||
9.xml"?> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.534 | ||||
0.xml"?> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7770.xml"?> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6845.xml"?> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3101.xml"?> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5036.xml"?> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3031.xml"?> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8362.xml"?> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8402.xml"?> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8174.xml"?> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5462.xml"?> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference. | ||||
I-D.ietf-spring-segment-routing-ldp-interop.xml"?> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference. | ||||
I-D.ietf-spring-segment-routing-mpls.xml"?> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference | ||||
.I-D.ietf-ospf-segment-routing-extensions.xml"?> | ||||
<reference anchor="ALGOREG" target="https://www.iana.org/assignments/igp- | ||||
parameters/igp-parameters.xhtml#igp-algorithm-types"> | ||||
<front> | ||||
<title>IGP Algorithm Types</title> | ||||
<author> | ||||
</author> | ||||
<date/> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
<references title="Informative References"> | ||||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7855.xml"?> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.455 | ||||
2.xml"?> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.716 | ||||
6.xml"?> | ||||
</references> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 152 change blocks. | ||||
785 lines changed or deleted | 816 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |