rfc9903.original   rfc9903.txt 
Internet Y. Qu Internet Engineering Task Force (IETF) Y. Qu
Internet-Draft Futurewei Technologies Request for Comments: 9903 Futurewei Technologies
Intended status: Standards Track A. Lindem Category: Standards Track A. Lindem
Expires: 10 November 2025 LabN Consulting, L.L.C. ISSN: 2070-1721 LabN Consulting, L.L.C.
J. Zhang J. Zhang
Juniper Networks Juniper Networks
I. Chen I. Chen
The MITRE Corporation The MITRE Corporation
9 May 2025 November 2025
A YANG Data Model for OSPF Segment Routing over the MPLS Data Plane A YANG Data Model for OSPF Segment Routing over the MPLS Data Plane
draft-ietf-ospf-sr-yang-50
Abstract Abstract
This document defines a YANG data model that can be used to manage This document defines a YANG data model that can be used to manage
OSPF Extensions for Segment Routing over the MPLS data plane. OSPF extensions for Segment Routing over the MPLS 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 10 November 2025. 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/rfc9903.
Copyright Notice Copyright Notice
Copyright (c) 2025 IETF Trust and the persons identified as the Copyright (c) 2025 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. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Overview
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 1.1. Requirements Language
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Tree Diagrams
2. OSPF Segment Routing over MPLS YANG Data Model Scope . . . . 3 2. OSPF Segment Routing over MPLS YANG Data Model Scope
3. OSPF Segment Routing over MPLS YANG Module . . . . . . . . . 4 3. OSPF Segment Routing over MPLS YANG Module
4. Security Considerations . . . . . . . . . . . . . . . . . . . 33 4. Security Considerations
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35 5. IANA Considerations
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 6. References
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.1. Normative References
7.1. Normative References . . . . . . . . . . . . . . . . . . 35 6.2. Informative References
7.2. Informative References . . . . . . . . . . . . . . . . . 38 Appendix A. A Configuration Example
Appendix A. A Configuration Example . . . . . . . . . . . . . . 39 Appendix B. Full Tree Diagram
Appendix B. Full Tree Diagram . . . . . . . . . . . . . . . . . 42 Acknowledgements
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 52 Authors' Addresses
1. Overview 1. Overview
This document defines a YANG data model [RFC7950] that can be used to This document defines a YANG data model [RFC7950] that can be used to
manage OSPFv2 extensions for Segment Routing [RFC8665] and OSPFv3 manage OSPFv2 extensions for Segment Routing [RFC8665] and OSPFv3
extensions for Segment Routing [RFC8666] over the MPLS data plane. extensions for Segment Routing [RFC8666] over the MPLS data plane.
The defined YANG data model is an augmentation to the OSPF YANG data The defined YANG data model is an augmentation to the OSPF YANG data
model [RFC9129]. model [RFC9129].
The YANG data model in this document conforms to the Network The YANG data model in this document conforms to the Network
Management Datastore Architecture (NMDA) [RFC8342]. Management Datastore Architecture (NMDA) [RFC8342].
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.
1.2. Tree Diagrams 1.2. Tree Diagrams
This document uses the graphical representation of data model defined This document uses the graphical representation of a data model as
in [RFC8340]. defined in [RFC8340].
2. OSPF Segment Routing over MPLS YANG Data Model Scope 2. OSPF Segment Routing over MPLS YANG Data Model Scope
The YANG data model in this document consists of a single YANG The YANG data model in this document consists of a single YANG
module, ietf-ospf-sr-mpls. The ietf-ospf-sr-mpls YANG module module, "ietf-ospf-sr-mpls". The "ietf-ospf-sr-mpls" YANG module
includes OSPF Segment Routing Extensions for the MPLS data plane for includes OSPF Segment Routing extensions for the MPLS data plane for
both OSPFv2 [RFC8665] and OSPFv3 [RFC8666]. both OSPFv2 [RFC8665] and OSPFv3 [RFC8666].
The ietf-ospf-sr-mpls YANG module requires support for the base The "ietf-ospf-sr-mpls" YANG module requires support for the base
segment routing module [RFC9020], which defines the global segment Segment Routing module [RFC9020], which defines the global Segment
routing configuration independent of any specific routing protocol Routing configuration independent of any specific routing protocol
configuration, and support of OSPF base model [RFC9129] which defines configuration, and support of the OSPF base model [RFC9129], which
basic OSPF configuration and state. defines the basic OSPF configuration and state.
The ietf-ospf-sr-mpls module defines both the data nodes to configure The "ietf-ospf-sr-mpls" module defines both the data nodes to
OSPF segment routing MPLS extensions and the additions to the OSPF configure OSPF Segment Routing MPLS extensions and the additions to
Link State Advertisements (LSAs) necessary to support SR-MPLS. The the OSPF Link State Advertisements (LSAs) necessary to support
OSPF configuration includes: Segment Routing over MPLS (SR-MPLS). The OSPF configuration
includes:
* OSPF instance level configuration imported from the ietf-segment- * OSPF instance level configuration imported from the "ietf-segment-
routing-mpls YANG module including the mapping server bindings and routing-mpls" YANG module, including the mapping server bindings
the per-protocol Segment Routing Global Block (SRGB) (refer to the and the per-protocol Segment Routing Global Block (SRGB) (refer to
sr-protocol grouping [RFC9020]). the "sr-protocol" grouping [RFC9020]).
* OSPF area level configuration which enables segment routing over * OSPF area level configuration, which enables Segment Routing over
MPLS on all interfaces as wall as advertisement of segment routing MPLS on all interfaces as well as advertisement of Segment Routing
over MPLS information in Link State Advertisements (LSAs). over MPLS information in Link State Advertisements (LSAs).
* OSPF interface level configuration for adjacency SIDs * OSPF interface level configuration for Adjacency Segment
corresponding to specific neighbors on multi-access interfaces Identifiers (Adj-SIDs) corresponding to specific neighbors on
(OSPF interface type broadcast or Non-Broadcast Multi-Access multi-access interfaces (OSPF interface type broadcast or Non-
(NBMA)). The adjacency-sid definitions are imported from tht Broadcast Multi-Access (NBMA)). The adjacency-sid definitions are
ietf-segment-routing-mpls YANG module (refer to the igp-interface imported from the "ietf-segment-routing-mpls" YANG module (refer
grouping [RFC9020]). to the "igp-interface" grouping [RFC9020]).
* OSPF interface level configuration for Topology-Independent Loop- * OSPF interface level configuration for Topology Independent Loop-
Free Alternative (TI-LFA) using the MPLS data plane. TI-LFA is Free Alternative (TI-LFA) using the MPLS data plane. TI-LFA is
described in [I-D.ietf-rtgwg-segment-routing-ti-lfa]. described in [RFC9855].
The operational state (read-only) additions to specifc to OSPFv2 LSA The operational state (read-only) additions specific to OSPFv2 LSA
include: include:
* OSPFv2 extended range TLV encodings [RFC8665] in the OSPF * OSPFv2 extended range TLV encodings [RFC8665] in the OSPF Extended
Extended-Prefix Opaque LSA [RFC7684].
* OSPFv2 Prefix SID Sub-TLV encodings [RFC8665] included the OSPF
Extended Prefix TLV which is advertised in the OSPF Extended
Prefix Opaque LSA [RFC7684]. Prefix Opaque LSA [RFC7684].
* OSPFv2 Prefix SID Sub-TLV encodings [RFC8665] included the OSPF * OSPFv2 Prefix-SID Sub-TLV encodings [RFC8665], including the OSPF
Extended Prefix TLV which is advertised in the OSPF Extended Extended Prefix TLV, which is advertised in the OSPF Extended
Prefix Opaque LSA [RFC7684]. Prefix Opaque LSA [RFC7684].
* OSPFv2 SR-Algorithm, SID/Label Range TLVs, SR Local Block TLVs, * OSPFv2 SR-Algorithm, SID/Label Range TLV, SR Local Block TLV, and
Segment Routing Mapping Server (SRMS) preference TLV [RFC8665] Segment Routing Mapping Server (SRMS) Preference TLV [RFC8665]
advertised in the OSPFv2 Router Information Opaque LSA [RFC7770]. advertised in the OSPFv2 Router Information Opaque LSA [RFC7770].
The operational state (read-only) additions to specifc to OSPFv3 LSA The operational state (read-only) additions specific to OSPFv3 LSA
include: include:
* OSPFv3 extended range TLV encodings [RFC8666] in the OSPFv3 E- * OSPFv3 extended range TLV encodings [RFC8666] in the OSPFv3 E-
Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA, Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA,
and E-Type-7-LSA [RFC8362]. and E-Type-7-LSA [RFC8362].
* OSPFv3 extended range TLV encodings [RFC8666] in the OSPFv3 E-
Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA,
and E-Type-7-LSA [RFC8362].
* OSPFv3 Prefix-SID Sub-TLV encodings [RFC8666] in the OSPFv3 Intra- * OSPFv3 Prefix-SID Sub-TLV encodings [RFC8666] in the OSPFv3 Intra-
Area Prefix TLV, Inter-Area Prefix TLV, External Prefix TLV, and Area-Prefix TLV, Inter-Area-Prefix TLV, External-Prefix TLV, and
OSPFv3 Extended Prefix Range TLV [RFC8362]. OSPFv3 Extended Prefix Range TLV [RFC8362].
* OSPFv3 Adj-SID Sub-TLV [RFC8666] in the OSPFv3 Router-Link TLV * OSPFv3 Adj-SID Sub-TLV [RFC8666] in the OSPFv3 Router-Link TLV
[RFC8362]. [RFC8362].
* OSPFv3 Adj-SID Sub-TLV [RFC8666] in the OSPFv3 Router-Link TLV
[RFC8362].
* OSPFv3 LAN Adj-SID Sub-TLV [RFC8666] in the OSPFv3 Router-Link TLV * OSPFv3 LAN Adj-SID Sub-TLV [RFC8666] in the OSPFv3 Router-Link TLV
[RFC8362]. [RFC8362].
* OSPFv3 SR-Algorithm, SID/Label Range TLVs, SR Local Block TLVs, * OSPFv3 SR-Algorithm, SID/Label Range TLV, SR Local Block TLV, and
Segment Routing Mapping Server (SRMS) preference TLV [RFC8666] Segment Routing Mapping Server (SRMS) Preference TLV [RFC8666]
advertised in the OSPFv3 Router Information LSA [RFC7770]. advertised in the OSPFv3 Router Information LSA [RFC7770].
3. OSPF Segment Routing over MPLS YANG Module 3. OSPF Segment Routing over MPLS YANG Module
[RFC2328], [RFC4915], [RFC5340], [RFC6991], [RFC8102], [RFC8294], [RFC2328], [RFC4915], [RFC5340], [RFC6991], [RFC8102], [RFC8294],
[RFC8349], [RFC9587], and [I-D.ietf-rtgwg-segment-routing-ti-lfa] are [RFC8349], [RFC9587], and [RFC9855] are referenced in the YANG
referenced in the YANG module. module.
<CODE BEGINS> file "ietf-ospf-sr-mpls@2025-05-09.yang" <CODE BEGINS> file "ietf-ospf-sr-mpls@2025-11-21.yang"
module ietf-ospf-sr-mpls { module ietf-ospf-sr-mpls {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls"; namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls";
prefix ospf-sr-mpls; prefix ospf-sr-mpls;
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
skipping to change at page 6, line 4 skipping to change at line 216
import ietf-ospf { import ietf-ospf {
prefix ospf; prefix ospf;
reference reference
"RFC 9129: YANG Data Model for the OSPF Protocol"; "RFC 9129: YANG Data Model for the OSPF Protocol";
} }
import ietf-ospfv3-extended-lsa { import ietf-ospfv3-extended-lsa {
prefix ospfv3-e-lsa; prefix ospfv3-e-lsa;
reference reference
"RFC 9587: YANG Data Model for OSPFv3 Extended LSAs"; "RFC 9587: YANG Data Model for OSPFv3 Extended LSAs";
} }
organization organization
"IETF LSR - Link State Routing Working Group"; "IETF LSR - Link State Routing Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/lsr/> "WG Web: <https://datatracker.ietf.org/wg/lsr/>
WG List: <mailto:lsr@ietf.org> WG List: <mailto:lsr@ietf.org>
Author: Yingzhen Qu Author: Yingzhen Qu
<mailto:yingzhen.ietf@gmail.com> <mailto:yingzhen.ietf@gmail.com>
Author: Acee Lindem Author: Acee Lindem
<mailto:acee.ietf@gmail.com> <mailto:acee.ietf@gmail.com>
Author: Derek Yeung Author: Derek Yeung
<mailto:derek@arrcus.com> <mailto:derek@arrcus.com>
Author: Jeffrey Zhang Author: Jeffrey Zhang
<mailto:zzhang@juniper.net> <mailto:zzhang@juniper.net>
Author: Ing-Wher Chen Author: Ing-Wher Chen
<mailto:ingwherchen@mitre.org>"; <mailto:ingwherchen@mitre.org>";
description description
"This YANG module defines the generic configuration "This YANG module defines the generic configuration
and operational state for OSPF Segment Routing (SR). and operational state for OSPF Segment Routing (SR).
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here.
Copyright (c) 2025 IETF Trust and the persons Copyright (c) 2025 IETF Trust and the persons
identified as authors of the code. All rights reserved. identified as authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Revised BSD License to the license terms contained in, the Revised BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
All revisions of IETF and IANA published modules can be found All revisions of IETF and IANA published modules can be found
at the YANG Parameters registry at the YANG Parameters registry
(https://www.iana.org/assignments/yang-parameters). (https://www.iana.org/assignments/yang-parameters).
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL This version of this YANG module is part of RFC 9903; see
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here.
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
// RFC Ed.: Replace XXXX with actual RFC number and remove revision 2025-11-21 {
// this note
revision 2025-05-09 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing for "RFC 9903: A YANG Data Model for OSPF Segment Routing
over MPLS Data Plane"; over the MPLS Data Plane";
} }
// RFC Ed.: Replace XXXX with actual RFC number.
// Also, replace '2025-04-14' with the module publication date
// in the format (YYYY-MM-DD) and remove this note.
feature remote-lfa-sr { feature remote-lfa-sr {
description description
"Enhance rLFA to use SR path."; "Enhance Remote Loop-Free Alternate (RLFA) to use an SR path.";
reference reference
"RFC 8102: Remote-LFA Node Protection and Manageability"; "RFC 8102: Remote-LFA Node Protection and Manageability";
} }
feature ti-lfa { feature ti-lfa {
description description
"Topology-Independent Loop-Free Alternate (TI-LFA) "Topology Independent Loop-Free Alternate (TI-LFA)
computation using segment routing."; computation using segment routing.";
reference reference
"draft-ietf-rtgwg-segment-routing-ti-lfa: "RFC 9855: Topology Independent Fast Reroute Using Segment
Topology-Independent Fast Reroute using Segment Routing"; Routing";
} }
identity prefix-sid-flag { identity prefix-sid-flag {
description description
"Base identity for prefix SID sub-TLV flags."; "Base identity for Prefix-SID Sub-TLV flags.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 5 "RFC 8665: OSPF Extensions for Segment Routing, Section 5
RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
} }
identity np-flag { identity np-flag {
base prefix-sid-flag; base prefix-sid-flag;
description description
"No-PHP flag."; "No-PHP (No Penultimate Hop-Popping) flag.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 5 "RFC 8665: OSPF Extensions for Segment Routing, Section 5
RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
} }
identity m-flag { identity m-flag {
base prefix-sid-flag; base prefix-sid-flag;
description description
"Mapping server flag."; "Mapping server flag.";
reference reference
skipping to change at page 8, line 37 skipping to change at line 339
base prefix-sid-flag; base prefix-sid-flag;
description description
"Local flag."; "Local flag.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 5 "RFC 8665: OSPF Extensions for Segment Routing, Section 5
RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
} }
identity extended-prefix-range-flag { identity extended-prefix-range-flag {
description description
"Base identity for extended prefix range TLV flags."; "Base identity for Extended Prefix Range TLV flags.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 4 "RFC 8665: OSPF Extensions for Segment Routing, Section 4
RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5"; RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5";
} }
identity ia-flag { identity ia-flag {
base extended-prefix-range-flag; base extended-prefix-range-flag;
description description
"Inter-Area flag. Note that this is only applicable to OSPFv2 "Inter-Area flag. Note that this is only applicable to OSPFv2
since OSPFv3 advertises separate Inter-Area extended-LSA."; since OSPFv3 advertises separate Inter-Area extended-LSA.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 4"; "RFC 8665: OSPF Extensions for Segment Routing, Section 4";
} }
identity adj-sid-flag { identity adj-sid-flag {
description description
"Base identity for Adj-SID sub-TLV flags."; "Base identity for Adj-SID Sub-TLV flags.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 6 "RFC 8665: OSPF Extensions for Segment Routing, Section 6
RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7";
} }
identity b-flag { identity b-flag {
base adj-sid-flag; base adj-sid-flag;
description description
"Backup flag."; "Backup flag.";
reference reference
skipping to change at page 9, line 33 skipping to change at line 383
description description
"Value/Index flag - corresponds to V-Flag in references."; "Value/Index flag - corresponds to V-Flag in references.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 6 "RFC 8665: OSPF Extensions for Segment Routing, Section 6
RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7";
} }
identity lg-flag { identity lg-flag {
base adj-sid-flag; base adj-sid-flag;
description description
"Local/Global flag - corresponds to L-flag in references."; "Local/Global flag - corresponds to L-Flag in references.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 6 "RFC 8665: OSPF Extensions for Segment Routing, Section 6
RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7";
} }
identity g-flag { identity g-flag {
base adj-sid-flag; base adj-sid-flag;
description description
"Group flag."; "Group flag.";
reference reference
skipping to change at page 10, line 4 skipping to change at line 402
"Group flag."; "Group flag.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 6 "RFC 8665: OSPF Extensions for Segment Routing, Section 6
RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7";
} }
identity p-flag { identity p-flag {
base adj-sid-flag; base adj-sid-flag;
description description
"Persistent flag."; "Persistent flag.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 6 "RFC 8665: OSPF Extensions for Segment Routing, Section 6
RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7";
} }
/* Groupings */ /* Groupings */
grouping sid-tlv-encoding { grouping sid-tlv-encoding {
description description
"SID TLV Encoding - 20-bit label or 32-bit SID index whose "SID TLV Encoding - 20-bit label or 32-bit SID index whose
interpretation is dependent on the TLV length (3 for an interpretation is dependent on the TLV length (3 for an
MPLS label or 4 for a 32-bit value) or the TLV V-Flag and MPLS label or 4 for a 32-bit value) or the TLV V-Flag and
L-Flag settings: L-Flag settings:
If the V-Flag is set to 0 and L-Flag is set to 0: If the V-Flag is set to 0 and L-Flag is set to 0:
The SID/Index/Label field is a 4-octet index defining The SID/Index/Label field is a 4-octet index defining
the offset in the SID/Label space advertised by this the offset in the SID/Label space advertised by this
router. router.
If V-Flag is set to 1 and L-Flag is set to 1: The If the V-Flag is set to 1 and L-Flag is set to 1:
ID/Index/Label field is a 3-octet local label where the The SID/Index/Label field is a 3-octet local label where the
20 rightmost bits are used for encoding the label value."; 20 rightmost bits are used for encoding the label value.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 2.1 "RFC 8665: OSPF Extensions for Segment Routing, Section 2.1
RFC 8665: OSPF Extensions for Segment Routing, Section 5 RFC 8665: OSPF Extensions for Segment Routing, Section 5
RFC 8666: OSPFv3 Extensions for Segment Routing, Section 3"; RFC 8666: OSPFv3 Extensions for Segment Routing, Section 3";
choice sid { choice sid {
case sid-label { case sid-label {
leaf label-value { leaf label-value {
type uint32 { type uint32 {
range "0 .. 1048575"; range "0 .. 1048575";
} }
description description
"A 20-bit MPLS Label"; "A 20-bit MPLS label.";
} }
} }
case sid-index { case sid-index {
leaf index-value { leaf index-value {
type uint32; type uint32;
description description
"Index into a label space advertised by this router."; "Index into a label space advertised by this router.";
} }
} }
description description
skipping to change at page 11, line 4 skipping to change at line 450
type uint32; type uint32;
description description
"Index into a label space advertised by this router."; "Index into a label space advertised by this router.";
} }
} }
description description
"Choice of either a 20-bit MPLS label or 32-bit index into "Choice of either a 20-bit MPLS label or 32-bit index into
an advertised label space."; an advertised label space.";
} }
} }
grouping ospfv2-prefix-sid-sub-tlvs { grouping ospfv2-prefix-sid-sub-tlvs {
description description
"OSPFv2 Prefix Segment ID (SID) sub-TLVs."; "OSPFv2 Prefix Segment ID (SID) Sub-TLVs.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 5";
(Section 5)";
container prefix-sid-sub-tlvs { container prefix-sid-sub-tlvs {
description description
"Prefix SID sub-TLV."; "Prefix-SID Sub-TLV.";
list prefix-sid-sub-tlv { list prefix-sid-sub-tlv {
description description
"Prefix SID sub-TLV."; "Prefix-SID Sub-TLV.";
container prefix-sid-flags { container prefix-sid-flags {
leaf-list flag { leaf-list flag {
type identityref { type identityref {
base prefix-sid-flag; base prefix-sid-flag;
} }
description description
"Prefix SID Sub-TLV flags."; "Prefix-SID Sub-TLV flags.";
} }
description description
"Segment Identifier (SID) Flags."; "Segment Identifier (SID) flags.";
} }
leaf mt-id { leaf mt-id {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
} }
description description
"Multi-topology ID."; "Multi-topology ID.";
reference reference
"RFC 4915: Multi-Topology (MT) Routing in OSPF"; "RFC 4915: Multi-Topology (MT) Routing in OSPF";
} }
leaf algorithm { leaf algorithm {
type identityref { type identityref {
base sr-cmn:prefix-sid-algorithm; base sr-cmn:prefix-sid-algorithm;
} }
description description
"Algorithm associated with the prefix-SID."; "Algorithm associated with the Prefix-SID.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
grouping ospfv2-extended-prefix-range-tlvs { grouping ospfv2-extended-prefix-range-tlvs {
description description
"OSPFv2 Extended prefix range TLV grouping."; "OSPFv2 Extended Prefix Range TLV grouping.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 4";
(Section 4)";
container extended-prefix-range-tlvs { container extended-prefix-range-tlvs {
description description
"List of range of prefixes."; "List of range of prefixes.";
list extended-prefix-range-tlv { list extended-prefix-range-tlv {
description description
"Range of prefixes."; "Range of prefixes.";
leaf prefix-length { leaf prefix-length {
type uint8; type uint8;
description description
"Length of prefix in bits."; "Length of prefix in bits.";
skipping to change at page 12, line 34 skipping to change at line 527
description description
"Number of prefixes covered by the "Number of prefixes covered by the
advertisement."; advertisement.";
} }
container extended-prefix-range-flags { container extended-prefix-range-flags {
leaf-list flag { leaf-list flag {
type identityref { type identityref {
base extended-prefix-range-flag; base extended-prefix-range-flag;
} }
description description
"Extended prefix range TLV flags."; "Extended Prefix Range TLV flags.";
} }
description description
"Extended Prefix Range TLV flags."; "Extended Prefix Range TLV flags.";
} }
leaf prefix { leaf prefix {
type inet:ipv4-prefix; type inet:ipv4-prefix;
description description
"IPv4 prefix."; "IPv4 prefix.";
} }
uses ospfv2-prefix-sid-sub-tlvs; uses ospfv2-prefix-sid-sub-tlvs;
uses ospf:unknown-tlvs; uses ospf:unknown-tlvs;
} }
} }
} }
grouping ospfv2-adj-sid-sub-tlvs { grouping ospfv2-adj-sid-sub-tlvs {
description description
"OSPFv2 Adj-SID sub-TLV grouping."; "OSPFv2 Adj-SID Sub-TLV grouping.";
container adj-sid-sub-tlvs { container adj-sid-sub-tlvs {
description description
"Adj-SID optional sub-TLVs."; "Adj-SID optional sub-TLVs.";
list adj-sid-sub-tlv { list adj-sid-sub-tlv {
description description
"List of Adj-SID sub-TLVs."; "List of Adj-SID Sub-TLVs.";
container adj-sid-flags { container adj-sid-flags {
leaf-list flag { leaf-list flag {
type identityref { type identityref {
base adj-sid-flag; base adj-sid-flag;
} }
description description
"Adj-SID sub-TLV flags."; "Adj-SID Sub-TLV flags.";
} }
description description
"Adj-SID sub-TLV flags."; "Adj-SID Sub-TLV flags.";
} }
leaf mt-id { leaf mt-id {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
} }
description description
"Multi-topology ID. Topologies range from 0-127 and "Multi-topology ID. Topologies range from 0-127 and
return of any other value would indicate an error."; return of any other value would indicate an error.";
reference reference
"RFC 4915: Multi-Topology (MT) Routing in OSPF"; "RFC 4915: Multi-Topology (MT) Routing in OSPF";
} }
leaf weight { leaf weight {
type uint8; type uint8;
description description
"Weight used for load-balancing."; "Weight used for load-balancing.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
grouping ospfv2-lan-adj-sid-sub-tlvs { grouping ospfv2-lan-adj-sid-sub-tlvs {
description description
"OSPFv2 LAN Adj-SID sub-TLV grouping."; "OSPFv2 LAN Adj-SID Sub-TLV grouping.";
container lan-adj-sid-sub-tlvs { container lan-adj-sid-sub-tlvs {
description description
"LAN Adj-SID optional sub-TLVs."; "LAN Adj-SID optional sub-TLVs.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 6";
(Section 6)";
list lan-adj-sid-sub-tlv { list lan-adj-sid-sub-tlv {
description description
"List of LAN Adj-SID sub-TLVs."; "List of LAN Adj-SID Sub-TLVs.";
container lan-adj-sid-flags { container lan-adj-sid-flags {
leaf-list flag { leaf-list flag {
type identityref { type identityref {
base adj-sid-flag; base adj-sid-flag;
} }
description description
"LAN Adj-SID sub-TLV flags."; "LAN Adj-SID Sub-TLV flags.";
} }
description description
"LAN Adj-SID sub-TLV flags."; "LAN Adj-SID Sub-TLV flags.";
} }
leaf mt-id { leaf mt-id {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
} }
description description
"Multi-topology ID. Topologies range from 0-127 and "Multi-topology ID. Topologies range from 0-127 and
return of any other value would indicate an error."; return of any other value would indicate an error.";
reference reference
"RFC 4915: Multi-Topology (MT) Routing in OSPF"; "RFC 4915: Multi-Topology (MT) Routing in OSPF";
} }
leaf weight { leaf weight {
type uint8; type uint8;
description description
"Weight used for load-balancing."; "Weight used for load-balancing.";
} }
leaf neighbor-router-id { leaf neighbor-router-id {
skipping to change at page 14, line 44 skipping to change at line 632
description description
"Neighbor router ID."; "Neighbor router ID.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
grouping sr-algorithm-tlv { grouping sr-algorithm-tlv {
description description
"SR algorithm TLV grouping."; "SR-Algorithm TLV grouping.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 3.1";
(Section 3.1)";
container sr-algorithm-tlv { container sr-algorithm-tlv {
description description
"All SR algorithm TLVs."; "All SR-Algorithm TLVs.";
leaf-list sr-algorithm { leaf-list sr-algorithm {
type identityref { type identityref {
base sr-cmn:prefix-sid-algorithm; base sr-cmn:prefix-sid-algorithm;
} }
description description
"Segment Routing (SR) algorithms that the router is "Segment Routing (SR) algorithms that the router is
currently using."; currently using.";
} }
} }
} }
grouping sid-range-tlvs { grouping sid-range-tlvs {
description description
"SID Range TLV grouping."; "SID Range TLV grouping.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 3.2";
(Section 3.2)";
container sid-range-tlvs { container sid-range-tlvs {
description description
"List of SID range TLVs."; "List of SID Range TLVs.";
list sid-range-tlv { list sid-range-tlv {
description description
"SID range TLV."; "SID Range TLV.";
leaf range-size { leaf range-size {
type rt-types:uint24; type rt-types:uint24;
description description
"SID range."; "SID range.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
grouping local-block-tlvs { grouping local-block-tlvs {
description description
"The SR local block TLV contains the "The SR Local Block TLV contains the
range of labels reserved for local SIDs."; range of labels reserved for local SIDs.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 3.3";
(Section 3.3)";
container local-block-tlvs { container local-block-tlvs {
description description
"List of SRLB TLVs."; "List of Segment Routing Local Block (SRLB) TLVs.";
list local-block-tlv { list local-block-tlv {
description description
"SRLB TLV."; "SRLB TLV.";
leaf range-size { leaf range-size {
type rt-types:uint24; type rt-types:uint24;
description description
"SID range. The return of a zero value would indicate "SID range. The return of a zero value would indicate
an error."; an error.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
grouping srms-preference-tlv { grouping srms-preference-tlv {
description description
"The SR Mapping Server (SRMS) preference TLV is "The SR Mapping Server (SRMS) Preference TLV is
used to advertise a preference associated with used to advertise a preference associated with
the node that acts as an SR Mapping Server. SR the node that acts as an SR Mapping Server. SR
Mapping Server advertisements with a higher Mapping Server advertisements with a higher
preference value are preferred over those with preference value are preferred over those with
a lower preference value."; a lower preference value.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 3.4";
(Section 3.4)";
container srms-preference-tlv { container srms-preference-tlv {
description description
"SRMS Preference TLV."; "SRMS Preference TLV.";
leaf preference { leaf preference {
type uint8; type uint8;
description description
"SRMS preference TLV, value from 0 to 255 with "SRMS Preference TLV, value from 0 to 255 with
255 being the most preferred."; 255 being the most preferred.";
} }
} }
} }
grouping ospfv3-prefix-sid-sub-tlvs { grouping ospfv3-prefix-sid-sub-tlvs {
description description
"OSPFv3 Prefix Segment ID (SID) sub-TLVs."; "OSPFv3 Prefix-SID Sub-TLVs.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
(Section 6)";
container prefix-sid-sub-tlvs { container prefix-sid-sub-tlvs {
description description
"Prefix SID sub-TLV."; "Prefix-SID Sub-TLV.";
list prefix-sid-sub-tlv { list prefix-sid-sub-tlv {
description description
"Prefix SID sub-TLV."; "Prefix-SID Sub-TLV.";
container ospfv3-prefix-sid-flags { container ospfv3-prefix-sid-flags {
leaf-list flag { leaf-list flag {
type identityref { type identityref {
base prefix-sid-flag; base prefix-sid-flag;
} }
description description
"Prefix SID sub-TLV flags."; "Prefix-SID Sub-TLV flags.";
} }
description description
"Segment Identifier (SID) Flags."; "Segment Identifier (SID) flags.";
} }
leaf algorithm { leaf algorithm {
type identityref { type identityref {
base sr-cmn:prefix-sid-algorithm; base sr-cmn:prefix-sid-algorithm;
} }
description description
"Algorithm associated with the prefix-SID."; "Algorithm associated with the Prefix-SID.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
grouping ospfv3-extended-prefix-range-tlvs { grouping ospfv3-extended-prefix-range-tlvs {
description description
"OSPFv3 Extended prefix range TLV grouping."; "OSPFv3 Extended Prefix Range TLV grouping.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5";
(Section 5)";
container ospfv3-extended-prefix-range-tlvs { container ospfv3-extended-prefix-range-tlvs {
description description
"List of extended prefix range TLVs."; "List of Extended Prefix Range TLVs.";
list extended-prefix-range-tlv { list extended-prefix-range-tlv {
description description
"Range of prefixes."; "Range of prefixes.";
leaf prefix-length { leaf prefix-length {
type uint8; type uint8;
description description
"Length of prefix in bits."; "Length of prefix in bits.";
} }
leaf af { leaf af {
type iana-rt-types:address-family; type iana-rt-types:address-family;
skipping to change at page 18, line 15 skipping to change at line 789
"IPv4 or IPv6 prefix."; "IPv4 or IPv6 prefix.";
} }
uses ospfv3-prefix-sid-sub-tlvs; uses ospfv3-prefix-sid-sub-tlvs;
uses ospf:unknown-tlvs; uses ospf:unknown-tlvs;
} }
} }
} }
grouping ospfv3-adj-sid-sub-tlvs { grouping ospfv3-adj-sid-sub-tlvs {
description description
"OSPFv3 Adj-SID sub-TLV grouping."; "OSPFv3 Adj-SID Sub-TLV grouping.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7";
(Section 7)";
container adj-sid-sub-tlvs { container adj-sid-sub-tlvs {
description description
"Adj-SID optional sub-TLVs."; "Adj-SID optional sub-TLVs.";
list adj-sid-sub-tlv { list adj-sid-sub-tlv {
description description
"List of Adj-SID sub-TLVs."; "List of Adj-SID Sub-TLVs.";
container adj-sid-flags { container adj-sid-flags {
leaf-list flag { leaf-list flag {
type identityref { type identityref {
base adj-sid-flag; base adj-sid-flag;
} }
description description
"Adj-SID sub-tlv flags."; "Adj-SID Sub-tlv flags.";
} }
description description
"Adj-sid sub-tlv flags."; "Adj-SID Sub-tlv flags.";
} }
leaf weight { leaf weight {
type uint8; type uint8;
description description
"Weight used for load-balancing."; "Weight used for load-balancing.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
grouping ospfv3-lan-adj-sid-sub-tlvs { grouping ospfv3-lan-adj-sid-sub-tlvs {
description description
"OSPFv3 LAN Adj-SID sub-TLV grouping."; "OSPFv3 LAN Adj-SID Sub-TLV grouping.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7";
(Section 7)";
container lan-adj-sid-sub-tlvs { container lan-adj-sid-sub-tlvs {
description description
"LAN Adj-SID optional sub-TLVs."; "LAN Adj-SID optional sub-TLVs.";
list lan-adj-sid-sub-tlv { list lan-adj-sid-sub-tlv {
description description
"List of LAN Adj-SID sub-TLVs."; "List of LAN Adj-SID Sub-TLVs.";
container lan-adj-sid-flags { container lan-adj-sid-flags {
leaf-list flag { leaf-list flag {
type identityref { type identityref {
base adj-sid-flag; base adj-sid-flag;
} }
description description
"LAN Adj-SID sub-TLV flags."; "LAN Adj-SID Sub-TLV flags.";
} }
description description
"LAN Adj-SID sub-TLV flags."; "LAN Adj-SID Sub-TLV flags.";
} }
leaf weight { leaf weight {
type uint8; type uint8;
description description
"Weight used for load-balancing."; "Weight used for load-balancing.";
} }
leaf neighbor-router-id { leaf neighbor-router-id {
type rt-types:router-id; type rt-types:router-id;
description description
"Neighbor router ID."; "Neighbor router ID.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
/* /*
* Augmentations for OSPF SR MPLS Configuration (read-write) * Augmentations for OSPF SR-MPLS Configuration (read-write)
* data nodes. * data nodes.
*/ */
augment "/rt:routing/rt:control-plane-protocols" augment "/rt:routing/rt:control-plane-protocols"
+ "/rt:control-plane-protocol/ospf:ospf" { + "/rt:control-plane-protocol/ospf:ospf" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" {
description description
"This augments the OSPF routing protocol when used."; "This augments the OSPF routing protocol when used.";
} }
description description
"This augments the OSPF protocol configuration with segment "This augments the OSPF protocol configuration with Segment
routing over the MPLS data plane. The following semantic Routing over the MPLS data plane. The following semantic
validation be performed for the configuration data: validation is to be performed for the configuration data:
- Assure the binding policies prefixes do not overlap.";
- Assure the binding policies prefixes do not overlapp.";
reference reference
"RFC 9020 - YANG Data Model for Segment Routing"; "RFC 9020: YANG Data Model for Segment Routing";
uses sr-mpls:sr-control-plane; uses sr-mpls:sr-control-plane;
container protocol-srgb { container protocol-srgb {
if-feature "sr-mpls:protocol-srgb"; if-feature "sr-mpls:protocol-srgb";
uses sr-cmn:srgb; uses sr-cmn:srgb;
description description
"Per-protocol SRGB."; "Per-protocol SRGB.";
} }
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/" + "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area" { + "ospf:areas/ospf:area" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospf') and " + "rt:control-plane-protocol/rt:type, 'ospf:ospf') and "
+ "/rt:routing/rt:control-plane-protocols" + "/rt:routing/rt:control-plane-protocols"
+ "/rt:control-plane-protocol/ospf:ospf" + "/rt:control-plane-protocol/ospf:ospf"
+ "/ospf-sr-mpls:segment-routing/" + "/ospf-sr-mpls:segment-routing/"
+ "ospf-sr-mpls:enabled = 'true'" { + "ospf-sr-mpls:enabled = 'true'" {
description description
"This augments the OSPF area configuration when segment "This augments the OSPF area configuration when Segment
routing is enabled at the OSPF instance level."; Routing is enabled at the OSPF instance level.";
} }
container segment-routing { container segment-routing {
presence "When present segment routing over MPLS is enabled presence "When present, Segment Routing over MPLS is enabled
for the area."; for the area.";
description description
"OSPF area level segment routing configuration. Enable "OSPF area level Segment Routing configuration. Enables
segment routing over MPLS on all interfaces and enables Segment Routing over MPLS on all interfaces, and enables
advertisement of Link State Advertisements (LSAs) and TLVs advertisement of Link State Advertisements (LSAs) and TLVs
supporting segment routing over MPLS"; supporting Segment Routing over MPLS.";
} }
description description
"This augments the OSPF protocol area configuration with "This augments the OSPF protocol area configuration with
segment routing."; Segment Routing.";
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/" + "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospf') and " + "rt:control-plane-protocol/rt:type, 'ospf:ospf') and "
+ "/rt:routing/rt:control-plane-protocols/" + "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/" + "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area/ospf-sr-mpls:segment-routing" { + "ospf:areas/ospf:area/ospf-sr-mpls:segment-routing" {
description description
"This augments the OSPF interface configuration when used."; "This augments the OSPF interface configuration when used.";
} }
description description
"This augments the OSPF protocol interface "This augments the OSPF protocol interface
configuration with segment routing."; configuration with Segment Routing.";
reference reference
"RFC 9020 - YANG Data Model for Segment Routing"; "RFC 9020: YANG Data Model for Segment Routing";
uses sr-mpls:igp-interface { uses sr-mpls:igp-interface {
augment "segment-routing/adjacency-sid/adj-sids" { augment "segment-routing/adjacency-sid/adj-sids" {
when "((../../../ospf:interface-type = 'broadcast') or when "((../../../ospf:interface-type = 'broadcast') or
(../../../ospf:interface-type = 'non-broadcast'))" { (../../../ospf:interface-type = 'non-broadcast'))" {
description description
"This augments broadcast and non-broadcast multi-access "This augments broadcast and non-broadcast multi-access
interface segment routing interface configuration."; interface Segment Routing interface configuration.";
} }
description description
"This augments LAN interface adj-sid with neighbor-id."; "This augments LAN interface adj-sid with neighbor-id.";
leaf neighbor-id { leaf neighbor-id {
type inet:ip-address; type inet:ip-address;
mandatory true; mandatory true;
description description
"Neighbor's Router ID, IPv4 address, or IPv6 address. "Neighbor's Router ID, IPv4 address, or IPv6 address.
Specification is optional and, if specified, SHOULD Specification is optional and, if specified, SHOULD
specify a neighbor reachable via the interface."; specify a neighbor reachable via the interface.";
skipping to change at page 21, line 43 skipping to change at line 959
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/" + "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/"
+ "ospf:fast-reroute/ospf:lfa" { + "ospf:fast-reroute/ospf:lfa" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" {
description description
"This augments the OSPF routing protocol when used."; "This augments the OSPF routing protocol when used.";
} }
description description
"This augments the OSPF protocol IP-FRR with TI-LFA."; "This augments the OSPF protocol IP Fast Reroute (IP-FRR) with
TI-LFA.";
container ti-lfa { container ti-lfa {
if-feature "ti-lfa"; if-feature "ti-lfa";
description description
"Topology-Independent Loop Free Alternate "Topology Independent Loop Free Alternate
(TI-LFA) support."; (TI-LFA) support.";
reference reference
"draft-ietf-rtgwg-segment-routing-ti-lfa: "RFC 9855: Topology Independent Fast Reroute Using Segment
Topology-Independent Fast Reroute using Segment Routing"; Routing";
leaf enabled { leaf enabled {
type boolean; type boolean;
default "false"; default "false";
description description
"Enable TI-LFA computation."; "Enable TI-LFA computation.";
} }
container selection-tie-breakers { container selection-tie-breakers {
container node-protection { container node-protection {
presence "Presence of container enables the node presence "Presence of container enables the node
protection tie-breaker."; protection tie-breaker.";
leaf priority { leaf priority {
type uint8; type uint8;
default "128"; default "128";
description description
"Priority for node protection tie-breaker with "Priority for node protection tie-breaker with
a lower priority being more preferred. By default, a lower priority being more preferred. By default,
the priority is in the middle of the priority range."; the priority is in the middle of the priority range.";
} }
description description
"Enable node protection as a TI-LFA path "Enable node protection as a TI-LFA path
selection tie-breaker. A path providing node selection tie-breaker. A path providing node
protection will be selected over one that protection will be selected over one that
doesn't provide node protection."; doesn't provide node protection.";
} }
container srlg-disjoint { container srlg-disjoint {
presence "Presence of container enables the SRLG presence "Presence of container enables the SRLG
disjoint tie-breaker"; disjoint tie-breaker.";
leaf priority { leaf priority {
type uint8; type uint8;
default "128"; default "128";
description description
"Priority for SRLG disjoint tie-breaker with "Priority for Shared Risk Link Group (SRLG)
a lower priority being more preferred. By default, disjoint tie-breaker with a lower priority being
the priority is in the middle of the priority range."; more preferred. By default, the priority is in the
middle of the priority range.";
} }
description description
"Enable SRLG (Sharsed Resource Link Group) "Enable SRLG disjoint as a TI-LFA path selection
disjoint as a TI-LFA path selection tie-breaker. tie-breaker. A path providing a node with a disjoint
A path providing node a disjoint path for SRLG path for SRLG links from the primary path will be
links from the primary path will be selected over selected over a path that doesn't provide an SRLG
one that doesn't provide an SRLG disjoint path."; disjoint path.";
} }
description description
"Configure path selection tie-breakers and their "Configure path selection tie-breakers and their
respective priorities for the TI-LFA computation. respective priorities for the TI-LFA computation.
multiple tie-breakers and priorities configured may Multiple tie-breakers and priorities may be configured.";
be configured.";
} }
} }
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/" + "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/"
+ "ospf:fast-reroute/ospf:lfa/ospf:remote-lfa" { + "ospf:fast-reroute/ospf:lfa/ospf:remote-lfa" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" {
description description
"This augments the OSPF routing protocol when used."; "This augments the OSPF routing protocol when used.";
} }
description description
"This augments the OSPF protocol IP-FRR with remote LFA."; "This augments the OSPF protocol IP-FRR with Remote LFA.";
reference reference
"draft-ietf-rtgwg-segment-routing-ti-lfa: "RFC 9855: Topology Independent Fast Reroute Using Segment
Topology-Independent Fast Reroute using Segment Routing"; Routing";
leaf use-segment-routing-path { leaf use-segment-routing-path {
if-feature "remote-lfa-sr"; if-feature "remote-lfa-sr";
type boolean; type boolean;
default "false"; default "false";
description description
"Force remote LFA to use segment routing path instead of LDP "Force Remote LFA to use a Segment Routing path instead of an
path. The value of this leaf is in effect only when LDP path. The value of this leaf is in effect only when
remote-lfa is enabled."; remote-lfa is enabled.";
} }
} }
/* Operational states */ /* Operational states */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/" + "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/"
+ "ospf:neighbors/ospf:neighbor" { + "ospf:neighbors/ospf:neighbor" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" {
description description
"This augments the OSPF routing protocol when used."; "This augments the OSPF routing protocol when used.";
} }
description description
"This augments OSPF interface adjancency-sid state."; "This augments the OSPF interface adjacency-sid state.";
list adjacency-sid { list adjacency-sid {
description description
"List of adjacency Segment IDs."; "List of adjacency Segment IDs.";
leaf value { leaf value {
type uint32; type uint32;
description description
"Value of the Adj-SID."; "Value of the Adj-SID.";
} }
leaf weight { leaf weight {
type uint8; type uint8;
description description
"Weight associated with the adjacency SID."; "Weight associated with the adjacency SID.";
} }
leaf protection-requested { leaf protection-requested {
type boolean; type boolean;
description description
"Describe if the adjacency SID is protected."; "Describe if the adjacency SID is protected.";
skipping to change at page 24, line 44 skipping to change at line 1104
+ "ospf:extended-prefix-opaque" { + "ospf:extended-prefix-opaque" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR Extended Prefix Range TLV in OSPFv2 Type 10 (area-scoped) "SR Extended Prefix Range TLV in OSPFv2 Type 10 (area-scoped)
Extended Prefix Opaque LSAs."; Extended Prefix Opaque LSAs.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 4";
(Section 4)";
uses ospfv2-extended-prefix-range-tlvs; uses ospfv2-extended-prefix-range-tlvs;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:database/" + "ospf:ospf/ospf:database/"
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/" + "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-prefix-opaque" { + "ospf:extended-prefix-opaque" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR Extended Prefix Range TLV in OSPFv2 Type 11 (AS-scoped) "SR Extended Prefix Range TLV in OSPFv2 Type 11 (AS-scoped)
Extended Prefix Opaque LSAs."; Extended Prefix Opaque LSAs.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 4";
(Section 4)";
uses ospfv2-extended-prefix-range-tlvs; uses ospfv2-extended-prefix-range-tlvs;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/" + "ospf:ospf/ospf:areas/"
+ "ospf:area/ospf:database/" + "ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/" + "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR Prefix-SID sub-TLVs for OSPFv2 Extended Prefix TLVs "SR Prefix-SID Sub-TLVs for OSPFv2 Extended Prefix TLVs
in OSPFv2 Type 10 (area-scoped) Extended Prefix Opaque LSAs."; in OSPFv2 Type 10 (area-scoped) Extended Prefix Opaque LSAs.";
uses ospfv2-prefix-sid-sub-tlvs; uses ospfv2-prefix-sid-sub-tlvs;
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 5";
(Section 5)";
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:database/" + "ospf:ospf/ospf:database/"
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/" + "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
skipping to change at page 26, line 4 skipping to change at line 1158
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:database/" + "ospf:ospf/ospf:database/"
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/" + "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR Prefix-SID sub-TLVs for OSPFv2 Extended Prefix TLVs "SR Prefix-SID Sub-TLVs for OSPFv2 Extended Prefix TLVs
in OSPFv2 Type 11 (AS-scoped) Extended Prefix Opaque LSAs."; in OSPFv2 Type 11 (AS-scoped) Extended Prefix Opaque LSAs.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 5";
(Section 5)";
uses ospfv2-prefix-sid-sub-tlvs; uses ospfv2-prefix-sid-sub-tlvs;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/" + "ospf:ospf/ospf:areas/"
+ "ospf:area/ospf:database/" + "ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/" + "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-link-opaque/ospf:extended-link-tlv" { + "ospf:extended-link-opaque/ospf:extended-link-tlv" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR TLVs for OSPFv2 Extended Link TLV in OSPFv2 Type 10 "SR TLVs for OSPFv2 Extended Link TLV in OSPFv2 Type 10
(area-scoped) Extended Link Opaque LSAs."; (area-scoped) Extended Link Opaque LSAs.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 6";
(Section 6)";
uses ospfv2-adj-sid-sub-tlvs; uses ospfv2-adj-sid-sub-tlvs;
uses ospfv2-lan-adj-sid-sub-tlvs; uses ospfv2-lan-adj-sid-sub-tlvs;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/" + "ospf:ospf/ospf:areas/"
+ "ospf:area/ospf:database/" + "ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR TLVs for OSPFv2 Router Information Type 10 (area-scoped) "SR TLVs for OSPFv2 Router Information Type 10 (area-scoped)
Opaque LSAs"; Opaque LSAs";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 3";
(Section 3)";
uses sr-algorithm-tlv; uses sr-algorithm-tlv;
uses sid-range-tlvs; uses sid-range-tlvs;
uses local-block-tlvs; uses local-block-tlvs;
uses srms-preference-tlv; uses srms-preference-tlv;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:database/" + "ospf:ospf/ospf:database/"
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR TLVs for OSPFv2 Router Information Type 11 (AS-scoped) "SR TLVs for OSPFv2 Router Information Type 11 (AS-scoped)
Opaque LSAs"; Opaque LSAs.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 3";
(Section 3)";
uses sr-algorithm-tlv; uses sr-algorithm-tlv;
uses sid-range-tlvs; uses sid-range-tlvs;
uses local-block-tlvs; uses local-block-tlvs;
uses srms-preference-tlv; uses srms-preference-tlv;
} }
/* Augmentations for OSPFv3 LSAs. */ /* Augmentations for OSPFv3 LSAs. */
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
skipping to change at page 28, line 7 skipping to change at line 1253
+ "ospf:ospfv3/ospf:body/ospf:router-information" { + "ospf:ospfv3/ospf:body/ospf:router-information" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"SR-specific TLVs for OSPFv3 Router Information LSA "SR-specific TLVs for OSPFv3 Router Information LSA
(area-scoped)."; (area-scoped).";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 4";
(Section 4)";
uses sr-algorithm-tlv; uses sr-algorithm-tlv;
uses sid-range-tlvs; uses sid-range-tlvs;
uses local-block-tlvs; uses local-block-tlvs;
uses srms-preference-tlv; uses srms-preference-tlv;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/" + "ospf:ospf/ospf:areas/"
+ "ospf:area/ospf:database/" + "ospf:area/ospf:database/"
skipping to change at page 28, line 31 skipping to change at line 1276
+ "ospf:ospfv3/ospf:body/ospf:router-information" { + "ospf:ospfv3/ospf:body/ospf:router-information" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"SR-specific TLVs for OSPFv3 Router Information LSA "SR-specific TLVs for OSPFv3 Router Information LSA
(AS-scoped)."; (AS-scoped).";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 4";
(Section 4)";
uses sr-algorithm-tlv; uses sr-algorithm-tlv;
uses sid-range-tlvs; uses sid-range-tlvs;
uses local-block-tlvs; uses local-block-tlvs;
uses srms-preference-tlv; uses srms-preference-tlv;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
skipping to change at page 29, line 23 skipping to change at line 1315
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix" { + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"SR Extended Prefix Range TLVs in OSPFv3 "SR Extended Prefix Range TLVs in OSPFv3
E-Inter-Area-Prefix LSAs."; E-Inter-Area-Prefix LSAs.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5";
(Section 5)";
uses ospfv3-extended-prefix-range-tlvs; uses ospfv3-extended-prefix-range-tlvs;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:database/" + "ospf:ospf/ospf:database/"
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/"
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external" { + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"SR Extended Prefix Range TLVs in OSPFv3 E-AS-External LSAs."; "SR Extended Prefix Range TLVs in OSPFv3 E-AS-External LSAs.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5";
(Section 5)";
uses ospfv3-extended-prefix-range-tlvs; uses ospfv3-extended-prefix-range-tlvs;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa" { + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"SR Extended Prefix Range TLVs in OSPFv3 E-NSSA LSAs."; "SR Extended Prefix Range TLVs in OSPFv3 E-NSSA LSAs.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5";
(Section 5)";
uses ospfv3-extended-prefix-range-tlvs; uses ospfv3-extended-prefix-range-tlvs;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/ospf:area/ospf:interfaces/" + "ospf:ospf/ospf:areas/ospf:area/ospf:interfaces/"
+ "ospf:interface/" + "ospf:interface/"
+ "ospf:database/ospf:link-scope-lsa-type/" + "ospf:database/ospf:link-scope-lsa-type/"
+ "ospf:link-scope-lsas/ospf:link-scope-lsa/" + "ospf:link-scope-lsas/ospf:link-scope-lsa/"
+ "ospf:version/ospf:ospfv3/ospf:ospfv3/" + "ospf:version/ospf:ospfv3/ospf:ospfv3/"
+ "ospf:body/ospfv3-e-lsa:e-link/" + "ospf:body/ospfv3-e-lsa:e-link/"
+ "ospfv3-e-lsa:e-link-tlvs/ospfv3-e-lsa:intra-prefix-tlv/" + "ospfv3-e-lsa:e-link-tlvs/ospfv3-e-lsa:intra-prefix-tlv/"
+ "ospfv3-e-lsa:sub-tlvs" { + "ospfv3-e-lsa:sub-tlvs" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"SR Prefix-SID Sub-TLV in OSPFv3 Intra-Area "SR Prefix-SID Sub-TLV in OSPFv3 Intra-Area-Prefix
Prefix TLV for OSPFv3 E-Link LSAs."; TLV for OSPFv3 E-Link LSAs.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
(Section 6)";
uses ospfv3-prefix-sid-sub-tlvs; uses ospfv3-prefix-sid-sub-tlvs;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix/" + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix/"
+ "ospfv3-e-lsa:e-intra-prefix-tlvs/" + "ospfv3-e-lsa:e-intra-prefix-tlvs/"
+ "ospfv3-e-lsa:intra-prefix-tlv/" + "ospfv3-e-lsa:intra-prefix-tlv/"
+ "ospfv3-e-lsa:sub-tlvs" { + "ospfv3-e-lsa:sub-tlvs" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
description description
"This augmentation is only valid for OSPFv3 "This augmentation is only valid for OSPFv3
E-Router LSAs"; E-Router LSAs.";
} }
description description
"SR Prefix-SID Sub-TLV in OSPFv3 Intra-Area "SR Prefix-SID Sub-TLV in OSPFv3 Intra-Area-Prefix
Prefix TLV for OSPFv3 E-Intra-Area-Prefix LSAs."; TLV for OSPFv3 E-Intra-Area-Prefix LSAs.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
(Section 6)";
uses ospfv3-prefix-sid-sub-tlvs; uses ospfv3-prefix-sid-sub-tlvs;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/" + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/"
+ "ospfv3-e-lsa:e-inter-prefix-tlvs/" + "ospfv3-e-lsa:e-inter-prefix-tlvs/"
+ "ospfv3-e-lsa:inter-prefix-tlv/" + "ospfv3-e-lsa:inter-prefix-tlv/"
+ "ospfv3-e-lsa:sub-tlvs" { + "ospfv3-e-lsa:sub-tlvs" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"SR Prefix-SID Sub-TLV in OSPFv3 Link-Scoped Intra-Area "SR Prefix-SID Sub-TLV in OSPFv3 Link-Scoped Intra-Area-Prefix
Prefix TLV for OSPFv3 E-Inter-Area-Prefix LSAs."; TLV for OSPFv3 E-Inter-Area-Prefix LSAs.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
(Section 6)";
uses ospfv3-prefix-sid-sub-tlvs; uses ospfv3-prefix-sid-sub-tlvs;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:database/" + "ospf:ospf/ospf:database/"
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/"
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/"
+ "ospfv3-e-lsa:e-external-tlvs/" + "ospfv3-e-lsa:e-external-tlvs/"
skipping to change at page 32, line 4 skipping to change at line 1434
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:database/" + "ospf:ospf/ospf:database/"
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/"
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/"
+ "ospfv3-e-lsa:e-external-tlvs/" + "ospfv3-e-lsa:e-external-tlvs/"
+ "ospfv3-e-lsa:external-prefix-tlv/" + "ospfv3-e-lsa:external-prefix-tlv/"
+ "ospfv3-e-lsa:sub-tlvs" { + "ospfv3-e-lsa:sub-tlvs" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"SR Prefix-SID Sub-TLV in OSPFv3 External Prefix TLV "SR Prefix-SID Sub-TLV in OSPFv3 External-Prefix TLV
for OSPFv3 E-AS-External LSAs."; for OSPFv3 E-AS-External LSAs.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
(Section 6)";
uses ospfv3-prefix-sid-sub-tlvs; uses ospfv3-prefix-sid-sub-tlvs;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa/" + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa/"
+ "ospfv3-e-lsa:e-external-tlvs/" + "ospfv3-e-lsa:e-external-tlvs/"
+ "ospfv3-e-lsa:external-prefix-tlv/" + "ospfv3-e-lsa:external-prefix-tlv/"
+ "ospfv3-e-lsa:sub-tlvs" { + "ospfv3-e-lsa:sub-tlvs" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"SR Prefix-SID Sub-TLV in OSPFv3 External Prefix TLV "SR Prefix-SID Sub-TLV in OSPFv3 External-Prefix TLV
for OSPFv3 E-NSSA LSAs."; for OSPFv3 E-NSSA LSAs.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
(Section 6)";
uses ospfv3-prefix-sid-sub-tlvs; uses ospfv3-prefix-sid-sub-tlvs;
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router/" + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router/"
+ "ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv/" + "ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv/"
+ "ospfv3-e-lsa:sub-tlvs" { + "ospfv3-e-lsa:sub-tlvs" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
description description
"This augmentation is only valid for OSPFv3 "This augmentation is only valid for OSPFv3
E-Router LSAs"; E-Router LSAs.";
} }
description description
"SR Sub-TLVs in OSPFv3 link-tlv for OSPFv3 E-Router LSAs"; "SR Sub-TLVs in OSPFv3 link-tlv for OSPFv3 E-Router LSAs.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7";
(Section 7)";
uses ospfv3-adj-sid-sub-tlvs; uses ospfv3-adj-sid-sub-tlvs;
uses ospfv3-lan-adj-sid-sub-tlvs; uses ospfv3-lan-adj-sid-sub-tlvs;
} }
} }
<CODE ENDS> <CODE ENDS>
Figure 1 Figure 1
4. Security Considerations 4. Security Considerations
The ietf-ospf-sr-mpls YANG module defines a data model that is This section is modeled after the template described in Section 3.7
of [YANG-GUIDE].
The "ietf-ospf-sr-mpls" YANG module defines a data model that is
designed to be accessed via YANG-based management protocols, such as designed to be accessed via YANG-based management protocols, such as
NETCONF [RFC6241] and RESTCONF [RFC8040]. These protocols have to NETCONF [RFC6241] and RESTCONF [RFC8040]. These YANG-based
use a secure transport layer (e.g., SSH [RFC4252], TLS [RFC8446], and management protocols (1) have to use a secure transport layer (e.g.,
QUIC [RFC9000]) and have to use mutual authentication. SSH [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and (2) have to use
mutual authentication.
The Network Configuration Access Control Model (NACM) [RFC8341] The Network Configuration Access Control Model (NACM) [RFC8341]
provides the means to restrict access for particular NETCONF or provides the means to restrict access for particular NETCONF or
RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or
RESTCONF protocol operations and content. RESTCONF protocol operations and content.
There are a number of data nodes defined in this YANG module that are There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable (i.e., "config true", which is the writable/creatable/deletable (i.e., "config true", which is the
default). All writable data nodes are likely to be reasonably default). All writable data nodes are likely to be sensitive or
sensitive or vulnerable in some network environments. Write vulnerable in some network environments. Write operations (e.g.,
operations (e.g., edit-config) and delete operations to these data edit-config) and delete operations to these data nodes without proper
nodes without proper protection or authentication can have a negative protection or authentication can have a negative effect on network
effect on network operations. The following subtrees and data nodes operations. The following subtrees and data nodes have particular
have particular sensitivities/vulnerabilities: sensitivities/vulnerabilities:
/ospf:ospf/segment-routing/enabled - Modification to the * /ospf:ospf/segment-routing/enabled - Modification to the
enablement for SR could result in a Denial-of-Service (DoS) enablement for SR could result in a Denial-of-Service (DoS)
attack. If an attacker disables SR, it will cause traffic attack. If an attacker disables SR, it will cause traffic
disruption. disruption.
/ospf:ospf/segment-routing/bindings - Modification to the local * /ospf:ospf/segment-routing/bindings - Modification to the local
bindings could result in a Denial-of-Service (DoS) attack. bindings could result in a Denial-of-Service (DoS) attack.
/ospf:ospf/protocol-srgb - Modification of the protocol SRGB could * /ospf:ospf/protocol-srgb - Modification of the protocol SRGB could
be used to mount a DoS attack. For example, if the protocol SRBG be used to mount a DoS attack. For example, if the protocol SRGB
size is reduced to a very small value, a lot of existing segments size is reduced to a very small value, a lot of existing segments
could no longer be installed leading to a traffic disruption. could no longer be installed, leading to a traffic disruption.
/ospf:interfaces/ospf:interface/segment-routing - Modification of * /ospf:interfaces/ospf:interface/segment-routing - Modification of
the Adjacency Segment Identifier (Adj-SID) could be used to mount the Adjacency Segment Identifier (Adj-SID) could be used to mount
a DoS attack. Change of an Adj-SID could be used to redirect a DoS attack. Change of an Adj-SID could be used to redirect
traffic. traffic.
/ospf:interfaces/ospf:interface/ospf:fast-reroute/ti-lfa - * /ospf:interfaces/ospf:interface/ospf:fast-reroute/ti-lfa -
Modification of the TI-LFA enablement could lead to traffic Modification of the TI-LFA enablement could lead to traffic
disruption. disruption.
Some of the readable data nodes in this YANG module may be considered Some of the readable data nodes in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus sensitive or vulnerable in some network environments. It is thus
important to control read access (e.g., via get, get-config, or important to control read access (e.g., via get, get-config, or
notification) to these data nodes. Specifically, the following notification) to these data nodes. Specifically, the following
subtrees and data nodes have particular sensitivities/ subtrees and data nodes have particular sensitivities/
vulnerabilities: vulnerabilities:
The module ietf-ospf-sr-mpls augments base OSPF module Link State * The "ietf-ospf-sr-mpls" module augments the base OSPF module Link
Database (LSDB) with various TLVs. Knowledge of these data nodes State Database (LSDB) with various TLVs. Knowledge of these data
can be used to attack other routers in the OSPF domain. These nodes can be used to attack other routers in the OSPF domain.
attacks are documented in [RFC9129]. These attacks are documented in [RFC9129].
Knowledge of the Prefix and Adjacency SIDs advertised in LSAs * Knowledge of the Prefix and Adjacency SIDs advertised in LSAs
could facilitate a targeted attack on the data-plane by knowing could facilitate a targeted attack on the data plane by knowing
the topology and path for MPLS segment-routed packets. Examples the topology and path for MPLS segment-routed packets. Examples
include the OSPFv2 extended-prefix-opaque-LSA/prefix-sid-sub-tlvs include the OSPFv2 extended-prefix-opaque-LSA/prefix-sid-sub-tlvs
and OSPFv3 e-router-tlvs/link-tlv/sub-tlvs/ospfv3-lan-adj-sid-sub- and OSPFv3 e-router-tlvs/link-tlv/sub-tlvs/ospfv3-lan-adj-sid-sub-
tlvs. tlvs.
Knowledge of Prefix and Adjaceny SIDs may also divulge a view of * Knowledge of Prefix and Adjacency SIDs may also divulge a view of
the segment routing network topology architecture which may be the Segment Routing network topology architecture, which may be
considered a proprietary asset. considered a proprietary asset.
Knowledge of the advertised SID/Label Range TLVs, SR Local Block * Knowledge of the advertised SID/Label Range TLVs, SR Local Block
TLVs and Segment Routing Mapping Server (SRMS) TLVs may facilitate TLVs, and Segment Routing Mapping Server (SRMS) TLVs may
a Denial of Service (DoS) attack on the advertising node's SR and facilitate a Denial of Service (DoS) attack on the advertising
SRMS functionality. Examples include augmentations to the OSPFv2 node's SR and SRMS functionality. Examples include augmentations
ri-opaque/sid-range-tlvs and OSPFv3 router-information/local- to the OSPFv2 ri-opaque/sid-range-tlvs and OSPFv3 router-
block-tlvs. information/local-block-tlvs.
This YANG module uses groupings from other YANG modules that define This YANG module uses groupings from other YANG modules that define
nodes that may be considered sensitive or vulnerable in network nodes that may be considered sensitive or vulnerable in network
environments. Refer to the Security Considerations of [RFC9020] for environments. Refer to the Security Considerations of [RFC9020] for
information as to which nodes may be considered sensitive or information as to which nodes may be considered sensitive or
vulnerable in network environments. vulnerable in network environments.
5. Acknowledgements 5. IANA Considerations
The authors wish to thank Dean Bogdanovic and Kiran Koushik Agrahara
Sreenivasa for their YANG module discussions.
The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta,
Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta, Alan
Davey, Divakaran Baskaran, Reshad Rahman, Tom Petch, and Corey
Bonnell for their thorough reviews and helpful comments.
The authors wish to thank Julien Meuric for a very meticulous Routing
Directorate review.
The authors wish to thank Mohamed Boucadair and Ketan Talaulikar for
extensive AD reviews for the IESG Telechat. Thanks to Eric Vyncke
and Mahesh Jethanandani for review comments.
Author affiliation with The MITRE Corporation is provided for
identification purposes only, and is not intended to convey or imply
MITRE's concurrence with, or support for, the positions, opinions or
viewpoints expressed. MITRE has agreed to this document for Public
Release, Distribution Unlimited, with Public Release Case Number
18-3281. This approval allows the MITRE employee to release
contributions externally and does not assert authority to publish.
6. IANA Considerations
This document registers a URI in the IETF XML registry [RFC3688]. This document registers a URI in the "IETF XML Registry" [RFC3688].
Following the format in [RFC3688], the following registration is Following the format in [RFC3688], the following registration has
requested to be made: been made:
URI: urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls URI: urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls
Registrant Contact: The IESG. Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace. XML: N/A; the requested URI is an XML namespace.
This document registers a YANG module in the YANG Module Names This document registers a YANG module in the "YANG Module Names"
registry [RFC6020]. registry [RFC6020].
name: ietf-ospf-sr-mpls Name: ietf-ospf-sr-mpls
namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls Maintained by IANA?: N
prefix: ospf-sr-mpls Namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls
maintained by IANA? N Prefix: ospf-sr-mpls
reference: RFC XXXX Reference: RFC 9903
7. References
7.1. Normative References 6. References
[I-D.ietf-rtgwg-segment-routing-ti-lfa] 6.1. Normative References
Bashandy, A., Litkowski, S., Filsfils, C., Francois, P.,
Decraene, B., and D. Voyer, "Topology Independent Fast
Reroute using Segment Routing", Work in Progress,
Internet-Draft, draft-ietf-rtgwg-segment-routing-ti-lfa-
21, 12 February 2025,
<https://datatracker.ietf.org/doc/html/draft-ietf-rtgwg-
segment-routing-ti-lfa-21>.
[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>.
[RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328,
DOI 10.17487/RFC2328, April 1998, DOI 10.17487/RFC2328, April 1998,
<https://www.rfc-editor.org/info/rfc2328>. <https://www.rfc-editor.org/info/rfc2328>.
skipping to change at page 38, line 20 skipping to change at line 1699
[RFC9129] Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, [RFC9129] Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem,
"YANG Data Model for the OSPF Protocol", RFC 9129, "YANG Data Model for the OSPF Protocol", RFC 9129,
DOI 10.17487/RFC9129, October 2022, DOI 10.17487/RFC9129, October 2022,
<https://www.rfc-editor.org/info/rfc9129>. <https://www.rfc-editor.org/info/rfc9129>.
[RFC9587] Lindem, A., Palani, S., and Y. Qu, "YANG Data Model for [RFC9587] Lindem, A., Palani, S., and Y. Qu, "YANG Data Model for
OSPFv3 Extended Link State Advertisements (LSAs)", OSPFv3 Extended Link State Advertisements (LSAs)",
RFC 9587, DOI 10.17487/RFC9587, June 2024, RFC 9587, DOI 10.17487/RFC9587, June 2024,
<https://www.rfc-editor.org/info/rfc9587>. <https://www.rfc-editor.org/info/rfc9587>.
7.2. Informative References [RFC9855] Bashandy, A., Litkowski, S., Filsfils, C., Francois, P.,
Decraene, B., and D. Voyer, "Topology Independent Fast
Reroute Using Segment Routing", RFC 9855,
DOI 10.17487/RFC9855, October 2025,
<https://www.rfc-editor.org/info/rfc9855>.
6.2. Informative References
[RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) [RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH)
Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252,
January 2006, <https://www.rfc-editor.org/info/rfc4252>. January 2006, <https://www.rfc-editor.org/info/rfc4252>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
skipping to change at page 39, line 10 skipping to change at line 1743
[RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu,
"Handling Long Lines in Content of Internet-Drafts and "Handling Long Lines in Content of Internet-Drafts and
RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020,
<https://www.rfc-editor.org/info/rfc8792>. <https://www.rfc-editor.org/info/rfc8792>.
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000, Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021, DOI 10.17487/RFC9000, May 2021,
<https://www.rfc-editor.org/info/rfc9000>. <https://www.rfc-editor.org/info/rfc9000>.
[YANG-GUIDE]
Bierman, A., Boucadair, M., and Q. Wu, "Guidelines for
Authors and Reviewers of Documents Containing YANG Data
Models", Work in Progress, Internet-Draft, draft-ietf-
netmod-rfc8407bis-28, 5 June 2025,
<https://datatracker.ietf.org/doc/html/draft-ietf-netmod-
rfc8407bis-28>.
Appendix A. A Configuration Example Appendix A. A Configuration Example
The following is an XML example using the ietf-ospf-sr-mpls YANG The following is an XML example using the "ietf-ospf-sr-mpls" YANG
module, and RFC 9020. module and [RFC9020].
Note: '\' line wrapping per [RFC8792]. Note: '\' line wrapping per [RFC8792].
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<router-id>1.1.1.1</router-id> <router-id>1.1.1.1</router-id>
<control-plane-protocols> <control-plane-protocols>
<control-plane-protocol> <control-plane-protocol>
<type xmlns:ospf="urn:ietf:params:xml:ns:yang:ietf-ospf">\ <type xmlns:ospf="urn:ietf:params:xml:ns:yang:ietf-ospf">\
ospf:ospfv2</type> ospf:ospfv2</type>
skipping to change at page 52, line 32 skipping to change at line 2361
+--ro lan-adj-sid-flags +--ro lan-adj-sid-flags
| +--ro flag* identityref | +--ro flag* identityref
+--ro weight? uint8 +--ro weight? uint8
+--ro neighbor-router-id? rt-types:router-id +--ro neighbor-router-id? rt-types:router-id
+--ro (sid)? +--ro (sid)?
+--:(sid-label) +--:(sid-label)
| +--ro label-value? uint32 | +--ro label-value? uint32
+--:(sid-index) +--:(sid-index)
+--ro index-value? uint32 +--ro index-value? uint32
Acknowledgements
The authors wish to thank Dean Bogdanovic and Kiran Koushik Agrahara
Sreenivasa for their YANG module discussions.
The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta,
Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta, Alan
Davey, Divakaran Baskaran, Reshad Rahman, Tom Petch, and Corey
Bonnell for their thorough reviews and helpful comments.
The authors wish to thank Julien Meuric for a very meticulous Routing
Directorate review.
The authors wish to thank Mohamed Boucadair and Ketan Talaulikar for
extensive AD reviews for the IESG Telechat. Thanks to Éric Vyncke
and Mahesh Jethanandani for review comments.
Author affiliation with The MITRE Corporation is provided for
identification purposes only and is not intended to convey or imply
MITRE's concurrence with, or support for, the positions, opinions, or
viewpoints expressed. MITRE has agreed to this document for Public
Release, Distribution Unlimited, with Public Release Case Number
18-3281. This approval allows the MITRE employee to release
contributions externally and does not assert authority to publish.
Authors' Addresses Authors' Addresses
Yingzhen Qu Yingzhen Qu
Futurewei Technologies Futurewei Technologies
Email: yingzhen.ietf@gmail.com Email: yingzhen.ietf@gmail.com
Acee Lindem Acee Lindem
LabN Consulting, L.L.C. LabN Consulting, L.L.C.
301 Midenhall Way 301 Midenhall Way
Cary, NC 27513 Cary, NC 27513
United States of America
Email: acee.ietf@gmail.com Email: acee.ietf@gmail.com
Jeffrey Zhang Jeffrey Zhang
Juniper Networks Juniper Networks
10 Technology Park Drive 10 Technology Park Drive
Westford, MA 01886 Westford, MA 01886
United States of America United States of America
Email: zzhang@juniper.net Email: zzhang@juniper.net
Ing-Wher Chen Ing-Wher Chen
The MITRE Corporation The MITRE Corporation
Email: ingwherchen@mitre.org Email: ingwherchen@mitre.org
 End of changes. 190 change blocks. 
372 lines changed or deleted 329 lines changed or added

This html diff was produced by rfcdiff 1.48.