rfc9130.original | rfc9130.txt | |||
---|---|---|---|---|
IS-IS Working Group S. Litkowski | Internet Engineering Task Force (IETF) S. Litkowski, Ed. | |||
Internet-Draft Cisco Systems | Request for Comments: 9130 Cisco Systems | |||
Intended status: Standards Track D. Yeung | Category: Standards Track D. Yeung | |||
Expires: April 17, 2020 Arrcus, Inc | ISSN: 2070-1721 Arrcus, Inc. | |||
A. Lindem | A. Lindem | |||
Cisco Systems | Cisco Systems | |||
J. Zhang | J. Zhang | |||
Juniper Networks | Juniper Networks | |||
L. Lhotka | L. Lhotka | |||
CZ.NIC | CZ.NIC | |||
October 15, 2019 | October 2022 | |||
YANG Data Model for IS-IS Protocol | YANG Data Model for the IS-IS Protocol | |||
draft-ietf-isis-yang-isis-cfg-42 | ||||
Abstract | Abstract | |||
This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
and manage the IS-IS protocol on network elements. | and manage the IS-IS protocol on network elements. | |||
Requirements Language | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as described in BCP | ||||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
capitals, as shown here. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on April 17, 2020. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9130. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2022 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/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Revised BSD License text as described in Section 4.e of the | |||
the Trust Legal Provisions and are provided without warranty as | Trust Legal Provisions and are provided without warranty as described | |||
described in the Simplified BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language | |||
2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9 | 2. Design of the Data Model | |||
2.2. Multi-topology Parameters . . . . . . . . . . . . . . . . 10 | 2.1. IS-IS Configuration | |||
2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 | 2.2. Multi-Topology Parameters | |||
2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12 | 2.3. Per-Level Parameters | |||
2.5. Authentication Parameters . . . . . . . . . . . . . . . . 19 | 2.4. Per-Interface Parameters | |||
2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 19 | 2.5. Authentication Parameters | |||
2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 20 | 2.6. IGP/LDP Synchronization | |||
2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 2.7. ISO Parameters | |||
2.9. Operational States . . . . . . . . . . . . . . . . . . . 20 | 2.8. IP FRR | |||
3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 21 | 2.9. Operational States | |||
4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 21 | 3. RPC Operations | |||
5. Interaction with Other YANG Modules . . . . . . . . . . . . . 22 | 4. Notifications | |||
6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | 5. Interactions with Other YANG Modules | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 108 | 6. IS-IS YANG Module | |||
8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 110 | 7. Security Considerations | |||
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 110 | 8. IANA Considerations | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 110 | 9. References | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 110 | 9.1. Normative References | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 110 | 9.2. Informative References | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 115 | Appendix A. Example of IS-IS Configuration in XML | |||
Appendix A. Example of IS-IS configuration in XML . . . . . . . 115 | Acknowledgments | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 117 | Contributors | |||
Authors' Addresses | ||||
1. Introduction | 1. Introduction | |||
This document defines a YANG [RFC7950] data model for IS-IS routing | This document defines a YANG data model [RFC7950] for the IS-IS | |||
protocol. | routing protocol. | |||
The data model covers configuration of an IS-IS routing protocol | The data model covers the configuration of an IS-IS routing protocol | |||
instance, as well as, the retrieval of IS-IS operational states. | instance, as well as the retrieval of IS-IS operational states. | |||
A simplified tree representation of the data model is presented in | A simplified tree representation of the data model is presented in | |||
Section 2. Tree diagrams used in this document follow the notation | Section 2. Tree diagrams used in this document follow the notation | |||
defined in [RFC8340]. | defined in [RFC8340]. | |||
The module is designed as per the NMDA (Network Management Datastore | The module defined in this document is designed as per the Network | |||
Architecture) [RFC8342]. | Management Datastore Architecture (NMDA) [RFC8342]. | |||
1.1. Requirements Language | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as described in | ||||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
capitals, as shown here. | ||||
2. Design of the Data Model | 2. Design of the Data Model | |||
The IS-IS YANG module augments the "control-plane-protocol" list in | The IS-IS YANG module augments the "control-plane-protocol" list in | |||
the ietf-routing module [RFC8349] with specific IS-IS parameters. | the "ietf-routing" module [RFC8349] with specific IS-IS parameters. | |||
The figure below describes the overall structure of the ietf-isis | ||||
YANG module: | ||||
module: ietf-isis | The diagram below shows the overall structure of the "ietf-isis" YANG | |||
augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: | module defined in this document. NOTE: '\' line wrapping is per | |||
+--ro metric? uint32 | [RFC8792]. | |||
+--ro tag* uint64 | ||||
+--ro route-type? enumeration | ||||
augment /if:interfaces/if:interface: | ||||
+--rw clns-mtu? uint16 {osi-interface}? | ||||
augment /rt:routing/rt:control-plane-protocols/rt: | ||||
control-plane-protocol: | ||||
+--rw isis | ||||
+--rw enable? boolean {admin-control}? | ||||
+--rw level-type? level | ||||
+--rw system-id? system-id | ||||
+--rw maximum-area-addresses? uint8 {maximum-area-addresses}? | ||||
+--rw area-address* area-address | ||||
+--rw lsp-mtu? uint16 | ||||
+--rw lsp-lifetime? uint16 | ||||
+--rw lsp-refresh? rt-types:timer-value-seconds16 | ||||
| {lsp-refresh}? | ||||
+--rw poi-tlv? boolean {poi-tlv}? | ||||
+--rw graceful-restart {graceful-restart}? | ||||
| +--rw enable? boolean | ||||
| +--rw restart-interval? rt-types:timer-value-seconds16 | ||||
| +--rw helper-enable? boolean | ||||
+--rw nsr {nsr}? | ||||
| +--rw enable? boolean | ||||
+--rw node-tags {node-tag}? | ||||
| +--rw node-tag* [tag] | ||||
| ... | ||||
+--rw metric-type | module: ietf-isis | |||
| +--rw value? enumeration | augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: | |||
| +--rw level-1 | +--ro metric? uint32 | |||
| | ... | +--ro tag* uint64 | |||
| +--rw level-2 | +--ro route-type? enumeration | |||
| ... | augment /if:interfaces/if:interface: | |||
+--rw default-metric | +--rw clns-mtu? uint16 {osi-interface}? | |||
| +--rw value? wide-metric | augment /rt:routing/rt:control-plane-protocols/rt: | |||
| +--rw level-1 | control-plane-protocol: | |||
| | ... | +--rw isis | |||
| +--rw level-2 | +--rw enabled? boolean {admin-control}? | |||
| ... | +--rw level-type? level | |||
+--rw auto-cost {auto-cost}? | +--rw system-id? system-id | |||
| +--rw enable? boolean | +--rw maximum-area-addresses? \ | |||
| +--rw reference-bandwidth? uint32 | uint8 {maximum-area-addresses}? | |||
+--rw authentication | +--rw area-address* area-address | |||
| +--rw (authentication-type)? | +--rw lsp-mtu? uint16 | |||
| | ... | +--rw lsp-lifetime? uint16 | |||
| +--rw level-1 | +--rw lsp-refresh? rt-types:timer-value-seconds16 | |||
| | ... | | {lsp-refresh}? | |||
| +--rw level-2 | +--rw poi-tlv? boolean {poi-tlv}? | |||
| ... | +--rw graceful-restart {graceful-restart}? | |||
+--rw address-families {nlpid-control}? | | +--rw enabled? boolean | |||
| +--rw address-family-list* [address-family] | | +--rw restart-interval? rt-types:timer-value-seconds16 | |||
| ... | | +--rw helper-enabled? boolean | |||
+--rw mpls | +--rw nsr {nsr}? | |||
| +--rw te-rid {te-rid}? | | +--rw enabled? boolean | |||
| | ... | +--rw node-tags {node-tag}? | |||
| +--rw ldp | | +--rw node-tag* [tag] | |||
| ... | | ... | |||
+--rw spf-control | +--rw metric-type | |||
| +--rw paths? uint16 {max-ecmp}? | | +--rw value? enumeration | |||
| +--rw ietf-spf-delay {ietf-spf-delay}? | | +--rw level-1 | |||
| ... | | | ... | |||
+--rw fast-reroute {fast-reroute}? | | +--rw level-2 | |||
| +--rw lfa {lfa}? | | ... | |||
+--rw preference | +--rw default-metric | |||
| +--rw (granularity)? | | +--rw value? wide-metric | |||
| ... | | +--rw level-1 | |||
+--rw overload | | | ... | |||
| +--rw status? boolean | | +--rw level-2 | |||
+--rw overload-max-metric {overload-max-metric}? | | ... | |||
| +--rw timeout? rt-types:timer-value-seconds16 | +--rw auto-cost {auto-cost}? | |||
+--ro spf-log | | +--rw enabled? boolean | |||
| +--ro event* [id] | | +--rw reference-bandwidth? uint32 | |||
| ... | +--rw authentication | |||
+--ro lsp-log | | +--rw (authentication-type)? | |||
| +--ro event* [id] | | | ... | |||
| ... | | +--rw level-1 | |||
+--ro hostnames | | | ... | |||
| +--ro hostname* [system-id] | | +--rw level-2 | |||
| ... | | ... | |||
+--ro database | +--rw address-families {nlpid-control}? | |||
| +--ro levels* [level] | | +--rw address-family-list* [address-family] | |||
| ... | | ... | |||
+--ro local-rib | +--rw mpls | |||
| +--ro route* [prefix] | | +--rw te-rid {te-rid}? | |||
| ... | | | ... | |||
+--ro system-counters | | +--rw ldp | |||
| +--ro level* [level] | | ... | |||
| ... | +--rw spf-control | |||
+--ro protected-routes | | +--rw paths? uint16 {max-ecmp}? | |||
| +--ro address-family-stats* [address-family prefix alternate] | | +--rw ietf-spf-delay {ietf-spf-delay}? | |||
| ... | | ... | |||
+--ro unprotected-routes | +--rw fast-reroute {fast-reroute}? | |||
| +--ro prefixes* [address-family prefix] | | +--rw lfa {lfa}? | |||
| ... | +--rw preference | |||
+--ro protection-statistics* [frr-protection-method] | | +--rw (granularity)? | |||
| +--ro frr-protection-method identityref | | ... | |||
| +--ro address-family-stats* [address-family] | +--rw overload | |||
| ... | | +--rw status? boolean | |||
+--rw discontinuity-time? yang:date-and-time | +--rw overload-max-metric {overload-max-metric}? | |||
+--rw topologies {multi-topology}? | | +--rw timeout? rt-types:timer-value-seconds16 | |||
| +--rw topology* [name] | +--ro spf-log | |||
| ... | | +--ro event* [id] | |||
+--rw interfaces | | ... | |||
+--rw interface* [name] | +--ro lsp-log | |||
... | | +--ro event* [id] | |||
| ... | ||||
+--ro hostnames | ||||
| +--ro hostname* [system-id] | ||||
| ... | ||||
+--ro database | ||||
| +--ro levels* [level] | ||||
| ... | ||||
+--ro local-rib | ||||
| +--ro route* [prefix] | ||||
| ... | ||||
+--ro system-counters | ||||
| +--ro level* [level] | ||||
| ... | ||||
+--ro protected-routes | ||||
| +--ro address-family-stats* \ | ||||
| [address-family prefix alternate] | ||||
| ... | ||||
+--ro unprotected-routes | ||||
| +--ro prefixes* [address-family prefix] | ||||
| ... | ||||
+--ro protection-statistics* [frr-protection-method] | ||||
| +--ro frr-protection-method identityref | ||||
| +--ro address-family-stats* [address-family] | ||||
| ... | ||||
+--rw discontinuity-time? yang:date-and-time | ||||
+--rw topologies {multi-topology}? | ||||
| +--rw topology* [name] | ||||
| ... | ||||
+--rw interfaces | ||||
+--rw interface* [name] | ||||
... | ||||
rpcs: | rpcs: | |||
+---x clear-adjacency | +---x clear-adjacency | |||
| +---w input | | +---w input | |||
| +---w routing-protocol-instance-name -> /rt:routing/ | | +---w routing-protocol-instance-name -> /rt:routing/ | |||
| | control-plane-protocols/ | | | control-plane-\ | |||
| | control-plane-protocol/name | | | protocols/ | |||
| +---w level? level | | | control-plane-\ | |||
| +---w interface? if:interface-ref | | | protocol/name | |||
+---x clear-database | | +---w level? level | |||
+---w input | | +---w interface? if:interface-ref | |||
+---w routing-protocol-instance-name -> /rt:routing/ | +---x clear-database | |||
| control-plane-protocols/ | +---w input | |||
| control-plane-protocol/name | +---w routing-protocol-instance-name -> /rt:routing/ | |||
+---w level? level | | control-plane-\ | |||
| protocols/ | ||||
| control-plane-\ | ||||
| protocol/name | ||||
+---w level? level | ||||
notifications: | notifications: | |||
+---n database-overload | +---n database-overload | |||
| +--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 overload? enumeration | | +--ro overload? enumeration | |||
+---n lsp-too-large | +---n lsp-too-large | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro pdu-size? uint32 | | +--ro pdu-size? uint32 | |||
| +--ro lsp-id? lsp-id | | +--ro lsp-id? lsp-id | |||
+---n if-state-change | +---n if-state-change | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro state? if-state-type | | +--ro state? if-state-type | |||
+---n corrupted-lsp-detected | +---n corrupted-lsp-detected | |||
| +--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? lsp-id | | +--ro lsp-id? lsp-id | |||
+---n attempt-to-exceed-max-sequence | +---n attempt-to-exceed-max-sequence | |||
| +--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? lsp-id | | +--ro lsp-id? lsp-id | |||
+---n id-len-mismatch | +---n id-len-mismatch | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro pdu-field-len? uint8 | | +--ro pdu-field-len? uint8 | |||
| +--ro raw-pdu? binary | | +--ro raw-pdu? binary | |||
+---n max-area-addresses-mismatch | +---n max-area-addresses-mismatch | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro max-area-addresses? uint8 | | +--ro max-area-addresses? uint8 | |||
| +--ro raw-pdu? binary | | +--ro raw-pdu? binary | |||
+---n own-lsp-purge | +---n own-lsp-purge | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro lsp-id? lsp-id | | +--ro lsp-id? lsp-id | |||
+---n sequence-number-skipped | +---n sequence-number-skipped | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro lsp-id? lsp-id | | +--ro lsp-id? lsp-id | |||
+---n authentication-type-failure | +---n authentication-type-failure | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro raw-pdu? binary | | +--ro raw-pdu? binary | |||
+---n authentication-failure | +---n authentication-failure | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro raw-pdu? binary | | +--ro raw-pdu? binary | |||
+---n version-skew | +---n version-skew | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro protocol-version? uint8 | | +--ro protocol-version? uint8 | |||
| +--ro raw-pdu? binary | | +--ro raw-pdu? binary | |||
+---n area-mismatch | +---n area-mismatch | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro raw-pdu? binary | | +--ro raw-pdu? binary | |||
+---n rejected-adjacency | +---n rejected-adjacency | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro raw-pdu? binary | | +--ro raw-pdu? binary | |||
| +--ro reason? string | | +--ro reason? string | |||
+---n protocols-supported-mismatch | +---n protocols-supported-mismatch | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro raw-pdu? binary | | +--ro raw-pdu? binary | |||
| +--ro protocols* uint8 | | +--ro protocols* uint8 | |||
+---n lsp-error-detected | +---n lsp-error-detected | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro lsp-id? lsp-id | | +--ro lsp-id? lsp-id | |||
| +--ro raw-pdu? binary | | +--ro raw-pdu? binary | |||
| +--ro error-offset? uint32 | | +--ro error-offset? uint32 | |||
| +--ro tlv-type? uint8 | | +--ro tlv-type? uint8 | |||
+---n adjacency-state-change | +---n adjacency-state-change | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro neighbor? string | | +--ro neighbor? string | |||
| +--ro neighbor-system-id? system-id | | +--ro neighbor-system-id? system-id | |||
| +--ro state? adj-state-type | | +--ro state? adj-state-type | |||
| +--ro reason? string | | +--ro reason? string | |||
+---n lsp-received | +---n lsp-received | |||
| +--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 interface-name? if:interface-ref | | +--ro interface-name? if:interface-ref | |||
| +--ro interface-level? level | | +--ro interface-level? level | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro extended-circuit-id? extended-circuit-id | |||
| +--ro lsp-id? lsp-id | | +--ro lsp-id? lsp-id | |||
| +--ro sequence? uint32 | | +--ro sequence? uint32 | |||
| +--ro received-timestamp? yang:timestamp | | +--ro received-timestamp? yang:timestamp | |||
| +--ro neighbor-system-id? system-id | | +--ro neighbor-system-id? system-id | |||
+---n lsp-generation | +---n lsp-generation | |||
+--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? lsp-id | +--ro lsp-id? lsp-id | |||
+--ro sequence? uint32 | +--ro sequence? uint32 | |||
+--ro send-timestamp? yang:timestamp | +--ro send-timestamp? yang:timestamp | |||
2.1. IS-IS Configuration | 2.1. IS-IS Configuration | |||
The IS-IS configuration is divided into: | The IS-IS configuration is divided into two areas: | |||
o Global parameters. | * Global parameters | |||
o Per-interface configuration (see Section 2.4). | * Per-interface configuration (see Section 2.4) | |||
Additional modules may be created to support additional parameters. | Additional modules may be created to support additional parameters. | |||
These additional modules MUST augment the ietf-isis module. | These additional modules MUST augment the "ietf-isis" module. | |||
The model includes optional features, for which the corresponding | The model includes optional features for which the corresponding | |||
configuration data nodes are also optional. As an example, the | configuration data nodes are also optional. As an example, the | |||
ability to control the administrative state of a particular IS-IS | ability to control the administrative state of a particular IS-IS | |||
instance is optional. By advertising the feature "admin-control", a | instance is optional. By advertising the feature "admin-control", a | |||
device communicates to the client that it supports the ability to | device communicates to the client that it supports the ability to | |||
shutdown a particular IS-IS instance. | shut down a particular IS-IS instance. | |||
The global configuration contains usual IS-IS parameters, such as, | The global configuration contains the usual IS-IS parameters, e.g., | |||
lsp-mtu, lsp-lifetime, lsp-refresh, default-metric, etc. | "lsp-mtu", "lsp-lifetime", "lsp-refresh", "default-metric". | |||
2.2. Multi-topology Parameters | 2.2. Multi-Topology Parameters | |||
The model supports multi-topology (MT) IS-IS as defined in [RFC5120]. | The model supports Multi-Topology (MT) IS-IS as defined in [RFC5120]. | |||
The "topologies" container is used to enable support of the MT | The "topologies" container is used to enable support of the MT | |||
extensions. | extensions. | |||
The "name" used in the topology list should refer to an existing | The "name" used in the topology list should refer to an existing | |||
Routing Information Base (RIB) defined for the device [RFC8349]. | Routing Information Base (RIB) defined for the device [RFC8349]. | |||
Some specific parameters can be defined on a per-topology basis, both | Some specific parameters can be defined on a per-topology basis, at | |||
at the global level and at the interface level: for example, an | both the global level and the interface level: for example, an | |||
interface metric can be defined per topology. | interface metric can be defined per topology. | |||
Multiple address families (such as, IPv4 or IPv6) can also be enabled | Multiple address families (such as IPv4 or IPv6) can also be enabled | |||
within the default topology. This can be achieved using the address- | within the default topology. This can be achieved using the | |||
families container (requiring the "nlpid-control" feature to be | "address-families" container (requiring the "nlpid-control" feature | |||
supported). | to be supported). | |||
2.3. Per-Level Parameters | 2.3. Per-Level Parameters | |||
Some parameters allow a per-level configuration. For such | Some parameters allow per-level configuration. For such parameters, | |||
parameters, the parameter is modeled as a container with three | the parameter is modeled as a container with three configuration | |||
configuration locations: | locations: | |||
o a Top-level container: Corresponds to level-1-2, so the | A top-level container: | |||
configuration applies to both levels. | Corresponds to "level-all", so the configuration applies to both | |||
levels. | ||||
o a Level-1 container: Corresponds to level-1 specific parameters. | A level-1 container: | |||
Corresponds to parameters specific to level 1. | ||||
o a Level-2 container: Corresponds to level-2 specific parameters. | A level-2 container: | |||
Corresponds to parameters specific to level 2. | ||||
+--rw priority | +--rw priority | |||
| +--rw value? uint8 | | +--rw value? uint8 | |||
| +--rw level-1 | | +--rw level-1 | |||
| | +--rw value? uint8 | | | +--rw value? uint8 | |||
| +--rw level-2 | | +--rw level-2 | |||
| +--rw value? uint8 | | +--rw value? uint8 | |||
Example: | Example: | |||
<priority> | <priority> | |||
<value>250</value> | <value>250</value> | |||
<level-1> | <level-1> | |||
<value>100</value> | <value>100</value> | |||
</level-1> | </level-1> | |||
</priority> | </priority> | |||
An implementation MUST prefer a level-specific parameter over a top- | An implementation MUST prefer a level-specific parameter over a top- | |||
level parameter. For example, if the priority is 100 for the level-1 | level parameter. For example, if the priority is 100 for the level-1 | |||
and 250 for the top-level configuration, the implementation must use | configuration and 250 for the top-level configuration, the | |||
100 for the level-1 priority and 250 for the level-2 priority. | implementation must use 100 for the level-1 priority and 250 for the | |||
level-2 priority. | ||||
Some parameters, such as, "overload bit" and "route preference", are | Some parameters, such as "overload bit" and "route preference", are | |||
not modeled to support a per-level configuration. If an | not modeled to support per-level configuration. If an implementation | |||
implementation supports per-level configuration for such parameter, | supports per-level configuration for such parameters, this | |||
this implementation MUST augment the current model by adding both | implementation MUST augment the current model by adding both level-1 | |||
level-1 and level-2 containers and MUST reuse existing configuration | and level-2 containers and MUST reuse existing configuration | |||
groupings. | groupings. | |||
Example of augmentation: | Example of augmentation: | |||
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:overload" { | "/isis:isis/isis:overload" { | |||
when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
description | description | |||
"This augment IS-IS routing protocol when used"; | "This augments the IS-IS routing protocol when used."; | |||
} | } | |||
description | description | |||
"This augments IS-IS overload configuration | "This augments the IS-IS overload configuration | |||
with per-level configuration."; | with per-level configuration."; | |||
container level-1 { | container level-1 { | |||
uses isis:overload-global-cfg; | uses isis:overload-global-cfg; | |||
description | description | |||
"Level 1 configuration."; | "Level-1 configuration."; | |||
} | } | |||
container level-2 { | container level-2 { | |||
uses isis:overload-global-cfg; | uses isis:overload-global-cfg; | |||
description | description | |||
"Level 2 configuration."; | "Level-2 configuration."; | |||
} | } | |||
} | } | |||
If an implementation does not support per-level configuration for a | If an implementation does not support per-level configuration for a | |||
parameter modeled with per-level configuration, the implementation | parameter modeled with per-level configuration, the implementation | |||
should advertise a deviation to announce the non-support of the | should advertise a deviation to announce that it does not support the | |||
level-1 and level-2 containers. | configuration of level-1 and level-2 containers. | |||
Finally, if an implementation supports per-level configuration but | Finally, if an implementation supports per-level configuration but | |||
does not support the level-1-2 configuration, it should also | does not support the "level-all" configuration, it should also | |||
advertise a deviation. | advertise a deviation. | |||
2.4. Per-Interface Parameters | 2.4. Per-Interface Parameters | |||
The per-interface section of the IS-IS instance describes the | The per-interface section of the IS-IS instance describes the | |||
interface-specific parameters. | interface-specific parameters. | |||
The interface is modeled as a reference to an existing interface | The interface is modeled as a reference to an existing interface as | |||
defined in the "ietf-interfaces" YANG model ([RFC8343]. | defined in the "ietf-interfaces" YANG module [RFC8343]. | |||
Each interface has some interface-specific parameters that may have a | Each interface has some interface-specific parameters that may have a | |||
different per-level value as described in the previous section. An | different per-level value as described in the previous section. An | |||
interface-specific parameter MUST be preferred over an IS-IS global | interface-specific parameter MUST be preferred over an IS-IS global | |||
parameter. | parameter. | |||
Some parameters, such as, hello-padding are defined as containers to | Some parameters, such as "hello-padding", are defined as containers | |||
allow easy extension by vendor-specific modules. | to allow easy extension by vendor-specific modules. | |||
+--rw interfaces | ||||
+--rw interface* [name] | ||||
+--rw name if:interface-ref | ||||
+--rw enable? boolean {admin-control}? | ||||
+--rw level-type? level | ||||
+--rw lsp-pacing-interval? rt-types: | ||||
| timer-value-milliseconds | ||||
+--rw lsp-retransmit-interval? rt-types: | ||||
| timer-value-seconds16 | ||||
+--rw passive? boolean | ||||
+--rw csnp-interval? rt-types: | ||||
| timer-value-seconds16 | ||||
+--rw hello-padding | ||||
| +--rw enable? boolean | ||||
+--rw mesh-group-enable? mesh-group-state | ||||
+--rw mesh-group? uint8 | ||||
+--rw interface-type? interface-type | ||||
+--rw tag* uint32 {prefix-tag}? | ||||
+--rw tag64* uint64 {prefix-tag64}? | ||||
+--rw node-flag? boolean {node-flag}? | ||||
+--rw hello-authentication | ||||
| +--rw (authentication-type)? | ||||
| | +--:(key-chain) {key-chain}? | ||||
| | | +--rw key-chain? key-chain:key-chain-ref | ||||
| | +--:(password) | ||||
| | +--rw key? string | ||||
| | +--rw crypto-algorithm? identityref | ||||
| +--rw level-1 | ||||
| | +--rw (authentication-type)? | ||||
| | +--:(key-chain) {key-chain}? | ||||
| | | +--rw key-chain? key-chain:key-chain-ref | ||||
| | +--:(password) | ||||
| | +--rw key? string | ||||
| | +--rw crypto-algorithm? identityref | ||||
| +--rw level-2 | ||||
| +--rw (authentication-type)? | ||||
| +--:(key-chain) {key-chain}? | ||||
| | +--rw key-chain? key-chain:key-chain-ref | ||||
| +--:(password) | ||||
| +--rw key? string | ||||
| +--rw crypto-algorithm? identityref | ||||
+--rw hello-interval | ||||
| +--rw value? rt-types:timer-value-seconds16 | ||||
| +--rw level-1 | ||||
| | +--rw value? rt-types:timer-value-seconds16 | ||||
| +--rw level-2 | ||||
| +--rw value? rt-types:timer-value-seconds16 | ||||
+--rw hello-multiplier | ||||
| +--rw value? uint16 | ||||
| +--rw level-1 | ||||
| | +--rw value? uint16 | ||||
| +--rw level-2 | ||||
| +--rw value? uint16 | ||||
+--rw priority | ||||
| +--rw value? uint8 | ||||
| +--rw level-1 | ||||
| | +--rw value? uint8 | ||||
| +--rw level-2 | ||||
| +--rw value? uint8 | ||||
+--rw metric | ||||
| +--rw value? wide-metric | ||||
| +--rw level-1 | ||||
| | +--rw value? wide-metric | ||||
| +--rw level-2 | ||||
| +--rw value? wide-metric | ||||
+--rw bfd {bfd}? | ||||
| +--rw enable? boolean | ||||
| +--rw local-multiplier? multiplier | ||||
| +--rw (interval-config-type)? | ||||
| +--:(tx-rx-intervals) | ||||
| | +--rw desired-min-tx-interval? uint32 | ||||
| | +--rw required-min-rx-interval? uint32 | ||||
| +--:(single-interval) {single-minimum-interval}? | ||||
| +--rw min-interval? uint32 | ||||
+--rw address-families {nlpid-control}? | ||||
| +--rw address-family-list* [address-family] | ||||
| +--rw address-family iana-rt-types:address-family | ||||
+--rw mpls | ||||
| +--rw ldp | ||||
| +--rw igp-sync? boolean {ldp-igp-sync}? | ||||
+--rw fast-reroute {fast-reroute}? | ||||
| +--rw lfa {lfa}? | ||||
| +--rw candidate-enable? boolean | ||||
| +--rw enable? boolean | ||||
| +--rw remote-lfa {remote-lfa}? | ||||
| | +--rw enable? boolean | ||||
| +--rw level-1 | ||||
| | +--rw candidate-enable? boolean | ||||
| | +--rw enable? boolean | ||||
| | +--rw remote-lfa {remote-lfa}? | ||||
| | +--rw enable? boolean | ||||
| +--rw level-2 | ||||
| +--rw candidate-enable? boolean | ||||
| +--rw enable? boolean | ||||
| +--rw remote-lfa {remote-lfa}? | ||||
| +--rw enable? boolean | ||||
+--ro adjacencies | ||||
| +--ro adjacency* [] | ||||
| +--ro neighbor-sys-type? level | ||||
| +--ro neighbor-sysid? system-id | ||||
| +--ro neighbor-extended-circuit-id? extended-circuit-id | ||||
| +--ro neighbor-snpa? snpa | ||||
| +--ro usage? level | ||||
| +--ro hold-timer? rt-types: | ||||
| | timer-value-seconds16 | ||||
| +--ro neighbor-priority? uint8 | ||||
| +--ro lastuptime? yang:timestamp | ||||
| +--ro state? adj-state-type | ||||
+--ro event-counters | ||||
| +--ro adjacency-changes? uint32 | ||||
| +--ro adjacency-number? uint32 | ||||
| +--ro init-fails? uint32 | ||||
| +--ro adjacency-rejects? uint32 | ||||
| +--ro id-len-mismatch? uint32 | ||||
| +--ro max-area-addresses-mismatch? uint32 | ||||
| +--ro authentication-type-fails? uint32 | ||||
| +--ro authentication-fails? uint32 | ||||
| +--ro lan-dis-changes? uint32 | ||||
+--ro packet-counters | ||||
| +--ro level* [level] | ||||
| +--ro level level-number | ||||
| +--ro iih | ||||
| | +--ro in? uint32 | ||||
| | +--ro out? uint32 | ||||
| +--ro ish | ||||
| | +--ro in? uint32 | ||||
| | +--ro out? uint32 | ||||
| +--ro esh | ||||
| | +--ro in? uint32 | ||||
| | +--ro out? uint32 | ||||
| +--ro lsp | ||||
| | +--ro in? uint32 | ||||
| | +--ro out? uint32 | ||||
| +--ro psnp | ||||
| | +--ro in? uint32 | ||||
| | +--ro out? uint32 | ||||
| +--ro csnp | ||||
| | +--ro in? uint32 | ||||
| | +--ro out? uint32 | ||||
| +--ro unknown | ||||
| +--ro in? uint32 | ||||
+--rw discontinuity-time? yang:date-and-time | ||||
+--rw topologies {multi-topology}? | ||||
+--rw topology* [name] | ||||
+--rw name -> | ||||
| ../../../../../../../../rt:ribs/rib/name | ||||
+--rw metric | ||||
+--rw value? wide-metric | ||||
+--rw level-1 | ||||
| +--rw value? wide-metric | ||||
+--rw level-2 | ||||
+--rw value? wide-metric | ||||
rpcs: | ||||
+---x clear-adjacency | ||||
| +---w input | ||||
| +---w routing-protocol-instance-name -> /rt:routing/ | ||||
| | control-plane-protocols/ | ||||
| | control-plane-protocol/name | ||||
| +---w level? level | ||||
| +---w interface? if:interface-ref | ||||
+---x clear-database | ||||
+---w input | ||||
+---w routing-protocol-instance-name -> /rt:routing/ | ||||
| control-plane-protocols/ | ||||
| control-plane-protocol/name | ||||
+---w level? level | ||||
notifications: | +--rw interfaces | |||
+---n database-overload | +--rw interface* [name] | |||
| +--ro routing-protocol-name? -> /rt:routing/ | +--rw name if:interface-ref | |||
| | control-plane-protocols/ | +--rw enabled? boolean {admin-control}? | |||
| | control-plane-protocol/name | +--rw level-type? level | |||
| +--ro isis-level? level | +--rw lsp-pacing-interval? rt-types: | |||
| +--ro overload? enumeration | | timer-value-\ | |||
+---n lsp-too-large | | milliseconds | |||
| +--ro routing-protocol-name? -> /rt:routing/ | +--rw lsp-retransmit-interval? rt-types: | |||
| | control-plane-protocols/ | | timer-value-seconds16 | |||
| | control-plane-protocol/name | +--rw passive? boolean | |||
| +--ro isis-level? level | +--rw csnp-interval? rt-types: | |||
| +--ro interface-name? if:interface-ref | | timer-value-seconds16 | |||
| +--ro interface-level? level | +--rw hello-padding | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--rw enabled? boolean | |||
| +--ro pdu-size? uint32 | +--rw mesh-group-enabled? mesh-group-state | |||
| +--ro lsp-id? lsp-id | +--rw mesh-group? uint8 | |||
+---n if-state-change | +--rw interface-type? interface-type | |||
| +--ro routing-protocol-name? -> /rt:routing/ | +--rw tag* uint32 {prefix-tag}? | |||
| | control-plane-protocols/ | +--rw tag64* uint64 {prefix-tag64}? | |||
| | control-plane-protocol/name | +--rw node-flag? boolean {node-flag}? | |||
| +--ro isis-level? level | +--rw hello-authentication | |||
| +--ro interface-name? if:interface-ref | | +--rw (authentication-type)? | |||
| +--ro interface-level? level | | | +--:(key-chain) {key-chain}? | |||
| +--ro extended-circuit-id? extended-circuit-id | | | | +--rw key-chain? key-chain:key-chain-ref | |||
| +--ro state? if-state-type | | | +--:(password) | |||
+---n corrupted-lsp-detected | | | +--rw key? string | |||
| +--ro routing-protocol-name? -> /rt:routing/ | | | +--rw crypto-algorithm? identityref | |||
| | control-plane-protocols/ | | +--rw level-1 | |||
| | control-plane-protocol/name | | | +--rw (authentication-type)? | |||
| +--ro isis-level? level | | | +--:(key-chain) {key-chain}? | |||
| +--ro lsp-id? lsp-id | | | | +--rw key-chain? key-chain:\ | |||
+---n attempt-to-exceed-max-sequence | | | | key-chain-ref | |||
| +--ro routing-protocol-name? -> /rt:routing/ | | | +--:(password) | |||
| | control-plane-protocols/ | | | +--rw key? string | |||
| | control-plane-protocol/name | | | +--rw crypto-algorithm? identityref | |||
| +--ro isis-level? level | | +--rw level-2 | |||
| +--ro lsp-id? lsp-id | | +--rw (authentication-type)? | |||
+---n id-len-mismatch | | +--:(key-chain) {key-chain}? | |||
| +--ro routing-protocol-name? -> /rt:routing/ | | | +--rw key-chain? key-chain:\ | |||
| | control-plane-protocols/ | | | key-chain-ref | |||
| | control-plane-protocol/name | | +--:(password) | |||
| +--ro isis-level? level | | +--rw key? string | |||
| +--ro interface-name? if:interface-ref | | +--rw crypto-algorithm? identityref | |||
| +--ro interface-level? level | +--rw hello-interval | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--rw value? rt-types:timer-value-seconds16 | |||
| +--ro pdu-field-len? uint8 | | +--rw level-1 | |||
| +--ro raw-pdu? binary | | | +--rw value? rt-types:timer-value-seconds16 | |||
+---n max-area-addresses-mismatch | | +--rw level-2 | |||
| +--ro routing-protocol-name? -> /rt:routing/ | | +--rw value? rt-types:timer-value-seconds16 | |||
| | control-plane-protocols/ | +--rw hello-multiplier | |||
| | control-plane-protocol/name | | +--rw value? uint16 | |||
| +--ro isis-level? level | | +--rw level-1 | |||
| +--ro interface-name? if:interface-ref | | | +--rw value? uint16 | |||
| +--ro interface-level? level | | +--rw level-2 | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--rw value? uint16 | |||
| +--ro max-area-addresses? uint8 | +--rw priority | |||
| +--ro raw-pdu? binary | | +--rw value? uint8 | |||
+---n own-lsp-purge | | +--rw level-1 | |||
| +--ro routing-protocol-name? -> /rt:routing/ | | | +--rw value? uint8 | |||
| | control-plane-protocols/ | | +--rw level-2 | |||
| | control-plane-protocol/name | | +--rw value? uint8 | |||
| +--ro isis-level? level | +--rw metric | |||
| +--ro interface-name? if:interface-ref | | +--rw value? wide-metric | |||
| +--ro interface-level? level | | +--rw level-1 | |||
| +--ro extended-circuit-id? extended-circuit-id | | | +--rw value? wide-metric | |||
| +--ro lsp-id? lsp-id | | +--rw level-2 | |||
+---n sequence-number-skipped | | +--rw value? wide-metric | |||
| +--ro routing-protocol-name? -> /rt:routing/ | +--rw bfd {bfd}? | |||
| | control-plane-protocols/ | | +--rw enabled? boolean | |||
| | control-plane-protocol/name | | +--rw local-multiplier? multiplier | |||
| +--ro isis-level? level | | | {client-base-cfg-parms}? | |||
| +--ro interface-name? if:interface-ref | | +--rw (interval-config-type)? {client-base-cfg-parms}? | |||
| +--ro interface-level? level | | +--:(tx-rx-intervals) | |||
| +--ro extended-circuit-id? extended-circuit-id | | | +--rw desired-min-tx-interval? uint32 | |||
| +--ro lsp-id? lsp-id | | | +--rw required-min-rx-interval? uint32 | |||
+---n authentication-type-failure | | +--:(single-interval) {single-minimum-interval}? | |||
| +--ro routing-protocol-name? -> /rt:routing/ | | +--rw min-interval? uint32 | |||
| | control-plane-protocols/ | +--rw address-families {nlpid-control}? | |||
| | control-plane-protocol/name | | +--rw address-family-list* [address-family] | |||
| +--ro isis-level? level | | +--rw address-family iana-rt-types:address-family | |||
| +--ro interface-name? if:interface-ref | +--rw mpls | |||
| +--ro interface-level? level | | +--rw ldp | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--rw igp-sync? boolean {ldp-igp-sync}? | |||
| +--ro raw-pdu? binary | +--rw fast-reroute {fast-reroute}? | |||
+---n authentication-failure | | +--rw lfa {lfa}? | |||
| +--ro routing-protocol-name? -> /rt:routing/ | | +--rw candidate-enabled? boolean | |||
| | control-plane-protocols/ | | +--rw enabled? boolean | |||
| | control-plane-protocol/name | | +--rw remote-lfa {remote-lfa}? | |||
| +--ro isis-level? level | | | +--rw enabled? boolean | |||
| +--ro interface-name? if:interface-ref | | +--rw level-1 | |||
| +--ro interface-level? level | | | +--rw candidate-enabled? boolean | |||
| +--ro extended-circuit-id? extended-circuit-id | | | +--rw enabled? boolean | |||
| +--ro raw-pdu? binary | | | +--rw remote-lfa {remote-lfa}? | |||
+---n version-skew | | | +--rw enabled? boolean | |||
| +--ro routing-protocol-name? -> /rt:routing/ | | +--rw level-2 | |||
| | control-plane-protocols/ | | +--rw candidate-enabled? boolean | |||
| | control-plane-protocol/name | | +--rw enabled? boolean | |||
| +--ro isis-level? level | | +--rw remote-lfa {remote-lfa}? | |||
| +--ro interface-name? if:interface-ref | | +--rw enabled? boolean | |||
| +--ro interface-level? level | +--ro adjacencies | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro adjacency* [] | |||
| +--ro protocol-version? uint8 | | +--ro neighbor-sys-type? level | |||
| +--ro raw-pdu? binary | | +--ro neighbor-sysid? system-id | |||
+---n area-mismatch | | +--ro neighbor-extended-circuit-id? extended-\ | |||
| +--ro routing-protocol-name? -> /rt:routing/ | | | circuit-id | |||
| | control-plane-protocols/ | | +--ro neighbor-snpa? snpa | |||
| | control-plane-protocol/name | | +--ro usage? level | |||
| +--ro isis-level? level | | +--ro hold-timer? rt-types: | |||
| +--ro interface-name? if:interface-ref | | | timer-value-\ | |||
| +--ro interface-level? level | | | seconds16 | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro neighbor-priority? uint8 | |||
| +--ro raw-pdu? binary | | +--ro lastuptime? yang:timestamp | |||
+---n rejected-adjacency | | +--ro state? adj-state-type | |||
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro event-counters | |||
| | control-plane-protocols/ | | +--ro adjacency-changes? uint32 | |||
| | control-plane-protocol/name | | +--ro adjacency-number? uint32 | |||
| +--ro isis-level? level | | +--ro init-fails? uint32 | |||
| +--ro interface-name? if:interface-ref | | +--ro adjacency-rejects? uint32 | |||
| +--ro interface-level? level | | +--ro id-len-mismatch? uint32 | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro max-area-addresses-mismatch? uint32 | |||
| +--ro raw-pdu? binary | | +--ro authentication-type-fails? uint32 | |||
| +--ro reason? string | | +--ro authentication-fails? uint32 | |||
+---n protocols-supported-mismatch | | +--ro lan-dis-changes? uint32 | |||
| +--ro routing-protocol-name? -> /rt:routing/ | +--ro packet-counters | |||
| | control-plane-protocols/ | | +--ro level* [level] | |||
| | control-plane-protocol/name | | +--ro level level-number | |||
| +--ro isis-level? level | | +--ro iih | |||
| +--ro interface-name? if:interface-ref | | | +--ro in? uint32 | |||
| +--ro interface-level? level | | | +--ro out? uint32 | |||
| +--ro extended-circuit-id? extended-circuit-id | | +--ro ish | |||
| +--ro raw-pdu? binary | | | +--ro in? uint32 | |||
| +--ro protocols* uint8 | | | +--ro out? uint32 | |||
+---n lsp-error-detected | | +--ro esh | |||
| +--ro routing-protocol-name? -> /rt:routing/ | | | +--ro in? uint32 | |||
| | control-plane-protocols/ | | | +--ro out? uint32 | |||
| | control-plane-protocol/name | | +--ro lsp | |||
| +--ro isis-level? level | | | +--ro in? uint32 | |||
| +--ro interface-name? if:interface-ref | | | +--ro out? uint32 | |||
| +--ro interface-level? level | | +--ro psnp | |||
| +--ro extended-circuit-id? extended-circuit-id | | | +--ro in? uint32 | |||
| +--ro lsp-id? lsp-id | | | +--ro out? uint32 | |||
| +--ro raw-pdu? binary | | +--ro csnp | |||
| +--ro error-offset? uint32 | | | +--ro in? uint32 | |||
| +--ro tlv-type? uint8 | | | +--ro out? uint32 | |||
+---n adjacency-state-change | | +--ro unknown | |||
| +--ro routing-protocol-name? -> /rt:routing/ | | +--ro in? uint32 | |||
| | control-plane-protocols/ | +--rw discontinuity-time? yang:date-and-time | |||
| | control-plane-protocol/name | +--rw topologies {multi-topology}? | |||
| +--ro isis-level? level | +--rw topology* [name] | |||
| +--ro interface-name? if:interface-ref | +--rw name -> | |||
| +--ro interface-level? level | | ../../../../../../../../rt:\ | |||
| +--ro extended-circuit-id? extended-circuit-id | | ribs/rib/name | |||
| +--ro neighbor? string | +--rw metric | |||
| +--ro neighbor-system-id? system-id | +--rw value? wide-metric | |||
| +--ro state? adj-state-type | +--rw level-1 | |||
| +--ro reason? string | | +--rw value? wide-metric | |||
+---n lsp-received | +--rw level-2 | |||
| +--ro routing-protocol-name? -> /rt:routing/ | +--rw value? wide-metric | |||
| | control-plane-protocols/ | ||||
| | control-plane-protocol/name | ||||
| +--ro isis-level? level | ||||
| +--ro interface-name? if:interface-ref | ||||
| +--ro interface-level? level | ||||
| +--ro extended-circuit-id? extended-circuit-id | ||||
| +--ro lsp-id? lsp-id | ||||
| +--ro sequence? uint32 | ||||
| +--ro received-timestamp? yang:timestamp | ||||
| +--ro neighbor-system-id? system-id | ||||
+---n lsp-generation | ||||
+--ro routing-protocol-name? -> /rt:routing/ | ||||
| control-plane-protocols/ | ||||
| control-plane-protocol/name | ||||
+--ro isis-level? level | ||||
+--ro lsp-id? lsp-id | ||||
+--ro sequence? uint32 | ||||
+--ro send-timestamp? yang:timestamp | ||||
2.5. Authentication Parameters | 2.5. Authentication Parameters | |||
The module enables authentication configuration through the IETF key- | The module defined in this document enables authentication | |||
chain module [RFC8177]. The IS-IS module imports the "ietf-key- | configuration through the "ietf-key-chain" module [RFC8177]. The IS- | |||
chain" module and reuses some groupings to allow global and per- | IS module imports the "ietf-key-chain" module and reuses some | |||
interface configuration of authentication. If global authentication | groupings to allow global and per-interface configuration of | |||
is configured, an implementation SHOULD authenticate PSNPs (Partial | authentication. If global authentication is configured, an | |||
Sequence Number Packets), CSNPs (Complete Sequence Number Packets) | implementation SHOULD authenticate PSNPs (Partial Sequence Number | |||
and LSPs (Link State Packets) with the authentication parameters | PDUs), CSNPs (Complete Sequence Number PDUs), and LSPs (Link State | |||
supplied. The authentication of HELLO PDUs (Protocol Data Units) can | PDUs) with the authentication parameters supplied. The | |||
be activated on a per-interface basis. | authentication of Hello PDUs (Protocol Data Units) can be activated | |||
on a per-interface basis. | ||||
2.6. IGP/LDP synchronization | 2.6. IGP/LDP Synchronization | |||
[RFC5443] defines a mechanism where IGP (Interior Gateway Protocol) | [RFC5443] defines a mechanism where IGP (the Interior Gateway | |||
needs to be synchronized with LDP (Label Distribution Protocol). An | Protocol) needs to be synchronized with LDP (the Label Distribution | |||
"ldp-igp-sync" feature has been defined in the model to support this | Protocol). An "ldp-igp-sync" feature has been defined in the model | |||
functionality. The "mpls/ldp/igp-sync" leaf under "interface" allows | to support this functionality. The "mpls/ldp/igp-sync" leaf under | |||
activation of the functionality on a per-interface basis. The | "interface" allows activation of the functionality on a per-interface | |||
"mpls/ldp/igp-sync" container in the global configuration is | basis. The "mpls/ldp/igp-sync" container in the global configuration | |||
intentionally empty and is not required for feature activation. The | is intentionally empty and is not required for feature activation. | |||
goal of this empty container is to facilitate augmentation with | The goal of this empty container is to facilitate augmentation with | |||
additional parameters, e.g., timers. | additional parameters, e.g., timers. | |||
2.7. ISO parameters | 2.7. ISO Parameters | |||
As the IS-IS protocol is based on the ISO protocol suite, some ISO | As the IS-IS protocol is based on the ISO protocol suite, some ISO | |||
parameters may be required. | parameters may be required. | |||
This module augments interface configuration model to support | This module augments the "ietf-interfaces" module configuration to | |||
selected ISO configuration parameters. | support selected ISO configuration parameters. | |||
The clns-mtu can be configured for an interface. | The "clns-mtu" parameter can be configured for an interface. | |||
2.8. IP FRR | 2.8. IP FRR | |||
This YANG module supports LFA (Loop Free Alternates) [RFC5286] and | The YANG module defined in this document supports LFAs (Loop-Free | |||
remote LFA [RFC7490] as IP Fast Re-Route (FRR) techniques. The | Alternates) [RFC5286] and remote LFAs [RFC7490] as IP Fast Reroute | |||
"fast-reroute" container may be augmented by other models to support | (FRR) techniques. The "fast-reroute" container may be augmented by | |||
other IP FRR flavors (MRT as defined in [RFC7812], TI-LFA as defined | other models to support other IP FRR flavors (Maximally Redundant | |||
in [I-D.ietf-rtgwg-segment-routing-ti-lfa], etc.). | Trees (MRTs) as defined in [RFC7812], Topology Independent LFA (TI- | |||
LFA) FRR as defined in [SR-TI-LFA], etc.). | ||||
The current version of the model supports activation of LFA and | The current version of the model supports activation of LFAs and | |||
remote LFA at the interface-level only. The global "lfa" container | remote LFAs at the interface level only. The global "lfa" container | |||
is present but kept empty to allow augmentation with vendor-specific | is present but kept empty to allow augmentation with vendor-specific | |||
properties, e.g., policies. | properties, e.g., policies. | |||
Remote LFA is considered as an extension of LFA. Remote LFA cannot | Remote LFAs are considered an extension of LFAs. Remote LFAs cannot | |||
be enabled if LFA is not enabled. | be enabled if LFAs are not enabled. | |||
The "candidate-enable" data leaf designates that an interface can be | The "candidate-enabled" data leaf designates that an interface can be | |||
used as a backup. | used as a backup. | |||
2.9. Operational States | 2.9. Operational States | |||
Operational state is defined in module in various containers at | Operational states are defined in the "ietf-isis" module in various | |||
various levels: | containers at various levels: | |||
o system-counters: Provides statistical information about the global | system-counters: | |||
system. | Provides statistical information about the global system. | |||
o interface: Provides configuration state information for each | interface: | |||
interface. | Provides configuration state information for each interface. | |||
o adjacencies: Provides state information about current IS-IS | adjacencies: | |||
adjacencies. | Provides state information about current IS-IS adjacencies. | |||
o spf-log: Provides information about SPF events for an IS-IS | spf-log: | |||
instance. This SHOULD be implemented as a wrapping buffer. | Provides information about Shortest Path First (SPF) events for an | |||
IS-IS instance. This SHOULD be implemented as a wrapping buffer. | ||||
o lsp-log: Provides information about LSP events for an IS-IS | lsp-log: | |||
instance (reception of an LSP or modification of a local LSP). | Provides information about LSP events for an IS-IS instance | |||
This SHOULD be implemented as a wrapping buffer and the | (reception of an LSP or modification of a local LSP). This SHOULD | |||
implementation MAY optionally log LSP refreshes. | be implemented as a wrapping buffer. The implementation MAY | |||
optionally log LSP refreshes. | ||||
o local-rib: Provides the IS-IS internal routing table. | local-rib: | |||
Provides the IS-IS internal routing table. | ||||
o database: Provides contents of the current Link State Database. | database: | |||
Provides the contents of the current Link State Database (LSDB). | ||||
o hostnames: Provides the system-id to hostname mappings [RFC5301]. | hostnames: | |||
Provides the system-ID-to-hostname mappings [RFC5301]. | ||||
o fast-reroute: Provides IP FRR state information. | fast-reroute: | |||
Provides IP FRR state information. | ||||
3. RPC Operations | 3. RPC Operations | |||
The "ietf-isis" module defines two RPC operations: | The "ietf-isis" module defines two RPC operations: | |||
o clear-database: Reset the content of a particular IS-IS database | clear-database: | |||
and restart database synchronization with all neighbors. | Resets the contents of a particular IS-IS database and restarts | |||
database synchronization with all neighbors. | ||||
o clear-adjacency: Restart a particular set of IS-IS adjacencies. | clear-adjacency: | |||
Restarts a particular set of IS-IS adjacencies. | ||||
4. Notifications | 4. Notifications | |||
The "ietf-isis" module defines the following notifications: | The "ietf-isis" module defines the following notifications: | |||
database-overload: This notification is sent when the IS-IS Node | database-overload: | |||
overload condition changes. | This notification is sent when the IS-IS node's overload condition | |||
changes. | ||||
lsp-too-large: This notification is sent when the system tries to | lsp-too-large: | |||
propagate a PDU that is too large. | This notification is sent when the system tries to propagate a PDU | |||
that is too large. | ||||
if-state-change: This notification is sent when an interface's | if-state-change: | |||
state changes. | This notification is sent when an interface's state changes. | |||
corrupted-lsp-detected: This notification is sent when the IS-IS | corrupted-lsp-detected: | |||
node discovers that an LSP that was previously stored in the Link | This notification is sent when the IS-IS node discovers that an | |||
State Database, i.e., local memory, has become corrupted. | LSP that was previously stored in the LSDB, i.e., local memory, | |||
has become corrupted. | ||||
attempt-to-exceed-max-sequence: This notification is sent when the | attempt-to-exceed-max-sequence: | |||
system wraps the 32-bit sequence counter of an LSP. | This notification is sent when the system wraps the 32-bit | |||
sequence counter of an LSP. | ||||
id-len-mismatch: This notification is sent when we receive a PDU | id-len-mismatch: | |||
with a different value for the System ID length. | This notification is sent when a PDU with a different value for | |||
the system ID length is received. | ||||
max-area-addresses-mismatch: This notification is sent when we | max-area-addresses-mismatch: | |||
receive a PDU with a different value for the Maximum Area | This notification is sent when a PDU with a different value for | |||
Addresses. | the Maximum Area Addresses is received. | |||
own-lsp-purge: This notification is sent when the system receives | own-lsp-purge: | |||
a PDU with its own system ID and zero age. | This notification is sent when the system receives a PDU with its | |||
own system ID and zero age. | ||||
sequence-number-skipped: This notification is sent when the system | sequence-number-skipped: | |||
receives a PDU with its own system ID and different contents. The | This notification is sent when the system receives a PDU with its | |||
system has to reissue the LSP with a higher sequence number. | own system ID and different contents. The system has to reissue | |||
the LSP with a higher sequence number. | ||||
authentication-type-failure: This notification is sent when the | authentication-type-failure: | |||
system receives a PDU with the wrong authentication type field. | This notification is sent when the system receives a PDU with the | |||
wrong authentication type field. | ||||
authentication-failure: This notification is sent when the system | authentication-failure: | |||
receives a PDU with the wrong authentication information. | This notification is sent when the system receives a PDU with the | |||
wrong authentication information. | ||||
version-skew: This notification is sent when the system receives a | version-skew: | |||
PDU with a different protocol version number. | This notification is sent when the system receives a PDU with a | |||
different protocol version number. | ||||
area-mismatch: This notification is sent when the system receives | area-mismatch: | |||
a Hello PDU from an IS that does not share any area address. | This notification is sent when the system receives a Hello PDU | |||
from an IS that does not share any area address. | ||||
rejected-adjacency: This notification is sent when the system | rejected-adjacency: | |||
receives a Hello PDU from an IS but does not establish an | This notification is sent when the system receives a Hello PDU | |||
adjacency for some reason. | from an IS but does not establish an adjacency for some reason. | |||
protocols-supported-mismatch: This notification is sent when the | protocols-supported-mismatch: | |||
system receives a non-pseudonode LSP that has no matching protocol | This notification is sent when the system receives a non- | |||
supported. | pseudonode LSP that has no matching protocol supported. | |||
lsp-error-detected: This notification is sent when the system | lsp-error-detected: | |||
receives an LSP with a parse error. | This notification is sent when the system receives an LSP with a | |||
parse error. | ||||
adjacency-state-change: This notification is sent when an IS-IS | adjacency-state-change: | |||
adjacency moves to Up state or to Down state. | This notification is sent when an IS-IS adjacency moves to the | |||
"up" state or the "down" state. | ||||
lsp-received: This notification is sent when an LSP is received. | lsp-received: | |||
This notification is sent when an LSP is received. | ||||
lsp-generation: This notification is sent when an LSP is | lsp-generation: | |||
regenerated. | This notification is sent when an LSP is regenerated. | |||
5. Interaction with Other YANG Modules | 5. Interactions with Other YANG Modules | |||
The "isis" container augments the "/rt:routing/rt:control-plane- | The "isis" container augments the "/rt:routing/rt:control-plane- | |||
protocols/control-plane-protocol" container of the ietf-routing | protocols/control-plane-protocol" container of the "ietf-routing" | |||
[RFC8349] module with IS-IS-specific parameters. | module [RFC8349] with IS-IS-specific parameters. | |||
The "isis" module augments "/if:interfaces/if:interface" defined by | ||||
[RFC8343] with ISO specific parameters. | ||||
The "isis" operational state container augments the "/rt:routing- | The "ietf-isis" module augments "/if:interfaces/if:interface" as | |||
state/rt:control-plane-protocols/control-plane-protocol" container of | defined by [RFC8343] with ISO-specific parameters. | |||
the ietf-routing module with IS-IS-specific operational states. | ||||
Some IS-IS-specific route attributes are added to route objects in | Some IS-IS-specific route attributes are added to route objects in | |||
the ietf-routing module by augmenting "/rt:routing- | the "ietf-routing" module by augmenting "/rt:routing- | |||
state/rt:ribs/rt:rib/rt:routes/rt:route". | state/rt:ribs/rt:rib/rt:routes/rt:route". | |||
The modules defined in this document uses some groupings from ietf- | The module defined in this document uses some groupings from "ietf- | |||
keychain [RFC8177]. | keychain" [RFC8177]. | |||
The module reuses types from [RFC6991] and [RFC8294]. | The module reuses types from [RFC6991] and [RFC8294]. | |||
To support BFD for fast detection, the module relies on | To support Bidirectional Forwarding Detection (BFD) for fast | |||
[I-D.ietf-bfd-yang]. | detection, the module relies on [RFC9314]. | |||
6. IS-IS YANG Module | 6. IS-IS YANG Module | |||
The following RFCs, drafts and external standards are not referenced | The following specifications are referenced in this module: | |||
in the document text but are referenced in the ietf-isis.yang module: | [ISO-10589], [RFC1195], [RFC4090], [RFC5029], [RFC5120], [RFC5130], | |||
[ISO-10589], [RFC1195], [RFC4090],[RFC5029], [RFC5130], [RFC5302], | [RFC5286], [RFC5301], [RFC5302], [RFC5305], [RFC5307], [RFC5308], | |||
[RFC5305], [RFC5306], [RFC5307], [RFC5308], [RFC5880], [RFC5881], | [RFC5443], [RFC5880], [RFC5881], [RFC6119], [RFC6232], [RFC6241], | |||
[RFC6119], [RFC6232], [RFC7794], [RFC7981], [RFC8570], [RFC7917], | [RFC6991], [RFC7490], [RFC7794], [RFC7917], [RFC7981], [RFC8177], | |||
[RFC8405]. | [RFC8294], [RFC8342], [RFC8343], [RFC8349], [RFC8405], [RFC8570], | |||
[RFC8706], and [RFC9314]. | ||||
<CODE BEGINS> file "ietf-isis@2019-10-15.yang" | <CODE BEGINS> file "ietf-isis@2021-08-31.yang" | |||
module ietf-isis { | module ietf-isis { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; | namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; | |||
prefix isis; | prefix isis; | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
reference "RFC 8349 - A YANG Data Model for Routing | reference | |||
Management (NMDA Version)"; | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA Version)"; | ||||
} | } | |||
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-yang-types { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
reference "RFC 6991 - Common YANG Data Types"; | reference | |||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix if; | |||
reference "RFC 8343 - A YANG Data Model for Interface | reference | |||
Management (NDMA Version)"; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
} | } | |||
import ietf-key-chain { | import ietf-key-chain { | |||
prefix "key-chain"; | prefix key-chain; | |||
reference "RFC 8177 - YANG Data Model for Key Chains"; | reference | |||
"RFC 8177: YANG Data Model for Key Chains"; | ||||
} | } | |||
import ietf-routing-types { | import ietf-routing-types { | |||
prefix "rt-types"; | prefix rt-types; | |||
reference "RFC 8294 - Common YANG Data Types for the | reference | |||
Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
} | } | |||
import iana-routing-types { | import iana-routing-types { | |||
prefix "iana-rt-types"; | prefix iana-rt-types; | |||
reference "RFC 8294 - Common YANG Data Types for the | reference | |||
Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
} | } | |||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix bfd-types; | |||
reference "RFC YYYY - YANG Data Model for Bidirectional | reference | |||
Forwarding Detection (BFD). | "RFC 9314: YANG Data Model for Bidirectional Forwarding | |||
Detection (BFD)"; | ||||
-- Note to RFC Editor Please replace YYYY with published RFC | ||||
number for draft-ietf-bfd-yang."; | ||||
} | } | |||
organization | organization | |||
"IETF LSR Working Group"; | "IETF LSR Working Group"; | |||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/group/lsr/> | "WG Web: <https://datatracker.ietf.org/wg/lsr/> | |||
WG List: <mailto:lsr@ietf.org> | WG List: <mailto:lsr@ietf.org> | |||
Editor: Stephane Litkowski | Editor: Stephane Litkowski | |||
<mailto:slitkows.ietf@gmail.com> | <mailto:slitkows.ietf@gmail.com> | |||
Author: Derek Yeung | Author: Derek Yeung | |||
<mailto:derek@arrcus.com> | <mailto:derek@arrcus.com> | |||
Author: Acee Lindem | Author: Acee Lindem | |||
<mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
Author: Jeffrey Zhang | Author: Jeffrey Zhang | |||
<mailto:zzhang@juniper.net> | <mailto:zzhang@juniper.net> | |||
Author: Ladislav Lhotka | ||||
<mailto:llhotka@nic.cz>"; | ||||
Author: Ladislav Lhotka | ||||
<mailto:ladislav.lhotka@nic.cz>"; | ||||
description | description | |||
"This YANG module defines the generic configuration and | "This YANG module defines the generic configuration and | |||
operational state for the IS-IS protocol common to all | operational states for the IS-IS protocol common to all | |||
vendor implementations. It is intended that the module | vendor implementations. It is intended that the module | |||
will be extended by vendors to define vendor-specific | will be extended by vendors to define vendor-specific | |||
IS-IS configuration parameters and policies, | IS-IS configuration parameters and policies - | |||
for example, route maps or route policies. | for example, route maps or route policies. | |||
This YANG model conforms to the Network Management | ||||
Datastore Architecture (NMDA) as described in RFC 8242. | ||||
Copyright (c) 2018 IETF Trust and the persons identified as | This YANG data 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 | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
without modification, is permitted pursuant to, and subject to | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
the license terms contained in, the Simplified BSD License set | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
Relating to IETF Documents | they appear in all capitals, as shown here. | |||
(https://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX | Copyright (c) 2022 IETF Trust and the persons identified as | |||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | authors of the code. All rights reserved. | |||
for full legal notices. | ||||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | Redistribution and use in source and binary forms, with or | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | without modification, is permitted pursuant to, and subject to | |||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | the license terms contained in, the Revised BSD License set | |||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
they appear in all capitals, as shown here. | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC 9130; see the | |||
see the RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
reference | ||||
"RFC 8342: Network Management Datastore Architecture (NMDA)"; | ||||
revision 2019-10-15 { | revision 2021-08-31 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference "RFC XXXX"; | reference | |||
"RFC 9130: YANG Data Model for the IS-IS Protocol"; | ||||
} | } | |||
/* Identities */ | /* Identities */ | |||
identity isis { | identity isis { | |||
base rt:routing-protocol; | base rt:routing-protocol; | |||
description "Identity for the IS-IS routing protocol."; | description | |||
"Identity for the IS-IS routing protocol."; | ||||
} | } | |||
identity lsp-log-reason { | identity lsp-log-reason { | |||
description "Base identity for an LSP change log reason."; | description | |||
"Base identity for a Link State PDU (LSP) | ||||
change log reason."; | ||||
} | } | |||
identity refresh { | identity refresh { | |||
base lsp-log-reason; | base lsp-log-reason; | |||
description | description | |||
"Identity used when the LSP log reason is | "Identity used when the LSP log reason is that an LSP | |||
a refresh LSP received."; | refresh was received."; | |||
} | } | |||
identity content-change { | identity content-change { | |||
base lsp-log-reason; | base lsp-log-reason; | |||
description | description | |||
"Identity used when the LSP log reason is | "Identity used when the LSP log reason is | |||
a change in the content of the LSP."; | a change in the contents of the LSP."; | |||
} | } | |||
identity frr-protection-method { | identity frr-protection-method { | |||
description | description | |||
"Base identity for a Fast Reroute protection method."; | "Base identity for a Fast Reroute protection method."; | |||
} | } | |||
identity frr-protection-method-lfa { | identity frr-protection-method-lfa { | |||
base frr-protection-method; | base frr-protection-method; | |||
description "Loop Free Alternate as defined in RFC5286."; | description | |||
"Loop-Free Alternate as defined in RFC 5286."; | ||||
reference | ||||
"RFC 5286: Basic Specification for IP Fast Reroute: | ||||
Loop-Free Alternates"; | ||||
} | } | |||
identity frr-protection-method-rlfa { | identity frr-protection-method-rlfa { | |||
base frr-protection-method; | base frr-protection-method; | |||
description "Remote Loop Free Alternate as defined in RFC7490."; | description | |||
"Remote Loop-Free Alternate as defined in RFC 7490."; | ||||
reference | ||||
"RFC 7490: Remote Loop-Free Alternate (LFA) | ||||
Fast Reroute (FRR)"; | ||||
} | } | |||
identity frr-protection-method-rsvpte { | identity frr-protection-method-rsvpte { | |||
base frr-protection-method; | base frr-protection-method; | |||
description "RSVP-TE as defined in RFC4090."; | description | |||
"RSVP-TE as defined in RFC 4090."; | ||||
reference | ||||
"RFC 4090: Fast Reroute Extensions to RSVP-TE for | ||||
LSP Tunnels"; | ||||
} | } | |||
identity frr-protection-available-type { | identity frr-protection-available-type { | |||
description "Base identity for Fast Reroute protection types | description | |||
provided by an alternate path."; | "Base identity for Fast Reroute protection types | |||
provided by an alternate path."; | ||||
} | } | |||
identity frr-protection-available-node-type { | identity frr-protection-available-node-type { | |||
base frr-protection-available-type; | base frr-protection-available-type; | |||
description "Node protection is provided by the alternate."; | description | |||
"Node protection is provided by the alternate."; | ||||
} | } | |||
identity frr-protection-available-link-type { | identity frr-protection-available-link-type { | |||
base frr-protection-available-type; | base frr-protection-available-type; | |||
description "Link protection is provided by the alternate."; | description | |||
"Link protection is provided by the alternate."; | ||||
} | } | |||
identity frr-protection-available-srlg-type { | identity frr-protection-available-srlg-type { | |||
base frr-protection-available-type; | base frr-protection-available-type; | |||
description "SRLG protection is provided by the alternate."; | description | |||
"Shared Risk Link Group (SRLG) protection is provided by | ||||
the alternate."; | ||||
} | } | |||
identity frr-protection-available-downstream-type { | identity frr-protection-available-downstream-type { | |||
base frr-protection-available-type; | base frr-protection-available-type; | |||
description "The alternate is downstream of node in the path."; | description | |||
"The alternate is downstream of the node in the path."; | ||||
} | } | |||
identity frr-protection-available-other-type { | identity frr-protection-available-other-type { | |||
base frr-protection-available-type; | base frr-protection-available-type; | |||
description "The level of protection is unknown."; | description | |||
"The level of protection is unknown."; | ||||
} | } | |||
identity frr-alternate-type { | identity frr-alternate-type { | |||
description "Base identity for IP Fast Reroute alternate type."; | description | |||
"Base identity for the IP Fast Reroute alternate type."; | ||||
} | } | |||
identity frr-alternate-type-equal-cost { | identity frr-alternate-type-equal-cost { | |||
base frr-alternate-type; | base frr-alternate-type; | |||
description "ECMP alternate."; | description | |||
"ECMP-based alternate."; | ||||
} | } | |||
identity frr-alternate-type-lfa { | identity frr-alternate-type-lfa { | |||
base frr-alternate-type; | base frr-alternate-type; | |||
description "LFA alternate."; | description | |||
"LFA-based alternate."; | ||||
} | } | |||
identity frr-alternate-type-remote-lfa { | identity frr-alternate-type-remote-lfa { | |||
base frr-alternate-type; | base frr-alternate-type; | |||
description "Remote LFA alternate."; | description | |||
"Remote-LFA-based alternate."; | ||||
} | } | |||
identity frr-alternate-type-tunnel { | identity frr-alternate-type-tunnel { | |||
base frr-alternate-type; | base frr-alternate-type; | |||
description "Tunnel based alternate (such as, | description | |||
RSVP-TE or GRE)."; | "Tunnel-based alternate (such as RSVP-TE or GRE)."; | |||
} | } | |||
identity frr-alternate-mrt { | identity frr-alternate-mrt { | |||
base frr-alternate-type; | base frr-alternate-type; | |||
description "MRT alternate."; | description | |||
"MRT-based alternate."; | ||||
} | } | |||
identity frr-alternate-tilfa { | identity frr-alternate-tilfa { | |||
base frr-alternate-type; | base frr-alternate-type; | |||
description "TILFA alternate."; | description | |||
"TI-LFA-based alternate."; | ||||
} | } | |||
identity frr-alternate-other { | identity frr-alternate-other { | |||
base frr-alternate-type; | base frr-alternate-type; | |||
description "Other alternate."; | description | |||
"Other type of alternate."; | ||||
} | } | |||
identity unidirectional-link-delay-subtlv-flag { | identity unidirectional-link-delay-subtlv-flag { | |||
description "Base identity for unidirectional-link-delay | description | |||
subTLV flags. Flags are defined in RFC8570."; | "Base identity for the flag corresponding to the | |||
Unidirectional Link Delay sub-TLV as defined in RFC 8570."; | ||||
reference | ||||
"RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; | ||||
} | } | |||
identity unidirectional-link-delay-subtlv-a-flag { | identity unidirectional-link-delay-subtlv-a-flag { | |||
base unidirectional-link-delay-subtlv-flag; | base unidirectional-link-delay-subtlv-flag; | |||
description | description | |||
"The A bit represents the Anomalous (A) bit. | "The 'A' bit field represents the Anomalous (A) bit. | |||
The A bit is set when the measured value of | The A bit is set when the measured value of | |||
this parameter exceeds its configured | this parameter exceeds its configured | |||
maximum threshold. | maximum threshold. | |||
The A bit is cleared when the measured value | The A bit is cleared when the measured value | |||
falls below its configured reuse threshold. | falls below its configured reuse threshold. | |||
If the A bit is clear, | If the A bit is clear, | |||
the value represents steady-state link performance."; | the value represents steady-state link performance."; | |||
} | } | |||
identity min-max-unidirectional-link-delay-subtlv-flag { | identity min-max-unidirectional-link-delay-subtlv-flag { | |||
description | description | |||
"Base identity for min-max-unidirectional-link-delay | "Base identity for the flag corresponding to the Min/Max | |||
subTLV flags. Flags are defined in RFC8570."; | Unidirectional Link Delay sub-TLV as defined in RFC 8570."; | |||
reference | ||||
"RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; | ||||
} | } | |||
identity min-max-unidirectional-link-delay-subtlv-a-flag { | identity min-max-unidirectional-link-delay-subtlv-a-flag { | |||
base min-max-unidirectional-link-delay-subtlv-flag; | base min-max-unidirectional-link-delay-subtlv-flag; | |||
description | description | |||
"The A bit represents the Anomalous (A) bit. | "The 'A' bit field represents the Anomalous (A) bit. | |||
The A bit is set when the measured value of | The A bit is set when the measured value of | |||
this parameter exceeds its configured | this parameter exceeds its configured | |||
maximum threshold. | maximum threshold. | |||
The A bit is cleared when the measured value | The A bit is cleared when the measured value | |||
falls below its configured reuse threshold. | falls below its configured reuse threshold. | |||
If the A bit is clear, | If the A bit is clear, | |||
the value represents steady-state link performance."; | the value represents steady-state link performance."; | |||
} | } | |||
identity unidirectional-link-loss-subtlv-flag { | identity unidirectional-link-loss-subtlv-flag { | |||
description "Base identity for unidirectional-link-loss | description | |||
subTLV flags. Flags are defined in RFC8570."; | "Base identity for the flag corresponding to the | |||
Unidirectional Link Loss sub-TLV as defined in RFC 8570."; | ||||
reference | ||||
"RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; | ||||
} | } | |||
identity unidirectional-link-loss-subtlv-a-flag { | identity unidirectional-link-loss-subtlv-a-flag { | |||
base unidirectional-link-loss-subtlv-flag; | base unidirectional-link-loss-subtlv-flag; | |||
description | description | |||
"The A bit represents the Anomalous (A) bit. | "The 'A' bit field represents the Anomalous (A) bit. | |||
The A bit is set when the measured value of | The A bit is set when the measured value of | |||
this parameter exceeds its configured | this parameter exceeds its configured | |||
maximum threshold. | maximum threshold. | |||
The A bit is cleared when the measured value | ||||
The A bit is cleared when the measured value | falls below its configured reuse threshold. | |||
falls below its configured reuse threshold. | If the A bit is clear, | |||
If the A bit is clear, | the value represents steady-state link performance."; | |||
the value represents steady-state link performance."; | ||||
} | } | |||
identity tlv229-flag { | identity tlv229-flag { | |||
description "Base identity for TLV229 flags. Flags are defined | description | |||
in RFC5120."; | "Base identity for the flag corresponding to TLV 229 | |||
(M-Topologies) as defined in RFC 5120."; | ||||
reference | ||||
"RFC 5120: M-ISIS: Multi Topology (MT) Routing in | ||||
Intermediate System to Intermediate Systems (IS-ISs)"; | ||||
} | } | |||
identity tlv229-overload-flag { | identity tlv229-overload-flag { | |||
base tlv229-flag; | base tlv229-flag; | |||
description | description | |||
"If set, the originator is overloaded, | "If set, the originator is overloaded | |||
and must be avoided in path calculation."; | and must be avoided in the path calculation."; | |||
} | } | |||
identity tlv229-attached-flag { | identity tlv229-attached-flag { | |||
base tlv229-flag; | base tlv229-flag; | |||
description | description | |||
"If set, the originator is attached to | "If set, the originator is attached to | |||
another area using the referred metric."; | another area using the referred metric."; | |||
} | } | |||
identity router-capability-flag { | identity router-capability-flag { | |||
description "Base identity for router capability flags. | description | |||
Flags are defined in RFC7981."; | "Base identity for the flag corresponding to the | |||
Router Capability TLV as defined in RFC 7981."; | ||||
reference | ||||
"RFC 7981: IS-IS Extensions for Advertising Router | ||||
Information"; | ||||
} | } | |||
identity router-capability-flooding-flag { | identity router-capability-flooding-flag { | |||
base router-capability-flag; | base router-capability-flag; | |||
description | description | |||
"Quote from RFC7981: 'If the S bit is set, | "Quote from RFC 7981: | |||
the IS-IS Router CAPABILITY | 'If the S bit is set(1), the IS-IS Router CAPABILITY TLV | |||
TLV MUST be flooded across the entire routing | MUST be flooded across the entire routing domain. If the | |||
domain. If the S bit is clear, the TLV MUST NOT | S bit is not set(0), the TLV MUST NOT be leaked between | |||
be leaked between levels. This bit MUST NOT | levels. This bit MUST NOT be altered during the TLV | |||
be altered during the TLV leaking'."; | leaking.'"; | |||
} | } | |||
identity router-capability-down-flag { | identity router-capability-down-flag { | |||
base router-capability-flag; | base router-capability-flag; | |||
description | description | |||
"Quote from RFC7981: 'When the IS-IS Router CAPABILITY TLV | "Quote from RFC 7981: | |||
is leaked from level-2 to level-1, the D bit MUST be set. | 'When the IS-IS Router CAPABILITY TLV is leaked from | |||
Otherwise, this bit MUST be clear. IS-IS Router | Level 2 (L2) to Level 1 (L1), the D bit MUST be set. | |||
capability TLVs with the D bit set MUST NOT be | Otherwise, this bit MUST be clear. IS-IS Router | |||
leaked from level-1 to level-2 in to prevent | CAPABILITY TLVs with the D bit set MUST NOT be leaked from | |||
TLV looping'."; | Level 1 to Level 2. This is to prevent TLV looping.'"; | |||
} | } | |||
identity lsp-flag { | identity lsp-flag { | |||
description "Base identity for LSP attributes. | description | |||
"Base identity for LSP attributes as defined in ISO 10589."; | ||||
Attributes are defined in ISO 10589"; | reference | |||
"ISO 10589: Intermediate System to Intermediate System | ||||
intra-domain routeing information exchange protocol | ||||
for use in conjunction with the protocol for providing | ||||
the connectionless-mode network service (ISO 8473)"; | ||||
} | } | |||
identity lsp-partitioned-flag { | identity lsp-partitioned-flag { | |||
base lsp-flag; | base lsp-flag; | |||
description "Originator partition repair supported"; | description | |||
"Originator partition repair supported."; | ||||
} | } | |||
identity lsp-attached-error-metric-flag { | identity lsp-attached-error-metric-flag { | |||
base lsp-flag; | base lsp-flag; | |||
description "Set when originator is attached to | description | |||
another area using the error metric."; | "Set when the originator is attached to | |||
another area using the error metric."; | ||||
} | } | |||
identity lsp-attached-delay-metric-flag { | identity lsp-attached-delay-metric-flag { | |||
base lsp-flag; | base lsp-flag; | |||
description "Set when originator is attached to | description | |||
another area using the delay metric."; | "Set when the originator is attached to | |||
another area using the delay metric."; | ||||
} | } | |||
identity lsp-attached-expense-metric-flag { | identity lsp-attached-expense-metric-flag { | |||
base lsp-flag; | base lsp-flag; | |||
description "Set when originator is attached to | description | |||
another area using the expense metric."; | "Set when the originator is attached to | |||
another area using the expense metric."; | ||||
} | } | |||
identity lsp-attached-default-metric-flag { | identity lsp-attached-default-metric-flag { | |||
base lsp-flag; | base lsp-flag; | |||
description "Set when originator is attached to | description | |||
another area using the default metric."; | "Set when the originator is attached to | |||
another area using the default metric."; | ||||
} | } | |||
identity lsp-overload-flag { | identity lsp-overload-flag { | |||
base lsp-flag; | base lsp-flag; | |||
description | description | |||
"If set, the originator is overloaded, | "If set, the originator is overloaded | |||
and must be avoided in path calculation."; | and must be avoided in the path calculation."; | |||
} | } | |||
identity lsp-l1system-flag { | ||||
base lsp-flag; | identity lsp-l1-system-flag { | |||
description | base lsp-flag; | |||
"Set when the Intermediate System has an L1 type."; | description | |||
"Set when the Intermediate System has an L1 type."; | ||||
} | } | |||
identity lsp-l2system-flag { | ||||
base lsp-flag; | identity lsp-l2-system-flag { | |||
description | base lsp-flag; | |||
"Set when the Intermediate System has an L2 type."; | description | |||
"Set when the Intermediate System has an L2 type."; | ||||
} | } | |||
/* Feature definitions */ | /* Feature definitions */ | |||
feature osi-interface { | feature osi-interface { | |||
description "Support of OSI specific parameters on an | description | |||
interface."; | "Support of OSI-specific parameters on an interface."; | |||
} | } | |||
feature poi-tlv { | feature poi-tlv { | |||
description "Support of Purge Originator Identification."; | description | |||
reference "RFC 6232 - Purge Originator Identification TLV | "Support of the Purge Originator Identification (POI) TLV."; | |||
for IS-IS"; | reference | |||
"RFC 6232: Purge Originator Identification TLV for IS-IS"; | ||||
} | } | |||
feature ietf-spf-delay { | feature ietf-spf-delay { | |||
description | description | |||
"Support for IETF SPF delay algorithm."; | "Support for the IETF SPF delay algorithm."; | |||
reference "RFC 8405 - SPF Back-off algorithm for link | reference | |||
state IGPs"; | "RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm | |||
for Link-State IGPs"; | ||||
} | } | |||
feature bfd { | feature bfd { | |||
description | description | |||
"Support for BFD detection of IS-IS neighbor reachability."; | "Support for detection of IS-IS neighbor reachability | |||
reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) | via BFD."; | |||
RFC 5881 - Bidirectional Forwarding Detection | reference | |||
(BFD) for IPv4 and IPv6 (Single Hop)"; | "RFC 5880: Bidirectional Forwarding Detection (BFD) | |||
RFC 5881: Bidirectional Forwarding Detection (BFD) | ||||
for IPv4 and IPv6 (Single Hop)"; | ||||
} | } | |||
feature key-chain { | feature key-chain { | |||
description | description | |||
"Support of keychain for authentication."; | "Support of key chains for authentication."; | |||
reference "RFC8177 - YANG Data Model for Key Chains"; | reference | |||
"RFC 8177: YANG Data Model for Key Chains"; | ||||
} | } | |||
feature node-flag { | feature node-flag { | |||
description | description | |||
"Support for node-flag for IS-IS prefixes."; | "Support for node flags for IS-IS prefixes."; | |||
reference "RFC7794 - IS-IS Prefix Attributes for | reference | |||
Extended IP and IPv6 Reachability"; | "RFC 7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 | |||
Reachability"; | ||||
} | } | |||
feature node-tag { | feature node-tag { | |||
description | description | |||
"Support for node admin tag for IS-IS routing instances."; | "Support for node administrative tags for IS-IS | |||
reference "RFC7917 - Advertising Node Administrative Tags | routing instances."; | |||
in IS-IS"; | reference | |||
"RFC 7917: Advertising Node Administrative Tags in IS-IS"; | ||||
} | } | |||
feature ldp-igp-sync { | feature ldp-igp-sync { | |||
description | description | |||
"Support for LDP IGP synchronization."; | "Support for LDP IGP synchronization."; | |||
reference "RFC5443 - LDP IGP Synchronization."; | reference | |||
"RFC 5443: LDP IGP Synchronization"; | ||||
} | } | |||
feature fast-reroute { | feature fast-reroute { | |||
description | description | |||
"Support for IP Fast Reroute (IP-FRR)."; | "Support for IP Fast Reroute (IP FRR)."; | |||
} | } | |||
feature nsr { | feature nsr { | |||
description | description | |||
"Support for Non-Stop-Routing (NSR). The IS-IS NSR feature | "Support for Non-Stop-Routing (NSR). The IS-IS NSR feature | |||
allows a router with redundant control-plane capability | allows a router with redundant control-plane capability | |||
(e.g., dual Route-Processor (RP) cards) to maintain its | (e.g., dual Route Processor (RP) cards) to maintain its | |||
state and adjacencies during planned and unplanned | state and adjacencies during planned and unplanned | |||
IS-IS instance restarts. It differs from graceful-restart | IS-IS instance restarts. It differs from graceful restart | |||
or Non-Stop Forwarding (NSF) in that no protocol signaling | or Non-Stop Forwarding (NSF) in that no protocol signaling | |||
or assistance from adjacent IS-IS neighbors is required to | or assistance from adjacent IS-IS neighbors is required to | |||
recover control-plane state."; | recover control-plane state."; | |||
} | } | |||
feature lfa { | feature lfa { | |||
description | description | |||
"Support for Loop-Free Alternates (LFAs)."; | "Support for Loop-Free Alternates (LFAs)."; | |||
reference "RFC5286 - Basic Specification of IP Fast-Reroute: | reference | |||
Loop-free Alternates"; | "RFC 5286: Basic Specification for IP Fast Reroute: | |||
Loop-Free Alternates"; | ||||
} | } | |||
feature remote-lfa { | feature remote-lfa { | |||
description | description | |||
"Support for Remote Loop-Free Alternates (R-LFAs)."; | "Support for remote LFAs (R-LFAs)."; | |||
reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute"; | reference | |||
"RFC 7490: Remote Loop-Free Alternate (LFA) | ||||
Fast Reroute (FRR)"; | ||||
} | } | |||
feature overload-max-metric { | feature overload-max-metric { | |||
description | description | |||
"Support of overload by setting all links to max metric. | "Support of overload by setting all links to the maximum | |||
In IS-IS, the overload bit is usually used to signal that | link metric. In IS-IS, the overload bit is usually used to | |||
a node cannot be used as a transit. The overload-max-metric | signal that a node cannot be used as a transit node. The | |||
feature brings a similar behavior leveraging on setting all | 'overload-max-metric' feature provides similar behavior, | |||
the link metrics to MAX_METRIC."; | also setting all the link metrics to MAX_METRIC."; | |||
} | } | |||
feature prefix-tag { | feature prefix-tag { | |||
description | description | |||
"Support for 32-bit prefix tags"; | "Support for 32-bit prefix tags."; | |||
reference "RFC5130 - A Policy Control Mechanism in | reference | |||
IS-IS Using Administrative Tags"; | "RFC 5130: A Policy Control Mechanism in IS-IS Using | |||
Administrative Tags"; | ||||
} | } | |||
feature prefix-tag64 { | feature prefix-tag64 { | |||
description | description | |||
"Support for 64-bit prefix tags"; | "Support for 64-bit prefix tags."; | |||
reference "RFC5130 - A Policy Control Mechanism in | reference | |||
IS-IS Using Administrative Tags"; | "RFC 5130: A Policy Control Mechanism in IS-IS Using | |||
Administrative Tags"; | ||||
} | } | |||
feature auto-cost { | feature auto-cost { | |||
description | description | |||
"Support for IS-IS interface metric computation | "Support for an IS-IS interface metric computation | |||
according to a reference bandwidth."; | according to a reference bandwidth."; | |||
} | } | |||
feature te-rid { | feature te-rid { | |||
description | description | |||
"Traffic-Engineering Router-ID."; | "Traffic Engineering router ID."; | |||
reference "RFC5305 - IS-IS Extensions for Traffic Engineering | reference | |||
RFC6119 - IPv6 Traffic Engineering in IS-IS"; | "RFC 5305: IS-IS Extensions for Traffic Engineering | |||
RFC 6119: IPv6 Traffic Engineering in IS-IS"; | ||||
} | } | |||
feature max-ecmp { | feature max-ecmp { | |||
description | description | |||
"Setting maximum number of ECMP paths."; | "Sets the maximum number of ECMP paths."; | |||
} | } | |||
feature multi-topology { | feature multi-topology { | |||
description | description | |||
"Support for Multiple-Topology Routing (MTR)."; | "Support for Multi-Topology (MT) Routing."; | |||
reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS"; | reference | |||
"RFC 5120: M-ISIS: Multi Topology (MT) Routing in | ||||
Intermediate System to Intermediate Systems (IS-ISs)"; | ||||
} | } | |||
feature nlpid-control { | feature nlpid-control { | |||
description | description | |||
"Support for the advertisement | "Support for the advertisement of a Network Layer | |||
of a Network Layer Protocol Identifier within IS-IS | Protocol Identifier within an IS-IS configuration."; | |||
configuration."; | ||||
} | } | |||
feature graceful-restart { | feature graceful-restart { | |||
description | description | |||
"IS-IS Graceful restart support."; | "Support for IS-IS graceful restart."; | |||
reference "RFC5306 - Restart Signaling in IS-IS"; | reference | |||
"RFC 8706: Restart Signaling for IS-IS"; | ||||
} | } | |||
feature lsp-refresh { | feature lsp-refresh { | |||
description | description | |||
"Configuration of LSP refresh interval."; | "Configuration of the LSP refresh interval."; | |||
} | } | |||
feature maximum-area-addresses { | feature maximum-area-addresses { | |||
description | description | |||
"Support for maximum-area-addresses configuration."; | "Support for 'maximum-area-addresses' configuration."; | |||
} | } | |||
feature admin-control { | feature admin-control { | |||
description | description | |||
"Administrative control of the protocol state."; | "Administrative control of the protocol state."; | |||
} | } | |||
/* Type definitions */ | /* Type definitions */ | |||
typedef circuit-id { | typedef circuit-id { | |||
skipping to change at page 34, line 28 ¶ | skipping to change at line 1561 ¶ | |||
"Broadcast interface type."; | "Broadcast interface type."; | |||
} | } | |||
enum point-to-point { | enum point-to-point { | |||
description | description | |||
"Point-to-point interface type."; | "Point-to-point interface type."; | |||
} | } | |||
} | } | |||
description | description | |||
"This type defines the type of adjacency | "This type defines the type of adjacency | |||
to be established for the interface. | to be established for the interface. | |||
The interface-type determines the type | 'interface-type' determines the type | |||
of hello message that is used."; | of Hello message that is used."; | |||
} | } | |||
typedef level { | typedef level { | |||
type enumeration { | type enumeration { | |||
enum "level-1" { | enum level-1 { | |||
description | description | |||
"This enum indicates L1-only capability."; | "This enum indicates L1-only capability."; | |||
} | } | |||
enum "level-2" { | enum level-2 { | |||
description | description | |||
"This enum indicates L2-only capability."; | "This enum indicates L2-only capability."; | |||
} | } | |||
enum "level-all" { | enum level-all { | |||
description | description | |||
"This enum indicates capability for both levels."; | "This enum indicates capability for both levels."; | |||
} | } | |||
} | } | |||
default "level-all"; | default "level-all"; | |||
description | description | |||
"This type defines IS-IS level of an object."; | "This type defines the IS-IS level of an object."; | |||
} | } | |||
typedef adj-state-type { | typedef adj-state-type { | |||
type enumeration { | type enumeration { | |||
enum "up" { | enum up { | |||
description | description | |||
"State indicates the adjacency is established."; | "This state indicates that the adjacency is established."; | |||
} | } | |||
enum "down" { | enum down { | |||
description | description | |||
"State indicates the adjacency is NOT established."; | "This state indicates that the adjacency is | |||
NOT established."; | ||||
} | } | |||
enum "init" { | enum init { | |||
description | description | |||
"State indicates the adjacency is establishing."; | "This state indicates that the adjacency is being | |||
established."; | ||||
} | } | |||
enum "failed" { | enum failed { | |||
description | description | |||
"State indicates the adjacency is failed."; | "This state indicates that the adjacency has failed."; | |||
} | } | |||
} | } | |||
description | description | |||
"This type defines states of an adjacency"; | "This type defines the states of an adjacency."; | |||
} | } | |||
typedef if-state-type { | typedef if-state-type { | |||
type enumeration { | type enumeration { | |||
enum "up" { | enum up { | |||
description "Up state."; | description | |||
"'up' state."; | ||||
} | } | |||
enum "down" { | enum down { | |||
description "Down state"; | description | |||
"'down' state."; | ||||
} | } | |||
} | } | |||
description | description | |||
"This type defines the state of an interface"; | "This type defines the state of an interface."; | |||
} | } | |||
typedef level-number { | typedef level-number { | |||
type uint8 { | type uint8 { | |||
range "1 .. 2"; | range "1 .. 2"; | |||
} | } | |||
description | description | |||
"This type defines the current IS-IS level."; | "This type defines the current IS-IS level."; | |||
} | } | |||
typedef lsp-id { | typedef lsp-id { | |||
type string { | type string { | |||
pattern | pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' | |||
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' | + '{4}\.[0-9][0-9]-[0-9][0-9]'; | |||
+'{4}\.[0-9][0-9]-[0-9][0-9]'; | ||||
} | } | |||
description | description | |||
"This type defines the IS-IS LSP ID format using a | "This type defines the IS-IS LSP ID format using a | |||
pattern. An example LSP ID is 0143.0438.AEF0.02-01"; | pattern. An example LSP ID is '0143.0438.AEF0.02-01'."; | |||
} | } | |||
typedef area-address { | typedef area-address { | |||
type string { | type string { | |||
pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}'; | pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}'; | |||
} | } | |||
description | description | |||
"This type defines the area address format."; | "This type defines the area address format."; | |||
} | } | |||
typedef snpa { | typedef snpa { | |||
type string { | type string { | |||
length "0 .. 20"; | length "0 .. 20"; | |||
} | } | |||
description | description | |||
"This type defines the Subnetwork Point | "This type defines the Subnetwork Point of Attachment (SNPA) | |||
of Attachment (SNPA) format. | format. The SNPA should be encoded according to the rules | |||
The SNPA should be encoded according to the rules | specified for the particular type of subnetwork being used. | |||
specified for the particular type of subnetwork | As an example, for an Ethernet subnetwork, the SNPA is | |||
being used. As an example, for an ethernet subnetwork, | encoded as a Media Access Control (MAC) address, such as | |||
the SNPA is encoded as a MAC address, such as, | ||||
'00aa.bbcc.ddee'."; | '00aa.bbcc.ddee'."; | |||
} | } | |||
typedef system-id { | typedef system-id { | |||
type string { | type string { | |||
pattern | pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; | |||
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; | ||||
} | } | |||
description | description | |||
"This type defines IS-IS system-id using pattern, | "This type defines the IS-IS system ID by using a pattern. | |||
An example system-id is 0143.0438.AEF0"; | An example system ID is '0143.0438.AEF0'."; | |||
} | } | |||
typedef extended-system-id { | typedef extended-system-id { | |||
type string { | type string { | |||
pattern | pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.' | |||
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.' | + '[0-9][0-9]'; | |||
+'[0-9][0-9]'; | ||||
} | } | |||
description | description | |||
"This type defines IS-IS system-id using pattern. The extended | "This type defines the IS-IS system ID using a pattern. | |||
system-id contains the pseudonode number in addition to the | 'extended-system-id' contains the pseudonode number | |||
system-id. | in addition to the system ID. | |||
An example system-id is 0143.0438.AEF0.00"; | An example extended system ID is '0143.0438.AEF0.00'."; | |||
} | } | |||
typedef wide-metric { | typedef wide-metric { | |||
type uint32 { | type uint32 { | |||
range "0 .. 16777215"; | range "0 .. 16777215"; | |||
} | } | |||
description | description | |||
"This type defines wide style format of IS-IS metric."; | "This type defines the wide-style format of an IS-IS metric."; | |||
} | } | |||
typedef std-metric { | typedef std-metric { | |||
type uint8 { | type uint8 { | |||
range "0 .. 63"; | range "0 .. 63"; | |||
} | } | |||
description | description | |||
"This type defines old style format of IS-IS metric."; | "This type defines the old-style format of the IS-IS metric."; | |||
} | } | |||
typedef mesh-group-state { | typedef mesh-group-state { | |||
type enumeration { | type enumeration { | |||
enum "mesh-inactive" { | enum mesh-inactive { | |||
description | description | |||
"Interface is not part of a mesh group."; | "The interface is not part of a mesh group."; | |||
} | } | |||
enum "mesh-set" { | enum mesh-set { | |||
description | description | |||
"Interface is part of a mesh group."; | "The interface is part of a mesh group."; | |||
} | } | |||
enum "mesh-blocked" { | enum mesh-blocked { | |||
description | description | |||
"LSPs must not be flooded over this interface."; | "LSPs must not be flooded over this interface."; | |||
} | } | |||
} | } | |||
description | description | |||
"This type describes mesh group state of an interface"; | "This type describes the mesh group state of an interface."; | |||
} | } | |||
/* Grouping for notifications */ | /* Grouping for notifications */ | |||
grouping notification-instance-hdr { | grouping notification-instance-hdr { | |||
description | description | |||
"Instance specific IS-IS notification data grouping"; | "Instance-specific IS-IS notification data grouping."; | |||
leaf routing-protocol-name { | leaf routing-protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
description "Name of the IS-IS instance."; | description | |||
"Name of the IS-IS instance."; | ||||
} | } | |||
leaf isis-level { | leaf isis-level { | |||
type level; | type level; | |||
description "IS-IS level of the instance."; | description | |||
"IS-IS level of the instance."; | ||||
} | } | |||
} | } | |||
grouping notification-interface-hdr { | grouping notification-interface-hdr { | |||
description | description | |||
"Interface specific IS-IS notification data grouping"; | "Interface-specific IS-IS notification data grouping."; | |||
leaf interface-name { | leaf interface-name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description "IS-IS interface name"; | description | |||
"IS-IS interface name."; | ||||
} | } | |||
leaf interface-level { | leaf interface-level { | |||
type level; | type level; | |||
description "IS-IS level of the interface."; | description | |||
"IS-IS level of the interface."; | ||||
} | } | |||
leaf extended-circuit-id { | leaf extended-circuit-id { | |||
type extended-circuit-id; | type extended-circuit-id; | |||
description "Extended circuit-id of the interface."; | description | |||
"Extended circuit ID of the interface."; | ||||
} | } | |||
} | } | |||
/* Groupings for IP Fast Reroute */ | /* Groupings for IP Fast Reroute */ | |||
grouping instance-fast-reroute-config { | grouping instance-fast-reroute-config { | |||
description | description | |||
"This group defines global configuration of IP | "This group defines the global configuration of IP | |||
Fast ReRoute (FRR)."; | Fast Reroute (FRR)."; | |||
container fast-reroute { | container fast-reroute { | |||
if-feature fast-reroute; | if-feature "fast-reroute"; | |||
description | description | |||
"This container may be augmented with global | "This container may be augmented with global | |||
parameters for IP-FRR."; | parameters for IP FRR."; | |||
container lfa { | container lfa { | |||
if-feature lfa; | if-feature "lfa"; | |||
description | description | |||
"This container may be augmented with | "This container may be augmented with | |||
global parameters for Loop-Free Alternatives (LFA). | global parameters for Loop-Free Alternates (LFAs). | |||
Container creation has no effect on LFA activation."; | The creation of this container has no effect on | |||
LFA activation."; | ||||
} | } | |||
} | } | |||
} | } | |||
grouping interface-lfa-config { | grouping interface-lfa-config { | |||
leaf candidate-enable { | leaf candidate-enabled { | |||
type boolean; | type boolean; | |||
default "true"; | default "true"; | |||
description | description | |||
"Enable the interface to be used as backup."; | "Enables the interface to be used as a backup."; | |||
} | } | |||
leaf enable { | leaf enabled { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Activates LFA - Per-prefix LFA computation | "Activates the LFA. Per-prefix LFA computation is assumed."; | |||
is assumed."; | ||||
} | } | |||
container remote-lfa { | container remote-lfa { | |||
if-feature remote-lfa; | if-feature "remote-lfa"; | |||
leaf enable { | leaf enabled { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Activates Remote LFA (R-LFA)."; | "Activates the remote LFA (R-LFA)."; | |||
} | } | |||
description | description | |||
"Remote LFA configuration."; | "Remote LFA configuration."; | |||
} | } | |||
description "Grouping for LFA interface configuration"; | description | |||
"Grouping for LFA interface configuration."; | ||||
} | } | |||
grouping interface-fast-reroute-config { | grouping interface-fast-reroute-config { | |||
description | description | |||
"This group defines interface configuration of IP-FRR."; | "This group defines the interface configuration of IP FRR."; | |||
container fast-reroute { | container fast-reroute { | |||
if-feature fast-reroute; | if-feature "fast-reroute"; | |||
container lfa { | container lfa { | |||
if-feature lfa; | if-feature "lfa"; | |||
uses interface-lfa-config; | uses interface-lfa-config; | |||
container level-1 { | container level-1 { | |||
uses interface-lfa-config; | uses interface-lfa-config; | |||
description | description | |||
"LFA level 1 config"; | "LFA level-1 configuration."; | |||
} | } | |||
container level-2 { | container level-2 { | |||
uses interface-lfa-config; | uses interface-lfa-config; | |||
description | description | |||
"LFA level 2 config"; | "LFA level-2 configuration."; | |||
} | } | |||
description | description | |||
"LFA configuration."; | "LFA configuration."; | |||
} | } | |||
description | description | |||
"Interface IP Fast-reroute configuration."; | "Interface IP FRR configuration."; | |||
} | } | |||
} | } | |||
grouping instance-fast-reroute-state { | grouping instance-fast-reroute-state { | |||
description "IPFRR state data grouping"; | description | |||
"IP FRR state data grouping."; | ||||
container protected-routes { | container protected-routes { | |||
config false; | config false; | |||
list address-family-stats { | list address-family-stats { | |||
key "address-family prefix alternate"; | key "address-family prefix alternate"; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description | description | |||
"Address-family"; | "Address family."; | |||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"Protected prefix."; | "Protected prefix."; | |||
} | } | |||
leaf alternate { | leaf alternate { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Alternate next hop for the prefix."; | "Alternate next hop for the prefix."; | |||
} | } | |||
leaf alternate-type { | leaf alternate-type { | |||
type identityref { | type identityref { | |||
base frr-alternate-type; | base frr-alternate-type; | |||
} | } | |||
description | description | |||
"Type of alternate."; | "Type of alternate."; | |||
} | } | |||
leaf best { | leaf best { | |||
type boolean; | type boolean; | |||
description | description | |||
"Is set when the alternate is the preferred one, | "Set when the alternate is the preferred alternate; | |||
is clear otherwise."; | clear otherwise."; | |||
} | } | |||
leaf non-best-reason { | leaf non-best-reason { | |||
type string { | type string { | |||
length "1..255"; | length "1..255"; | |||
} | } | |||
description | description | |||
"Information field to describe why the alternate | "Information field that explains why the alternate | |||
is not best. The length should be limited to 255 | is not the best alternate. The length should be | |||
unicode characters. The expected format is a single | limited to 255 Unicode characters. The expected format | |||
line text."; | is a single line of text."; | |||
} | } | |||
container protection-available { | container protection-available { | |||
leaf-list protection-types { | leaf-list protection-types { | |||
type identityref { | type identityref { | |||
base frr-protection-available-type; | base frr-protection-available-type; | |||
} | } | |||
description "This list contains a set of protection | description | |||
types defined as identities. | "This list contains a set of protection | |||
An identity must be added for each type of | types defined as identities. | |||
protection provided by the alternate. | An identity must be added for each type of | |||
As an example, if an alternate provides | protection provided by the alternate. | |||
SRLG, node and link protection, three | As an example, if an alternate provides | |||
identities must be added in this list: | SRLG, node, and link protection, three | |||
one for SRLG protection, one for node | identities must be added in this list: | |||
protection, one for link protection."; | one for SRLG protection, one for node | |||
protection, and one for link protection."; | ||||
} | } | |||
description "Protection types provided by the alternate."; | description | |||
"Protection types provided by the alternate."; | ||||
} | } | |||
leaf alternate-metric1 { | leaf alternate-metric-1 { | |||
type uint32; | type uint32; | |||
description | description | |||
"Metric from Point of Local Repair (PLR) to | "Metric from the Point of Local Repair (PLR) to the | |||
destination through the alternate path."; | destination through the alternate path."; | |||
} | } | |||
leaf alternate-metric2 { | leaf alternate-metric-2 { | |||
type uint32; | type uint32; | |||
description | description | |||
"Metric from PLR to the alternate node"; | "Metric from the PLR to the alternate node."; | |||
} | } | |||
leaf alternate-metric3 { | leaf alternate-metric-3 { | |||
type uint32; | type uint32; | |||
description | description | |||
"Metric from alternate node to the destination"; | "Metric from the alternate node to the destination."; | |||
} | } | |||
description | description | |||
"Per-AF protected prefix statistics."; | "Per-address-family protected prefix statistics."; | |||
} | } | |||
description | description | |||
"List of prefixes that are protected."; | "List of prefixes that are protected."; | |||
} | } | |||
container unprotected-routes { | container unprotected-routes { | |||
config false; | config false; | |||
list prefixes { | list prefixes { | |||
key "address-family prefix"; | key "address-family prefix"; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description "Address-family"; | description | |||
"Address family."; | ||||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description "Unprotected prefix."; | description | |||
"Unprotected prefix."; | ||||
} | } | |||
description | description | |||
"Per-AF unprotected prefix statistics."; | "Per-address-family unprotected prefix statistics."; | |||
} | } | |||
description | description | |||
"List of prefixes that are not protected."; | "List of prefixes that are not protected."; | |||
} | } | |||
list protection-statistics { | list protection-statistics { | |||
key frr-protection-method; | key "frr-protection-method"; | |||
config false; | config false; | |||
leaf frr-protection-method { | leaf frr-protection-method { | |||
type identityref { | type identityref { | |||
base frr-protection-method; | base frr-protection-method; | |||
} | } | |||
description "Protection method used."; | description | |||
"Protection method used."; | ||||
} | } | |||
list address-family-stats { | list address-family-stats { | |||
key address-family; | key "address-family"; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description | ||||
description "Address-family"; | "Address family."; | |||
} | } | |||
leaf total-routes { | leaf total-routes { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "Total prefixes."; | description | |||
"Total prefixes."; | ||||
} | } | |||
leaf unprotected-routes { | leaf unprotected-routes { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"Total prefixes that are not protected."; | "Total prefixes that are not protected."; | |||
} | } | |||
leaf protected-routes { | leaf protected-routes { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"Total prefixes that are protected."; | "Total prefixes that are protected."; | |||
skipping to change at page 43, line 4 ¶ | skipping to change at line 1978 ¶ | |||
} | } | |||
leaf protected-routes { | leaf protected-routes { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"Total prefixes that are protected."; | "Total prefixes that are protected."; | |||
} | } | |||
leaf link-protected-routes { | leaf link-protected-routes { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"Total prefixes that are link protected."; | "Total prefixes that are link protected."; | |||
} | } | |||
leaf node-protected-routes { | leaf node-protected-routes { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"Total prefixes that are node protected."; | "Total prefixes that are node protected."; | |||
} | } | |||
description | description | |||
"Per-AF protected prefix statistics."; | "Per-address-family protected prefix statistics."; | |||
} | } | |||
description | ||||
description "Global protection statistics."; | "Global protection statistics."; | |||
} | } | |||
} | } | |||
/* Route table and local RIB groupings */ | /* Routing table and local Routing Information Base (RIB) | |||
groupings */ | ||||
grouping local-rib { | grouping local-rib { | |||
description "Local-rib - RIB for Routes computed by the local | description | |||
IS-IS routing instance."; | "Local RIB: RIB for routes computed by the local IS-IS | |||
routing instance."; | ||||
container local-rib { | container local-rib { | |||
config false; | config false; | |||
description "Local-rib."; | description | |||
"Local RIB."; | ||||
list route { | list route { | |||
key "prefix"; | key "prefix"; | |||
description "Routes"; | description | |||
"Routes."; | ||||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description "Destination prefix."; | description | |||
"Destination prefix."; | ||||
} | } | |||
container next-hops { | container next-hops { | |||
description "Next hops for the route."; | description | |||
"Next hops for the route."; | ||||
list next-hop { | list next-hop { | |||
key "next-hop"; | key "next-hop"; | |||
description "List of next hops for the route"; | description | |||
"List of next hops for the route."; | ||||
leaf outgoing-interface { | leaf outgoing-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Name of the outgoing interface."; | "Name of the outgoing interface."; | |||
} | } | |||
leaf next-hop { | leaf next-hop { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Next hop address."; | description | |||
"Next-hop address."; | ||||
} | } | |||
} | } | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint32; | type uint32; | |||
description "Metric for this route."; | description | |||
"Metric for this route."; | ||||
} | } | |||
leaf level { | leaf level { | |||
type level-number; | type level-number; | |||
description "Level number for this route."; | description | |||
"Level number for this route."; | ||||
} | } | |||
leaf route-tag { | leaf route-tag { | |||
type uint32; | type uint32; | |||
description "Route tag for this route."; | description | |||
"Route tag for this route."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping route-content { | grouping route-content { | |||
description | description | |||
"IS-IS protocol-specific route properties grouping."; | "IS-IS protocol-specific route properties grouping."; | |||
leaf metric { | leaf metric { | |||
type uint32; | type uint32; | |||
description "IS-IS metric of a route."; | description | |||
"IS-IS metric of a route."; | ||||
} | } | |||
leaf-list tag { | leaf-list tag { | |||
type uint64; | type uint64; | |||
description | description | |||
"List of tags associated with the route. | "List of tags associated with the route. This list | |||
This list provides a consolidated view of both | provides a consolidated view of both 32-bit and 64-bit | |||
32-bit and 64-bit tags (RFC5130) available for the prefix."; | tags (RFC 5130) available for the prefix."; | |||
reference | ||||
"RFC 5130: A Policy Control Mechanism in IS-IS Using | ||||
Administrative Tags"; | ||||
} | } | |||
leaf route-type { | leaf route-type { | |||
type enumeration { | type enumeration { | |||
enum l2-intra-area { | enum l2-intra-area { | |||
description "Level 2 internal route. As per RFC5302, | description | |||
the prefix is directly connected to the | "Level-2 internal route. As per RFC 5302, | |||
advertising router. It cannot be | the prefix is directly connected to the | |||
distinguished from an L1->L2 inter-area | advertising router. It cannot be | |||
route."; | distinguished from an L1->L2 inter-area | |||
route."; | ||||
reference | ||||
"RFC 5302: Domain-Wide Prefix Distribution with | ||||
Two-Level IS-IS"; | ||||
} | } | |||
enum l1-intra-area { | enum l1-intra-area { | |||
description "Level 1 internal route. As per RFC5302, | description | |||
the prefix is directly connected to the | "Level-1 internal route. As per RFC 5302, | |||
advertising router."; | the prefix is directly connected to the | |||
advertising router."; | ||||
} | } | |||
enum l2-external { | enum l2-external { | |||
description "Level 2 external route. As per RFC5302, | description | |||
such a route is learned from other IGPs. | "Level-2 external route. As per RFC 5302, | |||
It cannot be distinguished from an L1->L2 | such a route is learned from other IGPs. | |||
inter-area external route."; | It cannot be distinguished from an L1->L2 | |||
inter-area external route."; | ||||
} | } | |||
enum l1-external { | enum l1-external { | |||
description "Level 1 external route. As per RFC5302, | description | |||
such a route is learned from other IGPs."; | "Level-1 external route. As per RFC 5302, | |||
such a route is learned from other IGPs."; | ||||
} | } | |||
enum l1-inter-area { | enum l1-inter-area { | |||
description "These prefixes are learned via L2 routing."; | description | |||
"These prefixes are learned via L2 routing."; | ||||
} | } | |||
enum l1-inter-area-external { | enum l1-inter-area-external { | |||
description "These prefixes are learned via L2 routing | description | |||
towards an l2-external route."; | "These prefixes are learned via L2 routing | |||
towards a level-2 external route."; | ||||
} | } | |||
} | } | |||
description "IS-IS route type."; | description | |||
"IS-IS route type."; | ||||
} | } | |||
} | } | |||
/* Grouping definitions for configuration and ops state */ | /* Grouping definitions for configuration and operational states */ | |||
grouping adjacency-state { | grouping adjacency-state { | |||
container adjacencies { | container adjacencies { | |||
config false; | config false; | |||
list adjacency { | list adjacency { | |||
leaf neighbor-sys-type { | leaf neighbor-sys-type { | |||
type level; | type level; | |||
description | description | |||
"Level capability of neighboring system"; | "Level capability of the neighboring system."; | |||
} | } | |||
leaf neighbor-sysid { | leaf neighbor-sysid { | |||
type system-id; | type system-id; | |||
description | description | |||
"The system-id of the neighbor"; | "The system ID of the neighbor."; | |||
} | } | |||
leaf neighbor-extended-circuit-id { | leaf neighbor-extended-circuit-id { | |||
type extended-circuit-id; | type extended-circuit-id; | |||
description | description | |||
"Circuit ID of the neighbor"; | "The circuit ID of the neighbor."; | |||
} | } | |||
leaf neighbor-snpa { | leaf neighbor-snpa { | |||
type snpa; | type snpa; | |||
description | description | |||
"SNPA of the neighbor"; | "The SNPA of the neighbor."; | |||
} | } | |||
leaf usage { | leaf usage { | |||
type level; | type level; | |||
description | description | |||
"Define the level(s) activated for the adjacency. | "Defines the level(s) activated for the adjacency. | |||
On a p2p link this might be level 1 and 2, | On a point-to-point link, this might be level 1 and | |||
but on a LAN, the usage will be level 1 | level 2, but on a LAN, the usage will be level 1 | |||
between neighbors at level 1 or level 2 between | between neighbors at level 1 or level 2 between | |||
neighbors at level 2."; | neighbors at level 2."; | |||
} | } | |||
leaf hold-timer { | leaf hold-timer { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"The holding time in seconds for this | "The holding time (in seconds) for this adjacency. | |||
adjacency. This value is based on | This value is based on received Hello PDUs and the | |||
received hello PDUs and the elapsed | elapsed time since receipt."; | |||
time since receipt."; | ||||
} | } | |||
leaf neighbor-priority { | leaf neighbor-priority { | |||
type uint8 { | type uint8 { | |||
range "0 .. 127"; | range "0 .. 127"; | |||
} | } | |||
description | description | |||
"Priority of the neighboring IS for becoming | "Priority of the neighboring IS for becoming the | |||
the DIS."; | Designated Intermediate System (DIS)."; | |||
} | } | |||
leaf lastuptime { | leaf lastuptime { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"When the adjacency most recently entered | "When the adjacency most recently entered the | |||
state 'up', measured in hundredths of a | 'up' state, measured in hundredths of a | |||
second since the last reinitialization of | second since the last reinitialization of | |||
the network management subsystem. | the network management subsystem. | |||
The value is 0 if the adjacency has never | The value is 0 if the adjacency has never | |||
been in state 'up'."; | been in the 'up' state."; | |||
} | } | |||
leaf state { | leaf state { | |||
type adj-state-type; | type adj-state-type; | |||
description | description | |||
"This leaf describes the state of the interface."; | "This leaf describes the state of the interface."; | |||
} | } | |||
description | description | |||
"List of operational adjacencies."; | "List of operational adjacencies."; | |||
} | } | |||
description | description | |||
"This container lists the adjacencies of | "This container lists the adjacencies of | |||
the local node."; | the local node."; | |||
} | } | |||
description | description | |||
"Adjacency state"; | "Adjacency state."; | |||
} | } | |||
grouping admin-control { | grouping admin-control { | |||
leaf enable { | leaf enabled { | |||
if-feature admin-control; | if-feature "admin-control"; | |||
type boolean; | type boolean; | |||
default "true"; | default "true"; | |||
description | description | |||
"Enable/Disable the protocol."; | "Enables or disables the protocol."; | |||
} | } | |||
description | description | |||
"Grouping for admin control."; | "Grouping for administrative control."; | |||
} | } | |||
grouping ietf-spf-delay { | grouping ietf-spf-delay { | |||
leaf initial-delay { | leaf initial-delay { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
units msec; | units "msec"; | |||
default "50"; | ||||
description | description | |||
"Delay used while in QUIET state (milliseconds)."; | "Delay used while in the QUIET state (milliseconds)."; | |||
} | } | |||
leaf short-delay { | leaf short-delay { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
units msec; | units "msec"; | |||
default "200"; | ||||
description | description | |||
"Delay used while in SHORT_WAIT state (milliseconds)."; | "Delay used while in the SHORT_WAIT state (milliseconds)."; | |||
} | } | |||
leaf long-delay { | leaf long-delay { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
units msec; | units "msec"; | |||
default "5000"; | ||||
description | description | |||
"Delay used while in LONG_WAIT state (milliseconds)."; | "Delay used while in the LONG_WAIT state (milliseconds)."; | |||
} | } | |||
leaf hold-down { | leaf hold-down { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
units msec; | units "msec"; | |||
default "10000"; | ||||
description | description | |||
"Timer used to consider an IGP stability period | "This timer value defines the period without any changes | |||
(milliseconds)."; | for the IGP to be considered stable (in milliseconds)."; | |||
} | } | |||
leaf time-to-learn { | leaf time-to-learn { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
units msec; | units "msec"; | |||
default "500"; | ||||
description | description | |||
"Duration used to learn all the IGP events | "Duration used to learn all the IGP events | |||
related to a single component failure (milliseconds)."; | related to a single network event (milliseconds)."; | |||
} | } | |||
leaf current-state { | leaf current-state { | |||
type enumeration { | type enumeration { | |||
enum "quiet" { | enum quiet { | |||
description "QUIET state"; | description | |||
"QUIET state."; | ||||
} | } | |||
enum "short-wait" { | enum short-wait { | |||
description "SHORT_WAIT state"; | description | |||
"SHORT_WAIT state."; | ||||
} | } | |||
enum "long-wait" { | enum long-wait { | |||
description "LONG_WAIT state"; | description | |||
"LONG_WAIT state."; | ||||
} | } | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"Current SPF back-off algorithm state."; | "Current SPF Back-Off algorithm state."; | |||
} | } | |||
leaf remaining-time-to-learn { | leaf remaining-time-to-learn { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
units "msec"; | units "msec"; | |||
config false; | config false; | |||
description | description | |||
"Remaining time until time-to-learn timer fires."; | "Remaining time until the time-to-learn timer fires."; | |||
} | } | |||
leaf remaining-hold-down { | leaf remaining-hold-down { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
units "msec"; | units "msec"; | |||
config false; | config false; | |||
description | description | |||
"Remaining time until hold-down timer fires."; | "Remaining time until the hold-down timer fires."; | |||
} | } | |||
leaf last-event-received { | leaf last-event-received { | |||
type yang:timestamp; | type yang:timestamp; | |||
config false; | config false; | |||
description | description | |||
"Time of last IGP event received"; | "Time of the last IGP event received."; | |||
} | } | |||
leaf next-spf-time { | leaf next-spf-time { | |||
type yang:timestamp; | type yang:timestamp; | |||
config false; | config false; | |||
description | description | |||
"Time when next SPF has been scheduled."; | "Time when the next SPF has been scheduled."; | |||
} | } | |||
leaf last-spf-time { | leaf last-spf-time { | |||
type yang:timestamp; | type yang:timestamp; | |||
config false; | config false; | |||
description | description | |||
"Time of last SPF computation."; | "Time of the last SPF computation."; | |||
} | } | |||
description | description | |||
"Grouping for IETF SPF delay configuration and state."; | "Grouping for IETF SPF delay configuration and state."; | |||
reference | ||||
"RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm | ||||
for Link-State IGPs"; | ||||
} | } | |||
grouping node-tag-config { | grouping node-tag-config { | |||
description | description | |||
"IS-IS node tag config state."; | "IS-IS node tag configuration state."; | |||
container node-tags { | container node-tags { | |||
if-feature node-tag; | if-feature "node-tag"; | |||
list node-tag { | list node-tag { | |||
key tag; | key "tag"; | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Node tag value."; | "Node tag value."; | |||
} | } | |||
description | description | |||
"List of tags."; | "List of tags."; | |||
} | } | |||
description | description | |||
"Container for node admin tags."; | "Container for node administrative tags."; | |||
} | } | |||
} | } | |||
grouping authentication-global-cfg { | grouping authentication-global-cfg { | |||
choice authentication-type { | choice authentication-type { | |||
case key-chain { | case key-chain { | |||
if-feature key-chain; | if-feature "key-chain"; | |||
leaf key-chain { | leaf key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description | description | |||
"Reference to a key-chain."; | "Reference to a key chain."; | |||
} | } | |||
} | } | |||
case password { | case password { | |||
leaf key { | leaf key { | |||
type string; | type string; | |||
description | description | |||
"This leaf specifies the authentication key. The | "This leaf specifies the authentication key. The | |||
length of the key may be dependent on the | length of the key may be dependent on the | |||
cryptographic algorithm."; | cryptographic algorithm."; | |||
} | } | |||
leaf crypto-algorithm { | leaf crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with key."; | "Cryptographic algorithm associated with a key."; | |||
} | } | |||
} | } | |||
description "Choice of authentication."; | description | |||
"Choice of authentication."; | ||||
} | } | |||
description "Grouping for global authentication config."; | description | |||
"Grouping for global authentication configuration."; | ||||
} | } | |||
grouping metric-type-global-cfg { | grouping metric-type-global-cfg { | |||
leaf value { | leaf value { | |||
type enumeration { | type enumeration { | |||
enum wide-only { | enum wide-only { | |||
description | description | |||
"Advertise new metric style only (RFC5305)"; | "Advertises the new metric style only (RFC 5305)."; | |||
reference | ||||
"RFC 5305: IS-IS Extensions for Traffic Engineering"; | ||||
} | } | |||
enum old-only { | enum old-only { | |||
description | description | |||
"Advertise old metric style only (RFC1195)"; | "Advertises the old metric style only (RFC 1195)."; | |||
reference | ||||
"RFC 1195: Use of OSI IS-IS for routing in TCP/IP and | ||||
dual environments"; | ||||
} | } | |||
enum both { | enum both { | |||
description "Advertise both metric styles"; | description | |||
"Advertises both metric styles."; | ||||
} | } | |||
} | } | |||
description | description | |||
"Type of metric to be generated: | "Type of metric to be generated: | |||
- wide-only means only new metric style | ||||
is generated, | - 'wide-only' means that only a new metric style | |||
- old-only means that only old-style metric | is generated. | |||
is generated, | - 'old-only' means that only an old metric style | |||
- both means that both are advertised. | is generated. | |||
This leaf is only affecting IPv4 metrics."; | - 'both' means that both are advertised. | |||
This leaf only affects IPv4 metrics."; | ||||
} | } | |||
description | description | |||
"Grouping for global metric style config."; | "Grouping for global metric style configuration."; | |||
} | } | |||
grouping metric-type-global-cfg-with-default { | grouping metric-type-global-cfg-with-default { | |||
leaf value { | leaf value { | |||
type enumeration { | type enumeration { | |||
enum wide-only { | enum wide-only { | |||
description | description | |||
"Advertise new metric style only (RFC5305)"; | "Advertises the new metric style only (RFC 5305)."; | |||
reference | ||||
"RFC 5305: IS-IS Extensions for Traffic Engineering"; | ||||
} | } | |||
enum old-only { | enum old-only { | |||
description | description | |||
"Advertise old metric style only (RFC1195)"; | "Advertises the old metric style only (RFC 1195)."; | |||
reference | ||||
"RFC 1195: Use of OSI IS-IS for routing in TCP/IP and | ||||
dual environments"; | ||||
} | } | |||
enum both { | enum both { | |||
description "Advertise both metric styles"; | description | |||
"Advertises both metric styles."; | ||||
} | } | |||
} | } | |||
default wide-only; | default "wide-only"; | |||
description | description | |||
"Type of metric to be generated: | "Type of metric to be generated: | |||
- wide-only means only new metric style | ||||
is generated, | - 'wide-only' means that only a new metric style | |||
- old-only means that only old-style metric | is generated. | |||
is generated, | - 'old-only' means that only an old metric style | |||
- both means that both are advertised. | is generated. | |||
This leaf is only affecting IPv4 metrics."; | - 'both' means that both are advertised. | |||
This leaf only affects IPv4 metrics."; | ||||
} | } | |||
description | description | |||
"Grouping for global metric style config."; | "Grouping for global metric style configuration."; | |||
} | } | |||
grouping default-metric-global-cfg { | grouping default-metric-global-cfg { | |||
leaf value { | leaf value { | |||
type wide-metric; | type wide-metric; | |||
description "Value of the metric"; | description | |||
"Value of the metric."; | ||||
} | } | |||
description | description | |||
"Global default metric config grouping."; | "Global default metric configuration grouping."; | |||
} | } | |||
grouping default-metric-global-cfg-with-default { | grouping default-metric-global-cfg-with-default { | |||
leaf value { | leaf value { | |||
type wide-metric; | type wide-metric; | |||
default "10"; | default "10"; | |||
description "Value of the metric"; | description | |||
"Value of the metric."; | ||||
} | } | |||
description | description | |||
"Global default metric config grouping."; | "Global default metric configuration grouping."; | |||
} | } | |||
grouping overload-global-cfg { | grouping overload-global-cfg { | |||
leaf status { | leaf status { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"This leaf specifies the overload status."; | "This leaf specifies the overload status."; | |||
} | } | |||
description "Grouping for overload bit config."; | description | |||
"Grouping for overload bit configuration."; | ||||
} | } | |||
grouping overload-max-metric-global-cfg { | grouping overload-max-metric-global-cfg { | |||
leaf timeout { | leaf timeout { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"Timeout (in seconds) of the overload condition."; | "Timeout (in seconds) of the overload condition."; | |||
} | } | |||
description | description | |||
"Overload maximum metric configuration grouping"; | "Overload maximum metric configuration grouping."; | |||
} | } | |||
grouping route-preference-global-cfg { | grouping route-preference-global-cfg { | |||
choice granularity { | choice granularity { | |||
case detail { | case detail { | |||
leaf internal { | leaf internal { | |||
type uint8; | type uint8; | |||
description | description | |||
"Protocol preference for internal routes."; | "Protocol preference for internal routes."; | |||
} | } | |||
skipping to change at page 52, line 37 ¶ | skipping to change at line 2493 ¶ | |||
leaf default { | leaf default { | |||
type uint8; | type uint8; | |||
description | description | |||
"Protocol preference for all IS-IS routes."; | "Protocol preference for all IS-IS routes."; | |||
} | } | |||
} | } | |||
description | description | |||
"Choice for implementation of route preference."; | "Choice for implementation of route preference."; | |||
} | } | |||
description | description | |||
"Global route preference grouping"; | "Global route preference grouping."; | |||
} | } | |||
grouping hello-authentication-cfg { | grouping hello-authentication-cfg { | |||
choice authentication-type { | choice authentication-type { | |||
case key-chain { | case key-chain { | |||
if-feature key-chain; | if-feature "key-chain"; | |||
leaf key-chain { | leaf key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description "Reference to a key-chain."; | description | |||
"Reference to a key chain."; | ||||
} | } | |||
} | } | |||
case password { | case password { | |||
leaf key { | leaf key { | |||
type string; | type string; | |||
description "Authentication key specification - The | description | |||
length of the key may be dependent on the | "Authentication key specification. The length of the | |||
cryptographic algorithm."; | key may be dependent on the cryptographic algorithm."; | |||
} | } | |||
leaf crypto-algorithm { | leaf crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with key."; | "Cryptographic algorithm associated with a key."; | |||
} | } | |||
} | } | |||
description "Choice of authentication."; | description | |||
"Choice of authentication."; | ||||
} | } | |||
description "Grouping for hello authentication."; | description | |||
"Grouping for Hello authentication."; | ||||
} | } | |||
grouping hello-interval-cfg { | grouping hello-interval-cfg { | |||
leaf value { | leaf value { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"Interval (in seconds) between successive hello | "Interval (in seconds) between successive Hello | |||
messages."; | messages."; | |||
} | } | |||
description | ||||
description "Interval between hello messages."; | "Interval between Hello messages."; | |||
} | } | |||
grouping hello-interval-cfg-with-default { | grouping hello-interval-cfg-with-default { | |||
leaf value { | leaf value { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
units "seconds"; | units "seconds"; | |||
default 10; | default "10"; | |||
description | description | |||
"Interval (in seconds) between successive hello | "Interval (in seconds) between successive Hello | |||
messages."; | messages."; | |||
} | } | |||
description | ||||
description "Interval between hello messages."; | "Interval between Hello messages."; | |||
} | } | |||
grouping hello-multiplier-cfg { | grouping hello-multiplier-cfg { | |||
leaf value { | leaf value { | |||
type uint16; | type uint16; | |||
description | description | |||
"Number of missed hello messages prior to | "Number of missed Hello messages prior to | |||
declaring the adjacency down."; | declaring the adjacency down."; | |||
} | } | |||
description | description | |||
"Number of missed hello messages prior to | "Grouping for the number of missed Hello messages prior to | |||
adjacency down grouping."; | declaring the adjacency down."; | |||
} | } | |||
grouping hello-multiplier-cfg-with-default { | grouping hello-multiplier-cfg-with-default { | |||
leaf value { | leaf value { | |||
type uint16; | type uint16; | |||
default 3; | default "3"; | |||
description | description | |||
"Number of missed hello messages prior to | "Number of missed Hello messages prior to | |||
declaring the adjacency down."; | declaring the adjacency down."; | |||
} | } | |||
description | description | |||
"Number of missed hello messages prior to | "Grouping for the number of missed Hello messages prior to | |||
adjacency down grouping."; | declaring the adjacency down."; | |||
} | } | |||
grouping priority-cfg { | grouping priority-cfg { | |||
leaf value { | leaf value { | |||
type uint8 { | type uint8 { | |||
range "0 .. 127"; | range "0 .. 127"; | |||
} | } | |||
description | description | |||
"Priority of interface for DIS election."; | "Priority of the interface for DIS election."; | |||
} | } | |||
description | ||||
description "Interface DIS election priority grouping"; | "Interface DIS election priority grouping."; | |||
} | } | |||
grouping priority-cfg-with-default { | grouping priority-cfg-with-default { | |||
leaf value { | leaf value { | |||
type uint8 { | type uint8 { | |||
range "0 .. 127"; | range "0 .. 127"; | |||
} | } | |||
default 64; | default "64"; | |||
description | description | |||
"Priority of interface for DIS election."; | "Priority of the interface for DIS election."; | |||
} | } | |||
description | ||||
description "Interface DIS election priority grouping"; | "Interface DIS election priority grouping."; | |||
} | } | |||
grouping metric-cfg { | grouping metric-cfg { | |||
leaf value { | leaf value { | |||
type wide-metric; | type wide-metric; | |||
description "Metric value."; | description | |||
"Metric value."; | ||||
} | } | |||
description "Interface metric grouping"; | description | |||
"Interface metric grouping."; | ||||
} | } | |||
grouping metric-cfg-with-default { | grouping metric-cfg-with-default { | |||
leaf value { | leaf value { | |||
type wide-metric; | type wide-metric; | |||
default "10"; | default "10"; | |||
description "Metric value."; | description | |||
"Metric value."; | ||||
} | } | |||
description "Interface metric grouping"; | description | |||
"Interface metric grouping."; | ||||
} | } | |||
grouping metric-parameters { | grouping metric-parameters { | |||
container metric-type { | container metric-type { | |||
uses metric-type-global-cfg-with-default; | uses metric-type-global-cfg-with-default; | |||
container level-1 { | container level-1 { | |||
uses metric-type-global-cfg; | uses metric-type-global-cfg; | |||
description "level-1 specific configuration"; | description | |||
"Configuration specific to level 1."; | ||||
} | } | |||
container level-2 { | container level-2 { | |||
uses metric-type-global-cfg; | uses metric-type-global-cfg; | |||
description "level-2 specific configuration"; | description | |||
"Configuration specific to level 2."; | ||||
} | } | |||
description "Metric style global configuration"; | description | |||
"Metric style global configuration."; | ||||
} | } | |||
container default-metric { | container default-metric { | |||
uses default-metric-global-cfg-with-default; | uses default-metric-global-cfg-with-default; | |||
container level-1 { | container level-1 { | |||
uses default-metric-global-cfg; | uses default-metric-global-cfg; | |||
description "level-1 specific configuration"; | description | |||
"Configuration specific to level 1."; | ||||
} | } | |||
container level-2 { | container level-2 { | |||
uses default-metric-global-cfg; | uses default-metric-global-cfg; | |||
description "level-2 specific configuration"; | description | |||
"Configuration specific to level 2."; | ||||
} | } | |||
description "Default metric global configuration"; | description | |||
"Default metric global configuration."; | ||||
} | } | |||
container auto-cost { | container auto-cost { | |||
if-feature auto-cost; | if-feature "auto-cost"; | |||
description | description | |||
"Interface Auto-cost configuration state."; | "Interface auto-cost configuration state."; | |||
leaf enable { | leaf enabled { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable interface auto-cost."; | "Enables or disables interface auto-cost."; | |||
} | } | |||
leaf reference-bandwidth { | leaf reference-bandwidth { | |||
when "../enable = 'true'" { | when "../enabled = 'true'" { | |||
description "Only when auto cost is enabled"; | description | |||
"Only when auto-cost is enabled."; | ||||
} | } | |||
type uint32 { | type uint32 { | |||
range "1..4294967"; | range "1..4294967"; | |||
} | } | |||
units Mbits; | units "Mbits"; | |||
description | description | |||
"Configure reference bandwidth used to automatically | "Configures the reference bandwidth used to automatically | |||
determine interface cost (Mbits). The cost is the | determine the interface cost (Mbits). The cost is the | |||
reference bandwidth divided by the interface speed | reference bandwidth divided by the interface speed, | |||
with 1 being the minimum cost."; | with 1 being the minimum cost."; | |||
} | } | |||
} | } | |||
description | ||||
description "Grouping for global metric parameters."; | "Grouping for global metric parameters."; | |||
} | } | |||
grouping high-availability-parameters { | grouping high-availability-parameters { | |||
container graceful-restart { | container graceful-restart { | |||
if-feature graceful-restart; | if-feature "graceful-restart"; | |||
leaf enable { | leaf enabled { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description "Enable graceful restart."; | description | |||
"Enables graceful restart."; | ||||
} | } | |||
leaf restart-interval { | leaf restart-interval { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"Interval (in seconds) to attempt graceful restart prior | "Interval (in seconds) to attempt graceful restart prior | |||
to failure."; | to failure."; | |||
} | } | |||
leaf helper-enable { | leaf helper-enabled { | |||
type boolean; | type boolean; | |||
default "true"; | default "true"; | |||
description | description | |||
"Enable local IS-IS router as graceful restart helper."; | "Enables a local IS-IS router as a graceful restart | |||
helper."; | ||||
} | } | |||
description "Graceful-Restart Configuration."; | description | |||
"Configuration of graceful restart."; | ||||
} | } | |||
container nsr { | container nsr { | |||
if-feature nsr; | if-feature "nsr"; | |||
description "Non-Stop Routing (NSR) configuration."; | description | |||
leaf enable { | "Non-Stop Routing (NSR) configuration."; | |||
leaf enabled { | ||||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description "Enable/Disable Non-Stop Routing (NSR)."; | description | |||
"Enables or disables NSR."; | ||||
} | } | |||
} | } | |||
description "Grouping for High Availability parameters."; | description | |||
"Grouping for high-availability parameters."; | ||||
} | } | |||
grouping authentication-parameters { | grouping authentication-parameters { | |||
container authentication { | container authentication { | |||
uses authentication-global-cfg; | uses authentication-global-cfg; | |||
container level-1 { | container level-1 { | |||
uses authentication-global-cfg; | uses authentication-global-cfg; | |||
description "level-1 specific configuration"; | description | |||
"Configuration specific to level 1."; | ||||
} | } | |||
container level-2 { | container level-2 { | |||
uses authentication-global-cfg; | uses authentication-global-cfg; | |||
description "level-2 specific configuration"; | description | |||
"Configuration specific to level 2."; | ||||
} | } | |||
description "Authentication global configuration for | description | |||
both LSPs and SNPs."; | "Authentication global configuration for | |||
both LSPs and Sequence Number PDUs (SNPs)."; | ||||
} | } | |||
description "Grouping for authentication parameters"; | description | |||
"Grouping for authentication parameters."; | ||||
} | } | |||
grouping address-family-parameters { | grouping address-family-parameters { | |||
container address-families { | container address-families { | |||
if-feature nlpid-control; | if-feature "nlpid-control"; | |||
list address-family-list { | list address-family-list { | |||
key address-family; | key "address-family"; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description "Address-family"; | description | |||
"Address family."; | ||||
} | } | |||
leaf enable { | leaf enabled { | |||
type boolean; | type boolean; | |||
description "Activate the address family."; | description | |||
"Activates the address family."; | ||||
} | } | |||
description | description | |||
"List of address families and whether or not they | "List of address families and whether or not they | |||
are activated."; | are activated."; | |||
} | } | |||
description "Address Family configuration"; | description | |||
"Address family configuration."; | ||||
} | } | |||
description "Grouping for address family parameters."; | description | |||
"Grouping for address family parameters."; | ||||
} | } | |||
grouping mpls-parameters { | grouping mpls-parameters { | |||
container mpls { | container mpls { | |||
container te-rid { | container te-rid { | |||
if-feature te-rid; | if-feature "te-rid"; | |||
description | description | |||
"Stable ISIS Router IP Address used for Traffic | "Stable IS-IS router IP address used for Traffic | |||
Engineering"; | Engineering."; | |||
leaf ipv4-router-id { | leaf ipv4-router-id { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Router ID value that would be used in TLV 134."; | "Router ID value that would be used in TLV 134."; | |||
} | } | |||
leaf ipv6-router-id { | leaf ipv6-router-id { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"Router ID value that would be used in TLV 140."; | "Router ID value that would be used in TLV 140."; | |||
} | } | |||
} | } | |||
container ldp { | container ldp { | |||
container igp-sync { | container igp-sync { | |||
if-feature ldp-igp-sync; | if-feature "ldp-igp-sync"; | |||
description | description | |||
"This container may be augmented with global | "This container may be augmented with global | |||
parameters for igp-ldp-sync."; | parameters for LDP IGP synchronization."; | |||
} | } | |||
description "LDP configuration."; | description | |||
"LDP configuration."; | ||||
} | } | |||
description "MPLS configuration"; | description | |||
"MPLS configuration."; | ||||
} | } | |||
description "Grouping for MPLS global parameters."; | description | |||
"Grouping for MPLS global parameters."; | ||||
} | } | |||
grouping lsp-parameters { | grouping lsp-parameters { | |||
leaf lsp-mtu { | leaf lsp-mtu { | |||
type uint16; | type uint16; | |||
units "bytes"; | units "bytes"; | |||
default 1492; | default "1492"; | |||
description | description | |||
"Maximum size of an LSP PDU in bytes."; | "Maximum size of an LSP PDU in bytes."; | |||
} | } | |||
leaf lsp-lifetime { | leaf lsp-lifetime { | |||
type uint16 { | type uint16 { | |||
range "1..65535"; | range "1..65535"; | |||
} | } | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"Lifetime of the router's LSPs in seconds."; | "Lifetime of the router's LSPs in seconds."; | |||
} | } | |||
leaf lsp-refresh { | leaf lsp-refresh { | |||
if-feature lsp-refresh; | if-feature "lsp-refresh"; | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"Refresh interval of the router's LSPs in seconds."; | "Refresh interval of the router's LSPs in seconds."; | |||
} | } | |||
leaf poi-tlv { | leaf poi-tlv { | |||
if-feature poi-tlv; | if-feature "poi-tlv"; | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Enable advertisement of IS-IS Purge Originator | "Enables the advertisement of the IS-IS Purge Originator | |||
Identification TLV."; | Identification TLV."; | |||
} | } | |||
description "Grouping for LSP global parameters."; | description | |||
"Grouping for LSP global parameters."; | ||||
} | } | |||
grouping spf-parameters { | grouping spf-parameters { | |||
container spf-control { | container spf-control { | |||
leaf paths { | leaf paths { | |||
if-feature max-ecmp; | if-feature "max-ecmp"; | |||
type uint16 { | type uint16 { | |||
range "1..65535"; | range "1..65535"; | |||
} | ||||
description | ||||
"Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | ||||
} | ||||
container ietf-spf-delay { | ||||
if-feature ietf-spf-delay; | ||||
uses ietf-spf-delay; | ||||
description "IETF SPF delay algorithm configuration."; | ||||
} | } | |||
description | description | |||
"SPF calculation control."; | "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | |||
} | ||||
container ietf-spf-delay { | ||||
if-feature "ietf-spf-delay"; | ||||
uses ietf-spf-delay; | ||||
description | ||||
"IETF SPF delay algorithm configuration."; | ||||
} | ||||
description | ||||
"SPF calculation control."; | ||||
} | } | |||
description "Grouping for SPF global parameters."; | description | |||
"Grouping for SPF global parameters."; | ||||
} | } | |||
grouping instance-config { | ||||
description "IS-IS global configuration grouping"; | ||||
grouping instance-config { | ||||
description | ||||
"IS-IS global configuration grouping."; | ||||
uses admin-control; | uses admin-control; | |||
leaf level-type { | leaf level-type { | |||
type level; | type level; | |||
default "level-all"; | default "level-all"; | |||
description | description | |||
"Level of an IS-IS node - can be level-1, | "Level of an IS-IS node. Can be 'level-1', 'level-2', or | |||
level-2 or level-all."; | 'level-all'."; | |||
} | } | |||
leaf system-id { | leaf system-id { | |||
type system-id; | type system-id; | |||
description "system-id of the node."; | description | |||
"System ID of the node."; | ||||
} | } | |||
leaf maximum-area-addresses { | leaf maximum-area-addresses { | |||
if-feature maximum-area-addresses; | if-feature "maximum-area-addresses"; | |||
type uint8; | type uint8; | |||
default 3; | default "3"; | |||
description "Maximum areas supported."; | description | |||
"Maximum areas supported."; | ||||
} | } | |||
leaf-list area-address { | leaf-list area-address { | |||
type area-address; | type area-address; | |||
description | description | |||
"List of areas supported by the protocol instance."; | "List of areas supported by the protocol instance."; | |||
} | } | |||
uses lsp-parameters; | uses lsp-parameters; | |||
uses high-availability-parameters; | uses high-availability-parameters; | |||
uses node-tag-config; | uses node-tag-config; | |||
uses metric-parameters; | uses metric-parameters; | |||
uses authentication-parameters; | uses authentication-parameters; | |||
uses address-family-parameters; | uses address-family-parameters; | |||
uses mpls-parameters; | uses mpls-parameters; | |||
uses spf-parameters; | uses spf-parameters; | |||
uses instance-fast-reroute-config; | uses instance-fast-reroute-config; | |||
container preference { | container preference { | |||
uses route-preference-global-cfg; | uses route-preference-global-cfg; | |||
description "Router preference configuration for IS-IS | description | |||
protocol instance route installation"; | "Router preference configuration for IS-IS | |||
protocol instance route installation."; | ||||
} | } | |||
container overload { | container overload { | |||
uses overload-global-cfg; | uses overload-global-cfg; | |||
description "Router protocol instance overload state | description | |||
configuration"; | "Router protocol instance overload state configuration."; | |||
} | } | |||
container overload-max-metric { | container overload-max-metric { | |||
if-feature overload-max-metric; | if-feature "overload-max-metric"; | |||
uses overload-max-metric-global-cfg; | uses overload-max-metric-global-cfg; | |||
description | description | |||
"Router protocol instance overload maximum | "Router protocol instance overload maximum | |||
metric advertisement configuration."; | metric advertisement configuration."; | |||
} | } | |||
} | } | |||
grouping instance-state { | grouping instance-state { | |||
description | description | |||
"IS-IS instance operational state."; | "IS-IS instance operational state."; | |||
skipping to change at page 61, line 16 ¶ | skipping to change at line 2938 ¶ | |||
uses lsdb; | uses lsdb; | |||
uses local-rib; | uses local-rib; | |||
uses system-counters; | uses system-counters; | |||
uses instance-fast-reroute-state; | uses instance-fast-reroute-state; | |||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time of the most recent occasion at which any one | "The time of the most recent occasion at which any one | |||
or more of this IS-IS instance's counters suffered a | or more of this IS-IS instance's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the IS-IS instance was last re-initialized, then | since the IS-IS instance was last reinitialized, then | |||
this node contains the time the IS-IS instance was | this node contains the time the IS-IS instance was | |||
re-initialized which normally occurs when it was | reinitialized, which normally occurs when it was | |||
created."; | created."; | |||
} | } | |||
} | } | |||
grouping multi-topology-config { | grouping multi-topology-config { | |||
description "Per-topology configuration"; | description | |||
"Per-topology configuration."; | ||||
container default-metric { | container default-metric { | |||
uses default-metric-global-cfg; | uses default-metric-global-cfg; | |||
container level-1 { | container level-1 { | |||
uses default-metric-global-cfg; | uses default-metric-global-cfg; | |||
description "level-1 specific configuration"; | description | |||
"Configuration specific to level 1."; | ||||
} | } | |||
container level-2 { | container level-2 { | |||
uses default-metric-global-cfg; | uses default-metric-global-cfg; | |||
description "level-2 specific configuration"; | description | |||
"Configuration specific to level 2."; | ||||
} | } | |||
description "Default metric per-topology configuration"; | description | |||
"Default metric per-topology configuration."; | ||||
} | } | |||
uses node-tag-config; | uses node-tag-config; | |||
} | } | |||
grouping interface-config { | grouping interface-config { | |||
description "Interface configuration grouping"; | description | |||
"Interface configuration grouping."; | ||||
uses admin-control; | uses admin-control; | |||
leaf level-type { | leaf level-type { | |||
type level; | type level; | |||
default "level-all"; | default "level-all"; | |||
description "IS-IS level of the interface."; | description | |||
"IS-IS level of the interface."; | ||||
} | } | |||
leaf lsp-pacing-interval { | leaf lsp-pacing-interval { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
units "milliseconds"; | units "milliseconds"; | |||
default 33; | default "33"; | |||
description | description | |||
"Interval (in milli-seconds) between LSP | "Interval (in milliseconds) between LSP transmissions."; | |||
transmissions."; | ||||
} | } | |||
leaf lsp-retransmit-interval { | leaf lsp-retransmit-interval { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"Interval (in seconds) between LSP | "Interval (in seconds) between LSP retransmissions."; | |||
retransmissions."; | ||||
} | } | |||
leaf passive { | leaf passive { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Indicates whether the interface is in passive mode (IS-IS | "Indicates whether the interface is in passive mode (IS-IS | |||
not running but network is advertised)."; | is not running, but the network is advertised)."; | |||
} | } | |||
leaf csnp-interval { | leaf csnp-interval { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
units "seconds"; | units "seconds"; | |||
default 10; | default "10"; | |||
description | description | |||
"Interval (in seconds) between CSNP messages."; | "Interval (in seconds) between Complete Sequence Number | |||
Packet (CSNP) messages."; | ||||
} | } | |||
container hello-padding { | container hello-padding { | |||
leaf enable { | leaf enabled { | |||
type boolean; | type boolean; | |||
default "true"; | default "true"; | |||
description | description | |||
"IS-IS Hello-padding activation - enabled by default."; | "IS-IS Hello padding activation. Enabled by default."; | |||
} | } | |||
description "IS-IS hello padding configuration."; | description | |||
"IS-IS Hello padding configuration."; | ||||
} | } | |||
leaf mesh-group-enable { | leaf mesh-group-enabled { | |||
type mesh-group-state; | type mesh-group-state; | |||
description "IS-IS interface mesh-group state"; | description | |||
"IS-IS interface mesh group state."; | ||||
} | } | |||
leaf mesh-group { | leaf mesh-group { | |||
when "../mesh-group-enable = 'mesh-set'" { | when "../mesh-group-enabled = 'mesh-set'" { | |||
description | description | |||
"Only valid when mesh-group-enable equals mesh-set"; | "Only valid when 'mesh-group-enabled' equals 'mesh-set'."; | |||
} | } | |||
type uint8; | type uint8; | |||
description "IS-IS interface mesh-group ID."; | description | |||
"IS-IS interface mesh group ID."; | ||||
} | } | |||
leaf interface-type { | leaf interface-type { | |||
type interface-type; | type interface-type; | |||
default "broadcast"; | default "broadcast"; | |||
description | description | |||
"Type of adjacency to be established for the interface. This | "Type of adjacency to be established for the interface. | |||
dictates the type of hello messages that are used."; | This dictates the type of Hello messages that are used."; | |||
} | } | |||
leaf-list tag { | leaf-list tag { | |||
if-feature prefix-tag; | if-feature "prefix-tag"; | |||
type uint32; | type uint32; | |||
description | description | |||
"List of tags associated with the interface."; | "List of tags associated with the interface."; | |||
} | } | |||
leaf-list tag64 { | leaf-list tag64 { | |||
if-feature prefix-tag64; | if-feature "prefix-tag64"; | |||
type uint64; | type uint64; | |||
description | description | |||
"List of 64-bit tags associated with the interface."; | "List of 64-bit tags associated with the interface."; | |||
} | } | |||
leaf node-flag { | leaf node-flag { | |||
if-feature node-flag; | if-feature "node-flag"; | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Set prefix as a node representative prefix."; | "Sets the prefix as a node representative prefix."; | |||
} | } | |||
container hello-authentication { | container hello-authentication { | |||
uses hello-authentication-cfg; | uses hello-authentication-cfg; | |||
container level-1 { | container level-1 { | |||
uses hello-authentication-cfg; | uses hello-authentication-cfg; | |||
description "level-1 specific configuration"; | description | |||
"Configuration specific to level 1."; | ||||
} | } | |||
container level-2 { | container level-2 { | |||
uses hello-authentication-cfg; | uses hello-authentication-cfg; | |||
description "level-2 specific configuration"; | description | |||
"Configuration specific to level 2."; | ||||
} | } | |||
description | description | |||
"Authentication type to be used in hello messages."; | "Authentication type to be used in Hello messages."; | |||
} | } | |||
container hello-interval { | container hello-interval { | |||
uses hello-interval-cfg-with-default; | uses hello-interval-cfg-with-default; | |||
container level-1 { | container level-1 { | |||
uses hello-interval-cfg; | uses hello-interval-cfg; | |||
description "level-1 specific configuration"; | description | |||
"Configuration specific to level 1."; | ||||
} | } | |||
container level-2 { | container level-2 { | |||
uses hello-interval-cfg; | uses hello-interval-cfg; | |||
description "level-2 specific configuration"; | description | |||
"Configuration specific to level 2."; | ||||
} | } | |||
description "Interval between hello messages."; | description | |||
"Interval between Hello messages."; | ||||
} | } | |||
container hello-multiplier { | container hello-multiplier { | |||
uses hello-multiplier-cfg-with-default; | uses hello-multiplier-cfg-with-default; | |||
container level-1 { | container level-1 { | |||
uses hello-multiplier-cfg; | uses hello-multiplier-cfg; | |||
description "level-1 specific configuration"; | description | |||
"Configuration specific to level 1."; | ||||
} | } | |||
container level-2 { | container level-2 { | |||
uses hello-multiplier-cfg; | uses hello-multiplier-cfg; | |||
description "level-2 specific configuration"; | description | |||
"Configuration specific to level 2."; | ||||
} | } | |||
description "Hello multiplier configuration."; | description | |||
"Hello multiplier configuration."; | ||||
} | } | |||
container priority { | container priority { | |||
must '../interface-type = "broadcast"' { | must '../interface-type = "broadcast"' { | |||
error-message | error-message "Priority only applies to broadcast " | |||
"Priority only applies to broadcast interfaces."; | + "interfaces."; | |||
description "Check for broadcast interface."; | description | |||
"Checks for a broadcast interface."; | ||||
} | } | |||
uses priority-cfg-with-default; | uses priority-cfg-with-default; | |||
container level-1 { | container level-1 { | |||
uses priority-cfg; | uses priority-cfg; | |||
description "level-1 specific configuration"; | description | |||
"Configuration specific to level 1."; | ||||
} | } | |||
container level-2 { | container level-2 { | |||
uses priority-cfg; | uses priority-cfg; | |||
description "level-2 specific configuration"; | description | |||
"Configuration specific to level 2."; | ||||
} | } | |||
description "Priority for DIS election."; | description | |||
"Priority for DIS election."; | ||||
} | } | |||
container metric { | container metric { | |||
uses metric-cfg-with-default; | uses metric-cfg-with-default; | |||
container level-1 { | container level-1 { | |||
uses metric-cfg; | uses metric-cfg; | |||
description "level-1 specific configuration"; | description | |||
"Configuration specific to level 1."; | ||||
} | } | |||
container level-2 { | container level-2 { | |||
uses metric-cfg; | uses metric-cfg; | |||
description "level-2 specific configuration"; | description | |||
"Configuration specific to level 2."; | ||||
} | } | |||
description "Metric configuration."; | description | |||
"Metric configuration."; | ||||
} | } | |||
container bfd { | container bfd { | |||
if-feature bfd; | if-feature "bfd"; | |||
description "BFD Client Configuration."; | description | |||
"BFD interface configuration."; | ||||
uses bfd-types:client-cfg-parms; | uses bfd-types:client-cfg-parms; | |||
reference | ||||
reference "RFC YYYY - YANG Data Model for Bidirectional | "RFC 5880: Bidirectional Forwarding Detection (BFD) | |||
Forwarding Detection (BFD). | RFC 5881: Bidirectional Forwarding Detection | |||
(BFD) for IPv4 and IPv6 (Single Hop) | ||||
-- Note to RFC Editor Please replace YYYY with published FC | RFC 9314: YANG Data Model for Bidirectional Forwarding | |||
number for draft-ietf-bfd-yang."; | Detection (BFD)"; | |||
} | } | |||
container address-families { | container address-families { | |||
if-feature nlpid-control; | if-feature "nlpid-control"; | |||
list address-family-list { | list address-family-list { | |||
key address-family; | key "address-family"; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description "Address-family"; | description | |||
"Address family."; | ||||
} | } | |||
description "List of AFs."; | description | |||
"List of address families."; | ||||
} | } | |||
description "Interface address-families"; | description | |||
"Interface address families."; | ||||
} | } | |||
container mpls { | container mpls { | |||
container ldp { | container ldp { | |||
leaf igp-sync { | leaf igp-sync { | |||
if-feature ldp-igp-sync; | if-feature "ldp-igp-sync"; | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description "Enables IGP/LDP synchronization"; | description | |||
"Enables IGP/LDP synchronization."; | ||||
} | } | |||
description "LDP protocol related configuration."; | description | |||
"Configuration related to LDP."; | ||||
} | } | |||
description "MPLS configuration for IS-IS interfaces"; | description | |||
"MPLS configuration for IS-IS interfaces."; | ||||
} | } | |||
uses interface-fast-reroute-config; | uses interface-fast-reroute-config; | |||
} | } | |||
grouping multi-topology-interface-config { | grouping multi-topology-interface-config { | |||
description "IS-IS interface topology configuration."; | description | |||
"IS-IS interface topology configuration."; | ||||
container metric { | container metric { | |||
uses metric-cfg; | uses metric-cfg; | |||
container level-1 { | container level-1 { | |||
uses metric-cfg; | uses metric-cfg; | |||
description "level-1 specific configuration"; | description | |||
"Configuration specific to level 1."; | ||||
} | } | |||
container level-2 { | container level-2 { | |||
uses metric-cfg; | uses metric-cfg; | |||
description "level-2 specific configuration"; | description | |||
"Configuration specific to level 2."; | ||||
} | } | |||
description "Metric IS-IS interface configuration."; | description | |||
"Metric IS-IS interface configuration."; | ||||
} | } | |||
} | } | |||
grouping interface-state { | grouping interface-state { | |||
description | description | |||
"IS-IS interface operational state."; | "IS-IS interface operational state."; | |||
uses adjacency-state; | uses adjacency-state; | |||
uses event-counters; | uses event-counters; | |||
uses packet-counters; | uses packet-counters; | |||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time of the most recent occasion at which any one | "The time of the most recent occasion at which any one | |||
or more of this IS-IS interface's counters suffered a | or more of this IS-IS interface's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the IS-IS interface was last re-initialized, then | since the IS-IS interface was last reinitialized, then | |||
this node contains the time the IS-IS interface was | this node contains the time the IS-IS interface was | |||
re-initialized which normally occurs when it was | reinitialized, which normally occurs when it was | |||
created."; | created."; | |||
} | } | |||
} | } | |||
/* Grouping for the hostname database */ | /* Grouping for the hostname database */ | |||
grouping hostname-db { | grouping hostname-db { | |||
container hostnames { | container hostnames { | |||
config false; | config false; | |||
list hostname { | list hostname { | |||
key system-id; | key "system-id"; | |||
leaf system-id { | leaf system-id { | |||
type system-id; | type system-id; | |||
description | description | |||
"system-id associated with the hostname."; | "System ID associated with the hostname."; | |||
} | } | |||
leaf hostname { | leaf hostname { | |||
type string { | type string { | |||
length "1..255"; | length "1..255"; | |||
} | } | |||
description | description | |||
"Hostname associated with the system-id | "Hostname associated with the system ID | |||
as defined in RFC5301."; | as defined in RFC 5301."; | |||
reference | ||||
"RFC 5301: Dynamic Hostname Exchange Mechanism | ||||
for IS-IS"; | ||||
} | } | |||
description | description | |||
"List of system-id/hostname associations."; | "List of system ID / hostname associations."; | |||
} | } | |||
description | description | |||
"Hostname to system-id mapping database."; | "Hostname-to-system-ID mapping database."; | |||
} | } | |||
description | description | |||
"Grouping for hostname to system-id mapping database."; | "Grouping for hostname-to-system-ID mapping database."; | |||
} | } | |||
/* Groupings for counters */ | /* Groupings for counters */ | |||
grouping system-counters { | grouping system-counters { | |||
container system-counters { | container system-counters { | |||
config false; | config false; | |||
list level { | list level { | |||
key level; | key "level"; | |||
leaf level { | leaf level { | |||
type level-number; | type level-number; | |||
description "IS-IS level."; | description | |||
"IS-IS level."; | ||||
} | } | |||
leaf corrupted-lsps { | leaf corrupted-lsps { | |||
type uint32; | type uint32; | |||
description | description | |||
"Number of corrupted in-memory LSPs detected. | "Number of corrupted in-memory LSPs detected. | |||
LSPs received from the wire with a bad | LSPs received from the wire with a bad | |||
checksum are silently dropped and not counted. | checksum are silently dropped and not counted. | |||
LSPs received from the wire with parse errors | LSPs received from the wire with parse errors | |||
are counted by lsp-errors."; | are counted by 'lsp-errors'."; | |||
} | } | |||
leaf authentication-type-fails { | leaf authentication-type-fails { | |||
type uint32; | type uint32; | |||
description | description | |||
"Number of authentication type mismatches."; | "Number of authentication type mismatches."; | |||
} | } | |||
leaf authentication-fails { | leaf authentication-fails { | |||
type uint32; | type uint32; | |||
description | description | |||
"Number of authentication key failures."; | "Number of authentication key failures."; | |||
} | } | |||
leaf database-overload { | leaf database-overload { | |||
type uint32; | type uint32; | |||
description | description | |||
"Number of times the database has become | "Number of times the database has become | |||
skipping to change at page 68, line 36 ¶ | skipping to change at line 3328 ¶ | |||
than that of the receiving system."; | than that of the receiving system."; | |||
} | } | |||
leaf partition-changes { | leaf partition-changes { | |||
type uint32; | type uint32; | |||
description | description | |||
"Number of partition changes detected."; | "Number of partition changes detected."; | |||
} | } | |||
leaf lsp-errors { | leaf lsp-errors { | |||
type uint32; | type uint32; | |||
description | description | |||
"Number of LSPs with errors we have received."; | "Number of LSPs received with errors."; | |||
} | } | |||
leaf spf-runs { | leaf spf-runs { | |||
type uint32; | type uint32; | |||
description | description | |||
"Number of times we ran SPF at this level."; | "Number of times SPF was run at this level."; | |||
} | } | |||
description | description | |||
"List of supported levels."; | "List of supported levels."; | |||
} | } | |||
description | description | |||
"List counters for the IS-IS protocol instance"; | "List of counters for the IS-IS protocol instance."; | |||
} | } | |||
description | description | |||
"Grouping for IS-IS system counters"; | "Grouping for IS-IS system counters."; | |||
} | } | |||
grouping event-counters { | grouping event-counters { | |||
container event-counters { | container event-counters { | |||
config false; | config false; | |||
leaf adjacency-changes { | leaf adjacency-changes { | |||
type uint32; | type uint32; | |||
description | description | |||
"The number of times an adjacency state change has | "The number of times an adjacency state change has | |||
occurred on this interface."; | occurred on this interface."; | |||
} | } | |||
leaf adjacency-number { | leaf adjacency-number { | |||
type uint32; | type uint32; | |||
description | description | |||
"The number of adjacencies on this interface."; | "The number of adjacencies on this interface."; | |||
} | } | |||
leaf init-fails { | leaf init-fails { | |||
type uint32; | type uint32; | |||
description | description | |||
"The number of times initialization of this | "The number of times initialization of this interface has | |||
interface has failed. This counts events such | failed. This counts events such as Point-to-Point | |||
as PPP NCP failures. Failures to form an | Protocol (PPP) Network Control Protocol (NCP) failures. | |||
adjacency are counted by adjacency-rejects."; | Failures to form an adjacency are counted by | |||
'adjacency-rejects'."; | ||||
} | } | |||
leaf adjacency-rejects { | leaf adjacency-rejects { | |||
type uint32; | type uint32; | |||
description | description | |||
"The number of times an adjacency has been | "The number of times an adjacency has been | |||
rejected on this interface."; | rejected on this interface."; | |||
} | } | |||
leaf id-len-mismatch { | leaf id-len-mismatch { | |||
type uint32; | type uint32; | |||
description | description | |||
skipping to change at page 70, line 13 ¶ | skipping to change at line 3403 ¶ | |||
} | } | |||
leaf authentication-fails { | leaf authentication-fails { | |||
type uint32; | type uint32; | |||
description | description | |||
"Number of authentication key failures."; | "Number of authentication key failures."; | |||
} | } | |||
leaf lan-dis-changes { | leaf lan-dis-changes { | |||
type uint32; | type uint32; | |||
description | description | |||
"The number of times the DIS has changed on this | "The number of times the DIS has changed on this | |||
interface at this level. If the interface type is | interface at this level. If the interface type is | |||
point-to-point, the count is zero."; | 'point-to-point', the count is zero."; | |||
} | } | |||
description "IS-IS interface event counters."; | description | |||
"IS-IS interface event counters."; | ||||
} | } | |||
description | description | |||
"Grouping for IS-IS interface event counters"; | "Grouping for IS-IS interface event counters."; | |||
} | } | |||
grouping packet-counters { | grouping packet-counters { | |||
container packet-counters { | container packet-counters { | |||
config false; | config false; | |||
list level { | list level { | |||
key level; | key "level"; | |||
leaf level { | leaf level { | |||
type level-number; | type level-number; | |||
description "IS-IS level."; | description | |||
"IS-IS level."; | ||||
} | } | |||
container iih { | container iih { | |||
leaf in { | leaf in { | |||
type uint32; | type uint32; | |||
description "Received IIH PDUs."; | description | |||
"Received IS-IS Hello (IIH) PDUs."; | ||||
} | } | |||
leaf out { | leaf out { | |||
type uint32; | type uint32; | |||
description "Sent IIH PDUs."; | description | |||
"Sent IIH PDUs."; | ||||
} | } | |||
description "Number of IIH PDUs received/sent."; | description | |||
"Number of IIH PDUs received/sent."; | ||||
} | } | |||
container ish { | container ish { | |||
leaf in { | leaf in { | |||
type uint32; | type uint32; | |||
description "Received ISH PDUs."; | description | |||
"Received Intermediate System Hello (ISH) PDUs."; | ||||
} | } | |||
leaf out { | leaf out { | |||
type uint32; | type uint32; | |||
description "Sent ISH PDUs."; | description | |||
"Sent ISH PDUs."; | ||||
} | } | |||
description | description | |||
"ISH PDUs received/sent."; | "ISH PDUs received/sent."; | |||
} | } | |||
container esh { | container esh { | |||
leaf in { | leaf in { | |||
type uint32; | type uint32; | |||
description "Received ESH PDUs."; | description | |||
"Received End System Hello (ESH) PDUs."; | ||||
} | } | |||
leaf out { | leaf out { | |||
type uint32; | type uint32; | |||
description "Sent ESH PDUs."; | description | |||
"Sent ESH PDUs."; | ||||
} | } | |||
description "Number of ESH PDUs received/sent."; | description | |||
"Number of ESH PDUs received/sent."; | ||||
} | } | |||
container lsp { | container lsp { | |||
leaf in { | leaf in { | |||
type uint32; | type uint32; | |||
description "Received LSP PDUs."; | description | |||
"Received Link State PDU (LSP) PDUs."; | ||||
} | } | |||
leaf out { | leaf out { | |||
type uint32; | type uint32; | |||
description "Sent LSP PDUs."; | description | |||
"Sent LSP PDUs."; | ||||
} | } | |||
description "Number of LSP PDUs received/sent."; | description | |||
"Number of LSP PDUs received/sent."; | ||||
} | } | |||
container psnp { | container psnp { | |||
leaf in { | leaf in { | |||
type uint32; | type uint32; | |||
description "Received PSNP PDUs."; | description | |||
"Received Partial Sequence Number PDU (PSNP) PDUs."; | ||||
} | } | |||
leaf out { | leaf out { | |||
type uint32; | type uint32; | |||
description "Sent PSNP PDUs."; | description | |||
"Sent PSNP PDUs."; | ||||
} | } | |||
description "Number of PSNP PDUs received/sent."; | description | |||
"Number of PSNP PDUs received/sent."; | ||||
} | } | |||
container csnp { | container csnp { | |||
leaf in { | leaf in { | |||
type uint32; | type uint32; | |||
description "Received CSNP PDUs."; | description | |||
"Received Complete Sequence Number PDU (CSNP) PDUs."; | ||||
} | } | |||
leaf out { | leaf out { | |||
type uint32; | type uint32; | |||
description "Sent CSNP PDUs."; | description | |||
"Sent CSNP PDUs."; | ||||
} | } | |||
description "Number of CSNP PDUs received/sent."; | description | |||
"Number of CSNP PDUs received/sent."; | ||||
} | } | |||
container unknown { | container unknown { | |||
leaf in { | leaf in { | |||
type uint32; | type uint32; | |||
description "Received unknown PDUs."; | description | |||
"Received unknown PDUs."; | ||||
} | } | |||
description "Number of unknown PDUs received/sent."; | description | |||
"Number of unknown PDUs received."; | ||||
} | } | |||
description | description | |||
"List of packet counter for supported levels."; | "List of packet counters for supported levels."; | |||
} | } | |||
description "Packet counters per IS-IS level."; | description | |||
"Packet counters per IS-IS level."; | ||||
} | } | |||
description | description | |||
"Grouping for per IS-IS Level packet counters."; | "Grouping for packet counters per IS-IS level."; | |||
} | } | |||
/* Groupings for various log buffers */ | /* Groupings for various log buffers */ | |||
grouping spf-log { | grouping spf-log { | |||
container spf-log { | container spf-log { | |||
config false; | config false; | |||
list event { | list event { | |||
key id; | key "id"; | |||
leaf id { | leaf id { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"Event identifier - purely internal value. | "Event identifier. A purely internal value. | |||
It is expected the most recent events to have the bigger | The most recent events are expected to have a bigger | |||
id number."; | ID number."; | |||
} | } | |||
leaf spf-type { | leaf spf-type { | |||
type enumeration { | type enumeration { | |||
enum full { | enum full { | |||
description "Full SPF computation."; | description | |||
"Full SPF computation."; | ||||
} | } | |||
enum route-only { | enum route-only { | |||
description | description | |||
"Route reachability only SPF computation"; | "SPF computation of route reachability | |||
only."; | ||||
} | } | |||
} | } | |||
description "Type of SPF computation performed."; | description | |||
"Type of SPF computation performed."; | ||||
} | } | |||
leaf level { | leaf level { | |||
type level-number; | type level-number; | |||
description | description | |||
"IS-IS level number for SPF computation"; | "IS-IS level number for the SPF computation."; | |||
} | } | |||
leaf schedule-timestamp { | leaf schedule-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"Timestamp of when the SPF computation was | "Timestamp of when the SPF computation was | |||
scheduled."; | scheduled."; | |||
} | } | |||
leaf start-timestamp { | leaf start-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
skipping to change at page 73, line 23 ¶ | skipping to change at line 3581 ¶ | |||
leaf end-timestamp { | leaf end-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"Timestamp of when the SPF computation ended."; | "Timestamp of when the SPF computation ended."; | |||
} | } | |||
list trigger-lsp { | list trigger-lsp { | |||
key "lsp"; | key "lsp"; | |||
leaf lsp { | leaf lsp { | |||
type lsp-id; | type lsp-id; | |||
description | description | |||
"LSP ID of the LSP triggering SPF computation."; | "LSP ID of the LSP that triggered the SPF | |||
computation."; | ||||
} | } | |||
leaf sequence { | leaf sequence { | |||
type uint32; | type uint32; | |||
description | description | |||
"Sequence number of the LSP triggering SPF | "Sequence number of the LSP that triggered the SPF | |||
computation"; | computation."; | |||
} | } | |||
description | description | |||
"This list includes the LSPs that triggered the | "This list includes the LSPs that triggered the | |||
SPF computation."; | SPF computation."; | |||
} | } | |||
description | description | |||
"List of computation events - implemented as a | "List of computation events. Implemented as a | |||
wrapping buffer."; | wrapping buffer."; | |||
} | } | |||
description | description | |||
"This container lists the SPF computation events."; | "This container lists the SPF computation events."; | |||
} | } | |||
description "Grouping for spf-log events."; | description | |||
"Grouping for SPF log events."; | ||||
} | } | |||
grouping lsp-log { | grouping lsp-log { | |||
container lsp-log { | container lsp-log { | |||
config false; | config false; | |||
list event { | list event { | |||
key id; | key "id"; | |||
leaf id { | leaf id { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"Event identifier - purely internal value. | "Event identifier. A purely internal value. | |||
It is expected the most recent events to have the bigger | The most recent events are expected to have a bigger | |||
id number."; | ID number."; | |||
} | } | |||
leaf level { | leaf level { | |||
type level-number; | type level-number; | |||
description | description | |||
"IS-IS level number for LSP"; | "IS-IS level number for the LSP."; | |||
} | } | |||
container lsp { | container lsp { | |||
leaf lsp { | leaf lsp { | |||
type lsp-id; | type lsp-id; | |||
description | description | |||
"LSP ID of the LSP."; | "LSP ID of the LSP."; | |||
} | } | |||
leaf sequence { | leaf sequence { | |||
type uint32; | type uint32; | |||
description | description | |||
"Sequence number of the LSP."; | "Sequence number of the LSP."; | |||
} | } | |||
description | description | |||
"LSP identification container - either the received | "LSP identification container for either the received | |||
LSP or the locally generated LSP."; | LSP or the locally generated LSP."; | |||
} | } | |||
leaf received-timestamp { | leaf received-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This is the timestamp when the LSA was received. | "This is the timestamp when the LSP was received. | |||
In case of local LSA update, the timestamp refers | In the case of a local LSP update, the timestamp refers | |||
to the LSA origination time."; | to the LSP origination time."; | |||
} | } | |||
leaf reason { | leaf reason { | |||
type identityref { | type identityref { | |||
base lsp-log-reason; | base lsp-log-reason; | |||
} | } | |||
description "Type of LSP change."; | description | |||
"Type of LSP change."; | ||||
} | } | |||
description | description | |||
"List of LSP events - implemented as a | "List of LSP events. Implemented as a wrapping buffer."; | |||
wrapping buffer."; | ||||
} | } | |||
description | description | |||
"This container lists the LSP log. | "This container lists the LSP log. | |||
Local LSP modifications are also included | Local LSP modifications are also included in the list."; | |||
in the list."; | } | |||
description | ||||
} description "Grouping for LSP log."; | "Grouping for the LSP log."; | |||
} | } | |||
/* Groupings for the LSDB description */ | /* Groupings for the Link State Database (LSDB) descriptions */ | |||
/* Unknown TLV and sub-TLV descriptions */ | ||||
/* Unknown TLV and sub-TLV description */ | ||||
grouping tlv { | grouping tlv { | |||
description | description | |||
"Type-Length-Value (TLV)"; | "Type-Length-Value (TLV)."; | |||
leaf type { | leaf type { | |||
type uint16; | type uint16; | |||
description "TLV type."; | description | |||
"TLV type."; | ||||
} | } | |||
leaf length { | leaf length { | |||
type uint16; | type uint16; | |||
description "TLV length (octets)."; | description | |||
"TLV length (octets)."; | ||||
} | } | |||
leaf value { | leaf value { | |||
type yang:hex-string; | type yang:hex-string; | |||
description "TLV value."; | description | |||
"TLV value."; | ||||
} | } | |||
} | } | |||
grouping unknown-tlvs { | grouping unknown-tlvs { | |||
description | description | |||
"Unknown TLVs grouping - Used for unknown TLVs or | "Unknown TLVs grouping. Used for unknown TLVs or | |||
unknown sub-TLVs."; | unknown sub-TLVs."; | |||
container unknown-tlvs { | container unknown-tlvs { | |||
description "All unknown TLVs."; | description | |||
"All unknown TLVs."; | ||||
list unknown-tlv { | list unknown-tlv { | |||
description "Unknown TLV."; | description | |||
"Unknown TLV."; | ||||
uses tlv; | uses tlv; | |||
} | } | |||
} | } | |||
} | } | |||
/* TLVs and sub-TLVs for prefixes */ | /* TLVs and sub-TLVs for prefixes */ | |||
grouping prefix-reachability-attributes { | grouping prefix-reachability-attributes { | |||
description | description | |||
"Grouping for extended reachability attributes of an | "Grouping for extended reachability attributes of an | |||
skipping to change at page 76, line 5 ¶ | skipping to change at line 3706 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
/* TLVs and sub-TLVs for prefixes */ | /* TLVs and sub-TLVs for prefixes */ | |||
grouping prefix-reachability-attributes { | grouping prefix-reachability-attributes { | |||
description | description | |||
"Grouping for extended reachability attributes of an | "Grouping for extended reachability attributes of an | |||
IPv4 or IPv6 prefix."; | IPv4 or IPv6 prefix."; | |||
leaf external-prefix-flag { | leaf external-prefix-flag { | |||
type boolean; | type boolean; | |||
description "External prefix flag."; | description | |||
"External prefix flag."; | ||||
} | } | |||
leaf readvertisement-flag { | leaf readvertisement-flag { | |||
type boolean; | type boolean; | |||
description "Re-advertisement flag."; | description | |||
"Re-advertisement flag."; | ||||
} | } | |||
leaf node-flag { | leaf node-flag { | |||
type boolean; | type boolean; | |||
description "Node flag."; | description | |||
"Node flag."; | ||||
} | } | |||
} | } | |||
grouping prefix-ipv4-source-router-id { | grouping prefix-ipv4-source-router-id { | |||
description | description | |||
"Grouping for the IPv4 source router ID of a prefix | "Grouping for the IPv4 source router ID of a prefix | |||
advertisement."; | advertisement."; | |||
leaf ipv4-source-router-id { | leaf ipv4-source-router-id { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description "IPv4 Source router ID address."; | description | |||
"IPv4 source router ID address."; | ||||
} | } | |||
} | } | |||
grouping prefix-ipv6-source-router-id { | grouping prefix-ipv6-source-router-id { | |||
description | description | |||
"Grouping for the IPv6 source router ID of a prefix | "Grouping for the IPv6 source router ID of a prefix | |||
advertisement."; | advertisement."; | |||
leaf ipv6-source-router-id { | leaf ipv6-source-router-id { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description "IPv6 Source router ID address."; | description | |||
"IPv6 source router ID address."; | ||||
} | } | |||
} | } | |||
grouping prefix-attributes-extension { | grouping prefix-attributes-extension { | |||
description "Prefix extended attributes | description | |||
as defined in RFC7794."; | "Prefix extended attributes as defined in RFC 7794."; | |||
reference | ||||
"RFC 7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 | ||||
Reachability"; | ||||
uses prefix-reachability-attributes; | uses prefix-reachability-attributes; | |||
uses prefix-ipv4-source-router-id; | uses prefix-ipv4-source-router-id; | |||
uses prefix-ipv6-source-router-id; | uses prefix-ipv6-source-router-id; | |||
} | } | |||
grouping prefix-ipv4-std { | grouping prefix-ipv4-std { | |||
description | description | |||
"Grouping for attributes of an IPv4 standard prefix | "Grouping for attributes of an IPv4 standard prefix | |||
as defined in RFC1195."; | as defined in RFC 1195."; | |||
reference | ||||
"RFC 1195: Use of OSI IS-IS for routing in TCP/IP and | ||||
dual environments"; | ||||
leaf ip-prefix { | leaf ip-prefix { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description "IPv4 prefix address"; | description | |||
"IPv4 prefix address."; | ||||
} | } | |||
leaf prefix-len { | leaf prefix-len { | |||
type uint8; | type uint8; | |||
description "IPv4 prefix length (in bits)"; | description | |||
"IPv4 prefix length (in bits)."; | ||||
} | } | |||
leaf i-e { | leaf i-e { | |||
type boolean; | type boolean; | |||
description | description | |||
"Internal or External (I/E) Metric bit value. | "Internal or external (I/E) metric bit value. | |||
Set to 'false' to indicate an internal metric."; | Set to 'false' to indicate an internal metric."; | |||
} | } | |||
container default-metric { | container default-metric { | |||
leaf metric { | leaf metric { | |||
type std-metric; | type std-metric; | |||
description "Default IS-IS metric for IPv4 prefix"; | description | |||
"Default IS-IS metric for the IPv4 prefix."; | ||||
} | } | |||
description "IS-IS default metric container."; | description | |||
"IS-IS default metric container."; | ||||
} | } | |||
container delay-metric { | container delay-metric { | |||
leaf metric { | leaf metric { | |||
type std-metric; | type std-metric; | |||
description "IS-IS delay metric for IPv4 prefix"; | description | |||
"IS-IS delay metric for the IPv4 prefix."; | ||||
} | } | |||
leaf supported { | leaf supported { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Indicates whether IS-IS delay metric is supported."; | "Indicates whether the IS-IS delay metric is supported."; | |||
} | } | |||
description "IS-IS delay metric container."; | description | |||
"IS-IS delay metric container."; | ||||
} | } | |||
container expense-metric { | container expense-metric { | |||
leaf metric { | leaf metric { | |||
type std-metric; | type std-metric; | |||
description "IS-IS expense metric for IPv4 prefix"; | description | |||
"IS-IS expense metric for the IPv4 prefix."; | ||||
} | } | |||
leaf supported { | leaf supported { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Indicates whether IS-IS expense metric is supported."; | "Indicates whether the IS-IS expense metric is supported."; | |||
} | } | |||
description "IS-IS expense metric container."; | description | |||
"IS-IS expense metric container."; | ||||
} | } | |||
container error-metric { | container error-metric { | |||
leaf metric { | leaf metric { | |||
type std-metric; | type std-metric; | |||
description | description | |||
"This leaf describes the IS-IS error metric value"; | "This leaf describes the IS-IS error metric value."; | |||
} | } | |||
leaf supported { | leaf supported { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"Indicates whether IS-IS error metric is supported."; | "Indicates whether the IS-IS error metric is supported."; | |||
} | } | |||
description "IS-IS error metric container."; | description | |||
"IS-IS error metric container."; | ||||
} | } | |||
} | } | |||
grouping prefix-ipv4-extended { | grouping prefix-ipv4-extended { | |||
description | description | |||
"Grouping for attributes of an IPv4 extended prefix | "Grouping for attributes of an IPv4 extended prefix | |||
as defined in RFC5305."; | as defined in RFC 5305."; | |||
reference | ||||
"RFC 5305: IS-IS Extensions for Traffic Engineering"; | ||||
leaf up-down { | leaf up-down { | |||
type boolean; | type boolean; | |||
description "Value of up/down bit. | description | |||
Set to true when the prefix has been advertised down | "Value of the up/down bit. | |||
the hierarchy."; | Set to 'true' when the prefix has been advertised down | |||
the hierarchy."; | ||||
} | } | |||
leaf ip-prefix { | leaf ip-prefix { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description "IPv4 prefix address"; | description | |||
"IPv4 prefix address."; | ||||
} | } | |||
leaf prefix-len { | leaf prefix-len { | |||
type uint8; | type uint8; | |||
description "IPv4 prefix length (in bits)"; | description | |||
"IPv4 prefix length (in bits)."; | ||||
} | } | |||
leaf metric { | leaf metric { | |||
type wide-metric; | type wide-metric; | |||
description "IS-IS wide metric value"; | description | |||
"IS-IS wide metric value."; | ||||
} | } | |||
leaf-list tag { | leaf-list tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"List of 32-bit tags associated with the IPv4 prefix."; | "List of 32-bit tags associated with the IPv4 prefix."; | |||
} | } | |||
leaf-list tag64 { | leaf-list tag64 { | |||
type uint64; | type uint64; | |||
description | description | |||
"List of 64-bit tags associated with the IPv4 prefix."; | "List of 64-bit tags associated with the IPv4 prefix."; | |||
} | } | |||
uses prefix-attributes-extension; | uses prefix-attributes-extension; | |||
} | } | |||
grouping prefix-ipv6-extended { | grouping prefix-ipv6-extended { | |||
description "Grouping for attributes of an IPv6 prefix | description | |||
as defined in RFC5308."; | "Grouping for attributes of an IPv6 prefix | |||
as defined in RFC 5308."; | ||||
reference | ||||
"RFC 5308: Routing IPv6 with IS-IS"; | ||||
leaf up-down { | leaf up-down { | |||
type boolean; | type boolean; | |||
description "Value of up/down bit. | description | |||
Set to true when the prefix has been advertised down | "Value of the up/down bit. | |||
the hierarchy."; | Set to 'true' when the prefix has been advertised down | |||
the hierarchy."; | ||||
} | } | |||
leaf ip-prefix { | leaf ip-prefix { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description "IPv6 prefix address"; | description | |||
"IPv6 prefix address."; | ||||
} | } | |||
leaf prefix-len { | leaf prefix-len { | |||
type uint8; | type uint8; | |||
description "IPv6 prefix length (in bits)"; | description | |||
"IPv6 prefix length (in bits)."; | ||||
} | } | |||
leaf metric { | leaf metric { | |||
type wide-metric; | type wide-metric; | |||
description "IS-IS wide metric value"; | description | |||
"IS-IS wide metric value."; | ||||
} | } | |||
leaf-list tag { | leaf-list tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"List of 32-bit tags associated with the IPv4 prefix."; | "List of 32-bit tags associated with the IPv6 prefix."; | |||
} | } | |||
leaf-list tag64 { | leaf-list tag64 { | |||
type uint64; | type uint64; | |||
description | description | |||
"List of 64-bit tags associated with the IPv4 prefix."; | "List of 64-bit tags associated with the IPv6 prefix."; | |||
} | } | |||
uses prefix-attributes-extension; | uses prefix-attributes-extension; | |||
} | } | |||
/* TLVs and sub-TLVs for neighbors */ | /* TLVs and sub-TLVs for neighbors */ | |||
grouping neighbor-link-attributes { | grouping neighbor-link-attributes { | |||
description | description | |||
"Grouping for link attributes as defined | "Grouping for link attributes as defined | |||
in RFC5029"; | in RFC 5029."; | |||
reference | ||||
"RFC 5029: Definition of an IS-IS Link Attribute Sub-TLV"; | ||||
leaf link-attributes-flags { | leaf link-attributes-flags { | |||
type uint16; | type uint16; | |||
description | description | |||
"Flags for the link attributes"; | "Flags for the link attributes."; | |||
} | } | |||
} | } | |||
grouping neighbor-gmpls-extensions { | grouping neighbor-gmpls-extensions { | |||
description | description | |||
"Grouping for GMPLS attributes of a neighbor as defined | "Grouping for GMPLS attributes of a neighbor as defined | |||
in RFC5307"; | in RFC 5307."; | |||
reference | ||||
"RFC 5307: IS-IS Extensions in Support of Generalized | ||||
Multi-Protocol Label Switching (GMPLS)"; | ||||
leaf link-local-id { | leaf link-local-id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Local identifier of the link."; | "Local identifier of the link."; | |||
} | } | |||
leaf remote-local-id { | leaf remote-local-id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Remote identifier of the link."; | "Remote identifier of the link."; | |||
} | } | |||
leaf protection-capability { | leaf protection-capability { | |||
type uint8; | type uint8; | |||
description | description | |||
"Describes the protection capabilities | "Describes the protection capabilities | |||
of the link. This is the value of the | of the link. This is the value of the | |||
first octet of the sub-TLV type 20 value."; | first octet of the sub-TLV type 20 value."; | |||
} | } | |||
container interface-switching-capability { | container interface-switching-capability { | |||
description | description | |||
"Interface switching capabilities of the link."; | "Interface switching capabilities of the link."; | |||
leaf switching-capability { | leaf switching-capability { | |||
type uint8; | type uint8; | |||
description | description | |||
"Switching capability of the link."; | "Switching capability of the link."; | |||
} | } | |||
leaf encoding { | leaf encoding { | |||
type uint8; | type uint8; | |||
description | description | |||
"Type of encoding of the LSP being used."; | "Type of encoding of the LSP being used."; | |||
} | } | |||
container max-lsp-bandwidths { | container max-lsp-bandwidths { | |||
description "Per-priority max LSP bandwidths."; | description | |||
"Per-priority maximum LSP bandwidths."; | ||||
list max-lsp-bandwidth { | list max-lsp-bandwidth { | |||
leaf priority { | leaf priority { | |||
type uint8 { | type uint8 { | |||
range "0 .. 7"; | range "0 .. 7"; | |||
} | } | |||
description "Priority from 0 to 7."; | description | |||
"Priority from 0 to 7."; | ||||
} | } | |||
leaf bandwidth { | leaf bandwidth { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
description "max LSP bandwidth."; | description | |||
"Maximum LSP bandwidth."; | ||||
} | } | |||
description | description | |||
"List of max LSP bandwidths for different | "List of maximum LSP bandwidths for different | |||
priorities."; | priorities."; | |||
} | } | |||
} | } | |||
container tdm-specific { | container tdm-specific { | |||
when "../switching-capability = 100"; | when '../switching-capability = 100'; | |||
description | description | |||
"Switching Capability-specific information applicable | "Switching-capability-specific information applicable | |||
when switching type is TDM."; | when the switching type is Time-Division Multiplexing | |||
(TDM)."; | ||||
leaf minimum-lsp-bandwidth { | leaf minimum-lsp-bandwidth { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
description "minimum LSP bandwidth."; | description | |||
"Minimum LSP bandwidth."; | ||||
} | } | |||
leaf indication { | leaf indication { | |||
type uint8; | type uint8; | |||
description | description | |||
"The indication whether the interface supports Standard | "Indicates whether the interface supports Standard | |||
or Arbitrary SONET/SDH."; | or Arbitrary SONET/SDH (Synchronous Optical Network / | |||
Synchronous Digital Hierarchy)."; | ||||
} | } | |||
} | } | |||
container psc-specific { | container psc-specific { | |||
when "../switching-capability >= 1 and | when "../switching-capability >= 1 and | |||
../switching-capability <= 4"; | ../switching-capability <= 4"; | |||
description | description | |||
"Switching Capability-specific information applicable | "Switching-capability-specific information applicable | |||
when switching type is PSC1,PSC2,PSC3 or PSC4."; | when the switching type is PSC1, PSC2, PSC3, or PSC4 | |||
('PSC' stands for 'Packet Switching Capability')."; | ||||
leaf minimum-lsp-bandwidth { | leaf minimum-lsp-bandwidth { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
description "minimum LSP bandwidth."; | description | |||
"Minimum LSP bandwidth."; | ||||
} | } | |||
leaf mtu { | leaf mtu { | |||
type uint16; | type uint16; | |||
units bytes; | units "bytes"; | |||
description | description | |||
"Interface MTU"; | "Interface MTU."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping neighbor-extended-te-extensions { | grouping neighbor-extended-te-extensions { | |||
description | description | |||
"Grouping for TE attributes of a neighbor as defined | "Grouping for TE attributes of a neighbor as defined | |||
in RFC8570"; | in RFC 8570."; | |||
reference | ||||
"RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; | ||||
container unidirectional-link-delay { | container unidirectional-link-delay { | |||
description | description | |||
"Container for the average delay | "Container for the average delay | |||
from the local neighbor to the remote one."; | from the local neighbor to the remote neighbor."; | |||
container flags { | container flags { | |||
leaf-list unidirectional-link-delay-subtlv-flags { | leaf-list unidirectional-link-delay-subtlv-flags { | |||
type identityref { | type identityref { | |||
base unidirectional-link-delay-subtlv-flag; | base unidirectional-link-delay-subtlv-flag; | |||
} | } | |||
description | description | |||
"This list contains identities for the bits | "This list contains identities for the bits that | |||
which are set."; | are set."; | |||
} | } | |||
description | description | |||
"unidirectional-link-delay subTLV flags."; | "Unidirectional Link Delay sub-TLV flags."; | |||
} | } | |||
leaf value { | leaf value { | |||
type uint32; | type uint32; | |||
units usec; | units "usec"; | |||
description | description | |||
"Delay value expressed in microseconds."; | "Delay value expressed in microseconds."; | |||
} | } | |||
} | } | |||
container min-max-unidirectional-link-delay { | container min-max-unidirectional-link-delay { | |||
description | description | |||
"Container for the min and max delay | "Container for the minimum and maximum delay | |||
from the local neighbor to the remote one."; | from the local neighbor to the remote neighbor."; | |||
container flags { | container flags { | |||
leaf-list min-max-unidirectional-link-delay-subtlv-flags { | leaf-list min-max-unidirectional-link-delay-subtlv-flags { | |||
type identityref { | type identityref { | |||
base min-max-unidirectional-link-delay-subtlv-flag; | base min-max-unidirectional-link-delay-subtlv-flag; | |||
} | } | |||
description | description | |||
"This list contains identities for the bits which are | "This list contains identities for the bits that | |||
set."; | are set."; | |||
} | } | |||
description | description | |||
"min-max-unidirectional-link-delay subTLV flags."; | "Min/Max Unidirectional Link Delay sub-TLV flags."; | |||
} | } | |||
leaf min-value { | leaf min-value { | |||
type uint32; | type uint32; | |||
units usec; | units "usec"; | |||
description | description | |||
"Minimum delay value expressed in microseconds."; | "Minimum delay value expressed in microseconds."; | |||
} | } | |||
leaf max-value { | leaf max-value { | |||
type uint32; | type uint32; | |||
units usec; | units "usec"; | |||
description | description | |||
"Maximum delay value expressed in microseconds."; | "Maximum delay value expressed in microseconds."; | |||
} | } | |||
} | } | |||
container unidirectional-link-delay-variation { | container unidirectional-link-delay-variation { | |||
description | description | |||
"Container for the average delay variation | "Container for the average delay variation | |||
from the local neighbor to the remote one."; | from the local neighbor to the remote neighbor."; | |||
leaf value { | leaf value { | |||
type uint32; | type uint32; | |||
units usec; | units "usec"; | |||
description | description | |||
"Delay variation value expressed in microseconds."; | "Delay variation value expressed in microseconds."; | |||
} | } | |||
} | } | |||
container unidirectional-link-loss { | container unidirectional-link-loss { | |||
description | description | |||
"Container for the packet loss | "Container for packet loss from the local neighbor to the | |||
from the local neighbor to the remote one."; | remote neighbor."; | |||
container flags { | container flags { | |||
leaf-list unidirectional-link-loss-subtlv-flags { | leaf-list unidirectional-link-loss-subtlv-flags { | |||
type identityref { | type identityref { | |||
base unidirectional-link-loss-subtlv-flag; | base unidirectional-link-loss-subtlv-flag; | |||
} | } | |||
description | description | |||
"This list contains identities for the bits which are | "This list contains identities for the bits that | |||
set."; | are set."; | |||
} | } | |||
description | description | |||
"unidirectional-link-loss subTLV flags."; | "Unidirectional Link Loss sub-TLV flags."; | |||
} | } | |||
leaf value { | leaf value { | |||
type uint32; | type uint32; | |||
units percent; | units "percent"; | |||
description | description | |||
"Link packet loss expressed as a percentage | "Link packet loss expressed as a percentage of | |||
of the total traffic sent over a configurable interval."; | the total traffic sent over a configurable interval."; | |||
} | } | |||
} | } | |||
container unidirectional-link-residual-bandwidth { | container unidirectional-link-residual-bandwidth { | |||
description | description | |||
"Container for the residual bandwidth | "Container for the residual bandwidth | |||
from the local neighbor to the remote one."; | from the local neighbor to the remote neighbor."; | |||
leaf value { | leaf value { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
units Bps; | units "Bps"; | |||
description | description | |||
"Residual bandwidth."; | "Residual bandwidth."; | |||
} | } | |||
} | } | |||
container unidirectional-link-available-bandwidth { | container unidirectional-link-available-bandwidth { | |||
description | description | |||
"Container for the available bandwidth | "Container for the available bandwidth | |||
from the local neighbor to the remote one."; | from the local neighbor to the remote neighbor."; | |||
leaf value { | leaf value { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
units Bps; | units "Bps"; | |||
description | description | |||
"Available bandwidth."; | "Available bandwidth."; | |||
} | } | |||
} | } | |||
container unidirectional-link-utilized-bandwidth { | container unidirectional-link-utilized-bandwidth { | |||
description | description | |||
"Container for the utilized bandwidth | "Container for the utilized bandwidth | |||
from the local neighbor to the remote one."; | from the local neighbor to the remote neighbor."; | |||
leaf value { | leaf value { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
units Bps; | units "Bps"; | |||
description | description | |||
"Utilized bandwidth."; | "Utilized bandwidth."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping neighbor-te-extensions { | grouping neighbor-te-extensions { | |||
description | description | |||
"Grouping for TE attributes of a neighbor as defined | "Grouping for TE attributes of a neighbor as defined | |||
in RFC5305"; | in RFC 5305."; | |||
reference | ||||
"RFC 5305: IS-IS Extensions for Traffic Engineering"; | ||||
leaf admin-group { | leaf admin-group { | |||
type uint32; | type uint32; | |||
description | description | |||
"Administrative group/Resource Class/Color."; | "Administrative Group / Resource Class/Color."; | |||
} | } | |||
container local-if-ipv4-addrs { | container local-if-ipv4-addrs { | |||
description "All local interface IPv4 addresses."; | description | |||
"All local interface IPv4 addresses."; | ||||
leaf-list local-if-ipv4-addr { | leaf-list local-if-ipv4-addr { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"List of local interface IPv4 addresses."; | "List of local interface IPv4 addresses."; | |||
} | } | |||
} | } | |||
container remote-if-ipv4-addrs { | container remote-if-ipv4-addrs { | |||
description "All remote interface IPv4 addresses."; | description | |||
"All remote interface IPv4 addresses."; | ||||
leaf-list remote-if-ipv4-addr { | leaf-list remote-if-ipv4-addr { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"List of remote interface IPv4 addresses."; | "List of remote interface IPv4 addresses."; | |||
} | } | |||
} | } | |||
leaf te-metric { | leaf te-metric { | |||
type uint32; | type uint32; | |||
description "TE metric."; | description | |||
"TE metric."; | ||||
} | } | |||
leaf max-bandwidth { | leaf max-bandwidth { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
description "Maximum bandwidth."; | description | |||
"Maximum bandwidth."; | ||||
} | } | |||
leaf max-reservable-bandwidth { | leaf max-reservable-bandwidth { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
description "Maximum reservable bandwidth."; | description | |||
"Maximum reservable bandwidth."; | ||||
} | } | |||
container unreserved-bandwidths { | container unreserved-bandwidths { | |||
description "All unreserved bandwidths."; | description | |||
"All unreserved bandwidths."; | ||||
list unreserved-bandwidth { | list unreserved-bandwidth { | |||
leaf priority { | leaf priority { | |||
type uint8 { | type uint8 { | |||
range "0 .. 7"; | range "0 .. 7"; | |||
} | } | |||
description "Priority from 0 to 7."; | description | |||
"Priority from 0 to 7."; | ||||
} | } | |||
leaf unreserved-bandwidth { | leaf unreserved-bandwidth { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
description "Unreserved bandwidth."; | description | |||
"Unreserved bandwidth."; | ||||
} | } | |||
description | description | |||
"List of unreserved bandwidths for different | "List of unreserved bandwidths for different | |||
priorities."; | priorities."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping neighbor-extended { | grouping neighbor-extended { | |||
description | description | |||
"Grouping for attributes of an IS-IS extended neighbor."; | "Grouping for attributes of an IS-IS extended neighbor."; | |||
leaf neighbor-id { | leaf neighbor-id { | |||
type extended-system-id; | type extended-system-id; | |||
description "system-id of the extended neighbor."; | description | |||
"System ID of the extended neighbor."; | ||||
} | } | |||
container instances { | container instances { | |||
description "List of all adjacencies between the local | description | |||
system and the neighbor system-id."; | "List of all adjacencies between the local | |||
system and the neighbor system ID."; | ||||
list instance { | list instance { | |||
key id; | key "id"; | |||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description "Unique identifier of an instance of a | description | |||
particular neighbor."; | "Unique identifier of an instance of a | |||
particular neighbor."; | ||||
} | } | |||
leaf metric { | leaf metric { | |||
type wide-metric; | type wide-metric; | |||
description "IS-IS wide metric for extended neighbor"; | description | |||
"IS-IS wide metric for the extended neighbor."; | ||||
} | } | |||
uses neighbor-gmpls-extensions; | uses neighbor-gmpls-extensions; | |||
uses neighbor-te-extensions; | uses neighbor-te-extensions; | |||
uses neighbor-extended-te-extensions; | uses neighbor-extended-te-extensions; | |||
uses neighbor-link-attributes; | uses neighbor-link-attributes; | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
description "Instance of a particular adjacency."; | description | |||
"Instance of a particular adjacency."; | ||||
} | } | |||
} | } | |||
} | } | |||
grouping neighbor { | grouping neighbor { | |||
description "IS-IS standard neighbor grouping."; | description | |||
"IS-IS standard neighbor grouping."; | ||||
leaf neighbor-id { | leaf neighbor-id { | |||
type extended-system-id; | type extended-system-id; | |||
description "IS-IS neighbor system-id"; | description | |||
"IS-IS neighbor system ID."; | ||||
} | } | |||
container instances { | container instances { | |||
description "List of all adjacencies between the local | description | |||
system and the neighbor system-id."; | "List of all adjacencies between the local | |||
system and the neighbor system ID."; | ||||
list instance { | list instance { | |||
key id; | key "id"; | |||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description "Unique identifier of an instance of a | description | |||
particular neighbor."; | "Unique identifier of an instance of a | |||
particular neighbor."; | ||||
} | } | |||
leaf i-e { | leaf i-e { | |||
type boolean; | type boolean; | |||
description | description | |||
"Internal or External (I/E) Metric bit value. | "Internal or external (I/E) metric bit value. | |||
Set to 'false' to indicate an internal metric."; | Set to 'false' to indicate an internal metric."; | |||
} | } | |||
container default-metric { | container default-metric { | |||
leaf metric { | leaf metric { | |||
type std-metric; | type std-metric; | |||
description "IS-IS default metric value"; | description | |||
"IS-IS default metric value."; | ||||
} | } | |||
description "IS-IS default metric container"; | description | |||
"IS-IS default metric container."; | ||||
} | } | |||
container delay-metric { | container delay-metric { | |||
leaf metric { | leaf metric { | |||
type std-metric; | type std-metric; | |||
description "IS-IS delay metric value"; | description | |||
"IS-IS delay metric value."; | ||||
} | } | |||
leaf supported { | leaf supported { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description "IS-IS delay metric supported"; | description | |||
"IS-IS delay metric supported."; | ||||
} | } | |||
description "IS-IS delay metric container"; | description | |||
"IS-IS delay metric container."; | ||||
} | } | |||
container expense-metric { | container expense-metric { | |||
leaf metric { | leaf metric { | |||
type std-metric; | type std-metric; | |||
description "IS-IS expense metric value"; | description | |||
"IS-IS expense metric value."; | ||||
} | } | |||
leaf supported { | leaf supported { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description "IS-IS expense metric supported"; | description | |||
"IS-IS expense metric supported."; | ||||
} | } | |||
description "IS-IS expense metric container"; | description | |||
"IS-IS expense metric container."; | ||||
} | } | |||
container error-metric { | container error-metric { | |||
leaf metric { | leaf metric { | |||
type std-metric; | type std-metric; | |||
description "IS-IS error metric value"; | description | |||
"IS-IS error metric value."; | ||||
} | } | |||
leaf supported { | leaf supported { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description "IS-IS error metric supported"; | description | |||
"IS-IS error metric supported."; | ||||
} | } | |||
description "IS-IS error metric container"; | description | |||
"IS-IS error metric container."; | ||||
} | } | |||
description "Instance of a particular adjacency | description | |||
as defined in ISO10589."; | "Instance of a particular adjacency as defined in | |||
ISO 10589."; | ||||
reference | ||||
"ISO 10589: Intermediate System to Intermediate System | ||||
intra-domain routeing information exchange protocol | ||||
for use in conjunction with the protocol for providing | ||||
the connectionless-mode network service (ISO 8473)"; | ||||
} | } | |||
} | } | |||
} | } | |||
/* Top-level TLVs */ | /* Top-level TLVs */ | |||
grouping tlv132-ipv4-addresses { | grouping tlv132-ipv4-addresses { | |||
leaf-list ipv4-addresses { | leaf-list ipv4-addresses { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"List of IPv4 addresses of the IS-IS node - IS-IS | "List of IPv4 addresses of the IS-IS node. The IS-IS | |||
reference is TLV 132."; | reference is TLV 132."; | |||
} | } | |||
description "Grouping for TLV132."; | description | |||
"Grouping for TLV 132."; | ||||
} | } | |||
grouping tlv232-ipv6-addresses { | grouping tlv232-ipv6-addresses { | |||
leaf-list ipv6-addresses { | leaf-list ipv6-addresses { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"List of IPv6 addresses of the IS-IS node - IS-IS | "List of IPv6 addresses of the IS-IS node. The IS-IS | |||
reference is TLV 232."; | reference is TLV 232."; | |||
} | } | |||
description "Grouping for TLV232."; | description | |||
"Grouping for TLV 232."; | ||||
} | } | |||
grouping tlv134-ipv4-te-rid { | grouping tlv134-ipv4-te-rid { | |||
leaf ipv4-te-routerid { | leaf ipv4-te-routerid { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"IPv4 Traffic Engineering router ID of the IS-IS node - | "IPv4 Traffic Engineering router ID of the IS-IS node. | |||
IS-IS reference is TLV 134."; | The IS-IS reference is TLV 134."; | |||
} | } | |||
description "Grouping for TLV134."; | description | |||
"Grouping for TLV 134."; | ||||
} | } | |||
grouping tlv140-ipv6-te-rid { | grouping tlv140-ipv6-te-rid { | |||
leaf ipv6-te-routerid { | leaf ipv6-te-routerid { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"IPv6 Traffic Engineering router ID of the IS-IS node - | "IPv6 Traffic Engineering router ID of the IS-IS node. | |||
IS-IS reference is TLV 140."; | The IS-IS reference is TLV 140."; | |||
} | } | |||
description "Grouping for TLV140."; | description | |||
"Grouping for TLV 140."; | ||||
} | } | |||
grouping tlv129-protocols { | grouping tlv129-protocols { | |||
leaf-list protocol-supported { | leaf-list protocol-supported { | |||
type uint8; | type uint8; | |||
description | description | |||
"List of supported protocols of the IS-IS node - | "List of supported protocols of the IS-IS node. | |||
IS-IS reference is TLV 129."; | The IS-IS reference is TLV 129."; | |||
} | } | |||
description "Grouping for TLV129."; | description | |||
"Grouping for TLV 129."; | ||||
} | } | |||
grouping tlv137-hostname { | grouping tlv137-hostname { | |||
leaf dynamic-hostname { | leaf dynamic-hostname { | |||
type string; | type string; | |||
description | description | |||
"Host Name of the IS-IS node - IS-IS reference | "Hostname of the IS-IS node. The IS-IS reference | |||
is TLV 137."; | is TLV 137."; | |||
} | } | |||
description "Grouping for TLV137."; | description | |||
"Grouping for TLV 137."; | ||||
} | } | |||
grouping tlv10-authentication { | grouping tlv10-authentication { | |||
container authentication { | container authentication { | |||
leaf authentication-type { | leaf authentication-type { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Authentication type to be used with IS-IS node."; | "Authentication type to be used with an IS-IS node."; | |||
} | } | |||
leaf authentication-key { | leaf authentication-key { | |||
type string; | type string; | |||
description | description | |||
"Authentication key to be used. For security reasons, | "Authentication key to be used. For security reasons, | |||
the authentication key MUST NOT be presented in | the authentication key MUST NOT be presented in | |||
a clear text format in response to any request | a cleartext format in response to any request | |||
(e.g., via get, get-config)."; | (e.g., via get or get-config)."; | |||
} | } | |||
description | description | |||
"IS-IS node authentication information container - | "IS-IS node authentication information container. The | |||
IS-IS reference is TLV 10."; | IS-IS reference is TLV 10."; | |||
} | } | |||
description "Grouping for TLV10."; | description | |||
"Grouping for TLV 10."; | ||||
} | } | |||
grouping tlv229-mt { | grouping tlv229-mt { | |||
container mt-entries { | container mt-entries { | |||
list topology { | list topology { | |||
description | description | |||
"List of topologies supported"; | "List of topologies supported."; | |||
leaf mt-id { | leaf mt-id { | |||
type uint16 { | type uint16 { | |||
range "0 .. 4095"; | range "0 .. 4095"; | |||
} | } | |||
description | description | |||
"Multi-Topology identifier of topology."; | "Multi-Topology (MT) identifier of the topology."; | |||
} | } | |||
container attributes { | container attributes { | |||
leaf-list flags { | leaf-list flags { | |||
type identityref { | type identityref { | |||
base tlv229-flag; | base tlv229-flag; | |||
} | ||||
description | ||||
"This list contains identities for the bits which are | ||||
set."; | ||||
} | } | |||
description | description | |||
"TLV 229 flags."; | "This list contains identities for the bits that | |||
are set."; | ||||
} | ||||
description | ||||
"TLV 229 flags."; | ||||
} | } | |||
} | } | |||
description | description | |||
"IS-IS node topology information container - | "IS-IS node topology information container. The | |||
IS-IS reference is TLV 229."; | IS-IS reference is TLV 229."; | |||
} | } | |||
description "Grouping for TLV229."; | description | |||
"Grouping for TLV 229."; | ||||
} | } | |||
grouping tlv242-router-capabilities { | grouping tlv242-router-capabilities { | |||
container router-capabilities { | container router-capabilities { | |||
list router-capability { | list router-capability { | |||
container flags { | container flags { | |||
leaf-list router-capability-flags { | leaf-list router-capability-flags { | |||
type identityref { | type identityref { | |||
base router-capability-flag; | base router-capability-flag; | |||
} | ||||
description | ||||
"This list contains identities for the bits which are | ||||
set."; | ||||
} | } | |||
description | description | |||
"Router capability flags."; | "This list contains identities for the bits that | |||
are set."; | ||||
} | } | |||
container node-tags { | description | |||
if-feature node-tag; | "Router Capability flags."; | |||
list node-tag { | } | |||
leaf tag { | container node-tags { | |||
type uint32; | if-feature "node-tag"; | |||
description "Node tag value."; | list node-tag { | |||
} | leaf tag { | |||
description "List of tags."; | type uint32; | |||
description | ||||
"Node tag value."; | ||||
} | } | |||
description "Container for node admin tags"; | description | |||
"List of tags."; | ||||
} | } | |||
uses unknown-tlvs; | ||||
description | description | |||
"IS-IS node capabilities. This list element may | "Container for node administrative tags."; | |||
be extended with detailed information - IS-IS | ||||
reference is TLV 242."; | ||||
} | } | |||
description "List of router capability TLVs."; | uses unknown-tlvs; | |||
description | ||||
"IS-IS node capabilities. This list element may | ||||
be extended with detailed information. The IS-IS | ||||
reference is TLV 242."; | ||||
} | } | |||
description "Grouping for TLV242."; | description | |||
"List of Router Capability TLVs."; | ||||
} | ||||
description | ||||
"Grouping for TLV 242."; | ||||
} | } | |||
grouping tlv138-srlg { | grouping tlv138-srlg { | |||
description | description | |||
"Grouping for TLV138."; | "Grouping for TLV 138."; | |||
container links-srlgs { | container links-srlgs { | |||
list links { | list links { | |||
leaf neighbor-id { | leaf neighbor-id { | |||
type extended-system-id; | type extended-system-id; | |||
description "system-id of the extended neighbor."; | description | |||
"System ID of the extended neighbor."; | ||||
} | } | |||
leaf flags { | leaf flags { | |||
type uint8; | type uint8; | |||
description | description | |||
"Flags associated with the link."; | "Flags associated with the link."; | |||
} | } | |||
leaf link-local-id { | leaf link-local-id { | |||
type union { | type union { | |||
type inet:ip-address; | type inet:ip-address; | |||
type uint32; | type uint32; | |||
} | } | |||
description | description | |||
"Local identifier of the link. | "Local identifier of the link. | |||
It could be an IPv4 address or a local identifier."; | It could be an IPv4 address or a local identifier."; | |||
} | } | |||
leaf link-remote-id { | leaf link-remote-id { | |||
type union { | type union { | |||
type inet:ip-address; | type inet:ip-address; | |||
type uint32; | type uint32; | |||
} | } | |||
description | description | |||
"Remote identifier of the link. | "Remote identifier of the link. | |||
It could be an IPv4 address or a remotely learned | It could be an IPv4 address or a remotely learned | |||
identifier."; | identifier."; | |||
} | } | |||
container srlgs { | container srlgs { | |||
description "List of SRLGs."; | description | |||
"List of SRLGs."; | ||||
leaf-list srlg { | leaf-list srlg { | |||
type uint32; | type uint32; | |||
description | description | |||
"SRLG value of the link."; | "SRLG value of the link."; | |||
} | } | |||
} | } | |||
description | description | |||
"SRLG attribute of a link."; | "SRLG attribute of a link."; | |||
} | } | |||
description | description | |||
"List of links with SRLGs"; | "List of links with SRLGs."; | |||
} | } | |||
} | } | |||
/* Grouping for LSDB description */ | /* Grouping for LSDB descriptions */ | |||
grouping lsp-entry { | grouping lsp-entry { | |||
description "IS-IS LSP database entry grouping"; | description | |||
"IS-IS LSP database entry grouping."; | ||||
leaf decoded-completed { | leaf decoded-completed { | |||
type boolean; | type boolean; | |||
description "IS-IS LSP body fully decoded."; | description | |||
"The IS-IS LSP body has been fully decoded."; | ||||
} | } | |||
leaf raw-data { | leaf raw-data { | |||
type yang:hex-string; | type yang:hex-string; | |||
description | description | |||
"The hexadecimal representation of the complete LSP in | "The hexadecimal representation of the complete LSP | |||
network-byte order (NBO) as received or originated."; | as received or originated, in network byte order."; | |||
} | } | |||
leaf lsp-id { | leaf lsp-id { | |||
type lsp-id; | type lsp-id; | |||
description "LSP ID of the LSP"; | description | |||
"LSP ID of the LSP."; | ||||
} | } | |||
leaf checksum { | leaf checksum { | |||
type uint16; | type uint16; | |||
description "LSP checksum"; | description | |||
"LSP checksum."; | ||||
} | } | |||
leaf remaining-lifetime { | leaf remaining-lifetime { | |||
type uint16; | type uint16; | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"Remaining lifetime (in seconds) until LSP expiration."; | "Remaining lifetime (in seconds) until LSP expiration."; | |||
} | } | |||
leaf sequence { | leaf sequence { | |||
type uint32; | type uint32; | |||
description | description | |||
"This leaf describes the sequence number of the LSP."; | "This leaf describes the sequence number of the LSP."; | |||
} | } | |||
container attributes { | container attributes { | |||
leaf-list lsp-flags { | leaf-list lsp-flags { | |||
type identityref { | type identityref { | |||
base lsp-flag; | base lsp-flag; | |||
} | ||||
description | ||||
"This list contains identities for the bits which are | ||||
set."; | ||||
} | } | |||
description "LSP attributes."; | description | |||
"This list contains identities for the bits that | ||||
are set."; | ||||
} | ||||
description | ||||
"LSP attributes."; | ||||
} | } | |||
uses tlv132-ipv4-addresses; | uses tlv132-ipv4-addresses; | |||
uses tlv232-ipv6-addresses; | uses tlv232-ipv6-addresses; | |||
uses tlv134-ipv4-te-rid; | uses tlv134-ipv4-te-rid; | |||
uses tlv140-ipv6-te-rid; | uses tlv140-ipv6-te-rid; | |||
uses tlv129-protocols; | uses tlv129-protocols; | |||
uses tlv137-hostname; | uses tlv137-hostname; | |||
uses tlv10-authentication; | uses tlv10-authentication; | |||
uses tlv229-mt; | uses tlv229-mt; | |||
uses tlv242-router-capabilities; | uses tlv242-router-capabilities; | |||
uses tlv138-srlg; | uses tlv138-srlg; | |||
skipping to change at page 93, line 18 ¶ | skipping to change at line 4633 ¶ | |||
uses tlv232-ipv6-addresses; | uses tlv232-ipv6-addresses; | |||
uses tlv134-ipv4-te-rid; | uses tlv134-ipv4-te-rid; | |||
uses tlv140-ipv6-te-rid; | uses tlv140-ipv6-te-rid; | |||
uses tlv129-protocols; | uses tlv129-protocols; | |||
uses tlv137-hostname; | uses tlv137-hostname; | |||
uses tlv10-authentication; | uses tlv10-authentication; | |||
uses tlv229-mt; | uses tlv229-mt; | |||
uses tlv242-router-capabilities; | uses tlv242-router-capabilities; | |||
uses tlv138-srlg; | uses tlv138-srlg; | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
container is-neighbor { | container is-neighbor { | |||
list neighbor { | list neighbor { | |||
key neighbor-id; | key "neighbor-id"; | |||
uses neighbor; | uses neighbor; | |||
description "List of neighbors."; | description | |||
"List of neighbors."; | ||||
} | } | |||
description | description | |||
"Standard IS neighbors container - IS-IS reference is | "Standard IS neighbors container. The IS-IS reference is | |||
TLV 2."; | TLV 2."; | |||
} | } | |||
container extended-is-neighbor { | container extended-is-neighbor { | |||
list neighbor { | list neighbor { | |||
key neighbor-id; | key "neighbor-id"; | |||
uses neighbor-extended; | uses neighbor-extended; | |||
description | description | |||
"List of extended IS neighbors"; | "List of extended IS neighbors."; | |||
} | } | |||
description | description | |||
"Standard IS extended neighbors container - IS-IS | "Standard IS extended neighbors container. The IS-IS | |||
reference is TLV 22"; | reference is TLV 22."; | |||
} | } | |||
container ipv4-internal-reachability { | container ipv4-internal-reachability { | |||
list prefixes { | list prefixes { | |||
uses prefix-ipv4-std; | uses prefix-ipv4-std; | |||
description "List of prefixes."; | description | |||
"List of prefixes."; | ||||
} | } | |||
description | description | |||
"IPv4 internal reachability information container - IS-IS | "IPv4 internal reachability information container. | |||
reference is TLV 128."; | The IS-IS reference is TLV 128."; | |||
} | } | |||
container ipv4-external-reachability { | container ipv4-external-reachability { | |||
list prefixes { | list prefixes { | |||
uses prefix-ipv4-std; | uses prefix-ipv4-std; | |||
description "List of prefixes."; | description | |||
"List of prefixes."; | ||||
} | } | |||
description | description | |||
"IPv4 external reachability information container - | "IPv4 external reachability information container. The | |||
IS-IS reference is TLV 130."; | IS-IS reference is TLV 130."; | |||
} | } | |||
container extended-ipv4-reachability { | container extended-ipv4-reachability { | |||
list prefixes { | list prefixes { | |||
uses prefix-ipv4-extended; | uses prefix-ipv4-extended; | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
description "List of prefixes."; | description | |||
"List of prefixes."; | ||||
} | } | |||
description | description | |||
"IPv4 extended reachability information container - | "IPv4 extended reachability information container. The | |||
IS-IS reference is TLV 135."; | IS-IS reference is TLV 135."; | |||
} | } | |||
container mt-is-neighbor { | container mt-is-neighbor { | |||
list neighbor { | list neighbor { | |||
leaf mt-id { | leaf mt-id { | |||
type uint16 { | type uint16 { | |||
range "0 .. 4095"; | range "0 .. 4095"; | |||
} | } | |||
description "Multi-topology (MT) identifier"; | description | |||
"Multi-Topology (MT) identifier."; | ||||
} | } | |||
uses neighbor-extended; | uses neighbor-extended; | |||
description "List of neighbors."; | description | |||
"List of neighbors."; | ||||
} | } | |||
description | description | |||
"IS-IS multi-topology neighbor container - IS-IS | "IS-IS MT neighbor container. The IS-IS reference is | |||
reference is TLV 223."; | TLV 223."; | |||
} | } | |||
container mt-extended-ipv4-reachability { | container mt-extended-ipv4-reachability { | |||
list prefixes { | list prefixes { | |||
leaf mt-id { | leaf mt-id { | |||
type uint16 { | type uint16 { | |||
range "0 .. 4095"; | range "0 .. 4095"; | |||
} | } | |||
description "Multi-topology (MT) identifier"; | description | |||
"MT identifier."; | ||||
} | } | |||
uses prefix-ipv4-extended; | uses prefix-ipv4-extended; | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
description "List of extended prefixes."; | description | |||
"List of extended prefixes."; | ||||
} | } | |||
description | description | |||
"IPv4 multi-topology (MT) extended reachability | "IPv4 MT extended reachability information container. | |||
information container - IS-IS reference is TLV 235."; | The IS-IS reference is TLV 235."; | |||
reference | ||||
"RFC 5120: M-ISIS: Multi Topology (MT) Routing in | ||||
Intermediate System to Intermediate Systems (IS-ISs)"; | ||||
} | } | |||
container mt-ipv6-reachability { | container mt-ipv6-reachability { | |||
list prefixes { | list prefixes { | |||
leaf MT-ID { | leaf mt-id { | |||
type uint16 { | type uint16 { | |||
range "0 .. 4095"; | range "0 .. 4095"; | |||
} | } | |||
description "Multi-topology (MT) identifier"; | description | |||
"MT identifier."; | ||||
} | } | |||
uses prefix-ipv6-extended; | uses prefix-ipv6-extended; | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
description "List of IPv6 extended prefixes."; | description | |||
"List of IPv6 extended prefixes."; | ||||
} | } | |||
description | description | |||
"IPv6 multi-topology (MT) extended reachability | "IPv6 MT extended reachability information container. | |||
information container - IS-IS reference is TLV 237."; | The IS-IS reference is TLV 237."; | |||
reference | ||||
"RFC 5120: M-ISIS: Multi Topology (MT) Routing in | ||||
Intermediate System to Intermediate Systems (IS-ISs)"; | ||||
} | } | |||
container ipv6-reachability { | container ipv6-reachability { | |||
list prefixes { | list prefixes { | |||
uses prefix-ipv6-extended; | uses prefix-ipv6-extended; | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
description "List of IPv6 prefixes."; | description | |||
"List of IPv6 prefixes."; | ||||
} | } | |||
description | description | |||
"IPv6 reachability information container - IS-IS | "IPv6 reachability information container. The IS-IS | |||
reference is TLV 236."; | reference is TLV 236."; | |||
} | } | |||
} | } | |||
grouping lsdb { | grouping lsdb { | |||
description "Link State Database (LSDB) grouping"; | description | |||
"Link State Database (LSDB) grouping."; | ||||
container database { | container database { | |||
config false; | config false; | |||
list levels { | list levels { | |||
key level; | key "level"; | |||
leaf level { | leaf level { | |||
type level-number; | type level-number; | |||
description "LSDB level number (1 or 2)"; | description | |||
"LSDB level number (1 or 2)."; | ||||
} | } | |||
list lsp { | list lsp { | |||
key lsp-id; | key "lsp-id"; | |||
uses lsp-entry; | uses lsp-entry; | |||
description "List of LSPs in LSDB"; | description | |||
"List of LSPs in the LSDB."; | ||||
} | } | |||
description "List of LSPs for the LSDB level container"; | description | |||
"List of LSPs for the LSDB-level container."; | ||||
} | } | |||
description "IS-IS Link State database container"; | description | |||
"IS-IS LSDB container."; | ||||
} | } | |||
} | } | |||
/* Augmentations */ | /* Augmentations */ | |||
augment "/rt:routing/" | augment "/rt:routing/" | |||
+"rt:ribs/rt:rib/rt:routes/rt:route" { | + "rt:ribs/rt:rib/rt:routes/rt:route" { | |||
when "rt:source-protocol = 'isis:isis'" { | when "derived-from-or-self(rt:source-protocol, 'isis:isis')" { | |||
description "IS-IS-specific route attributes."; | description | |||
"IS-IS-specific route attributes."; | ||||
} | } | |||
uses route-content; | uses route-content; | |||
description | description | |||
"This augments route object in RIB with IS-IS-specific | "This augments the route object in the Routing Information | |||
attributes."; | Base (RIB) with IS-IS-specific attributes."; | |||
} | } | |||
augment "/if:interfaces/if:interface" { | augment "/if:interfaces/if:interface" { | |||
leaf clns-mtu { | leaf clns-mtu { | |||
if-feature osi-interface; | if-feature "osi-interface"; | |||
type uint16; | type uint16; | |||
description "CLNS MTU of the interface"; | description | |||
"Connectionless-mode Network Service (CLNS) MTU of the | ||||
interface."; | ||||
} | } | |||
description "ISO specific interface parameters."; | description | |||
"ISO-specific interface parameters."; | ||||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+"rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
when "rt:type = 'isis:isis'" { | when "derived-from-or-self(rt:type, 'isis:isis')" { | |||
description | description | |||
"This augment is only valid when routing protocol | "This augmentation is only valid when the routing protocol | |||
instance type is 'isis'"; | instance type is 'isis'."; | |||
} | } | |||
description | description | |||
"This augments a routing protocol instance with IS-IS | "This augments a routing protocol instance with IS-IS-specific | |||
specific parameters."; | parameters."; | |||
container isis { | container isis { | |||
must "count(area-address) > 0" { | must 'count(area-address) > 0' { | |||
error-message | error-message "At least one area address must be " | |||
"At least one area-address must be configured."; | + "configured."; | |||
description | description | |||
"Enforce configuration of at least one area."; | "Enforces the configuration of at least one area."; | |||
} | } | |||
uses instance-config; | uses instance-config; | |||
uses instance-state; | uses instance-state; | |||
container topologies { | container topologies { | |||
if-feature multi-topology; | if-feature "multi-topology"; | |||
list topology { | list topology { | |||
key "name"; | key "name"; | |||
leaf enable { | leaf enabled { | |||
type boolean; | type boolean; | |||
description "Topology enable configuration"; | description | |||
"Enables the topology configuration."; | ||||
} | } | |||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "../../../../../../rt:ribs/rt:rib/rt:name"; | path "../../../../../../rt:ribs/rt:rib/rt:name"; | |||
} | } | |||
description | description | |||
"Routing Information Base (RIB) corresponding | "RIB corresponding to the topology."; | |||
to topology."; | ||||
} | } | |||
uses multi-topology-config; | uses multi-topology-config; | |||
description | ||||
description "List of topologies"; | "List of topologies."; | |||
} | } | |||
description "Multi-topology container"; | description | |||
"MT container."; | ||||
} | } | |||
container interfaces { | container interfaces { | |||
list interface { | list interface { | |||
key "name"; | key "name"; | |||
leaf name { | leaf name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Reference to the interface within | "Reference to the interface within | |||
the routing-instance."; | the routing instance."; | |||
} | } | |||
uses interface-config; | uses interface-config; | |||
uses interface-state; | uses interface-state; | |||
container topologies { | container topologies { | |||
if-feature multi-topology; | if-feature "multi-topology"; | |||
list topology { | list topology { | |||
key name; | key "name"; | |||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "../../../../../../../../"+ | path "../../../../../../../../" | |||
"rt:ribs/rt:rib/rt:name"; | + "rt:ribs/rt:rib/rt:name"; | |||
} | } | |||
description | description | |||
"Routing Information Base (RIB) corresponding | "RIB corresponding to the topology."; | |||
to topology."; | ||||
} | } | |||
uses multi-topology-interface-config; | uses multi-topology-interface-config; | |||
description "List of interface topologies"; | description | |||
"List of interface topologies."; | ||||
} | } | |||
description "Multi-topology container"; | description | |||
"MT container."; | ||||
} | } | |||
description "List of IS-IS interfaces."; | description | |||
"List of IS-IS interfaces."; | ||||
} | } | |||
description | description | |||
"IS-IS interface specific configuration container"; | "Configuration container specific to IS-IS interfaces."; | |||
} | } | |||
description | description | |||
"IS-IS configuration/state top-level container"; | "IS-IS configuration/state top-level container."; | |||
} | } | |||
} | } | |||
/* RPC methods */ | /* RPC methods */ | |||
rpc clear-adjacency { | rpc clear-adjacency { | |||
description | description | |||
"This RPC request clears a particular set of IS-IS | "This RPC request clears a particular set of IS-IS | |||
adjacencies. If the operation fails due to an internal | adjacencies. If the operation fails for an internal | |||
reason, then the error-tag and error-app-tag should be | reason, then the 'error-tag' and 'error-app-tag' should be | |||
set indicating the reason for the failure."; | set indicating the reason for the failure."; | |||
reference | ||||
"RFC 6241: Network Configuration Protocol (NETCONF)"; | ||||
input { | input { | |||
leaf routing-protocol-instance-name { | leaf routing-protocol-instance-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
mandatory "true"; | mandatory true; | |||
description | description | |||
"Name of the IS-IS protocol instance whose IS-IS | "Name of the IS-IS protocol instance whose IS-IS | |||
adjacency is being cleared. | adjacency is being cleared. | |||
If the corresponding IS-IS instance doesn't exist, | If the corresponding IS-IS instance doesn't exist, | |||
then the operation will fail with an error-tag of | then the operation will fail with an 'error-tag' of | |||
'data-missing' and an error-app-tag of | 'data-missing' and an 'error-app-tag' of | |||
'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
} | } | |||
leaf level { | leaf level { | |||
type level; | type level; | |||
description | description | |||
"IS-IS level of the adjacency to be cleared. If the | "IS-IS level of the adjacency to be cleared. If the | |||
IS-IS level is level-1-2, both level 1 and level 2 | IS-IS level is 'level-all', level-1 and level-2 | |||
adjacencies would be cleared. | adjacencies would both be cleared. | |||
If the value provided is different from the one | If the value provided is different from the value | |||
authorized in the enum type, then the operation | authorized in the enum type, then the operation | |||
SHALL fail with an error-tag of 'data-missing' and | SHALL fail with an 'error-tag' of 'data-missing' and | |||
an error-app-tag of 'bad-isis-level'."; | an 'error-app-tag' of 'bad-isis-level'."; | |||
} | } | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"IS-IS interface name. | "IS-IS interface name. | |||
If the corresponding IS-IS interface doesn't exist, | If the corresponding IS-IS interface doesn't exist, | |||
then the operation SHALL fail with an error-tag of | then the operation SHALL fail with an 'error-tag' of | |||
'data-missing' and an error-app-tag of | 'data-missing' and an 'error-app-tag' of | |||
'isis-interface-not-found'."; | 'isis-interface-not-found'."; | |||
} | } | |||
} | } | |||
} | } | |||
rpc clear-database { | rpc clear-database { | |||
description | description | |||
"This RPC request clears a particular IS-IS database. If | "This RPC request clears a particular IS-IS database. | |||
the operation fails for an IS-IS internal reason, then | Additionally, all neighbor adjacencies will be forced to | |||
the error-tag and error-app-tag should be set | the DOWN state and self-originated LSPs will be | |||
indicating the reason for the failure."; | reoriginated. If the operation fails for an IS-IS | |||
internal reason, then the 'error-tag' and 'error-app-tag' | ||||
should be set indicating the reason for the failure."; | ||||
input { | input { | |||
leaf routing-protocol-instance-name { | leaf routing-protocol-instance-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
mandatory "true"; | mandatory true; | |||
description | description | |||
"Name of the IS-IS protocol instance whose IS-IS | "Name of the IS-IS protocol instance whose IS-IS | |||
database(s) is/are being cleared. | database or databases are being cleared. | |||
If the corresponding IS-IS instance doesn't exist, | If the corresponding IS-IS instance doesn't exist, | |||
then the operation will fail with an error-tag of | then the operation will fail with an 'error-tag' of | |||
'data-missing' and an error-app-tag of | 'data-missing' and an 'error-app-tag' of | |||
'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
} | } | |||
leaf level { | leaf level { | |||
type level; | type level; | |||
description | description | |||
"IS-IS level of the adjacency to be cleared. If the | "IS-IS level of the adjacency to be cleared. If the | |||
IS-IS level is level-1-2, both level 1 and level 2 | IS-IS level is 'level-all', the databases for both | |||
databases would be cleared. | level 1 and level 2 would be cleared. | |||
If the value provided is different from the one | If the value provided is different from the value | |||
authorized in the enum type, then the operation | authorized in the enum type, then the operation | |||
SHALL fail with an error-tag of 'data-missing' and | SHALL fail with an 'error-tag' of 'data-missing' and | |||
an error-app-tag of 'bad-isis-level'."; | an 'error-app-tag' of 'bad-isis-level'."; | |||
} | } | |||
} | } | |||
} | } | |||
/* Notifications */ | /* Notifications */ | |||
notification database-overload { | notification database-overload { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf overload { | leaf overload { | |||
type enumeration { | type enumeration { | |||
enum off { | enum off { | |||
description | description | |||
"Indicates IS-IS instance has left overload state"; | "Indicates that the IS-IS instance has left the | |||
overload state."; | ||||
} | } | |||
enum on { | enum on { | |||
description | description | |||
"Indicates IS-IS instance has entered overload state"; | "Indicates that the IS-IS instance has entered the | |||
overload state."; | ||||
} | } | |||
} | } | |||
description "New overload state of the IS-IS instance"; | description | |||
"New overload state of the IS-IS instance."; | ||||
} | } | |||
description | description | |||
"This notification is sent when an IS-IS instance | "This notification is sent when an IS-IS instance | |||
overload state changes."; | overload state changes."; | |||
} | } | |||
notification lsp-too-large { | notification lsp-too-large { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf pdu-size { | leaf pdu-size { | |||
type uint32; | type uint32; | |||
description "Size of the LSP PDU"; | description | |||
"Size of the LSP PDU."; | ||||
} | } | |||
leaf lsp-id { | leaf lsp-id { | |||
type lsp-id; | type lsp-id; | |||
description "LSP ID"; | description | |||
"LSP ID."; | ||||
} | } | |||
description | description | |||
"This notification is sent when we attempt to propagate | "This notification is sent when an attempt to propagate | |||
an LSP that is larger than the dataLinkBlockSize (ISO10589) | an LSP that is larger than the dataLinkBlockSize (ISO 10589) | |||
for the circuit. The notification generation must be | for the circuit occurs. The generation of the notification | |||
throttled with at least 5 seconds between successive | must be throttled with at least 5 seconds between successive | |||
notifications."; | notifications."; | |||
reference | ||||
"ISO 10589: Intermediate System to Intermediate System | ||||
intra-domain routeing information exchange protocol | ||||
for use in conjunction with the protocol for providing | ||||
the connectionless-mode network service (ISO 8473)"; | ||||
} | } | |||
notification if-state-change { | notification if-state-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf state { | leaf state { | |||
type if-state-type; | type if-state-type; | |||
description "Interface state."; | description | |||
"Interface state."; | ||||
} | } | |||
description | description | |||
"This notification is sent when an interface | "This notification is sent when an interface | |||
state change is detected."; | state change is detected."; | |||
} | } | |||
notification corrupted-lsp-detected { | notification corrupted-lsp-detected { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf lsp-id { | leaf lsp-id { | |||
type lsp-id; | type lsp-id; | |||
description "LSP ID"; | description | |||
"LSP ID."; | ||||
} | } | |||
description | description | |||
"This notification is sent when we find that | "This notification is sent when an LSP that was stored in | |||
an LSP that was stored in memory has become | memory has become corrupted."; | |||
corrupted."; | ||||
} | } | |||
notification attempt-to-exceed-max-sequence { | notification attempt-to-exceed-max-sequence { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf lsp-id { | leaf lsp-id { | |||
type lsp-id; | type lsp-id; | |||
description "LSP ID"; | description | |||
"LSP ID."; | ||||
} | } | |||
description | description | |||
"This notification is sent when the system | "This notification is sent when the system | |||
wraps the 32-bit sequence counter of an LSP."; | wraps the 32-bit sequence counter of an LSP."; | |||
} | } | |||
notification id-len-mismatch { | notification id-len-mismatch { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf pdu-field-len { | leaf pdu-field-len { | |||
type uint8; | type uint8; | |||
description "Size of the ID length in the received PDU"; | description | |||
"Value for the system ID length in the received PDU."; | ||||
} | } | |||
leaf raw-pdu { | leaf raw-pdu { | |||
type binary; | type binary; | |||
description "Received raw PDU."; | description | |||
"Received raw PDU."; | ||||
} | } | |||
description | description | |||
"This notification is sent when we receive a PDU | "This notification is sent when a PDU with a different value | |||
with a different value for the system-id length. | for the system ID length is received. The generation of the | |||
The notification generation must be throttled | notification must be throttled with at least 5 seconds | |||
with at least 5 seconds between successive | between successive notifications."; | |||
notifications."; | ||||
} | } | |||
notification max-area-addresses-mismatch { | notification max-area-addresses-mismatch { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf max-area-addresses { | leaf max-area-addresses { | |||
type uint8; | type uint8; | |||
description "Received number of supported areas"; | description | |||
"Received number of supported areas."; | ||||
} | } | |||
leaf raw-pdu { | leaf raw-pdu { | |||
type binary; | type binary; | |||
description "Received raw PDU."; | description | |||
"Received raw PDU."; | ||||
} | } | |||
description | description | |||
"This notification is sent when we receive a PDU | "This notification is sent when a PDU with a different value | |||
with a different value for the Maximum Area Addresses. | for the Maximum Area Addresses has been received. The | |||
The notification generation must be throttled | generation of the notification must be throttled with | |||
with at least 5 seconds between successive | at least 5 seconds between successive notifications."; | |||
notifications."; | ||||
} | } | |||
notification own-lsp-purge { | notification own-lsp-purge { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf lsp-id { | leaf lsp-id { | |||
type lsp-id; | type lsp-id; | |||
description "LSP ID"; | description | |||
"LSP ID."; | ||||
} | } | |||
description | description | |||
"This notification is sent when the system receives | "This notification is sent when the system receives | |||
a PDU with its own system-id and zero age."; | a PDU with its own system ID and zero age."; | |||
} | } | |||
notification sequence-number-skipped { | notification sequence-number-skipped { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf lsp-id { | leaf lsp-id { | |||
type lsp-id; | type lsp-id; | |||
description "LSP ID"; | description | |||
"LSP ID."; | ||||
} | } | |||
description | description | |||
"This notification is sent when the system receives a | "This notification is sent when the system receives a | |||
PDU with its own system-id and different contents. The | PDU with its own system ID and different contents. The | |||
system has to originate the LSP with a higher sequence | system has to originate the LSP with a higher sequence | |||
number."; | number."; | |||
} | } | |||
notification authentication-type-failure { | notification authentication-type-failure { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf raw-pdu { | leaf raw-pdu { | |||
type binary; | type binary; | |||
description "Received raw PDU."; | description | |||
"Received raw PDU."; | ||||
} | } | |||
description | description | |||
"This notification is sent when the system receives a | "This notification is sent when the system receives a | |||
PDU with the wrong authentication type field. | PDU with the wrong authentication type field. | |||
The notification generation must be throttled | The generation of the notification must be throttled | |||
with at least 5 seconds between successive | with at least 5 seconds between successive notifications."; | |||
notifications."; | ||||
} | } | |||
notification authentication-failure { | notification authentication-failure { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf raw-pdu { | leaf raw-pdu { | |||
type binary; | type binary; | |||
description "Received raw PDU."; | description | |||
"Received raw PDU."; | ||||
} | } | |||
description | description | |||
"This notification is sent when the system receives | "This notification is sent when the system receives | |||
a PDU with the wrong authentication information. | a PDU on which authentication fails. The generation of the | |||
The notification generation must be throttled | notification must be throttled with at least 5 seconds | |||
with at least 5 seconds between successive | between successive notifications."; | |||
notifications."; | ||||
} | } | |||
notification version-skew { | notification version-skew { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf protocol-version { | leaf protocol-version { | |||
type uint8; | type uint8; | |||
description "Protocol version received in the PDU."; | description | |||
"Protocol version received in the PDU."; | ||||
} | } | |||
leaf raw-pdu { | leaf raw-pdu { | |||
type binary; | type binary; | |||
description "Received raw PDU."; | description | |||
"Received raw PDU."; | ||||
} | } | |||
description | description | |||
"This notification is sent when the system receives a | "This notification is sent when the system receives a | |||
PDU with a different protocol version number. | PDU with a different protocol version number. | |||
The notification generation must be throttled | The generation of the notification must be throttled | |||
with at least 5 seconds between successive | with at least 5 seconds between successive notifications."; | |||
notifications."; | ||||
} | } | |||
notification area-mismatch { | notification area-mismatch { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf raw-pdu { | leaf raw-pdu { | |||
type binary; | type binary; | |||
description "Received raw PDU."; | description | |||
"Received raw PDU."; | ||||
} | } | |||
description | description | |||
"This notification is sent when the system receives a | "This notification is sent when the system receives a | |||
Hello PDU from an IS that does not share any area | Hello PDU from an IS that does not share any area | |||
address. The notification generation must be throttled | address. The generation of the notification must be | |||
with at least 5 seconds between successive | throttled with at least 5 seconds between successive | |||
notifications."; | notifications."; | |||
} | } | |||
notification rejected-adjacency { | notification rejected-adjacency { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf raw-pdu { | leaf raw-pdu { | |||
type binary; | type binary; | |||
description | description | |||
"Received raw PDU."; | "Received raw PDU."; | |||
} | } | |||
leaf reason { | leaf reason { | |||
type string { | type string { | |||
length "0..255"; | length "0..255"; | |||
} | } | |||
description | description | |||
"The system may provide a reason to reject the | "The system may provide a reason to reject the | |||
adjacency. If the reason is not available, | adjacency. If the reason is not available, | |||
the reason string will not be returned. | the reason string will not be returned. | |||
The expected format is a single line text."; | The expected format is a single line of text."; | |||
} | } | |||
description | description | |||
"This notification is sent when the system receives a | "This notification is sent when the system receives a | |||
Hello PDU from an IS but does not establish an adjacency | Hello PDU from an IS but does not establish an adjacency | |||
for some reason. The notification generation must be | for some reason. The generation of the notification | |||
throttled with at least 5 seconds between successive | must be throttled with at least 5 seconds between | |||
notifications."; | successive notifications."; | |||
} | } | |||
notification protocols-supported-mismatch { | notification protocols-supported-mismatch { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf raw-pdu { | leaf raw-pdu { | |||
type binary; | type binary; | |||
description "Received raw PDU."; | description | |||
"Received raw PDU."; | ||||
} | } | |||
leaf-list protocols { | leaf-list protocols { | |||
type uint8; | type uint8; | |||
description | description | |||
"List of protocols supported by the remote system."; | "List of protocols supported by the remote system."; | |||
} | } | |||
description | description | |||
"This notification is sent when the system receives a | "This notification is sent when the system receives a | |||
non-pseudonode LSP that has no matching protocols | non-pseudonode LSP that has no matching protocols | |||
supported. The notification generation must be throttled | supported. The generation of the notification must be | |||
with at least 5 seconds between successive | throttled with at least 5 seconds between successive | |||
notifications."; | notifications."; | |||
} | } | |||
notification lsp-error-detected { | notification lsp-error-detected { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf lsp-id { | leaf lsp-id { | |||
type lsp-id; | type lsp-id; | |||
description "LSP ID."; | description | |||
"LSP ID."; | ||||
} | } | |||
leaf raw-pdu { | leaf raw-pdu { | |||
type binary; | type binary; | |||
description "Received raw PDU."; | description | |||
"Received raw PDU."; | ||||
} | } | |||
leaf error-offset { | leaf error-offset { | |||
type uint32; | type uint32; | |||
description | description | |||
"If the problem is a malformed TLV, the error-offset | "If the problem is a malformed TLV, the error offset | |||
points to the start of the TLV. If the problem is with | points to the start of the TLV. If the problem is with | |||
the LSP header, the error-offset points to the errant | the LSP header, the error offset points to the errant | |||
byte"; | byte."; | |||
} | } | |||
leaf tlv-type { | leaf tlv-type { | |||
type uint8; | type uint8; | |||
description | description | |||
"If the problem is a malformed TLV, the tlv-type is set | "If the problem is a malformed TLV, the TLV type is set | |||
to the type value of the suspicious TLV. Otherwise, | to the type value of the suspicious TLV. Otherwise, | |||
this leaf is not present."; | this leaf is not present."; | |||
} | } | |||
description | description | |||
"This notification is sent when the system receives an | "This notification is sent when the system receives an | |||
LSP with a parse error. The notification generation must | LSP with a parse error. The generation of the notification | |||
be throttled with at least 5 seconds between successive | must be throttled with at least 5 seconds between | |||
notifications."; | successive notifications."; | |||
} | } | |||
notification adjacency-state-change { | notification adjacency-state-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf neighbor { | leaf neighbor { | |||
type string { | type string { | |||
length "1..255"; | length "1..255"; | |||
} | } | |||
description | description | |||
"Name of the neighbor. | "Name of the neighbor. It corresponds to the hostname | |||
It corresponds to the hostname associated | associated with the system ID of the neighbor in the | |||
with the system-id of the neighbor in the | mapping database (RFC 5301). If the name of the neighbor | |||
mapping database (RFC5301). | is not available, it is not returned."; | |||
If the name of the neighbor is | reference | |||
not available, it is not returned."; | "RFC 5301: Dynamic Hostname Exchange Mechanism for IS-IS"; | |||
} | } | |||
leaf neighbor-system-id { | leaf neighbor-system-id { | |||
type system-id; | type system-id; | |||
description "Neighbor system-id"; | description | |||
"Neighbor system ID."; | ||||
} | } | |||
leaf state { | leaf state { | |||
type adj-state-type; | type adj-state-type; | |||
description | ||||
description "New state of the IS-IS adjacency."; | "New state of the IS-IS adjacency."; | |||
} | } | |||
leaf reason { | leaf reason { | |||
type string { | type string { | |||
length "1..255"; | length "1..255"; | |||
} | } | |||
description | description | |||
"If the adjacency is going to DOWN, this leaf provides | "If the adjacency is going to the 'down' state, this leaf | |||
a reason for the adjacency going down. The reason is | provides a reason for the adjacency going down. The reason | |||
provided as a text. If the adjacency is going to UP, no | is provided as text. If the adjacency is going to the 'up' | |||
reason is provided. The expected format is a single line | state, no reason is provided. The expected format is a | |||
text."; | single line of text."; | |||
} | } | |||
description | description | |||
"This notification is sent when an IS-IS adjacency | "This notification is sent when an IS-IS adjacency | |||
moves to Up state or to Down state."; | moves to the 'up' state or the 'down' state."; | |||
} | } | |||
notification lsp-received { | notification lsp-received { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface-hdr; | uses notification-interface-hdr; | |||
leaf lsp-id { | leaf lsp-id { | |||
type lsp-id; | type lsp-id; | |||
description "LSP ID"; | description | |||
"LSP ID."; | ||||
} | } | |||
leaf sequence { | leaf sequence { | |||
type uint32; | type uint32; | |||
description "Sequence number of the received LSP."; | description | |||
"Sequence number of the received LSP."; | ||||
} | } | |||
leaf received-timestamp { | leaf received-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | ||||
description "Timestamp when the LSP was received."; | "Timestamp when the LSP was received."; | |||
} | } | |||
leaf neighbor-system-id { | leaf neighbor-system-id { | |||
type system-id; | type system-id; | |||
description "Neighbor system-id of LSP sender"; | description | |||
"Neighbor system ID of the LSP sender."; | ||||
} | } | |||
description | description | |||
"This notification is sent when an LSP is received. | "This notification is sent when an LSP is received. | |||
The notification generation must be throttled with at | The generation of the notification must be throttled with | |||
least 5 seconds between successive notifications."; | at least 5 seconds between successive notifications."; | |||
} | } | |||
notification lsp-generation { | notification lsp-generation { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf lsp-id { | leaf lsp-id { | |||
type lsp-id; | type lsp-id; | |||
description "LSP ID"; | description | |||
"LSP ID."; | ||||
} | } | |||
leaf sequence { | leaf sequence { | |||
type uint32; | type uint32; | |||
description "Sequence number of the received LSP."; | description | |||
"Sequence number of the received LSP."; | ||||
} | } | |||
leaf send-timestamp { | leaf send-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | ||||
description "Timestamp when our LSP was regenerated."; | "Timestamp when the LSP was regenerated."; | |||
} | } | |||
description | description | |||
"This notification is sent when an LSP is regenerated. | "This notification is sent when an LSP is regenerated. | |||
The notification generation must be throttled with at | The generation of the notification must be throttled with | |||
least 5 seconds between successive notifications."; | at least 5 seconds between successive notifications."; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
7. Security Considerations | 7. Security Considerations | |||
The YANG modules specified in this document define a schema for data | The YANG module specified in this document defines 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 | |||
[RFC8446]. | [RFC8446]. | |||
The NETCONF Access Control Model (NACM) [RFC8341] provides the means | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
to restrict access for particular NETCONF or RESTCONF users to a pre- | provides the means to restrict access for particular NETCONF or | |||
configured subset of all available NETCONF or RESTCONF protocol | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
operations and content. | RESTCONF protocol operations and content. | |||
There are a number of data nodes defined in ietf-isis.yang module | There are a number of data nodes defined in this YANG module that are | |||
that are writable/creatable/deletable (i.e., config true, which is | writable/creatable/deletable (i.e., config true, which is the | |||
the default). These data nodes may be considered sensitive or | default). These data nodes may be considered sensitive or vulnerable | |||
vulnerable in some network environments. Write operations (e.g., | in some network environments. Write operations (e.g., edit-config) | |||
edit-config) to these data nodes without proper protection can have a | to these data nodes without proper protection can have a negative | |||
negative effect on network operations. Writable data node represent | effect on network operations. These are the subtrees and data nodes | |||
configuration of each instance and interface. These correspond to | and their sensitivity/vulnerability: | |||
the following schema nodes: | ||||
/isis | /isis | |||
/isis/interfaces/interface[name] | /isis/interfaces/interface[name] | |||
For IS-IS, the ability to modify IS-IS configuration will allow the | For IS-IS, the ability to modify IS-IS configuration will allow the | |||
entire IS-IS domain to be compromised including forming adjacencies | entire IS-IS domain to be compromised, including forming adjacencies | |||
with unauthorized routers to misroute traffic or mount a massive | with unauthorized routers to misroute traffic or mount a massive | |||
Denial-of-Service (DoS) attack. For example, adding IS-IS on any | Denial-of-Service (DoS) attack. For example, adding IS-IS on any | |||
unprotected interface could allow an IS-IS adjacency to be formed | unprotected interface could allow an IS-IS adjacency to be formed | |||
with an unauthorized and malicious neighbor. Once an adjacency is | with an unauthorized and malicious neighbor. Once an adjacency is | |||
formed, traffic could be hijacked. As a simpler example, a Denial- | formed, traffic could be hijacked. As a simpler example, a DoS | |||
Of-Service attack could be mounted by changing the cost of an IS-IS | attack could be mounted by changing the cost of an IS-IS interface to | |||
interface to be asymmetric such that a hard routing loop ensues. In | be asymmetric, such that a hard routing loop ensues. In general, | |||
general, unauthorized modification of most IS-IS features will pose | unauthorized modification of most IS-IS features will pose its own | |||
their own set of security risks and the "Security Considerations" in | set of security risks; therefore, the Security Considerations | |||
the respective reference RFCs should be consulted. | sections in the respective reference RFCs should be consulted. | |||
Some of the readable data nodes in the ietf-isis.yang module may be | Some of the readable data nodes in this YANG module may be considered | |||
considered sensitive or vulnerable in some network environments. It | sensitive or vulnerable in some network environments. It is thus | |||
is thus important to control read access (e.g., via get, get-config, | important to control read access (e.g., via get, get-config, or | |||
or notification) to these data nodes. The exposure of the Link State | notification) to these data nodes. These are the subtrees and data | |||
Database (LSDB) will expose the detailed topology of the network. | nodes and their sensitivity/vulnerability: | |||
Similarly, the IS-IS local RIB exposes the reachable prefixes in the | ||||
IS-IS routing domain. The Link State Database (LSDB) and local RIB | ||||
are represented by the following schema nodes: | ||||
/isis/database | /isis/database | |||
/isis/local-rib | /isis/local-rib | |||
Exposure of the Link State Database and local RIB include information | Exposure of the Link State Database (LSDB) will reveal the detailed | |||
beyond the scope of the IS-IS router and this may be undesirable | topology of the network. Similarly, the IS-IS local RIB exposes the | |||
since exposure may facilitate other attacks. Additionally, the | reachable prefixes in the IS-IS routing domain. Exposure of the LSDB | |||
complete IP network topology and, if deployed, the traffic | and local RIB may also reveal information beyond the scope of the IS- | |||
engineering topology of the IS-IS domain can be reconstructed from | IS router; this may be undesirable, since such exposure may | |||
the Link State Database. Though not as straightforward, the IS-IS | facilitate other attacks. Additionally, the complete IP network | |||
local RIB can also be discover topological information. Network | topology -- and, if deployed, the TE topology of the IS-IS domain -- | |||
operators may consider their topologies to be sensitive confidential | can be reconstructed from the LSDB. Though not as straightforward, | |||
data. | the IS-IS local RIB can also be exploited to discover topological | |||
information. Network operators may consider their topologies to be | ||||
sensitive confidential data. | ||||
For IS-IS authentication, configuration is supported via the | For IS-IS authentication, configuration is supported via the | |||
specification of key-chain [RFC8177] or the direct specification of | specification of a key chain [RFC8177] or the direct specification of | |||
key and authentication algorithm. Hence, authentication | a key and authentication algorithm. Hence, authentication | |||
configuration using the "auth-table-trailer" case in the | configuration using the "key-chain" case in the "authentication-type" | |||
"authentication" container inherits the security considerations of | container inherits the security considerations of [RFC8177]. This | |||
[RFC8177]. This includes the considerations with respect to the | includes considerations with respect to the local storage and | |||
local storage and handling of authentication keys. | handling of authentication keys. | |||
Some of the RPC operations in this YANG module may be considered | Some of the RPC operations in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
important to control access to these operations. The IS-IS YANG | important to control access to these operations. These are the | |||
module support the "clear-adjacency" and "clear-database" RPCs. If | operations and their sensitivity/vulnerability: | |||
access to either of these is compromised, they can result in | ||||
temporary network outages be employed to mount DoS attacks. | The IS-IS YANG module supports the "clear-adjacency" and "clear- | |||
database" RPCs. If access to either of these is compromised, they | ||||
can be exploited to mount DoS attacks due to the resultant network | ||||
outages. | ||||
The actual authentication key data (whether locally specified or part | The actual authentication key data (whether locally specified or part | |||
of a key-chain) is sensitive and needs to be kept secret from | of a key chain) is sensitive and needs to be kept secret from | |||
unauthorized parties; compromise of the key data would allow an | unauthorized parties; compromise of the key data would allow an | |||
attacker to forge IS-IS traffic that would be accepted as authentic, | attacker to forge IS-IS traffic that would be accepted as authentic, | |||
potentially compromising the entirety IS-IS domain. | potentially compromising the entire IS-IS domain. | |||
The model describes several notifications, implementations must rate- | The model describes several notifications. Implementations must | |||
limit the generation of these notifications to avoid creating | rate-limit the generation of these notifications to avoid creating | |||
significant notification load. Otherwise, this notification load may | significant notification load. Otherwise, this notification load may | |||
have some side effects on the system stability and may be exploited | negatively affect system stability and may be exploited as an attack | |||
as an attack vector. | vector. | |||
8. Contributors | ||||
The authors would like to thank Kiran Agrahara Sreenivasa, Dean | ||||
Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major | ||||
contributions to the draft. | ||||
9. Acknowledgements | ||||
The authors would like to thank Tom Petch, Alvaro Retana, Stewart | ||||
Bryant, Barry Leiba, Benjamin Kaduk and Adam Roach, and Roman Danyliw | ||||
for their review and comments. | ||||
10. IANA Considerations | ||||
The IANA is requested to assign two new URIs from the IETF XML | 8. IANA Considerations | |||
registry [RFC3688]. Authors are suggesting the following URI: | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-isis | The IANA has assigned the following URI in the "IETF XML Registry" | |||
Registrant Contact: The IESG | [RFC3688]. | |||
XML: N/A, the requested URI is an XML namespace | ||||
This document also requests one new YANG module name in the YANG | URI: urn:ietf:params:xml:ns:yang:ietf-isis | |||
Module Names registry [RFC6020] with the following suggestion: | Registrant Contact: The IESG | |||
XML: N/A; the requested URI is an XML namespace. | ||||
name: ietf-isis | This document also adds the following YANG module name in the "YANG | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-isis | Module Names" registry [RFC6020]: | |||
prefix: isis | ||||
reference: RFC XXXX | ||||
11. References | Name: ietf-isis | |||
Maintained by IANA? N | ||||
Namespace: urn:ietf:params:xml:ns:yang:ietf-isis | ||||
Prefix: isis | ||||
Reference: RFC 9130 | ||||
11.1. Normative References | 9. References | |||
[I-D.ietf-bfd-yang] | 9.1. Normative References | |||
Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and | ||||
G. Mirsky, "YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)", draft-ietf-bfd-yang-17 (work in | ||||
progress), August 2018. | ||||
[ISO-10589] | [ISO-10589] | |||
"Intermediate System to Intermediate System intra- domain | ISO, "Intermediate System to Intermediate System intra- | |||
routeing information exchange protocol for use in | domain routeing information exchange protocol for use in | |||
conjunction with the protocol for providing the | conjunction with the protocol for providing the | |||
connectionless-mode network service (ISO 8473)", | connectionless-mode network service (ISO 8473)", | |||
International Standard 10589: 2002, Second Edition, 2002. | International Standard 10589: 2002, Second Edition, 2002, | |||
<https://www.iso.org/standard/30932.html>. | ||||
[RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and | [RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and | |||
dual environments", RFC 1195, DOI 10.17487/RFC1195, | dual environments", RFC 1195, DOI 10.17487/RFC1195, | |||
December 1990, <https://www.rfc-editor.org/info/rfc1195>. | December 1990, <https://www.rfc-editor.org/info/rfc1195>. | |||
[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>. | |||
skipping to change at page 112, line 23 ¶ | skipping to change at line 5555 ¶ | |||
[RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-Wide Prefix | [RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-Wide Prefix | |||
Distribution with Two-Level IS-IS", RFC 5302, | Distribution with Two-Level IS-IS", RFC 5302, | |||
DOI 10.17487/RFC5302, October 2008, | DOI 10.17487/RFC5302, October 2008, | |||
<https://www.rfc-editor.org/info/rfc5302>. | <https://www.rfc-editor.org/info/rfc5302>. | |||
[RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic | [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic | |||
Engineering", RFC 5305, DOI 10.17487/RFC5305, October | Engineering", RFC 5305, DOI 10.17487/RFC5305, October | |||
2008, <https://www.rfc-editor.org/info/rfc5305>. | 2008, <https://www.rfc-editor.org/info/rfc5305>. | |||
[RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS", | ||||
RFC 5306, DOI 10.17487/RFC5306, October 2008, | ||||
<https://www.rfc-editor.org/info/rfc5306>. | ||||
[RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., "IS-IS Extensions | [RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., "IS-IS Extensions | |||
in Support of Generalized Multi-Protocol Label Switching | in Support of Generalized Multi-Protocol Label Switching | |||
(GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008, | (GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008, | |||
<https://www.rfc-editor.org/info/rfc5307>. | <https://www.rfc-editor.org/info/rfc5307>. | |||
[RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308, | [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308, | |||
DOI 10.17487/RFC5308, October 2008, | DOI 10.17487/RFC5308, October 2008, | |||
<https://www.rfc-editor.org/info/rfc5308>. | <https://www.rfc-editor.org/info/rfc5308>. | |||
[RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP | [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP | |||
skipping to change at page 115, line 10 ¶ | skipping to change at line 5680 ¶ | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
[RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward, | [RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward, | |||
D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE) | D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE) | |||
Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March | Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March | |||
2019, <https://www.rfc-editor.org/info/rfc8570>. | 2019, <https://www.rfc-editor.org/info/rfc8570>. | |||
11.2. Informative References | [RFC8706] Ginsberg, L. and P. Wells, "Restart Signaling for IS-IS", | |||
RFC 8706, DOI 10.17487/RFC8706, February 2020, | ||||
<https://www.rfc-editor.org/info/rfc8706>. | ||||
[I-D.ietf-rtgwg-segment-routing-ti-lfa] | [RFC9314] Jethanandani, M., Ed., Rahman, R., Ed., Zheng, L., Ed., | |||
Litkowski, S., Bashandy, A., Filsfils, C., Decraene, B., | Pallagatti, S., and G. Mirsky, "YANG Data Model for | |||
Francois, P., daniel.voyer@bell.ca, d., Clad, F., and P. | Bidirectional Forwarding Detection (BFD)", RFC 9314, | |||
Camarillo, "Topology Independent Fast Reroute using | DOI 10.17487/RFC9314, September 2022, | |||
Segment Routing", draft-ietf-rtgwg-segment-routing-ti- | <https://www.rfc-editor.org/info/rfc9314>. | |||
lfa-01 (work in progress), March 2019. | ||||
[W3C.REC-xml-20081126] | ||||
Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and | ||||
F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth | ||||
Edition)", World Wide Web Consortium Recommendation REC- | ||||
xml-20081126, November 2008, | ||||
<https://www.w3.org/TR/2008/REC-xml-20081126>. | ||||
9.2. Informative References | ||||
[RFC7812] Atlas, A., Bowers, C., and G. Enyedi, "An Architecture for | [RFC7812] Atlas, A., Bowers, C., and G. Enyedi, "An Architecture for | |||
IP/LDP Fast Reroute Using Maximally Redundant Trees (MRT- | IP/LDP Fast Reroute Using Maximally Redundant Trees (MRT- | |||
FRR)", RFC 7812, DOI 10.17487/RFC7812, June 2016, | FRR)", RFC 7812, DOI 10.17487/RFC7812, June 2016, | |||
<https://www.rfc-editor.org/info/rfc7812>. | <https://www.rfc-editor.org/info/rfc7812>. | |||
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
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>. | |||
Appendix A. Example of IS-IS configuration in XML | [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, | |||
"Handling Long Lines in Content of Internet-Drafts and | ||||
RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, | ||||
<https://www.rfc-editor.org/info/rfc8792>. | ||||
This section gives an example of configuration of an IS-IS instance | [SR-TI-LFA] | |||
on a device. The example is written in XML. | Litkowski, S., Bashandy, A., Filsfils, C., Francois, P., | |||
Decraene, B., and D. Voyer, "Topology Independent Fast | ||||
Reroute using Segment Routing", Work in Progress, | ||||
Internet-Draft, draft-ietf-rtgwg-segment-routing-ti-lfa- | ||||
08, 21 January 2022, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-rtgwg- | ||||
segment-routing-ti-lfa-08>. | ||||
Appendix A. Example of IS-IS Configuration in XML | ||||
This appendix gives an example of the configuration of an IS-IS | ||||
instance on a device. The example is written in XML | ||||
[W3C.REC-xml-20081126]. | ||||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | |||
<name>SLI</name> | <name>SLI</name> | |||
<router-id>192.0.2.1</router-id> | <router-id>192.0.2.1</router-id> | |||
<control-plane-protocols> | <control-plane-protocols> | |||
<control-plane-protocol> | <control-plane-protocol> | |||
<name>ISIS-example</name> | <name>IS-IS-example</name> | |||
<description/> | <description/> | |||
<type> | <type> | |||
<type xmlns:isis="urn:ietf:params:xml:ns:yang:ietf-isis"> | <type xmlns:isis="urn:ietf:params:xml:ns:yang:ietf-isis"> | |||
isis:isis | isis:isis | |||
</type> | </type> | |||
</type> | </type> | |||
<isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis"> | <isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis"> | |||
<enable>true</enable> | <enabled>true</enabled> | |||
<level-type>level-2</level-type> | <level-type>level-2</level-type> | |||
<system-id>87FC.FCDF.4432</system-id> | <system-id>87FC.FCDF.4432</system-id> | |||
<area-address>49.0001</area-address> | <area-address>49.0001</area-address> | |||
<mpls> | <mpls> | |||
<te-rid> | <te-rid> | |||
<ipv4-router-id>192.0.2.1</ipv4-router-id> | <ipv4-router-id>192.0.2.1</ipv4-router-id> | |||
</te-rid> | </te-rid> | |||
</mpls> | </mpls> | |||
<lsp-lifetime>65535</lsp-lifetime> | <lsp-lifetime>65535</lsp-lifetime> | |||
<lsp-refresh>65000</lsp-refresh> | <lsp-refresh>65000</lsp-refresh> | |||
<metric-type> | <metric-type> | |||
<value>wide-only</value> | <value>wide-only</value> | |||
</metric-type> | </metric-type> | |||
<default-metric> | <default-metric> | |||
<value>111111</value> | <value>111111</value> | |||
</default-metric> | </default-metric> | |||
<address-families> | <address-families> | |||
<address-family-list> | <address-family-list> | |||
<address-family>ipv4</address-family> | <address-family>ipv4</address-family> | |||
<enable>true</enable> | <enabled>true</enabled> | |||
</address-family-list> | </address-family-list> | |||
<address-family-list> | <address-family-list> | |||
<address-family>ipv6</address-family> | <address-family>ipv6</address-family> | |||
<enable>true</enable> | <enabled>true</enabled> | |||
</address-family-list> | </address-family-list> | |||
</address-families> | </address-families> | |||
<interfaces> | <interfaces> | |||
<interface> | <interface> | |||
<name>Loopback0</name> | <name>Loopback0</name> | |||
<tag>200</tag> | <tag>200</tag> | |||
<metric> | <metric> | |||
<value>0</value> | <value>0</value> | |||
</metric> | </metric> | |||
<passive>true</passive> | <passive>true</passive> | |||
skipping to change at page 117, line 16 ¶ | skipping to change at line 5808 ¶ | |||
</type> | </type> | |||
<link-up-down-trap-enable>enabled</link-up-down-trap-enable> | <link-up-down-trap-enable>enabled</link-up-down-trap-enable> | |||
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | |||
<address> | <address> | |||
<ip>192.0.2.1</ip> | <ip>192.0.2.1</ip> | |||
<prefix-length>32</prefix-length> | <prefix-length>32</prefix-length> | |||
</address> | </address> | |||
</ipv4> | </ipv4> | |||
<ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | <ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | |||
<address> | <address> | |||
<ip>2001:DB8::1</ip> | <ip>2001:db8::1</ip> | |||
<prefix-length>128</prefix-length> | <prefix-length>128</prefix-length> | |||
</address> | </address> | |||
</ipv6> | </ipv6> | |||
</interface> | </interface> | |||
<interface> | <interface> | |||
<name>Eth1</name> | <name>Eth1</name> | |||
<description/> | <description/> | |||
<type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> | <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> | |||
ianaift:ethernetCsmacd | ianaift:ethernetCsmacd | |||
</type> | </type> | |||
<link-up-down-trap-enable>enabled</link-up-down-trap-enable> | <link-up-down-trap-enable>enabled</link-up-down-trap-enable> | |||
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | |||
<address> | <address> | |||
<ip>198.51.100.1</ip> | <ip>198.51.100.1</ip> | |||
<prefix-length>30</prefix-length> | <prefix-length>30</prefix-length> | |||
</address> | </address> | |||
</ipv4> | </ipv4> | |||
<ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | <ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | |||
<address> | <address> | |||
<ip>2001:DB8:0:0:FF::1</ip> | <ip>2001:db8:0:0:ff::1</ip> | |||
<prefix-length>64</prefix-length> | <prefix-length>64</prefix-length> | |||
</address> | </address> | |||
</ipv6> | </ipv6> | |||
</interface> | </interface> | |||
</interfaces> | </interfaces> | |||
</data> | </data> | |||
Acknowledgments | ||||
The authors would like to thank Tom Petch, Alvaro Retana, Stewart | ||||
Bryant, Barry Leiba, Benjamin Kaduk, Adam Roach, and Roman Danyliw | ||||
for their review and comments. | ||||
Contributors | ||||
The authors would like to thank Kiran Agrahara Sreenivasa, Dean | ||||
Bogdanovic, Yingzhen Qu, Yi Yang, and Jeff Tantsura for their major | ||||
contributions to this document. | ||||
Authors' Addresses | Authors' Addresses | |||
Stephane Litkowski | Stephane Litkowski (editor) | |||
Cisco Systems | Cisco Systems | |||
Email: slitkows.ietf@gmail.com | Email: slitkows.ietf@gmail.com | |||
Derek Yeung | ||||
Arrcus, Inc | ||||
Derek Yeung | ||||
Arrcus, Inc. | ||||
2077 Gateway Place, Suite 400 | ||||
San Jose, CA 95110 | ||||
United States of America | ||||
Email: derek@arrcus.com | Email: derek@arrcus.com | |||
Acee Lindem | Acee Lindem | |||
Cisco Systems | Cisco Systems | |||
301 Midenhall Way | ||||
Cary, NC 27513 | ||||
United States of America | ||||
Email: acee@cisco.com | Email: acee@cisco.com | |||
Jeffrey Zhang | Jeffrey Zhang | |||
Juniper Networks | Juniper Networks | |||
10 Technology Park Drive | ||||
Westford, MA 01886 | ||||
United States of America | ||||
Email: zzhang@juniper.net | Email: zzhang@juniper.net | |||
Ladislav Lhotka | Ladislav Lhotka | |||
CZ.NIC | CZ.NIC | |||
Email: ladislav.lhotka@nic.cz | ||||
Email: lhotka@nic.cz | ||||
End of changes. 1016 change blocks. | ||||
2252 lines changed or deleted | 2513 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |