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