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>The MITRE Corporation</organization>
<address> <address>
<email>ingwherchen@mitre.org</email> <email>ingwherchen@mitre.org</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> <!-- [rfced] Please insert any keywords (beyond those that appear in
<workgroup>Internet</workgroup> the title) for use on https://www.rfc-editor.org/search. -->
<!-- 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 <keyword>example</keyword>
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 mat="default"/> to manage OSPFv2 extensions for Segment Routing <xref target="RFC8665" for mat="default"/>
and OSPFv3 extensions for Segment Routing <xref target="RFC8666" format="d efault"/> and OSPFv3 extensions for Segment Routing <xref target="RFC8666" format="d efault"/>
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">
<!-- [rfced] We note that there is no mention of an "sr-protocol grouping"
in RFC 9020, but it does use "'sr-control-plane' grouping". Should the
parenthetical text below be updated to match what appears in RFC 9020?
Original:
* OSPF instance level configuration imported from the ietf-segment-
routing-mpls YANG module including the mapping server bindings and
the per-protocol Segment Routing Global Block (SRGB) (refer to the
sr-protocol grouping [RFC9020]).
Perhaps:
* OSPF instance level configuration imported from the ietf-segment-
routing-mpls YANG module including the mapping server bindings and
the per-protocol Segment Routing Global Block (SRGB) (refer to the
"sr-control-plane" grouping [RFC9020]).
-->
<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-protocol" grouping <xref target="R
9020"/>). FC9020"/>).
</li> </li>
<li> <li>
OSPF area level configuration which enables segment routing over MPLS on OSPF area level configuration, which enables Segment Routing over MPLS o
all interfaces n all interfaces
as wall as advertisement of segment routing over MPLS information in as well 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>
<!-- [rfced] We note that RFCs 8665 and 8666 use "Extended Prefix Range TLV"
rather than "extended range TLV". May we update the two list items below
to match the corresponding RFCs?
Original:
* OSPFv2 extended range TLV encodings [RFC8665] in the OSPF
Extended-Prefix Opaque LSA [RFC7684].
...
* OSPFv3 extended range TLV encodings [RFC8666] in the OSPFv3 E-
Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA,
and E-Type-7-LSA [RFC8362].
Perhaps:
* OSPFv2 Extended Prefix Range TLV encodings [RFC8665] in the OSPF
Extended-Prefix Opaque LSA [RFC7684].
...
* OSPFv3 Extended Prefix Range TLV encodings [RFC8666] in the OSPFv3 E-
Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA,
and E-Type-7-LSA [RFC8362].
-->
<!--[rfced] FYI - We have removed the following items from their
corresponding lists in Section 2 as they were each listed twice.
Original:
* OSPFv2 Prefix SID Sub-TLV encodings [RFC8665] included the OSPF
Extended Prefix TLV which is advertised in the OSPF Extended
Prefix Opaque LSA [RFC7684].
...
* OSPFv3 extended range TLV encodings [RFC8666] in the OSPFv3 E-
Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA,
and E-Type-7-LSA [RFC8362].
...
* OSPFv3 Adj-SID Sub-TLV [RFC8666] in the OSPFv3 Router-Link TLV
[RFC8362].
-->
<ul> <ul>
<li> <li>
OSPFv2 extended range TLV encodings <xref target="RFC8665"/> in the OSPF OSPFv2 extended range TLV encodings <xref target="RFC8665"/> in the OSPF
Extended-Prefix Opaque LSA <xref target="RFC7684"/>. Extended Prefix Opaque LSA <xref target="RFC7684"/>.
</li>
<li>
OSPFv2 Prefix SID Sub-TLV encodings <xref target="RFC8665"/> included
the OSPF Extended Prefix TLV which is advertised in the OSPF Extended Pr
efix Opaque LSA
<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 v3 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>
OSPFv3 extended range TLV encodings <xref target="RFC8666"/> in the OSPF <!--[rfced] We note that there is no mention of "Extended Prefix Range TLV"
v3 in RFC 8362, but it is defined in RFC 8666 (note that "Intra-Area-Prefix TLV",
E-Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA, and "Inter-Area-Prefix TLV", and "External-Prefix TLV" are defined in RFC 8362).
E-Type-7-LSA Please review and let us know if/how the text or citation should be updated for
<xref target="RFC8362"/>. correctness.
</li>
Original:
* OSPFv3 Prefix-SID Sub-TLV encodings [RFC8666] in the OSPFv3 Intra-
Area Prefix TLV, Inter-Area Prefix TLV, External Prefix TLV, and
OSPFv3 Extended Prefix Range TLV [RFC8362].
-->
<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, and
OSPFv3 Extended Prefix Range TLV <xref target="RFC8362"/>. OSPFv3 Extended Prefix Range 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 Adj-SID Sub-TLV <xref target="RFC8666"/> in the
OSPFv3 Router-Link TLV <xref target="RFC8362"/>.
</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 Segmen
Routing Mapping Server (SRMS) t 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>
<!-- [rfced] We note that [RFC2328] and [RFC5340] are not referenced in the
YANG module but are listed in the introductory text for the YANG module.
Additionally, [RFC8665], [RFC8666], [RFC9020], and [RFC9129] are referenced
in the YANG module but are not listed in the introductory text. May we update
the introductory text as follows? Note that, if yes, we will also remove the
references for [RFC2328] and [RFC5340] from the Normative References section.
Original:
[RFC2328], [RFC4915], [RFC5340], [RFC6991], [RFC8102], [RFC8294],
[RFC8349], [RFC9587], and [I-D.ietf-rtgwg-segment-routing-ti-lfa] are
referenced in the YANG module.
Perhaps:
[RFC4915], [RFC6991], [RFC8102], [RFC8294], [RFC8349], [RFC8665],
[RFC8666], [RFC9020]. [RFC9129], [RFC9587], and [RFC9855] are
referenced in the YANG module.
-->
<t> <t>
<xref target="RFC2328"/>, <xref target="RFC4915"/>, <xref target="RFC2328"/>, <xref target="RFC4915"/>, <xref target="RFC5340"/>
<xref target="RFC5340"/>, <xref target="RFC6991"/>, , <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="RFC9587"/>, and
<xref target="I-D.ietf-rtgwg-segment-routing-ti-lfa" format="default"/> <xref target="RFC9855"/>
are referenced in the YANG module. are referenced in the YANG module.
</t> </t>
<!--[rfced] We are having some difficulty parsing this description text
in the YANG module, particularly with "interface" repeated. Please review
and let us know how it should be updated for clarity.
Original:
This augments broadcast and non-broadcast multi-access
interface segment routing interface configuration.
Perhaps:
This augments broadcast and non-broadcast multi-access
interface Segment Routing and interface configuration.
-->
<!--[rfced] We have updated this description text in the YANG module for
clarity. Please review and confirm that the intended meaning has not been
altered.
Original:
A path providing node a disjoint path for SRLG
links from the primary path will be selected over
one that doesn't provide an SRLG disjoint path.
Current:
A path providing a node with a disjoint path for SRLG
links from the primary path will be selected over
a path that doesn't provide an SRLG disjoint path.
-->
<!--[rfced] We note that Derek Yeung is listed as an author in the
YANG module but is not listed as an author of this document. Should
we remove his name from the YANG module and add it to the
Acknowledgements section?
Original:
Author: Derek Yeung
<mailto:derek@arrcus.com>
-->
<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 323 skipping to change at line 397
Author: Derek Yeung Author: Derek Yeung
<mailto:derek@arrcus.com> <mailto:derek@arrcus.com>
Author: Jeffrey Zhang Author: Jeffrey Zhang
<mailto:zzhang@juniper.net> <mailto:zzhang@juniper.net>
Author: Ing-Wher Chen Author: Ing-Wher Chen
<mailto:ingwherchen@mitre.org>"; <mailto:ingwherchen@mitre.org>";
description description
"This YANG module defines the generic configuration "This YANG module defines the generic configuration
and operational state for OSPF Segment Routing (SR). and operational state for OSPF Segment Routing (SR).
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here.
Copyright (c) 2025 IETF Trust and the persons Copyright (c) 2025 IETF Trust and the persons
identified as authors of the code. All rights reserved. identified as authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Revised BSD License to the license terms contained in, the Revised BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
All revisions of IETF and IANA published modules can be found All revisions of IETF and IANA published modules can be found
at the YANG Parameters registry at the YANG Parameters registry
(https://www.iana.org/assignments/yang-parameters). (https://www.iana.org/assignments/yang-parameters).
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL This version of this YANG module is part of RFC 9903; see
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here.
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
// RFC Ed.: Replace XXXX with actual RFC number and remove revision 2025-11-21 {
// this note
revision 2025-05-09 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing for "RFC 9903: A YANG Data Model for OSPF Segment Routing
over MPLS Data Plane"; over the MPLS Data Plane";
} }
// RFC Ed.: Replace XXXX with actual RFC number.
// Also, replace '2025-04-14' with the module publication date
// in the format (YYYY-MM-DD) and remove this note.
feature remote-lfa-sr { feature remote-lfa-sr {
description description
"Enhance rLFA to use SR path."; "Enhance Remote Loop-Free Alternate (RLFA) to use an SR path.";
reference reference
"RFC 8102: Remote-LFA Node Protection and Manageability"; "RFC 8102: Remote-LFA Node Protection and Manageability";
} }
feature ti-lfa { feature ti-lfa {
description description
"Topology-Independent Loop-Free Alternate (TI-LFA) "Topology Independent Loop-Free Alternate (TI-LFA)
computation using segment routing."; computation using segment routing.";
reference reference
"draft-ietf-rtgwg-segment-routing-ti-lfa: "RFC 9855: Topology Independent Fast Reroute Using Segment
Topology-Independent Fast Reroute using Segment Routing"; Routing";
} }
identity prefix-sid-flag { identity prefix-sid-flag {
description description
"Base identity for prefix SID sub-TLV flags."; "Base identity for Prefix-SID Sub-TLV flags.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 5 "RFC 8665: OSPF Extensions for Segment Routing, Section 5
RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
} }
identity np-flag { identity np-flag {
base prefix-sid-flag; base prefix-sid-flag;
description description
"No-PHP flag."; "No-PHP (No Penultimate Hop-Popping) flag.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing, Section 5 "RFC 8665: OSPF Extensions for Segment Routing, Section 5
RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
} }
identity m-flag { identity m-flag {
base prefix-sid-flag; base prefix-sid-flag;
description description
"Mapping server flag."; "Mapping server flag.";
reference reference
skipping to change at line 432 skipping to change at line 499
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 543
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 571
"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."; "Segment Identifier (SID) flags.";
} }
leaf mt-id { leaf mt-id {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
} }
description description
"Multi-topology ID."; "Multi-topology ID.";
reference reference
"RFC 4915: Multi-Topology (MT) Routing in OSPF"; "RFC 4915: Multi-Topology (MT) Routing in OSPF";
} }
leaf algorithm { leaf algorithm {
type identityref { type identityref {
base sr-cmn:prefix-sid-algorithm; base sr-cmn:prefix-sid-algorithm;
} }
description description
"Algorithm associated with the prefix-SID."; "Algorithm associated with the Prefix-SID.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
grouping ospfv2-extended-prefix-range-tlvs { grouping ospfv2-extended-prefix-range-tlvs {
description description
"OSPFv2 Extended prefix range TLV grouping."; "OSPFv2 Extended Prefix Range TLV grouping.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 4";
(Section 4)";
container extended-prefix-range-tlvs { container extended-prefix-range-tlvs {
description description
"List of range of prefixes."; "List of range of prefixes.";
list extended-prefix-range-tlv { list extended-prefix-range-tlv {
description description
"Range of prefixes."; "Range of prefixes.";
leaf prefix-length { leaf prefix-length {
type uint8; type uint8;
description description
"Length of prefix in bits."; "Length of prefix in bits.";
skipping to change at line 622 skipping to change at line 687
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 792
description description
"Neighbor router ID."; "Neighbor router ID.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
grouping sr-algorithm-tlv { grouping sr-algorithm-tlv {
description description
"SR algorithm TLV grouping."; "SR-Algorithm TLV grouping.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 3.1";
(Section 3.1)";
container sr-algorithm-tlv { container sr-algorithm-tlv {
description description
"All SR algorithm TLVs."; "All SR-Algorithm TLVs.";
leaf-list sr-algorithm { leaf-list sr-algorithm {
type identityref { type identityref {
base sr-cmn:prefix-sid-algorithm; base sr-cmn:prefix-sid-algorithm;
} }
description description
"Segment Routing (SR) algorithms that the router is "Segment Routing (SR) algorithms that the router is
currently using."; currently using.";
} }
} }
} }
grouping sid-range-tlvs { grouping sid-range-tlvs {
description description
"SID Range TLV grouping."; "SID Range TLV grouping.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 3.2";
(Section 3.2)";
container sid-range-tlvs { container sid-range-tlvs {
description description
"List of SID range TLVs."; "List of SID Range TLVs.";
list sid-range-tlv { list sid-range-tlv {
description description
"SID range TLV."; "SID Range TLV.";
leaf range-size { leaf range-size {
type rt-types:uint24; type rt-types:uint24;
description description
"SID range."; "SID range.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
grouping local-block-tlvs { grouping local-block-tlvs {
description description
"The SR local block TLV contains the "The SR Local Block TLV contains the
range of labels reserved for local SIDs."; range of labels reserved for local SIDs.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 3.3";
(Section 3.3)";
container local-block-tlvs { container local-block-tlvs {
description description
"List of SRLB TLVs."; "List of Segment Routing Local Block (SRLB) TLVs.";
list local-block-tlv { list local-block-tlv {
description description
"SRLB TLV."; "SRLB TLV.";
leaf range-size { leaf range-size {
type rt-types:uint24; type rt-types:uint24;
description description
"SID range. The return of a zero value would indicate "SID range. The return of a zero value would indicate
an error."; an error.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
grouping srms-preference-tlv { grouping srms-preference-tlv {
description description
"The SR Mapping Server (SRMS) preference TLV is "The SR Mapping Server (SRMS) Preference TLV is
used to advertise a preference associated with used to advertise a preference associated with
the node that acts as an SR Mapping Server. SR the node that acts as an SR Mapping Server. SR
Mapping Server advertisements with a higher Mapping Server advertisements with a higher
preference value are preferred over those with preference value are preferred over those with
a lower preference value."; a lower preference value.";
reference reference
"RFC 8665: OSPF Extensions for Segment Routing "RFC 8665: OSPF Extensions for Segment Routing, Section 3.4";
(Section 3.4)";
container srms-preference-tlv { container srms-preference-tlv {
description description
"SRMS Preference TLV."; "SRMS Preference TLV.";
leaf preference { leaf preference {
type uint8; type uint8;
description description
"SRMS preference TLV, value from 0 to 255 with "SRMS Preference TLV, value from 0 to 255 with
255 being the most preferred."; 255 being the most preferred.";
} }
} }
} }
grouping ospfv3-prefix-sid-sub-tlvs { grouping ospfv3-prefix-sid-sub-tlvs {
description description
"OSPFv3 Prefix Segment ID (SID) sub-TLVs."; "OSPFv3 Prefix-SID Sub-TLVs.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
(Section 6)";
container prefix-sid-sub-tlvs { container prefix-sid-sub-tlvs {
description description
"Prefix SID sub-TLV."; "Prefix-SID Sub-TLV.";
list prefix-sid-sub-tlv { list prefix-sid-sub-tlv {
description description
"Prefix SID sub-TLV."; "Prefix-SID Sub-TLV.";
container ospfv3-prefix-sid-flags { container ospfv3-prefix-sid-flags {
leaf-list flag { leaf-list flag {
type identityref { type identityref {
base prefix-sid-flag; base prefix-sid-flag;
} }
description description
"Prefix SID sub-TLV flags."; "Prefix-SID Sub-TLV flags.";
} }
description description
"Segment Identifier (SID) Flags."; "Segment Identifier (SID) flags.";
} }
leaf algorithm { leaf algorithm {
type identityref { type identityref {
base sr-cmn:prefix-sid-algorithm; base sr-cmn:prefix-sid-algorithm;
} }
description description
"Algorithm associated with the prefix-SID."; "Algorithm associated with the Prefix-SID.";
} }
uses sid-tlv-encoding; uses sid-tlv-encoding;
} }
} }
} }
grouping ospfv3-extended-prefix-range-tlvs { grouping ospfv3-extended-prefix-range-tlvs {
description description
"OSPFv3 Extended prefix range TLV grouping."; "OSPFv3 Extended Prefix Range TLV grouping.";
reference reference
"RFC 8666: OSPFv3 Extensions for Segment Routing "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5";
(Section 5)";
container ospfv3-extended-prefix-range-tlvs { container ospfv3-extended-prefix-range-tlvs {
description description
"List of extended prefix range TLVs."; "List of Extended Prefix Range TLVs.";
list extended-prefix-range-tlv { list extended-prefix-range-tlv {
description description
"Range of prefixes."; "Range of prefixes.";
leaf prefix-length { leaf prefix-length {
type uint8; type uint8;
description description
"Length of prefix in bits."; "Length of prefix in bits.";
} }
leaf af { leaf af {
type iana-rt-types:address-family; type iana-rt-types:address-family;
skipping to change at line 891 skipping to change at line 949
"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, Segment Routing over MPLS is enabled
for the area."; for the area.";
description description
"OSPF area level segment routing configuration. Enable "OSPF area level Segment Routing configuration. Enables
segment routing over MPLS on all interfaces and enables Segment Routing over MPLS on all interfaces, and enables
advertisement of Link State Advertisements (LSAs) and TLVs advertisement of Link State Advertisements (LSAs) and TLVs
supporting segment routing over MPLS"; supporting Segment Routing over MPLS.";
} }
description description
"This augments the OSPF protocol area configuration with "This augments the OSPF protocol area configuration with
segment routing."; Segment Routing.";
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/" + "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospf') and " + "rt:control-plane-protocol/rt:type, 'ospf:ospf') and "
+ "/rt:routing/rt:control-plane-protocols/" + "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/" + "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area/ospf-sr-mpls:segment-routing" { + "ospf:areas/ospf:area/ospf-sr-mpls:segment-routing" {
description description
"This augments the OSPF interface configuration when used."; "This augments the OSPF interface configuration when used.";
} }
description description
"This augments the OSPF protocol interface "This augments the OSPF protocol interface
configuration with segment routing."; configuration with Segment Routing.";
reference reference
"RFC 9020 - YANG Data Model for Segment Routing"; "RFC 9020: YANG Data Model for Segment Routing";
uses sr-mpls:igp-interface { uses sr-mpls:igp-interface {
augment "segment-routing/adjacency-sid/adj-sids" { augment "segment-routing/adjacency-sid/adj-sids" {
when "((../../../ospf:interface-type = 'broadcast') or when "((../../../ospf:interface-type = 'broadcast') or
(../../../ospf:interface-type = 'non-broadcast'))" { (../../../ospf:interface-type = 'non-broadcast'))" {
description description
"This augments broadcast and non-broadcast multi-access "This augments broadcast and non-broadcast multi-access
interface segment routing interface configuration."; interface Segment Routing interface configuration.";
} }
description description
"This augments LAN interface adj-sid with neighbor-id."; "This augments LAN interface adj-sid with neighbor-id.";
leaf neighbor-id { leaf neighbor-id {
type inet:ip-address; type inet:ip-address;
mandatory true; mandatory true;
description description
"Neighbor's Router ID, IPv4 address, or IPv6 address. "Neighbor's Router ID, IPv4 address, or IPv6 address.
Specification is optional and, if specified, SHOULD Specification is optional and, if specified, SHOULD
specify a neighbor reachable via the interface."; specify a neighbor reachable via the interface.";
skipping to change at line 1063 skipping to change at line 1119
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/" + "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/"
+ "ospf:fast-reroute/ospf:lfa" { + "ospf:fast-reroute/ospf:lfa" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" {
description description
"This augments the OSPF routing protocol when used."; "This augments the OSPF routing protocol when used.";
} }
description description
"This augments the OSPF protocol IP-FRR with TI-LFA."; "This augments the OSPF protocol IP Fast Reroute (IP-FRR) with
TI-LFA.";
container ti-lfa { container ti-lfa {
if-feature "ti-lfa"; if-feature "ti-lfa";
description description
"Topology-Independent Loop Free Alternate "Topology Independent Loop Free Alternate
(TI-LFA) support."; (TI-LFA) support.";
reference reference
"draft-ietf-rtgwg-segment-routing-ti-lfa: "RFC 9855: Topology Independent Fast Reroute Using Segment
Topology-Independent Fast Reroute using Segment Routing"; Routing";
leaf enabled { leaf enabled {
type boolean; type boolean;
default "false"; default "false";
description description
"Enable TI-LFA computation."; "Enable TI-LFA computation.";
} }
container selection-tie-breakers { container selection-tie-breakers {
container node-protection { container node-protection {
presence "Presence of container enables the node presence "Presence of container enables the node
protection tie-breaker."; protection tie-breaker.";
leaf priority { leaf priority {
type uint8; type uint8;
default "128"; default "128";
description description
"Priority for node protection tie-breaker with "Priority for node protection tie-breaker with
a lower priority being more preferred. By default, a lower priority being more preferred. By default,
the priority is in the middle of the priority range."; the priority is in the middle of the priority range.";
} }
description description
"Enable node protection as a TI-LFA path "Enable node protection as a TI-LFA path
selection tie-breaker. A path providing node selection tie-breaker. A path providing node
protection will be selected over one that protection will be selected over one that
doesn't provide node protection."; doesn't provide node protection.";
} }
container srlg-disjoint { container srlg-disjoint {
presence "Presence of container enables the SRLG presence "Presence of container enables the SRLG
disjoint tie-breaker"; disjoint tie-breaker.";
leaf priority { leaf priority {
type uint8; type uint8;
default "128"; default "128";
description description
"Priority for SRLG disjoint tie-breaker with "Priority for Shared Risk Link Group (SRLG)
a lower priority being more preferred. By default, disjoint tie-breaker with a lower priority being
the priority is in the middle of the priority range."; more preferred. By default, the priority is in the
middle of the priority range.";
} }
description description
"Enable SRLG (Sharsed Resource Link Group) "Enable SRLG disjoint as a TI-LFA path selection
disjoint as a TI-LFA path selection tie-breaker. tie-breaker. A path providing a node with a disjoint
A path providing node a disjoint path for SRLG path for SRLG links from the primary path will be
links from the primary path will be selected over selected over a path that doesn't provide an SRLG
one that doesn't provide an SRLG disjoint path."; disjoint path.";
} }
description description
"Configure path selection tie-breakers and their "Configure path selection tie-breakers and their
respective priorities for the TI-LFA computation. respective priorities for the TI-LFA computation.
multiple tie-breakers and priorities configured may Multiple tie-breakers and priorities may be configured.";
be configured.";
} }
} }
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/" + "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/"
+ "ospf:fast-reroute/ospf:lfa/ospf:remote-lfa" { + "ospf:fast-reroute/ospf:lfa/ospf:remote-lfa" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" {
description description
"This augments the OSPF routing protocol when used."; "This augments the OSPF routing protocol when used.";
} }
description description
"This augments the OSPF protocol IP-FRR with remote LFA."; "This augments the OSPF protocol IP-FRR with Remote LFA.";
reference reference
"draft-ietf-rtgwg-segment-routing-ti-lfa: "RFC 9855: Topology Independent Fast Reroute Using Segment
Topology-Independent Fast Reroute using Segment Routing"; Routing";
leaf use-segment-routing-path { leaf use-segment-routing-path {
if-feature "remote-lfa-sr"; if-feature "remote-lfa-sr";
type boolean; type boolean;
default "false"; default "false";
description description
"Force remote LFA to use segment routing path instead of LDP "Force Remote LFA to use a Segment Routing path instead of an
path. The value of this leaf is in effect only when LDP path. The value of this leaf is in effect only when
remote-lfa is enabled."; remote-lfa is enabled.";
} }
} }
/* Operational states */ /* Operational states */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/" + "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/"
+ "ospf:neighbors/ospf:neighbor" { + "ospf:neighbors/ospf:neighbor" {
when "derived-from(/rt:routing/rt:control-plane-protocols/" when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" {
description description
"This augments the OSPF routing protocol when used."; "This augments the OSPF routing protocol when used.";
} }
description description
"This augments OSPF interface adjancency-sid state."; "This augments the OSPF interface adjacency-sid state.";
list adjacency-sid { list adjacency-sid {
description description
"List of adjacency Segment IDs."; "List of adjacency Segment IDs.";
leaf value { leaf value {
type uint32; type uint32;
description description
"Value of the Adj-SID."; "Value of the Adj-SID.";
} }
leaf weight { leaf weight {
type uint8; type uint8;
skipping to change at line 1207 skipping to change at line 1264
+ "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 1413
+ "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 1436
+ "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 1475
+ "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>
<!--[rfced] FYI, we have made some updates to the Security Considerations to
match Section 3.7 of draft-ietf-netmod-rfc8407bis-28. Please let us know
if any further updates are needed. Specifically:
- Should this sentence from the template be added? "There are no particularly se
nsitive RPC or action operations."
-->
<!-- 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 Denial-of-Service (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
Adjacency Segment Identifier (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. DoS attack. Change of an Adj-SID could be used to redirect traffic.</li>
</li> <li>/ospf:interfaces/ospf:interface/ospf:fast-reroute/ti-lfa - Modification
<li> of the TI-LFA enablement could lead to traffic disruption.</li>
/ospf:interfaces/ospf:interface/ospf:fast-reroute/ti-lfa - Modification </ul>
of the TI-LFA enablement could lead to traffic disruption. <!-- DNE begins -->
</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 litate SR Local Block TLVs, and Segment Routing Mapping Server (SRMS) TLVs may fac ilitate
a Denial of Service (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> <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 1880
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 1933
"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 2440
+--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"/> and <con
tact fullname="Kiran Koushik Agrahara Sreenivasa"/>
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>
<t>
Author affiliation with The MITRE Corporation is provided for
identification purposes only and is not intended to convey or imply MITR
E'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>
</back> </back>
<!--[rfced] Abbreviations
a) FYI - We have added expansions for the following abbreviations
per Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review each
expansion in the document carefully to ensure correctness.
IP Fast Reroute (IP-FRR)
No Penultimate Hop-Popping) (No-PHP)
Remote Loop-Free Alternate (RLFA)
Segment Routing Local Block (SRLB)
b) Both the expansion and the acronym for the following terms are used
throughout the document. Would you like to update to using the expansion
upon first usage and the acronym for the rest of the document for consistency?
Adjacency Segment Identifier, adjacency Segment ID, adjacency SID (Adj-SID)
Denial-of-Service (DoS)
Remote LFA (RLFA)
Segment ID, Segment Identifier (SID)
Segment Routing Mapping Server, SR Mapping Server (SRMS)
Segment Routing over MPLS (SR-MPLS)
c) FYI, we updated the expansion of "SRLG" from "Shared Resource Link
Group" to "Shared Risk Link Group" to match how it is expanded in
past RFCs.
d) FYI, we updated one instance of "SRBG" to "SRGB" (Section 4) to
match usage in the rest of the document.
-->
<!-- [rfced] Terminology
a) Throughout the text, the following terminology appears to be used
inconsistently. Please review these occurrences and let us know if/how they
may be made consistent.
Segment Routing vs. segment routing
b) For consistency and to reflect how they appear in previously published
RFCs, we have updated the terminology to the form on the right. Please review
and let us know if any further updates are needed.
Adj-SID sub-TLV, Adj-SID sub-tlv, Adj-sid sub-tlv > Adj-SID Sub-TLV
Prefix SID Sub-TLV, prefix SID sub-TLV, Prefix SID sub-TLV > Prefix-SID Sub-TLV
-->
<!-- [rfced] Please review the "Inclusive Language" portion of the online
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language>
and let us know if any changes are needed. Updates of this nature typically
result in more precise language, which is helpful for readers.
Note that our script did not flag any words in particular, but this should
still be reviewed as a best practice.
-->
</rfc> </rfc>
 End of changes. 205 change blocks. 
503 lines changed or deleted 600 lines changed or added

This html diff was produced by rfcdiff 1.48.