rfc9513.original | rfc9513.txt | |||
---|---|---|---|---|
Link State Routing Z. Li | Internet Engineering Task Force (IETF) Z. Li | |||
Internet-Draft Z. Hu | Request for Comments: 9513 Z. Hu | |||
Intended status: Standards Track Huawei Technologies | Category: Standards Track Huawei Technologies | |||
Expires: 23 December 2023 K. Talaulikar, Ed. | ISSN: 2070-1721 K. Talaulikar, Ed. | |||
P. Psenak | P. Psenak | |||
Cisco Systems | Cisco Systems | |||
21 June 2023 | November 2023 | |||
OSPFv3 Extensions for SRv6 | OSPFv3 Extensions for Segment Routing over IPv6 (SRv6) | |||
draft-ietf-lsr-ospfv3-srv6-extensions-15 | ||||
Abstract | Abstract | |||
The Segment Routing (SR) architecture allows a flexible definition of | The Segment Routing (SR) architecture allows a flexible definition of | |||
the end-to-end path by encoding it as a sequence of topological | the end-to-end path by encoding it as a sequence of topological | |||
elements called segments. It can be implemented over an MPLS or IPv6 | elements called segments. It can be implemented over an MPLS or IPv6 | |||
data plane. This document describes the OSPFv3 extensions required | data plane. This document describes the OSPFv3 extensions required | |||
to support Segment Routing over the IPv6 data plane (SRv6). | to support SR over the IPv6 data plane. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 23 December 2023. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9513. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2023 IETF Trust and the persons identified as the | Copyright (c) 2023 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 4 | 1.1. Requirements Language | |||
2. SRv6 Capabilities TLV . . . . . . . . . . . . . . . . . . . . 4 | 2. SRv6 Capabilities TLV | |||
3. Advertisement of Supported Algorithms . . . . . . . . . . . . 5 | 3. Advertisement of Supported Algorithms | |||
4. Advertisement of Maximum SRv6 SID Depths . . . . . . . . . . 5 | 4. Advertisement of Maximum SRv6 SID Depths | |||
4.1. Maximum Segments Left MSD Type . . . . . . . . . . . . . 6 | 4.1. Maximum Segments Left MSD Type | |||
4.2. Maximum End Pop MSD Type . . . . . . . . . . . . . . . . 6 | 4.2. Maximum End Pop MSD Type | |||
4.3. Maximum H.Encaps MSD Type . . . . . . . . . . . . . . . . 6 | 4.3. Maximum H.Encaps MSD Type | |||
4.4. Maximum End D MSD Type . . . . . . . . . . . . . . . . . 6 | 4.4. Maximum End D MSD Type | |||
5. SRv6 SIDs and Reachability . . . . . . . . . . . . . . . . . 6 | 5. SRv6 SIDs and Reachability | |||
5.1. SRv6 Flexible Algorithm . . . . . . . . . . . . . . . . . 8 | 5.1. SRv6 Flexible Algorithm | |||
6. Advertisement of Anycast Property . . . . . . . . . . . . . . 9 | 6. Advertisement of Anycast Property | |||
7. SRv6 Locator LSA . . . . . . . . . . . . . . . . . . . . . . 10 | 7. SRv6 Locator LSA | |||
7.1. SRv6 Locator TLV . . . . . . . . . . . . . . . . . . . . 11 | 7.1. SRv6 Locator TLV | |||
7.2. SRv6 Locator Sub-TLVs . . . . . . . . . . . . . . . . . . 13 | 7.2. SRv6 Locator Sub-TLVs | |||
8. Advertisement of SRv6 End SIDs . . . . . . . . . . . . . . . 14 | 8. Advertisement of SRv6 End SIDs | |||
9. Advertisement of SRv6 SIDs Associated with Adjacencies . . . 15 | 9. Advertisement of SRv6 SIDs Associated with Adjacencies | |||
9.1. SRv6 End.X SID Sub-TLV . . . . . . . . . . . . . . . . . 16 | 9.1. SRv6 End.X SID Sub-TLV | |||
9.2. SRv6 LAN End.X SID Sub-TLV . . . . . . . . . . . . . . . 18 | 9.2. SRv6 LAN End.X SID Sub-TLV | |||
10. SRv6 SID Structure Sub-TLV . . . . . . . . . . . . . . . . . 19 | 10. SRv6 SID Structure Sub-TLV | |||
11. Advertising Endpoint Behaviors . . . . . . . . . . . . . . . 21 | 11. Advertising Endpoint Behaviors | |||
12. Security Considerations . . . . . . . . . . . . . . . . . . . 22 | 12. Security Considerations | |||
13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | 13. IANA Considerations | |||
13.1. OSPF Router Information TLVs . . . . . . . . . . . . . . 22 | 13.1. OSPF Router Information TLVs | |||
13.2. OSPFv3 LSA Function Codes . . . . . . . . . . . . . . . 23 | 13.2. OSPFv3 LSA Function Codes | |||
13.3. OSPFv3 Prefix Options . . . . . . . . . . . . . . . . . 23 | 13.3. OSPFv3 Prefix Options | |||
13.4. OSPFv3 SRv6 Capabilities TLV Flags . . . . . . . . . . . 23 | 13.4. OSPFv3 SRv6 Capabilities TLV Flags | |||
13.5. OSPFv3 SRv6 End SID Sub-TLV Flags . . . . . . . . . . . 23 | 13.5. OSPFv3 SRv6 End SID Sub-TLV Flags | |||
13.6. OSPFv3 SRv6 Adjacency SID Sub-TLV Flags . . . . . . . . 24 | 13.6. OSPFv3 SRv6 Adjacency SID Sub-TLV Flags | |||
13.7. OSPFv3 Extended-LSA Sub-TLVs . . . . . . . . . . . . . . 24 | 13.7. OSPFv3 Extended-LSA Sub-TLVs | |||
13.8. OSPFv3 SRv6 Locator LSA TLVs . . . . . . . . . . . . . . 24 | 13.8. OSPFv3 SRv6 Locator LSA TLVs | |||
13.9. OSPFv3 SRv6 Locator LSA Sub-TLVs . . . . . . . . . . . . 25 | 13.9. OSPFv3 SRv6 Locator LSA Sub-TLVs | |||
13.10. OSPFv3 Extended-LSA Sub-TLVs . . . . . . . . . . . . . . 26 | 13.10. OSPFv3 Extended-LSA Sub-TLVs | |||
14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 | 14. References | |||
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 | 14.1. Normative References | |||
15.1. Normative References . . . . . . . . . . . . . . . . . . 27 | 14.2. Informative References | |||
15.2. Informative References . . . . . . . . . . . . . . . . . 29 | Acknowledgements | |||
Authors' Addresses | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 | ||||
1. Introduction | 1. Introduction | |||
The Segment Routing (SR) architecture [RFC8402] specifies how a node | The Segment Routing (SR) architecture [RFC8402] specifies how a node | |||
can steer a packet using an ordered list of instructions, called | can steer a packet using an ordered list of instructions called | |||
segments. These segments are identified using Segment Identifiers | segments. These segments are identified using Segment Identifiers | |||
(SIDs). | (SIDs). | |||
Segment Routing can be instantiated on the IPv6 data plane through | SR can be instantiated on the IPv6 data plane through the use of the | |||
the use of the Segment Routing Header (SRH) defined in [RFC8754]. | Segment Routing Header (SRH) defined in [RFC8754]. SR instantiation | |||
Segment Routing instantiation on the IPv6 dataplane is referred to as | on the IPv6 data plane is referred to as SRv6. | |||
SRv6. | ||||
The network programming paradigm for SRv6 is specified in [RFC8986]. | The network programming paradigm for SRv6 is specified in [RFC8986]. | |||
It describes how any behavior can be bound to a SID and how any | It describes how any behavior can be bound to a SID and how any | |||
network program can be expressed as a combination of SIDs. It also | network program can be expressed as a combination of SIDs. It also | |||
describes several well-known behaviors that can be bound to SRv6 | describes several well-known behaviors that can be bound to SRv6 | |||
SIDs. | SIDs. | |||
This document specifies OSPFv3 extensions to support SRv6 | This document specifies OSPFv3 extensions to support SRv6 | |||
capabilities as defined in [RFC8986], [RFC8754], and [RFC9259]. The | capabilities as defined in [RFC8986], [RFC8754], and [RFC9259]. The | |||
extensions include advertisement of an OSPFv3 router's SRv6 | extensions include advertisement of an OSPFv3 router's SRv6 | |||
capabilities, SRv6 Locators, and required SRv6 SIDs along with their | capabilities, SRv6 Locators, and required SRv6 SIDs along with their | |||
supported endpoint behaviors. Familiarity with [RFC8986] is | supported Endpoint behaviors. Familiarity with [RFC8986] is | |||
necessary to understand the extensions specified in this document. | necessary to understand the extensions specified in this document. | |||
At a high level, the extensions to OSPFv3 are comprised of the | At a high level, the extensions to OSPFv3 are comprised of the | |||
following: | following: | |||
1. An SRv6 Capabilities TLV to advertise the SRv6 features and SRH | 1. An SRv6 Capabilities TLV to advertise the SRv6 features and SRH | |||
operations supported by an OSPFv3 router | operations supported by an OSPFv3 router. | |||
2. Several sub-TLVs to advertise various SRv6 Maximum SID Depths. | 2. Several sub-TLVs to advertise various SRv6 Maximum SID Depths. | |||
3. An SRv6 Locator TLV using an SRv6 Locator Link-State | 3. An SRv6 Locator TLV using an SRv6 Locator Link State | |||
Advertisement (LSA) to advertise the SRv6 Locator - a form of | Advertisement (LSA) to advertise the SRv6 Locator -- a form of | |||
summary address for the IGP algorithm-specific SIDs instantiated | summary address for the IGP algorithm-specific SIDs instantiated | |||
on an OSPFv3 router | on an OSPFv3 router. | |||
4. TLVs and Sub-TLVs to advertise the SRv6 SIDs instantiated on an | 4. TLVs and sub-TLVs to advertise the SRv6 SIDs instantiated on an | |||
OSPFv3 router along with their endpoint behaviors | OSPFv3 router along with their Endpoint behaviors. | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
2. SRv6 Capabilities TLV | 2. SRv6 Capabilities TLV | |||
The SRv6 Capabilities TLV is used by an OSPFv3 router to advertise | The SRv6 Capabilities TLV is used by an OSPFv3 router to advertise | |||
its support for the SR Segment Endpoint Node [RFC8754] functionality | its support for the SR Segment Endpoint Node [RFC8754] functionality | |||
along with its SRv6-related capabilities. This is an optional top | along with its SRv6-related capabilities. This is an optional top- | |||
level TLV of the OSPFv3 Router Information LSA [RFC7770] which MUST | level TLV of the OSPFv3 Router Information LSA [RFC7770] that MUST be | |||
be advertised by an SRv6-enabled router. | advertised by an SRv6-enabled router. | |||
This TLV MUST be advertised only once in the OSPFv3 Router | This TLV MUST be advertised only once in the OSPFv3 Router | |||
Information LSA. When multiple SRv6 Capabilities TLVs are received | Information LSA. When multiple SRv6 Capabilities TLVs are received | |||
from a given router, the receiver MUST use the first occurrence of | from a given router, the receiver MUST use the first occurrence of | |||
the TLV in the OSPFv3 Router Information LSA. If the SRv6 | the TLV in the OSPFv3 Router Information LSA. If the SRv6 | |||
Capabilities TLV appears in multiple OSPFv3 Router Information LSAs | Capabilities TLV appears in multiple OSPFv3 Router Information LSAs | |||
that have different flooding scopes, the TLV in the OSPFv3 Router | that have different flooding scopes, the TLV in the OSPFv3 Router | |||
Information LSA with the area-scoped flooding scope MUST be used. If | Information LSA with the area-scoped flooding scope MUST be used. If | |||
the SRv6 Capabilities TLV appears in multiple OSPFv3 Router | the SRv6 Capabilities TLV appears in multiple OSPFv3 Router | |||
Information LSAs that have the same flooding scope, the TLV in the | Information LSAs that have the same flooding scope, the TLV in the | |||
OSPFv3 Router Information LSA with the numerically smallest Link | OSPFv3 Router Information LSA with the numerically smallest Link | |||
State ID MUST be used and subsequent instances of the TLV MUST be | State ID MUST be used, and subsequent instances of the TLV MUST be | |||
ignored. | ignored. | |||
The OSPFv3 Router Information LSA can be advertised at any of the | The OSPFv3 Router Information LSA can be advertised at any of the | |||
defined flooding scopes (link, area, or Autonomous System (AS)). For | defined flooding scopes (link, area, or Autonomous System (AS)). For | |||
the purpose of SRv6 Capabilities TLV advertisement, area-scoped | the purpose of SRv6 Capabilities TLV advertisement, area-scoped | |||
flooding is REQUIRED. Link and AS-scoped flooding is OPTIONAL. | flooding is REQUIRED. Link and AS-scoped flooding is OPTIONAL. | |||
The format of OSPFv3 SRv6 Capabilities TLV is shown below: | The format of the OSPFv3 SRv6 Capabilities TLV is shown below: | |||
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 | Reserved | | | Flags | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sub-TLVs... | | Sub-TLVs... | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 1: SRv6 Capabilities TLV | Figure 1: SRv6 Capabilities TLV | |||
Where: | where: | |||
* Type: 2-octet field. The value for this type is 20. | Type: 2-octet field. The value for this type is 20. | |||
* Length: 2-octet field. The total length (in octets) of the value | Length: 2-octet field. The total length (in octets) of the value | |||
portion of the TLV including nested Sub-TLVs. | portion of the TLV, including nested sub-TLVs. | |||
* Reserved: 2-octet field. It MUST be set to 0 on transmission and | Reserved: 2-octet field. It MUST be set to 0 on transmission and | |||
MUST be ignored on receipt. | MUST be ignored on receipt. | |||
* Flags: 2-octet field. The flags are defined as follows: | Flags: 2-octet field. The flags are defined as follows: | |||
0 1 | 0 1 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |O| | | | |O| | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
where: | where: | |||
- O-flag: If set, then the router is capable of supporting the | O-flag: If set, then the router is capable of supporting the | |||
O-bit in the SRH flags, as specified in [RFC9259]. | O-flag in the SRH flags, as specified in [RFC9259]. | |||
- Other flags are not defined and are reserved for future use. | Other flags are not defined and are reserved for future use. | |||
They MUST be set to 0 on transmission and MUST be ignored on | They MUST be set to 0 on transmission and MUST be ignored on | |||
receipt. | receipt. | |||
The SRv6 Capabilities TLV may contain optional Sub-TLVs. No Sub-TLVs | The SRv6 Capabilities TLV may contain optional sub-TLVs. No sub-TLVs | |||
are defined in this specification. | are defined in this specification. | |||
3. Advertisement of Supported Algorithms | 3. Advertisement of Supported Algorithms | |||
An SRv6-enabled OSPFv3 router advertises its algorithm support using | An SRv6-enabled OSPFv3 router advertises its algorithm support using | |||
the SR-Algorithm TLV defined in [RFC8665] as described in [RFC8666]. | the SR-Algorithm TLV defined in [RFC8665] and as described in | |||
[RFC8666]. | ||||
4. Advertisement of Maximum SRv6 SID Depths | 4. Advertisement of Maximum SRv6 SID Depths | |||
An SRv6-enabled router may have different capabilities and limits | An SRv6-enabled router may have different capabilities and limits | |||
related to SRH processing and these need to be advertised to other | related to SRH processing. These need to be advertised to other | |||
OSPFv3 routers in the SRv6 domain. | OSPFv3 routers in the SRv6 domain. | |||
[RFC8476] defines the means to advertise node and link specific | [RFC8476] defines the means to advertise node- and link-specific | |||
values for Maximum SID Depth (MSD) types. Node MSDs are advertised | values for Maximum SID Depth (MSD) types. Node MSDs are advertised | |||
using the Node MSD TLV in the OSPFv3 Router Information LSA [RFC7770] | using the Node MSD TLV in the OSPFv3 Router Information LSA | |||
while Link MSDs are advertised using the Link MSD Sub-TLV of the | [RFC7770], while Link MSDs are advertised using the Link MSD sub-TLV | |||
Router-Link TLV [RFC8362]. The format of the MSD types for OSPFv3 is | of the Router-Link TLV [RFC8362]. The format of the MSD types for | |||
defined in [RFC8476]. | OSPFv3 is defined in [RFC8476]. | |||
The MSD types for SRv6 that are defined in section 4 of [RFC9352] for | The MSD types for SRv6 that are defined in Section 4 of [RFC9352] for | |||
IS-IS are also used by OSPFv3. These MSD Types are allocated under | IS-IS are also used by OSPFv3. These MSD types are allocated in the | |||
the IGP MSD Types registry maintained by IANA that are shared by IS- | "IGP MSD-Types" registry maintained by IANA and are shared by IS-IS | |||
IS and OSPF. They are described below: | and OSPF. They are described in the subsections below. | |||
4.1. Maximum Segments Left MSD Type | 4.1. Maximum Segments Left MSD Type | |||
The Maximum Segments Left MSD Type signals the maximum value of the | The Maximum Segments Left MSD Type signals the maximum value of the | |||
"Segments Left" field of the SRH of a received packet before applying | Segments Left field of the SRH of a received packet before applying | |||
the Endpoint behavior associated with a SID. If no value is | the Endpoint behavior associated with a SID. If no value is | |||
advertised, the supported value is assumed to be 0. | advertised, the supported value is assumed to be 0. | |||
4.2. Maximum End Pop MSD Type | 4.2. Maximum End Pop MSD Type | |||
The Maximum End Pop MSD Type signals the maximum number of SIDs in | The Maximum End Pop MSD Type signals the maximum number of SIDs in | |||
the SRH to which the router can apply "Penultimate Segment Pop (PSP) | the SRH to which the router can apply "Penultimate Segment Pop (PSP) | |||
of the SRH" or "Ultimate Segment Pop (USP) of the SRH", as defined in | of the SRH" or "Ultimate Segment Pop (USP) of the SRH", which are | |||
[RFC8986] flavors. If the advertised value is zero or no value is | flavors defined in [RFC8986]. If the advertised value is zero or no | |||
advertised, then the router cannot apply PSP or USP flavors. | value is advertised, then the router cannot apply the PSP or USP | |||
flavors. | ||||
4.3. Maximum H.Encaps MSD Type | 4.3. Maximum H.Encaps MSD Type | |||
The Maximum H.Encaps MSD Type signals the maximum number of SIDs that | The Maximum H.Encaps MSD Type signals the maximum number of SIDs that | |||
can be added as part of the "H.Encaps" behavior as defined in | can be added as part of the H.Encaps behavior as defined in | |||
[RFC8986]. If the advertised value is zero or no value is advertised | [RFC8986]. If the advertised value is zero or no value is | |||
then the headend can apply an SR Policy that only contains one | advertised, then the headend can apply an SR Policy that only | |||
segment, without inserting any SRH. A non-zero SRH Max H.encaps MSD | contains one segment without inserting any SRH. A non-zero SRH Max | |||
indicates that the headend can insert an SRH with SIDs up to the | H.Encaps MSD indicates that the headend can insert an SRH with SIDs | |||
advertised value. | up to the advertised value. | |||
4.4. Maximum End D MSD Type | 4.4. Maximum End D MSD Type | |||
The Maximum End D MSD Type specifies the maximum number of SIDs | The Maximum End D MSD Type specifies the maximum number of SIDs | |||
present in an SRH when performing decapsulation. These include, but | present in an SRH when performing decapsulation. These include, but | |||
are not limited to, End.DX6, End.DT4, End.DT46, End with USD, and | are not limited to, End.DX6, End.DT4, End.DT46, End with USD, and | |||
End.X with USD as defined in [RFC8986]. If the advertised value is | End.X with USD as defined in [RFC8986]. If the advertised value is | |||
zero or no value is advertised, then the router cannot apply any | zero or no value is advertised, then the router cannot apply any | |||
behavior that results in decapsulation and forwarding of the inner | behavior that results in decapsulation and forwarding of the inner | |||
packet when the outer IPv6 header contains an SRH. | packet when the outer IPv6 header contains an SRH. | |||
5. SRv6 SIDs and Reachability | 5. SRv6 SIDs and Reachability | |||
An SRv6 Segment Identifier (SID) is 128 bits and consists of Locator, | An SRv6 SID is 128 bits and consists of locator, function, and | |||
Function, and Argument parts as described in [RFC8986]. | argument parts as described in [RFC8986]. | |||
An OSPFv3 router is provisioned with algorithm-specific locators for | An OSPFv3 router is provisioned with algorithm-specific locators for | |||
each algorithm supported by that router. Each locator is a covering | each algorithm supported by that router. Each locator is a covering | |||
prefix for all SIDs provisioned on that router that have the matching | prefix for all SIDs provisioned on that router that have the matching | |||
algorithm. | algorithm. | |||
Locators MUST be advertised within an SRv6 Locator TLV (see | Locators MUST be advertised within an SRv6 Locator TLV (see | |||
Section 7.1) using an SRv6 Locator LSA (see Section 7). The SRv6 | Section 7.1) using an SRv6 Locator LSA (see Section 7). The SRv6 | |||
Locator LSA is introduced instead of reusing the respective Extended | Locator LSA is introduced instead of reusing the respective Extended | |||
Prefix LSAs [RFC8362] for a clear distinction between the two | Prefix LSAs [RFC8362] for a clear distinction between the two | |||
different types of reachability advertisements (viz., the base OSPFv3 | different types of reachability advertisements (viz., the base OSPFv3 | |||
prefix reachability advertisements and the SRv6 Locator reachability | prefix reachability advertisements and the SRv6 Locator reachability | |||
advertisements). | advertisements). | |||
Forwarding entries for the locators advertised in the SRv6 Locator | Forwarding entries for the locators advertised in the SRv6 Locator | |||
TLV MUST be installed in the forwarding plane of receiving | TLV MUST be installed in the forwarding plane of receiving | |||
SRv6-capable routers when the associated algorithm is supported by | SRv6-capable routers when the associated algorithm is supported by | |||
the receiving OSPFv3 router. Locators can be of different route | the receiving OSPFv3 router. Locators can be of different route | |||
types that map to existing OSPFv3 LSA types - Intra-Area, Inter-Area, | types that map to existing OSPFv3 LSA types: Intra-Area, Inter-Area, | |||
External, and NSSA. The advertisement and propagation of the SRv6 | External, and Not-So-Stubby Area (NSSA). The advertisement and | |||
Locator LSAs also follow the OSPFv3 [RFC5340] specifications for the | propagation of the SRv6 Locator LSAs also follow the OSPFv3 [RFC5340] | |||
respective LSA types. The processing of the prefix advertised in the | specifications for the respective LSA types. The processing of the | |||
SRv6 Locator TLV, the calculation of its reachability, and the | prefix advertised in the SRv6 Locator TLV, the calculation of its | |||
installation in the forwarding plane follows the OSPFv3 [RFC5340] | reachability, and the installation in the forwarding plane follows | |||
specifications for the respective LSA types. | the OSPFv3 [RFC5340] specifications for the respective LSA types. | |||
Locators associated with algorithms 0 and 1 (refer section 3.1.1 of | Locators associated with algorithms 0 and 1 (refer to Section 3.1.1 | |||
[RFC8402]) SHOULD also be advertised using OSPFv3 Extended LSA types | of [RFC8402]) SHOULD also be advertised using Extended LSA types with | |||
with extended TLVs [RFC8362] so that routers that do not support SRv6 | extended TLVs [RFC8362] so that routers that do not support SRv6 will | |||
will install a forwarding entry for SRv6 traffic matching those | install a forwarding entry for SRv6 traffic matching those locators. | |||
locators. When operating in Extended LSA sparse-mode [RFC8362], | When operating in Extended LSA sparse-mode [RFC8362], these locators | |||
these locators SHOULD be also advertised using legacy OSPFv3 LSAs | SHOULD also be advertised using Legacy LSAs [RFC5340]. | |||
[RFC5340]. | ||||
When SRv6 Locators are also advertised as Intra-Area-Prefix-LSAs and/ | When SRv6 Locators are also advertised as Intra-Area-Prefix-LSAs and/ | |||
or E-Intra-Area-Prefix-LSAs, the SRv6 Locator MUST be considered as a | or E-Intra-Area-Prefix-LSAs, the SRv6 Locator MUST be considered as a | |||
prefix associated with the router and the referenced LSA type MUST | prefix associated with the router, and the referenced LSA type MUST | |||
point to the Router LSA of the advertising router as specified in | point to the Router LSA of the advertising router as specified in | |||
Section 4.4.3.9 of [RFC5340]. | Section 4.4.3.9 of [RFC5340]. | |||
In cases where a locator advertisement is received both in a prefix | In cases where a locator advertisement is received both in a prefix | |||
reachability advertisement (i.e., via legacy OSPFv3 LSAs and/or | reachability advertisement (i.e., via Legacy LSAs and/or Extended | |||
Extended Prefix TLVs using OSPFv3 Extended LSAs) and an SRv6 Locator | Prefix TLVs using Extended LSAs) and an SRv6 Locator TLV, the prefix | |||
TLV, the prefix reachability advertisement in the OSPFv3 legacy LSA | reachability advertisement in the Legacy LSA or Extended LSA MUST be | |||
or Extended LSA MUST be preferred over the advertisement in the SRv6 | preferred over the advertisement in the SRv6 Locator TLV when | |||
Locator TLV when installing entries in the forwarding plane. This is | installing entries in the forwarding plane. This prevents | |||
to prevent inconsistent forwarding entries between SRv6 capable and | inconsistent forwarding entries between SRv6-capable and | |||
SRv6 incapable OSPFv3 routers. Such preference for prefix | SRv6-incapable OSPFv3 routers. Such preference for prefix | |||
reachability advertisement does not have any impact on the rest of | reachability advertisement does not have any impact on the rest of | |||
the data advertised in the SRv6 Locator TLV. | the data advertised in the SRv6 Locator TLV. | |||
SRv6 SIDs are advertised as Sub-TLVs in the SRv6 Locator TLV except | SRv6 SIDs are advertised as sub-TLVs in the SRv6 Locator TLV except | |||
for SRv6 End.X SIDs/LAN End.X SIDs which are associated with a | for SRv6 End.X SIDs and LAN End.X SIDs, which are associated with a | |||
specific Neighbor/Link and are therefore advertised as Sub-TLVs of | specific neighbor/link and are therefore advertised as sub-TLVs of | |||
the E-Router-Link TLV. | the E-Router-Link TLV. | |||
SRv6 SIDs received from other OSFPv3 routers are not directly | SRv6 SIDs received from other OSFPv3 routers are not directly | |||
routable and MUST NOT be installed in the forwarding plane. | routable and MUST NOT be installed in the forwarding plane. | |||
Reachability to SRv6 SIDs depends upon the existence of a covering | Reachability to SRv6 SIDs depends upon the existence of a covering | |||
locator. | locator. | |||
Adherence to the rules defined in this section will ensure that SRv6 | Adherence to the rules defined in this section will ensure that SRv6 | |||
SIDs associated with a supported algorithm will be forwarded | SIDs associated with a supported algorithm will be forwarded | |||
correctly, while SRv6 SIDs associated with an unsupported algorithm | correctly, while SRv6 SIDs associated with an unsupported algorithm | |||
will be dropped. NOTE: The drop behavior depends on the absence of a | will be dropped. | |||
default/summary route matching the locator prefix. | ||||
| NOTE: The drop behavior depends on the absence of a default/ | ||||
| summary route matching the locator prefix. | ||||
If the locator associated with SRv6 SID advertisements is the longest | If the locator associated with SRv6 SID advertisements is the longest | |||
prefix match installed in the forwarding plane for those SIDs, this | prefix match installed in the forwarding plane for those SIDs, this | |||
will ensure correct forwarding. Network operators should take steps | will ensure correct forwarding. Network operators should take steps | |||
to make sure that this requirement is not compromised. For example, | to make sure that this requirement is not compromised. For example, | |||
the following situations should be avoided: | the following situations should be avoided: | |||
* Another locator associated with a different algorithm is the | * Another locator associated with a different algorithm is the | |||
longest prefix match | longest prefix match. | |||
* Another prefix advertised via OSPFv3 legacy or Extended LSA | * Another prefix advertised via Legacy or Extended LSA advertisement | |||
advertisement is the longest prefix match | is the longest prefix match. | |||
5.1. SRv6 Flexible Algorithm | 5.1. SRv6 Flexible Algorithm | |||
[RFC9350] specifies IGP Flexible Algorithm mechanisms for OSPFv3. | [RFC9350] specifies IGP Flexible Algorithm mechanisms for OSPFv3. | |||
Section 14.2 of [RFC9350] explains SRv6 forwarding for Flexible | Section 14.2 of [RFC9350] explains SRv6 forwarding for Flexible | |||
Algorithm and analogous procedures apply for supporting SRv6 Flexible | Algorithms, and analogous procedures apply for supporting SRv6 | |||
Algorithm using OSPFv3. When the algorithm value that is advertised | Flexible Algorithms using OSPFv3. When the algorithm value that is | |||
in the SRv6 Locator TLV (refer to Section 7.1) represents a Flexible | advertised in the SRv6 Locator TLV (refer to Section 7.1) represents | |||
Algorithm, the procedures described in section 14.2 of [RFC9350] are | a Flexible Algorithm, the procedures described in Section 14.2 of | |||
followed for the programming of those specific SRv6 Locators. | [RFC9350] are followed for the programming of those specific SRv6 | |||
Locators. | ||||
Locators associated with Flexible Algorithms SHOULD NOT be advertised | Locators associated with Flexible Algorithms SHOULD NOT be advertised | |||
in the base OSPFv3 prefix reachability advertisements. Advertising | in the base OSPFv3 prefix reachability advertisements. Advertising | |||
the Flexible Algorithm locator in a regular prefix reachability | the Flexible Algorithm locator in a regular prefix reachability | |||
advertisement would make it available for non-Flexible Algorithm | advertisement would make it available for non-Flexible Algorithm | |||
forwarding (i.e., algorithm 0). | forwarding (i.e., algorithm 0). | |||
The procedures for OSPFv3 Flexible Algorithm for SR-MPLS, as | The procedures for OSPFv3 Flexible Algorithm for SR-MPLS, as | |||
specified in [RFC9350], like ASBR reachability, inter-area, external, | specified in [RFC9350], also apply for SRv6; these procedures include | |||
and NSSA prefix advertisements and their use in Flexible Algorithm | a) ASBR reachability, b) inter-area, external, and NSSA prefix | |||
route computation also apply for SRv6. | advertisements, and c) the use of those prefix advertisements in | |||
Flexible Algorithm route computation. | ||||
6. Advertisement of Anycast Property | 6. Advertisement of Anycast Property | |||
Both prefixes and SRv6 Locators may be configured as anycast and as | Both prefixes and SRv6 Locators may be configured as anycast, and as | |||
such the same value can be advertised by multiple routers. It is | such, the same value can be advertised by multiple routers. It is | |||
useful for other routers to know that the advertisement is for an | useful for other routers to know that the advertisement is for an | |||
anycast identifier. | anycast identifier. | |||
A new bit in OSPFv3 PrefixOptions [RFC5340] is defined to advertise | The AC-bit (value 0x80) in the OSPFv3 PrefixOptions field [RFC5340] | |||
the anycast property: | is defined to advertise the anycast property: | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+ | |||
|AC|EL| N|DN| P| x|LA|NU| | |AC|EL| N|DN| P| x|LA|NU| | |||
+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+ | |||
Figure 2: OSPFv3 Prefix Options Field | Figure 2: OSPFv3 Prefix Options Field | |||
Value: 0x80 | ||||
Description: Anycast (AC-bit) | ||||
When the prefix/SRv6 Locator is configured as anycast, the AC-bit | When the prefix/SRv6 Locator is configured as anycast, the AC-bit | |||
MUST be set. Otherwise, this flag MUST be clear. | MUST be set. Otherwise, this flag MUST be clear. | |||
The AC-bit MUST be preserved when re-advertising the prefix/SRv6 | The AC-bit MUST be preserved when re-advertising the prefix/SRv6 | |||
Locator across areas. | Locator across areas. | |||
The AC-bit and the N-bit MUST NOT both be set. If both N-bit and AC- | The AC-bit and the N-bit MUST NOT both be set. If the N-bit and AC- | |||
bit are set in the prefix/SRv6 Locator advertisement, the receiving | bit are both set in the prefix/SRv6 Locator advertisement, the | |||
routers MUST ignore the N-bit. | receiving routers MUST ignore the N-bit. | |||
The same prefix/SRv6 Locator can be advertised by multiple routers. | The same prefix/SRv6 Locator can be advertised by multiple routers. | |||
If at least one of them sets the AC-bit in its advertisement, the | If at least one of them sets the AC-bit in its advertisement, the | |||
prefix/SRv6 Locator is considered as anycast. | prefix/SRv6 Locator is considered as anycast. | |||
A prefix/SRv6 Locator that is advertised by a single node and without | A prefix/SRv6 Locator that is advertised by a single node and without | |||
an AC-bit is considered node-specific. | an AC-bit is considered node-specific. | |||
All the nodes advertising the same anycast SRv6 Locator MUST | All the nodes advertising the same anycast SRv6 Locator MUST | |||
instantiate the exact same set of SIDs under that anycast SRv6 | instantiate the exact same set of SIDs under that anycast SRv6 | |||
Locator. Failure to do so may result in traffic being dropped or | Locator. Failure to do so may result in traffic being dropped or | |||
misrouted. | misrouted. | |||
The PrefixOptions field is common to the prefix reachability | The PrefixOptions field is common to the prefix reachability | |||
advertisements (i.e., the base OSPFv3 prefix LSA types defined in | advertisements (i.e., the base OSPFv3 prefix LSA types defined in | |||
[RFC5340] and the OSPFv3 Extended Prefix TLV types defined in | [RFC5340], the OSPFv3 Extended Prefix TLV types defined in | |||
[RFC8362]) and the SRv6 Locator TLV advertisements specified in | [RFC8362]), and the SRv6 Locator TLV advertisements specified in | |||
Section 7.1 of this document. When a router originates both the | Section 7.1 of this document. When a router originates both the | |||
prefix reachability advertisement and the SRv6 Locator advertisement | prefix reachability advertisement and the SRv6 Locator advertisement | |||
for a given prefix, the router SHOULD advertise the same | for a given prefix, the router SHOULD advertise the same | |||
PrefixOptions bits in both advertisements. In the case of any | PrefixOptions bits in both advertisements. In the case of any | |||
inconsistency between the PrefixOptions advertised in the SRv6 | inconsistency between the PrefixOptions advertised in the SRv6 | |||
Locator and in the prefix reachability advertisements, the ones | Locator and in the prefix reachability advertisements, the ones | |||
advertised in prefix reachability advertisement MUST be preferred. | advertised in the prefix reachability advertisement MUST be | |||
preferred. | ||||
7. SRv6 Locator LSA | 7. SRv6 Locator LSA | |||
The SRv6 Locator LSA has a function code of 42. The S1/S2 bits are | The SRv6 Locator LSA has a function code of 42. The S1/S2 bits are | |||
dependent on the desired flooding scope for the LSA. The flooding | dependent on the desired flooding scope for the LSA. The flooding | |||
scope of the SRv6 Locator LSA depends on the scope of the advertised | scope of the SRv6 Locator LSA depends on the scope of the advertised | |||
SRv6 Locator and is under the control of the advertising router. The | SRv6 Locator and is under the control of the advertising router. The | |||
U-bit will be set indicating that the LSA should be flooded even if | U-bit will be set indicating that the LSA should be flooded even if | |||
it is not understood. | it is not understood. | |||
Multiple SRv6 Locator LSAs can be advertised by an OSPFv3 router and | Multiple SRv6 Locator LSAs can be advertised by an OSPFv3 router, and | |||
they are distinguished by their Link State IDs (which are chosen | they are distinguished by their Link State IDs (which are chosen | |||
arbitrarily by the originating router). | arbitrarily by the originating router). | |||
The format of SRv6 Locator LSA is shown below: | The format of the SRv6 Locator LSA is shown below: | |||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| LS age |U|S12| Function Code | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Link State ID | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Advertising Router | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| LS sequence number | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| LS checksum | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
+- TLVs -+ | ||||
| ... | | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| LS age |U|S12| Function Code | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Link State ID | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Advertising Router | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| LS sequence number | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| LS checksum | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
+- TLVs -+ | ||||
| ... | | ||||
Figure 3: SRv6 Locator LSA | Figure 3: SRv6 Locator LSA | |||
The format of the TLVs within the body of the SRv6 Locator LSA is the | The format of the TLVs within the body of the SRv6 Locator LSA is the | |||
same as the format used by [RFC3630]. The variable TLV section | same as the format used by [RFC3630]. The variable TLV section | |||
consists of one or more nested TLV tuples. Nested TLVs are also | consists of one or more nested TLV tuples. Nested TLVs are also | |||
referred to as Sub-TLVs. The format of each TLV is: | referred to as sub-TLVs. The format of each TLV is: | |||
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 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Value... | | | Value... | | |||
. . | . . | |||
. . | . . | |||
. . | . . | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 4: SRv6 Locator LSA TLV Format | Figure 4: SRv6 Locator LSA TLV Format | |||
The Length field defines the length of the value portion in octets | The Length field defines the length of the value portion in octets | |||
(thus, a TLV with no value portion would have a length of 0). The | (thus, a TLV with no value portion would have a length of 0). The | |||
TLV is padded to 4-octet alignment; padding is not included in the | TLV is padded to 4-octet alignment; padding is not included in the | |||
Length field (so a 3-octet value would have a length of 3, but the | Length field (so a 3-octet value would have a length of 3, but the | |||
total size of the TLV would be 8 octets). Nested TLVs are also | total size of the TLV would be 8 octets). Nested TLVs are also | |||
32-bit aligned. For example, a 1-byte value would have the Length | 32-bit aligned. For example, a 1-byte value would have the Length | |||
field set to 1 and 3 octets of padding would be added to the end of | field set to 1, and 3 octets of padding would be added to the end of | |||
the value portion of the TLV. The padding is composed of zeros. | the value portion of the TLV. The padding is composed of zeros. | |||
7.1. SRv6 Locator TLV | 7.1. SRv6 Locator TLV | |||
The SRv6 Locator TLV is a top-level TLV of the SRv6 Locator LSA that | The SRv6 Locator TLV is a top-level TLV of the SRv6 Locator LSA that | |||
is used to advertise an SRv6 Locator, its attributes, and SIDs | is used to advertise an SRv6 Locator, its attributes, and SIDs | |||
associated with it. Multiple SRv6 Locator TLVs MAY be advertised in | associated with it. Multiple SRv6 Locator TLVs MAY be advertised in | |||
each SRv6 Locator LSA. However, since the S12 bits define the | each SRv6 Locator LSA. However, since the S12 bits define the | |||
flooding scope, the LSA flooding scope has to satisfy the | flooding scope, the LSA flooding scope has to satisfy the | |||
application-specific requirements for all the locators included in a | application-specific requirements for all the locators included in a | |||
single SRv6 Locator LSA. | single SRv6 Locator LSA. | |||
When multiple SRv6 Locator TLVs are received from a given router in | When multiple SRv6 Locator TLVs are received from a given router in | |||
an SRv6 Locator LSA for the same Locator, the receiver MUST use the | an SRv6 Locator LSA for the same locator, the receiver MUST use the | |||
first occurrence of the TLV in the LSA. If the SRv6 Locator TLV for | first occurrence of the TLV in the LSA. If the SRv6 Locator TLV for | |||
the same Locator appears in multiple SRv6 Locator LSAs that have | the same locator appears in multiple SRv6 Locator LSAs that have | |||
different flooding scopes, the TLV in the SRv6 Locator LSA with the | different flooding scopes, the TLV in the SRv6 Locator LSA with the | |||
area-scoped flooding scope MUST be used. If the SRv6 Locator TLV for | area-scoped flooding scope MUST be used. If the SRv6 Locator TLV for | |||
the same Locator appears in multiple SRv6 Locator LSAs that have the | the same locator appears in multiple SRv6 Locator LSAs that have the | |||
same flooding scope, the TLV in the SRv6 Locator LSA with the | same flooding scope, the TLV in the SRv6 Locator LSA with the | |||
numerically smallest Link-State ID MUST be used and subsequent | numerically smallest Link State ID MUST be used, and subsequent | |||
instances of the TLV MUST be ignored. | instances of the TLV MUST be ignored. | |||
The format of SRv6 Locator TLV is shown below: | The format of the SRv6 Locator TLV is shown below: | |||
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 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Route Type | Algorithm | Locator Length| PrefixOptions | | | Route Type | Algorithm | Locator Length| PrefixOptions | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Metric | | | Metric | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Locator (up to 16 octets) ... | | | Locator (up to 16 octets) ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ... Locator continued ... | | | ... Locator continued ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ... Locator continued ... | | | ... Locator continued ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ... Locator concluded | | | ... Locator concluded | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sub-TLVs (variable) | | | Sub-TLVs (variable) | | |||
+- -+ | +- -+ | |||
| ... | | | ... | | |||
Figure 5: SRv6 Locator TLV | Figure 5: SRv6 Locator TLV | |||
Where: | where: | |||
Type: 2-octet field. The value for this type is 1. | Type: 2-octet field. The value for this type is 1. | |||
Length: 2-octet field. The total length (in octets) of the value | Length: 2-octet field. The total length (in octets) of the value | |||
portion of the TLV including nested Sub-TLVs. | portion of the TLV, including nested sub-TLVs. | |||
Route Type: 1-octet field. The type of the locator route. The | Route Type: 1-octet field. The type of the locator route. The only | |||
only supported types are the ones listed below and the SRv6 | supported types are the ones listed below, and the SRv6 Locator | |||
Locator TLV MUST be ignored on receipt of any other type. | TLV MUST be ignored on receipt of any other type. | |||
1 - Intra-Area | 1: Intra-Area | |||
2 - Inter-Area | 2: Inter-Area | |||
3 - AS External Type 1 | 3: AS External Type 1 | |||
4 - AS External Type 2 | 4: AS External Type 2 | |||
5 - NSSA External Type 1 | 5: NSSA External Type 1 | |||
6 - NSSA External Type 2 | 6: NSSA External Type 2 | |||
Algorithm: 1-octet field. The algorithm associated with the SRv6 | Algorithm: 1-octet field. The algorithm associated with the SRv6 | |||
Locator. Algorithm values are defined in the IGP Algorithm Type | Locator. Algorithm values are defined in the "IGP Algorithm | |||
registry [RFC8665]. | Types" registry [RFC8665]. | |||
Locator Length: 1-octet field. Specifies the length of the | Locator Length: 1-octet field. Specifies the length of the locator | |||
Locator prefix as the number of locator bits from the range | prefix as the number of locator bits from the range (1-128). | |||
(1-128). | ||||
PrefixOptions: 1-octet field. Specifies the prefix options bits/ | PrefixOptions: 1-octet field. Specifies the prefix options bits/ | |||
flags as specified in [RFC5340] and further extended by [RFC8362] | flags as specified in [RFC5340] and further extended by [RFC8362] | |||
and Section 6 of this document. | and Section 6 of this document. | |||
Metric: 4-octet field. The metric value associated with the SRv6 | Metric: 4-octet field. The metric value associated with the SRv6 | |||
Locator. The metric value of 0xFFFFFFFF MUST be considered as | Locator. The metric value of 0xFFFFFFFF MUST be considered as | |||
unreachable. | unreachable. | |||
Locator: Up to 16-octet field. This field encodes the advertised | Locator: 1-16 octets. This field encodes the advertised SRv6 | |||
SRv6 Locator as an IPv6 Prefix as specified in section A.4.1 of | Locator as an IPv6 Prefix as specified in Appendix A.4.1 of | |||
[RFC5340]. | [RFC5340]. | |||
Sub-TLVs: Used to advertise Sub-TLVs that provide additional | Sub-TLVs: Used to advertise sub-TLVs that provide additional | |||
attributes for the given SRv6 Locator and SRv6 SIDs associated | attributes for the given SRv6 Locator and SRv6 SIDs associated | |||
with the SRv6 Locator. | with the SRv6 Locator. | |||
7.2. SRv6 Locator Sub-TLVs | 7.2. SRv6 Locator Sub-TLVs | |||
The following OSPFv3 Extended-LSA sub-TLVs corresponding to the | The following OSPFv3 Extended-LSA sub-TLVs corresponding to the | |||
Extended Prefix LSAs are also applicable for use as sub-TLVs of the | Extended Prefix LSAs are also applicable for use as sub-TLVs of the | |||
SRv6 Locator TLV using code points as specified in Section 13.9: | SRv6 Locator TLV using code points as specified in Section 13.9: | |||
* IPv6-Forwarding-Address sub-TLV [RFC8362] | * IPv6-Forwarding-Address sub-TLV [RFC8362] | |||
* Route-Tag sub-TLV [RFC8362] | * Route-Tag sub-TLV [RFC8362] | |||
* Prefix Source OSPF Router-ID sub-TLV [RFC9084] | * Prefix Source OSPF Router-ID sub-TLV [RFC9084] | |||
* Prefix Source Router Address sub-TLV [RFC9084] | * Prefix Source Router Address sub-TLV [RFC9084] | |||
8. Advertisement of SRv6 End SIDs | 8. Advertisement of SRv6 End SIDs | |||
The SRv6 End SID Sub-TLV is a Sub-TLV of the SRv6 Locator TLV in the | The SRv6 End SID sub-TLV is a sub-TLV of the SRv6 Locator TLV in the | |||
SRv6 Locator LSA (defined in Section 7). It is used to advertise the | SRv6 Locator LSA (defined in Section 7). It is used to advertise the | |||
SRv6 SIDs belonging to the router along with their associated | SRv6 SIDs belonging to the router along with their associated | |||
endpoint behaviors. SIDs associated with adjacencies are advertised | Endpoint behaviors. SIDs associated with adjacencies are advertised | |||
as described in Section 9. Every SRv6-enabled OSPFv3 router SHOULD | as described in Section 9. Every SRv6-enabled OSPFv3 router SHOULD | |||
advertise at least one SRv6 SID associated with an END behavior for | advertise at least one SRv6 SID associated with an End behavior for | |||
itself as specified in [RFC8986], although it MAY omit doing so if | itself as specified in [RFC8986], although it MAY omit doing so if | |||
that node is not going to be used as a Segment Endpoint (e.g., for TE | that node is not going to be used as a Segment Endpoint (e.g., for TE | |||
or TI-LFA) by any SR Source Node. | or Topology Independent Loop-Free Alternate (TI-LFA)) by any SR | |||
Source Node. | ||||
SRv6 End SIDs inherit the algorithm from the parent locator. The | SRv6 End SIDs inherit the algorithm from the parent locator. The | |||
SRv6 End SID MUST be allocated from its associated locator. SRv6 End | SRv6 End SID MUST be allocated from its associated locator. SRv6 End | |||
SIDs that are NOT allocated from the associated locator MUST be | SIDs that are NOT allocated from the associated locator MUST be | |||
ignored. | ignored. | |||
The router MAY advertise multiple instances of the SRv6 End SID Sub- | The router MAY advertise multiple instances of the SRv6 End SID sub- | |||
TLV within the SRv6 Locator TLV - one for each of the SRv6 SIDs to be | TLV within the SRv6 Locator TLV -- one for each of the SRv6 SIDs to | |||
advertised. When multiple SRv6 End SID Sub-TLVs are received in the | be advertised. When multiple SRv6 End SID sub-TLVs are received in | |||
SRv6 Locator TLV from a given router for the same SRv6 SID value, the | the SRv6 Locator TLV from a given router for the same SRv6 SID value, | |||
receiver MUST use the first occurrence of the Sub-TLV in the SRv6 | the receiver MUST use the first occurrence of the sub-TLV in the SRv6 | |||
Locator TLV. | Locator TLV. | |||
The format of SRv6 End SID Sub-TLV is shown below | The format of the SRv6 End SID sub-TLV is shown below | |||
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 | Reserved | Endpoint Behavior | | | Flags | Reserved | Endpoint Behavior | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| SID (128 bits) ... | | | SID (128 bits) ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ... SID continued ... | | | ... SID continued ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ... SID continued ... | | | ... SID continued ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ... SID concluded | | | ... SID concluded | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sub-TLVs (variable) . . . | | Sub-TLVs (variable) . . . | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 6: SRv6 End SID Sub-TLV | Figure 6: SRv6 End SID Sub-TLV | |||
Where: | where: | |||
Type: 2-octet field. The value for this type is 1. | Type: 2-octet field. The value for this type is 1. | |||
Length: 2-octet field. The total length (in octets) of the value | Length: 2-octet field. The total length (in octets) of the value | |||
portion of the Sub-TLV including its further nested Sub-TLVs. | portion of the sub-TLV, including its nested sub-TLVs. | |||
Flags: 1-octet field. It specifies the flags associated with the | Flags: 1-octet field. Specifies the flags associated with the SID. | |||
SID. No flags are currently defined and this field MUST be set to | No flags are currently defined, and this field MUST be set to 0 on | |||
0 on transmission and MUST be ignored on receipt. | transmission and MUST be ignored on receipt. | |||
Reserved: 1-octet field. It MUST be set to 0 on transmission and | Reserved: 1-octet field. It MUST be set to 0 on transmission and | |||
MUST be ignored on receipt. | MUST be ignored on receipt. | |||
Endpoint Behavior: 2 octets field. The endpoint behavior code | Endpoint Behavior: 2-octet field. The Endpoint behavior code point | |||
point for this SRv6 SID as defined in [RFC8986]. Supported | for this SRv6 SID as defined in [RFC8986]. Supported behavior | |||
behavior values for this sub-TLV are defined in Section 11 of this | values for this sub-TLV are defined in Section 11 of this | |||
document. Unsupported or unrecognized behavior values are ignored | document. Unsupported or unrecognized behavior values are ignored | |||
by the receiver. | by the receiver. | |||
SID: 16-octet field. This field encodes the advertised SRv6 SID. | SID: 16-octet field. This field encodes the advertised SRv6 SID. | |||
Sub-TLVs: Used to advertise Sub-TLVs that provide additional | Sub-TLVs: Used to advertise sub-TLVs that provide additional | |||
attributes for the given SRv6 SID. | attributes for the given SRv6 SID. | |||
9. Advertisement of SRv6 SIDs Associated with Adjacencies | 9. Advertisement of SRv6 SIDs Associated with Adjacencies | |||
The SRv6 endpoint behaviors defined in [RFC8986] include certain | The SRv6 Endpoint behaviors defined in [RFC8986] include certain | |||
behaviors that are specific to links or adjacencies. The most basic | behaviors that are specific to links or adjacencies. The most basic | |||
of these, which is critical for link-state routing protocols like | of these (which is critical for link-state routing protocols like | |||
OSPFv3, is the End.X behavior that is an instruction to forward to a | OSPFv3) is the End.X behavior, which is an instruction to forward to | |||
specific neighbor on a specific link. These SRv6 SIDs and others | a specific neighbor on a specific link. These SRv6 SIDs and others | |||
that are defined in [RFC8986] which are specific to links or | that are defined in [RFC8986], which are specific to links or | |||
adjacencies need to be advertised to OSPFv3 routers within an area to | adjacencies, need to be advertised to OSPFv3 routers within an area | |||
steer SRv6 traffic over a specific link or adjacency. | to steer SRv6 traffic over a specific link or adjacency. | |||
Therefore, SRv6 SIDs that are specific to a particular neighbor, such | Therefore, SRv6 SIDs that are specific to a particular neighbor, such | |||
as End.X, are not advertised as a sub-TLVs of the SRv6 Locator TLV | as End.X, are not advertised as a sub-TLVs of the SRv6 Locator TLV. | |||
but via two different optional Sub-TLVs of the E-Router-Link TLV | Instead, they are advertised via two different optional sub-TLVs of | |||
defined in [RFC8362]: | the E-Router-Link TLV defined in [RFC8362]: | |||
* SRv6 End.X SID Sub-TLV: Used for OSPFv3 adjacencies over point-to- | SRv6 End.X SID sub-TLV: Used for OSPFv3 adjacencies over point-to- | |||
point or point-to-multipoint links and for the adjacency to the | point or point-to-multipoint links and for the adjacency to the | |||
Designated Router (DR) over broadcast and Non-Broadcast-Multi- | Designated Router (DR) over broadcast and Non-Broadcast-Multi- | |||
Access (NBMA) links. | Access (NBMA) links. | |||
* SRv6 LAN End.X SID Sub-TLV: Used for OSPFv3 adjacencies on | SRv6 LAN End.X SID sub-TLV: Used for OSPFv3 adjacencies on broadcast | |||
broadcast and NBMA links to the Backup DR and DR-Other neighbors. | and NBMA links to the Backup DR and DR-Other neighbors. This sub- | |||
This Sub-TLV includes the OSPFv3 Router-ID of the neighbor and | TLV includes the OSPFv3 Router-ID of the neighbor and thus allows | |||
thus allows for an instance of this Sub-TLV for each neighbor to | for an instance of this sub-TLV for each neighbor to be explicitly | |||
be explicitly advertised as a Sub-TLV of the E-Router-Link TLV for | advertised as a sub-TLV of the E-Router-Link TLV for the same | |||
the same link. | link. | |||
Every SRv6 enabled OSPFv3 router SHOULD instantiate at least one | Every SRv6-enabled OSPFv3 router SHOULD instantiate at least one | |||
unique SRv6 End.X SID corresponding to each of its neighbors, | unique SRv6 End.X SID corresponding to each of its neighbors, | |||
although it MAY omit doing so if features like traffic engineering or | although it MAY omit doing so if features like TE or TI-LFA that | |||
Topology-Independent Loop Free Alternate (TI-LFA) that require End.X | require End.X SID are not in use. A router MAY instantiate more than | |||
SID are not in use. A router MAY instantiate more than one SRv6 | one SRv6 End.X SID for a single neighbor. The same SRv6 End.X SID | |||
End.X SID for a single neighbor. The same SRv6 End.X SID MAY be | MAY be advertised for more than one neighbor. Thus, multiple | |||
advertised for more than one neighbor. Thus multiple instances of | instances of the SRv6 End.X SID and SRv6 LAN End.X SID sub-TLVs MAY | |||
the SRv6 End.X SID and SRv6 LAN End.X SID Sub-TLVs MAY be advertised | be advertised within the E-Router-Link TLV for a single link. | |||
within the E-Router-Link TLV for a single link. | ||||
All End.X and LAN End.X SIDs MUST be subsumed by the subnet of a | All End.X and LAN End.X SIDs MUST be subsumed by the subnet of a | |||
Locator with the matching algorithm which is advertised by the same | locator with the matching algorithm that is advertised by the same | |||
OSPFv3 router in an SRv6 Locator TLV. End.X SIDs which do not meet | OSPFv3 router in an SRv6 Locator TLV. End.X SIDs that do not meet | |||
this requirement MUST be ignored. This ensures that the OSPFv3 | this requirement MUST be ignored. This ensures that the OSPFv3 | |||
router advertising the End.X or LAN End.X SID is also advertising its | router advertising the End.X or LAN End.X SID is also advertising its | |||
corresponding Locator with the algorithm that will be used for | corresponding locator with the algorithm that will be used for | |||
computing paths destined to the SID. | computing paths destined to the SID. | |||
9.1. SRv6 End.X SID Sub-TLV | 9.1. SRv6 End.X SID Sub-TLV | |||
The format of the SRv6 End.X SID Sub-TLV is shown below | The format of the SRv6 End.X SID sub-TLV is shown below: | |||
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 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Endpoint Behavior | Flags | Reserved1 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Algorithm | Weight | Reserved2 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| SID (128 bits) ... | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| ... SID continued ... | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| ... SID continued ... | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| ... SID concluded | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Sub-TLVs (variable) . . . | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
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 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Endpoint Behavior | Flags | Reserved1 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Algorithm | Weight | Reserved2 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| SID (128 bits) ... | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| ... SID continued ... | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| ... SID continued ... | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| ... SID concluded | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Sub-TLVs (variable) . . . | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 7: SRv6 End.X SID Sub-TLV | Figure 7: SRv6 End.X SID Sub-TLV | |||
Where: | where: | |||
Type: 2-octet field. The value for this type is 31. | Type: 2-octet field. The value for this type is 31. | |||
Length: 2-octet field. The total length (in octets) of the value | Length: 2-octet field. The total length (in octets) of the value | |||
portion of the Sub-TLV including its further nested Sub-TLVs. | portion of the sub-TLV, including its nested sub-TLVs. | |||
Endpoint Behavior: 2-octet field. The endpoint behavior code | Endpoint Behavior: 2-octet field. The Endpoint behavior code point | |||
point for this SRv6 SID as defined in [RFC8986]. Supported | for this SRv6 SID as defined in [RFC8986]. Supported behavior | |||
behavior values for this sub-TLV are defined in Section 11 of this | values for this sub-TLV are defined in Section 11 of this | |||
document. Unsupported or unrecognized behavior values are ignored | document. Unsupported or unrecognized behavior values are ignored | |||
by the receiver. | by the receiver. | |||
Flags: 1-octet field. The flags are defined as follows: | Flags: 1-octet field. The flags are defined as follows: | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
|B|S|P| Reserved| | |B|S|P| Reserved| | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
- B-Flag: Backup Flag. If set, the SID refers to a path that is | B-Flag: Backup Flag. If set, the SID refers to a path that is | |||
eligible for protection. | eligible for protection. | |||
- S-Flag: Set Flag. When set, the S-Flag indicates that the | S-Flag: Set Flag. When set, the S-Flag indicates that the End.X | |||
End.X SID refers to a set of adjacencies (and therefore MAY be | SID refers to a set of adjacencies (and therefore MAY be | |||
assigned to other adjacencies as well). | assigned to other adjacencies as well). | |||
- P-Flag: Persistent Flag: If set, the SID is persistently | P-Flag: Persistent Flag. If set, the SID is persistently | |||
allocated, i.e., the SID value remains consistent across router | allocated, i.e., the SID value remains consistent across router | |||
restart and session/interface flap. | restart and session/interface flap. | |||
- Other flags are not defined and are reserved for future use. | Other flags are not defined and are reserved for future use. | |||
They MUST be set to 0 on transmission and MUST be ignored on | They MUST be set to 0 on transmission and MUST be ignored on | |||
receipt. | receipt. | |||
Reserved1: 1-octet field. It MUST be set to 0 on transmission and | Reserved1: 1-octet field. It MUST be set to 0 on transmission and | |||
MUST be ignored on receipt. | MUST be ignored on receipt. | |||
Algorithm: 1-octet field. The algorithm associated with the SRv6 | Algorithm: 1-octet field. The algorithm associated with the SRv6 | |||
Locator from which the SID is allocated. Algorithm values are | Locator from which the SID is allocated. Algorithm values are | |||
defined in the IGP Algorithm Type registry [RFC8665]. | defined in the "IGP Algorithm Types" registry [RFC8665]. | |||
Weight: 1-octet field. Its value represents the weight of the | Weight: 1-octet field. Its value represents the weight of the End.X | |||
End.X SID for load-balancing. The use of the weight is defined in | SID for load-balancing. The use of the weight is defined in | |||
[RFC8402]. | [RFC8402]. | |||
Reserved2: 2-octet field. It MUST be set to 0 on transmission and | Reserved2: 2-octet field. It MUST be set to 0 on transmission and | |||
MUST be ignored on receipt. | MUST be ignored on receipt. | |||
SID: 16-octet field. This field encodes the advertised SRv6 SID. | SID: 16-octet field. This field encodes the advertised SRv6 SID. | |||
Sub-TLVs: Used to advertise Sub-TLVs that provide additional | Sub-TLVs: Used to advertise sub-TLVs that provide additional | |||
attributes for the given SRv6 End.X SID. | attributes for the given SRv6 End.X SID. | |||
9.2. SRv6 LAN End.X SID Sub-TLV | 9.2. SRv6 LAN End.X SID Sub-TLV | |||
The format of the SRv6 LAN End.X SID Sub-TLV is as shown below: | The format of the SRv6 LAN End.X SID sub-TLV is as shown below: | |||
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 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Endpoint Behavior | Flags | Reserved1 | | | Endpoint Behavior | Flags | Reserved1 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Algorithm | Weight | Reserved2 | | | Algorithm | Weight | Reserved2 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Neighbor Router-ID | | | Neighbor Router-ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| SID (128 bits) ... | | | SID (128 bits) ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ... SID continued ... | | | ... SID continued ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ... SID continued ... | | | ... SID continued ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ... SID concluded | | | ... SID concluded | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sub-TLVs (variable) . . . | | Sub-TLVs (variable) . . . | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 8: SRv6 LAN End.X SID Sub-TLV | Figure 8: SRv6 LAN End.X SID Sub-TLV | |||
Where: | where: | |||
* Type: 2-octet field. The value for this type is 32. | Type: 2-octet field. The value for this type is 32. | |||
* Length: 2-octet field. The total length (in octets) of the value | Length: 2-octet field. The total length (in octets) of the value | |||
portion of the Sub-TLV including its further nested Sub-TLVs. | portion of the sub-TLV, including its nested sub-TLVs. | |||
* Endpoint Behavior: 2-octet field. The code point for the endpoint | Endpoint Behavior: 2-octet field. The code point for the Endpoint | |||
behavior for this SRv6 SID as defined in section 9.2 of [RFC8986]. | behavior for this SRv6 SID as defined in Section 9.2 of [RFC8986]. | |||
* Flags: 1-octet field. The flags are defined as follows: | Flags: 1-octet field. The flags are defined as follows: | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
|B|S|P| Reserved| | |B|S|P| Reserved| | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
- B-Flag: Backup Flag. If set, the SID refers to a path that is | B-Flag: Backup Flag. If set, the SID refers to a path that is | |||
eligible for protection. | eligible for protection. | |||
- S-Flag: Set Flag. When set, the S-Flag indicates that the | S-Flag: Set Flag. When set, the S-Flag indicates that the End.X | |||
End.X SID refers to a set of adjacencies (and therefore MAY be | SID refers to a set of adjacencies (and therefore MAY be | |||
assigned to other adjacencies as well). | assigned to other adjacencies as well). | |||
- P-Flag: Persistent Flag: If set, the SID is persistently | P-Flag: Persistent Flag. If set, the SID is persistently | |||
allocated, i.e., the SID value remains consistent across router | allocated, i.e., the SID value remains consistent across router | |||
restart and session/interface flap. | restart and session/interface flap. | |||
- Other flags are not defined and are reserved for future use. | Other flags are not defined and are reserved for future use. | |||
They MUST be set to 0 on transmission and MUST be ignored on | They MUST be set to 0 on transmission and MUST be ignored on | |||
receipt. | receipt. | |||
* Reserved1: 1-octet field. It MUST be set to 0 on transmission and | Reserved1: 1-octet field. It MUST be set to 0 on transmission and | |||
MUST be ignored on receipt. | MUST be ignored on receipt. | |||
* Algorithm: 1-octet field. The algorithm associated with the SRv6 | Algorithm: 1-octet field. The algorithm associated with the SRv6 | |||
Locator from which the SID is allocated. Algorithm values are | Locator from which the SID is allocated. Algorithm values are | |||
defined in the IGP Algorithm Type registry [RFC8665]. | defined in the "IGP Algorithm Types" registry [RFC8665]. | |||
* Weight: 1-octet field. Its value represents the weight of the | Weight: 1-octet field. Its value represents the weight of the End.X | |||
End.X SID for load balancing. The use of the weight is defined in | SID for load balancing. The use of the weight is defined in | |||
[RFC8402]. | [RFC8402]. | |||
* Reserved2: 2-octet field. It MUST be set to 0 on transmission and | Reserved2: 2-octet field. It MUST be set to 0 on transmission and | |||
MUST be ignored on receipt. | MUST be ignored on receipt. | |||
* Neighbor Router-ID: 4-octet field. It specifies the OSPFv3 | Neighbor Router-ID: 4-octet field. It specifies the OSPFv3 Router- | |||
Router-id of the neighbor. | ID of the neighbor. | |||
* SID: 16-octet field. This field encodes the advertised SRv6 SID. | SID: 16-octet field. This field encodes the advertised SRv6 SID. | |||
* Sub-TLVs: Used to advertise Sub-TLVs that provide additional | Sub-TLVs: Used to advertise sub-TLVs that provide additional | |||
attributes for the given SRv6 SID. | attributes for the given SRv6 SID. | |||
10. SRv6 SID Structure Sub-TLV | 10. SRv6 SID Structure Sub-TLV | |||
SRv6 SID Structure Sub-TLV is used to advertise the structure of the | The SRv6 SID Structure sub-TLV is used to advertise the structure of | |||
SRv6 SID as defined in [RFC8986]. It is used as an optional Sub-TLV | the SRv6 SID as defined in [RFC8986]. It is used as an optional sub- | |||
of the following: | TLV of the following: | |||
* SRv6 End SID Sub-TLV (refer to Section 8) | * SRv6 End SID sub-TLV (refer to Section 8) | |||
* SRv6 End.X SID Sub-TLV (refer to Section 9.1) | * SRv6 End.X SID sub-TLV (refer to Section 9.1) | |||
* SRv6 LAN End.X SID Sub-TLV (refer to Section 9.2) | * SRv6 LAN End.X SID sub-TLV (refer to Section 9.2) | |||
The Sub-TLV has the following format: | The sub-TLV has the following format: | |||
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 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| LB Length | LN Length | Fun. Length | Arg. Length | | | LB Length | LN Length | Fun. Length | Arg. Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 9: SRv6 SID Structure Sub-TLV | Figure 9: SRv6 SID Structure Sub-TLV | |||
Where: | where: | |||
Type: 2-octet field. The value for this type is 30. | Type: 2-octet field. The value for this type is 30. | |||
Length: 2-octet field. The value MUST be 4. | Length: 2-octet field. The value MUST be 4. | |||
LB Length: 1-octet field. SRv6 SID Locator Block length in bits. | LB Length: 1-octet field. SRv6 SID Locator Block length in bits. | |||
LN Length: 1-octet bit field. SRv6 SID Locator Node length in | LN Length: 1-octet field. SRv6 SID Locator Node length in bits. | |||
bits. | ||||
Function Length: 1-octet field. SRv6 SID Function length in bits. | Function Length: 1-octet field. SRv6 SID Function length in bits. | |||
Argument Length: 1-octet field. SRv6 SID Argument length in bits. | Argument Length: 1-octet field. SRv6 SID Argument length in bits. | |||
The SRv6 SID Structure Sub-TLV MUST NOT appear more than once in its | The SRv6 SID Structure sub-TLV MUST NOT appear more than once in its | |||
parent Sub-TLV. If it appears more than once in its parent Sub-TLV, | parent sub-TLV. If it appears more than once in its parent sub-TLV, | |||
the parent Sub-TLV MUST be ignored by the receiver. | the parent sub-TLV MUST be ignored by the receiver. | |||
The sum of all four sizes advertised in SRv6 SID Structure Sub-TLV | The sum of all four sizes advertised in SRv6 SID Structure sub-TLV | |||
MUST be less than or equal to 128 bits. If the sum of all four sizes | MUST be less than or equal to 128 bits. If the sum of all four sizes | |||
advertised in the SRv6 SID Structure Sub-TLV is larger than 128 bits, | advertised in the SRv6 SID Structure sub-TLV is larger than 128 bits, | |||
the parent TLV/Sub-TLV MUST be ignored by the receiver. | the parent TLV or sub-TLV MUST be ignored by the receiver. | |||
The SRv6 SID Structure Sub-TLV is intended for informational use by | The SRv6 SID Structure sub-TLV is intended for informational use by | |||
the control and management planes. It MUST NOT be used at a transit | the control and management planes. It MUST NOT be used at a transit | |||
node (as defined in [RFC8754]) for forwarding packets. As an | node (as defined in [RFC8754]) for forwarding packets. As an | |||
example, this information could be used for: | example, this information could be used for the following: | |||
* validation of SRv6 SIDs being instantiated in the network and | * Validation of SRv6 SIDs being instantiated in the network and | |||
advertised via OSPFv3. These can be learned by controllers via | advertised via OSPFv3. These can be learned by controllers via | |||
BGP-LS [I-D.ietf-idr-bgpls-srv6-ext] and then be monitored for | BGP-LS [RFC9514] and then monitored for conformance to the SRv6 | |||
conformance to the SRv6 SID allocation scheme chosen by the | SID allocation scheme chosen by the operator as described in | |||
operator as described in Section 3.2 of [RFC8986]. | Section 3.2 of [RFC8986]. | |||
* verification and the automation for securing the SRv6 domain by | * Verification and the automation for securing the SRv6 domain by | |||
provisioning filtering rules at SR domain boundaries as described | provisioning filtering rules at SR domain boundaries as described | |||
in Section 5 of [RFC8754]. | in Section 5 of [RFC8754]. | |||
The details of these potential applications are outside the scope of | The details of these potential applications are outside the scope of | |||
this document. | this document. | |||
11. Advertising Endpoint Behaviors | 11. Advertising Endpoint Behaviors | |||
Endpoint behaviors are defined in [RFC8986]. The codepoints for the | Endpoint behaviors are defined in [RFC8986]. The code points for the | |||
Endpoint behaviors are defined in the "SRv6 Endpoint Behaviors" | Endpoint behaviors are defined in the "SRv6 Endpoint Behaviors" | |||
registry of [RFC8986]. This section lists the Endpoint behaviors and | registry of [RFC8986]. This section lists the Endpoint behaviors and | |||
their codepoints, which MAY be advertised by OSPFv3 and the Sub-TLVs | their code points, which MAY be advertised by OSPFv3 and the sub-TLVs | |||
in which each type MAY appear. | in which each type MAY appear. | |||
|-----------------------|--------------------|-----|-------|-----------| | +===================+===================+=====+=======+===========+ | |||
| Endpoint | Endpoint | End | End.X | LAN End.X | | | Endpoint Behavior | Endpoint Behavior | End | End.X | LAN End.X | | |||
| Behavior | Behavior Codepoint | SID | SID | SID | | | | Code Point | SID | SID | SID | | |||
|-----------------------|--------------------|-----|-------|-----------| | +===================+===================+=====+=======+===========+ | |||
| End (PSP, USP, USD) | 1-4, 28-31 | Y | N | N | | | End (PSP, USP, | 1-4, 28-31 | Y | N | N | | |||
|-----------------------|--------------------|-----|-------|-----------| | | USD) | | | | | | |||
| End.X (PSP, USP, USD) | 5-8, 32-35 | N | Y | Y | | +-------------------+-------------------+-----+-------+-----------+ | |||
|-----------------------|--------------------|-----|-------|-----------| | | End.X (PSP, USP, | 5-8, 32-35 | N | Y | Y | | |||
| End.DX6 | 16 | N | Y | Y | | | USD) | | | | | | |||
|-----------------------|--------------------|-----|-------|-----------| | +-------------------+-------------------+-----+-------+-----------+ | |||
| End.DX4 | 17 | N | Y | Y | | | End.DX6 | 16 | N | Y | Y | | |||
|-----------------------|--------------------|-----|-------|-----------| | +-------------------+-------------------+-----+-------+-----------+ | |||
| End.DT6 | 18 | Y | N | N | | | End.DX4 | 17 | N | Y | Y | | |||
|-----------------------|--------------------|-----|-------|-----------| | +-------------------+-------------------+-----+-------+-----------+ | |||
| End.DT4 | 19 | Y | N | N | | | End.DT6 | 18 | Y | N | N | | |||
|-----------------------|--------------------|-----|-------|-----------| | +-------------------+-------------------+-----+-------+-----------+ | |||
| End.DT64 | 20 | Y | N | N | | | End.DT4 | 19 | Y | N | N | | |||
|-----------------------|--------------------|-----|-------|-----------| | +-------------------+-------------------+-----+-------+-----------+ | |||
| End.DT64 | 20 | Y | N | N | | ||||
+-------------------+-------------------+-----+-------+-----------+ | ||||
Figure 10: SRv6 Endpoint Behaviors in OSPFv3 | Table 1: SRv6 Endpoint Behaviors in OSPFv3 | |||
12. Security Considerations | 12. Security Considerations | |||
This document introduces extensions to the OSPFv3 protocol and as | This document introduces extensions to the OSPFv3 protocol and, as | |||
such does not affect existing security considerations for OSPFv3 as | such, does not affect existing security considerations for OSPFv3 as | |||
documented in [RFC5340]. [RFC7166] describes an alternative and | documented in [RFC5340]. [RFC7166] describes an alternative and | |||
improved authentication mechanism to IPsec for OSPFv3. The use of | improved authentication mechanism to IPsec for OSPFv3. The use of | |||
authentication is RECOMMENDED for OSPFv3 deployment. | authentication is RECOMMENDED for OSPFv3 deployment. | |||
Reception of malformed TLV or Sub-TLV SHOULD be counted and/or logged | Reception of a malformed TLV or sub-TLV SHOULD be counted and/or | |||
in a rate-limited manner for further analysis. | logged in a rate-limited manner for further analysis. | |||
This document describes the OSPFv3 extensions required to support | This document describes the OSPFv3 extensions required to support SR | |||
Segment Routing over an IPv6 data plane. The security considerations | over an IPv6 data plane. The security considerations for SR are | |||
for Segment Routing are discussed in [RFC8402]. [RFC8986] defines | discussed in [RFC8402]. [RFC8986] defines the SRv6 Network | |||
the SRv6 Network Programming concept and specifies the main Segment | Programming concept and specifies the main SR behaviors to enable the | |||
Routing behaviors to enable the creation of interoperable overlays; | creation of interoperable overlays. The security considerations from | |||
the security considerations from that document apply too. | that document apply as well. | |||
The advertisement of an incorrect MSD value may have negative | The advertisement of an incorrect MSD value may have negative | |||
consequences, see [RFC8476] for additional considerations. | consequences. See [RFC8476] for additional considerations. | |||
Security concerns associated with the setting of the O-flag are | Security concerns associated with the setting of the O-flag are | |||
described in [RFC9259]. | described in [RFC9259]. | |||
Security concerns associated with the usage of Flexible Algorithms | Security concerns associated with the usage of Flexible Algorithms | |||
are described in [RFC9350]. | are described in [RFC9350]. | |||
13. IANA Considerations | 13. IANA Considerations | |||
This document requests IANA to perform allocations from OSPF and | Per this document, IANA has made allocations in OSPF- and | |||
OSPFv3 related registries as well as creating of new registries as | OSPFv3-related registries and created new registries, as detailed in | |||
follows. | the following subsections. | |||
13.1. OSPF Router Information TLVs | 13.1. OSPF Router Information TLVs | |||
IANA has allocated a code point via the early allocation process in | IANA has allocated the following code point in the "OSPF Router | |||
the "OSPF Router Information (RI) TLVs" registry under the "OSPF | Information (RI) TLVs" registry within the "Open Shortest Path First | |||
Parameters" registry group for the new TLV below that needs to be | (OSPF) Parameters" registry group: | |||
made permanent: | ||||
Type 20: SRv6-Capabilities TLV: Refer to Section 2 of this | +=======+===================+=====================+ | |||
document. | | Value | TLV Name | Reference | | |||
+=======+===================+=====================+ | ||||
| 20 | SRv6 Capabilities | RFC 9513, Section 2 | | ||||
+-------+-------------------+---------------------+ | ||||
Table 2 | ||||
13.2. OSPFv3 LSA Function Codes | 13.2. OSPFv3 LSA Function Codes | |||
IANA has allocated a code point via the early allocation process in | IANA has allocated the following code point in the "OSPFv3 LSA | |||
the "OSPFv3 LSA Function Codes" registry under the "OSPFv3 | Function Codes" registry within the "Open Shortest Path First v3 | |||
Parameters" registry group for the new LSA below that needs to be | (OSPFv3) Parameters" registry group: | |||
made permanent: | ||||
* Type 42: SRv6 Locator LSA: Refer to Section 7 of this document. | +=======+========================+=====================+ | |||
| Value | LSA Function Code Name | Reference | | ||||
+=======+========================+=====================+ | ||||
| 42 | SRv6 Locator LSA | RFC 9513, Section 7 | | ||||
+-------+------------------------+---------------------+ | ||||
Table 3 | ||||
13.3. OSPFv3 Prefix Options | 13.3. OSPFv3 Prefix Options | |||
IANA has allocated a code point via the early allocation process in | IANA has allocated the following code point in the "OSPFv3 Prefix | |||
the "OSPFv3 Prefix Options" registry under the "OSPFv3 Parameters" | Options (8 bits)" registry within the "Open Shortest Path First v3 | |||
registry group as below that needs to be made permanent: | (OSPFv3) Parameters" registry group: | |||
* Value 0x80: AC-bit: Refer to Section 6 of this document. | +=======+=============+=====================+ | |||
| Value | Description | Reference | | ||||
+=======+=============+=====================+ | ||||
| 0x80 | AC-bit | RFC 9513, Section 6 | | ||||
+-------+-------------+---------------------+ | ||||
Table 4 | ||||
13.4. OSPFv3 SRv6 Capabilities TLV Flags | 13.4. OSPFv3 SRv6 Capabilities TLV Flags | |||
This document requests a new IANA sub-registry name "OSPFv3 SRv6 | IANA has created a new subregistry named "OSPFv3 SRv6 Capabilities | |||
Capabilities TLV Flags" be created under the "OSPFv3 Parameters" | TLV Flags" within the "Open Shortest Path First v3 (OSPFv3) | |||
registry group to control the assignment of bits 0 to 15 in the Flags | Parameters" registry group to control the assignment of bits 0 to 15 | |||
field of the OSPFv3 SRv6 Capabilities TLV specified in this document. | in the Flags field of the OSPFv3 SRv6 Capabilities TLV specified in | |||
The registration procedure is "Standards Action" as defined in | this document. The registration procedure is "Standards Action" as | |||
[RFC8126]. | defined in [RFC8126]. | |||
The following assignments are made by this document: | The following assignment has been made per this document: | |||
* Bit 1: Description: O-flag. Reference: Section 2 of this | +=====+=============+=====================+ | |||
document. | | Bit | Description | Reference | | |||
+=====+=============+=====================+ | ||||
| 1 | O-flag | RFC 9513, Section 2 | | ||||
+-----+-------------+---------------------+ | ||||
Table 5 | ||||
13.5. OSPFv3 SRv6 End SID Sub-TLV Flags | 13.5. OSPFv3 SRv6 End SID Sub-TLV Flags | |||
This document requests a new IANA sub-registry name "OSPFv3 SRv6 End | IANA has created a new subregistry named "OSPFv3 SRv6 End SID Sub-TLV | |||
SID Sub-TLV Flags" be created under the "OSPFv3 Parameters" registry | Flags" within the "Open Shortest Path First v3 (OSPFv3) Parameters" | |||
group to control the assignment of bits 0 to 7 in the Flags field of | registry group to control the assignment of bits 0 to 7 in the Flags | |||
the OSPFv3 SRv6 End SID Sub-TLV specified in this document. The | field of the OSPFv3 SRv6 End SID sub-TLV specified in this document. | |||
registration procedure is "Standards Action" as defined in [RFC8126]. | The registration procedure is "Standards Action" as defined in | |||
[RFC8126]. | ||||
No assignments are made by this document. | No assignments are made by this document. | |||
13.6. OSPFv3 SRv6 Adjacency SID Sub-TLV Flags | 13.6. OSPFv3 SRv6 Adjacency SID Sub-TLV Flags | |||
This document requests a new IANA sub-registry name "OSPFv3 SRv6 | IANA has created a new subregistry named "OSPFv3 SRv6 Adjacency SID | |||
Adjacency SID Sub-TLV Flags" be created under the "OSPFv3 Parameters" | Sub-TLV Flags" within the "Open Shortest Path First v3 (OSPFv3) | |||
registry group to control the assignment of bits 0 to 7 in the Flags | Parameters" registry group to control the assignment of bits 0 to 7 | |||
field of the OSPFv3 SRv6 End.X SID and OSPFv3 SRv6 LAN End.X SID Sub- | in the Flags field of the OSPFv3 SRv6 End.X SID and OSPFv3 SRv6 LAN | |||
TLVs specified in this document. The registration procedure is | End.X SID sub-TLVs specified in this document. The registration | |||
"Standards Action" as defined in [RFC8126]. | procedure is "Standards Action" as defined in [RFC8126]. | |||
The following assignments are made by this document: | ||||
* Bit 0: Description: B-flag. Reference: Section 9.1 and | The following assignments have been made per this document: | |||
Section 9.2 of this document. | ||||
* Bit 1: Description: S-flag. Reference: Section 9.1 and | +=====+=============+================================+ | |||
Section 9.2 of this document. | | Bit | Description | Reference | | |||
+=====+=============+================================+ | ||||
| 0 | B-flag | RFC 9513, Sections 9.1 and 9.2 | | ||||
+-----+-------------+--------------------------------+ | ||||
| 1 | S-flag | RFC 9513, Sections 9.1 and 9.2 | | ||||
+-----+-------------+--------------------------------+ | ||||
| 2 | P-flag | RFC 9513, Sections 9.1 and 9.2 | | ||||
+-----+-------------+--------------------------------+ | ||||
* Bit 2: Description: P-flag. Reference: Section 9.1 and | Table 6 | |||
Section 9.2 of this document. | ||||
13.7. OSPFv3 Extended-LSA Sub-TLVs | 13.7. OSPFv3 Extended-LSA Sub-TLVs | |||
IANA has allocated the following code points via the early allocation | IANA has allocated the following code points in the "OSPFv3 Extended- | |||
process in the "OSPFv3 Extended-LSA Sub-TLVs" registry under the | LSA Sub-TLVs" registry within the "Open Shortest Path First v3 | |||
"OSPFv3 Parameters" registry group for the new Sub-TLVs below that | (OSPFv3) Parameters" registry group: | |||
need to be made permanent: | ||||
* Type 30: SRv6 SID Structure Sub-TLV: Refer to Section 10 of this | ||||
document. | ||||
* Type 31: SRv6 End.X SID Sub-TLV: Refer to Section 9.1 of this | ||||
document. | ||||
* Type 32: SRv6 LAN End.X SID Sub-TLV: Refer to Section 9.2 of this | +=======+====================+======+=======================+ | |||
document. | | Value | Description | L2BM | Reference | | |||
+=======+====================+======+=======================+ | ||||
| 30 | SRv6 SID Structure | Y | RFC 9513, Section 10 | | ||||
+-------+--------------------+------+-----------------------+ | ||||
| 31 | SRv6 End.X SID | Y | RFC 9513, Section 9.1 | | ||||
+-------+--------------------+------+-----------------------+ | ||||
| 32 | SRv6 LAN End.X SID | Y | RFC 9513, Section 9.2 | | ||||
+-------+--------------------+------+-----------------------+ | ||||
For all 3 of these sub-TLVs the column L2BM in the registry is set to | Table 7 | |||
"Y". | ||||
13.8. OSPFv3 SRv6 Locator LSA TLVs | 13.8. OSPFv3 SRv6 Locator LSA TLVs | |||
This document requests the creation of an "OSPFv3 SRv6 Locator LSA | IANA has created a new subregistry named "OSPFv3 SRv6 Locator LSA | |||
TLVs" registry, that defines top-level TLVs for the OSPFv3 SRv6 | TLVs" within the "Open Shortest Path First v3 (OSPFv3) Parameters" | |||
Locator LSA, under the "OSPFv3 Parameters" registry group. The | registry group to define top-level TLVs for the OSPFv3 SRv6 Locator | |||
initial code-points assignment is as below: | LSA. The initial assignments are below: | |||
* Type 0: Reserved. | +=======+==============+=======================+ | |||
| Value | Description | Reference | | ||||
+=======+==============+=======================+ | ||||
| 0 | Reserved | RFC 9513 | | ||||
+-------+--------------+-----------------------+ | ||||
| 1 | SRv6 Locator | RFC 9513, Section 7.1 | | ||||
+-------+--------------+-----------------------+ | ||||
* Type 1: SRv6 Locator TLV: Refer to Section 7.1 of this document. | Table 8 | |||
Types in the range 2-32767 are allocated via IETF Review or IESG | Types in the range 0-32767 are allocated via IETF Review or IESG | |||
Approval [RFC8126]. | Approval [RFC8126]. | |||
Types in the range 32768-33023 are Reserved for Experimental Use; | Types in the range 32768-33023 are Reserved for Experimental Use; | |||
these will not be registered with IANA and MUST NOT be mentioned by | these will not be registered with IANA and MUST NOT be mentioned by | |||
RFCs. | RFCs. | |||
Types in the range 33024-45055 are to be assigned on a First Come | Types in the range 33024-45055 are to be assigned on a First Come | |||
First Served (FCFS) basis. | First Served (FCFS) basis. | |||
Types in the range 45056-65535 are not to be assigned at this time. | Types in the range 45056-65535 are not to be assigned at this time. | |||
Before any assignments can be made in the 45056-65535 range, there | Before any assignments can be made in the 45056-65535 range, there | |||
MUST be an IETF specification that specifies IANA Considerations that | MUST be an IETF specification that specifies IANA Considerations that | |||
cover the range being assigned. | cover the range being assigned. | |||
13.9. OSPFv3 SRv6 Locator LSA Sub-TLVs | 13.9. OSPFv3 SRv6 Locator LSA Sub-TLVs | |||
This document requests the creation of an "OSPFv3 SRv6 Locator LSA | IANA has created a new subregistry named "OSPFv3 SRv6 Locator LSA | |||
Sub-TLVs" registry, that defines Sub-TLVs at any level of nesting for | Sub-TLVs" within the "Open Shortest Path First v3 (OSPFv3) | |||
the SRv6 Locator LSA, to be added under the "OSPFv3 Parameters" | Parameters" registry group to define sub-TLVs at any level of nesting | |||
registry group. The initial code-points assignment is as below: | for the SRv6 Locator LSA TLV. The initial assignment are below: | |||
* Type 0: Reserved. | ||||
* Type 1: SRv6 End SID Sub-TLV: Refer to Section 8 of this document. | ||||
* Type 2: IPv6-Forwarding-Address sub-TLV: Refer to [RFC8362] and | ||||
Section 7.2 of this document. | ||||
* Type 3: Route-Tag sub-TLV: Refer to [RFC8362] and Section 7.2 of | ||||
this document. | ||||
* Type 4: Prefix Source OSPF Router-ID sub-TLV: Refer to [RFC9084] | ||||
and Section 7.2 of this document. | ||||
* Type 5: Prefix Source Router Address sub-TLV: Refer to [RFC9084] | +=======+=========================+=====================+ | |||
and Section 7.2 of this document. | | Value | Description | Reference | | |||
+=======+=========================+=====================+ | ||||
| 0 | Reserved | RFC 9513 | | ||||
+-------+-------------------------+---------------------+ | ||||
| 1 | SRv6 End SID | RFC 9513, Section 8 | | ||||
+-------+-------------------------+---------------------+ | ||||
| 2 | IPv6-Forwarding-Address | [RFC8362]; RFC | | ||||
| | | 9513, Section 7.2 | | ||||
+-------+-------------------------+---------------------+ | ||||
| 3 | Route-Tag | [RFC8362]; RFC | | ||||
| | | 9513, Section 7.2 | | ||||
+-------+-------------------------+---------------------+ | ||||
| 4 | Prefix Source OSPF | [RFC9084]; RFC | | ||||
| | Router-ID | 9513, Section 7.2 | | ||||
+-------+-------------------------+---------------------+ | ||||
| 5 | Prefix Source Router | [RFC9084]; RFC | | ||||
| | Address | 9513, Section 7.2 | | ||||
+-------+-------------------------+---------------------+ | ||||
| 10 | SRv6 SID Structure | RFC 9513, | | ||||
| | | Section 10 | | ||||
+-------+-------------------------+---------------------+ | ||||
* Type 10: SRv6 SID Structure Sub-TLV: Refer to Section 10 of this | Table 9 | |||
document. | ||||
Types in the range 6-9 and 11-32767 are allocated via IETF Review or | Types in the range 0-32767 are allocated via IETF Review or IESG | |||
IESG Approval [RFC8126]. | Approval [RFC8126]. | |||
Types in the range 32768-33023 are Reserved for Experimental Use; | Types in the range 32768-33023 are Reserved for Experimental Use; | |||
these will not be registered with IANA and MUST NOT be mentioned by | these will not be registered with IANA and MUST NOT be mentioned by | |||
RFCs. | RFCs. | |||
Types in the range 33024-45055 are to be assigned on a First Come | Types in the range 33024-45055 are to be assigned on a FCFS basis. | |||
First Served (FCFS) basis. | ||||
Types in the range 45056-65535 are not to be assigned at this time. | Types in the range 45056-65535 are not to be assigned at this time. | |||
Before any assignments can be made in the 45056-65535 range, there | Before any assignments can be made in the 45056-65535 range, there | |||
MUST be an IETF specification that specifies IANA Considerations that | MUST be an IETF specification that specifies IANA Considerations that | |||
cover the range being assigned. | cover the range being assigned. | |||
The note indicated below needs to be added under this registry to | The following note has been added to this registry to ensure that any | |||
ensure that any document requesting allocations under this registry | document requesting allocations in this registry for sub-TLVs of any | |||
for sub-TLVs of any of the OSPFv3 SRv6 Locator TLVs checks if | of the OSPFv3 SRv6 Locator TLVs checks if allocations are also | |||
allocations are also applicable for the "OSPFv3 Extended-LSA Sub- | applicable for the "OSPFv3 Extended-LSA Sub-TLVs" registry. | |||
TLVs" registry. | ||||
Note: Allocations made under this registry for any sub-TLVs that are | | Note: Allocations made in this registry for sub-TLVs that are | |||
associated with OSPFv3 SRv6 Locator TLVs MUST be also evaluated for | | associated with OSPFv3 SRv6 Locator TLVs MUST be evaluated for | |||
their applicability as OSPFv3 Extended-LSA Sub-TLVs and, therefore, | | their applicability as OSPFv3 Extended-LSA sub-TLVs, which are | |||
also requiring allocation under the "OSPFv3 Extended-LSA Sub-TLVs" | | required to be allocated in the "OSPFv3 Extended-LSA Sub-TLVs" | |||
registry. | | registry. | |||
13.10. OSPFv3 Extended-LSA Sub-TLVs | 13.10. OSPFv3 Extended-LSA Sub-TLVs | |||
This document requests IANA to add the note indicated below under the | IANA has added the following note to the "OSPFv3 Extended-LSA Sub- | |||
"OSPFv3 Extended-LSA Sub-TLVs" registry under the "OSPFv3 Parameters" | TLVs" registry within the "Open Shortest Path First v3 (OSPFv3) | |||
registry group. The purpose of this note is to ensure that any | Parameters" registry group. The purpose of this note is to ensure | |||
document requesting allocations under this registry for sub-TLVs of | that any document requesting allocations in this registry for sub- | |||
any of the OSPFv3 Extended Prefix TLVs checks if allocations are also | TLVs of any of the OSPFv3 Extended Prefix TLVs checks if allocations | |||
applicable for the "OSPFv3 SRv6 Locator LSA Sub-TLVs" registry that | are also applicable for the "OSPFv3 SRv6 Locator LSA Sub-TLVs" | |||
is created by this document. | registry defined in this document. | |||
Note: Allocations made under this registry for any sub-TLVs that are | ||||
associated with OSPFv3 Extended TLVs related to prefix advertisements | ||||
MUST be also evaluated for their applicability as OSPFv3 SRv6 Locator | ||||
Sub-TLVs and, therefore, also requiring allocation under the "OSPFv3 | ||||
SRv6 Locator LSA Sub-TLVs" registry. | ||||
14. Acknowledgements | ||||
The authors would like to acknowledge the contributions of Dean Cheng | ||||
in the early versions of this document. The authors would like to | ||||
thank Ran Chen and Detao Zhao for their suggestions related to the | ||||
extension of PrefixOptions for the signaling of the anycast property. | ||||
The authors would like to thank Chenzichao, Dirk Goethals, Baalajee | | Note: Allocations made in this registry for sub-TLVs that are | |||
S, Yingzhen Qu, Shraddha Hegde, Dhruv Dhody, Martin Vigoureux, and | | associated with OSPFv3 Extended TLVs related to prefix | |||
Reese Enghardt for their review and comments on this document. The | | advertisements MUST be evaluated for their applicability as OSPFv3 | |||
authors would like to thank Acee Lindem for his detailed shepherd | | SRv6 Locator sub-TLVs, which are required to be allocated in the | |||
review and feedback for improvement of this document. The authors | | "OSPFv3 SRv6 Locator LSA Sub-TLVs" registry. | |||
would like to thank John Scudder for his AD review and suggestions to | ||||
improve this document. | ||||
15. References | 14. References | |||
15.1. Normative References | 14.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | |||
for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | |||
<https://www.rfc-editor.org/info/rfc5340>. | <https://www.rfc-editor.org/info/rfc5340>. | |||
skipping to change at page 29, line 10 ¶ | skipping to change at line 1304 ¶ | |||
[RFC9350] Psenak, P., Ed., Hegde, S., Filsfils, C., Talaulikar, K., | [RFC9350] Psenak, P., Ed., Hegde, S., Filsfils, C., Talaulikar, K., | |||
and A. Gulko, "IGP Flexible Algorithm", RFC 9350, | and A. Gulko, "IGP Flexible Algorithm", RFC 9350, | |||
DOI 10.17487/RFC9350, February 2023, | DOI 10.17487/RFC9350, February 2023, | |||
<https://www.rfc-editor.org/info/rfc9350>. | <https://www.rfc-editor.org/info/rfc9350>. | |||
[RFC9352] Psenak, P., Ed., Filsfils, C., Bashandy, A., Decraene, B., | [RFC9352] Psenak, P., Ed., Filsfils, C., Bashandy, A., Decraene, B., | |||
and Z. Hu, "IS-IS Extensions to Support Segment Routing | and Z. Hu, "IS-IS Extensions to Support Segment Routing | |||
over the IPv6 Data Plane", RFC 9352, DOI 10.17487/RFC9352, | over the IPv6 Data Plane", RFC 9352, DOI 10.17487/RFC9352, | |||
February 2023, <https://www.rfc-editor.org/info/rfc9352>. | February 2023, <https://www.rfc-editor.org/info/rfc9352>. | |||
15.2. Informative References | 14.2. Informative References | |||
[I-D.ietf-idr-bgpls-srv6-ext] | ||||
Dawra, G., Filsfils, C., Talaulikar, K., Chen, M., | ||||
Bernier, D., and B. Decraene, "BGP Link State Extensions | ||||
for SRv6", Work in Progress, Internet-Draft, draft-ietf- | ||||
idr-bgpls-srv6-ext-14, 17 February 2023, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-idr- | ||||
bgpls-srv6-ext-14>. | ||||
[RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering | [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering | |||
(TE) Extensions to OSPF Version 2", RFC 3630, | (TE) Extensions to OSPF Version 2", RFC 3630, | |||
DOI 10.17487/RFC3630, September 2003, | DOI 10.17487/RFC3630, September 2003, | |||
<https://www.rfc-editor.org/info/rfc3630>. | <https://www.rfc-editor.org/info/rfc3630>. | |||
[RFC9514] Dawra, G., Filsfils, C., Talaulikar, K., Ed., Chen, M., | ||||
Bernier, D., and B. Decraene, "Border Gateway Protocol - | ||||
Link State (BGP-LS) Extensions for Segment Routing over | ||||
IPv6 (SRv6)", RFC 9514, DOI 10.17487/RFC9514, November | ||||
2023, <https://www.rfc-editor.org/info/rfc9514>. | ||||
Acknowledgements | ||||
The authors would like to acknowledge the contributions of Dean Cheng | ||||
in the early draft versions of this document. The authors would like | ||||
to thank Ran Chen and Detao Zhao for their suggestions related to the | ||||
extension of PrefixOptions for the signaling of the anycast property. | ||||
The authors would like to thank Chenzichao, Dirk Goethals, Baalajee | ||||
S, Yingzhen Qu, Shraddha Hegde, Dhruv Dhody, Martin Vigoureux, and | ||||
Reese Enghardt for their review and comments on this document. The | ||||
authors would like to thank Acee Lindem for his detailed shepherd | ||||
review and feedback for improvement of this document. The authors | ||||
would like to thank John Scudder for his AD review and suggestions to | ||||
improve this document. | ||||
Authors' Addresses | Authors' Addresses | |||
Zhenbin Li | Zhenbin Li | |||
Huawei Technologies | Huawei Technologies | |||
Email: lizhenbin@huawei.com | Email: lizhenbin@huawei.com | |||
Zhibo Hu | Zhibo Hu | |||
Huawei Technologies | Huawei Technologies | |||
Email: huzhibo@huawei.com | Email: huzhibo@huawei.com | |||
End of changes. 206 change blocks. | ||||
641 lines changed or deleted | 671 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |