| 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 " "> | <!ENTITY nbsp " "> | |||
| <!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
| <!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
| ]> | ]> | |||
| <?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 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. | ||||