draft-ietf-lsr-isis-yang-augmentation-v1-01.txt   draft-ietf-lsr-isis-yang-augmentation-v1-02.txt 
Internet A. Lindem Internet A. Lindem
Internet-Draft S. Litkowski Internet-Draft S. Litkowski
Intended status: Standards Track Cisco Systems Intended status: Standards Track Cisco Systems
Expires: December 23, 2021 Y. Qu Expires: 25 June 2022 Y. Qu
Futurewei Futurewei
June 21, 2021 22 December 2021
IS-IS YANG Model Augmentations for Additional Features - Version 1 IS-IS YANG Model Augmentations for Additional Features - Version 1
draft-ietf-lsr-isis-yang-augmentation-v1-01 draft-ietf-lsr-isis-yang-augmentation-v1-02
Abstract Abstract
This document defines YANG data modules augmenting the IETF IS-IS This document defines YANG data modules augmenting the IETF IS-IS
YANG model to provide support for IS-IS Minimum Remaining Lifetime as YANG model to provide support for IS-IS Minimum Remaining Lifetime as
defined in RFC 7987, ,IS-IS Application-Specific Link Attributes as defined in RFC 7987, and IS-IS Application-Specific Link Attributes
defined in RFC 8919, and IS-IS Flexible Algorithm. as defined in RFC 8919.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 23, 2021. This Internet-Draft will expire on 25 June 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 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 Provisions Relating to IETF Documents (https://trustee.ietf.org/
(https://trustee.ietf.org/license-info) in effect on the date of license-info) in effect on the date of publication of this document.
publication of this document. Please review these documents Please review these documents carefully, as they describe your rights
carefully, as they describe your rights and restrictions with respect and restrictions with respect to this document. Code Components
to this document. Code Components extracted from this document must extracted from this document must include Revised BSD License text as
include Simplified BSD License text as described in Section 4.e of described in Section 4.e of the Trust Legal Provisions and are
the Trust Legal Provisions and are provided without warranty as provided without warranty as described in the Revised BSD License.
described in the Simplified BSD License.
Table of Contents Table of Contents
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
1.2. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3
2. YANG Module for IS-IS Minimum Remaining Lifetime . . . . . . 3 2. YANG Module for IS-IS Minimum Remaining Lifetime . . . . . . 3
3. YANG Module for IS-IS Application-Specific Link Attributes . 5 3. YANG Module for IS-IS Application-Specific Link Attributes . 5
4. YANG Module for IS-IS Flexible Algorithm . . . . . . . . . . 14 4. YANG Module for IS-IS Flexible Algorithm . . . . . . . . . . 14
5. Security Considerations . . . . . . . . . . . . . . . . . . . 25 5. Security Considerations . . . . . . . . . . . . . . . . . . . 25
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 27
8.1. Normative References . . . . . . . . . . . . . . . . . . 27 8.1. Normative References . . . . . . . . . . . . . . . . . . 27
8.2. Informative References . . . . . . . . . . . . . . . . . 29 8.2. Informative References . . . . . . . . . . . . . . . . . 29
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29
1. Overview 1. Overview
YANG [RFC6020] [RFC7950] is a data definition language used to define YANG [RFC7950] is a data definition language used to define the
the contents of a conceptual data store that allows networked devices contents of a conceptual data store that allows networked devices to
to be managed using NETCONF [RFC6241]. YANG is proving relevant be managed using NETCONF [RFC6241]. YANG is proving relevant beyond
beyond its initial confines, as bindings to other interfaces (e.g., its initial confines, as bindings to other interfaces (e.g., ReST)
ReST) and encodings other than XML (e.g., JSON) are being defined. and encodings other than XML (e.g., JSON) are being defined.
Furthermore, YANG data models can be used as the basis for Furthermore, YANG data models can be used as the basis for
implementation of other interfaces, such as CLI and programmatic implementation of other interfaces, such as CLI and programmatic
APIs. APIs.
This document defines YANG data modules augmenting the IETF IS-IS This document defines YANG data modules augmenting the IETF IS-IS
YANG model [I-D.ietf-isis-yang-isis-cfg], which itself augments YANG model [I-D.ietf-isis-yang-isis-cfg], which itself augments
[RFC8349], to provide support for configuration and operational state [RFC8349], to provide support for configuration and operational state
for the following IS-IS features: for the following IS-IS features:
RFC7987: IS-IS Minimum Remaining Lifetime[RFC7987]. RFC7987: IS-IS Minimum Remaining Lifetime[RFC7987].
skipping to change at page 3, line 34 skipping to change at page 3, line 34
module: ietf-isis-remaining-lifetime module: ietf-isis-remaining-lifetime
notifications: notifications:
+---n corrupt-remaining-lifetime +---n corrupt-remaining-lifetime
+--ro routing-protocol-name? -> /rt:routing +--ro routing-protocol-name? -> /rt:routing
/control-plane-protocols /control-plane-protocols
/control-plane-protocol/name /control-plane-protocol/name
+--ro isis-level? level +--ro isis-level? level
+--ro lsp-id? isis:lsp-id +--ro lsp-id? isis:lsp-id
<CODE BEGINS> file "ietf-isis-remaining-lifetime@2021-01-05.yang" <CODE BEGINS> file "ietf-isis-remaining-lifetime@2021-12-22.yang"
module ietf-isis-remaining-lifetime { module ietf-isis-remaining-lifetime {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-isis-remaining-lifetime"; namespace "urn:ietf:params:xml:ns:yang:ietf-isis-remaining-lifetime";
prefix isis-remaining-lifetime; prefix isis-remaining-lifetime;
import ietf-isis { import ietf-isis {
prefix "isis"; prefix "isis";
} }
organization organization
"IETF LSR - Link State Routing Working Group"; "IETF LSR - Link State Routing Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/lsr> "WG Web: <http://tools.ietf.org/wg/lsr>
WG List: <mailto:lsr@ietf.org> WG List: <mailto:lsr@ietf.org>
Author: Yingzhen Qu Author: Yingzhen Qu
<mailto:yqu@futurewei.com> <mailto:yqu@futurewei.com>
Author: Acee Lindem Author: Acee Lindem
<mailto:acee@cisco.com> <mailto:acee@cisco.com>
Author: Stephane Litkowski Author: Stephane Litkowski
<mailto:slitkows.ietf@gmail.com>"; <mailto:slitkows.ietf@gmail.com>";
description description
"This YANG module defines the configuration and operational "This YANG module defines the configuration and operational
state for IS-IS Minimum Remaining Lifetime feature as defined state for IS-IS Minimum Remaining Lifetime feature as defined
in RFC 7987. in RFC 7987.
Copyright (c) 2021 IETF Trust and the persons identified as Copyright (c) 2021 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 without modification, is permitted pursuant to, and subject to
to the license terms contained in, the Simplified BSD License the license terms contained in, the Revised BSD License set
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
(http://trustee.ietf.org/license-info). (http://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 XXXX;
see the RFC itself for full legal notices."; see the RFC itself for full legal notices.";
reference "RFC XXXX"; reference "RFC XXXX";
revision 2021-01-05 { revision 2021-12-22 {
description description
"Initial version"; "Initial version";
reference reference
"RFC XXXX: A YANG Data Model for IS-IS."; "RFC XXXX: A YANG Data Model for IS-IS Minimum Remaining Lifetime.";
} }
notification corrupt-remaining-lifetime { notification corrupt-remaining-lifetime {
uses isis:notification-instance-hdr; uses isis:notification-instance-hdr;
leaf lsp-id { leaf lsp-id {
type isis:lsp-id; type isis:lsp-id;
description "LSP ID"; description "LSP ID";
}
description
"This notification is sent when the system
detects corrupted lifetime of an LSP.";
reference "RFC 7987: IS-IS Minimum Remaining Lifetime";
} }
description
"This notification is sent when the system
detects correpted lifetime of an LSP.";
reference "RFC 7987: IS-IS Minimum Remaining Lifetime";
} }
}
<CODE ENDS> <CODE ENDS>
3. YANG Module for IS-IS Application-Specific Link Attributes 3. YANG Module for IS-IS Application-Specific Link Attributes
This document defines a YANG module for IS-IS Application-Specific This document defines a YANG module for IS-IS Application-Specific
Link Attributes [RFC8919]. It is an augmentation of the IS-IS base Link Attributes [RFC8919]. It is an augmentation of the IS-IS base
model. model.
module: ietf-isis-link-attr module: ietf-isis-link-attr
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
skipping to change at page 6, line 40 skipping to change at page 6, line 41
| | +--ro ipv4-int-addr? inet:ipv4-address | | +--ro ipv4-int-addr? inet:ipv4-address
| +--ro ipv4-neighbor-addr | +--ro ipv4-neighbor-addr
| | +--ro ipv4-neighbor-addr? inet:ipv4-address | | +--ro ipv4-neighbor-addr? inet:ipv4-address
| +--ro ipv6-interface-addr | +--ro ipv6-interface-addr
| | +--ro ipv6-int-addr? inet:ipv6-address | | +--ro ipv6-int-addr? inet:ipv6-address
| +--ro ipv6-neighbor-addr | +--ro ipv6-neighbor-addr
| +--ro ipv6-neighbor-addr? inet:ipv6-address | +--ro ipv6-neighbor-addr? inet:ipv6-address
+--ro srlgs +--ro srlgs
+--ro srlg* uint32 +--ro srlg* uint32
<CODE BEGINS> file "ietf-isis-link-attr@2021-01-05.yang" <CODE BEGINS> file "ietf-isis-link-attr@2021-12-22.yang"
module ietf-isis-link-attr { module ietf-isis-link-attr {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-isis-link-attr"; namespace "urn:ietf:params:xml:ns:yang:ietf-isis-link-attr";
prefix isis-link-attr; prefix isis-link-attr;
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference "RFC 6991 - Common YANG Data Types"; reference "RFC 6991 - Common YANG Data Types";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
} }
import ietf-isis { import ietf-isis {
prefix "isis"; prefix "isis";
} }
organization organization
"IETF LSR - Link State Routing Working Group"; "IETF LSR - Link State Routing Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/lsr> "WG Web: <http://tools.ietf.org/wg/lsr>
WG List: <mailto:lsr@ietf.org> WG List: <mailto:lsr@ietf.org>
Author: Yingzhen Qu Author: Yingzhen Qu
<mailto:yqu@futurewei.com> <mailto:yqu@futurewei.com>
Author: Acee Lindem Author: Acee Lindem
<mailto:acee@cisco.com> <mailto:acee@cisco.com>
Author: Stephane Litkowski Author: Stephane Litkowski
<mailto:slitkows.ietf@gmail.com>"; <mailto:slitkows.ietf@gmail.com>";
description description
"This YANG module defines the configuration and operational "This YANG module defines the configuration and operational
state for IS-IS application specific link attributes feature as state for IS-IS application specific link attributes feature as
defined in RFC 8919. defined in RFC 8919.
This YANG model conforms to the Network Management This YANG model conforms to the Network Management
Datastore Architecture (NMDA) as described in RFC 8342. Datastore Architecture (NMDA) as described in RFC 8342.
Copyright (c) 2021 IETF Trust and the persons identified as Copyright (c) 2021 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 without modification, is permitted pursuant to, and subject to
to the license terms contained in, the Simplified BSD License the license terms contained in, the Revised BSD License set
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
(http://trustee.ietf.org/license-info). (http://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 XXXX;
see the RFC itself for full legal notices. see the RFC itself for full legal notices.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as 'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here."; they appear in all capitals, as shown here.";
reference "RFC XXXX"; reference "RFC XXXX";
revision 2021-01-05 { revision 2021-12-22 {
description description
"Initial version"; "Initial version";
reference reference
"RFC XXXX: A YANG Data Model for IS-IS."; "RFC XXXX: A YANG Data Model for IS-IS Application-Specific Link
} Attributes.";
}
identity sabm-bit { identity sabm-bit {
description description
"Base identity for sabm bits."; "Base identity for sabm bits.";
reference "RFC 8919: IS-IS Application-Specific Link Attributes"; reference "RFC 8919: IS-IS Application-Specific Link Attributes";
} }
identity rsvp-te-bit { identity rsvp-te-bit {
base sabm-bit; base sabm-bit;
description description
"R bit, RSVP-TE."; "R bit, RSVP-TE.";
} }
identity sr-policy-bit { identity sr-policy-bit {
base sabm-bit; base sabm-bit;
description description
"S bit, Segment Routing Policy."; "S bit, Segment Routing Policy.";
} }
identity lfa-bit { identity lfa-bit {
base sabm-bit; base sabm-bit;
description description
"F bit, Loop Free Alternate (LFA). Includes all LFA types."; "F bit, Loop Free Alternate (LFA). Includes all LFA types.";
} }
grouping application-identifier-bit-mask { grouping application-identifier-bit-mask {
description description
"Identification of the set of applications associated with link "Identification of the set of applications associated with link
attribute advertisements"; attribute advertisements";
leaf l-flag { leaf l-flag {
type boolean; type boolean;
description description
"Legacy Flag. When set, all of the applications "Legacy Flag. When set, all of the applications
specified in the bit mask MUST use the legacy specified in the bit mask MUST use the legacy
advertisements."; advertisements.";
} }
leaf sabm-length { leaf sabm-length {
type uint8; type uint8;
description description
"Standard Application Identifier Bit Mask Length in "Standard Application Identifier Bit Mask Length in
octets."; octets.";
} }
leaf r-flag { leaf r-flag {
type boolean; type boolean;
default false; default false;
description description
"Reserved."; "Reserved.";
} }
leaf udabm-length { leaf udabm-length {
type uint8; type uint8;
description description
"User Defined Application Identifier Bit Mask Length "User Defined Application Identifier Bit Mask Length
in octets."; in octets.";
} }
container sabm { container sabm {
leaf-list sabm-bits { leaf-list sabm-bits {
type identityref { type identityref {
base sabm-bit; base sabm-bit;
} }
description description
"SABM bits list. This list will contain "SABM bits list. This list will contain
identities for the bits which are set in the identities for the bits which are set in the
SABA bits."; SABA bits.";
} }
description description
"Standard Application Identifier Bit Mask."; "Standard Application Identifier Bit Mask.";
} }
container udabm { container udabm {
description description
"User Defined Application Identifier Bit Mask. "User Defined Application Identifier Bit Mask.
This container is to be augmented by user defined This container is to be augmented by user defined
applications."; applications.";
} }
} }
grouping application-specific-link-attributes-sub-tlv { grouping application-specific-link-attributes-sub-tlv {
description description
"Grouping for specification of the applications and "Grouping for specification of the applications and
application-specific attribute values."; application-specific attribute values.";
container application-specific-link-attributes-sub-tlvs { container application-specific-link-attributes-sub-tlvs {
list asla-sub-tlvs { list asla-sub-tlvs {
uses application-identifier-bit-mask; uses application-identifier-bit-mask;
uses isis:unknown-tlvs; uses isis:unknown-tlvs;
description description
"List of application specific link attributes sub-tlvs."; "List of application specific link attributes sub-tlvs.";
}
description
"Application specific link attributes sub-tlv.";
}
}
grouping application-specific-srlg-tlv { }
description description
"Grouping of a TLV to advertise application-specific "Application specific link attributes sub-tlv.";
SRLGs for a given link."; }
container application-specific-srlg-tlv { }
list as-srlg-tlvs {
leaf neighbor-system-id {
type isis:system-id;
description
"Neighbor System-ID.";
}
leaf pseudo-node-id {
type uint8;
description
"Pseudo-node ID.";
}
uses application-identifier-bit-mask;
leaf length-of-sub-tlvs {
type uint8;
description
"Length of sub-tlvs.";
}
container link-id-sub-tlvs { grouping application-specific-srlg-tlv {
description description
"Link Identifier sub-TLVs."; "Grouping of a TLV to advertise application-specific
container link-local-remote-ids { SRLGs for a given link.";
description container application-specific-srlg-tlv {
"Link local/remote identifier sub-tlv."; list as-srlg-tlvs {
leaf link-local-id { leaf neighbor-system-id {
type union { type isis:system-id;
type inet:ipv4-address; description
type uint32; "Neighbor System-ID.";
} }
description leaf pseudo-node-id {
"Local identifier of the link. type uint8;
It could be an IPv4 address or a local identifier."; description
} "Pseudo-node ID.";
leaf link-remote-id { }
type union { uses application-identifier-bit-mask;
type inet:ipv4-address; leaf length-of-sub-tlvs {
type uint32; type uint8;
} description
description "Length of sub-tlvs.";
"Remote identifier of the link. }
It could be an IPv4 address or a remotely learned
identifier.";
}
}
container ipv4-interface-addr {
leaf ipv4-int-addr {
type inet:ipv4-address;
description
"IPv4 address for the interface.";
}
description
"IPv4 interface address sub-tlv.";
}
container ipv4-neighbor-addr {
leaf ipv4-neighbor-addr {
type inet:ipv4-address;
description
"IPv4 address for a neighboring router
on this link.";
}
description
"IPv4 neighbor address sub-tlv.";
}
container ipv6-interface-addr {
leaf ipv6-int-addr {
type inet:ipv6-address;
description
"IPv6 address for the interface.";
}
description
"IPv6 interface address sub-tlv.";
}
container ipv6-neighbor-addr {
leaf ipv6-neighbor-addr {
type inet:ipv6-address;
description
"IPv6 address for a neighboring router
on this link.";
}
description
"IPv6 neighbor address sub-tlv.";
}
}
container srlgs { container link-id-sub-tlvs {
description "List of SRLGs."; description
leaf-list srlg { "Link Identifier sub-TLVs.";
type uint32; container link-local-remote-ids {
description description
"SRLG value of the link."; "Link local/remote identifier sub-tlv.";
} leaf link-local-id {
} type union {
type inet:ipv4-address;
type uint32;
}
description
"Local identifier of the link.
It could be an IPv4 address or a local identifier.";
}
leaf link-remote-id {
type union {
type inet:ipv4-address;
type uint32;
description }
"List of application specific SRLG tlvs."; description
} "Remote identifier of the link.
description It could be an IPv4 address or a remotely learned
"Application specific SRLG tlv."; identifier.";
} }
} }
container ipv4-interface-addr {
leaf ipv4-int-addr {
type inet:ipv4-address;
description
"IPv4 address for the interface.";
}
description
"IPv4 interface address sub-tlv.";
}
container ipv4-neighbor-addr {
leaf ipv4-neighbor-addr {
type inet:ipv4-address;
description
"IPv4 address for a neighboring router
on this link.";
}
description
"IPv4 neighbor address sub-tlv.";
}
container ipv6-interface-addr {
leaf ipv6-int-addr {
type inet:ipv6-address;
description
"IPv6 address for the interface.";
}
description
"IPv6 interface address sub-tlv.";
}
container ipv6-neighbor-addr {
leaf ipv6-neighbor-addr {
type inet:ipv6-address;
description
"IPv6 address for a neighboring router
on this link.";
}
description
"IPv6 neighbor address sub-tlv.";
}
}
augment "/rt:routing/" + container srlgs {
"rt:control-plane-protocols/rt:control-plane-protocol"+ description "List of SRLGs.";
"/isis:isis/isis:interfaces/isis:interface" { leaf-list srlg {
when "/rt:routing/rt:control-plane-protocols/"+ type uint32;
"rt:control-plane-protocol/rt:type = 'isis:isis'" { description
description "SRLG value of the link.";
"This augment ISIS routing protocol when used."; }
} }
description
"This augments ISIS protocol configuration
with TE attributes per application.";
container isis-link-attr { description
choice link-attr-op-mode { "List of application specific SRLG tlvs.";
mandatory "true"; }
leaf legacy { description
type empty; "Application specific SRLG tlv.";
description }
"Only send legacy advertisements."; }
}
leaf transition {
type empty;
description
"Send both application-specific and legacy advertisements.";
}
leaf app-specific{
type empty;
description
"Only send application-specific advertisements.";
}
description
"Link attributes mode";
}
description
"Link attributes operation mode.";
}
}
/* TLV 22 */ 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:database/isis:levels/isis:lsp"+ when "/rt:routing/rt:control-plane-protocols/"+
"/isis:extended-is-neighbor/isis:neighbor"+ "rt:control-plane-protocol/rt:type = 'isis:isis'" {
"/isis:instances/isis:instance" { description
when "/rt:routing/rt:control-plane-protocols/"+ "This augment ISIS routing protocol when used.";
"rt:control-plane-protocol/rt:type = 'isis:isis'" { }
description description
"This augment ISIS routing protocol when used"; "This augments ISIS protocol configuration
} with TE attributes per application.";
description
"This augments ISIS protocol LSDB TLV22.";
uses application-specific-link-attributes-sub-tlv; container isis-link-attr {
} choice link-attr-op-mode {
mandatory "true";
leaf legacy {
type empty;
description
"Only send legacy advertisements.";
}
leaf transition {
type empty;
description
"Send both application-specific and legacy advertisements.";
}
leaf app-specific{
type empty;
description
"Only send application-specific advertisements.";
}
description
"Link attributes mode";
/* TLV 223 */ }
augment "/rt:routing/" + description
"rt:control-plane-protocols/rt:control-plane-protocol"+ "Link attributes operation mode.";
"/isis:isis/isis:database/isis:levels/isis:lsp"+ }
"/isis:mt-is-neighbor/isis:neighbor"+ }
"/isis:instances/isis:instance" {
when "/rt:routing/rt:control-plane-protocols/"+
"rt:control-plane-protocol/rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol LSDB TLV22.";
uses application-specific-link-attributes-sub-tlv; /* TLV 22 */
} augment "/rt:routing/" +
"rt:control-plane-protocols/rt:control-plane-protocol"+
"/isis:isis/isis:database/isis:levels/isis:lsp"+
"/isis:extended-is-neighbor/isis:neighbor"+
"/isis:instances/isis:instance" {
when "/rt:routing/rt:control-plane-protocols/"+
"rt:control-plane-protocol/rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol LSDB TLV22.";
/* application-specific SRLG TLV 238 */ uses application-specific-link-attributes-sub-tlv;
augment "/rt:routing/" + }
"rt:control-plane-protocols/rt:control-plane-protocol"+
"/isis:isis/isis:database/isis:levels/isis:lsp" {
when "/rt:routing/rt:control-plane-protocols/"+
"rt:control-plane-protocol/rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol LSDB router capability.";
uses application-specific-srlg-tlv; /* TLV 223 */
} augment "/rt:routing/" +
} "rt:control-plane-protocols/rt:control-plane-protocol"+
<CODE ENDS> "/isis:isis/isis:database/isis:levels/isis:lsp"+
"/isis:mt-is-neighbor/isis:neighbor"+
"/isis:instances/isis:instance" {
when "/rt:routing/rt:control-plane-protocols/"+
"rt:control-plane-protocol/rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol LSDB TLV22.";
uses application-specific-link-attributes-sub-tlv;
}
/* application-specific SRLG TLV 238 */
augment "/rt:routing/" +
"rt:control-plane-protocols/rt:control-plane-protocol"+
"/isis:isis/isis:database/isis:levels/isis:lsp" {
when "/rt:routing/rt:control-plane-protocols/"+
"rt:control-plane-protocol/rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol LSDB router capability.";
uses application-specific-srlg-tlv;
}
}
<CODE ENDS>
4. YANG Module for IS-IS Flexible Algorithm 4. YANG Module for IS-IS Flexible Algorithm
This document defines a YANG module for IS-IS Flexible Algorithm This document defines a YANG module for IS-IS Flexible Algorithm
[I-D.ietf-lsr-flex-algo]. It is an augmentation of the IS-IS base [I-D.ietf-lsr-flex-algo]. It is an augmentation of the IS-IS base
model. model.
module: ietf-isis-flex-algo module: ietf-isis-flex-algo
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:
skipping to change at page 16, line 5 skipping to change at page 16, line 7
+--ro metric? uint32 +--ro metric? uint32
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/isis:isis/isis:database /rt:control-plane-protocol/isis:isis/isis:database
/isis:levels/isis:lsp/isis:mt-ipv6-reachability /isis:levels/isis:lsp/isis:mt-ipv6-reachability
/isis:prefixes: /isis:prefixes:
+--ro fapm-sub-tlvs +--ro fapm-sub-tlvs
+--ro fapm-sub-tlv* [] +--ro fapm-sub-tlv* []
+--ro flex-algo? uint8 +--ro flex-algo? uint8
+--ro metric? uint32 +--ro metric? uint32
<CODE BEGINS> file "ietf-isis-flex-algo@2021-06-18.yang" <CODE BEGINS> file "ietf-isis-flex-algo@2021-12-22.yang"
module ietf-isis-flex-algo { module ietf-isis-flex-algo {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-isis-flex-algo"; namespace "urn:ietf:params:xml:ns:yang:ietf-isis-flex-algo";
prefix isis-flex-algo; prefix isis-flex-algo;
import ietf-routing {
prefix rt;
reference "RFC 8349: A YANG Data Model for Routing
Management (NMDA Version)";
}
import ietf-te-types { import ietf-routing {
prefix te-types; prefix rt;
reference reference "RFC 8349: A YANG Data Model for Routing
"RFC8776: Common YANG Data Types for Traffic Engineering."; Management (NMDA Version)";
} }
import ietf-isis { import ietf-te-types {
prefix "isis"; prefix te-types;
} reference
"RFC8776: Common YANG Data Types for Traffic Engineering.";
}
import ietf-te { import ietf-isis {
prefix "te"; prefix "isis";
} }
organization import ietf-te {
"IETF LSR - Link State Routing Working Group"; prefix "te";
contact }
"WG Web: <https://tools.ietf.org/wg/spring/>
WG List: <mailto:spring@ietf.org>
Author: Yingzhen Qu organization
<mailto:yingzhen.qu@futurewei.com> "IETF LSR - Link State Routing Working Group";
Author: Acee Lindem contact
<mailto:acee@cisco.com> "WG Web: <https://tools.ietf.org/wg/spring/>
Author: Stephane Litkowski WG List: <mailto:spring@ietf.org>
<mailto:slitkows.ietf@gmail.com>
";
description Author: Yingzhen Qu
"The YANG module defines the configuration and operational <mailto:yingzhen.qu@futurewei.com>
state for ISIS Flexible Algorithm as defined in RFC xxxx. Author: Acee Lindem
<mailto:acee@cisco.com>
Author: Stephane Litkowski
<mailto:slitkows.ietf@gmail.com>
";
This YANG model conforms to the Network Management description
Datastore Architecture (NMDA) as described in RFC 8342. "The YANG module defines the configuration and operational
state for ISIS Flexible Algorithm as defined in RFC xxxx.
Copyright (c) 2021 IETF Trust and the persons identified as This YANG model conforms to the Network Management
authors of the code. All rights reserved. Datastore Architecture (NMDA) as described in RFC 8342.
Redistribution and use in source and binary forms, with or Copyright (c) 2021 IETF Trust and the persons identified as
without modification, is permitted pursuant to, and subject authors of the code. All rights reserved.
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; Redistribution and use in source and binary forms, with or
see the RFC itself for full legal notices. without modification, is permitted pursuant to, and subject to
the license terms contained in, the Revised BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL This version of this YANG module is part of RFC XXXX;
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', see the RFC itself for full legal notices.
'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.";
reference "RFC XXXX: YANG Data Model for ISIS Flexible Algorithm."; The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here.";
revision 2021-06-18 { reference "RFC XXXX: YANG Data Model for ISIS Flexible Algorithm.";
description
"Initial Version";
reference "RFC XXXX: YANG Data Model for ISIS Flexible Algorithm.";
}
/* Identities */ revision 2021-12-22 {
description
"Initial Version";
reference "RFC XXXX: YANG Data Model for ISIS Flexible Algorithm.";
}
identity metric-type { /* Identities */
description
"Base identity for route metric types.";
}
identity igp-metric { identity metric-type {
base metric-type; description
description "Base identity for route metric types.";
"Identity for the IGP metric type."; }
}
identity min-uni-delay { identity igp-metric {
base metric-type; base metric-type;
description description
"Min unidirectional link delay metric type."; "Identity for the IGP metric type.";
reference }
"RFC 8570 - IS-IS Traffic Engineering (TE) Metric Extensions";
}
identity te-metric {
base metric-type;
description
"Traffic engineering metric type.";
reference
"RFC 5305 - IS-IS Extensions for Traffic Engineering (TE)";
}
identity fad-flags { identity min-uni-delay {
description base metric-type;
"Base identity for ISIS FAD flags."; description
} "Min unidirectional link delay metric type.";
identity m-bit { reference
base fad-flags; "RFC 8570 - IS-IS Traffic Engineering (TE) Metric Extensions";
description }
"M bit, when set, the fex-algo specific prefix and ASBR
metric MUST be used for inter-area and external prefix
calculation.";
}
/* Groupings */ identity te-metric {
grouping fa-ex-ag-sub-tlv { base metric-type;
container fa-ex-ag-sub-tlv { description
leaf-list extended-admin-groups { "Traffic engineering metric type.";
type uint64; reference
description "RFC 5305 - IS-IS Extensions for Traffic Engineering (TE)";
"Extended administrative group as defined in RFC 7308."; }
}
description
"The flex-algo exclude admin group sub-tlv.";
}
description
"The flex-algo exclude admin group sub-tlv.";
}
grouping fa-in-any-ag-sub-tlv { identity fad-flags {
container fa-in-any-ag-sub-tlv { description
leaf-list extended-admin-groups { "Base identity for ISIS FAD flags.";
type uint64; }
description
"Extended administrative group as defined in RFC 7308.";
}
description
"The flex-algo include-any admin group sub-tlv.";
}
description
"The flex-algo include-any admin group sub-tlv.";
} identity m-bit {
base fad-flags;
description
"M bit, when set, the fex-algo specific prefix and ASBR
metric MUST be used for inter-area and external prefix
calculation.";
}
grouping fa-in-all-ag-sub-tlv { /* Groupings */
container fa-in-all-ag-sub-tlv { grouping fa-ex-ag-sub-tlv {
leaf-list extended-admin-groups { container fa-ex-ag-sub-tlv {
type uint64; leaf-list extended-admin-groups {
description type uint64;
"Extended administrative group as defined in RFC 7308."; description
} "Extended administrative group as defined in RFC 7308.";
description }
"The flex-algo include-all admin group sub-tlv."; description
} "The flex-algo exclude admin group sub-tlv.";
description }
"The flex-algo include-all admin group sub-tlv."; description
} "The flex-algo exclude admin group sub-tlv.";
}
grouping fad-flags-sub-tlv { grouping fa-in-any-ag-sub-tlv {
container fad-flags-sub-tlv { container fa-in-any-ag-sub-tlv {
leaf-list fad-flags { leaf-list extended-admin-groups {
type identityref { type uint64;
base fad-flags; description
} "Extended administrative group as defined in RFC 7308.";
description }
"Flex-algo definition flags list."; description
} "The flex-algo include-any admin group sub-tlv.";
description }
"ISIS flex-algo definition flags."; description
} "The flex-algo include-any admin group sub-tlv.";
description }
"The flex-algo definition flags sub-tlv.";
}
grouping fa-ex-srlg-sub-tlv { grouping fa-in-all-ag-sub-tlv {
container fa-ex-srlg-sub-tlv { container fa-in-all-ag-sub-tlv {
leaf-list srlgs { leaf-list extended-admin-groups {
type uint32; type uint64;
description description
"SRLG value as defined in RFC 4203."; "Extended administrative group as defined in RFC 7308.";
} }
description description
"The flex-algo exclude SRLG sub-tlv."; "The flex-algo include-all admin group sub-tlv.";
} }
description description
"The flex-algo exclude SRLG sub-tlv."; "The flex-algo include-all admin group sub-tlv.";
} }
grouping fad-tlvs { grouping fad-flags-sub-tlv {
container fad-tlvs { container fad-flags-sub-tlv {
list fad-tlv { leaf-list fad-flags {
leaf flex-algo { type identityref {
type uint8; base fad-flags;
description }
"Flex-algo number, value between 128 and 255 inclusive."; description
} "Flex-algo definition flags list.";
leaf metric-type { }
type identityref { description
base metric-type; "ISIS flex-algo definition flags.";
} }
description description
"Type of metric to be used during the calculation."; "The flex-algo definition flags sub-tlv.";
} }
leaf calc-type {
type uint8 {
range "0..127";
}
description
"IGP algorithm types, value from 0 to 127 as
defined under 'Interior Gateway Protocol (IGP)
Parameter' by IANA.";
}
leaf priority {
type uint8;
description
"Priority of the advertisement.";
}
uses fa-ex-ag-sub-tlv; grouping fa-ex-srlg-sub-tlv {
uses fa-in-any-ag-sub-tlv; container fa-ex-srlg-sub-tlv {
uses fa-in-all-ag-sub-tlv; leaf-list srlgs {
uses fad-flags-sub-tlv; type uint32;
uses fa-ex-srlg-sub-tlv; description
uses isis:unknown-tlvs; "SRLG value as defined in RFC 4203.";
}
description
"The flex-algo exclude SRLG sub-tlv.";
}
description
"The flex-algo exclude SRLG sub-tlv.";
description }
"List of flex-algo definition TLVs.";
}
description
"ISIS Flexible Algorithm Definition TLV.";
}
description
"ISIS Flexible Algorithm Definition (FAD) TLV.";
}
grouping fapm-sub-tlvs { grouping fad-tlvs {
container fapm-sub-tlvs { container fad-tlvs {
list fapm-sub-tlv { list fad-tlv {
leaf flex-algo { leaf flex-algo {
type uint8; type uint8;
description description
"Flex-algo number, value between 128 and 255 "Flex-algo number, value between 128 and 255 inclusive.";
inclusive."; }
} leaf metric-type {
leaf metric { type identityref {
type uint32; base metric-type;
description }
"Prefix metric."; description
} "Type of metric to be used during the calculation.";
description }
"List of flex-algo prefix sub-tlvs."; leaf calc-type {
} type uint8 {
description range "0..127";
"Flex-algo prefix metric sub-tlvs."; }
} description
description "IGP algorithm types, value from 0 to 127 as
"Flexible Algorithm Prefix Metric (FAPM) sub TLVs."; defined under 'Interior Gateway Protocol (IGP)
} Parameter' by IANA.";
}
leaf priority {
type uint8;
description
"Priority of the advertisement.";
}
/* Configurations */ uses fa-ex-ag-sub-tlv;
uses fa-in-any-ag-sub-tlv;
uses fa-in-all-ag-sub-tlv;
uses fad-flags-sub-tlv;
uses fa-ex-srlg-sub-tlv;
uses isis:unknown-tlvs;
augment "/rt:routing/" + description
"rt:control-plane-protocols/rt:control-plane-protocol"+ "List of flex-algo definition TLVs.";
"/isis:isis" { }
when "/rt:routing/rt:control-plane-protocols/"+ description
"rt:control-plane-protocol/rt:type = 'isis:isis'" { "ISIS Flexible Algorithm Definition TLV.";
description }
"This augment ISIS routing protocol when used"; description
} "ISIS Flexible Algorithm Definition (FAD) TLV.";
description }
"This augments ISIS protocol configuration grouping fapm-sub-tlvs {
with flexible algorithm."; container fapm-sub-tlvs {
list fapm-sub-tlv {
leaf flex-algo {
type uint8;
description
"Flex-algo number, value between 128 and 255
inclusive.";
}
leaf metric {
type uint32;
description
"Prefix metric.";
}
description
"List of flex-algo prefix sub-tlvs.";
}
description
"Flex-algo prefix metric sub-tlvs.";
}
description
"Flexible Algorithm Prefix Metric (FAPM) sub TLVs.";
}
container isis-flex-algo { /* Configurations */
list flex-algo {
key "algo-number";
leaf algo-number { augment "/rt:routing/" +
type uint8 { "rt:control-plane-protocols/rt:control-plane-protocol"+
range "128..255"; "/isis:isis" {
} when "/rt:routing/rt:control-plane-protocols/"+
description "rt:control-plane-protocol/rt:type = 'isis:isis'" {
"An identifier in the range 128-255 that's associated description
with the Flexible Algorithm Definition."; "This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol configuration
with flexible algorithm.";
} container isis-flex-algo {
list flex-algo {
key "algo-number";
leaf advertise-definition { leaf algo-number {
type boolean; type uint8 {
default true; range "128..255";
description }
"Enable to advertise the flex-algo definition."; description
} "An identifier in the range 128-255 that's associated
with the Flexible Algorithm Definition.";
}
container admin-groups { leaf advertise-definition {
if-feature "te-types:extended-admin-groups"; type boolean;
if-feature "te-types:named-extended-admin-groups"; default true;
leaf-list exclude-admin-groups { description
type leafref { "Enable to advertise the flex-algo definition.";
path "/te:te/te:globals/te:named-admin-groups/" }
+ "te:named-admin-group/te:name";
}
description
"Exclude rule used during the flex-algo
path computation.";
}
leaf-list include-any-admin-groups {
type leafref {
path "/te:te/te:globals/te:named-admin-groups/"
+ "te:named-admin-group/te:name";
}
description
"Include-any rule used during the flex-algo
path computation.";
}
leaf-list include-all-admin-groups {
type leafref {
path "/te:te/te:globals/te:named-admin-groups/"
+ "te:named-admin-group/te:name";
}
description
"Include-all rule used during the flex-algo
path computation.";
}
description
"Specify links for the flex-algo path computation.";
}
leaf-list exclude-srlgs { container admin-groups {
if-feature "te-types:named-srlg-groups"; if-feature "te-types:extended-admin-groups";
type leafref { if-feature "te-types:named-extended-admin-groups";
path "/te:te/te:globals/te:named-srlgs/te:named-srlg/" leaf-list exclude-admin-groups {
+ "te:name"; type leafref {
path "/te:te/te:globals/te:named-admin-groups/"
+ "te:named-admin-group/te:name";
}
description
"Exclude rule used during the flex-algo
path computation.";
}
leaf-list include-any-admin-groups {
type leafref {
path "/te:te/te:globals/te:named-admin-groups/"
+ "te:named-admin-group/te:name";
}
description
"Include-any rule used during the flex-algo
path computation.";
}
leaf-list include-all-admin-groups {
type leafref {
path "/te:te/te:globals/te:named-admin-groups/"
+ "te:named-admin-group/te:name";
}
description
"Include-all rule used during the flex-algo
path computation.";
}
description
"Specify links for the flex-algo path computation.";
}
} leaf-list exclude-srlgs {
description if-feature "te-types:named-srlg-groups";
"Shared Risk Link Groups (SRLGs) to be excluded during type leafref {
the flex-algo path computation."; path "/te:te/te:globals/te:named-srlgs/te:named-srlg/"
} + "te:name";
}
description
"Shared Risk Link Groups (SRLGs) to be excluded during
the flex-algo path computation.";
}
leaf fast-reroute { leaf fast-reroute {
type boolean; type boolean;
default true; default true;
description description
"Enable fast reroute."; "Enable fast reroute.";
} }
leaf metric-type { leaf metric-type {
type identityref { type identityref {
base metric-type; base metric-type;
} }
description description
"Type of metric to be used during the calculation."; "Type of metric to be used during the calculation.";
} }
leaf microloop-avoidance { leaf microloop-avoidance {
type boolean; type boolean;
default true; default true;
description description
"Enable microloop avoidance."; "Enable microloop avoidance.";
} }
container prefix-metric { container prefix-metric {
presence presence
"Use flex-algo specific prefix metric."; "Use flex-algo specific prefix metric.";
description description
"Use flex-algo prefix metric."; "Use flex-algo prefix metric.";
} }
leaf priority { leaf priority {
type uint8; type uint8;
description description
"Priority of the advertisement."; "Priority of the advertisement.";
} }
description description
"List of flex-algo configurations."; "List of flex-algo configurations.";
} }
description description
"Flexible Algorithm configuration."; "Flexible Algorithm configuration.";
} }
} }
/* Database */
augment "/rt:routing/" + /* Database */
"rt:control-plane-protocols/rt:control-plane-protocol"+
"/isis:isis/isis:database/isis:levels/isis:lsp"+
"/isis:router-capabilities" {
when "/rt:routing/rt:control-plane-protocols/"+
"rt:control-plane-protocol/rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol LSDB router capability.";
uses fad-tlvs; augment "/rt:routing/" +
} "rt:control-plane-protocols/rt:control-plane-protocol"+
"/isis:isis/isis:database/isis:levels/isis:lsp"+
"/isis:router-capabilities" {
when "/rt:routing/rt:control-plane-protocols/"+
"rt:control-plane-protocol/rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol LSDB router capability.";
augment "/rt:routing/" + uses fad-tlvs;
"rt:control-plane-protocols/rt:control-plane-protocol"+ }
"/isis:isis/isis:database/isis:levels/isis:lsp"+
"/isis:extended-ipv4-reachability/isis:prefixes" {
when "/rt:routing/rt:control-plane-protocols/"+
"rt:control-plane-protocol/rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol LSDB prefix.";
uses fapm-sub-tlvs;
}
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:extended-ipv4-reachability/isis:prefixes" {
when "/rt:routing/rt:control-plane-protocols/"+ when "/rt:routing/rt:control-plane-protocols/"+
"rt:control-plane-protocol/rt:type = 'isis:isis'" { "rt:control-plane-protocol/rt:type = 'isis:isis'" {
description description
"This augment ISIS routing protocol when used"; "This augment ISIS routing protocol when used";
} }
description description
"This augments ISIS protocol LSDB prefix."; "This augments ISIS protocol LSDB prefix.";
uses fapm-sub-tlvs; uses fapm-sub-tlvs;
} }
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:mt-extended-ipv4-reachability/isis:prefixes" {
when "/rt:routing/rt:control-plane-protocols/"+ when "/rt:routing/rt:control-plane-protocols/"+
"rt:control-plane-protocol/rt:type = 'isis:isis'" { "rt:control-plane-protocol/rt:type = 'isis:isis'" {
description description
"This augment ISIS routing protocol when used"; "This augment ISIS routing protocol when used";
} }
description description
"This augments ISIS protocol LSDB prefix."; "This augments ISIS protocol LSDB prefix.";
uses fapm-sub-tlvs; uses fapm-sub-tlvs;
} }
augment "/rt:routing/" +
"rt:control-plane-protocols/rt:control-plane-protocol"+
"/isis:isis/isis:database/isis:levels/isis:lsp"+
"/isis:ipv6-reachability/isis:prefixes" {
when "/rt:routing/rt:control-plane-protocols/"+
"rt:control-plane-protocol/rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol LSDB prefix.";
uses fapm-sub-tlvs;
}
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 "/rt:routing/rt:control-plane-protocols/"+ when "/rt:routing/rt:control-plane-protocols/"+
"rt:control-plane-protocol/rt:type = 'isis:isis'" { "rt:control-plane-protocol/rt:type = 'isis:isis'" {
description description
"This augment ISIS routing protocol when used"; "This augment ISIS routing protocol when used";
} }
description description
"This augments ISIS protocol LSDB prefix."; "This augments ISIS protocol LSDB prefix.";
uses fapm-sub-tlvs; uses fapm-sub-tlvs;
} }
} }
<CODE ENDS> <CODE ENDS>
5. Security Considerations 5. Security Considerations
The YANG modules specified in this document define a schema for data The YANG modules specified in this document define a schema for data
that is designed to be accessed via network management protocols such that is designed to be accessed via network management protocols such
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
is the secure transport layer, and the mandatory-to-implement secure is the secure transport layer, and the mandatory-to-implement secure
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
is HTTPS, and the mandatory-to-implement secure transport is TLS is HTTPS, and the mandatory-to-implement secure transport is TLS
[RFC5246]. [RFC5246].
skipping to change at page 27, line 33 skipping to change at page 27, line 36
The YANG model was developed using the suite of YANG tools written The YANG model was developed using the suite of YANG tools written
and maintained by numerous authors. and maintained by numerous authors.
8. References 8. References
8.1. Normative References 8.1. Normative References
[I-D.ietf-isis-yang-isis-cfg] [I-D.ietf-isis-yang-isis-cfg]
Litkowski, S., Yeung, D., Lindem, A., Zhang, J., and L. Litkowski, S., Yeung, D., Lindem, A., Zhang, J., and L.
Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- Lhotka, "YANG Data Model for IS-IS Protocol", Work in
isis-yang-isis-cfg-42 (work in progress), October 2019. Progress, Internet-Draft, draft-ietf-isis-yang-isis-cfg-
42, 15 October 2019, <https://www.ietf.org/archive/id/
draft-ietf-isis-yang-isis-cfg-42.txt>.
[I-D.ietf-lsr-flex-algo] [I-D.ietf-lsr-flex-algo]
Psenak, P., Hegde, S., Filsfils, C., Talaulikar, K., and Psenak, P., Hegde, S., Filsfils, C., Talaulikar, K., and
A. Gulko, "IGP Flexible Algorithm", draft-ietf-lsr-flex- A. Gulko, "IGP Flexible Algorithm", Work in Progress,
algo-15 (work in progress), April 2021. Internet-Draft, draft-ietf-lsr-flex-algo-18, 25 October
2021, <https://www.ietf.org/archive/id/draft-ietf-lsr-
flex-algo-18.txt>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <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>.
skipping to change at page 29, line 28 skipping to change at page 29, line 36
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>. <https://www.rfc-editor.org/info/rfc8340>.
Authors' Addresses Authors' Addresses
Acee Lindem Acee Lindem
Cisco Systems Cisco Systems
301 Midenhall Way 301 Midenhall Way
Cary, NC 27513 Cary, NC 27513
EMail: acee@cisco.com Email: acee@cisco.com
Stephane Litkowski Stephane Litkowski
Cisco Systems Cisco Systems
EMail: slitkows.ietf@gmail.com Email: slitkows.ietf@gmail.com
Yingzhen Qu Yingzhen Qu
Futurewei Futurewei
2330 Central Expressway 2330 Central Expressway
Santa Clara, CA 95050 Santa Clara, CA 95050
USA United States of America
EMail: yingzhen.qu@futurewei.com Email: yingzhen.qu@futurewei.com
 End of changes. 113 change blocks. 
805 lines changed or deleted 813 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/