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/ |