| rfc9902.original.xml | rfc9902.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="yes" ?> | ||||
| <?rfc toc="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-isis-sr-yang | |||
| <?rfc tocdepth="3"?> | -31" number="9902" ipr="trust200902" category="std" consensus="true" obsoletes=" | |||
| <?rfc symrefs="yes"?> | " updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" | |||
| <?rfc sortrefs="yes" ?> | symRefs="true" sortRefs="true" version="3"> | |||
| <?rfc compact="yes" ?> | ||||
| <?rfc subcompact="no" ?> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-isis-sr-yang | ||||
| -31" ipr="trust200902" category="std" consensus="true" obsoletes="" updates="" s | ||||
| ubmissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" | ||||
| sortRefs="true" version="3"> | ||||
| <!-- xml2rfc v2v3 conversion 3.13.1 --> | ||||
| <front> | <front> | |||
| <title abbrev="IS-IS SR MPLS YANG">A YANG Data Model for IS-IS Segment Routi ng over the MPLS Data Plane</title> | <title abbrev="IS-IS SR MPLS YANG">A YANG Data Model for IS-IS Segment Routi ng over the MPLS Data Plane</title> | |||
| <seriesInfo name="Internet-Draft" value="draft-ietf-isis-sr-yang-31"/> | <seriesInfo name="RFC" value="9902"/> | |||
| <author fullname="Stephane Litkowski" initials="S" surname="Litkowski"> | <author fullname="Stephane Litkowski" initials="S" surname="Litkowski"> | |||
| <organization>Cisco Systems</organization> | <organization>Cisco Systems</organization> | |||
| <address> | <address> | |||
| <email>slitkows.ietf@gmail.com</email> | <email>slitkows.ietf@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <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> | |||
| <email>yingzhen.ietf@gmail.com</email> | <email>yingzhen.ietf@gmail.com</email> | |||
| skipping to change at line 50 ¶ | skipping to change at line 45 ¶ | |||
| <address> | <address> | |||
| <email>ingwherchen@mitre.org</email> | <email>ingwherchen@mitre.org</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Jeff Tantsura" initials="J" surname="Tantsura"> | <author fullname="Jeff Tantsura" initials="J" surname="Tantsura"> | |||
| <organization>Nvidia</organization> | <organization>Nvidia</organization> | |||
| <address> | <address> | |||
| <email>jefftant.ietf@gmail.com</email> | <email>jefftant.ietf@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date/> | <date month="November" year="2025"/> | |||
| <area/> | <area>RTG</area> | |||
| <workgroup>LSR Working Group</workgroup> | <workgroup>lsr</workgroup> | |||
| <!-- [rfced] Please insert any keywords (beyond those that appear in | ||||
| the title) for use on https://www.rfc-editor.org/search. --> | ||||
| <keyword>example</keyword> | ||||
| <abstract> | <abstract> | |||
| <t>This document defines a YANG data model that can be used to | <t>This document defines a YANG data model that can be used to | |||
| manage IS-IS Extensions for Segment Routing over the MPLS data plane. | manage IS-IS extensions for Segment Routing over the MPLS data plane. | |||
| </t> | </t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction" toc="default" numbered="true"> | <section anchor="introduction" toc="default" numbered="true"> | |||
| <name>Overview</name> | <name>Overview</name> | |||
| <t>This document defines a device YANG data model <xref target="RFC7950"/> that can be used to | <t>This document defines a device YANG data model <xref target="RFC7950"/> that can be used to | |||
| manage IS-IS Extensions for Segment Routing <xref target="RFC8667" format="de fault"/> over the MPLS data plane. | manage IS-IS extensions for Segment Routing <xref target="RFC8667" format="de fault"/> over the MPLS data plane. | |||
| It is an augmentation to the IS-IS YANG data model <xref target="RFC9130" for mat="default"/>.</t> | It is an augmentation to the IS-IS YANG data model <xref target="RFC9130" for mat="default"/>.</t> | |||
| <t> The YANG data model in this document conforms to the Network Managemen t | <t> The YANG data model in this document conforms to the Network Managemen t | |||
| Datastore Architecture (NMDA) <xref target="RFC8342" format="default"/>.</t> | Datastore Architecture (NMDA) <xref target="RFC8342" format="default"/>.</ | |||
| <section numbered="true" toc="default"> | t> | |||
| <name>Requirements Language</name> | ||||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | <!--[rfced] We note that BCP 14 key words are not used in this document. | |||
| NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | Therefore, we have removed the keywords paragraph in Section 1.1 and in | |||
| "MAY", and "OPTIONAL" in this document are to be interpreted as | the YANG module. We have also removed the references to RFCs 2119 and 8174. | |||
| described in BCP 14 <xref target="RFC2119" format="default"/> <xref targ | --> | |||
| et="RFC8174" format="default"/> | ||||
| when, and only when, they appear in all capitals, as shown here.</t> | ||||
| </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> | |||
| <!--[rfced] This text in Section 2 reflects text in Section 1. As it is | ||||
| repeating information, may we remove this text from Section 2? | ||||
| Original (Section 1): | ||||
| This document defines a device YANG data model [RFC7950] that can be | ||||
| used to manage IS-IS Extensions for Segment Routing [RFC8667] over | ||||
| the MPLS data plane. It is an augmentation to the IS-IS YANG data | ||||
| model [RFC9130]. | ||||
| Original (Section 2): | ||||
| This document defines a YANG data model for IS-IS Extensions for | ||||
| Segment Routing over the MPLS data plane. It is an augmentation of | ||||
| the IS-IS base model. | ||||
| --> | ||||
| <section anchor="design" toc="default" numbered="true"> | <section anchor="design" toc="default" numbered="true"> | |||
| <name>Design of the IS-IS MPLS Segment Routing Module</name> | <name>Design of the IS-IS MPLS Segment Routing Module</name> | |||
| <t>This document defines a YANG data model for IS-IS Extensions for Segmen t Routing over the MPLS data plane. It | <t>This document defines a YANG data model for IS-IS extensions for Segmen t Routing over the MPLS data plane. It | |||
| is an augmentation of the IS-IS base model.</t> | is an augmentation of the IS-IS base model.</t> | |||
| <t>The IS-IS SR MPLS YANG module requires support for the base segment rou | <t>The IS-IS SR MPLS YANG module requires support for the base Segment Rou | |||
| ting | ting | |||
| module <xref target="RFC9020" format="default"/>, which defines the global se | module <xref target="RFC9020" format="default"/>, which defines the global Se | |||
| gment | gment | |||
| routing management independent of any specific routing protocol configuration | Routing management independent of any specific routing protocol configuration | |||
| , and support of IS-IS base model <xref target="RFC9130" format="default"/> | , and support of the IS-IS base model <xref target="RFC9130" format="default"/>, | |||
| which defines basic IS-IS configuration and state.</t> | which defines the basic IS-IS configuration and state.</t> | |||
| <t>The ietf-isis-sr-mpls data module defines both the data nodes to configure | <t>The "ietf-isis-sr-mpls" data model defines both the data nodes to configur | |||
| IS-IS segment routing MPLS extensions and the additions to the IS-IS Link | e | |||
| State Protocol Data Units (LSPs) necessary to support MPLS segment routing.< | IS-IS Segment Routing MPLS extensions and the additions to the IS-IS Link | |||
| /t> | State Protocol Data Units (LSPs) necessary to support MPLS Segment Routing.< | |||
| /t> | ||||
| <section anchor="spring-activation" toc="default" numbered="true"> | <section anchor="spring-activation" toc="default" numbered="true"> | |||
| <name>Segment Routing Activation</name> | <name>Segment Routing Activation</name> | |||
| <t> | <t> | |||
| Activation of IS-IS SR MPLS is done by setting the "enable" leaf to true. | Activation of IS-IS SR MPLS is done by setting the "enable" leaf to true. | |||
| This triggers advertisement of SR MPLS extensions based on the co nfiguration parameters that have been | This triggers advertisement of SR MPLS extensions based on the co nfiguration parameters that have been | |||
| set up using the base segment routing module. | set up using the base Segment Routing module. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="spring-ms" toc="default" numbered="true"> | <section anchor="spring-ms" toc="default" numbered="true"> | |||
| <name>Advertising Mapping Server Policy</name> | <name>Advertising Mapping Server Policy</name> | |||
| <t> | <t> | |||
| The base segment routing module defines mapping server policies. | The base Segment Routing module defines mapping server policies. | |||
| By default, IS-IS will not advertise or process any mapping serve r entry. | By default, IS-IS will not advertise or process any mapping serve r entry. | |||
| The IS-IS SR MPLS module allows the advertisement of one or multi ple mapping server policies through the "bindings/advertise/policies" leaf-list. | The IS-IS SR MPLS module allows the advertisement of one or multi ple mapping server policies through the "bindings/advertise/policies" leaf-list. | |||
| The "bindings/receive" leaf controls the reception and process of mapping server entries. | The "bindings/receive" leaf controls the reception and process of mapping server entries. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="spring-ipfrr" toc="default" numbered="true"> | <section anchor="spring-ipfrr" toc="default" numbered="true"> | |||
| <name>IP Fast Reroute</name> | <name>IP Fast Reroute</name> | |||
| <t> | <t> | |||
| IS-IS SR MPLS model augments the fast-reroute container under int | The IS-IS SR MPLS module augments the Fast Reroute (FRR) containe | |||
| erface. | r under interface. | |||
| It brings the ability to activate TI-LFA (Topology Independent LF | It brings the ability to activate Topology Independent Loop-Free | |||
| A) and also enhances remote LFA to use | Alternate (TI-LFA) and also enhances Remote LFA (RLFA) to use | |||
| segment-routing tunneling instead of LDP. | Segment Routing tunneling instead of LDP. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="isis-sr-yang" toc="default" numbered="true"> | <section anchor="isis-sr-yang" toc="default" numbered="true"> | |||
| <name>IS-IS MPLS Segment Routing over MPLS YANG Module</name> | <name>IS-IS MPLS Segment Routing over MPLS YANG Module</name> | |||
| <!--[rfced] RFC 8402 is only cited in the YANG module. May we add a | ||||
| citation to RFC 8402 to the this sentence preceding the YANG module | ||||
| as well as add a reference in the Normative References section? | ||||
| Original: | ||||
| [RFC6991], [RFC8102], [RFC8294], [RFC8349], [RFC8667], [RFC9020], | ||||
| [RFC9130], and [I-D.ietf-rtgwg-segment-routing-ti-lfa] are referenced | ||||
| in the YANG module. | ||||
| Perhaps: | ||||
| [RFC6991], [RFC8102], [RFC8294], [RFC8349], [RFC8402], [RFC8667], | ||||
| [RFC9020], [RFC9130], and [RFC9855] are referenced | ||||
| in the YANG module. | ||||
| ... | ||||
| [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., | ||||
| Decraene, B., Litkowski, S., and R. Shakir, "Segment | ||||
| Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, | ||||
| July 2018, <https://www.rfc-editor.org/info/rfc8402>. | ||||
| --> | ||||
| <t> | <t> | |||
| <xref target="RFC6991"/>, <xref target="RFC8102"/>, <xref target="RFC8 294"/>, <xref target="RFC8349"/>, | <xref target="RFC6991"/>, <xref target="RFC8102"/>, <xref target="RFC8 294"/>, <xref target="RFC8349"/>, | |||
| <xref target="RFC8667"/>, <xref target="RFC9020"/>, <xref target="RFC 9130"/>, | <xref target="RFC8667"/>, <xref target="RFC9020"/>, <xref target="RFC 9130"/>, | |||
| and <xref target="I-D.ietf-rtgwg-segment-routing-ti-lfa" format="defau lt"/> | and <xref target="RFC9855" format="default"/> | |||
| are referenced in the YANG module. | are referenced in the YANG module. | |||
| </t> | </t> | |||
| <!--[rfced] These two sentences in the description clauses of the YANG | ||||
| module are phrased similarly. Should they be rephrased to match? If yes, | ||||
| should "IP" appear before "FRR" or before "interface"? | ||||
| Original: | ||||
| This augments ISIS interface level-1 IP FRR with TILFA. | ||||
| ... | ||||
| This augments ISIS IP interface level-2 FRR with TILFA. | ||||
| --> | ||||
| <!--[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. | ||||
| --> | ||||
| <figure> | <figure> | |||
| <artwork><![CDATA[ | <sourcecode name="ietf-isis-sr-mpls@2025-11-21.yang" type="yang" markers="tr | |||
| <CODE BEGINS> file "ietf-isis-sr-mpls@2025-05-06.yang" | ue"><![CDATA[ | |||
| module ietf-isis-sr-mpls { | module ietf-isis-sr-mpls { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-isis-sr-mpls"; | namespace "urn:ietf:params:xml:ns:yang:ietf-isis-sr-mpls"; | |||
| prefix isis-sr-mpls; | prefix isis-sr-mpls; | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix rt; | prefix rt; | |||
| reference | reference | |||
| "RFC 8349: A YANG Data Model for Routing | "RFC 8349: A YANG Data Model for Routing | |||
| Management (NMDA Version)"; | Management (NMDA Version)"; | |||
| skipping to change at line 198 ¶ | skipping to change at line 257 ¶ | |||
| <mailto:yingzhen.ietf@gmail.com> | <mailto:yingzhen.ietf@gmail.com> | |||
| Author: Acee Lindem | Author: Acee Lindem | |||
| <mailto:acee.ietf@gmail.com> | <mailto:acee.ietf@gmail.com> | |||
| Author: Ing-Wher Chen | Author: Ing-Wher Chen | |||
| <mailto:ingwherchen@mitre.org> | <mailto:ingwherchen@mitre.org> | |||
| Author: Jeff Tantsura | Author: Jeff Tantsura | |||
| <mailto:jefftant.ietf@gmail.com> | <mailto:jefftant.ietf@gmail.com> | |||
| "; | "; | |||
| description | description | |||
| "The YANG module defines the generic configuration and | "The YANG module defines the generic configuration and | |||
| operational state for Segment Routing ISIS extensions for the | operational state for Segment Routing IS-IS extensions for the | |||
| MPLS data plane. | MPLS data plane. | |||
| This YANG model conforms to the Network Management | This YANG data model conforms to the Network Management | |||
| Datastore Architecture (NMDA) as described in RFC 8342. | Datastore Architecture (NMDA) as described in RFC 8342. | |||
| Copyright (c) 2025 IETF Trust and the persons identified as | Copyright (c) 2025 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | 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 to | without modification, is permitted pursuant to, and subject to | |||
| the license terms contained in, the Revised BSD License set | the license terms contained in, the Revised BSD License set | |||
| forth in Section 4.c of the IETF Trust's Legal Provisions | 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). | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC 9902 | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfc9902); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | This version of this YANG module is part of RFC 9902; | |||
| 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."; | see 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-06 { | ||||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for IS-IS Segment Routing over | "RFC 9902: A YANG Data Model for IS-IS Segment Routing over | |||
| the MPLS Data Plane"; | the MPLS Data Plane"; | |||
| } | } | |||
| // RFC Ed.: Replace XXXX with actual RFC number. | ||||
| // Also, replace '2025-04-22' with the module publication date | ||||
| // in the format (YYYY-MM-DD) and remove this note. | ||||
| /* Features */ | /* Features */ | |||
| feature remote-lfa-sr { | feature remote-lfa-sr { | |||
| description | description | |||
| "Enhance rLFA to use SR path."; | "Enhance RLFA to use 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"; | |||
| } | } | |||
| /* Identities */ | /* Identities */ | |||
| identity sr-capability { | identity sr-capability { | |||
| description | description | |||
| "Base identity for ISIS SR-Capabilities sub-TLV flags"; | "Base identity for IS-IS SR-Capabilities sub-TLV flags."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing"; | "RFC 8667: IS-IS Extensions for Segment Routing"; | |||
| } | } | |||
| identity mpls-ipv4 { | identity mpls-ipv4 { | |||
| base sr-capability; | base sr-capability; | |||
| description | description | |||
| "If set, then the router is capable of | "If set, then the router is capable of | |||
| processing SR MPLS encapsulated IPv4 packets | processing SR-MPLS-encapsulated IPv4 packets | |||
| on all interfaces."; | on all interfaces."; | |||
| } | } | |||
| identity mpls-ipv6 { | identity mpls-ipv6 { | |||
| base sr-capability; | base sr-capability; | |||
| description | description | |||
| "If set, then the router is capable of | "If set, then the router is capable of | |||
| processing SR MPLS encapsulated IPv6 packets | processing SR-MPLS-encapsulated IPv6 packets | |||
| on all interfaces."; | on all interfaces."; | |||
| } | } | |||
| identity prefix-sid-flag { | identity prefix-sid-flag { | |||
| description | description | |||
| "Base identity for prefix SID sub-TLV flags."; | "Base identity for Prefix Segment Identifier (Prefix-SID) | |||
| sub-TLV flags."; | ||||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.1"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.1"; | |||
| } | } | |||
| identity r-flag { | identity r-flag { | |||
| base prefix-sid-flag; | base prefix-sid-flag; | |||
| description | description | |||
| "Re-advertisement Flag."; | "Re-advertisement Flag."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.1"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.1"; | |||
| skipping to change at line 342 ¶ | skipping to change at line 389 ¶ | |||
| identity l-flag { | identity l-flag { | |||
| base prefix-sid-flag; | base prefix-sid-flag; | |||
| description | description | |||
| "Local Flag."; | "Local Flag."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.1"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.1"; | |||
| } | } | |||
| identity adj-sid-flag { | identity adj-sid-flag { | |||
| description | description | |||
| "Base identity for Adj-SID sub-TLV flags."; | "Base identity for Adjacency Segment Identifier (Adj-SID) | |||
| sub-TLV flags."; | ||||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | |||
| } | } | |||
| identity f-flag { | identity f-flag { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| description | description | |||
| "Address-Family flag."; | "Address-Family Flag."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | |||
| } | } | |||
| identity b-flag { | identity b-flag { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| description | description | |||
| "Backup flag."; | "Backup Flag."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | |||
| } | } | |||
| identity vi-flag { | identity vi-flag { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| description | description | |||
| "Value/Index flag - corresponds to V-Flag in reference."; | "Value/Index Flag - corresponds to V-Flag in reference."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | |||
| } | } | |||
| identity lg-flag { | identity lg-flag { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| description | description | |||
| "Local/Global flag - corresponds to L-Flag in reference."; | "Local/Global Flag - corresponds to L-Flag in reference."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | |||
| } | } | |||
| identity s-flag { | identity s-flag { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| description | description | |||
| "Set flag - corresponds to S-Flag in reference.."; | "Set Flag - corresponds to S-Flag in reference."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | |||
| } | } | |||
| identity pe-flag { | identity pe-flag { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| description | description | |||
| "Persistent flag - corresponds to P-Flag in reference."; | "Persistent Flag - corresponds to P-Flag in reference."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | |||
| } | } | |||
| identity sid-binding-flag { | identity sid-binding-flag { | |||
| description | description | |||
| "Base identity for sid binding tlv flags."; | "Base identity for SID Binding TLV flags."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.4"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.4"; | |||
| } | } | |||
| identity af-flag { | identity af-flag { | |||
| base sid-binding-flag; | base sid-binding-flag; | |||
| description | description | |||
| "Address-Family flag - corresponds to F-Flag in reference."; | "Address-Family Flag - corresponds to F-Flag in reference."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.4"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.4"; | |||
| } | } | |||
| identity m-flag { | identity m-flag { | |||
| base sid-binding-flag; | base sid-binding-flag; | |||
| description | description | |||
| "Mirror Context flag."; | "Mirror Context Flag."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.4"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.4"; | |||
| } | } | |||
| identity sf-flag { | identity sf-flag { | |||
| base sid-binding-flag; | base sid-binding-flag; | |||
| description | description | |||
| "S flag. If set, the binding label TLV should be flooded | "S-Flag. If set, the Label Binding TLV should be flooded | |||
| across the entire routing domain - corresponds to S-Flag in | across the entire routing domain - corresponds to S-Flag in | |||
| reference."; | reference."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.4"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.4"; | |||
| } | } | |||
| identity d-flag { | identity d-flag { | |||
| base sid-binding-flag; | base sid-binding-flag; | |||
| description | description | |||
| "Leaking flag."; | "Leaking Flag."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.4"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.4"; | |||
| } | } | |||
| identity a-flag { | identity a-flag { | |||
| base sid-binding-flag; | base sid-binding-flag; | |||
| description | description | |||
| "Attached flag."; | "Attached Flag."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.4"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.4"; | |||
| } | } | |||
| /* 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 8667: IS-IS Extensions for Segment Routing, | "RFC 8667: IS-IS Extensions for Segment Routing, | |||
| Section 2.1.1.1"; | Section 2.1.1.1"; | |||
| 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 sr-capability { | grouping sr-capability { | |||
| description | description | |||
| "SR capability grouping."; | "SR-Capability grouping."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 3.1"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 3.1"; | |||
| container sr-capability { | container sr-capability { | |||
| description | description | |||
| "SR Capability Flags."; | "SR-Capability flags."; | |||
| leaf-list sr-capability-flag { | leaf-list sr-capability-flag { | |||
| type identityref { | type identityref { | |||
| base sr-capability; | base sr-capability; | |||
| } | } | |||
| description | description | |||
| "SR Capability sub-TLV flags."; | "SR-Capability sub-TLV flags."; | |||
| } | } | |||
| container global-blocks { | container global-blocks { | |||
| description | description | |||
| "Segment Routing Global Blocks."; | "Segment Routing Global Blocks."; | |||
| list global-block { | list global-block { | |||
| description | description | |||
| "Segment Routing Global Block."; | "Segment Routing Global Block."; | |||
| leaf range-size { | leaf range-size { | |||
| type rt-types:uint24; | type rt-types:uint24; | |||
| description | description | |||
| skipping to change at line 545 ¶ | skipping to change at line 593 ¶ | |||
| } | } | |||
| } | } | |||
| grouping srlb { | grouping srlb { | |||
| description | description | |||
| "SR Local Block grouping."; | "SR Local Block grouping."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 3.3"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 3.3"; | |||
| container local-blocks { | container local-blocks { | |||
| description | description | |||
| "List of SRLBs."; | "List of Segment Routing Local Blocks (SRLBs)."; | |||
| list local-block { | list local-block { | |||
| description | description | |||
| "Segment Routing Local Block."; | "Segment Routing Local Block."; | |||
| leaf range-size { | leaf range-size { | |||
| type rt-types:uint24; | type rt-types:uint24; | |||
| description | description | |||
| "The SID range."; | "The SID range."; | |||
| } | } | |||
| uses sid-tlv-encoding; | uses sid-tlv-encoding; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping srms-preference { | grouping srms-preference { | |||
| description | description | |||
| "The SRMS preference TLV is used to advertise | "The SR Mapping Server (SRMS) Preference TLV is used to | |||
| a preference associated with the node that acts | advertise a preference associated with the node that acts as | |||
| as an SR Mapping Server."; | an SRMS."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 3.4"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 3.4"; | |||
| container srms-preference { | container srms-preference { | |||
| 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 adjacency-state { | grouping adjacency-state { | |||
| description | description | |||
| "This grouping extends adjacency state."; | "This grouping extends adjacency state."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | |||
| skipping to change at line 596 ¶ | skipping to change at line 644 ¶ | |||
| "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 address-family { | leaf address-family { | |||
| type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
| description | description | |||
| "Address-family associated with the | "Address-family associated with the | |||
| segment ID"; | segment ID."; | |||
| } | } | |||
| leaf weight { | leaf weight { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Weight associated with | "Weight associated with | |||
| the adjacency SID."; | the adjacency SID."; | |||
| } | } | |||
| leaf protection-requested { | leaf protection-requested { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Describe if the adjacency SID | "Describe if the adjacency SID | |||
| must be protected."; | must be protected."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping prefix-sid-sub-tlv { | grouping prefix-sid-sub-tlv { | |||
| description | description | |||
| "This grouping defines segment routing prefix segment | "This grouping defines the Segment Routing Prefix Segment | |||
| identifier (prefix-sid) sub-tlv."; | Identifier (Prefix-SID) sub-TLV."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.1"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.1"; | |||
| container prefix-sid-sub-tlvs { | container prefix-sid-sub-tlvs { | |||
| description | description | |||
| "PrefixSID sub-tlvs."; | "Prefix-SID sub-TLVs."; | |||
| list prefix-sid-sub-tlv { | list prefix-sid-sub-tlv { | |||
| description | description | |||
| "List of prefix-sid sub-tlvs."; | "List of Prefix-SID sub-TLVs."; | |||
| container prefix-sid-flags { | container prefix-sid-flags { | |||
| description | description | |||
| "Describes flags associated with the | "Describes flags associated with the | |||
| segment ID."; | segment ID."; | |||
| 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."; | |||
| } | } | |||
| } | } | |||
| leaf algorithm { | leaf algorithm { | |||
| type identityref { | type identityref { | |||
| base sr-cmn:prefix-sid-algorithm; | base sr-cmn:prefix-sid-algorithm; | |||
| } | } | |||
| description | description | |||
| "Algorithm to be used for path computation."; | "Algorithm to be used for path computation."; | |||
| } | } | |||
| uses sid-tlv-encoding; | uses sid-tlv-encoding; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping adjacency-segment-id { | grouping adjacency-segment-id { | |||
| description | description | |||
| "This grouping defines segment routing extensions | "This grouping defines Segment Routing extensions | |||
| for adjacencies."; | for adjacencies."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | "RFC 8667: IS-IS Extensions for Segment Routing, Section 2.2"; | |||
| 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 segments."; | "List of segments."; | |||
| container adj-sid-flags { | container adj-sid-flags { | |||
| skipping to change at line 682 ¶ | skipping to change at line 730 ¶ | |||
| leaf weight { | leaf weight { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "The value represents the weight of the Adj-SID | "The value represents the weight of the Adj-SID | |||
| for the purpose of load balancing."; | for the purpose of load balancing."; | |||
| } | } | |||
| leaf neighbor-id { | leaf neighbor-id { | |||
| type isis:system-id; | type isis:system-id; | |||
| description | description | |||
| "Describes the system ID of the neighbor | "Describes the system ID of the neighbor | |||
| associated with the SID value. This is only | associated with the SID value. This is only | |||
| used on LAN adjacencies."; | used on LAN adjacencies."; | |||
| } | } | |||
| uses sid-tlv-encoding; | uses sid-tlv-encoding; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping sid-binding-tlv { | grouping sid-binding-tlv { | |||
| description | description | |||
| "SID/Label binding TLV, type 149."; | "SID/Label Binding TLV, type 149."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, | "RFC 8667: IS-IS Extensions for Segment Routing, | |||
| Section 2.4"; | Section 2.4"; | |||
| leaf prefix { | leaf prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description | description | |||
| "The prefix represents the Forwarding Equivalence | "The prefix represents the Forwarding Equivalence | |||
| Class at the tail end of the advertised path."; | Class at the tail end of the advertised path."; | |||
| } | } | |||
| leaf range { | leaf range { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "Provides the ability to specify a range of addresses | "Provides the ability to specify a range of addresses | |||
| and their associated prefix-sids."; | and their associated Prefix-SIDs."; | |||
| } | } | |||
| container sid-binding-flags { | container sid-binding-flags { | |||
| description | description | |||
| "Binding TLV flags."; | "Binding TLV flags."; | |||
| leaf-list flag { | leaf-list flag { | |||
| type identityref { | type identityref { | |||
| base sid-binding-flag; | base sid-binding-flag; | |||
| } | } | |||
| description | description | |||
| "SID Binding TLV flags."; | "SID Binding TLV flags."; | |||
| } | } | |||
| } | } | |||
| list prefix-sid-sub-tlvs { | list prefix-sid-sub-tlvs { | |||
| description | description | |||
| "List of prefix-sid sub-tlvs."; | "List of Prefix-SID sub-TLVs."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, | "RFC 8667: IS-IS Extensions for Segment Routing, | |||
| Section 2.4.4"; | Section 2.4.4"; | |||
| uses prefix-sid-sub-tlv; | uses prefix-sid-sub-tlv; | |||
| } | } | |||
| list sid-sub-tlv { | list sid-sub-tlv { | |||
| description | description | |||
| "List of prefix-sid sub-tlvs."; | "List of Prefix-SID sub-TLVs."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, | "RFC 8667: IS-IS Extensions for Segment Routing, | |||
| Section 2.4.5"; | Section 2.4.5"; | |||
| uses sid-tlv-encoding; | uses sid-tlv-encoding; | |||
| } | } | |||
| uses isis:unknown-tlvs; | uses isis:unknown-tlvs; | |||
| } | } | |||
| /* Configuration */ | /* Configuration */ | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis" { | + "/isis:isis" { | |||
| when "derived-from-or-self(../rt:type, 'isis:isis')" { | when "derived-from-or-self(../rt:type, 'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol configuration | "This augments the IS-IS protocol configuration | |||
| with segment routing for the MPLS data plane."; | with Segment Routing for the MPLS data plane."; | |||
| 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"; | |||
| description | description | |||
| "Per-protocol Segment Routing Global Block (SRGB)."; | "Per-protocol Segment Routing Global Block (SRGB)."; | |||
| reference | reference | |||
| "RFC 8402: Segment Routing Architecture, Section 2"; | "RFC 8402: Segment Routing Architecture, Section 2"; | |||
| uses sr-cmn:srgb; | uses sr-cmn:srgb; | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:interfaces/isis:interface" { | + "/isis:isis/isis:interfaces/isis:interface" { | |||
| when "derived-from-or-self(../../../rt:type, 'isis:isis')" { | when "derived-from-or-self(../../../rt:type, 'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol configuration | "This augments the IS-IS protocol configuration | |||
| with segment routing."; | with 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 "../../../isis:interface-type = 'broadcast'" { | when "../../../isis:interface-type = 'broadcast'" { | |||
| description | description | |||
| "This augments broadcast interface."; | "This augments the broadcast interface."; | |||
| } | } | |||
| description | description | |||
| "This augments LAN interface adj-sid with system-id."; | "This augments the LAN interface adj-sid with system-id."; | |||
| leaf neighbor-system-id { | leaf neighbor-system-id { | |||
| type isis:system-id; | type isis:system-id; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Neighbor system ID."; | "Neighbor system ID."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:interfaces/isis:interface" | + "/isis:isis/isis:interfaces/isis:interface" | |||
| + "/isis:fast-reroute/isis:lfa" { | + "/isis:fast-reroute/isis:lfa" { | |||
| when "derived-from-or-self(../../../../../rt:type," | when "derived-from-or-self(../../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS interface IP FRR with TILFA."; | "This augments the IS-IS interface 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."; | |||
| leaf enabled { | leaf enabled { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Enables TI-LFA computation."; | "Enables TI-LFA computation."; | |||
| } | } | |||
| container selection-tie-breakers { | container selection-tie-breakers { | |||
| 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."; | |||
| 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."; | |||
| 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."; | |||
| 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."; | a lower priority being more preferred."; | |||
| } | } | |||
| } | } | |||
| 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."; | |||
| description | description | |||
| "Enable SRLG (Shared Resource Link Group) | "Enable Shared Resource Link Group (SRLG) | |||
| disjoint as a TI-LFA path selection tie-breaker. | disjoint as a TI-LFA path selection tie-breaker. | |||
| A path providing node a disjoint path for SRLG | A path providing a node with a disjoint path for SRLG | |||
| links from the primary path will be selected over | links from the primary path will be selected over | |||
| one that doesn't provide an SRLG disjoint path."; | a path that doesn't provide an SRLG disjoint path."; | |||
| leaf priority { | leaf priority { | |||
| type uint8; | type uint8; | |||
| default "128"; | default "128"; | |||
| description | description | |||
| "Priority for SRLG disjoint tie-breaker with | "Priority for SRLG disjoint tie-breaker with | |||
| a lower priority being more preferred."; | a lower priority being more preferred."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:interfaces/isis:interface" | + "/isis:isis/isis:interfaces/isis:interface" | |||
| + "/isis:fast-reroute/isis:lfa/isis:level-1" { | + "/isis:fast-reroute/isis:lfa/isis:level-1" { | |||
| when "derived-from-or-self(../../../../../../rt:type," | when "derived-from-or-self(../../../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS interface level-1 IP FRR with TILFA."; | "This augments the IS-IS interface level-1 IP FRR with | |||
| TI-LFA."; | ||||
| container ti-lfa { | container ti-lfa { | |||
| if-feature "ti-lfa"; | if-feature "ti-lfa"; | |||
| description | description | |||
| "TI-LFA configuration."; | "TI-LFA configuration."; | |||
| leaf enabled { | leaf enabled { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Enables TI-LFA computation."; | "Enables TI-LFA computation."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:interfaces/isis:interface" | + "/isis:isis/isis:interfaces/isis:interface" | |||
| + "/isis:fast-reroute/isis:lfa/isis:level-2" { | + "/isis:fast-reroute/isis:lfa/isis:level-2" { | |||
| when "derived-from-or-self(../../../../../../rt:type," | when "derived-from-or-self(../../../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS IP interface level-2 FRR with TILFA."; | "This augments the IS-IS IP interface level-2 FRR with | |||
| TI-LFA."; | ||||
| container ti-lfa { | container ti-lfa { | |||
| if-feature "ti-lfa"; | if-feature "ti-lfa"; | |||
| description | description | |||
| "TI-LFA configuration."; | "TI-LFA configuration."; | |||
| leaf enabled { | leaf enabled { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Enables TI-LFA computation."; | "Enables TI-LFA computation."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:interfaces/isis:interface" | + "/isis:isis/isis:interfaces/isis:interface" | |||
| + "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { | + "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { | |||
| when "derived-from-or-self(../../../../../../rt:type," | when "derived-from-or-self(../../../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS remoteLFA config with | "This augments the IS-IS Remote LFA configuration with | |||
| use of segment-routing path."; | use of the Segment Routing path."; | |||
| 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 the Segment Routing path instead of | |||
| 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/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:interfaces/isis:interface" | + "/isis:isis/isis:interfaces/isis:interface" | |||
| + "/isis:adjacencies/isis:adjacency" { | + "/isis:adjacencies/isis:adjacency" { | |||
| when "derived-from-or-self(../../../../../rt:type," | when "derived-from-or-self(../../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol configuration | "This augments the IS-IS protocol configuration | |||
| with segment routing."; | with Segment Routing."; | |||
| uses adjacency-state; | uses adjacency-state; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:database/isis:levels/isis:lsp" | + "/isis:isis/isis:database/isis:levels/isis:lsp" | |||
| + "/isis:router-capabilities/isis:router-capability" { | + "/isis:router-capabilities/isis:router-capability" { | |||
| when "derived-from-or-self(../../../../../../rt:type," | when "derived-from-or-self(../../../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol LSDB router capability."; | "This augments the IS-IS protocol Link State Database (LSDB) | |||
| router capability."; | ||||
| uses sr-capability; | uses sr-capability; | |||
| uses sr-algorithm; | uses sr-algorithm; | |||
| uses srlb; | uses srlb; | |||
| uses srms-preference; | uses srms-preference; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:database/isis:levels/isis:lsp" | + "/isis:isis/isis:database/isis:levels/isis:lsp" | |||
| + "/isis:extended-is-neighbor/isis:neighbor/isis:instances" | + "/isis:extended-is-neighbor/isis:neighbor/isis:instances" | |||
| + "/isis:instance" { | + "/isis:instance" { | |||
| when "derived-from-or-self(../../../../../../../../rt:type," | when "derived-from-or-self(../../../../../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol LSDB neighbor."; | "This augments the IS-IS protocol LSDB neighbor."; | |||
| uses adjacency-segment-id; | uses adjacency-segment-id; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:database/isis:levels/isis:lsp" | + "/isis:isis/isis:database/isis:levels/isis:lsp" | |||
| + "/isis:mt-is-neighbor/isis:neighbor/isis:instances" | + "/isis:mt-is-neighbor/isis:neighbor/isis:instances" | |||
| + "/isis:instance" { | + "/isis:instance" { | |||
| when "derived-from-or-self(../../../../../../../../rt:type," | when "derived-from-or-self(../../../../../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol LSDB neighbor."; | "This augments the IS-IS protocol LSDB neighbor."; | |||
| uses adjacency-segment-id; | uses adjacency-segment-id; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:database/isis:levels/isis:lsp" | + "/isis:isis/isis:database/isis:levels/isis:lsp" | |||
| + "/isis:extended-ipv4-reachability/isis:prefixes" { | + "/isis:extended-ipv4-reachability/isis:prefixes" { | |||
| when "derived-from-or-self(../../../../../../rt:type," | when "derived-from-or-self(../../../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol LSDB prefix."; | "This augments the IS-IS protocol LSDB prefix."; | |||
| uses prefix-sid-sub-tlv; | uses prefix-sid-sub-tlv; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:database/isis:levels/isis:lsp" | + "/isis:isis/isis:database/isis:levels/isis:lsp" | |||
| + "/isis:mt-extended-ipv4-reachability/isis:prefixes" { | + "/isis:mt-extended-ipv4-reachability/isis:prefixes" { | |||
| when "derived-from-or-self(../../../../../../rt:type," | when "derived-from-or-self(../../../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol LSDB prefix."; | "This augments the IS-IS protocol LSDB prefix."; | |||
| uses prefix-sid-sub-tlv; | uses prefix-sid-sub-tlv; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:database/isis:levels/isis:lsp" | + "/isis:isis/isis:database/isis:levels/isis:lsp" | |||
| + "/isis:ipv6-reachability/isis:prefixes" { | + "/isis:ipv6-reachability/isis:prefixes" { | |||
| when "derived-from-or-self(../../../../../../rt:type," | when "derived-from-or-self(../../../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol LSDB prefix."; | "This augments the IS-IS protocol LSDB prefix."; | |||
| uses prefix-sid-sub-tlv; | uses prefix-sid-sub-tlv; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:database/isis:levels/isis:lsp" | + "/isis:isis/isis:database/isis:levels/isis:lsp" | |||
| + "/isis:mt-ipv6-reachability/isis:prefixes" { | + "/isis:mt-ipv6-reachability/isis:prefixes" { | |||
| when "derived-from-or-self(../../../../../../rt:type," | when "derived-from-or-self(../../../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol LSDB prefix."; | "This augments the IS-IS protocol LSDB prefix."; | |||
| uses prefix-sid-sub-tlv; | uses prefix-sid-sub-tlv; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "/isis:isis/isis:database/isis:levels/isis:lsp" { | + "/isis:isis/isis:database/isis:levels/isis:lsp" { | |||
| when "derived-from-or-self(../../../../rt:type," | when "derived-from-or-self(../../../../rt:type," | |||
| + "'isis:isis')" { | + "'isis:isis')" { | |||
| description | description | |||
| "This augments ISIS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol LSDB."; | "This augments the IS-IS protocol LSDB."; | |||
| container sid-binding-tlvs { | container sid-binding-tlvs { | |||
| description | description | |||
| "List of sid/label binding TLVs."; | "List of SID/Label Binding TLVs."; | |||
| list sid-binding-tlv { | list sid-binding-tlv { | |||
| key "prefix"; | key "prefix"; | |||
| description | description | |||
| "Sid/label binding TLV, type 149."; | "SID/Label Binding TLV, type 149."; | |||
| uses sid-binding-tlv; | uses sid-binding-tlv; | |||
| } | } | |||
| } | } | |||
| container mt-sid-binding-tlvs { | container mt-sid-binding-tlvs { | |||
| description | description | |||
| "List of multi-topology sid/label binding TLVs."; | "List of Multi-Topology SID/Label Binding TLVs."; | |||
| list mt-sid-binding-tlv { | list mt-sid-binding-tlv { | |||
| key "prefix mt-id"; | key "prefix mt-id"; | |||
| description | description | |||
| "Multi-Topology SID/Label binding TLV, type 150."; | "Multi-Topology SID/Label Binding TLV, type 150."; | |||
| reference | reference | |||
| "RFC 8667: IS-IS Extensions for Segment Routing, | "RFC 8667: IS-IS Extensions for Segment Routing, | |||
| Section 2.5"; | Section 2.5"; | |||
| uses sid-binding-tlv; | uses sid-binding-tlv; | |||
| leaf mt-id { | leaf mt-id { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "A 12-bit field containing the non-zero ID | "A 12-bit field containing the non-zero ID | |||
| of the topology."; | of the topology."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | ]]></sourcecode> | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section anchor="Security" toc="default" numbered="true"> | <section anchor="Security" toc="default" numbered="true"> | |||
| <name>Security Considerations</name> | <name>Security Considerations</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. We note some differences, specifically: | ||||
| a) Should this sentence from the template be added? "There are no particularly s | ||||
| ensitive RPC or action operations." | ||||
| b) These paragraphs do not appear in the template. Please confirm they should re | ||||
| main. | ||||
| Original: | ||||
| The ability to disable or enable IS-IS Segment Routing support and/or | ||||
| change Segment Routing configurations can result in a Denial-of- | ||||
| Service (DoS) attack, as this may cause traffic to be dropped or | ||||
| misrouted. Please refer to Section 5 of [RFC8667] for more | ||||
| information on Segment Routing extensions. | ||||
| ... | ||||
| Unauthorized access to any data node of these subtrees can disclose | ||||
| the operational state information of IS-IS protocol on a device. | ||||
| --> | ||||
| <!-- DNE begins --> | ||||
| <t>This section is modeled after the template described in <xref | ||||
| target="I-D.ietf-netmod-rfc8407bis" section="3.7" sectionFormat="of"/>.</t> | ||||
| <t> | <t> | |||
| The ietf-isis-sr-mpls YANG module defines a data model that is | The "ietf-isis-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"/>. These | NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. These | |||
| YANG-based management | YANG-based management protocols (1) have to use a secure transport layer | |||
| protocols (1) have to use a secure transport layer | ||||
| (e.g., SSH <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and QUIC < xref target="RFC9000"/>) and (2) have | (e.g., SSH <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and QUIC < xref target="RFC9000"/>) and (2) have | |||
| to use mutual authentication. | 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 --> | |||
| <ul spacing="normal"> | ||||
| <li>/isis:isis/segment-routing</li> | <li>/isis:isis/segment-routing</li> | |||
| <li>/isis:isis/protocol-srgb</li> | <li>/isis:isis/protocol-srgb</li> | |||
| <li>/isis:isis/isis:interfaces/isis:interface/segment-routing</li> | <li>/isis:isis/isis:interfaces/isis:interface/segment-routing</li> | |||
| <li>/isis:isis/isis:interfaces/isis:interface/isis:fast-reroute/ti-lfa</ li> | <li>/isis:isis/isis:interfaces/isis:interface/isis:fast-reroute/ti-lfa</ li> | |||
| </ul> | </ul> | |||
| <t>The ability to disable or enable IS-IS Segment Routing support and/or c hange | <t>The ability to disable or enable IS-IS Segment Routing support and/or c hange | |||
| Segment Routing configurations can result in a Denial-of-Service (DoS) a ttack, | Segment Routing configurations can result in a Denial-of-Service (DoS) a ttack, | |||
| as this may cause traffic to be dropped or misrouted. Please refer to Se | as this may cause traffic to be dropped or misrouted. Please refer to | |||
| ction 5 | <xref target="RFC8667" section="5"/> for more information on Segment Routi | |||
| of <xref target="RFC8667"/> for more information on Segment Routing exte | ng extensions.</t> | |||
| nsions.</t> | <!-- DNE begins --> | |||
| <t>Some of the readable data nodes in the modules | <t>Some of the readable data nodes in this YANG module | |||
| may be considered sensitive or vulnerable in some network environments. It is thus | may be considered sensitive or vulnerable in some network environments. It is thus | |||
| important to control read access (e.g., via get, get-config, or notificati on) | important to control read access (e.g., via get, get-config, or notificati on) | |||
| to these data nodes. | to these data nodes. Specifically, the following subtrees and data nodes h ave particular sensitivities/vulnerabilities: | |||
| </t> | </t> | |||
| <ul empty="true" spacing="normal"> | <!-- DNE ends --> | |||
| <ul spacing="normal"> | ||||
| <li>/isis:router-capabilities/sr-capability</li> | <li>/isis:router-capabilities/sr-capability</li> | |||
| <li>/isis:router-capabilities/sr-algorithms</li> | <li>/isis:router-capabilities/sr-algorithms</li> | |||
| <li>/isis:router-capabilities/local-blocks</li> | <li>/isis:router-capabilities/local-blocks</li> | |||
| <li>/isis:router-capabilities/srms-preference</li> | <li>/isis:router-capabilities/srms-preference</li> | |||
| <li>And the augmentations to the ISIS link state database.</li> | <li>and the augmentations to the IS-IS Link State Database.</li> | |||
| </ul> | </ul> | |||
| <t>Unauthorized access to any data node of these subtrees can disclose | <t>Unauthorized access to any data node of these subtrees can disclose | |||
| the operational state information of IS-IS protocol on a device.</t> | the operational state information of the IS-IS protocol on a device.</t> | |||
| </section> | ||||
| <section anchor="Acknowledgements" toc="default" numbered="true"> | ||||
| <name>Acknowledgements</name> | ||||
| <t> | ||||
| The authors would like to thank Pushpasis Sarkar, Derek Yeung,Yi Yang | ||||
| for their major contributions to the draft. Also thank Reshad Rahman, To | ||||
| m Petch, | ||||
| and Renato Westphal for their thorough reviews and helpful comments. | ||||
| </t> | ||||
| <t> | ||||
| The authors wish to thank Mohamed Boucadair and Ketan Talaulikar for | ||||
| extensive AD reviews for the IESG Telechat. Thanks to Eric Vyncke | ||||
| and Mahesh Jethanandani for review comments.</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 19-3033. This | ||||
| approval allows the MITRE employee to release contributions externally a | ||||
| nd | ||||
| does not assert authority to publish. | ||||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="IANA" toc="default" numbered="true"> | <section anchor="IANA" toc="default" numbered="true"> | |||
| <name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
| <t>The IANA is requested to assign one new URI from the | <t>The IANA has assigned one new URI in the | |||
| IETF XML registry (<xref target="RFC3688"/>): </t> | "IETF XML Registry" <xref target="RFC3688"/>: </t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <dl spacing="compact" newline="false"> | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr-mpls | <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-isis-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>This document also requests one new YANG module name in the YANG Module | <t>This document also registers one new YANG module name in the "YANG Modu | |||
| Names registry (<xref target="RFC6020" format="default"/>):</t> | le Names" registry <xref target="RFC6020" format="default"/>:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <dl spacing="compact" newline="false"> | |||
| name: ietf-isis-sr-mpls | <dt>Name:</dt><dd>ietf-isis-sr-mpls</dd> | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr-mpls | <dt>Maintained by IANA?</dt><dd>N</dd> | |||
| prefix: isis-sr-mpls | <dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-isis-sr-mpls</dd> | |||
| maintained by IANA? N | <dt>Prefix:</dt><dd>isis-sr-mpls</dd> | |||
| reference: RFC XXXX | <dt>Reference:</dt><dd>RFC 9902</dd> | |||
| ]]></artwork> | </dl> | |||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <displayreference target="I-D.ietf-netmod-rfc8407bis" to="YANG-GUIDE"/> | ||||
| <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.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.368 | |||
| .2119.xml"/> | 8.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.602 | |||
| .3688.xml"/> | 0.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.699 | |||
| .4252.xml"/> | 1.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.795 | |||
| .6020.xml"/> | 0.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.810 | |||
| .6991.xml"/> | 2.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.829 | |||
| .7950.xml"/> | 4.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.834 | |||
| .8102.xml"/> | 1.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.834 | |||
| .8174.xml"/> | 2.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.834 | |||
| .8294.xml"/> | 9.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.866 | |||
| .8341.xml"/> | 7.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.902 | |||
| .8342.xml"/> | 0.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.913 | |||
| .8349.xml"/> | 0.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.985 | |||
| .8667.xml"/> | 5.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
| .9020.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
| .9130.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ie | ||||
| tf-rtgwg-segment-routing-ti-lfa.xml"/> | ||||
| </references> | </references> | |||
| <references> | <references> | |||
| <name>Informative References</name> | <name>Informative 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.425 | |||
| FC.6241.xml"/> | 2.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.624 | |||
| FC.8040.xml"/> | 1.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.804 | |||
| FC.8340.xml"/> | 0.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.834 | |||
| FC.8446.xml"/> | 0.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.844 | |||
| FC.8792.xml"/> | 6.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.879 | |||
| FC.9000.xml"/> | 2.xml"/> | |||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.900 | ||||
| 0.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ie | ||||
| tf-netmod-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> | <t> | |||
| The following is an XML example using the ISIS SR MPLS YANG module def ined in this document. | The following is an XML example using the IS-IS SR MPLS YANG module de fined in this document. | |||
| </t> | </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'?> | |||
| <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | |||
| <interface> | <interface> | |||
| <name>eth0</name> | <name>eth0</name> | |||
| <admin-status>up</admin-status> | <admin-status>up</admin-status> | |||
| <oper-status>up</oper-status> | <oper-status>up</oper-status> | |||
| <if-index>1</if-index> | <if-index>1</if-index> | |||
| <statistics> | <statistics> | |||
| <discontinuity-time>2024-10-27T14:30:00Z</discontinuity-time> | <discontinuity-time>2024-10-27T14:30:00Z</discontinuity-time> | |||
| </statistics> | </statistics> | |||
| skipping to change at line 1272 ¶ | skipping to change at line 1330 ¶ | |||
| ietf-isis-sr-mpls"> | ietf-isis-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> | |||
| </isis> | </isis> | |||
| </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-interfaces:interfaces": { | "ietf-interfaces:interfaces": { | |||
| "interface": [ | "interface": [ | |||
| { | { | |||
| "name": "eth0", | "name": "eth0", | |||
| "admin-status": "up", | "admin-status": "up", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "if-index": 1, | "if-index": 1, | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2024-10-27T07:30:00-07:00" | "discontinuity-time": "2024-10-27T07:30:00-07:00" | |||
| skipping to change at line 1335 ¶ | skipping to change at line 1394 ¶ | |||
| "upper-bound": 5000 | "upper-bound": 5000 | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
| <name>IS-IS MPLS Segment Routing Module Tree</name> | <name>IS-IS MPLS Segment Routing Module Tree</name> | |||
| <t>The figure below describes the overall structure of the ietf-isis-sr-mp ls | <t>The figure below describes the overall structure of the "ietf-isis-sr-m pls" | |||
| YANG module:</t> | YANG module:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/isis:isis: | /rt:control-plane-protocol/isis:isis: | |||
| +--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 1574 ¶ | skipping to change at line 1633 ¶ | |||
| | +--:(sid-label) | | +--:(sid-label) | |||
| | | +--ro label-value? uint32 | | | +--ro label-value? uint32 | |||
| | +--:(sid-index) | | +--:(sid-index) | |||
| | +--ro index-value? uint32 | | +--ro index-value? uint32 | |||
| +--ro unknown-tlvs | +--ro unknown-tlvs | |||
| | +--ro unknown-tlv* [] | | +--ro unknown-tlv* [] | |||
| | +--ro type? uint16 | | +--ro type? uint16 | |||
| | +--ro length? uint16 | | +--ro length? uint16 | |||
| | +--ro value? yang:hex-string | | +--ro value? yang:hex-string | |||
| +--ro mt-id uint16 | +--ro mt-id uint16 | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="Acknowledgements" toc="default" numbered="false"> | ||||
| <name>Acknowledgements</name> | ||||
| <t> | ||||
| The authors would like to thank <contact fullname="Pushpasis Sarkar"/>, | ||||
| <contact fullname="Derek Yeung"/>, and <contact fullname="Yi Yang"/> | ||||
| for their major contributions to the document. Also thanks to <contact | ||||
| fullname="Reshad Rahman"/>, <contact fullname="Tom Petch"/>, | ||||
| and <contact fullname="Renato Westphal"/> for their thorough reviews and | ||||
| helpful comments. | ||||
| </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 fullname | ||||
| ="É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 19-3033. This | ||||
| approval allows the MITRE employee to release contributions externally a | ||||
| nd | ||||
| does not assert authority to publish. | ||||
| </t> | ||||
| </section> | ||||
| </back> | </back> | |||
| <!--[rfced] 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? | ||||
| Adjacency Segment Identifier, adjacency SID, adjacency Segment ID (Adj-SID) | ||||
| Link State Database (LSDB) | ||||
| Remote LFA (RLFA) | ||||
| Segment Routing (SR) | ||||
| --> | ||||
| <!--[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. 138 change blocks. | ||||
| 280 lines changed or deleted | 384 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||