--- 1/draft-ietf-isis-yang-isis-cfg-24.txt 2018-11-26 02:13:12.199751229 -0800 +++ 2/draft-ietf-isis-yang-isis-cfg-25.txt 2018-11-26 02:13:12.383755655 -0800 @@ -1,440 +1,433 @@ IS-IS Working Group S. Litkowski Internet-Draft Orange Intended status: Standards Track D. Yeung -Expires: February 10, 2019 Arrcus, Inc +Expires: May 30, 2019 Arrcus, Inc A. Lindem Cisco Systems J. Zhang Juniper Networks L. Lhotka CZ.NIC - August 09, 2018 + November 26, 2018 YANG Data Model for IS-IS protocol - draft-ietf-isis-yang-isis-cfg-24 + draft-ietf-isis-yang-isis-cfg-25 Abstract This document defines a YANG data model that can be used to configure and manage IS-IS protocol on network elements. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", - "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this - document are to be interpreted as described in [RFC2119]. + "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 This Internet-Draft is submitted in full conformance with the 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 and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." - This Internet-Draft will expire on February 10, 2019. + This Internet-Draft will expire on May 30, 2019. Copyright Notice Copyright (c) 2018 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 - 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 - 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 - 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 10 - 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10 + 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 + 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9 + 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 9 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 - 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12 - 2.5. Authentication Parameters . . . . . . . . . . . . . . . . 23 - 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 23 - 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 24 - 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 24 - 2.9. Operational States . . . . . . . . . . . . . . . . . . . 24 - 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 25 - 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 25 - 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 26 - 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 27 - 7. Security Considerations . . . . . . . . . . . . . . . . . . . 95 - 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 96 - 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 96 - 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 96 - 11. Change log for ietf-isis YANG module . . . . . . . . . . . . 96 - 11.1. From version -22 to version -24 . . . . . . . . . . . . 96 - 11.2. From version -21 to version -22 . . . . . . . . . . . . 96 - 11.3. From version -20 to version -21 . . . . . . . . . . . . 96 - 11.4. From version -19 to version -20 . . . . . . . . . . . . 97 - 11.5. From version -18 to version -19 . . . . . . . . . . . . 97 - 11.6. From version -17 to version -18 . . . . . . . . . . . . 97 - 11.7. From version -16 to version -17 . . . . . . . . . . . . 97 - 11.8. From version -15 to version -16 . . . . . . . . . . . . 97 - 11.9. From version -14 to version -15 . . . . . . . . . . . . 97 - 11.10. From version -13 to version -14 . . . . . . . . . . . . 98 - 11.11. From version -12 to version -13 . . . . . . . . . . . . 98 - 11.12. From version -09 to version -12 . . . . . . . . . . . . 98 - 11.13. From version -08 to version -09 . . . . . . . . . . . . 98 - 11.14. From version -07 to version -08 . . . . . . . . . . . . 99 - 11.15. From version -05 to version -07 . . . . . . . . . . . . 99 - 11.16. From version -03 to version -05 . . . . . . . . . . . . 99 - 11.17. From version -02 to version -03 . . . . . . . . . . . . 99 - 11.18. From version -01 to version -02 . . . . . . . . . . . . 100 - 11.19. From version -00 to version -01 . . . . . . . . . . . . 100 - 12. Normative References . . . . . . . . . . . . . . . . . . . . 101 - Appendix A. Example of IS-IS configuration in XML . . . . . . . 102 - Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 104 + 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 11 + 2.5. Authentication Parameters . . . . . . . . . . . . . . . . 17 + 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 17 + 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 17 + 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 18 + 2.9. Operational States . . . . . . . . . . . . . . . . . . . 18 + 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 19 + 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 19 + 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 20 + 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 21 + 7. Security Considerations . . . . . . . . . . . . . . . . . . . 100 + 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 101 + 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 101 + 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 101 + 11. Change log for ietf-isis YANG module . . . . . . . . . . . . 101 + 11.1. From version -24 to version -25 . . . . . . . . . . . . 101 + 11.2. From version -22 to version -24 . . . . . . . . . . . . 102 + 11.3. From version -21 to version -22 . . . . . . . . . . . . 102 + 11.4. From version -20 to version -21 . . . . . . . . . . . . 103 + 11.5. From version -19 to version -20 . . . . . . . . . . . . 103 + 11.6. From version -18 to version -19 . . . . . . . . . . . . 103 + 11.7. From version -17 to version -18 . . . . . . . . . . . . 103 + 11.8. From version -16 to version -17 . . . . . . . . . . . . 103 + 11.9. From version -15 to version -16 . . . . . . . . . . . . 103 + 11.10. From version -14 to version -15 . . . . . . . . . . . . 104 + 11.11. From version -13 to version -14 . . . . . . . . . . . . 104 + 11.12. From version -12 to version -13 . . . . . . . . . . . . 104 + 11.13. From version -09 to version -12 . . . . . . . . . . . . 104 + 11.14. From version -08 to version -09 . . . . . . . . . . . . 105 + 11.15. From version -07 to version -08 . . . . . . . . . . . . 105 + 11.16. From version -05 to version -07 . . . . . . . . . . . . 105 + 11.17. From version -03 to version -05 . . . . . . . . . . . . 105 + 11.18. From version -02 to version -03 . . . . . . . . . . . . 106 + 11.19. From version -01 to version -02 . . . . . . . . . . . . 106 + 11.20. From version -00 to version -01 . . . . . . . . . . . . 106 + 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 107 + 12.1. Normative References . . . . . . . . . . . . . . . . . . 107 + 12.2. Informative References . . . . . . . . . . . . . . . . . 109 + Appendix A. Example of IS-IS configuration in XML . . . . . . . 109 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 112 1. Introduction - This document defines a YANG data model for IS-IS routing protocol. + This document defines a YANG ([RFC7950]) data model for IS-IS routing + protocol. The data model covers configuration of an IS-IS routing protocol instance as well as operational states. -1.1. Tree diagram - - A simplified graphical representation of the data model is presented - in Section 2. - - The meaning of the symbols in these diagrams is as follows: - - o Brackets "[" and "]" enclose list keys. - - o Curly braces "{" and "}" contain names of optional features that - make the corresponding node conditional. - - o Abbreviations before data node names: "rw" means configuration - (read-write), and "ro" state data (read-only). - - o Symbols after data node names: "?" means an optional node and "*" - denotes a "list" or "leaf-list". - - o Parentheses enclose choice and case nodes, and case nodes are also - marked with a colon (":"). + A simplified tree representation of the data model is presented in + Section 2. Tree diagrams used in this document follow the notation + defined in [RFC8340]. - o Ellipsis ("...") stands for contents of subtrees that are not - shown. + The module is designed as per NMDA (Network Management Datastore + Architecture) [RFC8342]. 2. Design of the Data Model The IS-IS YANG module augments the "control-plane-protocol" list in - ietf-routing module with specific IS-IS parameters. - - The module is designed as per NMDA (Network Management Datastore - Architecture). + ietf-routing module (defined in [RFC8349]) with specific IS-IS + parameters. The figure below describes the overall structure of the isis YANG module: module: ietf-isis augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: +--ro metric? uint32 +--ro tag* uint64 +--ro route-type? enumeration augment /if:interfaces/if:interface: +--rw clns-mtu? uint16 - augment /rt:routing/rt:control-plane-protocols/ - | rt:control-plane-protocol: + 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 mpls - | +--rw te-rid {te-rid}? - | | ... - | +--rw ldp - | ... - +--rw auto-cost {auto-cost}? - | +--rw reference-bandwidth? uint32 - | +--rw enable? boolean +--rw lsp-mtu? uint16 +--rw lsp-lifetime? uint16 - +--rw lsp-refresh? - | rt-types:timer-value-seconds16 {lsp-refresh}? + +--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 authentication - | +--rw (authentication-type)? - | | ... - | +--rw level-1 - | | ... - | +--rw level-2 - | ... +--rw metric-type | +--rw value? enumeration | +--rw level-1 | | ... | +--rw level-2 | ... +--rw default-metric | +--rw value? wide-metric | +--rw level-1 | | ... | +--rw level-2 | ... - +--rw afs {nlpid-control}? - | +--rw af* [af] + +--rw auto-cost {auto-cost}? + | +--rw enable? boolean + | +--rw reference-bandwidth? uint32 + +--rw authentication + | +--rw (authentication-type)? + | | ... + | +--rw level-1 + | | ... + | +--rw level-2 | ... - +--rw preference - | +--rw (granularity)? + +--rw address-families {nlpid-control}? + | +--rw address-family-list* [address-family] | ... - +--rw overload - | +--rw status? boolean - +--rw overload-max-metric {overload-max-metric}? - | +--rw timeout? rt-types:timer-value-seconds16 - +--rw fast-reroute {fast-reroute}? - | +--rw lfa {lfa}? - | +--ro protected-routes - | | ... - | +--ro unprotected-routes + +--rw mpls + | +--rw te-rid {te-rid}? | | ... - | +--ro protection-statistics* [frr-protection-method] + | +--rw ldp | ... +--rw spf-control | +--rw paths? uint16 {max-ecmp}? | +--rw ietf-spf-delay {ietf-spf-delay}? | ... - +--rw topologies {multi-topology}? - | +--rw topology* [name] - | ... - +--rw interfaces - | +--rw interface* [name] + +--rw fast-reroute {fast-reroute}? + | +--rw lfa {lfa}? + +--rw preference + | +--rw (granularity)? | ... + +--rw overload + | +--rw status? boolean + +--rw overload-max-metric {overload-max-metric}? + | +--rw timeout? rt-types:timer-value-seconds16 +--ro spf-log | +--ro event* [id] | ... +--ro lsp-log | +--ro event* [id] | ... +--ro hostnames | +--ro hostname* [system-id] | ... +--ro database | +--ro level-db* [level] | ... +--ro local-rib | +--ro route* [prefix] | ... +--ro system-counters - +--ro level* [level] + | +--ro level* [level] + | ... + +--ro protected-routes + | +--ro address-family-stats* [address-family prefix alternate] + | ... + +--ro unprotected-routes + | +--ro address-family-stats* [address-family prefix] + | ... + +--ro protection-statistics* [frr-protection-method] + | +--ro frr-protection-method string + | +--ro address-family-stats* [address-family] + | ... + +--rw topologies {multi-topology}? + | +--rw topology* [name] + | ... + +--rw interfaces + +--rw interface* [name] ... rpcs: +---x clear-adjacency | +---w input - | +---w routing-protocol-instance-name instance-state-ref + | +---w routing-protocol-instance-name -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +---w level? level - | +---w interface? string + | +---w interface? if:interface-ref +---x clear-database +---w input - +---w routing-protocol-instance-name instance-state-ref + +---w routing-protocol-instance-name -> +/rt:routing/control-plane-protocols/control-plane-protocol/name +---w level? level notifications: +---n database-overload - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro overload? enumeration +---n lsp-too-large - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro pdu-size? uint32 | +--ro lsp-id? lsp-id +---n if-state-change - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro state? if-state-type +---n corrupted-lsp-detected - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro lsp-id? lsp-id +---n attempt-to-exceed-max-sequence - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro lsp-id? lsp-id +---n id-len-mismatch - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro pdu-field-len? uint8 | +--ro raw-pdu? binary +---n max-area-addresses-mismatch - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro max-area-addresses? uint8 | +--ro raw-pdu? binary +---n own-lsp-purge - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro lsp-id? lsp-id +---n sequence-number-skipped - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro lsp-id? lsp-id +---n authentication-type-failure - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary +---n authentication-failure - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary +---n version-skew - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro protocol-version? uint8 | +--ro raw-pdu? binary +---n area-mismatch - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary +---n rejected-adjacency - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary | +--ro reason? string +---n protocols-supported-mismatch - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary | +--ro protocols* uint8 +---n lsp-error-detected - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro lsp-id? lsp-id | +--ro raw-pdu? binary | +--ro error-offset? uint32 | +--ro tlv-type? uint8 +---n adjacency-state-change - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro neighbor? string | +--ro neighbor-system-id? system-id | +--ro state? adj-state-type | +--ro reason? string +---n lsp-received - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--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-instance? string - +--ro routing-protocol-name? string + +--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.1. IS-IS Configuration The IS-IS configuration container is divided in: o Global parameters. o Per interface configuration (see Section 2.4). - Additional modules may be created this to support any additional - parameters. These additional modules should augment the ietf-isis + Additional modules may be created to support any additional + parameters. These additional modules MUST augment the ietf-isis module. The model implements features, thus some of the configuration statement becomes optional. As an example, the ability to control the administrative state of a particular IS-IS instance is optional. By advertising the feature "admin-control", a device communicates to the client that it supports the ability to shutdown a particular IS- IS instance. The global configuration contains usual IS-IS parameters such as lsp- @@ -537,552 +529,321 @@ Finally, if an implementation supports per level configuration but does not support the level-1-2 configuration, it SHOULD also advertise a deviation. 2.4. Per-Interface Parameters The per-interface section of the IS-IS instance describes the interface specific parameters. The interface is modeled as a reference to an existing interface - defined in the "ietf-interfaces" YANG model. + defined in the "ietf-interfaces" YANG model ([RFC8343]. Each interface has some interface-specific parameters that may have a different per level value as described in previous section. An interface-specific parameter always override an IS-IS global parameter. Some parameters like hello-padding are defined as containers to allow easy extension by vendor specific modules. +--rw interfaces - | +--rw interface* [name] - | +--rw name if:interface-ref - | +--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 enable? boolean {admin-control}? - | +--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)? + +--rw interface* [name] + +--rw name if:interface-ref + +--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 enable? boolean {admin-control}? + +--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 hello-interval - | | +--rw value? rt-types:timer-value-seconds16 - | | +--rw level-1 - | | | +--rw value? rt-types:timer-value-seconds16 - | | +--rw level-2 + | +--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 hello-multiplier - | | +--rw value? uint16 - | | +--rw level-1 - | | | +--rw value? uint16 - | | +--rw level-2 + | +--rw level-2 + | +--rw value? rt-types:timer-value-seconds16 + +--rw hello-multiplier + | +--rw value? uint16 + | +--rw level-1 | | +--rw value? uint16 - | +--rw priority - | | +--rw value? uint8 - | | +--rw level-1 - | | | +--rw value? uint8 - | | +--rw level-2 + | +--rw level-2 + | +--rw value? uint16 + +--rw priority + | +--rw value? uint8 + | +--rw level-1 | | +--rw value? uint8 - | +--rw metric - | | +--rw value? wide-metric - | | +--rw level-1 - | | | +--rw value? wide-metric - | | +--rw level-2 + | +--rw level-2 + | +--rw value? uint8 + +--rw metric + | +--rw value? wide-metric + | +--rw level-1 | | +--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 afs {nlpid-control}? - | | +--rw af* [af] - | | +--rw af 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-disabled? boolean + | +--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 remote-lfa {remote-lfa}? - | | | +--rw enable? boolean - | | +--rw level-1 - | | | +--rw candidate-disabled? boolean - | | | +--rw enable? boolean - | | | +--rw remote-lfa {remote-lfa}? - | | | +--rw enable? boolean - | | +--rw level-2 - | | +--rw candidate-disabled? boolean + | +--rw level-1 + | | +--rw candidate-enable? boolean | | +--rw enable? boolean | | +--rw remote-lfa {remote-lfa}? | | +--rw enable? boolean - | +--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 - | +--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 - | +--ro out? uint32 - +--ro spf-log - | +--ro event* [id] - | +--ro id uint32 - | +--ro spf-type? enumeration - | +--ro level? level-number - | +--ro schedule-timestamp? yang:timestamp - | +--ro start-timestamp? yang:timestamp - | +--ro end-timestamp? yang:timestamp - | +--ro trigger-lsp* [lsp] - | +--ro lsp lsp-id - | +--ro sequence? uint32 - +--ro lsp-log - | +--ro event* [id] - | +--ro id uint32 - | +--ro level? level-number - | +--ro lsp - | | +--ro lsp? lsp-id - | | +--ro sequence? uint32 - | +--ro received-timestamp? yang:timestamp - | +--ro change? identityref - +--ro hostnames - | +--ro hostname* [system-id] - | +--ro system-id system-id - | +--ro hostname? string - +--ro database - | +--ro level-db* [level] - | +--ro level level-number - | +--ro lsp* [lsp-id] - | +--ro decoded-completed? boolean - | +--ro raw-data? yang:hex-string - | +--ro lsp-id lsp-id - | +--ro checksum? uint16 - | +--ro remaining-lifetime? uint16 - | +--ro sequence? uint32 - | +--ro attributes? bits - | +--ro ipv4-addresses* inet:ipv4-address - | +--ro ipv6-addresses* inet:ipv6-address - | +--ro ipv4-te-routerid? inet:ipv4-address - | +--ro ipv6-te-routerid? inet:ipv6-address - | +--ro protocol-supported* uint8 - | +--ro dynamic-hostname? string - | +--ro authentication - | | +--ro authentication-type? string - | | +--ro authentication-key? string - | +--ro mt-entries - | | +--ro topology* [] - | | +--ro MT-ID? uint16 - | | +--ro attributes? bits - | +--ro router-capabilities* [] - | | +--ro flags? bits - | | +--ro node-tags {node-tag}? - | | | +--ro node-tag* [] - | | | +--ro tag? uint32 - | | +--ro binary? binary - | +--ro is-neighbor - | | +--ro neighbor* [] - | | +--ro neighbor-id? system-id - | | +--ro i-e? boolean - | | +--ro default-metric? std-metric - | | +--ro delay-metric - | | | +--ro metric? std-metric - | | | +--ro supported? boolean - | | +--ro expense-metric - | | | +--ro metric? std-metric - | | | +--ro supported? boolean - | | +--ro error-metric - | | +--ro metric? std-metric - | | +--ro supported? boolean - | +--ro extended-is-neighbor - | | +--ro neighbor* [] - | | +--ro neighbor-id? system-id - | | +--ro metric? wide-metric - | +--ro ipv4-internal-reachability - | | +--ro prefixes* [] - | | +--ro up-down? boolean - | | +--ro i-e? boolean - | | +--ro ip-prefix? inet:ipv4-address - | | +--ro prefix-len? uint8 - | | +--ro default-metric? std-metric - | | +--ro delay-metric - | | | +--ro metric? std-metric - | | | +--ro supported? boolean - | | +--ro expense-metric - | | | +--ro metric? std-metric - | | | +--ro supported? boolean - | | +--ro error-metric - | | +--ro metric? std-metric - | | +--ro supported? boolean - | +--ro ipv4-external-reachability - | | +--ro prefixes* [] - | | +--ro up-down? boolean - | | +--ro i-e? boolean - | | +--ro ip-prefix? inet:ipv4-address - | | +--ro prefix-len? uint8 - | | +--ro default-metric? std-metric - | | +--ro delay-metric - | | | +--ro metric? std-metric - | | | +--ro supported? boolean - | | +--ro expense-metric - | | | +--ro metric? std-metric - | | | +--ro supported? boolean - | | +--ro error-metric - | | +--ro metric? std-metric - | | +--ro supported? boolean - | +--ro extended-ipv4-reachability - | | +--ro prefixes* [] - | | +--ro up-down? boolean - | | +--ro ip-prefix? inet:ipv4-address - | | +--ro prefix-len? uint8 - | | +--ro metric? wide-metric - | | +--ro tag* uint32 - | | +--ro tag64* uint64 - | | +--ro external-prefix-flag? boolean - | | +--ro readvertisement-flag? boolean - | | +--ro node-flag? boolean - | | +--ro ipv4-source-router-id? inet:ipv4-address - | | +--ro ipv6-source-router-id? inet:ipv6-address - | +--ro mt-is-neighbor - | | +--ro neighbor* [] - | | +--ro mt-id? uint16 - | | +--ro neighbor-id? system-id - | | +--ro metric? wide-metric - | +--ro mt-extended-ipv4-reachability - | | +--ro prefixes* [] - | | +--ro mt-id? uint16 - | | +--ro up-down? boolean - | | +--ro ip-prefix? inet:ipv4-address - | | +--ro prefix-len? uint8 - | | +--ro metric? wide-metric - | | +--ro tag* uint32 - | | +--ro tag64* uint64 - | | +--ro external-prefix-flag? boolean - | | +--ro readvertisement-flag? boolean - | | +--ro node-flag? boolean - | | +--ro ipv4-source-router-id? inet:ipv4-address - | | +--ro ipv6-source-router-id? inet:ipv6-address - | +--ro mt-ipv6-reachability - | | +--ro prefixes* [] - | | +--ro MT-ID? uint16 - | | +--ro up-down? boolean - | | +--ro ip-prefix? inet:ipv6-address - | | +--ro prefix-len? uint8 - | | +--ro metric? wide-metric - | | +--ro tag* uint32 - | | +--ro tag64* uint64 - | | +--ro external-prefix-flag? boolean - | | +--ro readvertisement-flag? boolean - | | +--ro node-flag? boolean - | | +--ro ipv4-source-router-id? inet:ipv4-address - | | +--ro ipv6-source-router-id? inet:ipv6-address - | +--ro ipv6-reachability - | +--ro prefixes* [] - | +--ro up-down? boolean - | +--ro ip-prefix? inet:ipv6-address - | +--ro prefix-len? uint8 - | +--ro metric? wide-metric - | +--ro tag* uint32 - | +--ro tag64* uint64 - | +--ro external-prefix-flag? boolean - | +--ro readvertisement-flag? boolean - | +--ro node-flag? boolean - | +--ro ipv4-source-router-id? inet:ipv4-address - | +--ro ipv6-source-router-id? inet:ipv6-address - +--ro local-rib - | +--ro route* [prefix] - | +--ro prefix inet:ip-prefix - | +--ro next-hops - | | +--ro next-hop* [next-hop] - | | +--ro outgoing-interface? if:interface-ref - | | +--ro next-hop inet:ip-address - | +--ro metric? uint32 - | +--ro level? level-number - | +--ro route-tag? uint32 - +--ro system-counters - +--ro level* [level] - +--ro level level-number - +--ro corrupted-lsps? uint32 - +--ro authentication-type-fails? uint32 - +--ro authentication-fails? uint32 - +--ro database-overload? uint32 - +--ro own-lsp-purge? uint32 - +--ro manual-address-drop-from-area? uint32 - +--ro max-sequence? uint32 - +--ro sequence-number-skipped? uint32 - +--ro id-len-mismatch? uint32 - +--ro partition-changes? uint32 - +--ro lsp-errors? uint32 - +--ro spf-runs? uint32 + | +--rw level-2 + | +--rw candidate-enable? boolean + | +--rw enable? boolean + | +--rw remote-lfa {remote-lfa}? + | +--rw enable? boolean + +--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 instance-state-ref + | +---w routing-protocol-instance-name -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +---w level? level - | +---w interface? string + | +---w interface? if:interface-ref +---x clear-database +---w input - +---w routing-protocol-instance-name instance-state-ref + +---w routing-protocol-instance-name -> +/rt:routing/control-plane-protocols/control-plane-protocol/name +---w level? level notifications: +---n database-overload - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro overload? enumeration +---n lsp-too-large - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro pdu-size? uint32 | +--ro lsp-id? lsp-id +---n if-state-change - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro state? if-state-type +---n corrupted-lsp-detected - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro lsp-id? lsp-id +---n attempt-to-exceed-max-sequence - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level | +--ro lsp-id? lsp-id +---n id-len-mismatch - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro pdu-field-len? uint8 | +--ro raw-pdu? binary +---n max-area-addresses-mismatch - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro max-area-addresses? uint8 | +--ro raw-pdu? binary +---n own-lsp-purge - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro lsp-id? lsp-id +---n sequence-number-skipped - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro lsp-id? lsp-id +---n authentication-type-failure - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary +---n authentication-failure - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary +---n version-skew - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro protocol-version? uint8 | +--ro raw-pdu? binary +---n area-mismatch - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary +---n rejected-adjacency - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary | +--ro reason? string +---n protocols-supported-mismatch - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary | +--ro protocols* uint8 +---n lsp-error-detected - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro lsp-id? lsp-id | +--ro raw-pdu? binary | +--ro error-offset? uint32 | +--ro tlv-type? uint8 +---n adjacency-state-change - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--ro interface-name? if:interface-ref | +--ro interface-level? level | +--ro extended-circuit-id? extended-circuit-id | +--ro neighbor? string | +--ro neighbor-system-id? system-id | +--ro state? adj-state-type | +--ro reason? string +---n lsp-received - | +--ro routing-instance? string - | +--ro routing-protocol-name? string + | +--ro routing-protocol-name? -> +/rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level - | +--ro interface-name? string + | +--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-instance? string - +--ro routing-protocol-name? string + +--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 The module enables authentication configuration through the IETF key- - chain module ([I-D.ietf-rtgwg-yang-key-chain]). The IS-IS module - imports the "ietf-key-chain" module and reuses some groupings to - allow global and per interface configuration of authentication. If a - global authentication is configured, an implementation SHOULD - authenticate PSNPs, CSNPs and LSPs with the authentication parameters - supplied. The authentication of hello PDUs can be activated on a per - interface basis. + chain module ([RFC8177]). The IS-IS module imports the "ietf-key- + chain" module and reuses some groupings to allow global and per + interface configuration of authentication. If a global + authentication is configured, an implementation SHOULD authenticate + PSNPs, CSNPs and LSPs with the authentication parameters supplied. + The authentication of hello PDUs can be activated on a per interface + basis. 2.6. IGP/LDP synchronization [RFC5443] defines a mechanism where IGP needs to be synchronized with LDP. An "ldp-igp-sync" feature has been defined in the model to support this mechanism. The "mpls/ldp/igp-sync" leaf under "interface" allows activation of the mechanism on a per interface basis. The "mpls/ldp/igp-sync" container in the global configuration is empty on purpose and is not required for the activation. The goal of this empty container is to allow easy augmentation with additional @@ -1142,169 +903,175 @@ o hostnames: provides informations about system-id to hostname mappings. o fast-reroute: provides informations about IP FRR. 3. RPC Operations The "ietf-isis" module defines two RPC operations: - o clear-isis-database: reset the content of a particular IS-IS - database and restart database synchronization with the neighbors. + o clear-database: reset the content of a particular IS-IS database + and restart database synchronization with the neighbors. - o clear-isis-adjacency: restart a particular set of IS-IS - adjacencies. + o clear-adjacency: restart a particular set of IS-IS adjacencies. 4. Notifications The "ietf-isis" module introduces some notifications : database-overload : raised when overload condition is changed. lsp-too-large : raised when the system tries to propagate a too large PDU. + if-state-change: raise when the state of an interface changes. + corrupted-lsp-detected : raised when the system find that an LSP that was stored in memory has become corrupted. - attempt-to-exceed-max-sequence : This notification is sent when - the system wraps the 32-bit sequence counter of an LSP. + attempt-to-exceed-max-sequence: 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 with a different value for the System ID length. max-area-addresses-mismatch : This notification is sent when we receive a PDU with a different value for the Maximum Area Addresses. own-lsp-purge : 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 receives a PDU with its own system ID and different - contents. The system has to reissue the LSP with a higher - sequence number. + sequence-number-skipped: This notification is sent when the system + receives a PDU with its 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 system receives a PDU with the wrong authentication type field. authentication-failure : 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 PDU with a different protocol version number. + version-skew: 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 a Hello PDU from an IS that does not share any area address. rejected-adjacency : This notification is sent when the system receives a Hello PDU from an IS but does not establish an adjacency for some reason. protocols-supported-mismatch : This notification is sent when the system receives a non pseudonode LSP that has no matching protocol supported. lsp-error-detected : This notification is sent when the system receives a LSP with a parse error. - adjacency-change : This notification is sent when an IS-IS + adjacency-state-change: This notification is sent when an IS-IS adjacency moves to Up state or to Down state. lsp-received : This notification is sent when a LSP is received. lsp-generation : This notification is sent when a LSP is regenerated. 5. Interaction with Other YANG Modules The "isis" configuration container augments the "/rt:routing/ rt:control-plane-protocols/control-plane-protocol" container of the - ietf-routing [I-D.ietf-netmod-routing-cfg] module by defining IS-IS - specific parameters. + ietf-routing [RFC8349] module by defining IS-IS specific parameters. - The "isis" module augments "/if:interfaces/if:interface" with ISO - 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- state/rt:control-plane-protocols/control-plane-protocol" container of the ietf-routing module by defining IS-IS specific operational states. Some IS-IS specific routes attributes are added to route objects of the ietf-routing module by augmenting "/rt:routing- state/rt:ribs/rt:rib/rt:routes/rt:route". The modules defined in this document use some groupings from ietf- - keychain [I-D.ietf-rtgwg-yang-key-chain]. + keychain [RFC8177]. + + The module reuses types from [RFC6991] and [RFC8294]. + + To support BFD for fast detection, the module relies on + [I-D.ietf-bfd-yang]. 6. IS-IS YANG Module - file "ietf-isis@2018-08-09.yang" + file "ietf-isis@2018-11-26.yang" module ietf-isis { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; prefix isis; import ietf-routing { prefix "rt"; reference "RFC 8349 - A YANG Data Model for Routing Management (NMDA Version)"; } import ietf-inet-types { prefix inet; - reference "RFC 6021 - Common YANG Data Types"; + reference "RFC 6991 - Common YANG Data Types"; } import ietf-yang-types { prefix yang; - reference "RFC 6021 - Common YANG Data Types"; + reference "RFC 6991 - Common YANG Data Types"; } import ietf-interfaces { prefix "if"; reference "RFC 8343 - A YANG Data Model for Interface Management (NDMA Version)"; } import ietf-key-chain { prefix "key-chain"; reference "RFC 8177 - YANG Data Model for Key Chains"; } import ietf-routing-types { prefix "rt-types"; - reference "RFC 8291 - Common YANG Data Types for the + reference "RFC 8294 - Common YANG Data Types for the Routing Area"; } import iana-routing-types { prefix "iana-rt-types"; - reference "RFC 8291 - Common YANG Data Types for the + reference "RFC 8294 - Common YANG Data Types for the Routing Area"; } import ietf-bfd-types { prefix "bfd-types"; reference "RFC XXXX - YANG Data Model for Bidirectional - Forwarding Detection (BFD)"; + Forwarding Detection (BFD).Please replace YYYY with + published RFC +number for draft-ietf-bfd-yang."; } organization - "IETF IS-IS Working Group"; + "IETF LSR Working Group"; contact - "WG List: <mailto:isis-wg@ietf.org> + "WG List: <mailto:lsr@ietf.org> Editor: Stephane Litkowski <mailto:stephane.litkowski@orange.com> Derek Yeung <mailto:derek@arrcus.com> Acee Lindem <mailto:acee@cisco.com> Jeffrey Zhang <mailto:zzhang@juniper.net> @@ -1317,51 +1084,56 @@ Kiran Agrahara Sreenivasa <mailto:kkoushik@brocade.com> Yingzhen Qu <mailto:yiqu@cisco.com> Jeff Tantsura <mailto:jefftant.ietf@gmail.com> "; description - "The YANG module defines a generic configuration model for - IS-IS common across all of the vendor implementations."; + "This YANG module defines the generic configuration and + operational state for the IS-IS protocol. + It is intended that the module + will be extended by vendors to define vendor-specific + IS-IS configuration parameters and policies, + for example route maps or route policies. - revision 2018-08-09 { + This YANG model conforms to the Network Management + Datastore Architecture (NDMA) as described in RFC 8242. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; + see the RFC itself for full legal notices."; + + revision 2018-11-26 { description "Initial revision."; reference "RFC XXXX"; } /* Identities */ identity isis { base rt:routing-protocol; description "Identity for the IS-IS routing protocol."; } - identity isis-adjacency-change { - description "Identity for the IS-IS routing protocol - adjacency state."; - } - - identity clear-isis-database { - description "Identity for the IS-IS routing protocol - database reset action."; - } - - identity clear-isis-adjacency { - description "Identity for the IS-IS routing protocol - adjacency reset action."; - } - identity lsp-log-reason { description "Base identity for an LSP change log reason."; } identity refresh { base lsp-log-reason; description "Identity used when the LSP log reason is a refresh LSP received."; } @@ -1365,77 +1137,79 @@ "Identity used when the LSP log reason is a refresh LSP received."; } identity content-change { base lsp-log-reason; description "Identity used when the LSP log reason is a change in the content of the LSP."; } - /* Feature definitions */ + feature poi-tlv { + description "Support of Purge Originator Identification."; + reference "RFC 6232 - Purge Originator Identification TLV + for IS-IS"; + } feature ietf-spf-delay { description - "Support of IETF SPF delay algorithm."; - reference "RFC XXXX - SPF Back-off algorithm for link + "Support for IETF SPF delay algorithm."; + reference "RFC 8405 - SPF Back-off algorithm for link state IGPs"; } feature bfd { description "Support for BFD detection of IS-IS neighbor reachability."; reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) RFC 5881 - Bidirectional Forwarding Detection (BFD) for IPv4 and IPv6 (Single Hop)"; } feature key-chain { description "Support of keychain for authentication."; reference "RFC8177 - YANG Data Model for Key Chains"; } feature node-flag { description - "Support of node-flag advertisement - as prefix attribute"; + "Support for node-flag for IS-IS prefixes."; reference "RFC7794 - IS-IS Prefix Attributes for Extended IP and IPv6 Reachability"; } feature node-tag { description - "Support of node tag."; + "Support for node admin tag for IS-IS routing instances."; reference "RFC7917 - Advertising Node Administrative Tags in IS-IS"; } feature ldp-igp-sync { description - "Support of synchronization between IS-IS and LDP."; - reference "RFC5443 - LDP IGP Synchronization"; + "LDP IGP synchronization."; + reference "RFC5443 - LDP IGP Synchronization."; } feature fast-reroute { description - "Support of IP Fast Reroute."; - + "Support for IP Fast Reroute (IP-FRR)."; } feature nsr { description - "Support of Non-Stop Routing."; + "Non-Stop-Routing (NSR) support."; } feature lfa { description - "Support of Loop-Free Alternates."; + "Support for Loop-Free Alternates (LFAs)."; reference "RFC5286 - Basic Specification of IP Fast-Reroute: Loop-free Alternates"; } feature remote-lfa { description - "Support of remote Loop Free Alternates."; + "Support for Remote Loop-Free Alternates (R-LFAs)."; reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute"; } feature overload-max-metric { description "Support of overload by setting all links to max metric."; } feature prefix-tag { description @@ -1444,21 +1218,22 @@ IS-IS Using Administrative Tags"; } feature prefix-tag64 { description "Support for 64-bit prefix tags"; reference "RFC5130 - A Policy Control Mechanism in IS-IS Using Administrative Tags"; } feature auto-cost { description - "Use an automated assignment of metrics."; + "Calculate IS-IS interface metric according to + reference bandwidth."; } feature te-rid { description "Traffic-Engineering Router-ID."; reference "RFC5305 - IS-IS Extensions for Traffic Engineering RFC6119 - IPv6 Traffic Engineering in IS-IS"; } feature max-ecmp { description @@ -1456,66 +1231,54 @@ feature te-rid { description "Traffic-Engineering Router-ID."; reference "RFC5305 - IS-IS Extensions for Traffic Engineering RFC6119 - IPv6 Traffic Engineering in IS-IS"; } feature max-ecmp { description "Setting maximum number of ECMP paths."; - } feature multi-topology { description - "Multitopology routing support."; + "Support for Multiple-Topology Routing (MTR)."; reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS"; } feature nlpid-control { description "This feature controls the advertisement of support NLPID within IS-IS configuration."; } feature graceful-restart { description - "Graceful restart support."; + "IS-IS Graceful restart support."; reference "RFC5306 - Restart Signaling in IS-IS"; } feature lsp-refresh { description "Configuration of LSP refresh interval."; } feature maximum-area-addresses { description "Support of maximum-area-addresses config."; } feature admin-control { description - "Control administrative state of IS-IS."; + "Administrative control of the protocol state."; } /* Type definitions */ - typedef instance-state-ref { - type leafref { - path "/rt:routing-state/" - +"rt:control-plane-protocols/rt:control-plane-protocol/" - +"rt:name"; - } - description - "This type is used for leaves that reference state data for - an IS-IS protocol instance."; - } - typedef circuit-id { type uint8; description "This type defines the circuit ID associated with an interface."; } typedef extended-circuit-id { type uint32; description @@ -1600,34 +1363,35 @@ "This type defines the state of an interface"; } typedef level-number { type uint8 { range "1 .. 2"; } description "This type defines the current IS-IS level."; } + typedef lsp-id { type string { pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' +'{4}\.[0-9][0-9]-[0-9][0-9]'; } description "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 { type string { - pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; + pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,3}'; } description "This type defines the area address format."; } typedef snpa { type string { length "0 .. 20"; } description @@ -1635,21 +1399,33 @@ of Attachement (SNPA) format."; } typedef system-id { type string { pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; } description "This type defines IS-IS system-id using pattern, - An example system-id is 0143.0438.AeF0"; + An example system-id is 0143.0438.AEF0"; + } + typedef extended-system-id { + type string { + pattern + '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9][0-9]'; + } + description + "This type defines IS-IS system-id using pattern. The extended + system id contains the pseudonode number in +addition to the + system id. + An example system-id is 0143.0438.AEF0.00"; } typedef wide-metric { type uint32 { range "0 .. 16777215"; } description "This type defines wide style format of IS-IS metric."; } @@ -1673,109 +1449,141 @@ } enum "mesh-blocked" { description "LSPs must not be flooded over this interface."; } } description "This type describes mesh group state of an interface"; } - /* Grouping definitions for configuration and ops state */ + /* Grouping for notifications */ - grouping adjacency-state { - container adjacencies { - config false; - list adjacency { - leaf neighbor-sys-type { - type level; + grouping notification-instance-hdr { description - "Level capability of neighboring system"; + "Instance specific IS-IS notification data grouping"; + leaf routing-protocol-name { + type leafref { + path "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/rt:name"; } - leaf neighbor-sysid { - type system-id; - description - "The system-id of the neighbor"; + description "Name of the IS-IS instance."; } - leaf neighbor-extended-circuit-id { - type extended-circuit-id; - description - "Circuit ID of the neighbor"; + leaf isis-level { + type level; + description "IS-IS level of the instance."; } - leaf neighbor-snpa { - type snpa; + } + + grouping notification-interface-hdr { description - "SNPA of the neighbor"; + "Interface specific IS-IS notification data grouping"; + leaf interface-name { + type if:interface-ref; + description "IS-IS interface name"; } - leaf usage { + leaf interface-level { type level; + description "IS-IS level of the interface."; + } + leaf extended-circuit-id { + type extended-circuit-id; + description "Eextended circuit-id of the interface."; + } + } + + /* Groupings for IP Fast Reroute */ + + grouping instance-fast-reroute-config { description - "Define the level(s) activated on the adjacency. - On a p2p link this might be level 1 and 2, - but on a LAN, the usage will be level 1 - between peers at level 1 or level 2 between - peers at level 2."; + "This group defines global configuration of IP + Fast ReRoute (FRR)."; + container fast-reroute { + if-feature fast-reroute; + description + "This container may be augmented with global + parameters for IP-FRR."; + container lfa { + if-feature lfa; + description + "This container may be augmented with + global parameters for Loop-Free Alternatives (LFA). + Container creation has no effect on LFA activation."; } - leaf hold-timer { - type rt-types:timer-value-seconds16; - units seconds; + } + } + + grouping interface-lfa-config { + leaf candidate-enable { + type boolean; + default true; description - "The holding time in seconds for this - adjacency. This value is based on - received hello PDUs and the elapsed - time since receipt."; + "Enable the interface to be used as backup."; } - leaf neighbor-priority { - type uint8 { - range "0 .. 127"; + leaf enable { + type boolean; + default false; + description + "Activates LFA - Per-prefix LFA computation + is assumed."; } + container remote-lfa { + if-feature remote-lfa; + leaf enable { + type boolean; + default false; description - "Priority of the neighboring IS for becoming - the DIS."; + "Activates Remote LFA (R-LFA)."; } - leaf lastuptime { - type yang:timestamp; description - "When the adjacency most recently entered - state 'up', measured in hundredths of a - second since the last reinitialization of - the network management subsystem. - The value is 0 if the adjacency has never - been in state 'up'."; + "Remote LFA configuration."; } - leaf state { - type adj-state-type; + description "Grouping for LFA interface configuration"; + } + grouping interface-fast-reroute-config { description - "This leaf describes the state of the interface."; + "This group defines interface configuration of IP-FRR."; + container fast-reroute { + if-feature fast-reroute; + container lfa { + if-feature lfa; + uses interface-lfa-config; + container level-1 { + uses interface-lfa-config; + description + "LFA level 1 config"; } - + container level-2 { + uses interface-lfa-config; description - "List of operational adjacencies."; + "LFA level 2 config"; } description - "This container lists the adjacencies of - the local node."; + "LFA configuration."; } description - "Adjacency state"; + "Interface IP Fast-reroute configuration."; } + } + grouping instance-fast-reroute-state { + description "IPFRR state data grouping"; - grouping fast-reroute-global-state { container protected-routes { config false; - list af-stats { - key "af prefix alternate"; + list address-family-stats { + key "address-family prefix alternate"; - leaf af { + leaf address-family { type iana-rt-types:address-family; description "Address-family"; + } leaf prefix { type string; description "Protected prefix."; } leaf alternate { type string; description "Alternate nexthop for the prefix."; @@ -1874,24 +1682,24 @@ } description "Per-AF protected prefix statistics."; } description "List of prefixes that are protected."; } container unprotected-routes { config false; - list af-stats { - key "af prefix"; + list address-family-stats { + key "address-family prefix"; - leaf af { + leaf address-family { type iana-rt-types:address-family; description "Address-family"; } leaf prefix { type string; description "Unprotected prefix."; } description "Per AF unprotected prefix statistics."; @@ -1900,26 +1708,25 @@ "List of prefixes that are not protected."; } list protection-statistics { key frr-protection-method; config false; leaf frr-protection-method { type string; description "Protection method used."; } - list af-stats { - key af; + list address-family-stats { + key address-family; - leaf af { + leaf address-family { type iana-rt-types:address-family; - description "Address-family"; } leaf total-routes { type uint32; description "Total prefixes."; } leaf unprotected-routes { type uint32; description "Total prefixes that are not protected."; @@ -1934,59 +1741,71 @@ description "Total prefixes that are link protected."; } leaf nodeprotected-routes { type uint32; description "Total prefixes that are node protected."; } description "Per AF protected prefix statistics."; - } description "Global protection statistics."; } - description "IPFRR states."; } - grouping notification-instance-hdr { + /* Route table and local RIB groupings */ + + grouping local-rib { + description "Local-rib - RIB for Routes computed by the local + IS-IS routing instance."; + container local-rib { + config false; + description "Local-rib."; + list route { + key "prefix"; + description "Routes"; + leaf prefix { + type inet:ip-prefix; + description "Destination prefix."; + + } + container next-hops { + description "Next hops for the route."; + list next-hop { + key "next-hop"; + description "List of next hops for the route"; + leaf outgoing-interface { + type if:interface-ref; description - "Instance specific IS-IS notification data grouping"; - leaf routing-instance { - type string; - description "Name of the routing-instance instance."; + "Name of the outgoing interface."; } - leaf routing-protocol-name { - type string; - description "Name of the IS-IS instance."; + leaf next-hop { + type inet:ip-address; + description "Nexthop address."; } - leaf isis-level { - type level; - description "IS-IS level of the instance."; } } - - grouping notification-interface-hdr { - description - "Interface specific IS-IS notification data grouping"; - leaf interface-name { - type string; - description "IS-IS interface name"; + leaf metric { + type uint32; + description "Metric for this route."; + } + leaf level { + type level-number; + description "Level number for this route."; + } + leaf route-tag { + type uint32; + description "Route tag for this route."; } - leaf interface-level { - type level; - description "IS-IS level of the interface."; } - leaf extended-circuit-id { - type extended-circuit-id; - description "Eextended circuit-id of the interface."; } } grouping route-content { description "IS-IS protocol-specific route properties grouping."; leaf metric { type uint32; description "IS-IS metric of a route."; } @@ -2028,105 +1847,145 @@ } enum l1-down-external { description "Level 1 external route and leaked to a lower level"; } } description "IS-IS route type."; } } - grouping admin-control { - leaf enable { - if-feature admin-control; - type boolean; - default true; + /* Grouping definitions for configuration and ops state */ + + grouping adjacency-state { + container adjacencies { + config false; + list adjacency { + leaf neighbor-sys-type { + type level; description - "Control the administrative state."; + "Level capability of neighboring system"; } + leaf neighbor-sysid { + type system-id; description - "Grouping for admin control."; + "The system-id of the neighbor"; } - - grouping fast-reroute-global-cfg { + leaf neighbor-extended-circuit-id { + type extended-circuit-id; description - "IPFRR global configuration grouping"; - container lfa { - if-feature lfa; + "Circuit ID of the neighbor"; + } + leaf neighbor-snpa { + type snpa; description - "This container may be augmented with global - parameters for LFA. Creating the container has no - effect on LFA activation."; + "SNPA of the neighbor"; } + leaf usage { + type level; + description + "Define the level(s) activated on the adjacency. + On a p2p link this might be level 1 and 2, + but on a LAN, the usage will be level 1 + between peers at level 1 or level 2 between + peers at level 2."; + } + leaf hold-timer { + type rt-types:timer-value-seconds16; + units seconds; + description + "The holding time in seconds for this + adjacency. This value is based on + received hello PDUs and the elapsed + time since receipt."; + } + leaf neighbor-priority { + type uint8 { + range "0 .. 127"; + } + description + "Priority of the neighboring IS for becoming + the DIS."; + } + leaf lastuptime { + type yang:timestamp; + description + "When the adjacency most recently entered + state 'up', measured in hundredths of a + second since the last reinitialization of + the network management subsystem. + The value is 0 if the adjacency has never + been in state 'up'."; + } + leaf state { + type adj-state-type; + description + "This leaf describes the state of the interface."; } - grouping fast-reroute-if-cfg { description - "IPFRR interface configuration grouping"; - container lfa { - if-feature lfa; - uses lfa-if-cfg; - container level-1 { - uses lfa-if-cfg; + "List of operational adjacencies."; + } description - "LFA level 1 config"; + "This container lists the adjacencies of + the local node."; } - container level-2 { - uses lfa-if-cfg; description - "LFA level 2 config"; + "Adjacency state"; } + + grouping admin-control { + leaf enable { + if-feature admin-control; + type boolean; + default true; description - "LFA config"; + "Enable/Disable the protocol."; } + description + "Grouping for admin control."; } - grouping ietf-spf-delay-cfg { + grouping ietf-spf-delay { leaf initial-delay { type rt-types:timer-value-milliseconds; units msec; description - "Delay used while in QUIET state."; - + "Delay used while in QUIET state (milliseconds)."; } leaf short-delay { type rt-types:timer-value-milliseconds; units msec; description - "Delay used while in SHORT_WAIT state."; + "Delay used while in SHORT_WAIT state (milliseconds)."; } leaf long-delay { type rt-types:timer-value-milliseconds; units msec; description - "Delay used while in LONG_WAIT state."; + "Delay used while in LONG_WAIT state (milliseconds)."; } leaf hold-down { type rt-types:timer-value-milliseconds; units msec; description - "Timer used to consider an IGP stability period."; + "Timer used to consider an IGP stability period + (milliseconds)."; } leaf time-to-learn { type rt-types:timer-value-milliseconds; units msec; description "Duration used to learn all the IGP events - related to a single component failure."; - } - - description - "Grouping for IETF SPF delay configuration."; + related to a single component failure (milliseconds)."; } - - grouping ietf-spf-delay-state { leaf current-state { type enumeration { enum "quiet" { description "QUIET state"; } enum "short-wait" { description "SHORT_WAIT state"; } enum "long-wait" { description "LONG_WAIT state"; @@ -2163,84 +2021,40 @@ description "Time when next SPF has been scheduled."; } leaf last-spf-time { type yang:timestamp; config false; description "Time of last SPF computation."; } description - "Grouping for IETF SPF delay operational states."; + "Grouping for IETF SPF delay configuration and state."; } - grouping local-rib { - description "Local-rib grouping."; - container local-rib { - config false; - description "Local-rib."; - list route { - key "prefix"; - description "List of IS-IS local RIB Routes"; - leaf prefix { - type inet:ip-prefix; - description "Destination prefix."; - - } - container next-hops { - description "All next hops for the route."; - list next-hop { - key "next-hop"; - description "List of next hop for the route"; - leaf outgoing-interface { - type if:interface-ref; + grouping node-tag-config { description - "Name of the outgoing interface."; - } - leaf next-hop { - type inet:ip-address; - description "Nexthop address."; - } - } - } - leaf metric { - type uint32; - description "Metric for this route."; - } - leaf level { - type level-number; - description "Level number for this route."; - } - leaf route-tag { - type uint32; - description "Route tag for this route."; - } - } - } - } - - grouping isis-node-tag-cfg { - description "IS-IS node tag config."; + "IS-IS node tag config state."; container node-tags { if-feature node-tag; list node-tag { key tag; leaf tag { type uint32; description "Node tag value."; } description "List of tags."; } description - "Container for node tags."; + "Container for node admin tags."; } } grouping authentication-global-cfg { choice authentication-type { case key-chain { if-feature key-chain; leaf key-chain { type key-chain:key-chain-ref; description @@ -2421,80 +2235,151 @@ } grouping metric-cfg { leaf value { type wide-metric; default "10"; description "Metric value."; } description "Interface metric grouping"; } + grouping metric-parameters { + container metric-type { + uses metric-type-global-cfg; + container level-1 { + uses metric-type-global-cfg; + description "level-1 specific configuration"; + } + container level-2 { + uses metric-type-global-cfg; + description "level-2 specific configuration"; + } + description "Metric style global configuration"; + } - grouping lfa-if-cfg { - leaf candidate-disabled { + container default-metric { + uses default-metric-global-cfg; + container level-1 { + uses default-metric-global-cfg; + description "level-1 specific configuration"; + } + container level-2 { + uses default-metric-global-cfg; + description "level-2 specific configuration"; + } + description "Default metric global configuration"; + } + container auto-cost { + if-feature auto-cost; + description + "Interface Auto-cost configuration state."; + leaf enable { type boolean; - default false; description - "Prevent the interface to be used as backup."; + "Enable/Disable interface auto-cost."; + } + leaf reference-bandwidth { + when "../enable = 'true'" { + description "Only when auto cost is enabled"; + } + type uint32 { + range "1..4294967"; } + units Mbits; + description + "Configure reference bandwidth used to automatically + determine interface cost (Mbits). The cost is the + reference bandwidth divided by the interface speed + with 1 being the minimum cost."; + + } + } + + description "Grouping for global metric parameters."; + } + + grouping high-availability-parameters { + container graceful-restart { + if-feature graceful-restart; leaf enable { type boolean; default false; + description "Enable graceful restart."; + } + leaf restart-interval { + type rt-types:timer-value-seconds16; + units "seconds"; description - "LFA Activation - this model assumes activation - of per-prefix LFA."; + "Interval (in seconds) to attempt graceful restart prior + to failure."; } - - container remote-lfa { - if-feature remote-lfa; + leaf helper-enable { + type boolean; + default true; + description + "Enable local IS-IS router as graceful restart helper."; + } + description "Graceful-Restart Configuration."; + } + container nsr { + if-feature nsr; + description "Non-Stop Routing (NSR) configuration."; leaf enable { type boolean; default false; - description - "Activates rLFA."; + description "Enable/Disable Non-Stop Routing (NSR)."; } - description "Remote LFA configuration."; } - description "Grouping for LFA interface configuration"; + description "Grouping for High Availability parameters."; } - grouping isis-global-cfg { - description "IS-IS global configuration grouping"; + grouping authentication-parameters { + container authentication { + uses authentication-global-cfg; - uses admin-control; + container level-1 { + uses authentication-global-cfg; + description "level-1 specific configuration"; - leaf level-type { - type level; - default "level-all"; - description - "Level of an IS-IS node - can be level-1-only, - level-2-only or level-1-2."; } - - leaf system-id { - type system-id; - description "System-id of the node."; + container level-2 { + uses authentication-global-cfg; + description "level-2 specific configuration"; } - - leaf maximum-area-addresses { - if-feature maximum-area-addresses; - type uint8; - default 3; - description "Maximum areas supported."; + description "Authentication global configuration for + both LSPs and SNPs."; + } + description "Grouping for authentication parameters"; + } + grouping address-family-parameters { + container address-families { + if-feature nlpid-control; + list address-family-list { + key address-family; + leaf address-family { + type iana-rt-types:address-family; + description "Address-family"; + } + leaf enable { + type boolean; + description "Activate the address family."; } - - leaf-list area-address { - type area-address; description - "List of areas supported by the protocol instance."; + "List of address families and whether or not they + are activated."; + } + description "Address Family configuration"; + } + description "Grouping for address family parameters."; } + grouping mpls-parameters { container mpls { container te-rid { if-feature te-rid; description "Stable ISIS Router IP Address used for Traffic Engineering"; leaf ipv4-router-id { type inet:ipv4-address; description "Router ID value that would be used in TLV 134."; @@ -2509,34 +2395,24 @@ container igp-sync { if-feature ldp-igp-sync; description "This container may be augmented with global parameters for igp-ldp-sync."; } description "LDP configuration."; } description "MPLS configuration"; } - container auto-cost { - if-feature auto-cost; - leaf reference-bandwidth { - type uint32; - units "bps"; - description "Bandwidth for calculating metric."; - } - leaf enable { - type boolean; - default false; - description "Enable/disable auto-cost."; - } - description "Auto-cost configuration."; + description "Grouping for MPLS global parameters."; } + + grouping lsp-parameters { leaf lsp-mtu { type uint16; units "bytes"; default 1492; description "Maximum size of an LSP PDU in bytes."; } leaf lsp-lifetime { type uint16 { range "1..65535"; @@ -2545,115 +2421,90 @@ description "Lifetime of the router's LSPs in seconds."; } leaf lsp-refresh { if-feature lsp-refresh; type rt-types:timer-value-seconds16; units "seconds"; description "Refresh interval of the router's LSPs in seconds."; } - container graceful-restart { - if-feature graceful-restart; - leaf enable { + leaf poi-tlv { + if-feature poi-tlv; type boolean; default false; - description "Enable graceful restart."; - } - leaf restart-interval { - type rt-types:timer-value-seconds16; - units "seconds"; description - "Interval (in seconds) to attempt graceful restart prior - to failure."; + "Enable advertisement of IS-IS purge TLV."; + } + description "Grouping for LSP global parameters."; + } + grouping spf-parameters { + container spf-control { + leaf paths { + if-feature max-ecmp; + type uint16 { + range "1..32"; } - leaf helper-enable { - type boolean; - default true; description - "Enable local IS-IS router as graceful restart helper."; + "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; } - description "Graceful-Restart Configuration."; + container ietf-spf-delay { + if-feature ietf-spf-delay; + uses ietf-spf-delay; + description "IETF SPF delay algorithm configuration."; } - - container nsr { - if-feature nsr; - description "Non-Stop Routing (NSR) configuration."; - leaf enable { - type boolean; - default false; - description "Enable/Disable Non-Stop Routing (NSR)."; + description + "SPF calculation control."; } + description "Grouping for SPF global parameters."; } + grouping instance-config { + description "IS-IS global configuration grouping"; - uses isis-node-tag-cfg; - - container authentication { - uses authentication-global-cfg; + uses admin-control; - container level-1 { - uses authentication-global-cfg; - description "level-1 specific configuration"; - } - container level-2 { - uses authentication-global-cfg; - description "level-2 specific configuration"; - } - description "Authentication global configuration for - both LSPs and SNPs."; + leaf level-type { + type level; + default "level-all"; + description + "Level of an IS-IS node - can be level-1-only, + level-2-only or level-1-2."; } - container metric-type { - uses metric-type-global-cfg; - container level-1 { - uses metric-type-global-cfg; - description "level-1 specific configuration"; - } - container level-2 { - uses metric-type-global-cfg; - description "level-2 specific configuration"; - } - description "Metric style global configuration"; + leaf system-id { + type system-id; + description "System-id of the node."; } - container default-metric { - uses default-metric-global-cfg; - container level-1 { - uses default-metric-global-cfg; - description "level-1 specific configuration"; - } - container level-2 { - uses default-metric-global-cfg; - description "level-2 specific configuration"; - } - description "Default metric global configuration"; + leaf maximum-area-addresses { + if-feature maximum-area-addresses; + type uint8; + default 3; + description "Maximum areas supported."; } - container afs { - if-feature nlpid-control; - list af { - key af; - leaf af { - type iana-rt-types:address-family; - description "Address-family"; - } - leaf enable { - type boolean; - description "Activate the address family."; - } + leaf-list area-address { + type area-address; description - "List of address families and whether or not they - are activated."; - } - description "Address Family configuration"; + "List of areas supported by the protocol instance."; } + uses lsp-parameters; + uses high-availability-parameters; + uses node-tag-config; + uses metric-parameters; + uses authentication-parameters; + uses address-family-parameters; + uses mpls-parameters; + uses spf-parameters; + uses instance-fast-reroute-config; + container preference { uses route-preference-global-cfg; description "Router preference configuration for IS-IS protocol instance route installation"; } container overload { uses overload-global-cfg; description "Router protocol instance overload state configuration"; @@ -2661,38 +2512,50 @@ container overload-max-metric { if-feature overload-max-metric; uses overload-max-metric-global-cfg; description "Router protocol instance overload maximum metric advertisement configuration."; } } - grouping isis-global-topologies-cfg { + grouping instance-state { + description + "IS-IS instance operational state."; + uses spf-log; + uses lsp-log; + uses hostname-db; + uses lsdb; + uses local-rib; + uses system-counters; + uses instance-fast-reroute-state; + } + + grouping multi-topology-config { description "Per-topology configuration"; container default-metric { uses default-metric-global-cfg; container level-1 { uses default-metric-global-cfg; description "level-1 specific configuration"; } container level-2 { uses default-metric-global-cfg; description "level-2 specific configuration"; } description "Default metric per-topology configuration"; } - uses isis-node-tag-cfg; + uses node-tag-config; } - grouping isis-if-cfg { + grouping interface-config { description "Interface configuration grouping"; leaf level-type { type level; default "level-all"; description "IS-IS level of the interface."; } leaf lsp-pacing-interval { type rt-types:timer-value-milliseconds; units "milliseconds"; default 33; @@ -2839,61 +2702,98 @@ } container bfd { if-feature bfd; description "BFD Client Configuration."; uses bfd-types:client-cfg-parms; reference "draft-ietf-bfd-yang-xx.txt: YANG Data Model for Bidirectional Forwarding Detection (BFD)"; } - container afs { + container address-families { if-feature nlpid-control; - list af { - key af; - leaf af { + list address-family-list { + key address-family; + leaf address-family { type iana-rt-types:address-family; description "Address-family"; } description "List of AFs."; } description "Interface address-families"; } container mpls { container ldp { leaf igp-sync { if-feature ldp-igp-sync; type boolean; default false; description "Enables IGP/LDP synchronization"; } description "LDP protocol related configuration."; } description "MPLS configuration for IS-IS interfaces"; } + uses interface-fast-reroute-config; } - grouping isis-if-topologies-cfg { + grouping multi-topology-interface-config { description "IS-IS interface topology configuration."; container metric { uses metric-cfg; container level-1 { uses metric-cfg; description "level-1 specific configuration"; } container level-2 { uses metric-cfg; description "level-2 specific configuration"; } description "Metric IS-IS interface configuration."; } } + grouping interface-state { + description + "IS-IS interface operational state."; + uses adjacency-state; + uses event-counters; + uses packet-counters; + } + + /* Grouping for the hostname database */ + + grouping hostname-db { + container hostnames { + config false; + list hostname { + key system-id; + leaf system-id { + type system-id; + description + "System-id associated with the hostname."; + } + leaf hostname { + type string; + description + "Hostname associated with the system ID."; + } + description + "List of system-id/hostname associations."; + } + description + "Hostname to system-id mapping database."; + } + description + "Grouping for hostname to system-id mapping database."; + } + + /* Groupings for counters */ grouping system-counters { container system-counters { config false; list level { key level; leaf level { type level-number; description "IS-IS level."; @@ -3136,20 +3034,21 @@ } description "List of packet counter for supported llevels."; } description "Packet counters per IS-IS level."; } description "Grouping for per IS-IS Level packet counters."; } + /* Groupings for various log buffers */ grouping spf-log { container spf-log { config false; list event { key id; leaf id { type uint32; description "Event identifier - purely internal value."; @@ -3226,48 +3126,46 @@ description "Event identifier - purely internal value."; } leaf level { type level-number; description "IS-IS level number for LSP"; } container lsp { leaf lsp { - type lsp-id; description "LSPID of the LSP."; } leaf sequence { type uint32; description "Sequence number of the LSP."; - } description "LSP identification container - either the received LSP or the locally generated LSP."; } leaf received-timestamp { type yang:timestamp; - description - "Timestamp of when the LSP was received. In case - of local LSP update, the timestamp refers to the - local LSP update time."; + "This is the timestamp when the LSA was received. + In case of local LSA update, the timestamp refers + to the LSA origination time."; } - leaf change { + leaf reason { type identityref { base lsp-log-reason; + } description "Type of LSP change."; } description "List of LSP events - implemented as a wrapping buffer."; } description @@ -3264,53 +3162,62 @@ } description "Type of LSP change."; } description "List of LSP events - implemented as a wrapping buffer."; } description - "LSP reception and local LSP origination events - container."; + "This container lists the LSP log. + Local LSP modifications are also included + in the list."; - } - description "Grouping for LSP log."; + } description "Grouping for LSP log."; } - grouping hostname-db { - container hostnames { - config false; - list hostname { - key system-id; - leaf system-id { - type system-id; + /* Groupings for the LSDB description */ + + /* Unknown TLV and subTLV description */ + grouping tlv { description - "System-id associated with the hostname."; + "Type-Length-Value (TLV)"; + leaf type { + type uint16; + description "TLV type."; } - leaf hostname { - type string; - description - "Hostname associated with the system ID."; + leaf length { + type uint16; + description "TLV length (octets)."; } - description - "List of system-id/hostname associations."; + leaf value { + type yang:hex-string; + description "TLV value."; } - description - "Hostname to system-id mapping database."; } + + grouping unknown-tlvs { description - "Grouping for hostname to system-id mapping database."; + "Unknown TLVs grouping - Used for unknown TLVs or + unknown sub-TLVs."; + container unknown-tlvs { + description "All unknown TLVs."; + list unknown-tlv { + description "Unknown TLV."; + uses tlv; + + } + } } - /* Groupings for the LSDB description */ + /* TLVs and subTLVs for prefixes */ grouping prefix-reachability-attributes { description "Grouping for extended reachability attributes of an IPv4 or IPv6 prefix."; leaf external-prefix-flag { type boolean; description "External prefix flag."; } @@ -3475,39 +3382,441 @@ "List of 32-bit tags associated with the IPv4 prefix."; } leaf-list tag64 { type uint64; description "List of 32-bit tags associated with the IPv4 prefix."; } uses prefix-attributes-extension; } + /* TLVs and subTLVs for neighbors */ + + grouping neighbor-link-attributes { + description + "Grouping for link attributes as defined + in RFC5029"; + leaf link-attributes-flags { + type uint16; + description + "Flags for the link attributes"; + } + } + grouping neighbor-gmpls-extensions { + description + "Grouping for GMPLS attributes of a neighbor as +defined + in RFC5307"; + leaf link-local-id { + type uint32; + description + "Local identifier of the link."; + } + leaf remote-local-id { + type uint32; + description + "Remote identifier of the link."; + } + leaf protection-capability { + type uint8; + description + "Describes the protection capabilities + of the link. This is the value of the + first octet of the sub-TLV type 20 +value."; + } + container interface-switching-capability { + description + "Interface switching capabilities of +the link."; + leaf switching-capability { + type uint8; + description + "Switching capability of the +link."; + } + leaf encoding { + type uint8; + description + "Type of encoding of the LSP +being used."; + } + container max-lsp-bandwidths { + description "Per priority max LSP +bandwidths."; + list max-lsp-bandwidth { + leaf priority { + type uint8 { + range "0 .. 7"; + } + description "Priority +from 0 to 7."; + } + leaf bandwidth { + type +rt-types:bandwidth-ieee-float32; + description "max LSP +bandwidth."; + } + description + "List of max LSP +bandwidths for different + priorities."; + } + } + container tdm-specific { + when "switching-capability = 100"; + description + "Switching Capability-specific +information applicable + when switching type is TDM."; + + leaf minimum-lsp-bandwidth { + type +rt-types:bandwidth-ieee-float32; + description "minimum LSP +bandwidth."; + } + leaf indication { + type uint8; + description + "The indication whether +the interface supports Standard or Arbitrary + SONET/SDH."; + } + } + container psc-specific { + when "switching-capability >= 1 and +switching-capability <= 4"; + description + "Switching Capability-specific +information applicable + when switching type is +PSC1,PSC2,PSC3 or PSC4."; + + leaf minimum-lsp-bandwidth { + type +rt-types:bandwidth-ieee-float32; + description "minimum LSP +bandwidth."; + } + leaf mtu { + type uint16; + units bytes; + description + "Interface MTU"; + } + } + } + } + + grouping neighbor-extended-te-extensions { + description + "Grouping for TE attributes of a neighbor as +defined + in RFC7810"; + + container unidirectional-link-delay { + description + "Container for the average delay + from the local neighbor to the remote +one."; + leaf flags { + type bits { + bit A { + position 7; + description + "The A bit +represents the Anomalous (A) bit. + The A bit is +set when the measured value of + this parameter +exceeds its configured + maximum +threshold. + The A bit is +cleared when the measured value + falls below its +configured reuse threshold. + If the A bit is +clear, + the value +represents steady-state link performance."; + } + } + description + "Flags."; + } + leaf value { + type uint32; + units usec; + description + "Delay value expressed in +microseconds."; + } + } + container min-max-unidirectional-link-delay { + description + "Container for the min and max delay + from the local neighbor to the remote +one."; + leaf flags { + type bits { + bit A { + position 7; + description + "The A bit +represents the Anomalous (A) bit. + The A bit is +set when the measured value of + this parameter +exceeds its configured + maximum +threshold. + The A bit is +cleared when the measured value + falls below its +configured reuse threshold. + If the A bit is +clear, + the value +represents steady-state link performance."; + } + } + description + "Flags."; + } + leaf min-value { + type uint32; + units usec; + description + "Minimum delay value expressed +in microseconds."; + } + leaf max-value { + type uint32; + units usec; + description + "Maximum delay value expressed +in microseconds."; + } + } + container unidirectional-link-delay-variation { + description + "Container for the average delay +variation + from the local neighbor to the remote +one."; + leaf value { + type uint32; + units usec; + description + "Delay variation value +expressed in microseconds."; + } + } + container unidirectional-link-loss{ + description + "Container for the packet loss + from the local neighbor to the remote +one."; + leaf flags { + type bits { + bit A { + position 7; + description + "The A bit +represents the Anomalous (A) bit. + The A bit is +set when the measured value of + this parameter +exceeds its configured + maximum +threshold. + The A bit is +cleared when the measured value + falls below its +configured reuse threshold. + If the A bit is +clear, + the value +represents steady-state link performance."; + } + } + description + "Flags."; + + } + leaf value { + type uint32; + units percent; + description + "Link packet loss expressed as +a percentage + of the total traffic sent over +a configurable interval."; + } + } + container unidirectional-link-residual-bandwidth { + description + "Container for the residual bandwidth + from the local neighbor to the remote +one."; + leaf value { + type rt-types:bandwidth-ieee-float32; + units Bps; + description + "Residual bandwidth."; + } + } + container unidirectional-link-available-bandwidth { + description + "Container for the available bandwidth + from the local neighbor to the remote +one."; + leaf value { + type rt-types:bandwidth-ieee-float32; + units Bps; + description + "Available bandwidth."; + } + } + container unidirectional-link-utilized-bandwidth { + description + "Container for the utilized bandwidth + from the local neighbor to the remote +one."; + leaf value { + type rt-types:bandwidth-ieee-float32; + units Bps; + description + "Utilized bandwidth."; + } + } + } + + grouping neighbor-te-extensions { + description + "Grouping for TE attributes of a neighbor as +defined + in RFC5305"; + + leaf admin-group { + type uint32; + description + "Administrative group/Resource +Class/Color."; + } + container local-if-ipv4-addrs { + description "All local interface IPv4 +addresses."; + leaf-list local-if-ipv4-addr { + type inet:ipv4-address; + description + "List of local interface IPv4 +addresses."; + } + } + container remote-if-ipv4-addrs { + description "All remote interface IPv4 +addresses."; + leaf-list remote-if-ipv4-addr { + type inet:ipv4-address; + description + "List of remote interface IPv4 +addresses."; + } + } + leaf te-metric { + type uint32; + description "TE metric."; + } + leaf max-bandwidth { + type rt-types:bandwidth-ieee-float32; + description "Maximum bandwidth."; + } + leaf max-reservable-bandwidth { + type rt-types:bandwidth-ieee-float32; + description "Maximum reservable bandwidth."; + } + container unreserved-bandwidths { + description "All unreserved bandwidths."; + list unreserved-bandwidth { + leaf priority { + type uint8 { + range "0 .. 7"; + } + description "Priority from 0 to +7."; + } + leaf unreserved-bandwidth { + type +rt-types:bandwidth-ieee-float32; + description "Unreserved +bandwidth."; + } + description + "List of unreserved bandwidths +for different + priorities."; + } + } + } + grouping neighbor-extended { description "Grouping for attributes of an IS-IS extended neighbor."; leaf neighbor-id { - type system-id; + type extended-system-id; description "System-id of the extended neighbor."; } + container instances { + description "List of all adjacencies between the local + system and the neighbor system-id."; + list instance { + key id; + + leaf id { + type uint32; + description "Unique identifier of an instance of a + particular neighbor."; + } leaf metric { type wide-metric; description "IS-IS wide metric for extended neighbor"; } + uses neighbor-gmpls-extensions; + uses neighbor-te-extensions; + uses neighbor-extended-te-extensions; + uses neighbor-link-attributes; + uses unknown-tlvs; + description "Instance of a particular adjacency."; + } + } } grouping neighbor { description "IS-IS standard neighbor grouping."; leaf neighbor-id { - type system-id; + type extended-system-id; description "IS-IS neighbor system-id"; } + container instances { + description "List of all adjacencies between the local + system and the neighbor system-id."; + list instance { + key id; + leaf id { + type uint32; + description "Unique identifier of an instance of a + particular neighbor."; + } leaf i-e { type boolean; description "Internal or External (I/E) Metric bit value"; } leaf default-metric { type std-metric; description "IS-IS default metric value"; } container delay-metric { @@ -3539,159 +3848,115 @@ type std-metric; description "IS-IS error metric value"; } leaf supported { type boolean; default "false"; description "IS-IS error metric supported"; } description "IS-IS error metric container"; } - } - - grouping lsp-entry { - description "IS-IS LSP database entry groupting"; - - leaf decoded-completed { - type boolean; - description "IS-IS LSP body fully decoded."; - } - leaf raw-data { - type yang:hex-string; - description - "The hexadecial representation of the complete LSP in - network-byte order (NBO) as received or originated."; - } - leaf lsp-id { - type lsp-id; - description "LSP ID of the LSP"; - } - leaf checksum { - type uint16; - description "LSP checksum"; - } - leaf remaining-lifetime { - type uint16; - units "seconds"; - description - "Remaining lifetime (in seconds) until LSP expiration."; - } - leaf sequence { - type uint32; - description - "This leaf describes the sequence number of the LSP."; - } - leaf attributes { - type bits { - bit partitioned { - description "Originator partition repair supported"; - } - bit attached-error { - description - "If set, the originator is attached to - another area using the referred metric."; - } - bit attached-expense { - description - "If set, the originator is attached to - another area using the referred metric."; - } - bit attached-delay { - description - "If set, the originator is attached to - another area using the referred metric."; - } - bit attached-default { - description - "If set, the originator is attached to - another area using the referred metric."; - } - bit overload { - description - "If set, the originator is overloaded, - and must be avoided in path calculation."; + description "Instance of a particular adjacency."; } } - description "LSP attributes"; } + /* Top level TLVs */ + + grouping tlv132-ipv4-addresses { leaf-list ipv4-addresses { type inet:ipv4-address; description "List of IPv4 addresses of the IS-IS node - IS-IS reference is TLV 132."; } - + description "Grouping for TLV132."; + } + grouping tlv232-ipv6-addresses { leaf-list ipv6-addresses { type inet:ipv6-address; description "List of IPv6 addresses of the IS-IS node - IS-IS reference is TLV 232."; } + description "Grouping for TLV232."; + } + grouping tlv134-ipv4-te-rid { leaf ipv4-te-routerid { type inet:ipv4-address; description "IPv4 Traffic Engineering router ID of the IS-IS node - IS-IS reference is TLV 134."; } - + description "Grouping for TLV134."; + } + grouping tlv140-ipv6-te-rid { leaf ipv6-te-routerid { type inet:ipv6-address; description "IPv6 Traffic Engineering router ID of the IS-IS node - IS-IS reference is TLV 140."; } - + description "Grouping for TLV140."; + } + grouping tlv129-protocols { leaf-list protocol-supported { type uint8; description "List of supported protocols of the IS-IS node - IS-IS reference is TLV 129."; } - + description "Grouping for TLV129."; + } + grouping tlv137-hostname { leaf dynamic-hostname { type string; description "Host Name of the IS-IS node - IS-IS reference is TLV 137."; } - + description "Grouping for TLV137."; + } + grouping tlv10-authentication { container authentication { leaf authentication-type { type string; description "Authentication type to be used with IS-IS node."; } leaf authentication-key { type string; description "Authentication keyto be used. For security reasons, the authentication key MUST NOT be presented in plaintext format. It is recommended to use an MD5 hash to present the authentication-key."; } description "IS-IS node authentication information container - IS-IS reference is TLV 10."; } - + description "Grouping for TLV10."; + } + grouping tlv229-mt { container mt-entries { list topology { description "List of topologies supported"; - leaf MT-ID { + leaf mt-id { type uint16 { range "0 .. 4095"; } description - "Multi-Topolgoy identifier of topology."; + "Multi-Topology identifier of topology."; + } leaf attributes { type bits { bit overload { description "If set, the originator is overloaded, and must be avoided in path calculation."; } bit attached { @@ -3702,22 +3967,26 @@ } description "Attributes of the LSP for the associated topology."; } } description "IS-IS node topology information container - IS-IS reference is TLV 229."; } + description "Grouping for TLV229."; + } - list router-capabilities { + grouping tlv242-router-capabilities { + container router-capabilities { + list router-capability { leaf flags { type bits { bit flooding { position 0; description "If the S bit is set, the IS-IS Router CAPABILITY TLV MUST be flooded across the entire routing domain. If the S bit is clear, the TLV MUST NOT be leaked between levels. This bit MUST NOT be altered during the TLV leaking."; @@ -3737,46 +4006,186 @@ } container node-tags { if-feature node-tag; list node-tag { leaf tag { type uint32; description "Node tag value."; } description "List of tags."; } - description "Node Tag container"; + description "Container for node admin tags"; } + uses unknown-tlvs; + leaf binary { type binary; description "Binary encoding of the IS-IS node capabilities"; } description - "IS-IS node capabilities container. This container may + "IS-IS node capabilities. This list element may be extended with detailed information - IS-IS reference is TLV 242."; } + description "List of router capability TLVs."; + } + description "Grouping for TLV242."; + } + + grouping tlv138-srlg { + description + "Grouping for TLV138."; + container links-srlgs { + list links { + leaf neighbor-id { + type extended-system-id; + description "System-id of the extended neighbor."; + } + leaf flags { + type uint8; + description + "Flags associated with the link."; + + } + leaf link-local-id { + type union { + type inet:ip-address; + type uint32; + } + description + "Local identifier of the link. + It could be an IPv4 address or a local identifier."; + } + leaf link-remote-id { + type union { + type inet:ip-address; + type uint32; + } + description + "Remote identifier of the link. + It could be an IPv4 address or a remotely learned + identifier."; + } + container srlgs { + description "List of SRLGs."; + leaf-list srlg { + type uint32; + description + "SRLG value of the link."; + } + } + description + "SRLG attribute of a link."; + } + description + "List of links with SRLGs"; + } + } + + /* Grouping for LSDB description */ + + grouping lsp-entry { + description "IS-IS LSP database entry groupting"; + + leaf decoded-completed { + type boolean; + description "IS-IS LSP body fully decoded."; + } + leaf raw-data { + type yang:hex-string; + description + "The hexadecial representation of the complete LSP in + network-byte order (NBO) as received or originated."; + } + leaf lsp-id { + type lsp-id; + description "LSP ID of the LSP"; + } + leaf checksum { + type uint16; + description "LSP checksum"; + } + leaf remaining-lifetime { + type uint16; + units "seconds"; + description + "Remaining lifetime (in seconds) until LSP expiration."; + } + leaf sequence { + type uint32; + description + "This leaf describes the sequence number of the LSP."; + } + leaf attributes { + type bits { + bit partitioned { + description "Originator partition repair supported"; + } + bit attached-error { + description + "If set, the originator is attached to + another area using the referred metric."; + } + bit attached-expense { + description + "If set, the originator is attached to + another area using the referred metric."; + } + bit attached-delay { + description + "If set, the originator is attached to + another area using the referred metric."; + } + bit attached-default { + description + "If set, the originator is attached to + another area using the referred metric."; + } + bit overload { + description + "If set, the originator is overloaded, + and must be avoided in path calculation."; + } + } + description "LSP attributes"; + } + + uses tlv132-ipv4-addresses; + uses tlv232-ipv6-addresses; + uses tlv134-ipv4-te-rid; + uses tlv140-ipv6-te-rid; + uses tlv129-protocols; + uses tlv137-hostname; + uses tlv10-authentication; + uses tlv229-mt; + uses tlv242-router-capabilities; + uses tlv138-srlg; + uses unknown-tlvs; container is-neighbor { list neighbor { + key neighbor-id; + uses neighbor; description "List of neighbors."; } description "Standard IS neighbors container - IS-IS reference is TLV 2."; } container extended-is-neighbor { list neighbor { + key neighbor-id; + uses neighbor-extended; description "List of extended IS neighbors"; } description "Standard IS extended neighbors container - IS-IS reference is TLV 22"; } container ipv4-internal-reachability { @@ -3795,20 +4204,21 @@ description "List of prefixes."; } description "IPv4 external reachability information container - IS-IS reference is TLV 130."; } container extended-ipv4-reachability { list prefixes { uses prefix-ipv4-extended; + uses unknown-tlvs; description "List of prefixes."; } description "IPv4 extended reachability information container - IS-IS reference is TLV 135."; } container mt-is-neighbor { list neighbor { leaf mt-id { @@ -3828,60 +4237,63 @@ container mt-extended-ipv4-reachability { list prefixes { leaf mt-id { type uint16 { range "0 .. 4095"; } description "Multi-topology (MT) identifier"; } uses prefix-ipv4-extended; + uses unknown-tlvs; description "List of extended prefixes."; } description "IPv4 multi-topolgy (MT) extended reachability information container - IS-IS reference is TLV 235."; } container mt-ipv6-reachability { list prefixes { leaf MT-ID { type uint16 { range "0 .. 4095"; } description "Multi-topology (MT) identifier"; } uses prefix-ipv6-extended; + uses unknown-tlvs; description "List of IPv6 extended prefixes."; } description "IPv6 multi-topolgy (MT) extended reachability information container - IS-IS reference is TLV 237."; } container ipv6-reachability { list prefixes { uses prefix-ipv6-extended; + uses unknown-tlvs; description "List of IPv6 prefixes."; } description "IPv6 reachability information container - IS-IS reference is TLV 236."; } } + grouping lsdb { description "Link State Database (LSDB) grouping"; container database { config false; list level-db { key level; - leaf level { type level-number; description "LSDB level number (1 or 2)"; } list lsp { key lsp-id; uses lsp-entry; description "List of LSPs in LSDB"; } description "LSP list for LSDB level container"; @@ -3901,159 +4313,124 @@ description "This augments route object in RIB with IS-IS-specific attributes."; } augment "/if:interfaces/if:interface" { leaf clns-mtu { type uint16; description "CLNS MTU of the interface"; } - description "ISO interface config."; + description "ISO specific interface parameters."; } augment "/rt:routing/rt:control-plane-protocols/" +"rt:control-plane-protocol" { when "rt:type = 'isis:isis'" { description "This augment is only valid when routing protocol instance type is 'isis'"; } description "This augments a routing protocol instance with IS-IS specific parameters."; container isis { must "count(area-address) > 0" { error-message "At least one area-address must be configured."; description "Enforce configuration of at least one area."; } - uses isis-global-cfg; - container fast-reroute { - if-feature fast-reroute; - uses fast-reroute-global-cfg; - uses fast-reroute-global-state; - description - "IP Fast ReRoute (IPFRR) global container"; - } - container spf-control { - leaf paths { - if-feature max-ecmp; - type uint16 { - range "1..32"; - } - description - "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; - } - container ietf-spf-delay { - if-feature ietf-spf-delay; - uses ietf-spf-delay-cfg; - uses ietf-spf-delay-state; - description "IETF SPF delay algorithm container"; - } - description - "SPF computation-related information container"; - } + uses instance-config; + uses instance-state; + container topologies { if-feature multi-topology; list topology { key "name"; leaf enable { type boolean; description "Topology enable configuration"; } leaf name { type leafref { path "../../../../../../rt:ribs/rt:rib/rt:name"; } description "Routing Information Base (RIB) corresponding to topology."; } - uses isis-global-topologies-cfg; + uses multi-topology-config; description "List of topologies"; } description "Multi-topology container"; } container interfaces { list interface { key "name"; leaf name { type if:interface-ref; description "Reference to the interface within the routing-instance."; } - uses isis-if-cfg; - container fast-reroute { - if-feature fast-reroute; - uses fast-reroute-if-cfg; - description - "IP Fast ReRoute (IPFRR) interface container"; - } + uses interface-config; container topologies { if-feature multi-topology; list topology { key name; leaf name { type leafref { path "../../../../../../../../"+ "rt:ribs/rt:rib/rt:name"; } description "Routing Information Base (RIB) corresponding to topology."; } - uses isis-if-topologies-cfg; + uses multi-topology-interface-config; description "List of interface topologies"; } description "Multi-topology container"; } - uses adjacency-state; - uses event-counters; - uses packet-counters; description "List of IS-IS interfaces."; } description "IS-IS interface specific configuration container"; } - uses spf-log; - uses lsp-log; - uses hostname-db; - uses lsdb; - uses local-rib; - uses system-counters; description "IS-IS configuration/state top-level container"; } } /* RPC methods */ rpc clear-adjacency { description "This RPC request clears a particular set of IS-IS adjacencies. If the operation fails due to an internal reason, then the error-tag and error-app-tag should be set indicating the reason for the failure."; input { leaf routing-protocol-instance-name { - type instance-state-ref; + type leafref { + path "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/rt:name"; + } mandatory "true"; description "Name of the IS-IS protocol instance whose IS-IS information is being queried. If the corresponding IS-IS instance doesn't exist, then the operation will fail with an error-tag of 'data-missing' and an error-app-tag of 'routing-protocol-instance-not-found'."; } @@ -4063,45 +4440,48 @@ "IS-IS level of the adjacency to be cleared. If the IS-IS level is level-1-2, both level 1 and level 2 adjacencies would be cleared. If the value provided is different from the one authorized in the enum type, then the operation SHALL fail with an error-tag of 'data-missing' and an error-app-tag of 'bad-isis-level'."; } leaf interface { - type string; + type if:interface-ref; description "IS-IS interface name. If the corresponding IS-IS interface doesn't exist, then the operation SHALL fail with an error-tag of 'data-missing' and an error-app-tag of 'isis-interface-not-found'."; } } } rpc clear-database { description "This RPC request clears a particular IS-IS database. 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 { leaf routing-protocol-instance-name { - type instance-state-ref; + type leafref { + path "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/rt:name"; + } mandatory "true"; description "Name of the IS-IS protocol instance whose IS-IS - database(s) is/are being cleard. + database(s) is/are being cleared. If the corresponding IS-IS instance doesn't exist, then the operation will fail with an error-tag of 'data-missing' and an error-app-tag of 'routing-protocol-instance-not-found'."; } leaf level { type level; description "IS-IS level of the adjacency to be cleared. If the @@ -4391,21 +4771,21 @@ } leaf tlv-type { type uint8; description "If the problem is a malformed TLV, the tlv-type is set to the type value of the suspicious TLV. Otherwise, this leaf is not present."; } description "This notification is sent when the system receives an - ' LSP with a parse error. The notification generation must + LSP with a parse error. The notification generation must be throttled with at least 5 seconds betweeen successive notifications."; } notification adjacency-state-change { uses notification-instance-hdr; uses notification-interface-hdr; leaf neighbor { type string; description @@ -4480,63 +4861,68 @@ "This notification is sent when an LSP is regenerated. The notification generation must be throttled with at least 5 seconds betweeen successive notifications."; } } 7. Security Considerations - Configuration and state data defined in this document are designed to - be accessed via the NETCONF protocol [RFC6241]. - - As IS-IS is an IGP protocol (critical piece of the network), ensuring - stability and security of the protocol is mandatory for the network - service. - - Authors recommends to implement NETCONF access control model - ([RFC6536]) to restrict access to all or part of the configuration to - specific users. Access control to RPCs is also critical as RPC - allows to clear protocol datastructures that would definitively - impact the network service. This kind of RPC needs only to be used - in specific cases by well-known experienced users. - - Authors consider that all the configuration is considered as - sensitive/vulnerable as well as RPCs. But security teams can decide - to open some part of the configuration to less experienced users - depending on the internal organization, for example: - - o User FullWrite: would access to the whole data model. This kind - of profile may be restricted to few experienced people. + The YANG module specified in this document defines a schema for data + that is designed to be accessed via network management protocols such + as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer + is the secure transport layer, and the mandatory-to-implement secure + transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer + is HTTPS, and the mandatory-to-implement secure transport is TLS + [RFC8446] - o User PartialWrite: would only access to configuration part within - /isis/interfaces/interface. So this kind of profile is restricted - to creation/modification/deletion of interfaces. This profile - does not have access to RPC. + The Network Configuration Access Control Model (NACM) [RFC8341] + provides the means to restrict access for particular NETCONF or + RESTCONF users to a preconfigured subset of all available NETCONF or + RESTCONF protocol operations and content. - o User Read: would only access to the operational states. + There are a number of data nodes defined in this YANG module that are + writable/creatable/deletable (i.e., config true, which is the + default). These data nodes may be considered sensitive or vulnerable + in some network environments. Write operations (e.g., edit-config) + to these data nodes without proper protection can have a negative + effect on network operations. For IS-IS, the ability to modify IS-IS + configuration will allow the entire IS-IS domain to be compromised + including creating adjacencies with unauthorized routers to misroute + traffic, isolate routers, or mount a massive Denial-of-Service (DoS) + attack. A user should consider all the configuration nodes are + sensible. - Unauthorized access to configuration or RPC may cause high damages to - the network service. + Some of the readable data nodes in this YANG module may be considered + sensitive or vulnerable in some network environments. It is thus + important to control read access (e.g., via get, get-config, or + notification) to these data nodes. The exposure of the Link State + Database (LSDB) will expose the detailed topology of the network + including authentication parameters. Implementations MUST NOT + provide a configured authentication key in a clear text format in + response to any request (e.g., via get, get-config). - The "isis/database" may contain authentication information. As - presented in the description of the "/isis/database/level- - 1/lsp/authentication/authentication-key", the authentication MUST - never be displayed in a plaintext format for security reason. - Authors recommend the usage of MD5 to display or return the - authentication-key. + For IS-IS authentication, configuration is supported vua the + specification of key-chain [RFC8177] or the direction specification + of key and authentication algorithm. Hence, authentification + configuration using the "auth-table-trailer" case in the + "authentication" container inherits the security considerations of + [RFC8177]. This includes the considerations with respect to the + local storage and handling of authentication keys. - Some authentication-key may also be required in the "isis" writable - container. When configuring IS-IS using the NETCONF protocol, - authors recommends the usage of secure transport of NETCONF using SSH - ([RFC6242]). + Some of the RPC operations in this YANG module may be considered + sensitive or vulnerable in some network environments. It is thus + important to control access to these operations. The OSPF YANG + module support the "clear-adjacency" and "clear-database" RPCs. If + access too either of these is compromised, they can result in + temporary network outages be employed to mount DoS attacks. 8. Contributors Authors would like to thank Kiran Agrahara Sreenivasa, Dean Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the draft. 9. Acknowledgements TBD. @@ -4553,77 +4939,122 @@ This document also requests one new YANG module name in the YANG Module Names registry ([RFC6020]) with the following suggestion: name: ietf-isis namespace: urn:ietf:params:xml:ns:yang:ietf-isis prefix: isis reference: RFC XXXX 11. Change log for ietf-isis YANG module -11.1. From version -22 to version -24 +11.1. From version -24 to version -25 - o Fix revision date of the module + o RPC clear-adjacency uses now an interface reference instead of a + string. -11.2. From version -21 to version -22 + o Use expanded "address-family" rather than "af" in the model. + + o Fix pattern for area-address. + + o Removed unnecessary identities. + + o Added an instances container and list in the modeling of neighbors + in the LSDB. This is to manage the case where there are parallel + links between two neighbors. + + o Notification instance header: removed routing-instance leaf + (alignment with OSPF). + + o Notification instance header: changed routing-protocol-name to a + reference. + + o Notification interface header: changed interface to a reference. + + o RPCs: changed instance-state-ref typedef to a leafref. Removed + associated typedef. + + o Revised some groupings and their names (alignment with OSPF). + + o Some description alignment with OSPF. + + o auto-cost container alignment with OSPF. + + o MT-ID leaf in database description renamed (lower-case) mt-id. + + o In lsp-log grouping, leaf change is renamed reason to align with + OSPF. + + o Added some link attributes (GMPLS, TE, extended TE, SRLGs) in the + LSDB. + + o Added extended-system-id typedef which contains the systemid plus + the pseudonode number. + + o Add support of POI Purge Originator Identification. + +11.2. From version -22 to version -24 + + o Fix revision date of the module. + +11.3. From version -21 to version -22 o TE router-id modeling alignment with OSPF. o Add max-ecmp + feature in spf-control container (alignment with OSPF). -11.3. From version -20 to version -21 +11.4. From version -20 to version -21 o Model revision date fix -11.4. From version -19 to version -20 +11.5. From version -19 to version -20 o Moved to Yang 1.1 o Lower case enumerations o Add RFC references to features o Remove segment-routing feature o Modified BFD activation modeling -11.5. From version -18 to version -19 +11.6. From version -18 to version -19 o Align with draft-ietf-netmod-rfc8022bis. o Modify address family types as per draft-ietf-rtgwg-routing-types- 17. -11.6. From version -17 to version -18 +11.7. From version -17 to version -18 o NMDA compliancy. o Set some default values. o Align with iana-rt-types module. -11.7. From version -16 to version -17 +11.8. From version -16 to version -17 o Cosmetic fixes. o Use of rt-types model. -11.8. From version -15 to version -16 +11.9. From version -15 to version -16 o Alignment with last IETF key chain model. o lsp-log "change" leaf moved as an identity. o Incremental SPF removed from spf-log types. -11.9. From version -14 to version -15 +11.10. From version -14 to version -15 o Alignment with OSPF model done: * Added spf-control container with IETF SPF delay algorithm as a feature. * Added graceful-restart options. * Added nsr as a feature. @@ -4636,98 +5067,98 @@ * Added auto-cost container. * Moved reference-bandwidth under auto-cost container. * Added IS-IS local RIB as operational state. * Added decode-completed and raw-data leaves in the LSDB model. * Modified the notification header. -11.10. From version -13 to version -14 +11.11. From version -13 to version -14 o Segment Routing extensions are now in a separate document. -11.11. From version -12 to version -13 +11.12. From version -12 to version -13 o Move feature nlpid-control to container rather than list. o Rename multi-topology to topologies to align with OSPF. o Rename bfd/enabled to bfd/enable for consistency reason. o Add support for NSR with a feature. -11.12. From version -09 to version -12 +11.13. From version -09 to version -12 o Rename node-tag container to node-tags. -11.13. From version -08 to version -09 +11.14. From version -08 to version -09 o Added container before af list. o Added container before topology list. o Aligned LFA if per level cfg. o Align to draft-ietf-netmod-routing-cfg-23. -11.14. From version -07 to version -08 +11.15. From version -07 to version -08 o Remove selector from system-id type. o Add some default values. o Moved lists to containers+groupings for per level configuration. o remove routing-instance as per core routing model v21. o added BFD leaf (no more BFD protocol model). o changed keychain module reference. -11.15. From version -05 to version -07 +11.16. From version -05 to version -07 o Move Overload config from list to container. o Move Overload-max-metric config from list to container. o Move preference config from list to container. o Add Node flag in config. o Removed BFD config => moved to isis-bfd module. o Remove call to routing policy model. -11.16. From version -03 to version -05 +11.17. From version -03 to version -05 o Correct invalid references to previous versions of core routing model. o Remove BFD config and replace by groupings from ietf-bfd. o Adding routing-policy support through routing-policy model. -11.17. From version -02 to version -03 +11.18. From version -02 to version -03 o Reviewed config and op state groupings. o Add default value to lfa candidate-disabled. o Add enable leaf to isis container to reflect admin state. o Move to VRF centric only. o Segment routing is part os a separate module. -11.18. From version -01 to version -02 +11.19. From version -01 to version -02 o Adding IPFRR. o Adding igp-ldp-sync. o Adding segment-routing. o Adding instance reference to operational states. o Move AF type from string to identity. @@ -4739,21 +5170,21 @@ o Added modification information in lsp-log. o Removing igp-ldp-sync timer in IS-IS. o Defining hierarchy for operational states. o Adding clns-mtu. o Adding key-chain. -11.19. From version -00 to version -01 +11.20. From version -00 to version -01 o Interface metric move from af container to interface container. o Hello-padding on interface moved to hello-padding-disable with empty type. o three-way-handshake removed. o route preference changed to a choice. @@ -4769,31 +5200,29 @@ o Change hello-padding to container. o Change bfd to container. o Make BFD a feature. o Create mpls-te container and put router-id inside. o Remove GR helper disable and timers. -12. Normative References +12. References - [I-D.ietf-netmod-routing-cfg] - Lhotka, L. and A. Lindem, "A YANG Data Model for Routing - Management", draft-ietf-netmod-routing-cfg-25 (work in - progress), November 2016. +12.1. Normative References - [I-D.ietf-rtgwg-yang-key-chain] - Lindem, A., Qu, Y., Yeung, D., Chen, I., and Z. Zhang, - "Routing Key Chain YANG Data Model", draft-ietf-rtgwg- - yang-key-chain-24 (work in progress), April 2017. + [I-D.ietf-bfd-yang] + 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. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, . @@ -4819,76 +5248,127 @@ [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, . [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, . - [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration - Protocol (NETCONF) Access Control Model", RFC 6536, - DOI 10.17487/RFC6536, March 2012, - . + [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", + RFC 6991, DOI 10.17487/RFC6991, July 2013, + . [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", RFC 7490, DOI 10.17487/RFC7490, April 2015, . + [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", + RFC 7950, DOI 10.17487/RFC7950, August 2016, + . + + [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF + Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, + . + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC + 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, + May 2017, . + + [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. + Zhang, "YANG Data Model for Key Chains", RFC 8177, + DOI 10.17487/RFC8177, June 2017, + . + + [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, + "Common YANG Data Types for the Routing Area", RFC 8294, + DOI 10.17487/RFC8294, December 2017, + . + + [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration + Access Control Model", STD 91, RFC 8341, + DOI 10.17487/RFC8341, March 2018, + . + + [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., + and R. Wilton, "Network Management Datastore Architecture + (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, + . + + [RFC8343] Bjorklund, M., "A YANG Data Model for Interface + Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, + . + + [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for + Routing Management (NMDA Version)", RFC 8349, + DOI 10.17487/RFC8349, March 2018, + . + + [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol + Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, + . + +12.2. Informative References + + [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", + BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, + . + Appendix A. Example of IS-IS configuration in XML This section gives an example of configuration of an IS-IS instance on a device. The example is written in XML. SLI 1.1.1.1 - - - - Loopback0 - - - Eth1 - - - ISIS + ISIS-example - isis:isis + + + isis:isis + + true level-2 87FC.FCDF.4432 49.0001 - - 1.1.1.1 - + + + 192.0.2.1 + + 65535 65000 - wide + wide-only 111111 - - - ipv4-unicast - true - - + + + ipv4 + true + + + ipv6 + true + + Loopback0 200 0 true @@ -4895,50 +5375,63 @@ Eth1 level-2 point-to-point 167890 + Loopback0 - - + + ianaift:softwareLoopback + + enabled -
- 1.1.1.1 + 192.0.2.1 32
- + +
+ 2001:DB8::1 + 128 +
+
Eth1 - - + + ianaift:ethernetCsmacd + + enabled -
- 10.0.0.1 + 198.51.100.1 30
- + +
+ 2001:DB8:0:0:FF::1 + 64 +
+
Authors' Addresses Stephane Litkowski Orange Email: stephane.litkowski@orange.com