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.