| rfc9902.original | rfc9902.txt | |||
|---|---|---|---|---|
| LSR Working Group S. Litkowski | Internet Engineering Task Force (IETF) S. Litkowski | |||
| Internet-Draft Cisco Systems | Request for Comments: 9902 Cisco Systems | |||
| Intended status: Standards Track Y. Qu | Category: Standards Track Y. Qu | |||
| Expires: 7 November 2025 Futurewei Technologies | ISSN: 2070-1721 Futurewei Technologies | |||
| A. Lindem | A. Lindem | |||
| LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
| I. Chen | I. Chen | |||
| The MITRE Corporation | The MITRE Corporation | |||
| J. Tantsura | J. Tantsura | |||
| Nvidia | Nvidia | |||
| 6 May 2025 | November 2025 | |||
| A YANG Data Model for IS-IS Segment Routing over the MPLS Data Plane | A YANG Data Model for IS-IS Segment Routing over the MPLS Data Plane | |||
| draft-ietf-isis-sr-yang-31 | ||||
| Abstract | Abstract | |||
| This document defines a YANG data model that can be used to manage | This document defines a YANG data model that can be used to manage | |||
| IS-IS Extensions for Segment Routing over the MPLS data plane. | IS-IS extensions for Segment Routing over the MPLS data plane. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 7 November 2025. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9902. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Overview | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 | 1.1. Tree Diagrams | |||
| 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 2 | 2. Design of the IS-IS MPLS Segment Routing Module | |||
| 2. Design of the IS-IS MPLS Segment Routing Module . . . . . . . 3 | 2.1. Segment Routing Activation | |||
| 2.1. Segment Routing Activation . . . . . . . . . . . . . . . 3 | 2.2. Advertising Mapping Server Policy | |||
| 2.2. Advertising Mapping Server Policy . . . . . . . . . . . . 3 | 2.3. IP Fast Reroute | |||
| 2.3. IP Fast Reroute . . . . . . . . . . . . . . . . . . . . . 3 | 3. IS-IS MPLS Segment Routing over MPLS YANG Module | |||
| 3. IS-IS MPLS Segment Routing over MPLS YANG Module . . . . . . 3 | 4. Security Considerations | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | 5. IANA Considerations | |||
| 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 25 | 6. References | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 | 6.1. Normative References | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 6.2. Informative References | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 25 | Appendix A. A Configuration Example | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 27 | Appendix B. IS-IS MPLS Segment Routing Module Tree | |||
| Appendix A. A Configuration Example . . . . . . . . . . . . . . 28 | Acknowledgements | |||
| Appendix B. IS-IS MPLS Segment Routing Module Tree . . . . . . . 30 | Authors' Addresses | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 | ||||
| 1. Overview | 1. Overview | |||
| This document defines a device YANG data model [RFC7950] that can be | This document defines a device YANG data model [RFC7950] that can be | |||
| used to manage IS-IS Extensions for Segment Routing [RFC8667] over | 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 | the MPLS data plane. It is an augmentation to the IS-IS YANG data | |||
| model [RFC9130]. | model [RFC9130]. | |||
| The YANG data model in this document conforms to the Network | The YANG data model in this document conforms to the Network | |||
| Management Datastore Architecture (NMDA) [RFC8342]. | Management Datastore Architecture (NMDA) [RFC8342]. | |||
| 1.1. Requirements Language | 1.1. Tree Diagrams | |||
| 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 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| 1.2. Tree Diagrams | ||||
| This document uses the graphical representation of data model defined | This document uses the graphical representation of a data model as | |||
| in [RFC8340]. | defined in [RFC8340]. | |||
| 2. Design of the IS-IS MPLS Segment Routing Module | 2. Design of the IS-IS MPLS Segment Routing Module | |||
| This document defines a YANG data model for IS-IS Extensions for | This document defines a YANG data model for IS-IS extensions for | |||
| Segment Routing over the MPLS data plane. It is an augmentation of | Segment Routing over the MPLS data plane. It is an augmentation of | |||
| the IS-IS base model. | the IS-IS base model. | |||
| The IS-IS SR MPLS YANG module requires support for the base segment | The IS-IS SR MPLS YANG module requires support for the base Segment | |||
| routing module [RFC9020], which defines the global segment routing | Routing module [RFC9020], which defines the global Segment Routing | |||
| management independent of any specific routing protocol | management independent of any specific routing protocol | |||
| configuration, and support of IS-IS base model [RFC9130] which | configuration, and support of the IS-IS base model [RFC9130], which | |||
| defines basic IS-IS configuration and state. | defines the basic IS-IS configuration and state. | |||
| The ietf-isis-sr-mpls data module defines both the data nodes to | The "ietf-isis-sr-mpls" data model defines both the data nodes to | |||
| configure IS-IS segment routing MPLS extensions and the additions to | configure IS-IS Segment Routing MPLS extensions and the additions to | |||
| the IS-IS Link State Protocol Data Units (LSPs) necessary to support | the IS-IS Link State Protocol Data Units (LSPs) necessary to support | |||
| MPLS segment routing. | MPLS Segment Routing. | |||
| 2.1. Segment Routing Activation | 2.1. Segment Routing Activation | |||
| Activation of IS-IS SR MPLS is done by setting the "enable" leaf to | 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 | true. This triggers advertisement of SR MPLS extensions based on the | |||
| configuration parameters that have been set up using the base segment | configuration parameters that have been set up using the base Segment | |||
| routing module. | Routing module. | |||
| 2.2. Advertising Mapping Server Policy | 2.2. Advertising Mapping Server Policy | |||
| The base segment routing module defines mapping server policies. By | The base Segment Routing module defines mapping server policies. By | |||
| default, IS-IS will not advertise or process any mapping server | default, IS-IS will not advertise or process any mapping server | |||
| entry. The IS-IS SR MPLS module allows the advertisement of one or | entry. The IS-IS SR MPLS module allows the advertisement of one or | |||
| multiple mapping server policies through the "bindings/advertise/ | multiple mapping server policies through the "bindings/advertise/ | |||
| policies" leaf-list. The "bindings/receive" leaf controls the | policies" leaf-list. The "bindings/receive" leaf controls the | |||
| reception and process of mapping server entries. | reception and process of mapping server entries. | |||
| 2.3. IP Fast Reroute | 2.3. IP Fast Reroute | |||
| IS-IS SR MPLS model augments the fast-reroute container under | The IS-IS SR MPLS module augments the Fast Reroute (FRR) container | |||
| interface. It brings the ability to activate TI-LFA (Topology | under interface. It brings the ability to activate Topology | |||
| Independent LFA) and also enhances remote LFA to use segment-routing | Independent Loop-Free Alternate (TI-LFA) and also enhances Remote LFA | |||
| tunneling instead of LDP. | (RLFA) to use Segment Routing tunneling instead of LDP. | |||
| 3. IS-IS MPLS Segment Routing over MPLS YANG Module | 3. IS-IS MPLS Segment Routing over MPLS YANG Module | |||
| [RFC6991], [RFC8102], [RFC8294], [RFC8349], [RFC8667], [RFC9020], | [RFC6991], [RFC8102], [RFC8294], [RFC8349], [RFC8667], [RFC9020], | |||
| [RFC9130], and [I-D.ietf-rtgwg-segment-routing-ti-lfa] are referenced | [RFC9130], and [RFC9855] are referenced in the YANG module. | |||
| in the YANG module. | ||||
| <CODE BEGINS> file "ietf-isis-sr-mpls@2025-05-06.yang" | <CODE BEGINS> file "ietf-isis-sr-mpls@2025-11-21.yang" | |||
| 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 page 5, line 4 ¶ | skipping to change at line 177 ¶ | |||
| prefix rt-types; | prefix rt-types; | |||
| reference | reference | |||
| "RFC 8294: Common YANG Data Types for the Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
| } | } | |||
| organization | organization | |||
| "IETF LSR - Link State Routing Working Group"; | "IETF LSR - Link State Routing Working Group"; | |||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/wg/lsr/> | "WG Web: <https://datatracker.ietf.org/wg/lsr/> | |||
| WG List: <mailto:lsr@ietf.org> | WG List: <mailto:lsr@ietf.org> | |||
| Author: Stephane Litkowski | Author: Stephane Litkowski | |||
| <mailto:slitkows.ietf@gmail.com> | <mailto:slitkows.ietf@gmail.com> | |||
| Author: Yingzhen Qu | Author: Yingzhen Qu | |||
| <mailto:yingzhen.ietf@gmail.com> | <mailto:yingzhen.ietf@gmail.com> | |||
| Author: Acee Lindem | Author: Acee Lindem | |||
| <mailto:acee.ietf@gmail.com> | <mailto:acee.ietf@gmail.com> | |||
| Author: 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 page 8, line 17 ¶ | skipping to change at line 323 ¶ | |||
| 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 page 12, line 28 ¶ | skipping to change at line 527 ¶ | |||
| } | } | |||
| } | } | |||
| 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 page 13, line 32 ¶ | skipping to change at line 578 ¶ | |||
| "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 page 15, line 21 ¶ | skipping to change at line 664 ¶ | |||
| 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; | |||
| } | } | |||
| } | } | |||
| skipping to change at page 17, line 4 ¶ | skipping to change at line 742 ¶ | |||
| 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> | <CODE ENDS> | |||
| Figure 1 | Figure 1 | |||
| 4. Security Considerations | 4. Security Considerations | |||
| The ietf-isis-sr-mpls YANG module defines a data model that is | This section is modeled after the template described in Section 3.7 | |||
| of [YANG-GUIDE]. | ||||
| The "ietf-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 [RFC6241] and RESTCONF [RFC8040]. These YANG-based | NETCONF [RFC6241] and RESTCONF [RFC8040]. These YANG-based | |||
| management protocols (1) have to use a secure transport layer (e.g., | management protocols (1) have to use a secure transport layer (e.g., | |||
| SSH [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and (2) have to use | SSH [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and (2) have to use | |||
| mutual authentication. | mutual authentication. | |||
| The Network Configuration Access Control Model (NACM) [RFC8341] | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
| provides the means to restrict access for particular NETCONF or | provides the means to restrict access for particular NETCONF or | |||
| RESTCONF users to a preconfigured subset of all available NETCONF or | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
| RESTCONF protocol operations and content. | RESTCONF protocol operations and content. | |||
| There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in this YANG module that are | |||
| writable/creatable/deletable (i.e., "config true", which is the | writable/creatable/deletable (i.e., "config true", which is the | |||
| default). All writable data nodes are likely to be reasonably | default). All writable data nodes are likely to be sensitive or | |||
| sensitive or vulnerable in some network environments. Write | vulnerable in some network environments. Write operations (e.g., | |||
| operations (e.g., edit-config) and delete operations to these data | edit-config) and delete operations to these data nodes without proper | |||
| nodes without proper protection or authentication can have a negative | protection or authentication can have a negative effect on network | |||
| effect on network operations. The following subtrees and data nodes | operations. The following subtrees and data nodes have particular | |||
| have particular sensitivities/vulnerabilities: | sensitivities/vulnerabilities: | |||
| /isis:isis/segment-routing | * /isis:isis/segment-routing | |||
| /isis:isis/protocol-srgb | * /isis:isis/protocol-srgb | |||
| /isis:isis/isis:interfaces/isis:interface/segment-routing | * /isis:isis/isis:interfaces/isis:interface/segment-routing | |||
| /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute/ti-lfa | * /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute/ti-lfa | |||
| The ability to disable or enable IS-IS Segment Routing support and/or | The ability to disable or enable IS-IS Segment Routing support and/or | |||
| change Segment Routing configurations can result in a Denial-of- | change Segment Routing configurations can result in a Denial-of- | |||
| Service (DoS) attack, as this may cause traffic to be dropped or | Service (DoS) attack, as this may cause traffic to be dropped or | |||
| misrouted. Please refer to Section 5 of [RFC8667] for more | misrouted. Please refer to Section 5 of [RFC8667] for more | |||
| information on Segment Routing extensions. | information on Segment Routing extensions. | |||
| Some of the readable data nodes in the modules 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. | notification) to these data nodes. Specifically, the following | |||
| subtrees and data nodes have particular sensitivities/ | ||||
| vulnerabilities: | ||||
| /isis:router-capabilities/sr-capability | * /isis:router-capabilities/sr-capability | |||
| /isis:router-capabilities/sr-algorithms | * /isis:router-capabilities/sr-algorithms | |||
| /isis:router-capabilities/local-blocks | * /isis:router-capabilities/local-blocks | |||
| /isis:router-capabilities/srms-preference | * /isis:router-capabilities/srms-preference | |||
| And the augmentations to the ISIS link state database. | * and the augmentations to the IS-IS Link State Database. | |||
| Unauthorized access to any data node of these subtrees can disclose | Unauthorized access to any data node of these subtrees can disclose | |||
| the operational state information of IS-IS protocol on a device. | the operational state information of the IS-IS protocol on a device. | |||
| 5. Acknowledgements | ||||
| The authors would like to thank Pushpasis Sarkar, Derek Yeung,Yi Yang | ||||
| for their major contributions to the draft. Also thank Reshad | ||||
| Rahman, Tom Petch, and Renato Westphal for their thorough reviews and | ||||
| helpful comments. | ||||
| The authors wish to thank Mohamed Boucadair and Ketan Talaulikar for | ||||
| extensive AD reviews for the IESG Telechat. Thanks to Eric Vyncke | ||||
| and Mahesh Jethanandani for review comments. | ||||
| Author affiliation with The MITRE Corporation is provided for | ||||
| identification purposes only, and is not intended to convey or imply | ||||
| MITRE's concurrence with, or support for, the positions, opinions or | ||||
| viewpoints expressed. MITRE has agreed to this document for Public | ||||
| Release, Distribution Unlimited, with Public Release Case Number | ||||
| 19-3033. This approval allows the MITRE employee to release | ||||
| contributions externally and does not assert authority to publish. | ||||
| 6. IANA Considerations | ||||
| The IANA is requested to assign one new URI from the IETF XML | ||||
| registry ([RFC3688]): | ||||
| URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr-mpls | 5. IANA Considerations | |||
| Registrant Contact: The IESG. | ||||
| XML: N/A, the requested URI is an XML namespace | ||||
| This document also requests one new YANG module name in the YANG | The IANA has assigned one new URI in the "IETF XML Registry" | |||
| Module Names registry ([RFC6020]): | [RFC3688]: | |||
| name: ietf-isis-sr-mpls | URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr-mpls | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr-mpls | Registrant Contact: The IESG. | |||
| prefix: isis-sr-mpls | XML: N/A; the requested URI is an XML namespace | |||
| maintained by IANA? N | ||||
| reference: RFC XXXX | ||||
| 7. References | This document also registers one new YANG module name in the "YANG | |||
| Module Names" registry [RFC6020]: | ||||
| 7.1. Normative References | Name: ietf-isis-sr-mpls | |||
| Maintained by IANA? N | ||||
| Namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr-mpls | ||||
| Prefix: isis-sr-mpls | ||||
| Reference: RFC 9902 | ||||
| [I-D.ietf-rtgwg-segment-routing-ti-lfa] | 6. References | |||
| Bashandy, A., Litkowski, S., Filsfils, C., Francois, P., | ||||
| Decraene, B., and D. Voyer, "Topology Independent Fast | ||||
| Reroute using Segment Routing", Work in Progress, | ||||
| Internet-Draft, draft-ietf-rtgwg-segment-routing-ti-lfa- | ||||
| 21, 12 February 2025, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-rtgwg- | ||||
| segment-routing-ti-lfa-21>. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | 6.1. Normative References | |||
| Requirement Levels", BCP 14, RFC 2119, | ||||
| DOI 10.17487/RFC2119, March 1997, | ||||
| <https://www.rfc-editor.org/info/rfc2119>. | ||||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
| <https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| [RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | ||||
| Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, | ||||
| January 2006, <https://www.rfc-editor.org/info/rfc4252>. | ||||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, | |||
| <https://www.rfc-editor.org/info/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
| <https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| [RFC8102] Sarkar, P., Ed., Hegde, S., Bowers, C., Gredler, H., and | [RFC8102] Sarkar, P., Ed., Hegde, S., Bowers, C., Gredler, H., and | |||
| S. Litkowski, "Remote-LFA Node Protection and | S. Litkowski, "Remote-LFA Node Protection and | |||
| Manageability", RFC 8102, DOI 10.17487/RFC8102, March | Manageability", RFC 8102, DOI 10.17487/RFC8102, March | |||
| 2017, <https://www.rfc-editor.org/info/rfc8102>. | 2017, <https://www.rfc-editor.org/info/rfc8102>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | |||
| "Common YANG Data Types for the Routing Area", RFC 8294, | "Common YANG Data Types for the Routing Area", RFC 8294, | |||
| DOI 10.17487/RFC8294, December 2017, | DOI 10.17487/RFC8294, December 2017, | |||
| <https://www.rfc-editor.org/info/rfc8294>. | <https://www.rfc-editor.org/info/rfc8294>. | |||
| [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | |||
| Access Control Model", STD 91, RFC 8341, | Access Control Model", STD 91, RFC 8341, | |||
| DOI 10.17487/RFC8341, March 2018, | DOI 10.17487/RFC8341, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8341>. | <https://www.rfc-editor.org/info/rfc8341>. | |||
| skipping to change at page 27, line 36 ¶ | skipping to change at line 1213 ¶ | |||
| [RFC9020] Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. | [RFC9020] Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. | |||
| Tantsura, "YANG Data Model for Segment Routing", RFC 9020, | Tantsura, "YANG Data Model for Segment Routing", RFC 9020, | |||
| DOI 10.17487/RFC9020, May 2021, | DOI 10.17487/RFC9020, May 2021, | |||
| <https://www.rfc-editor.org/info/rfc9020>. | <https://www.rfc-editor.org/info/rfc9020>. | |||
| [RFC9130] Litkowski, S., Ed., Yeung, D., Lindem, A., Zhang, J., and | [RFC9130] Litkowski, S., Ed., Yeung, D., Lindem, A., Zhang, J., and | |||
| L. Lhotka, "YANG Data Model for the IS-IS Protocol", | L. Lhotka, "YANG Data Model for the IS-IS Protocol", | |||
| RFC 9130, DOI 10.17487/RFC9130, October 2022, | RFC 9130, DOI 10.17487/RFC9130, October 2022, | |||
| <https://www.rfc-editor.org/info/rfc9130>. | <https://www.rfc-editor.org/info/rfc9130>. | |||
| 7.2. Informative References | [RFC9855] Bashandy, A., Litkowski, S., Filsfils, C., Francois, P., | |||
| Decraene, B., and D. Voyer, "Topology Independent Fast | ||||
| Reroute Using Segment Routing", RFC 9855, | ||||
| DOI 10.17487/RFC9855, October 2025, | ||||
| <https://www.rfc-editor.org/info/rfc9855>. | ||||
| 6.2. Informative References | ||||
| [RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | ||||
| Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, | ||||
| January 2006, <https://www.rfc-editor.org/info/rfc4252>. | ||||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
| and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
| skipping to change at page 28, line 19 ¶ | skipping to change at line 1252 ¶ | |||
| [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, | [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, | |||
| "Handling Long Lines in Content of Internet-Drafts and | "Handling Long Lines in Content of Internet-Drafts and | |||
| RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, | RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, | |||
| <https://www.rfc-editor.org/info/rfc8792>. | <https://www.rfc-editor.org/info/rfc8792>. | |||
| [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | |||
| Multiplexed and Secure Transport", RFC 9000, | Multiplexed and Secure Transport", RFC 9000, | |||
| DOI 10.17487/RFC9000, May 2021, | DOI 10.17487/RFC9000, May 2021, | |||
| <https://www.rfc-editor.org/info/rfc9000>. | <https://www.rfc-editor.org/info/rfc9000>. | |||
| [YANG-GUIDE] | ||||
| Bierman, A., Boucadair, M., and Q. Wu, "Guidelines for | ||||
| Authors and Reviewers of Documents Containing YANG Data | ||||
| Models", Work in Progress, Internet-Draft, draft-ietf- | ||||
| netmod-rfc8407bis-28, 5 June 2025, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-netmod- | ||||
| rfc8407bis-28>. | ||||
| Appendix A. A Configuration Example | Appendix A. A Configuration Example | |||
| The following is an XML example using the ISIS SR MPLS YANG module | The following is an XML example using the IS-IS SR MPLS YANG module | |||
| defined in this document. | defined in this document. | |||
| Note: '\' line wrapping per [RFC8792]. | Note: '\' line wrapping per [RFC8792]. | |||
| <?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> | |||
| skipping to change at page 30, line 47 ¶ | skipping to change at line 1385 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| Appendix B. IS-IS MPLS Segment Routing Module Tree | Appendix B. IS-IS MPLS Segment Routing Module Tree | |||
| The figure below describes the overall structure of the ietf-isis-sr- | The figure below describes the overall structure of the "ietf-isis- | |||
| mpls YANG module: | sr-mpls" YANG module: | |||
| 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}? | |||
| skipping to change at page 35, line 44 ¶ | skipping to change at line 1620 ¶ | |||
| | | +--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 | |||
| Acknowledgements | ||||
| The authors would like to thank Pushpasis Sarkar, Derek Yeung, and Yi | ||||
| Yang for their major contributions to the document. Also thanks to | ||||
| Reshad Rahman, Tom Petch, and Renato Westphal for their thorough | ||||
| reviews and helpful comments. | ||||
| The authors wish to thank Mohamed Boucadair and Ketan Talaulikar for | ||||
| extensive AD reviews for the IESG Telechat. Thanks to Éric Vyncke | ||||
| and Mahesh Jethanandani for review comments. | ||||
| Author affiliation with The MITRE Corporation is provided for | ||||
| identification purposes only and is not intended to convey or imply | ||||
| MITRE's concurrence with, or support for, the positions, opinions or | ||||
| viewpoints expressed. MITRE has agreed to this document for Public | ||||
| Release, Distribution Unlimited, with Public Release Case Number | ||||
| 19-3033. This approval allows the MITRE employee to release | ||||
| contributions externally and does not assert authority to publish. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Stephane Litkowski | Stephane Litkowski | |||
| Cisco Systems | Cisco Systems | |||
| Email: slitkows.ietf@gmail.com | Email: slitkows.ietf@gmail.com | |||
| Yingzhen Qu | Yingzhen Qu | |||
| Futurewei Technologies | Futurewei Technologies | |||
| Email: yingzhen.ietf@gmail.com | Email: yingzhen.ietf@gmail.com | |||
| Acee Lindem | Acee Lindem | |||
| LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
| Email: acee.ietf@gmail.com | Email: acee.ietf@gmail.com | |||
| Ing-Wher Chen | Ing-Wher Chen | |||
| The MITRE Corporation | The MITRE Corporation | |||
| End of changes. 150 change blocks. | ||||
| 275 lines changed or deleted | 254 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||