draft-ietf-isis-yang-isis-cfg-40.txt   draft-ietf-isis-yang-isis-cfg-41.txt 
IS-IS Working Group S. Litkowski IS-IS Working Group S. Litkowski
Internet-Draft Cisco Systems Internet-Draft Cisco Systems
Intended status: Standards Track D. Yeung Intended status: Standards Track D. Yeung
Expires: March 31, 2020 Arrcus, Inc Expires: April 10, 2020 Arrcus, Inc
A. Lindem A. Lindem
Cisco Systems Cisco Systems
J. Zhang J. Zhang
Juniper Networks Juniper Networks
L. Lhotka L. Lhotka
CZ.NIC CZ.NIC
September 28, 2019 October 08, 2019
YANG Data Model for IS-IS Protocol YANG Data Model for IS-IS Protocol
draft-ietf-isis-yang-isis-cfg-40 draft-ietf-isis-yang-isis-cfg-41
Abstract Abstract
This document defines a YANG data model that can be used to configure This document defines a YANG data model that can be used to configure
and manage the IS-IS protocol on network elements. and manage the IS-IS protocol on network elements.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
skipping to change at page 1, line 46 skipping to change at page 1, line 46
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on March 31, 2020. This Internet-Draft will expire on April 10, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 25 skipping to change at page 2, line 25
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3
2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9
2.2. Multi-topology Parameters . . . . . . . . . . . . . . . . 9 2.2. Multi-topology Parameters . . . . . . . . . . . . . . . . 10
2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10
2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 11 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12
2.5. Authentication Parameters . . . . . . . . . . . . . . . . 18 2.5. Authentication Parameters . . . . . . . . . . . . . . . . 19
2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 19 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 19
2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 19 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 20
2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.9. Operational States . . . . . . . . . . . . . . . . . . . 20 2.9. Operational States . . . . . . . . . . . . . . . . . . . 20
3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 20 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 21
4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 20 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 21
5. Interaction with Other YANG Modules . . . . . . . . . . . . . 22 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 22
6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 22 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 23
7. Security Considerations . . . . . . . . . . . . . . . . . . . 105 7. Security Considerations . . . . . . . . . . . . . . . . . . . 108
8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 107 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 110
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 107 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 110
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 107 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 110
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 108 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 110
11.1. Normative References . . . . . . . . . . . . . . . . . . 108 11.1. Normative References . . . . . . . . . . . . . . . . . . 110
11.2. Informative References . . . . . . . . . . . . . . . . . 112 11.2. Informative References . . . . . . . . . . . . . . . . . 115
Appendix A. Example of IS-IS configuration in XML . . . . . . . 112 Appendix A. Example of IS-IS configuration in XML . . . . . . . 115
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 114 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 117
1. Introduction 1. Introduction
This document defines a YANG [RFC7950] data model for IS-IS routing This document defines a YANG [RFC7950] data model for IS-IS routing
protocol. protocol.
The data model covers configuration of an IS-IS routing protocol The data model covers configuration of an IS-IS routing protocol
instance, as well as, the retrieval of IS-IS operational state. instance, as well as, the retrieval of IS-IS operational states.
A simplified tree representation of the data model is presented in A simplified tree representation of the data model is presented in
Section 2. Tree diagrams used in this document follow the notation Section 2. Tree diagrams used in this document follow the notation
defined in [RFC8340]. defined in [RFC8340].
The module is designed as per the NMDA (Network Management Datastore The module is designed as per the NMDA (Network Management Datastore
Architecture) [RFC8342]. Architecture) [RFC8342].
2. Design of the Data Model 2. Design of the Data Model
The IS-IS YANG module augments the "control-plane-protocol" list in The IS-IS YANG module augments the "control-plane-protocol" list in
the ietf-routing module [RFC8349] with specific IS-IS parameters. the ietf-routing module [RFC8349] with specific IS-IS parameters.
The figure below describes the overall structure of the ietf-isis The figure below describes the overall structure of the ietf-isis
YANG module: YANG module:
module: ietf-isis module: ietf-isis
augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route:
+--ro metric? uint32 +--ro metric? uint32
+--ro tag* uint64 +--ro tag* uint64
+--ro route-type? enumeration +--ro route-type? enumeration
augment /if:interfaces/if:interface: augment /if:interfaces/if:interface:
+--rw clns-mtu? uint16 {osi-interface}? +--rw clns-mtu? uint16 {osi-interface}?
augment augment /rt:routing/rt:control-plane-protocols/rt:
| /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: control-plane-protocol:
+--rw isis +--rw isis
+--rw enable? boolean {admin-control}? +--rw enable? boolean {admin-control}?
+--rw level-type? level +--rw level-type? level
+--rw system-id? system-id +--rw system-id? system-id
+--rw maximum-area-addresses? uint8 {maximum-area-addresses}? +--rw maximum-area-addresses? uint8 {maximum-area-addresses}?
+--rw area-address* area-address +--rw area-address* area-address
+--rw lsp-mtu? uint16 +--rw lsp-mtu? uint16
+--rw lsp-lifetime? uint16 +--rw lsp-lifetime? uint16
+--rw lsp-refresh? +--rw lsp-refresh? rt-types:timer-value-seconds16
| rt-types:timer-value-seconds16 {lsp-refresh}? | {lsp-refresh}?
+--rw poi-tlv? boolean {poi-tlv}? +--rw poi-tlv? boolean {poi-tlv}?
+--rw graceful-restart {graceful-restart}? +--rw graceful-restart {graceful-restart}?
| +--rw enable? boolean | +--rw enable? boolean
| +--rw restart-interval? rt-types:timer-value-seconds16 | +--rw restart-interval? rt-types:timer-value-seconds16
| +--rw helper-enable? boolean | +--rw helper-enable? boolean
+--rw nsr {nsr}? +--rw nsr {nsr}?
| +--rw enable? boolean | +--rw enable? boolean
+--rw node-tags {node-tag}? +--rw node-tags {node-tag}?
| +--rw node-tag* [tag] | +--rw node-tag* [tag]
| ... | ...
+--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 auto-cost {auto-cost}?
| +--rw enable? boolean
| +--rw reference-bandwidth? uint32
+--rw authentication
| +--rw (authentication-type)?
| | ...
| +--rw level-1
| | ...
| +--rw level-2
| ...
+--rw address-families {nlpid-control}?
| +--rw address-family-list* [address-family]
| ...
+--rw mpls
| +--rw te-rid {te-rid}?
| | ...
| +--rw ldp
| ...
+--rw spf-control
| +--rw paths? uint16 {max-ecmp}?
| +--rw ietf-spf-delay {ietf-spf-delay}?
| ...
+--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 +--rw metric-type
| +--ro hostname* [system-id] | +--rw value? enumeration
| ... | +--rw level-1
+--ro database | | ...
| +--ro levels* [level] | +--rw level-2
| ... | ...
+--ro local-rib +--rw default-metric
| +--ro route* [prefix] | +--rw value? wide-metric
| ... | +--rw level-1
+--ro system-counters | | ...
| +--ro level* [level] | +--rw level-2
| ... | ...
+--ro protected-routes +--rw auto-cost {auto-cost}?
| +--ro address-family-stats* [address-family prefix alternate] | +--rw enable? boolean
| ... | +--rw reference-bandwidth? uint32
+--ro unprotected-routes +--rw authentication
| +--ro address-family-stats* [address-family prefix] | +--rw (authentication-type)?
| ... | | ...
+--ro protection-statistics* [frr-protection-method] | +--rw level-1
| +--ro frr-protection-method identityref | | ...
| +--ro address-family-stats* [address-family] | +--rw level-2
| ... | ...
+--rw discontinuity-time? yang:date-and-time +--rw address-families {nlpid-control}?
+--rw topologies {multi-topology}? | +--rw address-family-list* [address-family]
| +--rw topology* [name] | ...
| ... +--rw mpls
+--rw interfaces | +--rw te-rid {te-rid}?
+--rw interface* [name] | | ...
... | +--rw ldp
| ...
+--rw spf-control
| +--rw paths? uint16 {max-ecmp}?
| +--rw ietf-spf-delay {ietf-spf-delay}?
| ...
+--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 levels* [level]
| ...
+--ro local-rib
| +--ro route* [prefix]
| ...
+--ro system-counters
| +--ro level* [level]
| ...
+--ro protected-routes
| +--ro address-family-stats* [address-family prefix alternate]
| ...
+--ro unprotected-routes
| +--ro prefixes* [address-family prefix]
| ...
+--ro protection-statistics* [frr-protection-method]
| +--ro frr-protection-method identityref
| +--ro address-family-stats* [address-family]
| ...
+--rw discontinuity-time? yang:date-and-time
+--rw topologies {multi-topology}?
| +--rw topology* [name]
| ...
+--rw interfaces
+--rw interface* [name]
...
rpcs: rpcs:
+---x clear-adjacency +---x clear-adjacency
| +---w input | +---w input
| +---w routing-protocol-instance-name | +---w routing-protocol-instance-name -> /rt:routing/
| ->/rt:routing/control-plane-protocols/control-plane-protocol/name | | control-plane-protocols/
| +---w level? level | | control-plane-protocol/name
| +---w interface? if:interface-ref | +---w level? level
+---x clear-database | +---w interface? if:interface-ref
+---w input +---x clear-database
+---w routing-protocol-instance-name +---w input
-> /rt:routing/control-plane-protocols/control-plane-protocol/name +---w routing-protocol-instance-name -> /rt:routing/
+---w level? level | control-plane-protocols/
| control-plane-protocol/name
+---w level? level
notifications: notifications:
+---n database-overload +---n database-overload
| +--ro routing-protocol-name? | +--ro routing-protocol-name? -> /rt:routing/
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | | control-plane-protocols/
| +--ro isis-level? level | | control-plane-protocol/name
| +--ro overload? enumeration | +--ro isis-level? level
+---n lsp-too-large | +--ro overload? enumeration
| +--ro routing-protocol-name? +---n lsp-too-large
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro routing-protocol-name? -> /rt:routing/
| +--ro isis-level? level | control-plane-protocols/
| +--ro interface-name? if:interface-ref | | control-plane-protocol/name
| +--ro interface-level? level | +--ro isis-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-name? if:interface-ref
| +--ro pdu-size? uint32 | +--ro interface-level? level
| +--ro lsp-id? lsp-id | +--ro extended-circuit-id? extended-circuit-id
+---n if-state-change | +--ro pdu-size? uint32
| +--ro routing-protocol-name? | +--ro lsp-id? lsp-id
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name +---n if-state-change
| +--ro isis-level? level | +--ro routing-protocol-name? -> /rt:routing/
| +--ro interface-name? if:interface-ref | | control-plane-protocols/
| +--ro interface-level? level | | control-plane-protocol/name
| +--ro extended-circuit-id? extended-circuit-id | +--ro isis-level? level
| +--ro state? if-state-type | +--ro interface-name? if:interface-ref
+---n corrupted-lsp-detected | +--ro interface-level? level
| +--ro routing-protocol-name? | +--ro extended-circuit-id? extended-circuit-id
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro state? if-state-type
| +--ro isis-level? level +---n corrupted-lsp-detected
| +--ro lsp-id? lsp-id | +--ro routing-protocol-name? -> /rt:routing/
+---n attempt-to-exceed-max-sequence | | control-plane-protocols/
| +--ro routing-protocol-name? | | control-plane-protocol/name
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level
| +--ro isis-level? level | +--ro lsp-id? lsp-id
| +--ro lsp-id? lsp-id +---n attempt-to-exceed-max-sequence
+---n id-len-mismatch | +--ro routing-protocol-name? -> /rt:routing/
| +--ro routing-protocol-name? | | control-plane-protocols/
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro lsp-id? lsp-id
| +--ro interface-level? level +---n id-len-mismatch
| +--ro extended-circuit-id? extended-circuit-id | +--ro routing-protocol-name? -> /rt:routing/
| +--ro pdu-field-len? uint8 | | control-plane-protocols/
| +--ro raw-pdu? binary | | control-plane-protocol/name
+---n max-area-addresses-mismatch | +--ro isis-level? level
| +--ro routing-protocol-name? | +--ro interface-name? if:interface-ref
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro interface-level? level
| +--ro isis-level? level | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-name? if:interface-ref | +--ro pdu-field-len? uint8
| +--ro interface-level? level | +--ro raw-pdu? binary
| +--ro extended-circuit-id? extended-circuit-id +---n max-area-addresses-mismatch
| +--ro max-area-addresses? uint8 | +--ro routing-protocol-name? -> /rt:routing/
| +--ro raw-pdu? binary | | control-plane-protocols/
+---n own-lsp-purge | | control-plane-protocol/name
| +--ro routing-protocol-name? | +--ro isis-level? level
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro interface-name? if:interface-ref
| +--ro isis-level? level | +--ro interface-level? level
| +--ro interface-name? if:interface-ref | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-level? level | +--ro max-area-addresses? uint8
| +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary
| +--ro lsp-id? lsp-id +---n own-lsp-purge
+---n sequence-number-skipped | +--ro routing-protocol-name? -> /rt:routing/
| +--ro routing-protocol-name? | | control-plane-protocols/
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n authentication-type-failure +---n sequence-number-skipped
| +--ro routing-protocol-name? | +--ro routing-protocol-name? -> /rt:routing/
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | | control-plane-protocols/
| +--ro isis-level? level | | control-plane-protocol/name
| +--ro interface-name? if:interface-ref | +--ro isis-level? level
| +--ro interface-level? level | +--ro interface-name? if:interface-ref
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-level? level
| +--ro raw-pdu? binary | +--ro extended-circuit-id? extended-circuit-id
+---n authentication-failure | +--ro lsp-id? lsp-id
| +--ro routing-protocol-name? +---n authentication-type-failure
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro routing-protocol-name? -> /rt:routing/
| +--ro isis-level? level | | control-plane-protocols/
| +--ro interface-name? if:interface-ref | | control-plane-protocol/name
| +--ro interface-level? level | +--ro isis-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-name? if:interface-ref
| +--ro raw-pdu? binary | +--ro interface-level? level
+---n version-skew | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-protocol-name? | +--ro raw-pdu? binary
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name +---n authentication-failure
| +--ro isis-level? level | +--ro routing-protocol-name? -> /rt:routing/
| +--ro interface-name? if:interface-ref | | control-plane-protocols/
| +--ro interface-level? level | | control-plane-protocol/name
| +--ro extended-circuit-id? extended-circuit-id | +--ro isis-level? level
| +--ro protocol-version? uint8 | +--ro interface-name? if:interface-ref
| +--ro raw-pdu? binary | +--ro interface-level? level
+---n area-mismatch | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-protocol-name? | +--ro raw-pdu? binary
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name +---n version-skew
| +--ro isis-level? level | +--ro routing-protocol-name? -> /rt:routing/
| +--ro interface-name? if:interface-ref | | control-plane-protocols/
| +--ro interface-level? level | | control-plane-protocol/name
| +--ro extended-circuit-id? extended-circuit-id | +--ro isis-level? level
| +--ro raw-pdu? binary | +--ro interface-name? if:interface-ref
+---n rejected-adjacency | +--ro interface-level? level
| +--ro routing-protocol-name? | +--ro extended-circuit-id? extended-circuit-id
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro protocol-version? uint8
| +--ro isis-level? level | +--ro raw-pdu? binary
| +--ro interface-name? if:interface-ref +---n area-mismatch
| +--ro interface-level? level | +--ro routing-protocol-name? -> /rt:routing/
| +--ro extended-circuit-id? extended-circuit-id | | control-plane-protocols/
| +--ro raw-pdu? binary | | control-plane-protocol/name
| +--ro reason? string | +--ro isis-level? level
+---n protocols-supported-mismatch | +--ro interface-name? if:interface-ref
| +--ro routing-protocol-name? | +--ro interface-level? level
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro extended-circuit-id? extended-circuit-id
| +--ro isis-level? level | +--ro raw-pdu? binary
| +--ro interface-name? if:interface-ref +---n rejected-adjacency
| +--ro interface-level? level | +--ro routing-protocol-name? -> /rt:routing/
| +--ro extended-circuit-id? extended-circuit-id | | control-plane-protocols/
| +--ro raw-pdu? binary | | control-plane-protocol/name
| +--ro protocols* uint8 | +--ro isis-level? level
+---n lsp-error-detected | +--ro interface-name? if:interface-ref
| +--ro routing-protocol-name? | +--ro interface-level? level
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro extended-circuit-id? extended-circuit-id
| +--ro isis-level? level | +--ro raw-pdu? binary
| +--ro interface-name? if:interface-ref | +--ro reason? string
| +--ro interface-level? level +---n protocols-supported-mismatch
| +--ro extended-circuit-id? extended-circuit-id | +--ro routing-protocol-name? -> /rt:routing/
| +--ro lsp-id? lsp-id | | control-plane-protocols/
| +--ro raw-pdu? binary | | control-plane-protocol/name
| +--ro error-offset? uint32 | +--ro isis-level? level
| +--ro tlv-type? uint8 | +--ro interface-name? if:interface-ref
+---n adjacency-state-change | +--ro interface-level? level
| +--ro routing-protocol-name? | +--ro extended-circuit-id? extended-circuit-id
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro raw-pdu? binary
| +--ro isis-level? level | +--ro protocols* uint8
| +--ro interface-name? if:interface-ref +---n lsp-error-detected
| +--ro interface-level? level | +--ro routing-protocol-name? -> /rt:routing/
| +--ro extended-circuit-id? extended-circuit-id | | control-plane-protocols/
| +--ro neighbor? string | | control-plane-protocol/name
| +--ro neighbor-system-id? system-id | +--ro isis-level? level
| +--ro state? adj-state-type | +--ro interface-name? if:interface-ref
| +--ro reason? string | +--ro interface-level? level
+---n lsp-received | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-protocol-name? | +--ro lsp-id? lsp-id
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro raw-pdu? binary
| +--ro isis-level? level | +--ro error-offset? uint32
| +--ro interface-name? if:interface-ref | +--ro tlv-type? uint8
| +--ro interface-level? level +---n adjacency-state-change
| +--ro extended-circuit-id? extended-circuit-id | +--ro routing-protocol-name? -> /rt:routing/
| +--ro lsp-id? lsp-id | | control-plane-protocols/
| +--ro sequence? uint32 | | control-plane-protocol/name
| +--ro received-timestamp? yang:timestamp | +--ro isis-level? level
| +--ro neighbor-system-id? system-id | +--ro interface-name? if:interface-ref
+---n lsp-generation | +--ro interface-level? level
+--ro routing-protocol-name? | +--ro extended-circuit-id? extended-circuit-id
-> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro neighbor? string
+--ro isis-level? level | +--ro neighbor-system-id? system-id
+--ro lsp-id? lsp-id | +--ro state? adj-state-type
+--ro sequence? uint32 | +--ro reason? string
+--ro send-timestamp? yang:timestamp +---n lsp-received
| +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/
| | control-plane-protocol/name
| +--ro isis-level? level
| +--ro interface-name? if:interface-ref
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id
| +--ro sequence? uint32
| +--ro received-timestamp? yang:timestamp
| +--ro neighbor-system-id? system-id
+---n lsp-generation
+--ro routing-protocol-name? -> /rt:routing/
| control-plane-protocols/
| control-plane-protocol/name
+--ro isis-level? level
+--ro lsp-id? lsp-id
+--ro sequence? uint32
+--ro send-timestamp? yang:timestamp
2.1. IS-IS Configuration 2.1. IS-IS Configuration
The IS-IS configuration is divided into: The IS-IS configuration is divided into:
o Global parameters. o Global parameters.
o Per-interface configuration (see Section 2.4). o Per-interface configuration (see Section 2.4).
Additional modules may be created to support additional parameters. Additional modules may be created to support additional parameters.
These additional modules MUST augment the ietf-isis module. These additional modules MUST augment the ietf-isis module.
The model includes optional features, for which the corresponding The model includes optional features, for which the corresponding
configuration data nodes are also optional. As an example, the configuration data nodes are also optional. As an example, the
ability to control the administrative state of a particular IS-IS ability to control the administrative state of a particular IS-IS
instance is optional. By advertising the feature "admin-control", a instance is optional. By advertising the feature "admin-control", a
device communicates to the client that it supports the ability to device communicates to the client that it supports the ability to
shut down a particular IS-IS instance. shutdown a particular IS-IS instance.
The global configuration contains usual IS-IS parameters, such as, The global configuration contains usual IS-IS parameters, such as,
lsp-mtu, lsp-lifetime, lsp-refresh, default-metric, etc. lsp-mtu, lsp-lifetime, lsp-refresh, default-metric, etc.
2.2. Multi-topology Parameters 2.2. Multi-topology Parameters
The model supports multi-topology (MT) IS-IS as defined in [RFC5120]. The model supports multi-topology (MT) IS-IS as defined in [RFC5120].
The "topologies" container is used to enable support of the MT The "topologies" container is used to enable support of the MT
extensions. extensions.
The "name" used in the topology list should refer to an existing The "name" used in the topology list should refer to an existing
Routing Information Base (RIB) defined for the device [RFC8349]. Routing Information Based (RIB) defined for the device [RFC8349].
Some specific parameters can be defined on a per-topology basis, both Some specific parameters can be defined on a per-topology basis, both
at the global level and at the interface level: for example, an at the global level and at the interface level: for example, an
interface metric can be defined per-topology. interface metric can be defined per topology.
Multiple address families (such as, IPv4 or IPv6) can also be enabled Multiple address families (such as, IPv4 or IPv6) can also be enabled
within the default topology. This can be achieved using the address- within the default topology. This can be achieved using the address-
families container (requiring the "nlpid-control" feature to be families container (requiring the "nlpid-control" feature to be
supported). supported).
2.3. Per-Level Parameters 2.3. Per-Level Parameters
Some parameters allow a per-level configuration. For such Some parameters allow a per-level configuration. For such
parameters, the parameter is modeled as a container with three parameters, the parameter is modeled as a container with three
skipping to change at page 10, line 34 skipping to change at page 11, line 10
| +--rw level-2 | +--rw level-2
| +--rw value? uint8 | +--rw value? uint8
Example: Example:
<priority> <priority>
<value>250</value> <value>250</value>
<level-1> <level-1>
<value>100</value> <value>100</value>
</level-1> </level-1>
<level-2>
<value>200</value>
</level-2>
</priority> </priority>
An implementation MUST prefer a level-specific parameter over a top- An implementation MUST prefer a level-specific parameter over a top-
level parameter. For example, if the priority is 100 for the level- level parameter. For example, if the priority is 100 for the level-1
1, 200 for the level-2 and 250 for the top-level configuration, the and 250 for the top-level configuration, the implementation must use
implementation must use 100 for the level-1 priority and 200 for the 100 for the level-1 priority and 250 for the level-2 priority.
level-2 priority.
Some parameters, such as, "overload bit" and "route preference", are Some parameters, such as, "overload bit" and "route preference", are
not modeled to support a per-level configuration. If an not modeled to support a per-level configuration. If an
implementation supports per-level configuration for such parameter, implementation supports per-level configuration for such parameter,
this implementation MUST augment the current model by adding both this implementation MUST augment the current model by adding both
level-1 and level-2 containers and MUST reuse existing configuration level-1 and level-2 containers and MUST reuse existing configuration
groupings. groupings.
Example of augmentation: Example of augmentation:
skipping to change at page 12, line 8 skipping to change at page 12, line 25
defined in the "ietf-interfaces" YANG model ([RFC8343]. defined in the "ietf-interfaces" YANG model ([RFC8343].
Each interface has some interface-specific parameters that may have a Each interface has some interface-specific parameters that may have a
different per-level value as described in the previous section. An different per-level value as described in the previous section. An
interface-specific parameter MUST be preferred over an IS-IS global interface-specific parameter MUST be preferred over an IS-IS global
parameter. parameter.
Some parameters, such as, hello-padding are defined as containers to Some parameters, such as, hello-padding are defined as containers to
allow easy extension by vendor-specific modules. allow easy extension by vendor-specific modules.
+--rw interfaces +--rw interfaces
+--rw interface* [name] +--rw interface* [name]
+--rw name if:interface-ref +--rw name if:interface-ref
+--rw enable? boolean {admin-control}? +--rw enable? boolean {admin-control}?
+--rw level-type? level +--rw level-type? level
+--rw lsp-pacing-interval? +--rw lsp-pacing-interval? rt-types:
| rt-types:timer-value-milliseconds | timer-value-milliseconds
+--rw lsp-retransmit-interval? +--rw lsp-retransmit-interval? rt-types:
| rt-types:timer-value-seconds16 | timer-value-seconds16
+--rw passive? boolean +--rw passive? boolean
+--rw csnp-interval? +--rw csnp-interval? rt-types:
| rt-types:timer-value-seconds16 | timer-value-seconds16
+--rw hello-padding +--rw hello-padding
| +--rw enable? boolean | +--rw enable? boolean
+--rw mesh-group-enable? mesh-group-state +--rw mesh-group-enable? mesh-group-state
+--rw mesh-group? uint8 +--rw mesh-group? uint8
+--rw interface-type? interface-type +--rw interface-type? interface-type
+--rw tag* uint32 {prefix-tag}? +--rw tag* uint32 {prefix-tag}?
+--rw tag64* uint64 {prefix-tag64}? +--rw tag64* uint64 {prefix-tag64}?
+--rw node-flag? boolean {node-flag}? +--rw node-flag? boolean {node-flag}?
+--rw hello-authentication +--rw hello-authentication
| +--rw (authentication-type)? | +--rw (authentication-type)?
| | +--:(key-chain) {key-chain}? | | +--:(key-chain) {key-chain}?
| | | +--rw key-chain? key-chain:key-chain-ref | | | +--rw key-chain? key-chain:key-chain-ref
| | +--:(password) | | +--:(password)
| | +--rw key? string | | +--rw key? string
| | +--rw crypto-algorithm? identityref | | +--rw crypto-algorithm? identityref
| +--rw level-1 | +--rw level-1
| | +--rw (authentication-type)? | | +--rw (authentication-type)?
| | +--:(key-chain) {key-chain}? | | +--:(key-chain) {key-chain}?
| | | +--rw key-chain? key-chain:key-chain-ref | | | +--rw key-chain? key-chain:key-chain-ref
| | +--:(password) | | +--:(password)
| | +--rw key? string | | +--rw key? string
| | +--rw crypto-algorithm? identityref | | +--rw crypto-algorithm? identityref
| +--rw level-2 | +--rw level-2
| +--rw (authentication-type)? | +--rw (authentication-type)?
| +--:(key-chain) {key-chain}? | +--:(key-chain) {key-chain}?
| | +--rw key-chain? key-chain:key-chain-ref | | +--rw key-chain? key-chain:key-chain-ref
| +--:(password) | +--:(password)
| +--rw key? string | +--rw key? string
| +--rw crypto-algorithm? identityref | +--rw crypto-algorithm? identityref
+--rw hello-interval +--rw hello-interval
| +--rw value? rt-types:timer-value-seconds16 | +--rw value? rt-types:timer-value-seconds16
| +--rw level-1 | +--rw level-1
| | +--rw value? rt-types:timer-value-seconds16 | | +--rw value? rt-types:timer-value-seconds16
| +--rw level-2 | +--rw level-2
| +--rw value? rt-types:timer-value-seconds16 | +--rw value? rt-types:timer-value-seconds16
+--rw hello-multiplier +--rw hello-multiplier
| +--rw value? uint16 | +--rw value? uint16
| +--rw level-1 | +--rw level-1
| | +--rw value? uint16 | | +--rw value? uint16
| +--rw level-2 | +--rw level-2
| +--rw value? uint16 | +--rw value? uint16
+--rw priority +--rw priority
| +--rw value? uint8 | +--rw value? uint8
| +--rw level-1 | +--rw level-1
| | +--rw value? uint8 | | +--rw value? uint8
| +--rw level-2 | +--rw level-2
| +--rw value? uint8 | +--rw value? uint8
+--rw metric +--rw metric
| +--rw value? wide-metric | +--rw value? wide-metric
| +--rw level-1 | +--rw level-1
| | +--rw value? wide-metric | | +--rw value? wide-metric
| +--rw level-2 | +--rw level-2
| +--rw value? wide-metric | +--rw value? wide-metric
+--rw bfd {bfd}? +--rw bfd {bfd}?
| +--rw enable? boolean | +--rw enable? boolean
| +--rw local-multiplier? multiplier | +--rw local-multiplier? multiplier
| +--rw (interval-config-type)? | +--rw (interval-config-type)?
| +--:(tx-rx-intervals) | +--:(tx-rx-intervals)
| | +--rw desired-min-tx-interval? uint32 | | +--rw desired-min-tx-interval? uint32
| | +--rw required-min-rx-interval? uint32 | | +--rw required-min-rx-interval? uint32
| +--:(single-interval) {single-minimum-interval}? | +--:(single-interval) {single-minimum-interval}?
| +--rw min-interval? uint32 | +--rw min-interval? uint32
+--rw address-families {nlpid-control}? +--rw address-families {nlpid-control}?
| +--rw address-family-list* [address-family] | +--rw address-family-list* [address-family]
| +--rw address-family iana-rt-types:address-family | +--rw address-family iana-rt-types:address-family
+--rw mpls +--rw mpls
| +--rw ldp | +--rw ldp
| +--rw igp-sync? boolean {ldp-igp-sync}? | +--rw igp-sync? boolean {ldp-igp-sync}?
+--rw fast-reroute {fast-reroute}? +--rw fast-reroute {fast-reroute}?
| +--rw lfa {lfa}? | +--rw lfa {lfa}?
| +--rw candidate-enable? boolean | +--rw candidate-enable? boolean
| +--rw enable? boolean | +--rw enable? boolean
| +--rw remote-lfa {remote-lfa}? | +--rw remote-lfa {remote-lfa}?
| | +--rw enable? boolean | | +--rw enable? boolean
| +--rw level-1 | +--rw level-1
| | +--rw candidate-enable? boolean | | +--rw candidate-enable? boolean
| | +--rw enable? boolean | | +--rw enable? boolean
| | +--rw remote-lfa {remote-lfa}? | | +--rw remote-lfa {remote-lfa}?
| | +--rw enable? boolean | | +--rw enable? boolean
| +--rw level-2 | +--rw level-2
| +--rw candidate-enable? boolean | +--rw candidate-enable? boolean
| +--rw enable? boolean | +--rw enable? boolean
| +--rw remote-lfa {remote-lfa}? | +--rw remote-lfa {remote-lfa}?
| +--rw enable? boolean | +--rw enable? boolean
+--ro adjacencies +--ro adjacencies
| +--ro adjacency* [] | +--ro adjacency* []
| +--ro neighbor-sys-type? level | +--ro neighbor-sys-type? level
| +--ro neighbor-sysid? system-id | +--ro neighbor-sysid? system-id
| +--ro neighbor-extended-circuit-id? | +--ro neighbor-extended-circuit-id? extended-circuit-id
| | extended-circuit-id | +--ro neighbor-snpa? snpa
| +--ro neighbor-snpa? snpa | +--ro usage? level
| +--ro usage? level | +--ro hold-timer? rt-types:
| +--ro hold-timer? | | timer-value-seconds16
| rt-types:timer-value-seconds16 | +--ro neighbor-priority? uint8
| +--ro neighbor-priority? uint8 | +--ro lastuptime? yang:timestamp
| +--ro lastuptime? yang:timestamp | +--ro state? adj-state-type
| +--ro state? adj-state-type +--ro event-counters
+--ro event-counters | +--ro adjacency-changes? uint32
| +--ro adjacency-changes? uint32 | +--ro adjacency-number? uint32
| +--ro adjacency-number? uint32 | +--ro init-fails? uint32
| +--ro init-fails? uint32 | +--ro adjacency-rejects? uint32
| +--ro adjacency-rejects? uint32 | +--ro id-len-mismatch? uint32
| +--ro id-len-mismatch? uint32 | +--ro max-area-addresses-mismatch? uint32
| +--ro max-area-addresses-mismatch? uint32 | +--ro authentication-type-fails? uint32
| +--ro authentication-type-fails? uint32 | +--ro authentication-fails? uint32
| +--ro authentication-fails? uint32 | +--ro lan-dis-changes? uint32
| +--ro lan-dis-changes? uint32 +--ro packet-counters
+--ro packet-counters | +--ro level* [level]
| +--ro level* [level] | +--ro level level-number
| +--ro level level-number | +--ro iih
| +--ro iih | | +--ro in? uint32
| | +--ro in? uint32 | | +--ro out? uint32
| | +--ro out? uint32 | +--ro ish
| +--ro ish | | +--ro in? uint32
| | +--ro in? uint32 | | +--ro out? uint32
| | +--ro out? uint32 | +--ro esh
| +--ro esh | | +--ro in? uint32
| | +--ro in? uint32 | | +--ro out? uint32
| | +--ro out? uint32 | +--ro lsp
| +--ro lsp | | +--ro in? uint32
| | +--ro in? uint32 | | +--ro out? uint32
| | +--ro out? uint32 | +--ro psnp
| +--ro psnp | | +--ro in? uint32
| | +--ro in? uint32 | | +--ro out? uint32
| | +--ro out? uint32 | +--ro csnp
| +--ro csnp | | +--ro in? uint32
| | +--ro in? uint32 | | +--ro out? uint32
| | +--ro out? uint32 | +--ro unknown
| +--ro unknown | +--ro in? uint32
| +--ro in? uint32 +--rw discontinuity-time? yang:date-and-time
+--rw discontinuity-time? yang:date-and-time +--rw topologies {multi-topology}?
+--rw topologies {multi-topology}? +--rw topology* [name]
+--rw topology* [name] +--rw name ->
+--rw name | ../../../../../../../../rt:ribs/rib/name
| -> ../../../../../../../../rt:ribs/rib/name +--rw metric
+--rw metric +--rw value? wide-metric
+--rw value? wide-metric +--rw level-1
+--rw level-1 | +--rw value? wide-metric
| +--rw value? wide-metric +--rw level-2
+--rw level-2 +--rw value? wide-metric
+--rw value? wide-metric
rpcs: rpcs:
+---x clear-adjacency +---x clear-adjacency
| +---w input | +---w input
| +---w routing-protocol-instance-name | +---w routing-protocol-instance-name -> /rt:routing/
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | | control-plane-protocols/
| +---w level? level | | control-plane-protocol/name
| +---w interface? if:interface-ref | +---w level? level
+---x clear-database | +---w interface? if:interface-ref
+---w input +---x clear-database
+---w routing-protocol-instance-name +---w input
-> /rt:routing/control-plane-protocols/control-plane-protocol/name +---w routing-protocol-instance-name -> /rt:routing/
+---w level? level | control-plane-protocols/
| control-plane-protocol/name
+---w level? level
notifications: notifications:
+---n database-overload +---n database-overload
| +--ro routing-protocol-name? | +--ro routing-protocol-name? -> /rt:routing/
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | | control-plane-protocols/
| +--ro isis-level? level | | control-plane-protocol/name
| +--ro overload? enumeration | +--ro isis-level? level
+---n lsp-too-large | +--ro overload? enumeration
| +--ro routing-protocol-name? +---n lsp-too-large
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro routing-protocol-name? -> /rt:routing/
| +--ro isis-level? level | | control-plane-protocols/
| +--ro interface-name? if:interface-ref | | control-plane-protocol/name
| +--ro interface-level? level | +--ro isis-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-name? if:interface-ref
| +--ro pdu-size? uint32 | +--ro interface-level? level
| +--ro lsp-id? lsp-id | +--ro extended-circuit-id? extended-circuit-id
+---n if-state-change | +--ro pdu-size? uint32
| +--ro routing-protocol-name? | +--ro lsp-id? lsp-id
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name +---n if-state-change
| +--ro isis-level? level | +--ro routing-protocol-name? -> /rt:routing/
| +--ro interface-name? if:interface-ref | | control-plane-protocols/
| +--ro interface-level? level | | control-plane-protocol/name
| +--ro extended-circuit-id? extended-circuit-id | +--ro isis-level? level
| +--ro state? if-state-type | +--ro interface-name? if:interface-ref
+---n corrupted-lsp-detected | +--ro interface-level? level
| +--ro routing-protocol-name? | +--ro extended-circuit-id? extended-circuit-id
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro state? if-state-type
| +--ro isis-level? level +---n corrupted-lsp-detected
| +--ro lsp-id? lsp-id | +--ro routing-protocol-name? -> /rt:routing/
+---n attempt-to-exceed-max-sequence | | control-plane-protocols/
| +--ro routing-protocol-name? | | control-plane-protocol/name
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro isis-level? level
| +--ro isis-level? level | +--ro lsp-id? lsp-id
| +--ro lsp-id? lsp-id +---n attempt-to-exceed-max-sequence
+---n id-len-mismatch | +--ro routing-protocol-name? -> /rt:routing/
| +--ro routing-protocol-name? | | control-plane-protocols/
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro lsp-id? lsp-id
| +--ro interface-level? level +---n id-len-mismatch
| +--ro extended-circuit-id? extended-circuit-id | +--ro routing-protocol-name? -> /rt:routing/
| +--ro pdu-field-len? uint8 | | control-plane-protocols/
| +--ro raw-pdu? binary | | control-plane-protocol/name
+---n max-area-addresses-mismatch | +--ro isis-level? level
| +--ro routing-protocol-name? | +--ro interface-name? if:interface-ref
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro interface-level? level
| +--ro isis-level? level | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-name? if:interface-ref | +--ro pdu-field-len? uint8
| +--ro interface-level? level | +--ro raw-pdu? binary
| +--ro extended-circuit-id? extended-circuit-id +---n max-area-addresses-mismatch
| +--ro max-area-addresses? uint8 | +--ro routing-protocol-name? -> /rt:routing/
| +--ro raw-pdu? binary | | control-plane-protocols/
+---n own-lsp-purge | | control-plane-protocol/name
| +--ro routing-protocol-name? | +--ro isis-level? level
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro interface-name? if:interface-ref
| +--ro isis-level? level | +--ro interface-level? level
| +--ro interface-name? if:interface-ref | +--ro extended-circuit-id? extended-circuit-id
| +--ro interface-level? level | +--ro max-area-addresses? uint8
| +--ro extended-circuit-id? extended-circuit-id | +--ro raw-pdu? binary
| +--ro lsp-id? lsp-id +---n own-lsp-purge
+---n sequence-number-skipped | +--ro routing-protocol-name? -> /rt:routing/
| +--ro routing-protocol-name? | | control-plane-protocols/
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n authentication-type-failure +---n sequence-number-skipped
| +--ro routing-protocol-name? | +--ro routing-protocol-name? -> /rt:routing/
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | | control-plane-protocols/
| +--ro isis-level? level | | control-plane-protocol/name
| +--ro interface-name? if:interface-ref | +--ro isis-level? level
| +--ro interface-level? level | +--ro interface-name? if:interface-ref
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-level? level
| +--ro raw-pdu? binary | +--ro extended-circuit-id? extended-circuit-id
+---n authentication-failure | +--ro lsp-id? lsp-id
| +--ro routing-protocol-name? +---n authentication-type-failure
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro routing-protocol-name? -> /rt:routing/
| +--ro isis-level? level | | control-plane-protocols/
| +--ro interface-name? if:interface-ref | | control-plane-protocol/name
| +--ro interface-level? level | +--ro isis-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro interface-name? if:interface-ref
| +--ro raw-pdu? binary | +--ro interface-level? level
+---n version-skew | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-protocol-name? | +--ro raw-pdu? binary
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name +---n authentication-failure
| +--ro isis-level? level | +--ro routing-protocol-name? -> /rt:routing/
| +--ro interface-name? if:interface-ref | | control-plane-protocols/
| +--ro interface-level? level | | control-plane-protocol/name
| +--ro extended-circuit-id? extended-circuit-id | +--ro isis-level? level
| +--ro protocol-version? uint8 | +--ro interface-name? if:interface-ref
| +--ro raw-pdu? binary | +--ro interface-level? level
+---n area-mismatch | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-protocol-name? | +--ro raw-pdu? binary
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name +---n version-skew
| +--ro isis-level? level | +--ro routing-protocol-name? -> /rt:routing/
| +--ro interface-name? if:interface-ref | | control-plane-protocols/
| +--ro interface-level? level | | control-plane-protocol/name
| +--ro extended-circuit-id? extended-circuit-id | +--ro isis-level? level
| +--ro raw-pdu? binary | +--ro interface-name? if:interface-ref
+---n rejected-adjacency | +--ro interface-level? level
| +--ro routing-protocol-name? | +--ro extended-circuit-id? extended-circuit-id
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro protocol-version? uint8
| +--ro isis-level? level | +--ro raw-pdu? binary
| +--ro interface-name? if:interface-ref +---n area-mismatch
| +--ro interface-level? level | +--ro routing-protocol-name? -> /rt:routing/
| +--ro extended-circuit-id? extended-circuit-id | | control-plane-protocols/
| +--ro raw-pdu? binary | | control-plane-protocol/name
| +--ro reason? string | +--ro isis-level? level
+---n protocols-supported-mismatch | +--ro interface-name? if:interface-ref
| +--ro routing-protocol-name? | +--ro interface-level? level
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro extended-circuit-id? extended-circuit-id
| +--ro isis-level? level | +--ro raw-pdu? binary
| +--ro interface-name? if:interface-ref +---n rejected-adjacency
| +--ro interface-level? level | +--ro routing-protocol-name? -> /rt:routing/
| +--ro extended-circuit-id? extended-circuit-id | | control-plane-protocols/
| +--ro raw-pdu? binary | | control-plane-protocol/name
| +--ro protocols* uint8 | +--ro isis-level? level
+---n lsp-error-detected | +--ro interface-name? if:interface-ref
| +--ro routing-protocol-name? | +--ro interface-level? level
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro extended-circuit-id? extended-circuit-id
| +--ro isis-level? level | +--ro raw-pdu? binary
| +--ro interface-name? if:interface-ref | +--ro reason? string
| +--ro interface-level? level +---n protocols-supported-mismatch
| +--ro extended-circuit-id? extended-circuit-id | +--ro routing-protocol-name? -> /rt:routing/
| +--ro lsp-id? lsp-id | | control-plane-protocols/
| +--ro raw-pdu? binary | | control-plane-protocol/name
| +--ro error-offset? uint32 | +--ro isis-level? level
| +--ro tlv-type? uint8 | +--ro interface-name? if:interface-ref
+---n adjacency-state-change | +--ro interface-level? level
| +--ro routing-protocol-name? | +--ro extended-circuit-id? extended-circuit-id
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro raw-pdu? binary
| +--ro isis-level? level | +--ro protocols* uint8
| +--ro interface-name? if:interface-ref +---n lsp-error-detected
| +--ro interface-level? level | +--ro routing-protocol-name? -> /rt:routing/
| +--ro extended-circuit-id? extended-circuit-id | | control-plane-protocols/
| +--ro neighbor? string | | control-plane-protocol/name
| +--ro neighbor-system-id? system-id | +--ro isis-level? level
| +--ro state? adj-state-type | +--ro interface-name? if:interface-ref
| +--ro reason? string | +--ro interface-level? level
+---n lsp-received | +--ro extended-circuit-id? extended-circuit-id
| +--ro routing-protocol-name? | +--ro lsp-id? lsp-id
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro raw-pdu? binary
| +--ro isis-level? level | +--ro error-offset? uint32
| +--ro interface-name? if:interface-ref | +--ro tlv-type? uint8
| +--ro interface-level? level +---n adjacency-state-change
| +--ro extended-circuit-id? extended-circuit-id | +--ro routing-protocol-name? -> /rt:routing/
| +--ro lsp-id? lsp-id | | control-plane-protocols/
| +--ro sequence? uint32 | | control-plane-protocol/name
| +--ro received-timestamp? yang:timestamp | +--ro isis-level? level
| +--ro neighbor-system-id? system-id | +--ro interface-name? if:interface-ref
+---n lsp-generation | +--ro interface-level? level
+--ro routing-protocol-name? | +--ro extended-circuit-id? extended-circuit-id
-> /rt:routing/control-plane-protocols/control-plane-protocol/name | +--ro neighbor? string
+--ro isis-level? level | +--ro neighbor-system-id? system-id
+--ro lsp-id? lsp-id | +--ro state? adj-state-type
+--ro sequence? uint32 | +--ro reason? string
+--ro send-timestamp? yang:timestamp +---n lsp-received
| +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/
| | control-plane-protocol/name
| +--ro isis-level? level
| +--ro interface-name? if:interface-ref
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id
| +--ro sequence? uint32
| +--ro received-timestamp? yang:timestamp
| +--ro neighbor-system-id? system-id
+---n lsp-generation
+--ro routing-protocol-name? -> /rt:routing/
| control-plane-protocols/
| control-plane-protocol/name
+--ro isis-level? level
+--ro lsp-id? lsp-id
+--ro sequence? uint32
+--ro send-timestamp? yang:timestamp
2.5. Authentication Parameters 2.5. Authentication Parameters
The module enables authentication configuration through the IETF key- The module enables authentication configuration through the IETF key-
chain module [RFC8177]. The IS-IS module imports the "ietf-key- chain module [RFC8177]. The IS-IS module imports the "ietf-key-
chain" module and reuses some groupings to allow global and per- chain" module and reuses some groupings to allow global and per-
interface configuration of authentication. If global authentication interface configuration of authentication. If global authentication
is configured, an implementation SHOULD authenticate PSNPs (Partial is configured, an implementation SHOULD authenticate PSNPs (Partial
Sequence Number Packets), CSNPs (Complete Sequence Number Packets) Sequence Number Packets), CSNPs (Complete Sequence Number Packets)
and LSPs (Link State Packets) with the authentication parameters and LSPs (Link State Packets) with the authentication parameters
supplied. The authentication of HELLO PDUs (Protocol Data Units) can supplied. The authentication of HELLO PDUs (Protocol Data Units) can
be activated on a per-interface basis. be activated on a per-interface basis.
2.6. IGP/LDP synchronization 2.6. IGP/LDP synchronization
[RFC5443] defines a mechanism where IGP (Interior Gateway Protocol) [RFC5443] defines a mechanism where IGP (Interior Gateway Protocol)
needs to be synchronized with LDP (Label Distribution Protocol). An needs to be synchronized with LDP (Label Distribution Protocol). An
"ldp-igp-sync" feature has been defined in the model to support this "ldp-igp-sync" feature has been defined in the model to support this
functionality. The "mpls/ldp/igp-sync" leaf under "interface" allows functionality. The "mpls/ldp/igp-sync" leaf under "interface" allows
activation of the mechanism on a per-interface basis. The "mpls/ldp/ activation of the functionality on a per-interface basis. The
igp-sync" container in the global configuration is intentionally "mpls/ldp/igp-sync" container in the global configuration is
empty and is not required for feature activation. The goal of this intentionally empty and is not required for feature activation. The
empty container is to facilitate augmentation with additional goal of this empty container is to facilitate augmentation with
parameters, e.g., timers. additional parameters, e.g., timers.
2.7. ISO parameters 2.7. ISO parameters
As the IS-IS protocol is based on the ISO protocol suite, some ISO As the IS-IS protocol is based on the ISO protocol suite, some ISO
parameters may be required. parameters may be required.
This module augments interface configuration model to support This module augments interface configuration model to support
selected ISO configuration parameters. selected ISO configuration parameters.
The clns-mtu can be configured for an interface. The clns-mtu can be configured for an interface.
2.8. IP FRR 2.8. IP FRR
This YANG module supports LFA (Loop Free Alternates) [RFC5286] and This YANG module supports LFA (Loop Free Alternates) [RFC5286] and
remote LFA [RFC7490] as IP Fast Re-Route (FRR) techniques. The remote LFA [RFC7490] as IP Fast Re-Route (FRR) techniques. The
"fast-reroute" container may be augmented by other models to support "fast-reroute" container may be augmented by other models to support
other IP FRR flavors (MRT, TI-LFA, etc.). other IP FRR flavors (MRT as defined in [RFC7812], TI-LFA as defined
in [I-D.ietf-rtgwg-segment-routing-ti-lfa], etc.).
The current version of the model supports activation of LFA and The current version of the model supports activation of LFA and
remote LFA at the interface-level only. The global "lfa" container remote LFA at the interface-level only. The global "lfa" container
is present but kept empty to allow augmentation with vendor-specific is present but kept empty to allow augmentation with vendor-specific
properties, e.g., policies. properties, e.g., policies.
Remote LFA is considered as an extension of LFA. Remote LFA cannot Remote LFA is considered as an extension of LFA. Remote LFA cannot
be enabled if LFA is not enabled. be enabled if LFA is not enabled.
The "candidate-enable" data leaf designates that an interface can be The "candidate-enable" data leaf designates that an interface can be
skipping to change at page 20, line 46 skipping to change at page 21, line 32
The "ietf-isis" module defines two RPC operations: The "ietf-isis" module defines two RPC operations:
o clear-database: Reset the content of a particular IS-IS database o clear-database: Reset the content of a particular IS-IS database
and restart database synchronization with all neighbors. and restart database synchronization with all neighbors.
o clear-adjacency: Restart a particular set of IS-IS adjacencies. o clear-adjacency: Restart a particular set of IS-IS adjacencies.
4. Notifications 4. Notifications
The "ietf-isis" module defines the following notifications : The "ietf-isis" module defines the following notifications:
database-overload: This notification is sent when the IS-IS Node database-overload: This notification is sent when the IS-IS Node
overload condition changes. overload condition changes.
lsp-too-large: This notification is sent when the system tries to lsp-too-large: This notification is sent when the system tries to
propagate a PDU that is too large. propagate a PDU that is too large.
if-state-change: This notification is sent when the state of an if-state-change: This notification is sent when an interface's
interface's state changes. state changes.
corrupted-lsp-detected: This notification is sent when the IS-IS corrupted-lsp-detected: This notification is sent when the IS-IS
node discovers that an LSP that was previously stored in the Link node discovers that an LSP that was previously stored in the Link
State Database, i.e., local memory, has become corrupted. State Database, i.e., local memory, has become corrupted.
attempt-to-exceed-max-sequence: This notification is sent when the attempt-to-exceed-max-sequence: This notification is sent when the
system wraps the 32-bit sequence counter of an LSP. system wraps the 32-bit sequence counter of an LSP.
id-len-mismatch: This notification is sent when we receive a PDU id-len-mismatch: This notification is sent when we receive a PDU
with a different value for the System ID length. with a different value for the System ID length.
skipping to change at page 22, line 20 skipping to change at page 22, line 51
lsp-received: This notification is sent when an LSP is received. lsp-received: This notification is sent when an LSP is received.
lsp-generation: This notification is sent when an LSP is lsp-generation: This notification is sent when an LSP is
regenerated. regenerated.
5. Interaction with Other YANG Modules 5. Interaction with Other YANG Modules
The "isis" container augments the "/rt:routing/rt:control-plane- The "isis" container augments the "/rt:routing/rt:control-plane-
protocols/control-plane-protocol" container of the ietf-routing protocols/control-plane-protocol" container of the ietf-routing
[RFC8349] module by with IS-IS-specific parameters. [RFC8349] module with IS-IS-specific parameters.
The "isis" module augments "/if:interfaces/if:interface" defined by The "isis" module augments "/if:interfaces/if:interface" defined by
[RFC8343] with ISO specific parameters. [RFC8343] with ISO specific parameters.
The "isis" operational state container augments the "/rt:routing- The "isis" operational state container augments the "/rt:routing-
state/rt:control-plane-protocols/control-plane-protocol" container of state/rt:control-plane-protocols/control-plane-protocol" container of
the ietf-routing module with IS-IS-specific operational states. the ietf-routing module with IS-IS-specific operational states.
Some IS-IS-specific route attributes are added to route objects in Some IS-IS-specific route attributes are added to route objects in
the ietf-routing module by augmenting "/rt:routing- the ietf-routing module by augmenting "/rt:routing-
skipping to change at page 22, line 50 skipping to change at page 23, line 33
6. IS-IS YANG Module 6. IS-IS YANG Module
The following RFCs, drafts and external standards are not referenced The following RFCs, drafts and external standards are not referenced
in the document text but are referenced in the ietf-isis.yang module: in the document text but are referenced in the ietf-isis.yang module:
[ISO-10589], [RFC1195], [RFC4090],[RFC5029], [RFC5130], [RFC5302], [ISO-10589], [RFC1195], [RFC4090],[RFC5029], [RFC5130], [RFC5302],
[RFC5305], [RFC5306], [RFC5307], [RFC5308], [RFC5880], [RFC5881], [RFC5305], [RFC5306], [RFC5307], [RFC5308], [RFC5880], [RFC5881],
[RFC6119], [RFC6232], [RFC7794], [RFC7981], [RFC8570], [RFC7917], [RFC6119], [RFC6232], [RFC7794], [RFC7981], [RFC8570], [RFC7917],
[RFC8405]. [RFC8405].
<CODE BEGINS> file "ietf-isis@2019-09-26.yang" <CODE BEGINS> file "ietf-isis@2019-10-08.yang"
module ietf-isis { module ietf-isis {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; namespace "urn:ietf:params:xml:ns:yang:ietf-isis";
prefix isis; prefix isis;
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
reference "RFC 8349 - A YANG Data Model for Routing reference "RFC 8349 - A YANG Data Model for Routing
Management (NMDA Version)"; Management (NMDA Version)";
skipping to change at page 25, line 14 skipping to change at page 25, line 46
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as 'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here. they appear in all capitals, as shown here.
This version of this YANG module is part of RFC XXXX; This version of this YANG module is part of RFC XXXX;
see the RFC itself for full legal notices."; see the RFC itself for full legal notices.";
revision 2019-09-26 { revision 2019-10-08 {
description description
"Initial revision."; "Initial revision.";
reference "RFC XXXX"; reference "RFC XXXX";
} }
/* Identities */ /* Identities */
identity isis { identity isis {
base rt:routing-protocol; base rt:routing-protocol;
description "Identity for the IS-IS routing protocol."; description "Identity for the IS-IS routing protocol.";
} }
identity lsp-log-reason { identity lsp-log-reason {
description "Base identity for an LSP change log reason."; description "Base identity for an LSP change log reason.";
} }
identity refresh { identity refresh {
skipping to change at page 26, line 38 skipping to change at page 27, line 21
} }
identity frr-protection-available-downstream-type { identity frr-protection-available-downstream-type {
base frr-protection-available-type; base frr-protection-available-type;
description "The alternate is downstream of node in the path."; description "The alternate is downstream of node in the path.";
} }
identity frr-protection-available-other-type { identity frr-protection-available-other-type {
base frr-protection-available-type; base frr-protection-available-type;
description "The level of protection is unknown."; description "The level of protection is unknown.";
} }
identity frr-alternate-type {
description "Base identity for IP Fast Reroute alternate type.";
}
identity frr-alternate-type-equal-cost {
base frr-alternate-type;
description "ECMP alternate.";
}
identity frr-alternate-type-lfa {
base frr-alternate-type;
description "LFA alternate.";
}
identity frr-alternate-type-remote-lfa {
base frr-alternate-type;
description "Remote LFA alternate.";
}
identity frr-alternate-type-tunnel {
base frr-alternate-type;
description "Tunnel based alternate (such as,
RSVP-TE or GRE).";
}
identity frr-alternate-mrt {
base frr-alternate-type;
description "MRT alternate.";
}
identity frr-alternate-tilfa {
base frr-alternate-type;
description "TILFA alternate.";
}
identity frr-alternate-other {
base frr-alternate-type;
description "Other alternate.";
}
identity unidirectional-link-delay-subtlv-flag { identity unidirectional-link-delay-subtlv-flag {
description "Base identity for unidirectional-link-delay description "Base identity for unidirectional-link-delay
subTLV flags. Flags are defined in RFC8570."; subTLV flags. Flags are defined in RFC8570.";
} }
identity unidirectional-link-delay-subtlv-a-flag { identity unidirectional-link-delay-subtlv-a-flag {
base unidirectional-link-delay-subtlv-flag; base unidirectional-link-delay-subtlv-flag;
description description
"The A bit represents the Anomalous (A) bit. "The A bit represents the Anomalous (A) bit.
The A bit is set when the measured value of The A bit is set when the measured value of
this parameter exceeds its configured this parameter exceeds its configured
skipping to change at page 28, line 36 skipping to change at page 30, line 4
"Quote from RFC7981: 'When the IS-IS Router CAPABILITY TLV "Quote from RFC7981: 'When the IS-IS Router CAPABILITY TLV
is leaked from level-2 to level-1, the D bit MUST be set. is leaked from level-2 to level-1, the D bit MUST be set.
Otherwise, this bit MUST be clear. IS-IS Router Otherwise, this bit MUST be clear. IS-IS Router
capability TLVs with the D bit set MUST NOT be capability TLVs with the D bit set MUST NOT be
leaked from level-1 to level-2 in to prevent leaked from level-1 to level-2 in to prevent
TLV looping'."; TLV looping'.";
} }
identity lsp-flag { identity lsp-flag {
description "Base identity for LSP attributes. description "Base identity for LSP attributes.
Attributes are defined in ISO 10589"; Attributes are defined in ISO 10589";
} }
identity lsp-partitioned-flag { identity lsp-partitioned-flag {
base lsp-flag; base lsp-flag;
description "Originator partition repair supported"; description "Originator partition repair supported";
} }
identity lsp-attached-error-metric-flag { identity lsp-attached-error-metric-flag {
base lsp-flag; base lsp-flag;
description "Set when originator is attached to description "Set when originator is attached to
another area using the referred metric."; another area using the error metric.";
} }
identity lsp-attached-delay-metric-flag { identity lsp-attached-delay-metric-flag {
base lsp-flag; base lsp-flag;
description "Set when originator is attached to description "Set when originator is attached to
another area using the referred metric."; another area using the delay metric.";
} }
identity lsp-attached-expense-metric-flag { identity lsp-attached-expense-metric-flag {
base lsp-flag; base lsp-flag;
description "Set when originator is attached to description "Set when originator is attached to
another area using the referred metric."; another area using the expense metric.";
} }
identity lsp-attached-default-metric-flag { identity lsp-attached-default-metric-flag {
base lsp-flag; base lsp-flag;
description "Set when originator is attached to description "Set when originator is attached to
another area using the referred metric."; another area using the default metric.";
} }
identity lsp-overload-flag { identity lsp-overload-flag {
base lsp-flag; base lsp-flag;
description description
"If set, the originator is overloaded, "If set, the originator is overloaded,
and must be avoided in path calculation."; and must be avoided in path calculation.";
} }
identity lsp-l1system-flag { identity lsp-l1system-flag {
base lsp-flag; base lsp-flag;
description description
skipping to change at page 30, line 28 skipping to change at page 31, line 43
Extended IP and IPv6 Reachability"; Extended IP and IPv6 Reachability";
} }
feature node-tag { feature node-tag {
description description
"Support for node admin tag for IS-IS routing instances."; "Support for node admin tag for IS-IS routing instances.";
reference "RFC7917 - Advertising Node Administrative Tags reference "RFC7917 - Advertising Node Administrative Tags
in IS-IS"; in IS-IS";
} }
feature ldp-igp-sync { feature ldp-igp-sync {
description description
"LDP IGP synchronization."; "Support for LDP IGP synchronization.";
reference "RFC5443 - LDP IGP Synchronization."; reference "RFC5443 - LDP IGP Synchronization.";
} }
feature fast-reroute { feature fast-reroute {
description description
"Support for IP Fast Reroute (IP-FRR)."; "Support for IP Fast Reroute (IP-FRR).";
} }
feature nsr { feature nsr {
description description
"Non-Stop-Routing (NSR) support. The IS-IS NSR feature "Support for Non-Stop-Routing (NSR). The IS-IS NSR feature
allows a router with redundant control-plane capability allows a router with redundant control-plane capability
(e.g., dual Route-Processor (RP) cards) to maintain its (e.g., dual Route-Processor (RP) cards) to maintain its
state and adjacencies during planned and unplanned state and adjacencies during planned and unplanned
IS-IS instance restarts. It differs from graceful-restart IS-IS instance restarts. It differs from graceful-restart
or Non-Stop Forwarding (NSF) in that no protocol signaling or Non-Stop Forwarding (NSF) in that no protocol signaling
or assistance from adjacent IS-IS neighbors is required to or assistance from adjacent IS-IS neighbors is required to
recover control-plane state."; recover control-plane state.";
} }
feature lfa { feature lfa {
description description
skipping to change at page 31, line 31 skipping to change at page 32, line 47
IS-IS Using Administrative Tags"; IS-IS Using Administrative Tags";
} }
feature prefix-tag64 { feature prefix-tag64 {
description description
"Support for 64-bit prefix tags"; "Support for 64-bit prefix tags";
reference "RFC5130 - A Policy Control Mechanism in reference "RFC5130 - A Policy Control Mechanism in
IS-IS Using Administrative Tags"; IS-IS Using Administrative Tags";
} }
feature auto-cost { feature auto-cost {
description description
"Calculate IS-IS interface metric according to "Support for IS-IS interface metric computation
reference bandwidth."; according to a reference bandwidth.";
} }
feature te-rid { feature te-rid {
description description
"Traffic-Engineering Router-ID."; "Traffic-Engineering Router-ID.";
reference "RFC5305 - IS-IS Extensions for Traffic Engineering reference "RFC5305 - IS-IS Extensions for Traffic Engineering
RFC6119 - IPv6 Traffic Engineering in IS-IS"; RFC6119 - IPv6 Traffic Engineering in IS-IS";
} }
feature max-ecmp { feature max-ecmp {
description description
"Setting maximum number of ECMP paths."; "Setting maximum number of ECMP paths.";
} }
feature multi-topology { feature multi-topology {
description description
"Support for Multiple-Topology Routing (MTR)."; "Support for Multiple-Topology Routing (MTR).";
reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS"; reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS";
} }
feature nlpid-control { feature nlpid-control {
description description
"This feature controls the advertisement "Support for the advertisement
of support NLPID within IS-IS configuration."; of a Network Layer Protocol Identifier within IS-IS
configuration.";
} }
feature graceful-restart { feature graceful-restart {
description description
"IS-IS Graceful restart support."; "IS-IS Graceful restart support.";
reference "RFC5306 - Restart Signaling in IS-IS"; reference "RFC5306 - Restart Signaling in IS-IS";
} }
feature lsp-refresh { feature lsp-refresh {
description description
"Configuration of LSP refresh interval."; "Configuration of LSP refresh interval.";
} }
feature maximum-area-addresses { feature maximum-area-addresses {
description description
"Support of maximum-area-addresses config."; "Support for maximum-area-addresses configuration.";
} }
feature admin-control { feature admin-control {
description description
"Administrative control of the protocol state."; "Administrative control of the protocol state.";
} }
/* Type definitions */ /* Type definitions */
typedef circuit-id { typedef circuit-id {
skipping to change at page 39, line 15 skipping to change at page 40, line 31
type inet:ip-prefix; type inet:ip-prefix;
description description
"Protected prefix."; "Protected prefix.";
} }
leaf alternate { leaf alternate {
type inet:ip-address; type inet:ip-address;
description description
"Alternate next hop for the prefix."; "Alternate next hop for the prefix.";
} }
leaf alternate-type { leaf alternate-type {
type enumeration { type identityref {
enum equal-cost { base frr-alternate-type;
description }
"ECMP alternate.";
}
enum lfa {
description
"LFA alternate.";
}
enum remote-lfa {
description
"Remote LFA alternate.";
}
enum tunnel {
description
"Tunnel based alternate (such as,
RSVP-TE or GRE).";
}
enum ti-lfa {
description
"TI-LFA alternate.";
}
enum mrt {
description
"MRT alternate.";
}
enum other {
description
"Unknown alternate type.";
}
}
description description
"Type of alternate."; "Type of alternate.";
} }
leaf best { leaf best {
type boolean; type boolean;
description description
"Is set when the alternate is the preferred one, "Is set when the alternate is the preferred one,
is clear otherwise."; is clear otherwise.";
} }
leaf non-best-reason { leaf non-best-reason {
skipping to change at page 41, line 4 skipping to change at page 41, line 41
description description
"Metric from PLR to the alternate node"; "Metric from PLR to the alternate node";
} }
leaf alternate-metric3 { leaf alternate-metric3 {
type uint32; type uint32;
description description
"Metric from alternate node to the destination"; "Metric from alternate node to the destination";
} }
description description
"Per-AF protected prefix statistics."; "Per-AF protected prefix statistics.";
} }
description description
"List of prefixes that are protected."; "List of prefixes that are protected.";
} }
container unprotected-routes { container unprotected-routes {
config false; config false;
list address-family-stats { list prefixes {
key "address-family prefix"; key "address-family prefix";
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description "Address-family"; description "Address-family";
} }
leaf prefix { leaf prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "Unprotected prefix."; description "Unprotected prefix.";
} }
description description
"Per-AF unprotected prefix statistics."; "Per-AF unprotected prefix statistics.";
} }
description description
skipping to change at page 41, line 49 skipping to change at page 42, line 35
} }
list address-family-stats { list address-family-stats {
key address-family; key address-family;
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description "Address-family"; description "Address-family";
} }
leaf total-routes { leaf total-routes {
type uint32; type yang:gauge32;
description "Total prefixes."; description "Total prefixes.";
} }
leaf unprotected-routes { leaf unprotected-routes {
type uint32; type yang:gauge32;
description description
"Total prefixes that are not protected."; "Total prefixes that are not protected.";
} }
leaf protected-routes { leaf protected-routes {
type uint32; type yang:gauge32;
description description
"Total prefixes that are protected."; "Total prefixes that are protected.";
} }
leaf link-protected-routes { leaf link-protected-routes {
type uint32; type yang:gauge32;
description description
"Total prefixes that are link protected."; "Total prefixes that are link protected.";
} }
leaf node-protected-routes { leaf node-protected-routes {
type uint32; type yang:gauge32;
description description
"Total prefixes that are node protected."; "Total prefixes that are node protected.";
} }
description description
"Per-AF protected prefix statistics."; "Per-AF protected prefix statistics.";
} }
description "Global protection statistics."; description "Global protection statistics.";
} }
} }
skipping to change at page 43, line 40 skipping to change at page 44, line 28
grouping route-content { grouping route-content {
description description
"IS-IS protocol-specific route properties grouping."; "IS-IS protocol-specific route properties grouping.";
leaf metric { leaf metric {
type uint32; type uint32;
description "IS-IS metric of a route."; description "IS-IS metric of a route.";
} }
leaf-list tag { leaf-list tag {
type uint64; type uint64;
description description
"List of tags associated with the route. The leaf "List of tags associated with the route.
describes both 32-bit and 64-bit tags."; This list provides a consolidated view of both
32-bit and 64-bit tags (RFC5130) available for the prefix.";
} }
leaf route-type { leaf route-type {
type enumeration { type enumeration {
enum l2-intra-area { enum l2-intra-area {
description "Level 2 internal route. As per RFC5302, description "Level 2 internal route. As per RFC5302,
the prefix is directly connected to the the prefix is directly connected to the
advertising router. It cannot be advertising router. It cannot be
distinguished from an L1->L2 inter-area distinguished from an L1->L2 inter-area
route."; route.";
} }
skipping to change at page 49, line 37 skipping to change at page 50, line 27
"Advertise new metric style only (RFC5305)"; "Advertise new metric style only (RFC5305)";
} }
enum old-only { enum old-only {
description description
"Advertise old metric style only (RFC1195)"; "Advertise old metric style only (RFC1195)";
} }
enum both { enum both {
description "Advertise both metric styles"; description "Advertise both metric styles";
} }
} }
description
"Type of metric to be generated:
- wide-only means only new metric style
is generated,
- old-only means that only old-style metric
is generated,
- both means that both are advertised.
This leaf is only affecting IPv4 metrics.";
}
description
"Grouping for global metric style config.";
}
grouping metric-type-global-cfg-with-default {
leaf value {
type enumeration {
enum wide-only {
description
"Advertise new metric style only (RFC5305)";
}
enum old-only {
description
"Advertise old metric style only (RFC1195)";
}
enum both {
description "Advertise both metric styles";
}
}
default wide-only; default wide-only;
description description
"Type of metric to be generated: "Type of metric to be generated:
- wide-only means only new metric style - wide-only means only new metric style
is generated, is generated,
- old-only means that only old-style metric - old-only means that only old-style metric
is generated, is generated,
- both means that both are advertised. - both means that both are advertised.
This leaf is only affecting IPv4 metrics."; This leaf is only affecting IPv4 metrics.";
} }
description description
"Grouping for global metric style config."; "Grouping for global metric style config.";
} }
grouping default-metric-global-cfg { grouping default-metric-global-cfg {
leaf value { leaf value {
type wide-metric; type wide-metric;
description "Value of the metric";
}
description
"Global default metric config grouping.";
}
grouping default-metric-global-cfg-with-default {
leaf value {
type wide-metric;
default "10"; default "10";
description "Value of the metric"; description "Value of the metric";
} }
description description
"Global default metric config grouping."; "Global default metric config grouping.";
} }
grouping overload-global-cfg { grouping overload-global-cfg {
leaf status { leaf status {
type boolean; type boolean;
skipping to change at page 51, line 48 skipping to change at page 53, line 25
} }
description "Choice of authentication."; description "Choice of authentication.";
} }
description "Grouping for hello authentication."; description "Grouping for hello authentication.";
} }
grouping hello-interval-cfg { grouping hello-interval-cfg {
leaf value { leaf value {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
default 10;
description description
"Interval (in seconds) between successive hello "Interval (in seconds) between successive hello
messages."; messages.";
}
description "Interval between hello messages.";
}
grouping hello-interval-cfg-with-default {
leaf value {
type rt-types:timer-value-seconds16;
units "seconds";
default 10;
description
"Interval (in seconds) between successive hello
messages.";
} }
description "Interval between hello messages."; description "Interval between hello messages.";
} }
grouping hello-multiplier-cfg { grouping hello-multiplier-cfg {
leaf value { leaf value {
type uint16; type uint16;
description
"Number of missed hello messages prior to
declaring the adjacency down.";
}
description
"Number of missed hello messages prior to
adjacency down grouping.";
}
grouping hello-multiplier-cfg-with-default {
leaf value {
type uint16;
default 3; default 3;
description description
"Number of missed hello messages prior to "Number of missed hello messages prior to
declaring the adjacency down."; declaring the adjacency down.";
} }
description description
"Number of missed hello messages prior to "Number of missed hello messages prior to
adjacency down grouping."; adjacency down grouping.";
} }
grouping priority-cfg { grouping priority-cfg {
leaf value { leaf value {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
} }
description
"Priority of interface for DIS election.";
}
description "Interface DIS election priority grouping";
}
grouping priority-cfg-with-default {
leaf value {
type uint8 {
range "0 .. 127";
}
default 64; default 64;
description description
"Priority of interface for DIS election."; "Priority of interface for DIS election.";
} }
description "Interface DIS election priority grouping"; description "Interface DIS election priority grouping";
} }
grouping metric-cfg { grouping metric-cfg {
leaf value { leaf value {
type wide-metric; type wide-metric;
description "Metric value.";
}
description "Interface metric grouping";
}
grouping metric-cfg-with-default {
leaf value {
type wide-metric;
default "10"; default "10";
description "Metric value."; description "Metric value.";
} }
description "Interface metric grouping"; description "Interface metric grouping";
} }
grouping metric-parameters { grouping metric-parameters {
container metric-type { container metric-type {
uses metric-type-global-cfg; uses metric-type-global-cfg-with-default;
container level-1 { container level-1 {
uses metric-type-global-cfg; uses metric-type-global-cfg;
description "level-1 specific configuration"; description "level-1 specific configuration";
} }
container level-2 { container level-2 {
uses metric-type-global-cfg; uses metric-type-global-cfg;
description "level-2 specific configuration"; description "level-2 specific configuration";
} }
description "Metric style global configuration"; description "Metric style global configuration";
} }
container default-metric { container default-metric {
uses default-metric-global-cfg; uses default-metric-global-cfg-with-default;
container level-1 { container level-1 {
uses default-metric-global-cfg; uses default-metric-global-cfg;
description "level-1 specific configuration"; description "level-1 specific configuration";
} }
container level-2 { container level-2 {
uses default-metric-global-cfg; uses default-metric-global-cfg;
description "level-2 specific configuration"; description "level-2 specific configuration";
} }
description "Default metric global configuration"; description "Default metric global configuration";
} }
skipping to change at page 56, line 35 skipping to change at page 59, line 4
units "seconds"; units "seconds";
description description
"Lifetime of the router's LSPs in seconds."; "Lifetime of the router's LSPs in seconds.";
} }
leaf lsp-refresh { leaf lsp-refresh {
if-feature lsp-refresh; if-feature lsp-refresh;
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
description description
"Refresh interval of the router's LSPs in seconds."; "Refresh interval of the router's LSPs in seconds.";
} }
leaf poi-tlv { leaf poi-tlv {
if-feature poi-tlv; if-feature poi-tlv;
type boolean; type boolean;
default false; default false;
description description
"Enable advertisement of IS-IS purge TLV."; "Enable advertisement of IS-IS Purge Originator
Identification TLV.";
} }
description "Grouping for LSP global parameters."; description "Grouping for LSP global parameters.";
} }
grouping spf-parameters { grouping spf-parameters {
container spf-control { container spf-control {
leaf paths { leaf paths {
if-feature max-ecmp; if-feature max-ecmp;
type uint16 { type uint16 {
range "1..32"; range "1..65535";
} }
description description
"Maximum number of Equal-Cost Multi-Path (ECMP) paths."; "Maximum number of Equal-Cost Multi-Path (ECMP) paths.";
} }
container ietf-spf-delay { container ietf-spf-delay {
if-feature ietf-spf-delay; if-feature ietf-spf-delay;
uses ietf-spf-delay; uses ietf-spf-delay;
description "IETF SPF delay algorithm configuration."; description "IETF SPF delay algorithm configuration.";
} }
description description
skipping to change at page 61, line 28 skipping to change at page 63, line 45
description "level-1 specific configuration"; description "level-1 specific configuration";
} }
container level-2 { container level-2 {
uses hello-authentication-cfg; uses hello-authentication-cfg;
description "level-2 specific configuration"; description "level-2 specific configuration";
} }
description description
"Authentication type to be used in hello messages."; "Authentication type to be used in hello messages.";
} }
container hello-interval { container hello-interval {
uses hello-interval-cfg; uses hello-interval-cfg-with-default;
container level-1 { container level-1 {
uses hello-interval-cfg; uses hello-interval-cfg;
description "level-1 specific configuration"; description "level-1 specific configuration";
} }
container level-2 { container level-2 {
uses hello-interval-cfg; uses hello-interval-cfg;
description "level-2 specific configuration"; description "level-2 specific configuration";
} }
description "Interval between hello messages."; description "Interval between hello messages.";
} }
container hello-multiplier { container hello-multiplier {
uses hello-multiplier-cfg; uses hello-multiplier-cfg-with-default;
container level-1 { container level-1 {
uses hello-multiplier-cfg; uses hello-multiplier-cfg;
description "level-1 specific configuration"; description "level-1 specific configuration";
} }
container level-2 { container level-2 {
uses hello-multiplier-cfg; uses hello-multiplier-cfg;
description "level-2 specific configuration"; description "level-2 specific configuration";
} }
description "Hello multiplier configuration."; description "Hello multiplier configuration.";
} }
container priority { container priority {
must '../interface-type = "broadcast"' { must '../interface-type = "broadcast"' {
error-message error-message
"Priority only applies to broadcast interfaces."; "Priority only applies to broadcast interfaces.";
description "Check for broadcast interface."; description "Check for broadcast interface.";
} }
uses priority-cfg; uses priority-cfg-with-default;
container level-1 { container level-1 {
uses priority-cfg; uses priority-cfg;
description "level-1 specific configuration"; description "level-1 specific configuration";
} }
container level-2 { container level-2 {
uses priority-cfg; uses priority-cfg;
description "level-2 specific configuration"; description "level-2 specific configuration";
} }
description "Priority for DIS election."; description "Priority for DIS election.";
} }
container metric { container metric {
uses metric-cfg; uses metric-cfg-with-default;
container level-1 { container level-1 {
uses metric-cfg; uses metric-cfg;
description "level-1 specific configuration"; description "level-1 specific configuration";
} }
container level-2 { container level-2 {
uses metric-cfg; uses metric-cfg;
description "level-2 specific configuration"; description "level-2 specific configuration";
} }
description "Metric configuration."; description "Metric configuration.";
} }
skipping to change at page 70, line 4 skipping to change at page 72, line 20
description description
"List of packet counter for supported levels."; "List of packet counter for supported levels.";
} }
description "Packet counters per IS-IS level."; description "Packet counters per IS-IS level.";
} }
description description
"Grouping for per IS-IS Level packet counters."; "Grouping for per IS-IS Level packet counters.";
} }
/* Groupings for various log buffers */ /* Groupings for various log buffers */
grouping spf-log { grouping spf-log {
container spf-log { container spf-log {
config false; config false;
list event { list event {
key id; key id;
leaf id { leaf id {
type uint32; type yang:counter32;
description description
"Event identifier - purely internal value."; "Event identifier - purely internal value.
It is expected the most recent events to have the bigger
id number.";
} }
leaf spf-type { leaf spf-type {
type enumeration { type enumeration {
enum full { enum full {
description "Full SPF computation."; description "Full SPF computation.";
} }
enum route-only { enum route-only {
description description
"Route reachability only SPF computation"; "Route reachability only SPF computation";
} }
skipping to change at page 71, line 33 skipping to change at page 74, line 4
"This container lists the SPF computation events."; "This container lists the SPF computation events.";
} }
description "Grouping for spf-log events."; description "Grouping for spf-log events.";
} }
grouping lsp-log { grouping lsp-log {
container lsp-log { container lsp-log {
config false; config false;
list event { list event {
key id; key id;
leaf id { leaf id {
type uint32; type yang:counter32;
description description
"Event identifier - purely internal value."; "Event identifier - purely internal value.
It is expected the most recent events to have the bigger
id number.";
} }
leaf level { leaf level {
type level-number; type level-number;
description description
"IS-IS level number for LSP"; "IS-IS level number for LSP";
} }
container lsp { container lsp {
leaf lsp { leaf lsp {
type lsp-id; type lsp-id;
description description
skipping to change at page 74, line 45 skipping to change at page 77, line 17
leaf ip-prefix { leaf ip-prefix {
type inet:ipv4-address; type inet:ipv4-address;
description "IPv4 prefix address"; description "IPv4 prefix address";
} }
leaf prefix-len { leaf prefix-len {
type uint8; type uint8;
description "IPv4 prefix length (in bits)"; description "IPv4 prefix length (in bits)";
} }
leaf i-e { leaf i-e {
type boolean; type boolean;
description "Internal or External (I/E) Metric bit value."; description "Internal or External (I/E) Metric bit value.
Set to false to indicate an internal metric.";
} }
container default-metric { container default-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "Default IS-IS metric for IPv4 prefix"; description "Default IS-IS metric for IPv4 prefix";
} }
description "IS-IS default metric container."; description "IS-IS default metric container.";
} }
container delay-metric { container delay-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS delay metric for IPv4 prefix"; description "IS-IS delay metric for IPv4 prefix";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description description
skipping to change at page 75, line 28 skipping to change at page 77, line 49
} }
container expense-metric { container expense-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS expense metric for IPv4 prefix"; description "IS-IS expense metric for IPv4 prefix";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description description
"Indicates whether IS-IS delay metric is supported."; "Indicates whether IS-IS expense metric is supported.";
} }
description "IS-IS expense metric container."; description "IS-IS expense metric container.";
} }
container error-metric { container error-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description description
"This leaf describes the IS-IS error metric value"; "This leaf describes the IS-IS error metric value";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
skipping to change at page 75, line 41 skipping to change at page 78, line 15
} }
container error-metric { container error-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description description
"This leaf describes the IS-IS error metric value"; "This leaf describes the IS-IS error metric value";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description "IS-IS error metric for IPv4 prefix"; description
"Indicates whether IS-IS error metric is supported.";
} }
description "IS-IS error metric container."; description "IS-IS error metric container.";
} }
} }
grouping prefix-ipv4-extended { grouping prefix-ipv4-extended {
description description
"Grouping for attributes of an IPv4 extended prefix "Grouping for attributes of an IPv4 extended prefix
as defined in RFC5305."; as defined in RFC5305.";
leaf up-down { leaf up-down {
type boolean; type boolean;
description "Value of up/down bit."; description "Value of up/down bit.
Set to true when the prefix has been advertised down
the hierarchy.";
} }
leaf ip-prefix { leaf ip-prefix {
type inet:ipv4-address; type inet:ipv4-address;
description "IPv4 prefix address"; description "IPv4 prefix address";
} }
leaf prefix-len { leaf prefix-len {
type uint8; type uint8;
description "IPv4 prefix length (in bits)"; description "IPv4 prefix length (in bits)";
} }
leaf metric { leaf metric {
skipping to change at page 76, line 26 skipping to change at page 78, line 52
description "IS-IS wide metric value"; description "IS-IS wide metric value";
} }
leaf-list tag { leaf-list tag {
type uint32; type uint32;
description description
"List of 32-bit tags associated with the IPv4 prefix."; "List of 32-bit tags associated with the IPv4 prefix.";
} }
leaf-list tag64 { leaf-list tag64 {
type uint64; type uint64;
description description
"List of 32-bit tags associated with the IPv4 prefix."; "List of 64-bit tags associated with the IPv4 prefix.";
} }
uses prefix-attributes-extension; uses prefix-attributes-extension;
} }
grouping prefix-ipv6-extended { grouping prefix-ipv6-extended {
description "Grouping for attributes of an IPv6 prefix description "Grouping for attributes of an IPv6 prefix
as defined in RFC5308."; as defined in RFC5308.";
leaf up-down { leaf up-down {
type boolean; type boolean;
description "Value of up/down bit."; description "Value of up/down bit.
Set to true when the prefix has been advertised down
the hierarchy.";
} }
leaf ip-prefix { leaf ip-prefix {
type inet:ipv6-address; type inet:ipv6-address;
description "IPv6 prefix address"; description "IPv6 prefix address";
} }
leaf prefix-len { leaf prefix-len {
type uint8; type uint8;
description "IPv4 prefix length (in bits)"; description "IPv6 prefix length (in bits)";
} }
leaf metric { leaf metric {
type wide-metric; type wide-metric;
description "IS-IS wide metric value"; description "IS-IS wide metric value";
} }
leaf-list tag { leaf-list tag {
type uint32; type uint32;
description description
"List of 32-bit tags associated with the IPv4 prefix."; "List of 32-bit tags associated with the IPv4 prefix.";
} }
leaf-list tag64 { leaf-list tag64 {
type uint64; type uint64;
description description
"List of 32-bit tags associated with the IPv4 prefix."; "List of 64-bit tags associated with the IPv4 prefix.";
} }
uses prefix-attributes-extension; uses prefix-attributes-extension;
} }
/* TLVs and sub-TLVs for neighbors */ /* TLVs and sub-TLVs for neighbors */
grouping neighbor-link-attributes { grouping neighbor-link-attributes {
description description
"Grouping for link attributes as defined "Grouping for link attributes as defined
in RFC5029"; in RFC5029";
skipping to change at page 84, line 41 skipping to change at page 87, line 19
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description "IS-IS delay metric supported"; description "IS-IS delay metric supported";
} }
description "IS-IS delay metric container"; description "IS-IS delay metric container";
} }
container expense-metric { container expense-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS delay expense metric value"; description "IS-IS expense metric value";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description "IS-IS delay expense metric supported"; description "IS-IS expense metric supported";
} }
description "IS-IS delay expense metric container"; description "IS-IS expense metric container";
} }
container error-metric { container error-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS error metric value"; description "IS-IS error metric value";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description "IS-IS error metric supported"; description "IS-IS error metric supported";
skipping to change at page 102, line 24 skipping to change at page 104, line 48
notification rejected-adjacency { notification rejected-adjacency {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description description
"Received raw PDU."; "Received raw PDU.";
} }
leaf reason { leaf reason {
type string { type string {
length "1..255"; length "0..255";
} }
description description
"The system may provide a reason to reject the "The system may provide a reason to reject the
adjacency. If the reason is not available, adjacency. If the reason is not available,
an empty string will be returned. the reason string will not be returned.
The expected format is a single line text."; The expected format is a single line text.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
Hello PDU from an IS but does not establish an adjacency Hello PDU from an IS but does not establish an adjacency
for some reason. The notification generation must be for some reason. The notification generation must be
throttled with at least 5 seconds between successive throttled with at least 5 seconds between successive
notifications."; notifications.";
} }
skipping to change at page 106, line 30 skipping to change at page 109, line 5
/isis/interfaces/interface[name] /isis/interfaces/interface[name]
For IS-IS, the ability to modify IS-IS configuration will allow the For IS-IS, the ability to modify IS-IS configuration will allow the
entire IS-IS domain to be compromised including forming adjacencies entire IS-IS domain to be compromised including forming adjacencies
with unauthorized routers to misroute traffic or mount a massive with unauthorized routers to misroute traffic or mount a massive
Denial-of-Service (DoS) attack. For example, adding IS-IS on any Denial-of-Service (DoS) attack. For example, adding IS-IS on any
unprotected interface could allow an IS-IS adjacency to be formed unprotected interface could allow an IS-IS adjacency to be formed
with an unauthorized and malicious neighbor. Once an adjacency is with an unauthorized and malicious neighbor. Once an adjacency is
formed, traffic could be hijacked. As a simpler example, a Denial- formed, traffic could be hijacked. As a simpler example, a Denial-
of-Service attack could be mounted by changing the cost of an IS-IS Of-Service attack could be mounted by changing the cost of an IS-IS
interface to be asymmetric such that a hard routing loop ensues. In interface to be asymmetric such that a hard routing loop ensues. In
general, unauthorized modification of most IS-IS features will pose general, unauthorized modification of most IS-IS features will pose
their own set of security risks and the "Security Considerations" in their own set of security risks and the "Security Considerations" in
the respective reference RFCs should be consulted. the respective reference RFCs should be consulted.
Some of the readable data nodes in the ietf-isis.yang module may be Some of the readable data nodes in the ietf-isis.yang module may be
considered sensitive or vulnerable in some network environments. It considered sensitive or vulnerable in some network environments. It
is thus important to control read access (e.g., via get, get-config, 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 or notification) to these data nodes. The exposure of the Link State
Database (LSDB) will expose the detailed topology of the network. Database (LSDB) will expose the detailed topology of the network.
The Link State Database (LSDB) is represented by the following schema Similarly, the IS-IS local RIB exposes the reachable prefixes in the
node: IS-IS routing domain. The Link State Database (LSDB) and local RIB
are represented by the following schema nodes:
/isis/database /isis/database
Exposure of the Link State Database includes information beyond the /isis/local-rib
scope of the IS-IS router and this may be undesirable since exposure
may facilitate other attacks. Additionally, the complete IP network Exposure of the Link State Database and local RIB include information
topology and, if deployed, the traffic engineering topology of the beyond the scope of the IS-IS router and this may be undesirable
IS-IS domain can be reconstructed. Network operators may consider since exposure may facilitate other attacks. Additionally, the
their topologies to be sensitive confidential data. complete IP network topology and, if deployed, the traffic
engineering topology of the IS-IS domain can be reconstructed from
the Link State Database. Though not as straightforward, the IS-IS
local RIB can also be discover topological information. Network
operators may consider their topologies to be sensitive confidential
data.
For IS-IS authentication, configuration is supported via the For IS-IS authentication, configuration is supported via the
specification of key-chain [RFC8177] or the direction specification specification of key-chain [RFC8177] or the direct specification of
of key and authentication algorithm. Hence, authentication key and authentication algorithm. Hence, authentication
configuration using the "auth-table-trailer" case in the configuration using the "auth-table-trailer" case in the
"authentication" container inherits the security considerations of "authentication" container inherits the security considerations of
[RFC8177]. This includes the considerations with respect to the [RFC8177]. This includes the considerations with respect to the
local storage and handling of authentication keys. local storage and handling of authentication keys.
Some of the RPC operations in this YANG module may be considered Some of the RPC operations in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus sensitive or vulnerable in some network environments. It is thus
important to control access to these operations. The IS-IS YANG important to control access to these operations. The IS-IS YANG
module support the "clear-adjacency" and "clear-database" RPCs. If module support the "clear-adjacency" and "clear-database" RPCs. If
access to either of these is compromised, they can result in access to either of these is compromised, they can result in
temporary network outages be employed to mount DoS attacks. temporary network outages be employed to mount DoS attacks.
The actual authentication key data (whether locally specified or part The actual authentication key data (whether locally specified or part
of a key-chain) is sensitive and needs to be kept secret from of a key-chain) is sensitive and needs to be kept secret from
unauthorized parties; compromise of the key data would allow an unauthorized parties; compromise of the key data would allow an
attacker to forge IS-IS traffic that would be accepted as authentic, attacker to forge IS-IS traffic that would be accepted as authentic,
potentially compromising the entirety IS-IS domain. potentially compromising the entirety IS-IS domain.
The model describes several notifications, implementations must rate-
limit the generation of these notifications to avoid creating
significant notification load. Otherwise, this notification load may
have some side effects on the system stability and may be exploited
as an attack vector.
8. Contributors 8. Contributors
The authors would like to thank Kiran Agrahara Sreenivasa, Dean The authors would like to thank Kiran Agrahara Sreenivasa, Dean
Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major
contributions to the draft. contributions to the draft.
9. Acknowledgements 9. Acknowledgements
The authors would like to thank Tom Petch, Alvaro Retena, Stewart The authors would like to thank Tom Petch, Alvaro Retana, Stewart
Bryant, and Barry Leiba for their review and comments. Bryant, Barry Leiba, Benjamin Kaduk and Adam Roach, and Roman Danyliw
for their review and comments.
10. IANA Considerations 10. IANA Considerations
The IANA is requested to assign two new URIs from the IETF XML The IANA is requested to assign two new URIs from the IETF XML
registry [RFC3688]. Authors are suggesting the following URI: registry [RFC3688]. Authors are suggesting the following URI:
URI: urn:ietf:params:xml:ns:yang:ietf-isis URI: urn:ietf:params:xml:ns:yang:ietf-isis
Registrant Contact: The IESG Registrant Contact: The IESG
XML: N/A, the requested URI is an XML namespace XML: N/A, the requested URI is an XML namespace
skipping to change at page 109, line 19 skipping to change at page 112, line 5
[RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for
IP Fast Reroute: Loop-Free Alternates", RFC 5286, IP Fast Reroute: Loop-Free Alternates", RFC 5286,
DOI 10.17487/RFC5286, September 2008, DOI 10.17487/RFC5286, September 2008,
<https://www.rfc-editor.org/info/rfc5286>. <https://www.rfc-editor.org/info/rfc5286>.
[RFC5301] McPherson, D. and N. Shen, "Dynamic Hostname Exchange [RFC5301] McPherson, D. and N. Shen, "Dynamic Hostname Exchange
Mechanism for IS-IS", RFC 5301, DOI 10.17487/RFC5301, Mechanism for IS-IS", RFC 5301, DOI 10.17487/RFC5301,
October 2008, <https://www.rfc-editor.org/info/rfc5301>. October 2008, <https://www.rfc-editor.org/info/rfc5301>.
[RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-wide Prefix [RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-Wide Prefix
Distribution with Two-Level IS-IS", RFC 5302, Distribution with Two-Level IS-IS", RFC 5302,
DOI 10.17487/RFC5302, October 2008, DOI 10.17487/RFC5302, October 2008,
<https://www.rfc-editor.org/info/rfc5302>. <https://www.rfc-editor.org/info/rfc5302>.
[RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic
Engineering", RFC 5305, DOI 10.17487/RFC5305, October Engineering", RFC 5305, DOI 10.17487/RFC5305, October
2008, <https://www.rfc-editor.org/info/rfc5305>. 2008, <https://www.rfc-editor.org/info/rfc5305>.
[RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS", [RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS",
RFC 5306, DOI 10.17487/RFC5306, October 2008, RFC 5306, DOI 10.17487/RFC5306, October 2008,
skipping to change at page 112, line 16 skipping to change at page 115, line 7
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>. <https://www.rfc-editor.org/info/rfc8446>.
[RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward, [RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward,
D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE) D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE)
Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March
2019, <https://www.rfc-editor.org/info/rfc8570>. 2019, <https://www.rfc-editor.org/info/rfc8570>.
11.2. Informative References 11.2. Informative References
[I-D.ietf-rtgwg-segment-routing-ti-lfa]
Litkowski, S., Bashandy, A., Filsfils, C., Decraene, B.,
Francois, P., daniel.voyer@bell.ca, d., Clad, F., and P.
Camarillo, "Topology Independent Fast Reroute using
Segment Routing", draft-ietf-rtgwg-segment-routing-ti-
lfa-01 (work in progress), March 2019.
[RFC7812] Atlas, A., Bowers, C., and G. Enyedi, "An Architecture for
IP/LDP Fast Reroute Using Maximally Redundant Trees (MRT-
FRR)", RFC 7812, DOI 10.17487/RFC7812, June 2016,
<https://www.rfc-editor.org/info/rfc7812>.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>. <https://www.rfc-editor.org/info/rfc8340>.
Appendix A. Example of IS-IS configuration in XML Appendix A. Example of IS-IS configuration in XML
This section gives an example of configuration of an IS-IS instance This section gives an example of configuration of an IS-IS instance
on a device. The example is written in XML. on a device. The example is written in XML.
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<name>SLI</name> <name>SLI</name>
<router-id>1.1.1.1</router-id> <router-id>192.0.2.1</router-id>
<control-plane-protocols> <control-plane-protocols>
<control-plane-protocol> <control-plane-protocol>
<name>ISIS-example</name> <name>ISIS-example</name>
<description/> <description/>
<type> <type>
<type xmlns:isis="urn:ietf:params:xml:ns:yang:ietf-isis"> <type xmlns:isis="urn:ietf:params:xml:ns:yang:ietf-isis">
isis:isis isis:isis
</type> </type>
</type> </type>
<isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis"> <isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis">
 End of changes. 99 change blocks. 
740 lines changed or deleted 897 lines changed or added

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