draft-ietf-isis-yang-isis-cfg-01.txt   draft-ietf-isis-yang-isis-cfg-02.txt 
ISIS Working Group S. Litkowski ISIS Working Group S. Litkowski
Internet-Draft Orange Internet-Draft Orange
Intended status: Standards Track D. Yeung Intended status: Standards Track D. Yeung
Expires: April 27, 2015 A. Lindem Expires: September 5, 2015 A. Lindem
Cisco Systems Cisco Systems
J. Zhang J. Zhang
Juniper Networks Juniper Networks
L. Lhotka L. Lhotka
March 04, 2015
October 24, 2014
YANG Data Model for ISIS protocol YANG Data Model for ISIS protocol
draft-ietf-isis-yang-isis-cfg-01 draft-ietf-isis-yang-isis-cfg-02
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 ISIS protocol. and manage ISIS 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", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
skipping to change at page 1, line 43 skipping to change at page 1, line 42
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 http://datatracker.ietf.org/drafts/current/. Drafts is at http://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 April 27, 2015. This Internet-Draft will expire on September 5, 2015.
Copyright Notice Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the Copyright (c) 2015 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
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include 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
1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 2
2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3
2.1. ISIS Configuration . . . . . . . . . . . . . . . . . . . 8 2.1. ISIS Configuration . . . . . . . . . . . . . . . . . . . 5
2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 9 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 7
2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 7
2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 10 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 8
2.5. Operational State . . . . . . . . . . . . . . . . . . . . 11 2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 10
3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 15 2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 10
4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 16 2.7. Segment Routing . . . . . . . . . . . . . . . . . . . . . 10
5. Interaction with Other YANG Modules . . . . . . . . . . . . . 20 2.8. Operational State . . . . . . . . . . . . . . . . . . . . 11
6. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 20 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 18
7. Security Considerations . . . . . . . . . . . . . . . . . . . 82 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 19
8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 83 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 23
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 83 6. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 23
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 83 7. Security Considerations . . . . . . . . . . . . . . . . . . . 110
11. Normative References . . . . . . . . . . . . . . . . . . . . 83 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 111
Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 84 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 112
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 87 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 112
11. Normative References . . . . . . . . . . . . . . . . . . . . 112
Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 112
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 115
1. Introduction 1. Introduction
This document defines a YANG data model for ISIS routing protocol. This document defines a YANG data model for ISIS routing protocol.
The data model covers configuration of an ISIS routing protocol The data model covers configuration of an ISIS routing protocol
instance as well as operational states. instance as well as operational states.
1.1. Tree diagram 1.1. Tree diagram
skipping to change at page 3, line 22 skipping to change at page 3, line 24
denotes a "list" or "leaf-list". denotes a "list" or "leaf-list".
o Parentheses enclose choice and case nodes, and case nodes are also o Parentheses enclose choice and case nodes, and case nodes are also
marked with a colon (":"). marked with a colon (":").
o Ellipsis ("...") stands for contents of subtrees that are not o Ellipsis ("...") stands for contents of subtrees that are not
shown. shown.
2. Design of the Data Model 2. Design of the Data Model
The ISIS YANG module is divided in two main containers "isis" that The ISIS YANG module is divided in two main "isis" containers that
are augmenting the "routing-protocol" lists in ietf-routing module are augmenting the "routing-protocol" lists in ietf-routing module
with specific ISIS parameters. with specific ISIS parameters.
One container contains the writable parameters, while the other One container contains the writable parameters, while the other
contains the operational states. contains the operational states.
The figure below describe the overall structure of the isis YANG The figure below describe the overall structure of the isis YANG
module: module:
module: ietf-isis module: ietf-isis
augment /rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route: augment /rt:routing-state/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
+--ro segment-id? uint32 {segment-routing}?
augment /rt:active-route/rt:output/rt:route: augment /rt:active-route/rt:output/rt:route:
+--ro metric? uint32 +--ro metric? uint32
+--ro tag* uint64 +--ro tag* uint64
+--ro route-type? enumeration +--ro route-type? enumeration
+--ro segment-id? uint32 {segment-routing}?
augment /if:interfaces/if:interface:
+--rw clns-mtu? uint16
augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol: augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol:
+--rw isis +--rw isis
+--rw instance* [routing-instance] +--rw instance* [routing-instance]
+--rw routing-instance rt:routing-instance-ref +--rw routing-instance rt:routing-instance-ref
+--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 mpls-te +--rw mpls
| ... | ...
+--rw reference-bandwidth? uint32 {reference-bandwidth}? +--rw reference-bandwidth? uint32 {reference-bandwidth}?
+--rw lsp-mtu? uint16 +--rw lsp-mtu? uint16
+--rw lsp-lifetime? uint16 +--rw lsp-lifetime? uint16
+--rw lsp-refresh? uint16 {lsp-refresh}? +--rw lsp-refresh? uint16 {lsp-refresh}?
+--rw graceful-restart {graceful-restart}? +--rw graceful-restart {graceful-restart}?
| ... | ...
+--rw node-tag {node-tag}?
| ...
+--rw fast-reroute {fast-reroute}?
| ...
+--rw segment-routing {segment-routing}?
| ...
+--rw authentication* [level] +--rw authentication* [level]
| ... | ...
+--rw metric-type* [level] +--rw metric-type* [level]
| ... | ...
+--rw preference* [level] +--rw preference* [level]
| ... | ...
+--rw default-metric* [level] +--rw default-metric* [level]
| ... | ...
+--rw af* [af] {nlpid-control}? +--rw af* [af] {nlpid-control}?
| ... | ...
+--rw topologies* [name] {multi-topology}? +--rw topologies* [name] {multi-topology}?
| ... | ...
+--rw overload* [level] +--rw overload* [level]
| ... | ...
+--rw overload-max-metric* [level] {overload-max-metric}? +--rw overload-max-metric* [level] {overload-max-metric}?
| ... | ...
+--rw interfaces +--rw interfaces
... ...
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol:
+--ro isis +--ro isis
+--ro system-counters +--ro instance* [routing-instance]
| +--ro level* [level] +--ro routing-instance rt:routing-instance-ref
| ... +--ro fast-reroute {fast-reroute}?
+--ro interface-counters | ...
| +--ro interface* [interface] +--ro topologies* [name]
| ... | ...
+--ro packet-counters +--ro system-counters
| +--ro level* [level] | ...
| ... +--ro interfaces
+--ro interfaces | ...
| +--ro interfaces* [interface] +--ro spf-log
| ... | ...
+--ro adjacencies
| +--ro adjacency*
| ...
+--ro spf-log
| +--ro event* [id]
| ...
+--ro lsp-log
| +--ro event* [id]
| ...
+--ro database
| +--ro level-db* [level]
| ...
+--ro hostnames +--ro lsp-log
+--ro hostname* [system-id] | ...
+--ro database
| ...
+--ro hostnames
... ...
rpcs:
+---x clear-adjacency
| +--ro input
| +--ro routing-instance-name rt:routing-instance-state-ref
| +--ro routing-protocol-instance-name instance-state-ref
| +--ro level? level
| +--ro interface? string
+---x clear-database
+--ro input
+--ro routing-instance-name rt:routing-instance-state-ref
+--ro routing-protocol-instance-name instance-state-ref
+--ro level? level
notifications:
+---n database-overload
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro overload? enumeration
+---n lsp-too-large
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro pdu-size? uint32
| +--ro lsp-id? lsp-id
+---n corrupted-lsp-detected
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro lsp-id? lsp-id
+---n attempt-to-exceed-max-sequence
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro lsp-id? lsp-id
+---n id-len-mismatch
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro pdu-field-len? uint8
| +--ro raw-pdu? binary
+---n max-area-addresses-mismatch
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro max-area-addresses? uint8
| +--ro raw-pdu? binary
+---n own-lsp-purge
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id
+---n sequence-number-skipped
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id
+---n authentication-type-failure
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary
+---n authentication-failure
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary
+---n version-skew
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro protocol-version? uint8
| +--ro raw-pdu? binary
+---n area-mismatch
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary
+---n rejected-adjacency
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary
| +--ro reason? string
+---n protocols-supported-mismatch
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary
| +--ro protocols* uint8
+---n lsp-error-detected
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id
| +--ro raw-pdu? binary
| +--ro error-offset? uint32
| +--ro tlv-type? uint8
+---n adjacency-change
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id
| +--ro neighbor? string
| +--ro neighbor-system-id? system-id
| +--ro level? level
| +--ro state? enumeration
| +--ro reason? string
+---n lsp-received
| +--ro instance-name? string
| +--ro instance-level? level
| +--ro interface-name? string
| +--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 instance-name? string
+--ro instance-level? level
+--ro lsp-id? lsp-id
+--ro sequence? uint32
+--ro send-timestamp? yang:timestamp
2.1. ISIS Configuration 2.1. ISIS Configuration
The ISIS configuration currently supports both VRF-centric and The ISIS configuration currently supports both VRF-centric and
protocol-centric configuration. This may be changed in future. In a protocol-centric configuration. This may be changed in future.
protocol-centric configuration, the isis configuration is applied
within the standard-routing-instance and the instance list helps to In a protocol-centric configuration, the isis configuration is
reference the routing-instance where ISIS is activated. In a VRF- applied within the standard-routing-instance and the instance list
centric configuration, the isis configuration is applied directly helps to reference the routing-instance where ISIS is activated.
within the appropriate routing-instance where ISIS is activated. In
this case, the instance list will contain a single element. In a VRF-centric configuration, the isis configuration is applied
directly within the appropriate routing-instance where ISIS is
activated. In this case, the instance list will contain a single
element.
The ISIS configuration container is divided in: The ISIS configuration container is divided in:
o Global parameters. o Global parameters.
o Per interface configuration (see Section 2.4). o Per interface configuration (see Section 2.4).
It would to up to extension modules to augment this model to support It would to up to extension modules to augment this model to support
vendor specific parameters. vendor specific parameters.
augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol: augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol:
+--rw isis +--rw isis
+--rw instance* [routing-instance] +--rw instance* [routing-instance]
+--rw routing-instance rt:routing-instance-ref +--rw routing-instance rt:routing-instance-ref
+--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 mpls-te +--rw mpls
| +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}?
| +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}?
| +--rw igp-ldp-sync {igp-ldp-sync}?
+--rw reference-bandwidth? uint32 {reference-bandwidth}? +--rw reference-bandwidth? uint32 {reference-bandwidth}?
+--rw lsp-mtu? uint16 +--rw lsp-mtu? uint16
+--rw lsp-lifetime? uint16 +--rw lsp-lifetime? uint16
+--rw lsp-refresh? uint16 {lsp-refresh}? +--rw lsp-refresh? uint16 {lsp-refresh}?
+--rw graceful-restart {graceful-restart}? +--rw graceful-restart {graceful-restart}?
| +--rw enabled? boolean | +--rw enabled? boolean
+--rw node-tag {node-tag}?
| +--rw node-tag* [tag]
| +--rw tag uint32
+--rw fast-reroute {fast-reroute}?
| +--rw lfa {lfa}?
+--rw segment-routing {segment-routing}?
| +--rw enabled? boolean
| +--rw bindings
| +--rw advertise? boolean
| +--rw receive? boolean
+--rw authentication* [level] +--rw authentication* [level]
| +--rw key? string | +--rw (authentication-type)?
| +--rw type? authentication-type | | +--:(key-chain) {key-chain}?
| +--rw level level | | | +--rw key-chain? key-chain:key-chain-ref
| | +--:(password)
| | +--rw key? string
| | +--rw (algorithm)?
| | +--:(hmac-sha1-12)
| | | +--rw hmac-sha1-12? empty
| | +--:(hmac-sha1-20)
| | | +--rw hmac-sha1-20? empty
| | +--:(md5)
| | | +--rw md5? empty
| | +--:(sha-1)
| | | +--rw sha-1? empty
| | +--:(hmac-sha-1)
| | | +--rw hmac-sha-1? empty
| | +--:(hmac-sha-256)
| | | +--rw hmac-sha-256? empty
| | +--:(hmac-sha-384)
| | | +--rw hmac-sha-384? empty
| | +--:(hmac-sha-512)
| | +--rw hmac-sha-512? empty
| +--rw level level
+--rw metric-type* [level] +--rw metric-type* [level]
| +--rw value? enumeration | +--rw value? enumeration
| +--rw level level | +--rw level level
+--rw preference* [level] +--rw preference* [level]
| +--rw (granularity)? | +--rw (granularity)?
| | +--:(detail) | | +--:(detail)
| | | +--rw internal? uint8 | | | +--rw internal? uint8
| | | +--rw external? uint8 | | | +--rw external? uint8
| | +--:(coarse) | | +--:(coarse)
| | +--rw default? uint8 | | +--rw default? uint8
| +--rw level level | +--rw level level
+--rw default-metric* [level] +--rw default-metric* [level]
| +--rw value? wide-metric | +--rw value? wide-metric
| +--rw level level | +--rw level level
+--rw af* [af] {nlpid-control}? +--rw af* [af] {nlpid-control}?
| +--rw af string | +--rw af identityref
| +--rw enabled? boolean | +--rw enabled? boolean
+--rw topologies* [name] {multi-topology}? +--rw topologies* [name] {multi-topology}?
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw name rt:rib-ref | +--rw name rt:rib-ref
| +--rw fast-reroute {fast-reroute}?
| | +--rw lfa {lfa}?
| +--rw segment-routing {segment-routing}?
| | +--rw enabled? boolean
| | +--rw bindings
| | +--rw advertise? boolean
| | +--rw receive? boolean
| +--rw default-metric* [level] | +--rw default-metric* [level]
| +--rw value? wide-metric | | +--rw value? wide-metric
| +--rw level level | | +--rw level level
| +--rw node-tag {node-tag}?
| +--rw node-tag* [tag]
| +--rw tag uint32
+--rw overload* [level] +--rw overload* [level]
| +--rw status? boolean | +--rw status? boolean
| +--rw timeout? uint16 | +--rw timeout? uint16
| +--rw level level | +--rw level level
+--rw overload-max-metric* [level] {overload-max-metric}? +--rw overload-max-metric* [level] {overload-max-metric}?
| +--rw status? boolean | +--rw status? boolean
| +--rw timeout? uint16 | +--rw timeout? uint16
| +--rw level level | +--rw level level
+--rw interfaces +--rw interfaces
+--rw interface* [name] +--rw interface* [name]
... ...
2.2. Multitopology Parameters 2.2. Multitopology Parameters
The topologies list is used to enable support of MT extensions for The "topologies" list is used to enable support of MT extensions for
specific address families. specific address families.
Each topology should refer to an existing RIB. Each topology should refer to an existing RIB.
Some specific parameters could be defined for a specific topology at
global level and also at interface level.
2.3. Per-Level Parameters 2.3. Per-Level Parameters
Some parameters support per level configuration. In this case, the Some parameters support per level configuration. In this case, the
parameter is built as a list, so different values could be used for parameter is built as a list, so different values could be used for
each level. The "level-all" permits to apply a value to both levels. each level. The "level-all" permits to apply a value to both levels.
+--rw priority* [level] +--rw priority* [level]
| +--rw value? uint8 | +--rw value? uint8
| +--rw level level | +--rw level level
Example : Example :
<priority> <priority>
<value>100</value> <value>100</value>
<level>level-1</level> <level>level-1</level>
</priority> </priority>
<priority> <priority>
<value>200</value> <value>200</value>
<level>level-2</level> <level>level-2</level>
</priority> </priority>
2.4. Per-Interface Parameters 2.4. Per-Interface Parameters
The per-interface section of the ISIS instance describes the The per-interface section of the ISIS instance describes the
interface specific parameters. interface specific parameters.
The interface is referenced using a string. It would be up to the The interface is a reference to an interface in the Interface YANG
server device to check if the interface exists or not. Using a model.
string permits to support some specific implementations that use the
"interface all" stanza to apply a configuration to all interfaces.
Each interface has interface-specific parameters that may have a Each interface has interface-specific parameters that may have a
different value per level as described in previous section. An different value per level as described in previous section. An
interface-specific parameter always override an ISIS global parameter interface-specific parameter always override an ISIS global parameter
. .
Some parameters like BFD and hello-padding are defined as containers Some parameters like BFD and hello-padding are defined as containers
to permit easy extension by vendor specific modules. to permit easy extension by vendor specific modules.
+--rw interfaces +--rw interfaces
+--rw interface* [name] +--rw interface* [name]
+--rw name string +--rw name if:interface-ref
+--rw level-type? level +--rw level-type? level
+--rw lsp-pacing-interval? uint16 +--rw lsp-pacing-interval? uint16
+--rw lsp-retransmit-interval? uint16 +--rw lsp-retransmit-interval? uint16
+--rw passive? boolean +--rw passive? boolean
+--rw csnp-interval? uint16 +--rw csnp-interval? uint16
+--rw hello-padding +--rw hello-padding
| +--rw enabled? boolean | +--rw enabled? boolean
+--rw mesh-group-enabled? mesh-group-state +--rw mesh-group-enabled? mesh-group-state
+--rw mesh-group? uint8 +--rw mesh-group? uint8
+--rw interface-type? interface-type +--rw interface-type? interface-type
+--rw enabled? boolean +--rw enabled? boolean
+--rw tag* uint32 {prefix-tag}? +--rw tag* uint32 {prefix-tag}?
+--rw tag64* uint64 {prefix-tag64}? +--rw tag64* uint64 {prefix-tag64}?
+--rw hello-authentication* [level] +--rw hello-authentication* [level]
| +--rw type? authentication-type | +--rw (authentication-type)?
| +--rw key? string | | +--:(key-chain) {key-chain}?
| +--rw level level | | | +--rw key-chain? key-chain:key-chain-ref
+--rw hello-interval* [level] | | +--:(password)
| +--rw value? uint16 | | +--rw key? string
| +--rw level level | | +--rw (algorithm)?
+--rw hello-multiplier* [level] | | ...
| +--rw value? uint16 | +--rw level level
| +--rw level level +--rw hello-interval* [level]
+--rw priority* [level] | +--rw value? uint16
| +--rw value? uint8 | +--rw level level
| +--rw level level +--rw hello-multiplier* [level]
+--rw metric* [level] | +--rw value? uint16
| +--rw value? wide-metric | +--rw level level
| +--rw level level +--rw priority* [level]
+--rw af* [af] | +--rw value? uint8
| +--rw af string | +--rw level level
| +--rw bfd {bfd}? +--rw metric* [level]
| ... | +--rw value? wide-metric
+--rw topologies* [name] | +--rw level level
+--rw name rt:rib-ref +--rw af* [af]
+--rw metric* [level] | +--rw af identityref
... | +--rw segment-routing {segment-routing}?
| | +--rw prefix-sid* [value]
| | +--rw value-type? enumeration
| | +--rw value uint32
| | +--rw node-flag? boolean
| | +--rw last-hop-behavior? enumeration
| +--rw bfd {bfd}?
| +--rw enabled? boolean
+--rw topologies* [name]
| +--rw name rt:rib-ref
| +--rw metric* [level]
| | +--rw value? wide-metric
| | +--rw level level
| +--rw fast-reroute {fast-reroute}?
| | +--rw lfa* [level] {lfa}?
| | +--rw candidate-disabled? boolean
| | +--rw enabled? boolean
| | +--rw remote-lfa {remote-lfa}?
| | | ...
| | +--rw level level
| +--rw segment-routing {segment-routing}?
| +--rw authorize-bundle
| | +--rw enabled? boolean
| | +--rw weight? uint8
| +--rw advertise-protection? enumeration
+--rw fast-reroute {fast-reroute}?
| +--rw lfa* [level] {lfa}?
| +--rw candidate-disabled? boolean
| +--rw enabled? boolean
| +--rw remote-lfa {remote-lfa}?
| | +--rw enabled? boolean
| +--rw level level
+--rw segment-routing {segment-routing}?
| +--rw authorize-bundle
| | +--rw enabled? boolean
| | +--rw weight? uint8
| +--rw advertise-protection? enumeration
+--rw mpls
+--rw igp-ldp-sync {igp-ldp-sync}?
+--rw enabled? boolean
2.5. Operational State 2.5. ISO parameters
Some ISO parameters may be required.
This module augments interface configuration model to support ISO
configuration parameters.
The clns-mtu can be defined under the interface.
2.6. IP FRR
This YANG model supports LFA and remote LFA as IP FRR techniques.
The "fast-reroute" container may be augmented by other models to
support other IPFRR flavors (MRT ...).
The current version of the model supports activation of LFA and
remote LFA at interface only. The global "lfa" container is present
but kept empty to permit augmentation with vendor specific properties
like policies.
Remote LFA is considered as a child of LFA. Remote LFA cannot be
enabled if LFA is not enabled.
The "candidate-disabled" permit to mark an interface to not be used
as a backup.
2.7. Segment Routing
This item is still under discussion and some part of the proposed
configuration may fit in a segment-routing specific model.
2.8. Operational State
"isis" container provides operational states for ISIS. This "isis" container provides operational states for ISIS. This
container is divided in multiple components: container is divided in multiple components:
o system-counters : provides statistical informations about the o system-counters : provides statistical informations about the
global system. global system.
o interface-counters : provides statistical informations for each
interface.
o packet-counters : provides statistical informations for each type
of PDU.
o interface : provides configuration state information for each o interface : provides configuration state information for each
interface. interface.
o adjacencies: provides state information about current ISIS o adjacencies: provides state information about current ISIS
adjacencies. adjacencies.
o spf-log: provides information about SPF events on the node. o spf-log: provides information about SPF events on the node.
o lsp-log: provides information about LSP events on the node o lsp-log: provides information about LSP events on the node
(reception of an LSP or modification of local LSP). (reception of an LSP or modification of local LSP).
o database: provides details on current LSDB. o database: provides details on current LSDB.
o hostnames: provides information about system-id to hostname o hostnames: provides information about system-id to hostname
mappings. mappings.
o fast-reroute: provides information about IP FRR.
o segment-routing: provides information about segment-routing.
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol:
+--ro isis +--ro isis
+--ro system-counters +--ro instance* [routing-instance]
| +--ro level* [level] +--ro routing-instance rt:routing-instance-ref
| +--ro level level-number +--ro fast-reroute {fast-reroute}?
| +--ro corrupted-lsps? uint32 | +--ro protected-routes
| +--ro authentication-type-fails? uint32 | | +--ro af-stats* [af prefix alternate]
| +--ro authentication-fails? uint32 | | +--ro af identityref
| +--ro database-overload? uint32 | | +--ro prefix string
| +--ro own-lsp-purge? uint32 | | +--ro alternate string
| +--ro manual-address-drop-from-area? uint32 | | +--ro alternate-type? enumeration
| +--ro max-sequence? uint32 | | +--ro best? boolean
| +--ro sequence-number-skipped? uint32 | | +--ro non-best-reason? string
| +--ro id-len-mismatch? uint32 | | +--ro protection-available? bits
| +--ro partition-changes? uint32 | | +--ro alternate-metric1? uint32
| +--ro lsp-errors? uint32 | | +--ro alternate-metric2? uint32
| +--ro spf-runs? uint32 | | +--ro alternate-metric3? uint32
+--ro interface-counters | +--ro nonprotected-routes
| +--ro interface* [interface] | | +--ro af-stats* [af prefix]
| +--ro interface string | | +--ro af identityref
| +--ro adjacency-changes? uint32 | | +--ro prefix string
| +--ro adjacency-number? uint32 | +--ro protection-statistics* [frr-protection-method]
| +--ro init-fails? uint32 | +--ro frr-protection-method string
| +--ro adjacency-rejects? uint32 | +--ro af-stats* [af]
| +--ro id-len-mismatch? uint32 | +--ro af identityref
| +--ro max-area-addresses-mismatch? uint32 | +--ro total-routes? uint32
| +--ro authentication-type-fails? uint32 | +--ro unprotected-routes? uint32
| +--ro authentication-fails? uint32 | +--ro protected-routes? uint32
| +--ro lan-dis-changes? uint32 | +--ro linkprotected-routes? uint32
+--ro packet-counters | +--ro nodeprotected-routes? uint32
| +--ro level* [level] +--ro topologies* [name]
| +--ro level level-number | +--ro name rt:rib-ref
| +--ro iih | +--ro fast-route {fast-reroute}?
| | +--ro in? uint32 | +--ro protected-routes
| | +--ro out? uint32 | | +--ro af-stats* [af prefix alternate]
| +--ro ish | | +--ro af identityref
| | +--ro in? uint32 | | +--ro prefix string
| | +--ro out? uint32 | | +--ro alternate string
| +--ro esh | | +--ro alternate-type? enumeration
| | +--ro in? uint32 | | +--ro best? boolean
| | +--ro out? uint32 | | +--ro non-best-reason? string
| +--ro lsp | | +--ro protection-available? bits
| | +--ro in? uint32 | | +--ro alternate-metric1? uint32
| | +--ro out? uint32 | | +--ro alternate-metric2? uint32
| +--ro psnp | | +--ro alternate-metric3? uint32
| | +--ro in? uint32 | +--ro nonprotected-routes
| | +--ro out? uint32 | | +--ro af-stats* [af prefix]
| +--ro csnp | | +--ro af identityref
| | +--ro in? uint32 | | +--ro prefix string
| | +--ro out? uint32 | +--ro protection-statistics* [frr-protection-method]
| +--ro unknown | +--ro frr-protection-method string
| +--ro in? uint32 | +--ro af-stats* [af]
| +--ro out? uint32 | +--ro af identityref
+--ro interfaces | +--ro total-routes? uint32
| +--ro interfaces* [interface] | +--ro unprotected-routes? uint32
| +--ro interface string | +--ro protected-routes? uint32
| +--ro circuit-id? circuit-id | +--ro linkprotected-routes? uint32
| +--ro admin-state? admin-state | +--ro nodeprotected-routes? uint32
| +--ro oper-state? oper-state +--ro system-counters
| +--ro interface-type? interface-type | +--ro level* [level]
| +--ro level? level | +--ro level level-number
| +--ro passive? empty | +--ro corrupted-lsps? uint32
| +--ro three-way-handshake? empty | +--ro authentication-type-fails? uint32
+--ro adjacencies | +--ro authentication-fails? uint32
| +--ro adjacency* | +--ro database-overload? uint32
| +--ro interface? string | +--ro own-lsp-purge? uint32
| +--ro level? level | +--ro manual-address-drop-from-area? uint32
| +--ro neighbor-sysid? system-id | +--ro max-sequence? uint32
| +--ro neighbor-extended-circuit-id? extended-circuit-id | +--ro sequence-number-skipped? uint32
| +--ro neighbor-snpa? snpa | +--ro id-len-mismatch? uint32
| +--ro neighbor-level? level | +--ro partition-changes? uint32
| +--ro hold-timer? uint16 | +--ro lsp-errors? uint32
| +--ro neighbor-priority? uint8 | +--ro spf-runs? uint32
| +--ro lastuptime? yang:timestamp +--ro interfaces
| +--ro state? enumeration | +--ro interfaces* [interface]
+--ro spf-log | +--ro interface string
| +--ro event* [id] | +--ro status
| +--ro id uint32 | | +--ro circuit-id? circuit-id
| +--ro spf-type? enumeration | | +--ro admin-state? admin-state
| +--ro level? level-number | | +--ro interface-type? interface-type
| +--ro spf-delay? uint32 | | +--ro passive? empty
| +--ro schedule-timestamp? yang:timestamp | | +--ro three-way-handshake? boolean
| +--ro start-timestamp? yang:timestamp | | +--ro mesh-group-enabled? mesh-group-state
| +--ro end-timestamp? yang:timestamp | | +--ro mesh-group? uint8
| +--ro trigger-lsp* [lsp] | | +--ro level* [level]
| +--ro lsp lsp-id | | +--ro level level-number
| +--ro sequence? uint32 | | +--ro priority? uint8
+--ro lsp-log | | +--ro hello-multiplier? uint16
| +--ro event* [id] | | +--ro hello-interval? uint16
| +--ro id uint32 | | +--ro dr-hello-interval? uint32
| +--ro level? level-number | | +--ro metric? wide-metric
| +--ro lsp | +--ro fast-reroute {fast-reroute}?
| | +--ro lsp? lsp-id | | +--ro lfa* [level] {lfa}?
| | +--ro sequence? uint32 | | +--ro candidate-disabled? boolean
| +--ro received-timestamp? yang:timestamp | | +--ro enabled? boolean
+--ro database | | +--ro remote-lfa {remote-lfa}?
| +--ro level-db* [level] | | | +--ro enabled? boolean
| +--ro level level-number | | +--ro level level-number
| +--ro lsp* [lsp-id] | +--ro adjacencies
| +--ro lsp-id lsp-id | | +--ro adjacency*
| +--ro checksum? uint16 | | +--ro neighbor-systype? level
| +--ro remaining-lifetime? uint16 | | +--ro neighbor-sysid? system-id
| +--ro sequence? uint32 | | +--ro neighbor-extended-circuit-id? extended-circuit-id
| +--ro attributes? bits | | +--ro neighbor-snpa? snpa
| +--ro is-neighbor | | +--ro usage? level
| | +--ro neighbor* [neighbor-id] | | +--ro hold-timer? uint16
| | ... | | +--ro neighbor-priority? uint8
| +--ro authentication | | +--ro lastuptime? yang:timestamp
| | +--ro authentication-type? authentication-type | | +--ro state? enumeration
| | +--ro authentication-key? string | | +--ro adjacency-sid* [value] {segment-routing}?
| +--ro extended-is-neighbor | | +--ro af? identityref
| | +--ro neighbor* [neighbor-id] | | +--ro value uint32
| | ... | | +--ro weight? uint8
| +--ro ipv4-internal-reachability | | +--ro protection-requested? boolean
| | +--ro prefixes* [ip-prefix] | +--ro topologies* [name]
| | ... | | +--ro name rt:rib-ref
| +--ro protocol-supported* uint8 | | +--ro fast-reroute {fast-reroute}?
| +--ro ipv4-external-reachability | | | +--ro lfa* [level] {lfa}?
| | +--ro prefixes* [ip-prefix] | | | +--ro candidate-disabled? boolean
| | ... | | | +--ro enabled? boolean
| +--ro ipv4-addresses* inet:ipv4-address | | | +--ro remote-lfa {remote-lfa}?
| +--ro ipv4-te-routerid? inet:ipv4-address | | | | ...
| +--ro extended-ipv4-reachability | | | +--ro level level-number
| | +--ro prefixes* [ip-prefix] | | +--ro adjacencies
| | ... | | | +--ro adjacency*
| +--ro dynamic-hostname? string | | | +--ro neighbor-systype? level
| +--ro ipv6-te-routerid? inet:ipv6-address | | | +--ro neighbor-sysid? system-id
| +--ro mt-is-neighbor | | | +--ro neighbor-extended-circuit-id? extended-circuit-id
| | +--ro neighbor* [neighbor-id] | | | +--ro neighbor-snpa? snpa
| | ... | | | +--ro usage? level
| +--ro mt-entries | | | +--ro hold-timer? uint16
| | +--ro topology* [MT-ID] | | | +--ro neighbor-priority? uint8
| | ... | | | +--ro lastuptime? yang:timestamp
| +--ro ipv6-addresses* inet:ipv6-address | | | +--ro state? enumeration
| +--ro mt-extended-ipv4-reachability | | | +--ro adjacency-sid* [value] {segment-routing}?
| | +--ro prefixes* [ip-prefix] | | | ...
| | ... | | +--ro level* [level]
| +--ro mt-ipv6-reachability | | +--ro level level-number
| | +--ro prefixes* [ip-prefix] | | +--ro metric? wide-metric
| | ... | +--ro event-counters
| +--ro ipv6-reachability | | +--ro adjacency-changes? uint32
| | +--ro prefixes* [ip-prefix] | | +--ro adjacency-number? uint32
| | ... | | +--ro init-fails? uint32
| +--ro router-capabilities | | +--ro adjacency-rejects? uint32
| +--ro binary? binary | | +--ro id-len-mismatch? uint32
+--ro hostnames | | +--ro max-area-addresses-mismatch? uint32
+--ro hostname* [system-id] | | +--ro authentication-type-fails? uint32
+--ro system-id system-id | | +--ro authentication-fails? uint32
+--ro hostname? string | | +--ro lan-dis-changes? uint32
| +--ro packet-counters
| +--ro level* [level]
| +--ro level level-number
| +--ro iih
| | +--ro in? uint32
| | +--ro out? uint32
| +--ro ish
| | +--ro in? uint32
| | +--ro out? uint32
| +--ro esh
| | +--ro in? uint32
| | +--ro out? uint32
| +--ro lsp
| | +--ro in? uint32
| | +--ro out? uint32
| +--ro psnp
| | +--ro in? uint32
| | +--ro out? uint32
| +--ro csnp
| | +--ro in? uint32
| | +--ro out? uint32
| +--ro unknown
| +--ro in? uint32
| +--ro out? uint32
+--ro spf-log
| +--ro event* [id]
| +--ro id uint32
| +--ro spf-type? enumeration
| +--ro level? level-number
| +--ro spf-delay? uint32
| +--ro schedule-timestamp? yang:timestamp
| +--ro start-timestamp? yang:timestamp
| +--ro end-timestamp? yang:timestamp
| +--ro trigger-lsp* [lsp]
| +--ro lsp lsp-id
| +--ro sequence? uint32
+--ro lsp-log
| +--ro event* [id]
| +--ro id uint32
| +--ro level? level-number
| +--ro lsp
| | +--ro lsp? lsp-id
| | +--ro sequence? uint32
| +--ro received-timestamp? yang:timestamp
| +--ro change? bits
+--ro database
| +--ro level-db* [level]
| +--ro level level-number
| +--ro lsp* [lsp-id]
| +--ro lsp-id lsp-id
| +--ro checksum? uint16
| +--ro remaining-lifetime? uint16
| +--ro sequence? uint32
| +--ro attributes? bits
| +--ro is-neighbor
| | +--ro neighbor* [neighbor-id]
| | +--ro neighbor-id system-id
| | +--ro i-e? boolean
| | +--ro default-metric? std-metric
| | +--ro delay-metric
| | | ...
| | +--ro expense-metric
| | | ...
| | +--ro error-metric
| | ...
| +--ro authentication
| | +--ro authentication-type? string
| | +--ro authentication-key? string
| +--ro extended-is-neighbor
| | +--ro neighbor* [neighbor-id]
| | +--ro neighbor-id system-id
| | +--ro metric? wide-metric
| | +--ro adjacency-segment-id* [value]
| | ...
| +--ro ipv4-internal-reachability
| | +--ro prefixes* [ip-prefix]
| | +--ro up-down? boolean
| | +--ro i-e? boolean
| | +--ro ip-prefix inet:ipv4-address
| | +--ro prefix-len? uint8
| | +--ro default-metric? std-metric
| | +--ro delay-metric
| | | ...
| | +--ro expense-metric
| | | ...
| | +--ro error-metric
| | ...
| +--ro protocol-supported* uint8
| +--ro ipv4-external-reachability
| | +--ro prefixes* [ip-prefix]
| | +--ro up-down? boolean
| | +--ro i-e? boolean
| | +--ro ip-prefix inet:ipv4-address
| | +--ro prefix-len? uint8
| | +--ro default-metric? std-metric
| | +--ro delay-metric
| | | ...
| | +--ro expense-metric
| | | ...
| | +--ro error-metric
| | ...
| +--ro ipv4-addresses* inet:ipv4-address
| +--ro ipv4-te-routerid? inet:ipv4-address
| +--ro extended-ipv4-reachability
| | +--ro prefixes* [ip-prefix]
| | +--ro up-down? boolean
| | +--ro ip-prefix inet:ipv4-address
| | +--ro prefix-len? uint8
| | +--ro metric? wide-metric
| | +--ro tag* uint32
| | +--ro tag64* uint64
| | +--ro prefix-segment-id* [value]
| | ...
| +--ro dynamic-hostname? string
| +--ro ipv6-te-routerid? inet:ipv6-address
| +--ro mt-is-neighbor
| | +--ro neighbor* [neighbor-id]
| | +--ro MT-ID? uint16
| | +--ro neighbor-id system-id
| | +--ro metric? wide-metric
| | +--ro adjacency-segment-id* [value]
| | ...
| +--ro mt-entries
| | +--ro topology* [MT-ID]
| | +--ro MT-ID uint16
| | +--ro attributes? bits
| +--ro ipv6-addresses* inet:ipv6-address
| +--ro mt-extended-ipv4-reachability
| | +--ro prefixes* [ip-prefix]
| | +--ro MT-ID? uint16
| | +--ro up-down? boolean
| | +--ro ip-prefix inet:ipv4-address
| | +--ro prefix-len? uint8
| | +--ro metric? wide-metric
| | +--ro tag* uint32
| | +--ro tag64* uint64
| | +--ro prefix-segment-id* [value]
| | ...
| +--ro mt-ipv6-reachability
| | +--ro prefixes* [ip-prefix]
| | +--ro MT-ID? uint16
| | +--ro up-down? boolean
| | +--ro ip-prefix inet:ipv6-address
| | +--ro prefix-len? uint8
| | +--ro metric? wide-metric
| | +--ro tag* uint32
| | +--ro tag64* uint64
| | +--ro prefix-segment-id* [value]
| | ...
| +--ro ipv6-reachability
| | +--ro prefixes* [ip-prefix]
| | +--ro up-down? boolean
| | +--ro ip-prefix inet:ipv6-address
| | +--ro prefix-len? uint8
| | +--ro metric? wide-metric
| | +--ro tag* uint32
| | +--ro tag64* uint64
| | +--ro prefix-segment-id* [value]
| | ...
| +--ro segment-routing-bindings* [fec range] {segment-routing}?
| | +--ro fec string
| | +--ro range uint16
| | +--ro flags? bits
| | +--ro weight? uint8
| | +--ro binding*
| | +--ro prefix-sid
| | | ...
| | +--ro ero-metric? uint32
| | +--ro ero
| | | ...
| | +--ro backup-ero
| | | ...
| | +--ro unnumbered-interface-id-ero
| | | ...
| | +--ro backup-unnumbered-interface-id-ero
| | ...
| +--ro router-capabilities*
| +--ro flags? bits
| +--ro node-tag {node-tag}?
| | +--ro node-tag*
| | ...
| +--ro segment-routing*
| | +--ro flags? bits
| | +--ro range? uint32
| | +--ro starting-value? uint32
| +--ro segment-routing-algorithm* uint8
| +--ro binary? binary
+--ro hostnames
+--ro hostname* [system-id]
+--ro system-id system-id
+--ro hostname? string
3. RPC Operations 3. RPC Operations
The "ietf-isis" module defines two RPC operations: The "ietf-isis" module defines two RPC operations:
o clear-isis-database: reset the content of a particular ISIS o clear-isis-database: reset the content of a particular ISIS
database and restart database synchronization with the neighbors. database and restart database synchronization with the neighbors.
o clear-isis-adjacency: restart a particular set of ISIS o clear-isis-adjacency: restart a particular set of ISIS
adjacencies. adjacencies.
skipping to change at page 20, line 25 skipping to change at page 23, line 25
+--ro lsp-id? lsp-id +--ro lsp-id? lsp-id
+--ro sequence? uint32 +--ro sequence? uint32
+--ro send-timestamp? yang:timestamp +--ro send-timestamp? yang:timestamp
5. Interaction with Other YANG Modules 5. Interaction with Other YANG Modules
The "isis" configuration container augments the "/rt:routing/ The "isis" configuration container augments the "/rt:routing/
rt:routing-instance/rt:routing-protocols/routing-protocol" container rt:routing-instance/rt:routing-protocols/routing-protocol" container
of the ietf-routing module by defining ISIS specific parameters. of the ietf-routing module by defining ISIS specific parameters.
The "isis" module augments "/if:interfaces/if:interface" with ISO
specific parameters.
The "isis" operational state container augments the "/rt:routing- The "isis" operational state container augments the "/rt:routing-
state/rt:routing-instance/rt:routing-protocols/routing-protocol" state/rt:routing-instance/rt:routing-protocols/routing-protocol"
container of the ietf-routing module by defining ISIS specific container of the ietf-routing module by defining ISIS specific
operational states. operational states.
Some ISIS specific routes attributes are added to route objects of Some ISIS specific routes attributes are added to route objects of
the ietf-routing module by augmenting "/rt:routing- the ietf-routing module by augmenting "/rt:routing-
state/rt:ribs/rt:rib/rt:routes/rt:route" and "/rt:active- state/rt:ribs/rt:rib/rt:routes/rt:route" and "/rt:active-
route/rt:output/rt:route". route/rt:output/rt:route".
6. YANG Module 6. YANG Module
<CODE BEGINS> file "ietf-isis@2014-10-24.yang" <CODE BEGINS> file "ietf-isis@2015-03-04.yang"
module ietf-isis { module ietf-isis {
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";
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
} }
import ietf-yang-types {
prefix yang;
}
organization import ietf-yang-types {
"IETF ISIS Working Group"; prefix yang;
}
contact import ietf-interfaces {
"WG List: &lt;mailto:isis-wg@ietf.org&gt; prefix "if";
}
Editor: Stephane Litkowski organization
&lt;mailto:stephane.litkowski@orange.com&gt; "IETF ISIS Working Group";
Derek Yeung contact
&lt;mailto:myeung@cisco.com&gt; "WG List: &lt;mailto:isis-wg@ietf.org&gt;
Acee Lindem
&lt;mailto:acee@cisco.com&gt;
Jeffrey Zhang
&lt;mailto:zzhang@juniper.net&gt;
Ladislav Lhotka
&lt;mailto:llhotka@nic.cz&gt;
Yi Yang
&lt;mailto:yiya@cisco.com&gt;
Dean Bogdanovic
&lt;mailto:deanb@juniper.net&gt;
Kiran Agrahara Sreenivasa
&lt;mailto:kkoushik@brocade.com&gt;
Yingzhen Qu
&lt;mailto:yiqu@cisco.com&gt;
"; Editor: Stephane Litkowski
&lt;mailto:stephane.litkowski@orange.com&gt;
description Derek Yeung
"The YANG module defines a generic configuration model for &lt;mailto:myeung@cisco.com&gt;
ISIS common across all of the vendor implementations."; Acee Lindem
&lt;mailto:acee@cisco.com&gt;
Jeffrey Zhang
&lt;mailto:zzhang@juniper.net&gt;
Ladislav Lhotka
&lt;mailto:llhotka@nic.cz&gt;
Yi Yang
&lt;mailto:yiya@cisco.com&gt;
Dean Bogdanovic
&lt;mailto:deanb@juniper.net&gt;
Kiran Agrahara Sreenivasa
&lt;mailto:kkoushik@brocade.com&gt;
Yingzhen Qu
&lt;mailto:yiqu@cisco.com&gt;
revision 2014-10-24 { ";
description
"
* Change hello-padding to container
* Change bfd to container
* Make BFD a feature
* Creates mpls-te container and put router-id
inside
* Remove GR helper disable and timers
";
reference "draft-ietf-isis-yang-isis-cfg-01";
}
revision 2014-10-21 {
description
"
* Interface metric move from af container to interface
container
* Hello-padding on interface moved to hello-padding-disable
with empty type
* three-way-handshake removed
* route preference changed to a choice
* csnp-authentication/psnp-authentication merged
to authentication container
* lsp-gen-interval-exp-delay removed
* Added overload-max-metric feature
* overload-max-metric is in a separate container
";
reference "";
}
revision 2014-10-07 { description
description "The YANG module defines a generic configuration model for
" ISIS common across all of the vendor implementations.";
* Removed spf parameters (should be part of
vendor specific extensions.
* Removed hello parameters at global level.
* Interface configuration uses a string rather
than a reference. This permits to map to some
vendor specific configuration.
";
reference "draft-ietf-isis-yang-isis-00";
}
revision 2014-09-26 {
description
"
* Add BFD support
* remove max-elements to max-area-addresses
";
reference "";
}
revision 2014-09-11 {
description
"
* Add level parameter to ispf and spf delay
* Add LSP generation as a feature
* Make lsp-refresh a feature
* Change parameter container to list
";
reference "";
}
revision 2014-09-05 {
description
" Rewrite of the global hierarchy.";
reference "";
}
revision 2014-08-06 {
description
"
* isis-state renamed to isis.
* Add GR support
* Add meshgroup support
* Add CLNS support
* Add 64bits tags
* Add notifications to be aligned with MIB4444
* Add packet-counters, interface-counters, system-counters
states
* Add 3-way handshake support
* Rename isis-adjacency-updown to adjacency-change
* Add notification for LSP reception
* Use feature for reference BW
* Add lsp-retransmit-interval on interfaces
* Rename lsp-interval to lsp-pacing-interval
* Add ispf support as feature
* Add spf delay support as feature (2step & exp backoff)
* Add maximum-area-addresses
* Add default-metric
";
reference "RFC XXXX: YANG Data Model for ISIS Protocol";
}
revision 2014-06-25 {
description "
* isis-cfg renamed to isis.
* Add precisions on authentication-keys in description
";
reference "draft-litkowski-isis-yang-isis-01";
}
revision 2014-06-20 { revision 2015-03-03 {
description " description
* isis-op renamed to isis-state. "
* Multiple instances under ISIS are removed. * Defining hierarchy for operational states
* interface-cfg grouping removed and content * Adding CLNS MTU
is directly included in container isis.
* TLVxx renamed with human-readable name in isis-database.
TLV reference are putted in description.
* Reference to core routing module were fixed.
* Namespace fixed.
* Add simple-iso-address type.
* area-id and system-id in ISIS container are merged to ";
nsap-address. reference "draft-ietf-isis-yang-isis-02";
* Add isis-system-id type. }
* Add isis-lsp-id type. revision 2015-02-20 {
* Add remaining-lifetime leaf in isis-database. description
* Add TLV2 (is-neighbor) in isis-database. "
* Renamed some container name for consistency * Removing igp-ldp-sync timer in IS-IS
reason ('isis-' prefixed).
* Add new identities isis-cfg and isis-state.
* Add descriptions.
* Add notification isis-adjacency-updown.
* Add RPC clear-isis-adjacency and clear-isis-database.
";
reference "draft-litkowski-isis-yang-isis-00";
}
revision 2014-06-11 { ";
description "Initial revision."; reference "";
reference "draft-litkowski-netmod-isis-cfg-00"; }
} revision 2014-12-15 {
identity isis { description
base rt:routing-protocol; "
description "Identity for the ISIS routing protocol."; * Adding IPFRR
} * Adding igp-ldp sync
* Adding segment routing
* Adding instance reference to operational states.
* Move AF type from string to identity
* Updated router-capability in LSDB description.
* packet counters moved to interface-packet-counters.
* Added modification information in lsp-log
";
reference "";
}
revision 2014-10-24 {
description
"
* Change hello-padding to container
* Change bfd to container
* Make BFD a feature
* Creates mpls-te container and put router-id
inside
* Remove GR helper disable and timers
";
reference "draft-ietf-isis-yang-isis-cfg-01";
}
revision 2014-10-21 {
description
"
* Interface metric move from af container to interface
container
* Hello-padding on interface moved to hello-padding-disable
with empty type
* three-way-handshake removed
* route preference changed to a choice
* csnp-authentication/psnp-authentication merged
to authentication container
* lsp-gen-interval-exp-delay removed
* Added overload-max-metric feature
* overload-max-metric is in a separate container
";
reference "";
}
identity isis-adjacency-change { revision 2014-10-07 {
description "Identity for the ISIS routing protocol description
adjacency state."; "
} * Removed spf parameters (should be part of
vendor specific extensions.
* Removed hello parameters at global level.
* Interface configuration uses a string rather
than a reference. This permits to map to some
vendor specific configuration.
";
reference "draft-ietf-isis-yang-isis-00";
}
revision 2014-09-26 {
description
"
* Add BFD support
* remove max-elements to max-area-addresses
";
reference "";
}
revision 2014-09-11 {
description
"
* Add level parameter to ispf and spf delay
* Add LSP generation as a feature
* Make lsp-refresh a feature
* Change parameter container to list
";
reference "";
}
revision 2014-09-05 {
description
" Rewrite of the global hierarchy.";
reference "";
}
revision 2014-08-06 {
description
"
* isis-state renamed to isis.
* Add GR support
* Add meshgroup support
* Add CLNS support
* Add 64bits tags
* Add notifications to be aligned with MIB4444
* Add packet-counters, interface-counters, system-counters
states
* Add 3-way handshake support
* Rename isis-adjacency-updown to adjacency-change
* Add notification for LSP reception
* Use feature for reference BW
* Add lsp-retransmit-interval on interfaces
* Rename lsp-interval to lsp-pacing-interval
* Add ispf support as feature
* Add spf delay support as feature (2step & exp backoff)
* Add maximum-area-addresses
* Add default-metric
";
reference "RFC XXXX: YANG Data Model for ISIS Protocol";
}
revision 2014-06-25 {
description "
* isis-cfg renamed to isis.
* Add precisions on authentication-keys in description
";
reference "draft-litkowski-isis-yang-isis-01";
}
identity clear-isis-database { revision 2014-06-20 {
description "Identity for the ISIS routing protocol description "
database reset action."; * isis-op renamed to isis-state.
} * Multiple instances under ISIS are removed.
* interface-cfg grouping removed and content
is directly included in container isis.
* TLVxx renamed with human-readable name in isis-database.
TLV reference are putted in description.
* Reference to core routing module were fixed.
* Namespace fixed.
* Add simple-iso-address type.
* area-id and system-id in ISIS container are merged to
nsap-address.
* Add isis-system-id type.
* Add isis-lsp-id type.
* Add remaining-lifetime leaf in isis-database.
* Add TLV2 (is-neighbor) in isis-database.
* Renamed some container name for consistency
reason ('isis-' prefixed).
* Add new identities isis-cfg and isis-state.
* Add descriptions.
* Add notification isis-adjacency-updown.
identity clear-isis-adjacency { * Add RPC clear-isis-adjacency and clear-isis-database.
description "Identity for the ISIS routing protocol ";
adjacency reset action."; reference "draft-litkowski-isis-yang-isis-00";
} }
feature bfd { revision 2014-06-11 {
description description "Initial revision.";
"Support of BFD."; reference "draft-litkowski-netmod-isis-cfg-00";
} }
feature overload-max-metric { identity isis {
description base rt:routing-protocol;
"Support of overload by setting description "Identity for the ISIS routing protocol.";
all links to max metric."; }
} identity isis-adjacency-change {
feature prefix-tag { description "Identity for the ISIS routing protocol
description adjacency state.";
"Add 32bit tag to prefixes"; }
}
feature prefix-tag64 {
description
"Add 64bit tag to prefixes";
}
feature reference-bandwidth {
description
"Use a reference bandwidth to compute metric.";
}
feature ipv4-router-id {
description
"Support of IPv4 router ID configuration under ISIS.";
}
feature ipv6-router-id { identity clear-isis-database {
description description "Identity for the ISIS routing protocol
"Support of IPv6 router ID configuration under ISIS."; database reset action.";
} }
feature multi-topology { identity clear-isis-adjacency {
description description "Identity for the ISIS routing protocol
"Multitopology routing support."; adjacency reset action.";
} }
feature nlpid-control {
description
"This feature controls the advertisement
of support NLPID within ISIS configuration.";
}
feature graceful-restart {
description
"Graceful restart support as per RFC5306.";
}
feature lsp-refresh { /* Feature definitions */
description
"Configuration of LSP refresh interval.";
}
feature maximum-area-addresses { feature segment-routing {
description description
"Support of maximum-area-addresses config."; "Support of segment-routing.";
} }
typedef instance-state-ref { feature node-tag {
type leafref { description
path "/rt:routing-state/rt:routing-instance/" "Support of node tag.";
+"rt:routing-protocols/rt:routing-protocol/rt:name"; }
} feature igp-ldp-sync {
description description
"This type is used for leaves that reference state data of "Support of RFC5443.";
an ISIS protocol instance."; }
} feature fast-reroute {
description
"Support of IPFRR.";
}
feature lfa {
description
"Support of Loop Free Alternates.";
}
feature remote-lfa {
description
"Support of remote Loop Free Alternates.";
}
typedef admin-state { feature bfd {
type enumeration { description
enum "up" { "Support of BFD.";
description }
"Up state"; feature overload-max-metric {
} description
enum "down" { "Support of overload by setting
description all links to max metric.";
"Down state"; }
} feature prefix-tag {
} description
description "Add 32bit tag to prefixes";
"Administrative state of a component."; }
} feature prefix-tag64 {
typedef oper-state { description
type enumeration { "Add 64bit tag to prefixes";
enum "up" { }
description feature reference-bandwidth {
"Up state"; description
} "Use a reference bandwidth to compute metric.";
enum "down" { }
description feature ipv4-router-id {
"Down state"; description
} "Support of IPv4 router ID configuration under ISIS.";
} }
description
"Operational state of a component.";
}
typedef circuit-id {
type uint8;
description
"This type defines the circuit ID
associated with an interface.";
}
typedef extended-circuit-id { feature ipv6-router-id {
type uint32; description
description "Support of IPv6 router ID configuration under ISIS.";
"This type defines the extended circuit ID }
associated with an interface.";
}
typedef interface-type { feature multi-topology {
type enumeration { description
enum broadcast { "Multitopology routing support.";
description "Broadcast interface type. }
Would result in DIS election."; feature nlpid-control {
} description
enum point-to-point { "This feature controls the advertisement
description of support NLPID within ISIS configuration.";
"Point to point interface type.";
}
}
description
"This type defines the type of adjacency
to be established on the interface.
This is affecting the type of hello
message that would be used.";
} }
typedef authentication-type { feature graceful-restart {
type enumeration { description
enum none { "Graceful restart support as per RFC5306.";
description "No authentication used."; }
}
enum plaintext {
description "Plain text password used.";
}
enum message-digest {
description "MD5 digest used.";
}
}
description
"This type defines available authentication types.";
}
typedef level { feature lsp-refresh {
type enumeration { description
enum "level-1" { "Configuration of LSP refresh interval.";
description }
"This enum describes L1 only capability.";
}
enum "level-2" {
description
"This enum describes L2 only capability.";
}
enum "level-all" {
description
"This enum describes both levels capability.";
}
}
default "level-all";
description
"This type defines ISIS level of an object.";
} feature maximum-area-addresses {
description
"Support of maximum-area-addresses config.";
}
typedef level-number { /* Type definitions */
type uint8 {
range "1 .. 2";
}
description
"This type defines a current ISIS level.";
}
typedef lsp-id { typedef instance-state-ref {
type string { type leafref {
pattern path "/rt:routing-state/rt:routing-instance/"
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' +"rt:routing-protocols/rt:routing-protocol/rt:name";
+'{4}\.[0-9][0-9]-[0-9][0-9]'; }
} description
description "This type is used for leaves that reference state data of
"This type defines ISIS LSP ID using pattern, an ISIS protocol instance.";
system id looks like : 0143.0438.AeF0.02-01"; }
}
typedef area-address { typedef admin-state {
type string { type enumeration {
pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; enum "up" {
} description
description "Up state";
"This type defines the area address."; }
} enum "down" {
description
"Down state";
}
}
description
"Administrative state of a component.";
}
typedef oper-state {
type enumeration {
enum "up" {
description
"Up state";
}
enum "down" {
description
"Down state";
}
}
description
"Operational state of a component.";
}
typedef circuit-id {
type uint8;
description
"This type defines the circuit ID
associated with an interface.";
}
typedef snpa { typedef extended-circuit-id {
type string { type uint32;
length "0 .. 20"; description
} "This type defines the extended circuit ID
description associated with an interface.";
"This type defines Subnetwork Point of Attachement format."; }
} typedef interface-type {
typedef system-id { type enumeration {
type string { enum broadcast {
pattern description "Broadcast interface type.
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.00'; Would result in DIS election.";
} }
description enum point-to-point {
"This type defines ISIS system id using pattern, description
system id looks like : 0143.0438.AeF0.00"; "Point to point interface type.";
} }
}
description
"This type defines the type of adjacency
to be established on the interface.
This is affecting the type of hello
message that would be used.";
typedef wide-metric { }
type uint32 { typedef authentication-type {
range "0 .. 16777215"; type enumeration {
} enum none {
description description "No authentication used.";
"This type defines wide style format }
of ISIS metric."; enum plaintext {
} description "Plain text password used.";
}
enum message-digest {
description "MD5 digest used.";
}
}
description
"This type defines available authentication types.";
}
typedef std-metric { typedef level {
type uint8 { type enumeration {
range "0 .. 63"; enum "level-1" {
} description
description "This enum describes L1 only capability.";
"This type defines old style format }
of ISIS metric."; enum "level-2" {
} description
"This enum describes L2 only capability.";
}
enum "level-all" {
description
"This enum describes both levels capability.";
}
}
default "level-all";
description
"This type defines ISIS level of an object.";
typedef mesh-group-state { }
type enumeration {
enum "meshInactive" {
description
"Interface is not part of a mesh group.";
}
enum "meshSet" {
description
"Interface is part of a mesh group.";
}
enum "meshBlocked" {
description
"LSPs must not be flooded over that interface.";
}
}
description
"This type describes meshgroup state of an interface";
}
grouping notification-instance-hdr { typedef level-number {
description type uint8 {
"This group describes common instance specific range "1 .. 2";
data for notifications."; }
leaf instance-name { description
type string; "This type defines a current ISIS level.";
description }
"Describes the name of the ISIS instance.";
}
leaf instance-level {
type level;
description
"Describes the ISIS level of the instance.";
}
}
grouping notification-interface-hdr { typedef lsp-id {
description type string {
"This group describes common interface specific pattern
data for notifications."; '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
leaf interface-name { +'{4}\.[0-9][0-9]-[0-9][0-9]';
type string; }
description description
"Describes the name of the ISIS interface."; "This type defines ISIS LSP ID using pattern,
} system id looks like : 0143.0438.AeF0.02-01";
leaf interface-level { }
type level;
description
"Describes the ISIS level of the interface.";
}
leaf extended-circuit-id {
type extended-circuit-id;
description
"Describes the extended circuit-id of the interface.";
}
}
grouping route-content { typedef area-address {
description type string {
"This group add isis-specific route properties."; pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}';
leaf metric { }
type uint32; description
description "This type defines the area address.";
"This leaf describes ISIS metric of a route."; }
}
leaf-list tag {
type uint64;
description
"This leaf describes list of tags associated
with the route. The leaf describes both
32bits and 64bits tags.";
}
leaf route-type {
type enumeration {
enum l2-up-internal {
description "Level 2 internal route
and not leaked to a lower level";
}
enum l1-up-internal {
description "Level 1 internal route
and not leaked to a lower level";
}
enum l2-up-external {
description "Level 2 external route
and not leaked to a lower level";
}
enum l1-up-external {
description "Level 1 external route
and not leaked to a lower level";
}
enum l2-down-internal {
description "Level 2 internal route
and leaked to a lower level";
}
enum l1-down-internal {
description "Level 1 internal route
and leaked to a lower level";
}
enum l2-down-external {
description "Level 2 external route
and leaked to a lower level";
}
enum l1-down-external {
description "Level 1 external route
and leaked to a lower level";
}
}
description
"This leaf describes the type of ISIS route.";
}
}
augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" { typedef snpa {
when "rt:source-protocol = 'isis:isis'" { type string {
description "ISIS-specific route attributes."; length "0 .. 20";
} }
uses route-content; description
description "This type defines Subnetwork Point of Attachement format.";
"This augments route object in RIB with ISIS-specific
attributes.";
}
augment "/rt:active-route/rt:output/rt:route" }
{
uses route-content;
description "ISIS-specific route attributes.";
}
grouping prefix-ipv4-std { typedef system-id {
description type string {
"This group defines attributes of an pattern
IPv4 standard prefix."; '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.00';
leaf up-down { }
type boolean; description
description "This type defines ISIS system id using pattern,
"This leaf expresses the value of up/down bit."; system id looks like : 0143.0438.AeF0.00";
} }
leaf i-e {
type boolean;
description
"This leaf expresses the value of I/E bit.";
}
leaf ip-prefix {
type inet:ipv4-address;
description
"This leaf describes the IPv4 prefix";
}
leaf prefix-len {
type uint8;
description
"This leaf describes the IPv4 prefix len in bits";
}
leaf default-metric {
type std-metric;
description
"This leaf describes the ISIS default metric value";
}
container delay-metric {
leaf metric {
type std-metric;
description
"This leaf describes the ISIS delay metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description typedef wide-metric {
"This container defines the ISIS delay metric."; type uint32 {
} range "0 .. 16777215";
container expense-metric { }
leaf metric { description
type std-metric; "This type defines wide style format
description of ISIS metric.";
"This leaf describes the ISIS expense metric value"; }
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description
"This container defines the ISIS expense metric.";
}
container error-metric {
leaf metric {
type std-metric;
description
"This leaf describes the ISIS error metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description typedef std-metric {
"This container defines the ISIS error metric."; type uint8 {
} range "0 .. 63";
} }
description
"This type defines old style format
of ISIS metric.";
}
typedef mesh-group-state {
type enumeration {
enum "meshInactive" {
description
"Interface is not part of a mesh group.";
}
enum "meshSet" {
description
"Interface is part of a mesh group.";
}
enum "meshBlocked" {
description
"LSPs must not be flooded over that interface.";
}
}
description
"This type describes meshgroup state of an interface";
}
grouping prefix-ipv4-extended { /* Grouping definitions */
description
"This group defines attributes of an
IPv4 extended prefix.";
leaf up-down {
type boolean;
description
"This leaf expresses the value of up/down bit.";
}
leaf ip-prefix {
type inet:ipv4-address;
description
"This leaf describes the IPv4 prefix";
}
leaf prefix-len {
type uint8;
description
"This leaf describes the IPv4 prefix len in bits";
}
leaf metric { grouping notification-instance-hdr {
type wide-metric; description
description "This group describes common instance specific
"This leaf describes the ISIS metric value"; data for notifications.";
} leaf instance-name {
leaf-list tag { type string;
type uint32; description
description "Describes the name of the ISIS instance.";
"This leaf describes a list of tags associated with }
the prefix."; leaf instance-level {
} type level;
leaf-list tag64 { description
type uint64; "Describes the ISIS level of the instance.";
description }
"This leaf describes a list of 64-bit tags associated with }
the prefix.";
}
}
grouping prefix-ipv6-extended { grouping notification-interface-hdr {
description description
"This group defines attributes of an "This group describes common interface specific
IPv6 prefix."; data for notifications.";
leaf up-down { leaf interface-name {
type boolean; type string;
description description
"This leaf expresses the value of up/down bit."; "Describes the name of the ISIS interface.";
} }
leaf ip-prefix { leaf interface-level {
type inet:ipv6-address; type level;
description description
"This leaf describes the IPv6 prefix"; "Describes the ISIS level of the interface.";
} }
leaf prefix-len { leaf extended-circuit-id {
type uint8; type extended-circuit-id;
description description
"This leaf describes the IPv4 prefix len in bits"; "Describes the extended circuit-id of the interface.";
} }
}
leaf metric { grouping route-content {
type wide-metric; description
description "This group add isis-specific route properties.";
"This leaf describes the ISIS metric value"; leaf metric {
} type uint32;
leaf-list tag { description
type uint32; "This leaf describes ISIS metric of a route.";
description }
"This leaf describes a list of tags associated with leaf-list tag {
the prefix."; type uint64;
} description
leaf-list tag64 { "This leaf describes list of tags associated
type uint64; with the route. The leaf describes both
description 32bits and 64bits tags.";
"This leaf describes a list of 64-bit tags associated with }
the prefix."; leaf route-type {
} type enumeration {
} enum l2-up-internal {
description "Level 2 internal route
and not leaked to a lower level";
}
enum l1-up-internal {
description "Level 1 internal route
and not leaked to a lower level";
}
enum l2-up-external {
description "Level 2 external route
and not leaked to a lower level";
}
enum l1-up-external {
description "Level 1 external route
and not leaked to a lower level";
}
enum l2-down-internal {
description "Level 2 internal route
and leaked to a lower level";
grouping neighbor-extended { }
description enum l1-down-internal {
"This group defines attributes of an description "Level 1 internal route
ISIS extended neighbor."; and leaked to a lower level";
leaf neighbor-id { }
type system-id; enum l2-down-external {
description description "Level 2 external route
"This leaf describes the system-id of the neighbor."; and leaked to a lower level";
} }
leaf metric { enum l1-down-external {
type wide-metric; description "Level 1 external route
description and leaked to a lower level";
"This leaf describes the ISIS metric value"; }
} }
} description
"This leaf describes the type of ISIS route.";
}
leaf segment-id {
if-feature segment-routing;
type uint32;
description
"Segment ID or MPLS label value
used to reach the prefix.";
}
}
grouping neighbor { grouping fast-reroute-global-cfg {
description description
"This group defines attributes of an "This group defines global
ISIS standard neighbor."; configuration of IPFRR.";
leaf neighbor-id { container fast-reroute {
type system-id; if-feature fast-reroute;
description description
"This leaf describes the system-id of the neighbor."; "This container may be
augmented with global parameters
for IPFRR.";
container lfa {
if-feature lfa;
description
"This container may be
augmented with global parameters
for LFA.
Creating the container has no effect on
LFA activation.";
}
}
}
grouping fast-reroute-if-cfg {
description
"This group defines interface
configuration of IPFRR.";
container fast-reroute {
if-feature fast-reroute;
} list lfa {
leaf i-e { if-feature lfa;
type boolean;
description
"This leaf expresses the value of I/E bit.";
}
leaf default-metric {
type std-metric;
description
"This leaf describes the ISIS default metric value";
}
container delay-metric {
leaf metric {
type std-metric;
description
"This leaf describes the ISIS delay metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description
"This container defines the ISIS delay metric.";
}
container expense-metric {
leaf metric {
type std-metric;
description
"This leaf describes the ISIS delay expense value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description
"This container defines the ISIS expense metric.";
}
container error-metric {
leaf metric {
type std-metric;
description
"This leaf describes the ISIS error metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description
"This container defines the ISIS error metric.";
}
}
grouping database { key level;
description
"This group defines attributes of an
ISIS database (Link State DB).";
leaf lsp-id {
type lsp-id;
description
"This leaf describes the LSP ID of the LSP.";
}
leaf checksum {
type uint16;
description
"This leaf describes the checksum of the LSP.";
}
leaf remaining-lifetime {
type uint16;
units "seconds";
description
"This leaf describes the remaining lifetime
in seconds before the LSP expiration.";
}
leaf sequence {
type uint32;
description
"This leaf describes the sequence number of the LSP.";
}
leaf attributes {
type bits {
bit PARTITIONNED {
description
"If set, the originator supports partition
repair.";
}
bit ATTACHED-ERROR {
description
"If set, the originator is attached to
another area using the referred metric.";
}
bit ATTACHED-EXPENSE {
description
"If set, the originator is attached to
another area using the referred metric.";
}
bit ATTACHED-DELAY {
description
"If set, the originator is attached to
another area using the referred metric.";
}
bit ATTACHED-DEFAULT {
description
"If set, the originator is attached to
another area using the referred metric.";
}
bit OVERLOAD {
description
"If set, the originator is overloaded,
and must be avoided in path calculation.";
}
}
description
"This leaf describes attributes of the LSP.";
}
container is-neighbor { leaf candidate-disabled {
list neighbor { type boolean;
key "neighbor-id"; description
uses neighbor; "Prevent the interface to be used as backup.";
description }
"List of neighbors."; leaf enabled {
} type boolean;
description description
"This leaf describes list of ISIS neighbors. "Activates LFA.
ISIS reference is TLV 2."; This model assumes activation
} of per-prefix LFA.";
}
container authentication { container remote-lfa {
leaf authentication-type { if-feature remote-lfa;
type authentication-type; leaf enabled {
description type boolean;
"This leaf describes the authentication type description
to be used."; "Activates rLFA.";
} }
leaf authentication-key { description
type string; "remote LFA configuration.";
description }
"This leaf describes the authentication key leaf level {
to be used. For security reason, the type level;
authentication key MUST NOT be presented description
in plaintext format. Authors recommends "Level applicability.";
to use MD5 hash to present the authentication-key."; }
} description
description "This container describes authentication "LFA configuration.";
information of the node. ISIS reference is TLV 10."; }
} description
"Fast-reroute configuration.";
}
}
grouping segment-routing-global-cfg {
description
"This grouping defines SR global config";
container segment-routing {
if-feature segment-routing;
leaf enabled {
type boolean;
default false;
description
"Enables segment-routing
protocol extensions.";
}
container bindings {
leaf advertise {
type boolean;
default true;
description
"Authorize the advertise
of local mappings in binding TLV.";
}
leaf receive {
type boolean;
default true;
description
"Authorize the reception and usage
of binding TLV.";
}
description
"Control of binding advertisement
and reception.";
}
container extended-is-neighbor { description
list neighbor { "segment routing global config.";
key "neighbor-id"; }
uses neighbor-extended; }
description
"List of neighbors.";
}
description
"This container describes list of ISIS extended
neighbors.
ISIS reference is TLV 22.";
}
container ipv4-internal-reachability { grouping segment-routing-if-cfg {
list prefixes { description
key "ip-prefix"; "This grouping defines SR interface config";
uses prefix-ipv4-std; container segment-routing {
description if-feature segment-routing;
"List of prefixes."; container authorize-bundle {
} leaf enabled {
description type boolean;
"This container describes list of IPv4 internal description
reachability information. "Enable/disable S flag.";
ISIS reference is TLV 128."; }
} leaf weight {
type uint8;
description
"The value represents the
weight of the Adj-SID
for the purpose of load balancing.";
}
description
"Control advertisement of S flag.
Enable to advertise a common Adj-SID
for parallel links.";
}
leaf advertise-protection {
type enumeration {
enum "single" {
description
"A single Adj-SID is associated
with the adjacency and reflects
the protection configuration.";
}
enum "dual" {
description
"Two Adj-SIDs will be associated
with the adjacency if interface
is protected. In this case
one will be enforced with
backup flag set, the other
will be enforced to backup flag unset.
In case, protection is not configured,
a single Adj-SID will be advertised
with backup flag unset.";
}
}
description
"If set, the Adj-SID refers to an
adjacency being protected.";
}
description
"Configuration of segment-routing
adjacency SID properties.";
}
}
leaf-list protocol-supported { grouping prefix-segment-id {
type uint8; description
description "This group defines segment routing extensions
"This leaf describes the list of for prefixes.";
supported protocols. leaf flags {
ISIS reference is TLV 129."; type bits {
} bit readvertisment {
position 7;
description
"If set, then the prefix to
which this Prefix-SID is attached,
has been propagated by the
router either from another level
or from redistribution.";
}
bit node {
position 6;
description
"If set, then the Prefix-SID refers to
the router identified by the prefix.";
}
bit php {
position 5;
description
"If set, then the penultimate hop MUST NOT
pop the Prefix-SID before delivering the packet
to the node
that advertised the Prefix-SID.";
}
bit explicit-null {
position 4;
description
"If set, any upstream neighbor of
the Prefix-SID originator MUST replace
the Prefix-SID with a
Prefix-SID having an
Explicit-NULL value (0 for IPv4 and 2 for
IPv6) before forwarding the packet.";
}
bit value {
position 3;
description
"If set, then the Prefix-SID carries a
value (instead of an index).
By default the flag is UNSET.";
container ipv4-external-reachability { }
list prefixes { bit local {
key "ip-prefix"; position 2;
uses prefix-ipv4-std; description
description "If set, then the value/index carried by
"List of prefixes."; the Prefix-SID has local significance.
} By default the flag is UNSET.";
description }
"This container describes list of IPv4 external }
reachability information. description
ISIS reference is TLV 130."; "Describes flags associated with the
} segment ID.";
}
leaf-list ipv4-addresses { leaf algorithm {
type inet:ipv4-address; type uint8;
description description
"This leaf describes the IPv4 addresses of the node. "Algorithm to be used for path computation.";
ISIS reference is TLV 132."; }
} leaf value {
type uint32;
description
"Value of the prefix-SID.";
}
leaf ipv4-te-routerid { }
type inet:ipv4-address; grouping adjacency-segment-id {
description description
"This leaf describes the IPv4 Traffic Engineering "This group defines segment routing extensions
router ID of the node. for adjacencies.";
ISIS reference is TLV 134.";
}
container extended-ipv4-reachability { leaf flags {
type bits {
bit address-family {
position 7;
description
"If unset, then the Adj-SID refers
to an adjacency with outgoing IPv4 encapsulation.
If set then the Adj-SID refers to an adjacency
with outgoing IPv6 encapsulation.";
}
bit backup {
position 6;
description
"If set, the Adj-SID refers to an
adjacency being protected
(e.g.: using IPFRR or MPLS-FRR)";
}
bit value {
position 5;
description
"If set, then the SID carries a
value (instead of an index).
By default the flag is SET.";
list prefixes { }
key "ip-prefix"; bit local {
uses prefix-ipv4-extended; position 4;
description description
"List of prefixes."; "If set, then the value/index carried by
} the SID has local significance.
description By default the flag is SET.";
"This container describes list of IPv4 extended }
reachability information. bit set {
ISIS reference is TLV 135."; position 3;
} description
"When set, the S-Flag indicates that the
Adj-SID refers to a set of adjacencies";
}
}
leaf dynamic-hostname { description
type string; "Describes flags associated with the
segment ID.";
}
leaf weight {
type uint8;
description
"The value represents the weight of the Adj-SID
for the purpose of load balancing.";
}
leaf neighbor-id {
type system-id;
description
"Describes the system ID of the neighbor
associated with the SID value. This is only
used on LAN adjacencies.";
}
leaf value {
type uint32;
description
"Value of the Adj-SID.";
}
description }
"This leaf describes the name of the node.
ISIS reference is TLV 137.";
}
leaf ipv6-te-routerid { grouping prefix-ipv4-std {
type inet:ipv6-address; description
description "This group defines attributes of an
"This leaf describes the IPv6 Traffic Engineering IPv4 standard prefix.";
router ID of the node. leaf up-down {
ISIS reference is TLV 140."; type boolean;
} description
"This leaf expresses the value of up/down bit.";
}
leaf i-e {
type boolean;
description
"This leaf expresses the value of I/E bit.";
}
leaf ip-prefix {
type inet:ipv4-address;
description
"This leaf describes the IPv4 prefix";
}
leaf prefix-len {
type uint8;
description
"This leaf describes the IPv4 prefix len in bits";
}
leaf default-metric {
type std-metric;
description
"This leaf describes the ISIS default metric value";
}
container delay-metric {
leaf metric {
type std-metric;
description
"This leaf describes the ISIS delay metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
container mt-is-neighbor { description
list neighbor { "This container defines the ISIS delay metric.";
key "neighbor-id"; }
leaf MT-ID { container expense-metric {
type uint16 { leaf metric {
range "0 .. 4095"; type std-metric;
} description
description "This leaf describes the ISIS expense metric value";
"This leaf defines the identifier }
of a topology."; leaf supported {
} type boolean;
uses neighbor-extended; default "false";
description description
"List of neighbors."; "This leaf describes if the metric is supported.";
} }
description description
"This container describes list of ISIS multi-topology "This container defines the ISIS expense metric.";
neighbors. }
ISIS reference is TLV 223."; container error-metric {
} leaf metric {
type std-metric;
description
"This leaf describes the ISIS error metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
container mt-entries { description
list topology { "This container defines the ISIS error metric.";
key "MT-ID"; }
}
leaf MT-ID { grouping prefix-ipv4-extended {
type uint16 { description
range "0 .. 4095"; "This group defines attributes of an
} IPv4 extended prefix.";
description leaf up-down {
"This leaf defines the identifier type boolean;
of a topology."; description
} "This leaf expresses the value of up/down bit.";
}
leaf ip-prefix {
type inet:ipv4-address;
description
"This leaf describes the IPv4 prefix";
}
leaf prefix-len {
type uint8;
description
"This leaf describes the IPv4 prefix len in bits";
}
leaf attributes { leaf metric {
type bits { type wide-metric;
bit OVERLOAD { description
description "This leaf describes the ISIS metric value";
"If set, the originator is overloaded, }
and must be avoided in path leaf-list tag {
calculation."; type uint32;
description
"This leaf describes a list of tags associated with
the prefix.";
}
leaf-list tag64 {
type uint64;
description
"This leaf describes a list of 64-bit tags associated with
the prefix.";
}
list prefix-segment-id {
key value;
uses prefix-segment-id;
description
"List of prefix-segment-id.";
}
}
} grouping prefix-ipv6-extended {
bit ATTACHED { description
description "This group defines attributes of an
"If set, the originator is attached to IPv6 prefix.";
another area using the referred metric."; leaf up-down {
} type boolean;
} description
description "This leaf expresses the value of up/down bit.";
"This leaf describes attributes of the LSP }
for the associated topology."; leaf ip-prefix {
} type inet:ipv6-address;
description description
"List of topologies supported."; "This leaf describes the IPv6 prefix";
} }
description leaf prefix-len {
"This container describes the topology supported. type uint8;
ISIS reference is TLV 229."; description
} "This leaf describes the IPv4 prefix len in bits";
}
leaf-list ipv6-addresses { leaf metric {
type inet:ipv6-address; type wide-metric;
description description
"This leaf describes the IPv6 interface "This leaf describes the ISIS metric value";
addresses of the node.
ISIS reference is TLV 232.";
}
container mt-extended-ipv4-reachability { }
list prefixes { leaf-list tag {
key "ip-prefix"; type uint32;
leaf MT-ID { description
type uint16 { "This leaf describes a list of tags associated with
range "0 .. 4095"; the prefix.";
} }
description leaf-list tag64 {
"This leaf defines the identifier type uint64;
of a topology."; description
} "This leaf describes a list of 64-bit tags associated with
uses prefix-ipv4-extended; the prefix.";
description }
"List of prefixes."; list prefix-segment-id {
key value;
uses prefix-segment-id;
description
"List of prefix-segment-id.";
}
}
} grouping neighbor-extended {
description description
"This container describes list of IPv4 "This group defines attributes of an
reachability information in multi-topology ISIS extended neighbor.";
environment. leaf neighbor-id {
ISIS reference is TLV 235."; type system-id;
} description
"This leaf describes the system-id of the neighbor.";
}
leaf metric {
type wide-metric;
description
"This leaf describes the ISIS metric value";
}
list adjacency-segment-id {
key value;
uses adjacency-segment-id;
description
"List of adjacency-segment-id.";
}
}
container mt-ipv6-reachability { grouping neighbor {
list prefixes { description
key "ip-prefix"; "This group defines attributes of an
leaf MT-ID { ISIS standard neighbor.";
type uint16 { leaf neighbor-id {
range "0 .. 4095"; type system-id;
} description
description "This leaf describes the system-id of the neighbor.";
"This leaf defines the identifier }
of a topology."; leaf i-e {
} type boolean;
uses prefix-ipv6-extended; description
description "This leaf expresses the value of I/E bit.";
"List of prefixes."; }
} leaf default-metric {
description type std-metric;
"This container describes list of IPv6 description
reachability information in multi-topology "This leaf describes the ISIS default metric value";
environment. }
ISIS reference is TLV 237."; container delay-metric {
} leaf metric {
type std-metric;
description
"This leaf describes the ISIS delay metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description
"This container defines the ISIS delay metric.";
}
container expense-metric {
leaf metric {
type std-metric;
description
"This leaf describes the ISIS delay expense value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description
"This container defines the ISIS expense metric.";
}
container error-metric {
leaf metric {
type std-metric;
description
"This leaf describes the ISIS error metric value";
}
leaf supported {
type boolean;
default "false";
description
"This leaf describes if the metric is supported.";
}
description
"This container defines the ISIS error metric.";
}
}
container ipv6-reachability { grouping database {
list prefixes { description
key "ip-prefix"; "This group defines attributes of an
uses prefix-ipv6-extended; ISIS database (Link State DB).";
description leaf lsp-id {
"List of prefixes."; type lsp-id;
} description
description "This leaf describes the LSP ID of the LSP.";
"This container describes list of IPv6 }
reachability information. leaf checksum {
ISIS reference is TLV 236."; type uint16;
} description
"This leaf describes the checksum of the LSP.";
}
leaf remaining-lifetime {
type uint16;
units "seconds";
description
"This leaf describes the remaining lifetime
in seconds before the LSP expiration.";
}
leaf sequence {
type uint32;
description
"This leaf describes the sequence number of the LSP.";
}
leaf attributes {
type bits {
bit PARTITIONNED {
description
"If set, the originator supports partition
repair.";
}
bit ATTACHED-ERROR {
description
"If set, the originator is attached to
another area using the referred metric.";
}
bit ATTACHED-EXPENSE {
description
"If set, the originator is attached to
another area using the referred metric.";
}
bit ATTACHED-DELAY {
description
"If set, the originator is attached to
another area using the referred metric.";
}
bit ATTACHED-DEFAULT {
description
"If set, the originator is attached to
another area using the referred metric.";
}
bit OVERLOAD {
description
"If set, the originator is overloaded,
and must be avoided in path calculation.";
}
}
description
"This leaf describes attributes of the LSP.";
}
container router-capabilities { container is-neighbor {
leaf binary { list neighbor {
type binary; key "neighbor-id";
description uses neighbor;
"This leaf describes the capability of the node. description
Format is binary according to the protocol encoding."; "List of neighbors.";
} }
description description
"This container describes the capabilities of the node. "This leaf describes list of ISIS neighbors.
This container may be extended with detailed ISIS reference is TLV 2.";
information. }
ISIS reference is TLV 242.";
}
}
augment "/rt:routing/rt:routing-instance/rt:routing-protocols/" container authentication {
+"rt:routing-protocol" { leaf authentication-type {
when "rt:type = 'isis:isis'" { type authentication-type;
description description
"This augment is only valid when routing protocol "This leaf describes the authentication type
instance type is isis."; to be used.";
} }
description leaf authentication-key {
"This augments a routing protocol instance with ISIS type string;
specific parameters."; description
container isis { "This leaf describes the authentication key
to be used. For security reason, the
authentication key MUST NOT be presented
in plaintext format. Authors recommends
to use MD5 hash to present the authentication-key.";
}
description "This container describes authentication
information of the node. ISIS reference is TLV 10.";
}
list instance { container extended-is-neighbor {
must "count(area-address) > 0" { list neighbor {
error-message "At least one area-address key "neighbor-id";
must be configured."; uses neighbor-extended;
description description
"Enforce configuration of at least one area."; "List of neighbors.";
} }
description
"This container describes list of ISIS extended
neighbors.
ISIS reference is TLV 22.";
}
key routing-instance; container ipv4-internal-reachability {
list prefixes {
key "ip-prefix";
uses prefix-ipv4-std;
description
"List of prefixes.";
}
description
"This container describes list of IPv4 internal
reachability information.
ISIS reference is TLV 128.";
}
leaf routing-instance { leaf-list protocol-supported {
type rt:routing-instance-ref; type uint8;
description description
"Reference routing instance. "This leaf describes the list of
For protocol centric model, which is supported protocols.
supported in ISIS reference is TLV 129.";
default-instance only, this could reference }
any VRF routing-instance.
For VRF centric model, must reference the
enclosing routing-instance.";
}
leaf level-type { container ipv4-external-reachability {
type level; list prefixes {
default "level-all"; key "ip-prefix";
description uses prefix-ipv4-std;
"This leaf describes the type of ISIS node. description
A node can be level-1-only, level-2-only "List of prefixes.";
or level-1-2. }
"; description
} "This container describes list of IPv4 external
reachability information.
ISIS reference is TLV 130.";
}
leaf system-id { leaf-list ipv4-addresses {
type system-id; type inet:ipv4-address;
description description
"This leaf defines the system-id of the node."; "This leaf describes the IPv4 addresses of the node.
} ISIS reference is TLV 132.";
}
leaf maximum-area-addresses { leaf ipv4-te-routerid {
if-feature maximum-area-addresses;
type uint8;
default 3;
description
"Defines the maximum areas supported.";
}
leaf-list area-address { type inet:ipv4-address;
type area-address; description
description "This leaf describes the IPv4 Traffic Engineering
"List of areas supported by the router ID of the node.
protocol instance."; ISIS reference is TLV 134.";
} }
container mpls-te { container extended-ipv4-reachability {
leaf ipv4-router-id {
if-feature ipv4-router-id;
type inet:ipv4-address;
description
"Router ID value that would be used in
TLV 134.";
}
leaf ipv6-router-id {
if-feature ipv6-router-id;
type inet:ipv6-address;
description
"Router ID value that would be used in
TLV 140.";
}
description
"This container handles mpls te config.";
}
leaf reference-bandwidth {
if-feature reference-bandwidth;
type uint32;
units "bps";
description
"This leaf defines the bandwidth for calculating
metric.";
}
leaf lsp-mtu { list prefixes {
type uint16; key "ip-prefix";
units "bytes"; uses prefix-ipv4-extended;
default 1492; description
description "List of prefixes.";
"This leaf describes the maximum size of a }
LSP PDU in bytes."; description
} "This container describes list of IPv4 extended
leaf lsp-lifetime { reachability information.
type uint16; ISIS reference is TLV 135.";
units "seconds"; }
description
"This leaf describes the lifetime of the router
LSP in seconds.";
}
leaf lsp-refresh {
if-feature lsp-refresh;
type uint16;
units "seconds";
description
"This leaf describes the refresh interval of the
router LSP in seconds.";
}
container graceful-restart { leaf dynamic-hostname {
if-feature graceful-restart; type string;
leaf enabled {
type boolean;
description
"Control enabling the feature.";
}
description
"This container activates graceful restart.";
}
list authentication { description
key level; "This leaf describes the name of the node.
ISIS reference is TLV 137.";
leaf key { }
type string;
description
"This leaf describes the
authentication key.";
}
leaf type {
type authentication-type;
description
"This leaf describes the authentication
type to be used.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"Container for ISIS authentication.
It covers both LSPs and SNPs.";
}
list metric-type { leaf ipv6-te-routerid {
key level; type inet:ipv6-address;
description
"This leaf describes the IPv6 Traffic Engineering
router ID of the node.
ISIS reference is TLV 140.";
}
leaf value { container mt-is-neighbor {
type enumeration { list neighbor {
enum wide-only { key "neighbor-id";
description leaf MT-ID {
"Advertise new metric style only type uint16 {
(RFC5305)"; range "0 .. 4095";
} }
enum old-only { description
description "This leaf defines the identifier
"Advertise old metric style only of a topology.";
(RFC1195)"; }
} uses neighbor-extended;
enum both { description
description "Advertise both metric "List of neighbors.";
styles"; }
} description
} "This container describes list of ISIS multi-topology
description neighbors.
"This leaf describes the type of metric ISIS reference is TLV 223.";
to be generated. }
Wide-only means only new metric style
is generated,
old-only means that only old style metric
is generated,
and both means that both are advertised.
This leaf is only affecting IPv4 metrics.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"Metric style container.";
}
list preference {
key level;
choice granularity { container mt-entries {
case detail { list topology {
leaf internal { key "MT-ID";
type uint8;
description
"This leaf defines the protocol
preference for internal routes.";
}
leaf external {
type uint8;
description
"This leaf defines the protocol
preference for external routes.";
}
}
case coarse {
leaf default {
type uint8;
description
"This leaf defines the protocol
preference for all ISIS routes.";
}
}
description
"Choice for implementation of route preference.";
}
leaf level { leaf MT-ID {
type level; type uint16 {
description range "0 .. 4095";
"Level applicability."; }
} description
description "This leaf defines the identifier
"This leaf defines the protocol preference."; of a topology.";
} }
list default-metric { leaf attributes {
key level; type bits {
bit OVERLOAD {
description
"If set, the originator is overloaded,
and must be avoided in path
calculation.";
}
bit ATTACHED {
description
"If set, the originator is attached to
another area using the referred metric.";
}
}
description
"This leaf describes attributes of the LSP
for the associated topology.";
}
description
"List of topologies supported.";
}
description
"This container describes the topology supported.
ISIS reference is TLV 229.";
}
leaf value { leaf-list ipv6-addresses {
type wide-metric; type inet:ipv6-address;
description description
"Value of the metric"; "This leaf describes the IPv6 interface
} addresses of the node.
leaf level { ISIS reference is TLV 232.";
type level; }
description
"Level applicability of the metric.";
}
description
"Defines the metric to be used by default.";
}
list af {
if-feature nlpid-control;
key af;
leaf af {
type string;
description
"Address-family";
}
leaf enabled { container mt-extended-ipv4-reachability {
type boolean; list prefixes {
description key "ip-prefix";
"Describes the activation state of the leaf MT-ID {
AF."; type uint16 {
} range "0 .. 4095";
description }
"This list permits activation description
of new address families."; "This leaf defines the identifier
of a topology.";
}
uses prefix-ipv4-extended;
description
"List of prefixes.";
} }
description
"This container describes list of IPv4
reachability information in multi-topology
environment.
ISIS reference is TLV 235.";
}
list topologies { container mt-ipv6-reachability {
if-feature multi-topology; list prefixes {
key "ip-prefix";
leaf MT-ID {
type uint16 {
range "0 .. 4095";
}
description
"This leaf defines the identifier
of a topology.";
}
uses prefix-ipv6-extended;
description
"List of prefixes.";
}
description
"This container describes list of IPv6
reachability information in multi-topology
environment.
ISIS reference is TLV 237.";
}
key "name"; container ipv6-reachability {
leaf enabled { list prefixes {
type boolean; key "ip-prefix";
description uses prefix-ipv6-extended;
"Describes the activation state of the description
AF."; "List of prefixes.";
} }
leaf name { description
type rt:rib-ref; "This container describes list of IPv6
description "RIB"; reachability information.
} ISIS reference is TLV 236.";
list default-metric { }
key level;
leaf value { list segment-routing-bindings {
type wide-metric; if-feature segment-routing;
description key "fec range";
"Value of the metric";
}
leaf level {
type level;
description
"Level applicability of the metric.";
}
description
"Defines the metric to be used by default.";
}
description
"List of topologies";
}
list overload { leaf fec {
key level; type string;
description
"IP (v4 or v6) range to be bound to SIDs.";
}
leaf status { leaf range {
type boolean; type uint16;
description description
"This leaf defines the overload status."; "Describes number of elements to assign
} a binding to.";
}
leaf timeout { leaf flags {
type uint16; type bits {
units "seconds"; bit address-family {
description position 7;
"This leaf defines the timeout in seconds description
of the overload condition."; "If unset, then the Prefix FEC
} carries an IPv4 Prefix.
leaf level { If set then the Prefix FEC carries an
type level; IPv6 Prefix.";
description }
"Level applicability of the metric."; bit mirror {
position 6;
description
"Set if the advertised SID/path
corresponds to a mirrored context.
";
}
bit flooding {
position 5;
description
"If the S bit is set(1),
the IS-IS Router CAPABILITY TLV
MUST be flooded across the entire routing domain.
If the S bit is
not set(0), the TLV MUST NOT be leaked between levels.
This bit MUST NOT be altered during the TLV leaking.";
}
bit down {
position 4;
description
"When the IS-IS Router CAPABILITY TLV is
leaked from level-2 to level-1, the D bit
MUST be set. Otherwise, this bit MUST
be clear. IS-IS Router capability TLVs
with the D bit set MUST NOT
be leaked from level-1 to level-2.
} This is to prevent TLV looping.
description ";
"This leaf describes if the router is }
set to overload state."; bit attached {
} position 3;
description
"The originator of the SID/Label Binding
TLV MAY set the A bit in order to signal
that the prefixes and
SIDs advertised in the SID/Label Binding
TLV are directly
connected to their originators.
";
}
list overload-max-metric { }
if-feature overload-max-metric; description
key level; "Flags of the binding.";
}
leaf status { leaf weight {
type boolean; type uint8;
description description
"This leaf defines the overload status."; "Weight of the path for loadbalancing purpose.";
} }
leaf timeout { list binding {
type uint16; container prefix-sid {
units "seconds"; uses prefix-segment-id;
description description
"This leaf defines the timeout in seconds "Binding prefix SID to the range.";
of the overload condition."; }
} leaf ero-metric {
leaf level { type uint32;
type level; description
description "Cost of ERO path.";
"Level applicability of the metric."; }
} container ero {
description leaf address-family {
"This leaf describes if the router is type identityref {
set to overload state."; base rt:address-family;
} }
description
"Address-family.";
}
container interfaces { leaf loose {
list interface { type boolean;
key "name"; description
leaf name { "Set to true,
type string; if hop is a loose hop.";
}
leaf address {
type string;
description
"IP address of a node on the
path.";
}
description description
"Reference to the interface within "Binding ERO path to the range.";
the routing-instance."; }
} container backup-ero {
leaf level-type { leaf address-family {
type level; type identityref {
default "level-all"; base rt:address-family;
description }
"This leaf defines the associated ISIS description
level of the interface."; "Address-family.";
} }
leaf lsp-pacing-interval {
type uint16;
units "milliseconds";
description
"This leaf defines the interval between
LSP transmissions in milli-seconds";
}
leaf lsp-retransmit-interval {
type uint16;
units "seconds";
description
"This leaf defines the interval between
retransmission of LSP";
}
leaf passive {
type boolean;
default "false";
description
"This leaf defines if interface is in
passive mode (ISIS not running,
but network is advertised).";
}
leaf csnp-interval {
type uint16;
units "seconds";
description
"This leaf defines the interval of CSNP
messages.";
}
container hello-padding { leaf loose {
leaf enabled { type boolean;
type boolean; description
default "true"; "Set to true,
description if hop is a loose hop.";
"Status of Hello-padding activation. }
By default, the implementation shall leaf address {
pad HELLOs."; type string;
} description
"IP address of a node on the
path.";
}
description description
"This container handles ISIS hello padding "Binding backup ERO path to the range.";
configuration."; }
} container unnumbered-interface-id-ero {
leaf router-id {
type string;
description
"Router ID of the node owning the interface.";
}
leaf interface-id {
type uint32;
description
"Interface ID on which the path is built.";
}
description
"Binding a path over unnumbered interface.";
}
container backup-unnumbered-interface-id-ero {
leaf router-id {
type string;
description
"Router ID of the node owning the interface.";
}
leaf interface-id {
type uint32;
description
"Interface ID on which the path is built.";
}
description
"Binding a backup path over unnumbered interface.";
}
description
"Bindings associated with the range.";
}
leaf mesh-group-enabled { description
type mesh-group-state; "This container describes list of SID/Label
description bindings.
"Describes the mesh group state of ISIS reference is TLV 149.";
the interface."; }
}
leaf mesh-group { list router-capabilities {
when "../mesh-group-enabled = meshSet" { leaf flags {
description type bits {
"Only valid when mesh-group-enabled bit flooding {
equals meshSet"; position 0;
} description
type uint8; "If the S bit is set(1),
description the IS-IS Router CAPABILITY TLV
"Describes the mesh group ID of MUST be flooded across the entire routing domain.
the interface."; If the S bit is
} not set(0), the TLV MUST NOT be leaked between levels.
This bit MUST NOT be altered during the TLV leaking.";
}
bit down {
position 1;
description
"When the IS-IS Router CAPABILITY TLV is
leaked from level-2 to level-1, the D bit
MUST be set. Otherwise, this bit MUST
be clear. IS-IS Router capability TLVs
with the D bit set MUST NOT
be leaked from level-1 to level-2.
This is to prevent TLV looping.
";
}
}
description
"Flags associated with router capability.";
}
container node-tag {
if-feature node-tag;
list node-tag {
leaf tag {
type uint32;
description
"Node tag value.";
}
description
"List of tags.";
}
description
"Container for node tags.";
}
list segment-routing {
leaf flags {
type bits {
bit ipv4 {
position 7;
description
"If set, then the router is capable of
outgoing IPv4 encapsulation on all interfaces.
";
leaf interface-type { }
type interface-type; bit ipv6 {
description position 6;
"This leaf defines the type of adjacency description
to be established on the interface. "If set, then the router is capable of
This is affecting the type of hello outgoing IPv6 encapsulation on all interfaces.
message that would be used."; ";
} }
}
description
"Flags associated with the capability.";
}
leaf range {
type uint32;
description
"Number of values of the range starting with the
SID/Label value.";
}
leaf starting-value {
type uint32;
description
"Lower bound of the label block.";
}
description
"Segment routing capability.";
}
leaf-list segment-routing-algorithm {
type uint8;
description
"List of supported algorithm for segment routing.";
}
leaf binary {
type binary;
description
"This leaf describes the capability of the node.
Format is binary according to the protocol encoding.";
}
description
"This container describes the capabilities of the node.
This container may be extended with detailed
information.
ISIS reference is TLV 242.";
}
}
leaf enabled { /* */
type boolean;
default "true";
description
"This leaf describes the administrative
status of the ISIS interface.";
} augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" {
when "rt:source-protocol = 'isis:isis'" {
description "ISIS-specific route attributes.";
}
uses route-content;
description
"This augments route object in RIB with ISIS-specific
attributes.";
}
leaf-list tag { augment "/rt:active-route/rt:output/rt:route"
if-feature prefix-tag; {
uses route-content;
description "ISIS-specific route attributes.";
}
type uint32; augment "/if:interfaces/if:interface"
description {
"This leaf defines list of tags associated leaf clns-mtu {
with the interface."; type uint16;
} description
"Defines CLNS MTU of the interface.";
}
description "ISO interface config.";
}
leaf-list tag64 { augment "/rt:routing/rt:routing-instance/rt:routing-protocols/"
if-feature prefix-tag64; +"rt:routing-protocol" {
type uint64; when "rt:type = 'isis:isis'" {
description description
"This leaf defines list of 64bits tags "This augment is only valid when routing protocol
associated with the interface."; instance type is isis.";
} }
description
"This augments a routing protocol instance with ISIS
specific parameters.";
container isis {
list hello-authentication { list instance {
key level; must "count(area-address) > 0" {
error-message "At least one area-address
must be configured.";
description
"Enforce configuration of at least one area.";
}
leaf type { key routing-instance;
type authentication-type;
description leaf routing-instance {
"This leaf describes the authentication type rt:routing-instance-ref;
type to be used in hello messages."; description
} "Reference routing instance.
leaf key { For protocol centric model, which is
type string; supported in
description default-instance only, this could reference
"This leaf describes the any VRF routing-instance.
authentication key For VRF centric model, must reference the
to be used in hello messages. enclosing routing-instance.";
For security reason, the }
authentication key MUST
NOT be presented
in plaintext format upon a
get-config reply.
Authors recommends
to use MD5 hash to present the
authentication-key";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"This leaf describes the authentication type
to be used in hello messages.";
}
list hello-interval { leaf level-type {
key level; type level;
default "level-all";
description
"This leaf describes the type of ISIS node.
A node can be level-1-only, level-2-only
or level-1-2.
";
}
leaf value { leaf system-id {
type uint16; type system-id;
units "seconds"; description
description "This leaf defines the system-id of the node.";
"This leaf defines the interval of }
hello messages.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"This leaf defines the interval of
hello messages.";
}
list hello-multiplier {
key level;
leaf value { leaf maximum-area-addresses {
type uint16; if-feature maximum-area-addresses;
description type uint8;
"This leaf defines the number of default 3;
hello failed to be received before description
declaring the adjacency down."; "Defines the maximum areas supported.";
} }
leaf level {
type level;
description
"Level applicability.";
}
description
"This leaf defines the number of
hello failed to be received before
declaring the adjacency down.";
}
list priority { leaf-list area-address {
must 'interface-type = "broadcast"'; type area-address;
key level; description
leaf value { "List of areas supported by the
type uint8 { protocol instance.";
range "0 .. 127"; }
}
description container mpls {
"This leaf describes the priority of leaf ipv4-router-id {
the interface if-feature ipv4-router-id;
for DIS election."; type inet:ipv4-address;
} description
leaf level { "Router ID value that would be used in
type level; TLV 134.";
description }
"Level applicability."; leaf ipv6-router-id {
} if-feature ipv6-router-id;
description type inet:ipv6-address;
"This leaf describes the priority of description
the interface "Router ID value that would be used in
for DIS election."; TLV 140.";
} }
list metric { container igp-ldp-sync {
key level; if-feature igp-ldp-sync;
description
"This container may be augmented
with global parameters for igp-ldp-sync.";
}
description
"This container handles mpls config.";
}
leaf reference-bandwidth {
if-feature reference-bandwidth;
type uint32;
units "bps";
description
"This leaf defines the bandwidth for calculating
metric.";
}
leaf value { leaf lsp-mtu {
type wide-metric; type uint16;
description units "bytes";
"Metric value."; default 1492;
} description
leaf level { "This leaf describes the maximum size of a
type level; LSP PDU in bytes.";
description }
"Level applicability."; leaf lsp-lifetime {
} type uint16;
description units "seconds";
"Container for interface metric"; description
} "This leaf describes the lifetime of the router
list af { LSP in seconds.";
key af; }
leaf lsp-refresh {
if-feature lsp-refresh;
type uint16;
units "seconds";
description
"This leaf describes the refresh interval of the
router LSP in seconds.";
}
leaf af { container graceful-restart {
type string; if-feature graceful-restart;
description leaf enabled {
"Address-family"; type boolean;
} description
container bfd { "Control enabling the feature.";
if-feature bfd; }
leaf enabled { description
type boolean; "This container activates graceful restart.";
default false; }
description
"This leaf enables BFD.";
}
description container node-tag {
"The container describes if-feature node-tag;
BFD config.";
}
description list node-tag {
"List of AFs."; key tag;
} leaf tag {
type uint32;
description
"Node tag value.";
}
description
"List of tags.";
}
description
"Container for node tags.";
}
list topologies { uses fast-reroute-global-cfg;
key name;
leaf name { uses segment-routing-global-cfg;
type rt:rib-ref;
description
"Name of RIB.";
}
list metric {
key level;
leaf value { list authentication {
type wide-metric; key level;
description
"Metric value.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"Container for interface metric";
}
description
"List of topologies.";
}
description leaf key {
"List of ISIS interfaces."; type string;
} description
description "This leaf describes the
"This container defines ISIS interface specific authentication key.";
configuration objects."; }
} leaf type {
description type authentication-type;
"List of ISIS instances."; description
} "This leaf describes the authentication
description type to be used.";
"This container defines ISIS specific configuration }
objects."; leaf level {
} type level;
} description
"Level applicability.";
}
description
"Container for ISIS authentication.
It covers both LSPs and SNPs.";
augment "/rt:routing-state/rt:routing-instance/" }
+"rt:routing-protocols/rt:routing-protocol" {
when "rt:type = 'isis:isis'" {
description
"This augment is only valid when routing protocol
instance type is isis.";
}
description
"This augments routing protocol instance states with ISIS
specific parameters.";
container isis {
config false;
container system-counters {
list level {
key level;
leaf level { list metric-type {
type level-number; key level;
description
"This leaf describes the ISIS level.";
}
leaf corrupted-lsps {
type uint32;
description
"Number of corrupted in-memory LSPs detected.
LSPs received from the wire with a bad
checksum are silently dropped and not counted.
LSPs received from the wire with parse errors
are counted by lsp-errors.";
}
leaf authentication-type-fails {
type uint32;
description
"Number of authentication type mismatches.";
}
leaf authentication-fails {
type uint32;
description
"Number of authentication key failures.";
}
leaf database-overload {
type uint32;
description
"Number of times the database has become
overloaded.";
}
leaf own-lsp-purge {
type uint32;
description
"Number of times a zero-aged copy of the
system's own LSP is received from some
other node.";
}
leaf manual-address-drop-from-area {
type uint32;
description
"Number of times a manual address
has been dropped from the area.";
}
leaf max-sequence {
type uint32;
description
"Number of times the system has attempted
to exceed the maximum sequence number.";
}
leaf sequence-number-skipped {
type uint32;
description
"Number of times a sequence number skip has
occured.";
}
leaf id-len-mismatch {
type uint32;
description
"Number of times a PDU is received with
a different value for ID field length
from that of the receiving system.";
}
leaf partition-changes {
type uint32;
description
"Number of partition changes detected.";
}
leaf lsp-errors {
type uint32;
description
"Number of LSPs with errors we have
received.";
}
leaf spf-runs {
type uint32;
description
"Number of times we ran SPF at this level.";
}
description
"List of supported levels.";
}
description
"The container defines a list of counters
for the IS.";
}
container interface-counters {
list interface {
key interface;
leaf interface { leaf value {
type string; type enumeration {
description enum wide-only {
"This leaf describes the name description
of the interface."; "Advertise new metric style only
} (RFC5305)";
}
enum old-only {
description
"Advertise old metric style only
(RFC1195)";
}
enum both {
description "Advertise both metric
styles";
}
}
description
"This leaf describes the 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,
and both means that both are advertised.
This leaf is only affecting IPv4 metrics.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"Metric style container.";
}
list preference {
key level;
leaf adjacency-changes { choice granularity {
type uint32; case detail {
description leaf internal {
"The number of times an adjacency state type uint8;
change has occured on this interface."; description
} "This leaf defines the protocol
leaf adjacency-number { preference for internal routes.";
type uint32; }
description leaf external {
"The number of adjacencies on this type uint8;
interface."; description
} "This leaf defines the protocol
leaf init-fails { preference for external routes.";
type uint32; }
description }
"The number of times initialization of case coarse {
this interface has failed. This counts leaf default {
events such as PPP NCP failures. type uint8;
Failures to form an adjacency are counted description
by adjacency-rejects."; "This leaf defines the protocol
} preference for all ISIS routes.";
leaf adjacency-rejects { }
type uint32; }
description description
"The number of times an adjacency has been "Choice for implementation of route preference.";
rejected on this interface."; }
}
leaf id-len-mismatch {
type uint32;
description
"The number of times an IS-IS PDU with an ID
field length different from that for this
system has been received on this interface.";
} leaf level {
leaf max-area-addresses-mismatch { type level;
type uint32; description
description "Level applicability.";
"The number of times an IS-IS PDU with }
according max area address field description
differs from that for "This leaf defines the protocol preference.";
this system has been received on this }
interface.";
}
leaf authentication-type-fails {
type uint32;
description
"Number of authentication type mismatches.";
}
leaf authentication-fails {
type uint32;
description
"Number of authentication key failures.";
}
leaf lan-dis-changes {
type uint32;
description
"The number of times the DIS has changed
on this interface at this level.
If the interface type is point to point,
the count is zero.";
}
description
"List of interfaces.";
}
description
"The container defines a list of counters
for interfaces.";
}
container packet-counters {
list level {
key level;
leaf level { list default-metric {
type level-number; key level;
description
"This leaf describes the ISIS level.";
}
container iih { leaf value {
leaf in { type wide-metric;
type uint32; description
description "Value of the metric";
"Received PDUs."; }
} leaf level {
leaf out { type level;
type uint32; description
description "Level applicability of the metric.";
"Sent PDUs."; }
} description
description "Defines the metric to be used by default.";
"The number of IIH PDUs received/sent.";
}
container ish {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of ISH PDUs received/sent.";
}
container esh {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of ESH PDUs received/sent.";
}
container lsp {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of LSP PDUs received/sent.";
}
container psnp {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of PSNP PDUs received/sent.";
}
container csnp {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of CSNP PDUs received/sent.";
}
container unknown {
leaf in {
type uint32;
description
"Received PDUs.";
}
leaf out {
type uint32;
description
"Sent PDUs.";
}
description
"The number of unknown PDUs received/sent.";
}
description
"List of supported levels.";
}
description
"The container defines a list of PDU counters.";
}
container interfaces {
list interfaces {
key interface;
leaf interface { }
type string; list af {
description if-feature nlpid-control;
"This leaf describes the name key af;
of the interface."; leaf af {
} type identityref {
leaf circuit-id { base rt:address-family;
type circuit-id; }
description description
"This leaf describes the circuit-id "Address-family";
associated with the interface."; }
}
leaf admin-state {
type admin-state;
description
"This leaf describes the admin state
of the interface.";
}
leaf oper-state {
type oper-state;
description
"This leaf describes the operational state
of the interface.";
}
leaf interface-type {
type interface-type;
description
"Type of interface to be used.";
}
leaf level {
type level;
description
"Level associated with the interface.";
}
leaf passive {
type empty;
description
"The interface is included in LSP, but
does not run ISIS protocol.";
} leaf enabled {
leaf three-way-handshake { type boolean;
type empty; description
description "Describes the activation state of the
"The interface uses 3-way handshake."; AF.";
} }
description description
"List of interfaces."; "This list permits activation
} of new address families.";
description
"The container defines operational parameters
of interfaces.";
}
container adjacencies {
list adjacency {
leaf interface {
type string;
description
"This leaf describes the name
of the interface.";
}
leaf level {
type level;
description
"This leaf describes the associated
ISIS level of the interface.
";
}
leaf neighbor-sysid {
type system-id;
description
"The system-id of the neighbor";
} }
leaf neighbor-extended-circuit-id {
type extended-circuit-id;
description
"Circuit ID of the neighbor";
}
leaf neighbor-snpa {
type snpa;
description
"SNPA of the neighbor";
}
leaf neighbor-level {
type level;
description
"The type of the neighboring system.";
} list topologies {
leaf hold-timer { if-feature multi-topology;
type uint16;
description
"The holding time in seconds for this
adjacency. This value is based on
received hello PDUs and the elapsed
time since receipt.";
}
leaf neighbor-priority {
type uint8 {
range "0 .. 127";
}
description
"Priority of the neighboring IS for becoming
the DIS.";
}
leaf lastuptime {
type yang:timestamp;
description
"When the adjacency most recently entered
state 'up', measured in hundredths of a
second since the last reinitialization of
the network management subsystem.
The value is 0 if the adjacency has never
been in state 'up'.";
} key "name";
leaf state { leaf enabled {
type enumeration { type boolean;
enum "Up" { description
description "Describes the activation state of the
"This state describes that AF.";
adjacency is established."; }
} leaf name {
enum "Down" { type rt:rib-ref;
description description "RIB";
"This state describes that }
adjacency is NOT established.";
}
enum "Init" {
description
"This state describes that
adjacency is establishing.";
}
}
description
"This leaf describes the state of the
interface.";
}
description
"List of operational adjacencies.";
}
description
"This container lists the adjacencies of
the local node.";
}
container spf-log {
list event {
key id;
leaf id { uses fast-reroute-global-cfg;
type uint32; uses segment-routing-global-cfg;
description
"This leaf defines the event identifier.
This is a purely internal value.";
}
leaf spf-type {
type enumeration {
enum full {
description
"Computation done is a Full SPF.";
}
enum incremental {
description
"Computation done is an
incremental SPF.";
}
enum route-only {
description
"Computation done is a
reachability computation
only.";
}
}
description
"This leaf describes the type of computation
used.";
}
leaf level {
type level-number;
description
"This leaf describes the level affected by the
the computation.";
}
leaf spf-delay {
type uint32;
units "milliseconds";
description
"This leaf describes the SPF delay that
was used for this event.";
}
leaf schedule-timestamp {
type yang:timestamp;
description
"This leaf describes the timestamp
when the computation was scheduled.";
}
leaf start-timestamp {
type yang:timestamp;
description
"This leaf describes the timestamp
when the computation was started.";
}
leaf end-timestamp {
type yang:timestamp;
description
"This leaf describes the timestamp
when the computation was ended.";
}
list trigger-lsp {
key "lsp";
leaf lsp {
type lsp-id;
description
"This leaf describes the LSPID
of the LSP.";
}
leaf sequence {
type uint32;
description
"This leaf describes the sequence
number of the LSP.";
}
description
"This leaf describes list of LSPs
that triggered the computation.";
}
description
"List of computation events.";
}
description list default-metric {
"This container lists the SPF computation events."; key level;
} leaf value {
container lsp-log { type wide-metric;
list event { description
key id; "Value of the metric";
}
leaf level {
type level;
description
"Level applicability of the metric.";
}
description
"Defines the metric to be used by default.";
}
container node-tag {
if-feature node-tag;
list node-tag {
key tag;
leaf tag {
type uint32;
description
"Node tag value.";
}
description
"List of tags.";
}
description
"Container for node tags.";
}
description
"List of topologies";
}
leaf id { list overload {
type uint32; key level;
description
"This leaf defines the event identifier.
This is a purely internal value.";
}
leaf level {
type level-number;
description
"This leaf describes the level affected by the
the computation.";
}
container lsp {
leaf lsp {
type lsp-id; leaf status {
description type boolean;
"This leaf describes the LSPID description
of the LSP."; "This leaf defines the overload status.";
} }
leaf sequence {
type uint32;
description
"This leaf describes the sequence
number of the LSP.";
}
description
"This container describes the received LSP
, in case of local LSP update the local
LSP ID is referenced.";
}
leaf received-timestamp { leaf timeout {
type yang:timestamp; type uint16;
units "seconds";
description
"This leaf defines the timeout in seconds
of the overload condition.";
}
leaf level {
type level;
description
"Level applicability of the metric.";
}
description
"This leaf describes if the router is
set to overload state.";
}
description list overload-max-metric {
"This leaf describes the timestamp if-feature overload-max-metric;
when the LSP was received. In case of key level;
local LSP update, the timestamp refers
to the local LSP update time.";
}
description leaf status {
"List of LSP events."; type boolean;
} description
"This leaf defines the overload status.";
}
description leaf timeout {
"This container lists the LSP reception events. type uint16;
Local LSP modification are also contained in the units "seconds";
list."; description
} "This leaf defines the timeout in seconds
container database { of the overload condition.";
list level-db { }
key level; leaf level {
type level;
description
"Level applicability of the metric.";
}
description
"This leaf describes if the router is
set to overload state.";
}
leaf level { container interfaces {
type level-number; list interface {
description key "name";
"Current level number"; leaf name {
} type if:interface-ref;
list lsp {
key lsp-id;
uses database; description
description "Reference to the interface within
"List of LSPs in LSDB."; the routing-instance.";
} }
leaf level-type {
type level;
default "level-all";
description
"This leaf defines the associated ISIS
level of the interface.";
}
leaf lsp-pacing-interval {
type uint16;
units "milliseconds";
description
"This leaf defines the interval between
LSP transmissions in milli-seconds";
}
leaf lsp-retransmit-interval {
type uint16;
units "seconds";
description
"This leaf defines the interval between
retransmission of LSP";
}
leaf passive {
type boolean;
default "false";
description
"This leaf defines if interface is in
passive mode (ISIS not running,
but network is advertised).";
}
leaf csnp-interval {
type uint16;
units "seconds";
description
"This leaf defines the interval of CSNP
messages.";
}
description container hello-padding {
"This container describes the list of LSPs leaf enabled {
in the level x database."; type boolean;
} default "true";
description
"Status of Hello-padding activation.
By default, the implementation shall
pad HELLOs.";
}
description description
"This container describes ISIS Link State "This container handles ISIS hello padding
databases."; configuration.";
}
container hostnames {
list hostname { }
key system-id;
leaf system-id {
type system-id;
description
"This leaf describes the system-id
associated with the hostname.";
}
leaf hostname {
type string; leaf mesh-group-enabled {
description type mesh-group-state;
"This leaf describes the hostname description
associated with the system ID."; "Describes the mesh group state of
} the interface.";
description }
"List of system-id/hostname associations";
}
description leaf mesh-group {
"This container describes the list when "../mesh-group-enabled = meshSet" {
of binding between system-id and description
hostnames."; "Only valid when mesh-group-enabled
} equals meshSet";
}
type uint8;
description
"Describes the mesh group ID of
the interface.";
}
description leaf interface-type {
"This container defines various ISIS states objects."; type interface-type;
} description
} "This leaf defines the type of adjacency
to be established on the interface.
This is affecting the type of hello
message that would be used.";
}
/* RPC methods */ leaf enabled {
type boolean;
default "true";
description
"This leaf describes the administrative
status of the ISIS interface.";
rpc clear-adjacency { }
description
"This RPC request clears a particular
set of ISIS adjacencies. If the operation
fails for ISIS internal reason, then
error-tag and error-app-tag should be set
to a meaningful value.";
input {
leaf routing-instance-name {
type rt:routing-instance-state-ref;
mandatory "true";
description
"Name of the routing instance whose ISIS
information is being queried.
If the routing instance with name equal to the leaf-list tag {
value of this parameter doesn't exist, then this if-feature prefix-tag;
operation SHALL fail with error-tag 'data-missing'
and error-app-tag 'routing-instance-not-found'.";
} type uint32;
leaf routing-protocol-instance-name { description
type instance-state-ref; "This leaf defines list of tags associated
mandatory "true"; with the interface.";
description }
"Name of the ISIS protocol instance whose ISIS leaf-list tag64 {
information is being queried. if-feature prefix-tag64;
If the ISIS instance with name equal to the type uint64;
value of this parameter doesn't exist, then this description
operation SHALL fail with error-tag 'data-missing' "This leaf defines list of 64bits tags
and error-app-tag associated with the interface.";
'routing-protocol-instance-not-found'."; }
}
leaf level {
type level;
description
"ISIS level of the adjacency to be cleared.
If ISIS level is level-1-2, both level 1 and level 2
adjacencies would be cleared.
If the value provided is different from the one list hello-authentication {
authorized in the enum type, then this key level;
operation SHALL fail with error-tag 'data-missing'
and error-app-tag
'bad-isis-level'.
";
}
leaf interface {
type string;
description
"Name of the ISIS interface.
If the ISIS interface with name equal to the leaf type {
value of this parameter doesn't exist, then this type authentication-type;
operation SHALL fail with error-tag 'data-missing'
and error-app-tag
'isis-interface-not-found'.";
}
}
}
rpc clear-database { description
description "This leaf describes the authentication
"This RPC request clears a particular type to be used in hello messages.";
ISIS database. If the operation }
fails for ISIS internal reason, then leaf key {
error-tag and error-app-tag should be set type string;
to a meaningful value."; description
input { "This leaf describes the
leaf routing-instance-name { authentication key
type rt:routing-instance-state-ref; to be used in hello messages.
mandatory "true"; For security reason, the
description authentication key MUST
"Name of the routing instance whose ISIS NOT be presented
information is being queried. in plaintext format upon a
get-config reply.
Authors recommends
to use MD5 hash to present the
authentication-key";
}
leaf level {
type level;
description