rfc9903.original.xml   rfc9903.xml 
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rfc [ <!DOCTYPE rfc [
<!ENTITY nbsp "&#160;"> <!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;"> <!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;"> <!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;"> <!ENTITY wj "&#8288;">
]> ]>
<?rfc strict="no" ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc rfcedstyle="yes" ?>
<?rfc subcompact="no" ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie tf-ospf-sr-yang-50" <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie tf-ospf-sr-yang-50"
ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" to cInclude="true" number="9903" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xm l:lang="en" tocInclude="true"
symRefs="true" sortRefs="true" consensus="true" version="3"> symRefs="true" sortRefs="true" consensus="true" version="3">
<!-- xml2rfc v2v3 conversion 3.16.0 -->
<!-- category values: std, bcp, info, exp, and historic
ipr values: full3667, noModification3667, noDerivatives3667
you can add the attributes updates="NNNN" and obsoletes="NNNN"
they will automatically be output with "(if approved)" -->
<!-- ***** FRONT MATTER ***** -->
<front> <front>
<!-- The abbreviated title is used in the page header - it is only necessary i <title abbrev="OSPF SR-MPLS YANG" >
f the
full title is longer than 39 characters -->
<title abbrev="OSPF SR MPLS YANG" >
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
</title> </title>
<seriesInfo name="Internet-Draft" value="draft-ietf-ospf-sr-yang-50"/> <seriesInfo name="RFC" value="9903"/>
<!-- add 'role="editor"' below for the editors if appropriate -->
<!-- Another author who claims to be an editor -->
<author fullname="Yingzhen Qu" initials="Y" surname="Qu"> <author fullname="Yingzhen Qu" initials="Y" surname="Qu">
<organization>Futurewei Technologies</organization> <organization>Futurewei Technologies</organization>
<address> <address>
<phone/>
<email>yingzhen.ietf@gmail.com</email> <email>yingzhen.ietf@gmail.com</email>
<!-- uri and facsimile elements may also be added -->
</address> </address>
</author> </author>
<author fullname="Acee Lindem" initials="A." surname="Lindem"> <author fullname="Acee Lindem" initials="A." surname="Lindem">
<organization>LabN Consulting, L.L.C.</organization> <organization>LabN Consulting, L.L.C.</organization>
<address> <address>
<postal> <postal>
<street>301 Midenhall Way</street> <street>301 Midenhall Way</street>
<city>Cary, NC 27513</city> <city>Cary</city><region>NC</region><code>27513</code>
<country>United States of America</country>
</postal> </postal>
<email>acee.ietf@gmail.com</email> <email>acee.ietf@gmail.com</email>
</address> </address>
</author> </author>
<author fullname="Jeffrey Zhang" initials="J" surname="Zhang"> <author fullname="Jeffrey Zhang" initials="J" surname="Zhang">
<organization>Juniper Networks</organization> <organization>Juniper Networks</organization>
<address> <address>
<postal> <postal>
<street>10 Technology Park Drive</street> <street>10 Technology Park Drive</street>
<!-- Reorder these if your country does things differently -->
<city>Westford</city> <city>Westford</city>
<region>MA</region> <region>MA</region>
<code>01886</code> <code>01886</code>
<country>USA</country> <country>United States of America</country>
</postal> </postal>
<phone/>
<email>zzhang@juniper.net</email> <email>zzhang@juniper.net</email>
<!-- uri and facsimile elements may also be added -->
</address> </address>
</author> </author>
<author fullname="Ing-Wher Chen" initials="I." surname="Chen"> <author fullname="Ing-Wher Chen" initials="I." surname="Chen">
<organization>The MITRE Corporation</organization> <organization>Red Hat, Inc.</organization>
<address> <address>
<email>ingwherchen@mitre.org</email> <email>ichen@redhat.com</email>
</address> </address>
</author> </author>
<date/> <date month="November" year="2025"/>
<!-- If the month and year are both specified and are the current ones, xml2rf <area>RTG</area>
c will fill <workgroup>lsr</workgroup>
in the current day for you. If only the current year is specified, xml2rf
c will fill
in the current day and month for you. If the year is not the current one,
it is
necessary to specify at least a month (xml2rfc assumes day="1" if not spe
cified for the
purpose of calculating the expiry date). With drafts it is normally suff
icient to
specify just the year. -->
<!-- Meta-data Declarations -->
<area>General</area>
<workgroup>Internet</workgroup>
<!-- WG name at the upperleft corner of the doc,
IETF is fine for individual submissions.
If this element is not present, the default is "Network Working Group",
which is used by the RFC Editor as a nod to the history of the IETF. -->
<!-- Keywords will be incorporated into HTML output
files in a meta tag but they have no effect on text or nroff
output. If you submit your draft to the RFC Editor, the
keywords will be used for the search engine. -->
<abstract> <abstract>
<t> <t>
This document defines a YANG data model that can be This document defines a YANG data model that can be
used to manage OSPF Extensions for Segment Routing over the MPLS data plan e. used to manage OSPF extensions for Segment Routing over the MPLS data plan e.
</t> </t>
</abstract> </abstract>
</front> </front>
<middle> <middle>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Overview</name> <name>Overview</name>
<t> <t>
This document defines a YANG data model <xref target="RFC7950" format="def ault"/> that can be used This document defines a YANG data model <xref target="RFC7950" format="def ault"/> that can be used
to manage OSPFv2 extensions for Segment Routing <xref target="RFC8665" for to manage OSPFv2 extensions for Segment Routing <xref target="RFC2328" for
mat="default"/> mat="default"/> <xref target="RFC8665" format="default"/>
and OSPFv3 extensions for Segment Routing <xref target="RFC8666" format="d and OSPFv3 extensions for Segment Routing <xref target="RFC5340" format="d
efault"/> efault"/> <xref target="RFC8666" format="default"/>
over the MPLS data plane. 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 <xref target="RFC9129" format="default"/>. model <xref target="RFC9129" format="default"/>.
</t> </t>
<t> <t>
The YANG data model in this document conforms to the Network Management The YANG data model in this document conforms to the Network Management
Datastore Architecture (NMDA) <xref target="RFC8342" format="default"/>. Datastore Architecture (NMDA) <xref target="RFC8342" format="default"/>.
</t> </t>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Requirements Language</name> <name>Requirements Language</name>
<t> <t>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
"MAY", and "OPTIONAL" in this document are to be interpreted as NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>
described in BCP 14 <xref target="RFC2119" format="default"/> <xref targ RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
et="RFC8174" format="default"/> "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to
when, and only when, they appear in all capitals, as shown here. be interpreted as
</t> described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.
</t>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Tree Diagrams</name> <name>Tree Diagrams</name>
<t>This document uses the graphical representation of data model <t>This document uses the graphical representation of a data model as
defined in <xref target="RFC8340" format="default"/>.</t> defined in <xref target="RFC8340" format="default"/>.</t>
</section> </section>
</section> </section>
<section numbered="true" toc="default"> <name>OSPF Segment Routing over MPLS Y ANG Data Model Scope</name> <section numbered="true" toc="default"> <name>OSPF Segment Routing over MPLS Y ANG Data Model Scope</name>
<t> <t>
The YANG data model in this document consists of a single YANG module, iet The YANG data model in this document consists of a single YANG module, "ie
f-ospf-sr-mpls. tf-ospf-sr-mpls".
The ietf-ospf-sr-mpls YANG module includes OSPF Segment Routing Extensions The "ietf-ospf-sr-mpls" YANG module includes OSPF Segment Routing extensio
for the MPLS ns for the MPLS
data plane for both OSPFv2 <xref target="RFC8665" format="default"/> and data plane for both OSPFv2 <xref target="RFC8665" format="default"/> and
OSPFv3 <xref target="RFC8666" format="default"/>. OSPFv3 <xref target="RFC8666" format="default"/>.
</t> </t>
<t> <t>
The ietf-ospf-sr-mpls YANG module requires support for the base segment The "ietf-ospf-sr-mpls" YANG module requires support for the base Segment
routing module <xref target="RFC9020" format="default"/>, Routing module <xref target="RFC9020" format="default"/>,
which defines the global segment routing configuration independent which defines the global Segment Routing configuration independent
of any specific routing protocol configuration, and support of OSPF base of any specific routing protocol configuration, and support of the OSPF ba
model <xref target="RFC9129" format="default"/> which defines basic se
model <xref target="RFC9129" format="default"/>, which defines the basic
OSPF configuration and state. OSPF configuration and state.
</t> </t>
<t> <t>
The ietf-ospf-sr-mpls module defines both the data nodes to configure OSPF The "ietf-ospf-sr-mpls" module defines both the data nodes to configure OS
segment routing MPLS extensions and the additions to the OSPF Link State A PF
dvertisements (LSAs) necessary Segment Routing MPLS extensions and the additions to the OSPF Link State A
to support SR-MPLS. The OSPF configuration includes: dvertisements (LSAs) necessary
to support Segment Routing over MPLS (SR-MPLS). The OSPF configuration inc
ludes:
</t> </t>
<ul spacing="normal"> <ul spacing="normal">
<li> <li>
OSPF instance level configuration imported from the ietf-segment-routing OSPF instance level configuration imported from the "ietf-segment-routin
-mpls g-mpls"
YANG module including the mapping server bindings and the per-protocol S YANG module, including the mapping server bindings and the per-protocol
egment Routing Segment Routing
Global Block (SRGB) (refer to the sr-protocol grouping <xref target="RFC Global Block (SRGB) (refer to the "sr-control-plane" grouping <xref targ
9020"/>). et="RFC9020"/>).
</li> </li>
<li> <li>
OSPF area level configuration which enables segment routing over MPLS on OSPF area level configuration, which enables SR-MPLS on all interfaces
all interfaces as well as advertisement of SR-MPLS information in
as wall as advertisement of segment routing over MPLS information in
Link State Advertisements (LSAs). Link State Advertisements (LSAs).
</li> </li>
<li> <li>
OSPF interface level configuration for adjacency SIDs corresponding to s pecific OSPF interface level configuration for Adjacency Segment Identifiers (Ad j-SIDs) corresponding to specific
neighbors on multi-access interfaces (OSPF interface type broadcast or N on-Broadcast neighbors on multi-access interfaces (OSPF interface type broadcast or N on-Broadcast
Multi-Access (NBMA)). The adjacency-sid definitions are imported from th Multi-Access (NBMA)). The adjacency-sid definitions are imported from th
t ietf-segment-routing-mpls e "ietf-segment-routing-mpls"
YANG module (refer to the igp-interface grouping <xref target="RFC9020"/ YANG module (refer to the "igp-interface" grouping <xref target="RFC9020
>). "/>).
</li> </li>
<li> <li>
OSPF interface level configuration for Topology-Independent Loop-Free Al OSPF interface level configuration for Topology Independent Loop-Free Al
ternative (TI-LFA) using ternative (TI-LFA) using
the MPLS data plane. TI-LFA is described in <xref target="I-D.ietf-rtgwg the MPLS data plane. TI-LFA is described in <xref target="RFC9855"/>.
-segment-routing-ti-lfa"/>.
</li> </li>
</ul> </ul>
<t> <t>
The operational state (read-only) additions to specifc to OSPFv2 LSA includ e: The operational state (read-only) additions specific to OSPFv2 LSA include:
</t> </t>
<ul> <ul>
<li>
OSPFv2 extended range TLV encodings <xref target="RFC8665"/> in the OSPF
Extended-Prefix Opaque LSA <xref target="RFC7684"/>.
</li>
<li> <li>
OSPFv2 Prefix SID Sub-TLV encodings <xref target="RFC8665"/> included OSPFv2 Extended Prefix Range TLV encodings <xref target="RFC8665"/> in t
the OSPF Extended Prefix TLV which is advertised in the OSPF Extended Pr he OSPF
efix Opaque LSA Extended Prefix Opaque LSA <xref target="RFC7684"/>.
<xref target="RFC7684"/>.
</li> </li>
<li> <li>
OSPFv2 Prefix SID Sub-TLV encodings <xref target="RFC8665"/> included OSPFv2 Prefix-SID Sub-TLV encodings <xref target="RFC8665"/>, including
the OSPF Extended Prefix TLV which is advertised in the OSPF Extended Pr the OSPF Extended Prefix TLV, which is advertised in the OSPF Extended P
efix Opaque LSA refix Opaque LSA
<xref target="RFC7684"/>. <xref target="RFC7684"/>.
</li> </li>
<li> <li>
OSPFv2 SR-Algorithm, SID/Label Range TLVs, SR Local Block TLVs, Segment OSPFv2 SR-Algorithm, SID/Label Range TLV, SR Local Block TLV, and Segmen
Routing Mapping Server (SRMS) t Routing Mapping Server (SRMS)
preference TLV <xref target="RFC8665"/> advertised in the OSPFv2 Router Preference TLV <xref target="RFC8665"/> advertised in the OSPFv2 Router
Information Opaque LSA Information Opaque LSA
<xref target="RFC7770"/>. <xref target="RFC7770"/>.
</li> </li>
</ul> </ul>
<t> <t>
The operational state (read-only) additions to specifc to OSPFv3 LSA inclu de: The operational state (read-only) additions specific to OSPFv3 LSA include :
</t> </t>
<ul> <ul>
<li> <li>
OSPFv3 extended range TLV encodings <xref target="RFC8666"/> in the OSPF OSPFv3 Extended Prefix Range TLV encodings <xref target="RFC8666"/> in t
v3 he OSPFv3
E-Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA, and
E-Type-7-LSA
<xref target="RFC8362"/>.
</li>
<li>
OSPFv3 extended range TLV encodings <xref target="RFC8666"/> in the OSPF
v3
E-Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA, and E-Type-7-LSA E-Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA, and E-Type-7-LSA
<xref target="RFC8362"/>. <xref target="RFC8362"/>.
</li> </li>
<li> <li>
OSPFv3 Prefix-SID Sub-TLV encodings <xref target="RFC8666"/> in the OSPF v3 OSPFv3 Prefix-SID Sub-TLV encodings <xref target="RFC8666"/> in the OSPF v3
Intra-Area Prefix TLV, Inter-Area Prefix TLV, External Prefix TLV, and Intra-Area-Prefix TLV, Inter-Area-Prefix TLV, External-Prefix TLV <xref
OSPFv3 Extended Prefix Range TLV <xref target="RFC8362"/>. target="RFC8362"/>, and
</li> OSPFv3 Extended Prefix Range TLV <xref target="RFC8666"/>.
<li>
OSPFv3 Adj-SID Sub-TLV <xref target="RFC8666"/> in the
OSPFv3 Router-Link TLV <xref target="RFC8362"/>.
</li> </li>
<li> <li>
OSPFv3 Adj-SID Sub-TLV <xref target="RFC8666"/> in the OSPFv3 Adj-SID Sub-TLV <xref target="RFC8666"/> in the
OSPFv3 Router-Link TLV <xref target="RFC8362"/>. OSPFv3 Router-Link TLV <xref target="RFC8362"/>.
</li> </li>
<li> <li>
OSPFv3 LAN Adj-SID Sub-TLV <xref target="RFC8666"/> in the OSPFv3 LAN Adj-SID Sub-TLV <xref target="RFC8666"/> in the
OSPFv3 Router-Link TLV <xref target="RFC8362"/>. OSPFv3 Router-Link TLV <xref target="RFC8362"/>.
</li> </li>
<li> <li>
OSPFv3 SR-Algorithm, SID/Label Range TLVs, SR Local Block TLVs, Segment OSPFv3 SR-Algorithm, SID/Label Range TLV, SR Local Block TLV, and SRMS
Routing Mapping Server (SRMS) Preference TLV <xref target="RFC8666"/> advertised in the OSPFv3 Router
preference TLV <xref target="RFC8666"/> advertised in the OSPFv3 Router Information LSA
Information LSA
<xref target="RFC7770"/>. <xref target="RFC7770"/>.
</li> </li>
</ul> </ul>
</section> </section>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>OSPF Segment Routing over MPLS YANG Module</name> <name>OSPF Segment Routing over MPLS YANG Module</name>
<t> <t>
<xref target="RFC2328"/>, <xref target="RFC4915"/>, <xref target="RFC4915"/>, <xref target="RFC6991"/>,
<xref target="RFC5340"/>, <xref target="RFC6991"/>,
<xref target="RFC8102"/>, <xref target="RFC8294"/>, <xref target="RFC8102"/>, <xref target="RFC8294"/>,
<xref target="RFC8349"/>, <xref target="RFC9587"/>, and <xref target="RFC8349"/>, <xref target="RFC8665"/>,
<xref target="I-D.ietf-rtgwg-segment-routing-ti-lfa" format="default"/> <xref target="RFC8666"/>, <xref target="RFC9020"/>,
<xref target="RFC9129"/>, <xref target="RFC9587"/>, and
<xref target="RFC9855"/>
are referenced in the YANG module. are referenced in the YANG module.
</t> </t>
<figure> <figure>
<artwork><![CDATA[ <sourcecode name="ietf-ospf-sr-mpls@2025-11-21.yang" type="yang" markers="tr
<CODE BEGINS> file "ietf-ospf-sr-mpls@2025-05-09.yang" ue"><![CDATA[
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 line 313 skipping to change at line 257
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
<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:ichen@redhat.com>";
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 line 432 skipping to change at line 367
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 line 476 skipping to change at line 411
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 line 504 skipping to change at line 439
"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
"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."; "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 line 622 skipping to change at line 555
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 line 728 skipping to change at line 660
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 SRMS Preference TLV is used to advertise a preference
used to advertise a preference associated with associated with the node that acts as an SRMS. SRMS
the node that acts as an SR Mapping Server. SR advertisements with a higher preference value are preferred
Mapping Server advertisements with a higher over those with a lower preference value.";
preference value are preferred over those with
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."; "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 line 891 skipping to change at line 815
"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 overlapp."; - Assure the binding policies prefixes do not overlap.";
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, SR-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 SR-MPLS on all interfaces, and enables advertisement of
advertisement of Link State Advertisements (LSAs) and TLVs Link State Advertisements (LSAs) and TLVs supporting
supporting segment routing over MPLS"; SR-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 with 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 line 1063 skipping to change at line 986
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 RLFA.";
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 RLFA 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 Adj-SIDs.";
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 Adj-SID.";
} }
leaf protection-requested { leaf protection-requested {
type boolean; type boolean;
description description
"Describe if the adjacency SID is protected."; "Describe if the Adj-SID is protected.";
} }
} }
} }
/* /*
* Augmentations for read-only data nodes corresponding to Segment * Augmentations for read-only data nodes corresponding to Segment
* Routing encodings in OSPFv2 and OSPFv3 Link State Advertisements * Routing encodings in OSPFv2 and OSPFv3 Link State Advertisements
* (LSAs) in OSPF Link State Databases (LSDBs) at the instance, * (LSAs) in OSPF Link State Databases (LSDBs) at the instance,
* area, and interface level. * area, and interface level.
*/ */
skipping to change at line 1207 skipping to change at line 1131
+ "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/"
+ "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 line 1363 skipping to change at line 1280
+ "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 line 1387 skipping to change at line 1303
+ "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 line 1427 skipping to change at line 1342
+ "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/"
+ "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> ]]></sourcecode>
]]></artwork>
</figure> </figure>
</section> </section>
<section anchor="Security" numbered="true" toc="default"> <name>Security Consid erations</name> <section anchor="Security" numbered="true" toc="default"> <name>Security Consid erations</name>
<!-- DNE begins -->
<t>This section is modeled after the template described in <xref target="I-D.iet
f-netmod-rfc8407bis" section="3.7" sectionFormat="of"/>.</t>
<t> <t>
The ietf-ospf-sr-mpls YANG module defines a data model that is 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 <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>.
These protocols have to use a secure transport layer (e.g., SSH These YANG-based management protocols (1) have to use a secure transport laye r (e.g., SSH
<xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and
QUIC <xref target="RFC9000"/>) and have to use mutual authentication. QUIC <xref target="RFC9000"/>) and (2) have to use mutual authentication.
</t> </t>
<t> <t>
The Network Configuration Access Control Model (NACM) <xref target="RFC8341" /> The Network Configuration Access Control Model (NACM) <xref target="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.
</t> </t>
<t> <t>
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 vulnerable in some network environments. Write sensitive or vulnerable in some network environments. Write
operations (e.g., edit-config) and delete operations to these data operations (e.g., edit-config) and delete operations to these data
nodes without proper protection or authentication can have a negative nodes without proper protection or authentication can have a negative
effect on network operations. The following subtrees and data nodes effect on network operations. The following subtrees and data nodes
have particular sensitivities/vulnerabilities: have particular sensitivities/vulnerabilities:
</t> </t>
<ul empty="true" spacing="normal"> <!-- DNE ends -->
<li> <ul spacing="normal">
/ospf:ospf/segment-routing/enabled - Modification to the <li>/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 disruption. attack. If an attacker disables SR, it will cause traffic disruption.</li>
</li> <li>/ospf:ospf/segment-routing/bindings - Modification to the local
<li> bindings could result in a DoS attack.</li>
/ospf:ospf/segment-routing/bindings - Modification to the local <li>/ospf:ospf/protocol-srgb - Modification of the protocol SRGB
bindings could result in a Denial-of-Service (DoS) attack.
</li>
<li>
/ospf:ospf/protocol-srgb - Modification of the protocol SRGB
could be used to mount a DoS attack. For example, if the protocol could be used to mount a DoS attack. For example, if the protocol
SRBG size is reduced to a very small value, a lot of existing SRGB size is reduced to a very small value, a lot of existing
segments could no longer be installed leading to a traffic disruption. segments could no longer be installed, leading to a traffic disruption.</li
</li> >
<li> <li>/ospf:interfaces/ospf:interface/segment-routing - Modification of the
/ospf:interfaces/ospf:interface/segment-routing - Modification of the Adj-SID could be used to mount a
Adjacency Segment Identifier (Adj-SID) could be used to mount a DoS attack. Change of an Adj-SID could be used to redirect traffic.</li>
DoS attack. Change of an Adj-SID could be used to redirect traffic. <li>/ospf:interfaces/ospf:interface/ospf:fast-reroute/ti-lfa - Modification
</li> of the TI-LFA enablement could lead to traffic disruption.</li>
<li> </ul>
/ospf:interfaces/ospf:interface/ospf:fast-reroute/ti-lfa - Modification <!-- DNE begins -->
of the TI-LFA enablement could lead to traffic disruption.
</li>
</ul>
<t> <t>
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: </t>
</t> <!-- DNE ends -->
<ul empty="true" spacing="normal">
<ul spacing="normal">
<li> <li>
The module ietf-ospf-sr-mpls augments base OSPF module Link State The "ietf-ospf-sr-mpls" module augments the base OSPF module Link State
Database (LSDB) with various TLVs. Knowledge of these data nodes Database (LSDB) with various TLVs. Knowledge of these data nodes
can be used to attack other routers in the OSPF domain. These attacks can be used to attack other routers in the OSPF domain. These attacks
are documented in <xref target="RFC9129"/>. are documented in <xref target="RFC9129"/>.
</li> </li>
<li> <li>
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 the could facilitate a targeted attack on the data plane by knowing the
topology and path for MPLS segment-routed packets. Examples include topology and path for MPLS segment-routed packets. Examples include
the OSPFv2 extended-prefix-opaque-LSA/prefix-sid-sub-tlvs and the OSPFv2 extended-prefix-opaque-LSA/prefix-sid-sub-tlvs and
OSPFv3 e-router-tlvs/link-tlv/sub-tlvs/ospfv3-lan-adj-sid-sub-tlvs. OSPFv3 e-router-tlvs/link-tlv/sub-tlvs/ospfv3-lan-adj-sid-sub-tlvs.
</li> </li>
<li> <li>
Knowledge of Prefix and Adjaceny SIDs may also divulge a view of the segmen Knowledge of Prefix and Adjacency SIDs may also divulge a view of the Segme
t nt
routing network topology architecture which may be considered a proprietary Routing network topology architecture, which may be considered a proprietar
y
asset. asset.
</li> </li>
<li> <li>
Knowledge of the advertised SID/Label Range TLVs, Knowledge of the advertised SID/Label Range TLVs,
SR Local Block TLVs and Segment Routing Mapping Server (SRMS) TLVs may faci SR Local Block TLVs, and SRMS TLVs may facilitate
litate a DoS attack on the advertising node's SR
a Denial of Service (DoS) attack on the advertising node's SR
and SRMS functionality. Examples include augmentations to the and SRMS functionality. Examples include augmentations to the
OSPFv2 ri-opaque/sid-range-tlvs and OSPFv3 router-information/local-block-t lvs. OSPFv2 ri-opaque/sid-range-tlvs and OSPFv3 router-information/local-block-t lvs.
</li> </li>
</ul> </ul>
<!-- DNE begins -->
<t>There are no particularly sensitive RPC or action operations.</t>
<t> <t>
This YANG module uses groupings from other YANG modules that This YANG module uses groupings from other YANG modules that
define nodes that may be considered sensitive or vulnerable define nodes that may be considered sensitive or vulnerable
in network environments. Refer to the Security Considerations in network environments. Refer to the Security Considerations
of <xref target="RFC9020"/> for information as to which nodes may of <xref target="RFC9020"/> for information as to which nodes may
be considered sensitive or vulnerable in network environments. be considered sensitive or vulnerable in network environments.
</t> </t>
<!-- DNE ends -->
</section> </section>
<section anchor="Acknowledgements" numbered="true" toc="default">
<name>Acknowledgements</name>
<t>
The authors wish to thank Dean Bogdanovic and Kiran Koushik Agrahara Sre
enivasa
for their YANG module discussions.
</t>
<t>
The authors wish to thank Yi Yang, Alexander Clemm,
Gaurav Gupta, Ladislav Lhotka, Stephane Litkowski,
Greg Hankins, Manish Gupta, Alan Davey, Divakaran Baskaran, Reshad Rahma
n, Tom Petch,
and Corey Bonnell for their thorough reviews and helpful comments.
</t>
<t>
The authors wish to thank Julien Meuric for a very meticulous Routing Di
rectorate review.
</t>
<t>
The authors wish to thank Mohamed Boucadair and Ketan Talaulikar
for extensive AD reviews for the IESG Telechat. Thanks to Eric Vyncke an
d Mahesh
Jethanandani for review comments.
</t>
<t>
Author affiliation with The MITRE Corporation is provided for
identification purposes only, and is not intended to convey or imply MIT
RE'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 a
nd
does not assert authority to publish.
</t>
</section>
<section anchor="IANA" toc="default" numbered="true"> <section anchor="IANA" toc="default" numbered="true">
<name>IANA Considerations</name> <name>IANA Considerations</name>
<t> <t>
This document registers a URI in the IETF XML registry This document registers a URI in the "IETF XML Registry"
<xref target="RFC3688" format="default"/>. Following the format in <xre f <xref target="RFC3688" format="default"/>. Following the format in <xre f
target="RFC3688" format="default"/>, target="RFC3688" format="default"/>,
the following registration is requested to be made: the following registration has been made:
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <dl spacing="compact" newline="false">
URI: urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls</dd>
Registrant Contact: The IESG. <dt>Registrant Contact:</dt><dd>The IESG.</dd>
XML: N/A, the requested URI is an XML namespace. <dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd>
]]></artwork> </dl>
<t> <t>
This document registers a YANG module in the YANG Module Names This document registers a YANG module in the "YANG Module Names"
registry <xref target="RFC6020" format="default"/>. registry <xref target="RFC6020" format="default"/>.
</t> </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <dl spacing="compact" newline="false">
name: ietf-ospf-sr-mpls <dt>Name:</dt><dd>ietf-ospf-sr-mpls</dd>
namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls <dt>Maintained by IANA?:</dt><dd>N</dd>
prefix: ospf-sr-mpls <dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls</dd>
maintained by IANA? N <dt>Prefix:</dt><dd>ospf-sr-mpls</dd>
reference: RFC XXXX <dt>Reference:</dt><dd>RFC 9903</dd>
]]></artwork> </dl>
</section> </section>
</middle> </middle>
<!-- *****BACK MATTER ***** -->
<back> <back>
<!-- References split into informative and normative --> <displayreference target="I-D.ietf-netmod-rfc8407bis" to="YANG-GUIDE"/>
<!-- There are 2 ways to insert reference entries from the citation librarie
s:
1. define an ENTITY at the top, and use "ampersand character"RFC2629; h
ere (as shown)
2. simply use a PI "less than character"?rfc include="reference.RFC.211
9.xml"?> here
(for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis
.xml")
Both are cited textually in the same manner: by using xref elements.
If you use the PI option, xml2rfc will, by default, try to find included files i
n the same
directory as the including file. You can also define the XML_LIBRARY environment
variable
with a value containing a set of directories to search. These can be either in
the local
filing system or remote ones accessed by http (http://domain/dir/... ).-->
<references> <references>
<name>References</name> <name>References</name>
<references> <references>
<name>Normative References</name> <name>Normative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.211
FC.2119.xml"/> 9.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2
FC.2328.xml"/> 328.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3
FC.3688.xml"/> 688.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4
FC.4915.xml"/> 915.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5
FC.5340.xml"/> 340.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6
FC.6020.xml"/> 020.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6
FC.6991.xml"/> 991.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7
FC.7770.xml"/> 770.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7
FC.7684.xml"/> 684.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7
FC.7950.xml"/> 950.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
FC.8102.xml"/> 102.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
FC.8174.xml"/> 174.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
FC.8294.xml"/> 294.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
FC.8341.xml"/> 341.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
FC.8362.xml"/> 362.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
FC.8349.xml"/> 349.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
FC.8665.xml"/> 665.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
FC.8666.xml"/> 666.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9
FC.9020.xml"/> 020.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9
FC.9129.xml"/> 129.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9
FC.9587.xml"/> 587.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.
ietf-rtgwg-segment-routing-ti-lfa.xml"/> <!-- draft-ietf-rtgwg-segment-routing-ti-lfa-21 companion doc published
as RFC 9855 as of 10/28/25
-->
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.
9855.xml"/>
</references> </references>
<references> <references>
<name>Informative References</name> <name>Informative References</name>
<!-- Here we use entities that we defined at the beginning. --> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R 252.xml"/>
FC.4252.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R 241.xml"/>
FC.6241.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R 040.xml"/>
FC.8040.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R 340.xml"/>
FC.8340.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R 342.xml"/>
FC.8342.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R 446.xml"/>
FC.8446.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R 792.xml"/>
FC.8792.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R 000.xml"/>
FC.9000.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-net
mod-rfc8407bis.xml"/>
</references> </references>
</references> </references>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>A Configuration Example</name> <name>A Configuration Example</name>
<t>The following is an XML example using the ietf-ospf-sr-mpls YANG modu <t>The following is an XML example using the "ietf-ospf-sr-mpls" YANG mo
le, dule
and RFC 9020.</t> and <xref target="RFC9020"/>.</t>
<t>Note: '\' line wrapping per <xref target="RFC8792" format="default"/> . </t> <t>Note: '\' line wrapping per <xref target="RFC8792" format="default"/> . </t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode type="xml"><![CDATA[
<?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>
<name>OSPFv2</name> <name>OSPFv2</name>
<ospf xmlns="urn:ietf:params:xml:ns:yang:ietf-ospf"> <ospf xmlns="urn:ietf:params:xml:ns:yang:ietf-ospf">
<areas> <areas>
skipping to change at line 1871 skipping to change at line 1740
ietf-ospf-sr-mpls"> ietf-ospf-sr-mpls">
<srgb> <srgb>
<lower-bound>4000</lower-bound> <lower-bound>4000</lower-bound>
<upper-bound>5000</upper-bound> <upper-bound>5000</upper-bound>
</srgb> </srgb>
</protocol-srgb> </protocol-srgb>
</ospf> </ospf>
</control-plane-protocol> </control-plane-protocol>
</control-plane-protocols> </control-plane-protocols>
</routing> </routing>
]]></artwork> ]]></sourcecode>
<t>The following is the same example using JSON format.</t> <t>The following is the same example using JSON format.</t>
<artwork name="" type="" align="left" alt=""><![CDATA[ <sourcecode type="json"><![CDATA[
{ {
"ietf-routing:routing": { "ietf-routing:routing": {
"router-id": "1.1.1.1", "router-id": "1.1.1.1",
"control-plane-protocols": { "control-plane-protocols": {
"control-plane-protocol": [ "control-plane-protocol": [
{ {
"type": "ietf-ospf:ospfv2", "type": "ietf-ospf:ospfv2",
"name": "OSPFv2", "name": "OSPFv2",
"ietf-ospf:ospf": { "ietf-ospf:ospf": {
"areas": { "areas": {
skipping to change at line 1924 skipping to change at line 1793
"upper-bound": 5000 "upper-bound": 5000
} }
] ]
} }
} }
} }
] ]
} }
} }
} }
]]></artwork> ]]></sourcecode>
</section> </section>
<section numbered="true" toc="default"> <name>Full Tree Diagram</name> <section numbered="true" toc="default"> <name>Full Tree Diagram</name>
<artwork align="left" name="" type="" alt=""><![CDATA[ <sourcecode type="yangtree"><![CDATA[
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:
+--rw segment-routing +--rw segment-routing
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw bindings {mapping-server}? | +--rw bindings {mapping-server}?
| +--rw advertise | +--rw advertise
| | +--rw policies* leafref | | +--rw policies* leafref
| +--rw receive? boolean | +--rw receive? boolean
+--rw protocol-srgb {sr-mpls:protocol-srgb}? +--rw protocol-srgb {sr-mpls:protocol-srgb}?
+--rw srgb* [lower-bound upper-bound] +--rw srgb* [lower-bound upper-bound]
skipping to change at line 2430 skipping to change at line 2300
+--ro lan-adj-sid-sub-tlv* [] +--ro lan-adj-sid-sub-tlv* []
+--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
]]></artwork> ]]></sourcecode>
</section>
<section anchor="Acknowledgements" numbered="false" toc="default">
<name>Acknowledgements</name>
<t>
The authors wish to thank <contact fullname="Dean Bogdanovic"/>, <contac
t fullname="Kiran Koushik Agrahara Sreenivasa"/>, and <contact fullname="Derek Y
eung"/>
for their YANG module discussions.
</t>
<t>
The authors wish to thank <contact fullname="Yi Yang"/>, <contact fullna
me="Alexander Clemm"/>,
<contact fullname="Gaurav Gupta"/>, <contact fullname="Ladislav Lhotka"/
>, <contact fullname="Stephane Litkowski"/>,
<contact fullname="Greg Hankins"/>, <contact fullname="Manish Gupta"/>,
<contact fullname="Alan Davey"/>, <contact fullname="Divakaran Baskaran"/>, <con
tact fullname="Reshad Rahman"/>, <contact fullname="Tom Petch"/>,
and <contact fullname="Corey Bonnell"/> for their thorough reviews and h
elpful comments.
</t>
<t>
The authors wish to thank <contact fullname="Julien Meuric"/> for a very
meticulous Routing Directorate review.
</t>
<t>
The authors wish to thank <contact fullname="Mohamed Boucadair"/> and <c
ontact fullname="Ketan Talaulikar"/>
for extensive AD reviews for the IESG Telechat. Thanks to <contact fulln
ame="Éric Vyncke"/> and <contact fullname="Mahesh
Jethanandani"/> for review comments.
</t>
</section> </section>
</back> </back>
</rfc> </rfc>
 End of changes. 203 change blocks. 
533 lines changed or deleted 420 lines changed or added

This html diff was produced by rfcdiff 1.48.