draft-ietf-isis-yang-isis-cfg-00.txt   draft-ietf-isis-yang-isis-cfg-01.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 10, 2015 A. Lindem Expires: April 27, 2015 A. Lindem
Cisco Systems Cisco Systems
J. Zhang J. Zhang
Juniper Networks Juniper Networks
L. Lhotka L. Lhotka
October 07, 2014 October 24, 2014
YANG Data Model for ISIS protocol YANG Data Model for ISIS protocol
draft-ietf-isis-yang-isis-cfg-00 draft-ietf-isis-yang-isis-cfg-01
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.
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
skipping to change at page 1, line 43 skipping to change at page 1, line 43
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 10, 2015. This Internet-Draft will expire on April 27, 2015.
Copyright Notice Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the Copyright (c) 2014 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
skipping to change at page 2, line 21 skipping to change at page 2, line 21
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 . . . . . . . . . . . . . . . . . . . 8
2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 8 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 9
2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 8 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10
2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 9 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 10
2.5. Operational State . . . . . . . . . . . . . . . . . . . . 10 2.5. Operational State . . . . . . . . . . . . . . . . . . . . 11
3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 11 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 15
4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 11 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 16
5. Interaction with Other YANG Modules . . . . . . . . . . . . . 16 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 20
6. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 16 6. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 20
7. Security Considerations . . . . . . . . . . . . . . . . . . . 78 7. Security Considerations . . . . . . . . . . . . . . . . . . . 82
8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 79 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 83
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 79 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 83
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 79 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 83
11. Normative References . . . . . . . . . . . . . . . . . . . . 79 11. Normative References . . . . . . . . . . . . . . . . . . . . 83
Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 80 Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 84
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 80 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 87
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 44 skipping to change at page 3, line 44
+--ro metric? uint32 +--ro metric? uint32
+--ro tag* uint64 +--ro tag* uint64
+--ro route-type? enumeration +--ro route-type? enumeration
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
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? 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 ipv4-router-id? inet:ipv4-address +--rw mpls-te
+--rw ipv6-router-id? inet:ipv6-address | ...
+--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 lsp-gen-interval-exp-delay* [level] {lsp-gen-interval-exp-delay}?
| +--rw initial? uint16
| +--rw incremental? uint16
| +--rw maximum? uint8
| +--rw level level
+--rw graceful-restart {graceful-restart}? +--rw graceful-restart {graceful-restart}?
| +--rw restart-duration? uint16 | ...
| +--rw helper-disable? empty +--rw authentication* [level]
| +--rw enabled? boolean | ...
+--rw psnp-authentication* [level] +--rw metric-type* [level]
| +--rw value? boolean | ...
| +--rw level level +--rw preference* [level]
+--rw csnp-authentication* [level] | ...
| +--rw value? boolean +--rw default-metric* [level]
| +--rw level level | ...
+--rw authentication-key* [level] +--rw af* [af] {nlpid-control}?
| +--rw value? string | ...
| +--rw level level +--rw topologies* [name] {multi-topology}?
+--rw authentication-type* [level] | ...
| +--rw value? authentication-type +--rw overload* [level]
| ...
+--rw overload-max-metric* [level] {overload-max-metric}?
| ...
+--rw interfaces
...
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol:
+--ro isis
+--ro system-counters
| +--ro level* [level]
| ...
+--ro interface-counters
| +--ro interface* [interface]
| ...
+--ro packet-counters
| +--ro level* [level]
| ...
+--ro interfaces
| +--ro interfaces* [interface]
| ...
+--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 hostname* [system-id]
...
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
The ISIS configuration currently supports both VRF-centric and
protocol-centric configuration. This may be changed in future. In a
protocol-centric configuration, the isis configuration is applied
within the standard-routing-instance and the instance list helps to
reference the routing-instance where ISIS is activated. 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:
o Global parameters.
o Per interface configuration (see Section 2.4).
It would to up to extension modules to augment this model to support
vendor specific parameters.
augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol:
+--rw isis
+--rw instance* [routing-instance]
+--rw routing-instance rt:routing-instance-ref
+--rw level-type? level
+--rw system-id? system-id
+--rw maximum-area-addresses? uint8 {maximum-area-addresses}?
+--rw area-address* area-address
+--rw mpls-te
| +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}?
| +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}?
+--rw reference-bandwidth? uint32 {reference-bandwidth}?
+--rw lsp-mtu? uint16
+--rw lsp-lifetime? uint16
+--rw lsp-refresh? uint16 {lsp-refresh}?
+--rw graceful-restart {graceful-restart}?
| +--rw enabled? boolean
+--rw authentication* [level]
| +--rw key? string
| +--rw type? authentication-type
| +--rw level level | +--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 value? uint8 | +--rw (granularity)?
| +--rw level level | | +--:(detail)
+--rw external-preference* [level] | | | +--rw internal? uint8
| +--rw value? uint8 | | | +--rw external? uint8
| +--rw level level | | +--:(coarse)
| | +--rw default? uint8
| +--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 string
| +--rw enabled? boolean
+--rw topologies* [name] {multi-topology}?
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw name rt:rib-ref
| +--rw default-metric* [level] | +--rw default-metric* [level]
| +--rw value? wide-metric | +--rw value? wide-metric
| +--rw level level | +--rw level level
+--rw topologies* [name] {multi-topology}?
| +--rw enabled? boolean
| +--rw name rt:rib-ref
+--rw overload* [level] +--rw overload* [level]
| +--rw status? boolean | +--rw status? boolean
| +--rw type? enumeration | +--rw timeout? uint16
| +--rw level level
+--rw overload-max-metric* [level] {overload-max-metric}?
| +--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
The topologies list is used to enable support of MT extensions for
specific address families.
Each topology should refer to an existing RIB.
2.3. Per-Level Parameters
Some parameters support per level configuration. In this case, the
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.
+--rw priority* [level]
| +--rw value? uint8
| +--rw level level
Example :
<priority>
<value>100</value>
<level>level-1</level>
</priority>
<priority>
<value>200</value>
<level>level-2</level>
</priority>
2.4. Per-Interface Parameters
The per-interface section of the ISIS instance describes the
interface specific parameters.
The interface is referenced using a string. It would be up to the
server device to check if the interface exists or not. Using a
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
different value per level as described in previous section. An
interface-specific parameter always override an ISIS global parameter
.
Some parameters like BFD and hello-padding are defined as containers
to permit easy extension by vendor specific modules.
+--rw interfaces
+--rw interface* [name]
+--rw name string
+--rw level-type? level
+--rw lsp-pacing-interval? uint16
+--rw lsp-retransmit-interval? uint16
+--rw passive? boolean
+--rw csnp-interval? uint16
+--rw hello-padding
| +--rw enabled? boolean
+--rw mesh-group-enabled? mesh-group-state
+--rw mesh-group? uint8
+--rw interface-type? interface-type
+--rw enabled? boolean
+--rw tag* uint32 {prefix-tag}?
+--rw tag64* uint64 {prefix-tag64}?
+--rw hello-authentication* [level]
| +--rw type? authentication-type
| +--rw key? string
| +--rw level level
+--rw hello-interval* [level]
| +--rw value? uint16
| +--rw level level
+--rw hello-multiplier* [level]
| +--rw value? uint16
| +--rw level level
+--rw priority* [level]
| +--rw value? uint8
| +--rw level level
+--rw metric* [level]
| +--rw value? wide-metric
| +--rw level level
+--rw af* [af]
| +--rw af string
| +--rw bfd {bfd}?
| ...
+--rw topologies* [name]
+--rw name rt:rib-ref
+--rw metric* [level]
...
2.5. Operational State
"isis" container provides operational states for ISIS. This
container is divided in multiple components:
o system-counters : provides statistical informations about the
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
interface.
o adjacencies: provides state information about current ISIS
adjacencies.
o spf-log: provides information about SPF events on the node.
o lsp-log: provides information about LSP events on the node
(reception of an LSP or modification of local LSP).
o database: provides details on current LSDB.
o hostnames: provides information about system-id to hostname
mappings.
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 system-counters
| +--ro level* [level] | +--ro level* [level]
| +--ro level level-number | +--ro level level-number
| +--ro corrupted-lsps? uint32 | +--ro corrupted-lsps? uint32
| +--ro authentication-type-fails? uint32 | +--ro authentication-type-fails? uint32
| +--ro authentication-fails? uint32 | +--ro authentication-fails? uint32
| +--ro database-overload? uint32 | +--ro database-overload? uint32
| +--ro own-lsp-purge? uint32 | +--ro own-lsp-purge? uint32
skipping to change at page 8, line 15 skipping to change at page 15, line 32
| +--ro ipv6-reachability | +--ro ipv6-reachability
| | +--ro prefixes* [ip-prefix] | | +--ro prefixes* [ip-prefix]
| | ... | | ...
| +--ro router-capabilities | +--ro router-capabilities
| +--ro binary? binary | +--ro binary? binary
+--ro hostnames +--ro hostnames
+--ro hostname* [system-id] +--ro hostname* [system-id]
+--ro system-id system-id +--ro system-id system-id
+--ro hostname? string +--ro hostname? string
2.1. ISIS Configuration
The ISIS configuration currently supports both VRF-centric and
protocol-centric configuration. This may be changed in future. In a
protocol-centric configuration, the isis configuration is applied
within the standard-routing-instance and the instance list helps to
reference the routing-instance where ISIS is activated. 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:
o Global parameters.
o Per interface configuration (see Section 2.4).
2.2. Multitopology Parameters
The topologies list is used to enable support of MT extensions for
specific address families.
Each topology should refer to an existing RIB.
2.3. Per-Level Parameters
Some parameters support per level configuration. In this case, the
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.
+--rw priority* [level]
| +--rw value? uint8
| +--rw level level
2.4. Per-Interface Parameters
The per-interface section of the ISIS instance describes the
interface specific parameters.
The interface is referenced using a string. It would be up to the
server device to check if the interface exists or not. Using a
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
different value per level as described in previous section. An
interface-specific parameter always override an ISIS global parameter
.
+--rw name string
+--rw level-type? level
+--rw lsp-pacing-interval? uint16
+--rw lsp-retransmit-interval? uint16
+--rw passive? boolean
+--rw csnp-interval? uint16
+--rw three-way-handshake? boolean
+--rw hello-padding? boolean
+--rw mesh-group-enabled? mesh-group-state
+--rw mesh-group? uint8
+--rw interface-type? interface-type
+--rw enabled? boolean
+--rw tag* uint32 {prefix-tag}?
+--rw tag64* uint64 {prefix-tag64}?
+--rw hello-authentication* [level]
| +--rw type? authentication-type
| +--rw key? string
| +--rw level level
+--rw hello-interval* [level]
| +--rw value? uint16
| +--rw level level
+--rw hello-multiplier* [level]
| +--rw value? uint16
| +--rw level level
+--rw priority* [level]
| +--rw value? uint8
| +--rw level level
+--rw af* [af]
| +--rw af string
| +--rw bfd-enabled? empty
| +--rw metric* [level]
| ...
+--rw topologies* [name]
+--rw name rt:rib-ref
+--rw metric* [level]
...
2.5. Operational State
"isis" container provides operational states for ISIS. This
container is divided in multiple components:
o system-counters : provides statistical informations about the
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
interface.
o adjacencies: provides state information about current ISIS
adjacencies.
o spf-log: provides information about SPF events on the node.
o lsp-log: provides information about LSP events on the node
(reception of an LSP or modification of local LSP).
o database: provides details on current LSDB.
o hostnames: provides information about system-id to hostname
mappings.
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 16, line 23 skipping to change at page 20, line 37
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-07.yang" <CODE BEGINS> file "ietf-isis@2014-10-24.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";
} }
skipping to change at page 17, line 26 skipping to change at page 21, line 40
&lt;mailto:kkoushik@brocade.com&gt; &lt;mailto:kkoushik@brocade.com&gt;
Yingzhen Qu Yingzhen Qu
&lt;mailto:yiqu@cisco.com&gt; &lt;mailto:yiqu@cisco.com&gt;
"; ";
description description
"The YANG module defines a generic configuration model for "The YANG module defines a generic configuration model for
ISIS common across all of the vendor implementations."; ISIS common across all of the vendor implementations.";
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 { revision 2014-10-07 {
description description
" "
* Removed spf parameters (should be part of * Removed spf parameters (should be part of
vendor specific extensions. vendor specific extensions.
* Removed hello parameters at global level. * Removed hello parameters at global level.
* Interface configuration uses a string rather * Interface configuration uses a string rather
than a reference. This permits to map to some than a reference. This permits to map to some
vendor specific configuration. vendor specific configuration.
"; ";
reference ""; reference "draft-ietf-isis-yang-isis-00";
} }
revision 2014-09-26 { revision 2014-09-26 {
description description
" "
* Add BFD support * Add BFD support
* remove max-elements to max-area-addresses * remove max-elements to max-area-addresses
"; ";
reference ""; reference "";
} }
revision 2014-09-11 { revision 2014-09-11 {
skipping to change at page 19, line 48 skipping to change at page 24, line 45
identity clear-isis-database { identity clear-isis-database {
description "Identity for the ISIS routing protocol description "Identity for the ISIS routing protocol
database reset action."; database reset action.";
} }
identity clear-isis-adjacency { identity clear-isis-adjacency {
description "Identity for the ISIS routing protocol description "Identity for the ISIS routing protocol
adjacency reset action."; adjacency reset action.";
} }
feature bfd {
description
"Support of BFD.";
}
feature overload-max-metric {
description
"Support of overload by setting
all links to max metric.";
}
feature prefix-tag { feature prefix-tag {
description description
"Add 32bit tag to prefixes"; "Add 32bit tag to prefixes";
} }
feature prefix-tag64 { feature prefix-tag64 {
description description
"Add 64bit tag to prefixes"; "Add 64bit tag to prefixes";
} }
feature reference-bandwidth { feature reference-bandwidth {
description description
"Use a reference bandwidth to compute metric."; "Use a reference bandwidth to compute metric.";
} }
feature ipv4-router-id {
description
"Support of IPv4 router ID configuration under ISIS.";
}
feature ipv6-router-id {
description
"Support of IPv6 router ID configuration under ISIS.";
}
feature multi-topology { feature multi-topology {
description description
"Multitopology routing support."; "Multitopology routing support.";
} }
feature nlpid-control { feature nlpid-control {
description description
"This feature controls the advertisement "This feature controls the advertisement
of support NLPID within ISIS configuration."; of support NLPID within ISIS configuration.";
} }
feature graceful-restart { feature graceful-restart {
description description
"Graceful restart support as per RFC5306."; "Graceful restart support as per RFC5306.";
} }
feature lsp-gen-interval-exp-delay {
description
"LSP generation delay using exp backoff.";
}
feature lsp-refresh { feature lsp-refresh {
description description
"Configuration of LSP refresh interval."; "Configuration of LSP refresh interval.";
} }
feature maximum-area-addresses { feature maximum-area-addresses {
description description
"Support of maximum-area-addresses config."; "Support of maximum-area-addresses config.";
} }
typedef instance-state-ref { typedef instance-state-ref {
type leafref { type leafref {
path "/rt:routing-state/rt:routing-instance/" path "/rt:routing-state/rt:routing-instance/"
+"rt:routing-protocols/rt:routing-protocol/rt:name"; +"rt:routing-protocols/rt:routing-protocol/rt:name";
} }
description description
"This type is used for leaves that reference state data of "This type is used for leaves that reference state data of
an ISIS protocol instance."; an ISIS protocol instance.";
} }
typedef admin-state { typedef admin-state {
type enumeration { type enumeration {
enum "up" { enum "up" {
description description
"Up state"; "Up state";
} }
enum "down" { enum "down" {
description description
"Down state"; "Down state";
} }
skipping to change at page 39, line 37 skipping to change at page 44, line 45
description description
"Reference routing instance. "Reference routing instance.
For protocol centric model, which is For protocol centric model, which is
supported in supported in
default-instance only, this could reference default-instance only, this could reference
any VRF routing-instance. any VRF routing-instance.
For VRF centric model, must reference the For VRF centric model, must reference the
enclosing routing-instance."; enclosing routing-instance.";
} }
leaf level { leaf level-type {
type level; type level;
default "level-all"; default "level-all";
description description
"This leaf describes the type of ISIS node. "This leaf describes the type of ISIS node.
A node can be level-1-only, level-2-only A node can be level-1-only, level-2-only
or level-1-2. or level-1-2.
"; ";
} }
leaf system-id { leaf system-id {
skipping to change at page 40, line 19 skipping to change at page 45, line 32
"Defines the maximum areas supported."; "Defines the maximum areas supported.";
} }
leaf-list area-address { leaf-list area-address {
type area-address; type area-address;
description description
"List of areas supported by the "List of areas supported by the
protocol instance."; protocol instance.";
} }
leaf ipv4-router-id { container mpls-te {
type inet:ipv4-address; leaf ipv4-router-id {
description if-feature ipv4-router-id;
"Router ID value that would be used in TLV 134."; type inet:ipv4-address;
} description
leaf ipv6-router-id { "Router ID value that would be used in
type inet:ipv6-address; 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 description
"Router ID value that would be used in TLV 140."; "This container handles mpls te config.";
} }
leaf reference-bandwidth { leaf reference-bandwidth {
if-feature reference-bandwidth; if-feature reference-bandwidth;
type uint32; type uint32;
units "bps"; units "bps";
description description
"This leaf defines the bandwidth for calculating "This leaf defines the bandwidth for calculating
metric."; metric.";
} }
skipping to change at page 41, line 14 skipping to change at page 46, line 35
LSP in seconds."; LSP in seconds.";
} }
leaf lsp-refresh { leaf lsp-refresh {
if-feature lsp-refresh; if-feature lsp-refresh;
type uint16; type uint16;
units "seconds"; units "seconds";
description description
"This leaf describes the refresh interval of the "This leaf describes the refresh interval of the
router LSP in seconds."; router LSP in seconds.";
} }
list lsp-gen-interval-exp-delay {
if-feature lsp-gen-interval-exp-delay;
key level;
leaf initial {
type uint16;
units "milliseconds";
description
"Initial timer.";
}
leaf incremental {
type uint16;
units "milliseconds";
description
"Incremental timer.";
}
leaf maximum {
type uint8;
units "seconds";
description
"Maximum timer.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"Configuration of exponential backoff delay
for LSP generation.";
}
container graceful-restart { container graceful-restart {
if-feature graceful-restart; if-feature graceful-restart;
leaf restart-duration {
type uint16;
units seconds;
description
"Defines the restart duration in seconds.";
}
leaf helper-disable {
type empty;
description
"If the leaf exists, helper capacity
is disabled.";
}
leaf enabled { leaf enabled {
type boolean; type boolean;
description description
"Control enabling the feature."; "Control enabling the feature.";
} }
description description
"This container activates graceful restart."; "This container activates graceful restart.";
} }
list psnp-authentication { list authentication {
key level;
leaf value {
type boolean;
default "true";
description
"This leaf describes if PSNP messages must be
authenticated.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"Container for CSNP authentication.";
}
list csnp-authentication {
key level;
leaf value {
type boolean;
default "true";
description
"This leaf describes if CSNP messages must be
authenticated.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"Container for CSNP authentication.";
}
list authentication-key {
key level; key level;
leaf value { leaf key {
type string; type string;
description description
"This leaf describes the authentication key "This leaf describes the
to be used. authentication key.";
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 leaf type {
"Container for authentication key.";
}
list authentication-type {
key level;
leaf value {
type authentication-type; type authentication-type;
description description
"This leaf describes the authentication type "This leaf describes the authentication
to be used."; type to be used.";
} }
leaf level { leaf level {
type level; type level;
description description
"Level applicability."; "Level applicability.";
} }
description description
"Container for authentication-type"; "Container for ISIS authentication.
It covers both LSPs and SNPs.";
} }
list metric-type { list metric-type {
key level; key level;
leaf value { leaf value {
type enumeration { type enumeration {
enum wide-only { enum wide-only {
description description
"Advertise new metric style only "Advertise new metric style only
skipping to change at page 44, line 48 skipping to change at page 48, line 19
type level; type level;
description description
"Level applicability."; "Level applicability.";
} }
description description
"Metric style container."; "Metric style container.";
} }
list preference { list preference {
key level; key level;
leaf value { choice granularity {
type uint8; case detail {
leaf internal {
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 description
"This leaf defines the protocol preference."; "Choice for implementation of route preference.";
} }
leaf level { leaf level {
type level; type level;
description description
"Level applicability."; "Level applicability.";
} }
description description
"This leaf defines the protocol preference."; "This leaf defines the protocol preference.";
} }
list external-preference {
key level;
leaf value {
type uint8;
description
"This leaf defines the protocol preference for
external routes.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"This leaf defines the protocol preference for
external routes.";
}
list default-metric { list default-metric {
key level; key level;
leaf value { leaf value {
type wide-metric; type wide-metric;
description description
"Value of the metric"; "Value of the metric";
} }
leaf level { leaf level {
type level; type level;
skipping to change at page 46, line 13 skipping to change at page 49, line 38
description description
"Address-family"; "Address-family";
} }
leaf enabled { leaf enabled {
type boolean; type boolean;
description description
"Describes the activation state of the "Describes the activation state of the
AF."; AF.";
} }
description
"This list permits activation
of new address families.";
}
list topologies {
if-feature multi-topology;
key "name";
leaf enabled {
type boolean;
description
"Describes the activation state of the
AF.";
}
leaf name {
type rt:rib-ref;
description "RIB";
}
list default-metric { list default-metric {
key level; key level;
leaf value { leaf value {
type wide-metric; type wide-metric;
description description
"Value of the metric"; "Value of the metric";
} }
leaf level { leaf level {
type level; type level;
description description
"Level applicability of the metric."; "Level applicability of the metric.";
} }
description description
"Defines the metric to be used by default."; "Defines the metric to be used by default.";
} }
description description
"List of address families supported"; "List of topologies";
} }
list topologies { list overload {
if-feature multi-topology; key level;
key "name"; leaf status {
leaf enabled {
type boolean; type boolean;
description description
"Describes the activation state of the "This leaf defines the overload status.";
AF.";
} }
leaf name {
type rt:rib-ref; leaf timeout {
description "RIB"; 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 description
"List of topologies"; "This leaf describes if the router is
set to overload state.";
} }
list overload {
list overload-max-metric {
if-feature overload-max-metric;
key level; key level;
leaf status { leaf status {
type boolean; type boolean;
description description
"This leaf defines the overload status."; "This leaf defines the overload status.";
} }
leaf type {
type enumeration {
enum "max-metric" {
description
"Advertise max metric for all links.";
}
enum "overload-bit" {
description
"Set overload bit";
}
}
description
"Defines how the overload status is set.";
}
leaf timeout { leaf timeout {
type uint16; type uint16;
units "seconds"; units "seconds";
description description
"This leaf defines the timeout in seconds "This leaf defines the timeout in seconds
of the overload condition."; of the overload condition.";
} }
leaf level { leaf level {
type level; type level;
description description
skipping to change at page 48, line 43 skipping to change at page 52, line 36
but network is advertised)."; but network is advertised).";
} }
leaf csnp-interval { leaf csnp-interval {
type uint16; type uint16;
units "seconds"; units "seconds";
description description
"This leaf defines the interval of CSNP "This leaf defines the interval of CSNP
messages."; messages.";
} }
leaf three-way-handshake { container hello-padding {
type boolean; leaf enabled {
description type boolean;
"This leaf defines if the interface uses default "true";
3-way handshake."; description
} "Status of Hello-padding activation.
By default, the implementation shall
pad HELLOs.";
}
leaf hello-padding {
type boolean;
description description
"This leaf defines if ISIS Hellos would "This container handles ISIS hello padding
be padded up to MTU size."; configuration.";
} }
leaf mesh-group-enabled { leaf mesh-group-enabled {
type mesh-group-state; type mesh-group-state;
description description
"Describes the mesh group state of "Describes the mesh group state of
the interface."; the interface.";
} }
leaf mesh-group { leaf mesh-group {
skipping to change at page 52, line 19 skipping to change at page 56, line 13
leaf level { leaf level {
type level; type level;
description description
"Level applicability."; "Level applicability.";
} }
description description
"This leaf describes the priority of "This leaf describes the priority of
the interface the interface
for DIS election."; for DIS election.";
} }
list metric {
key level;
leaf value {
type wide-metric;
description
"Metric value.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"Container for interface metric";
}
list af { list af {
key af; key af;
leaf af { leaf af {
type string; type string;
description description
"Address-family"; "Address-family";
} }
leaf bfd-enabled { container bfd {
type empty; if-feature bfd;
description leaf enabled {
"If the leaf is present, type boolean;
BFD is enabled."; default false;
}
list metric {
key level;
leaf value {
type wide-metric;
description
"Metric value.";
}
leaf level {
type level;
description description
"Level applicability."; "This leaf enables BFD.";
} }
description description
"Container for interface metric"; "The container describes
BFD config.";
} }
description description
"List of AFs."; "List of AFs.";
} }
list topologies { list topologies {
key name; key name;
leaf name { leaf name {
type rt:rib-ref; type rt:rib-ref;
description description
"Name of RIB."; "Name of RIB.";
} }
list metric { list metric {
key level; key level;
skipping to change at page 75, line 51 skipping to change at page 80, line 4
"If the problem is a malformed TLV, "If the problem is a malformed TLV,
the error-offset points to the start of the TLV. the error-offset points to the start of the TLV.
If the problem is with the LSP header, If the problem is with the LSP header,
the error-offset points to the suspicious byte"; the error-offset points to the suspicious byte";
} }
leaf tlv-type { leaf tlv-type {
type uint8; type uint8;
description description
"if the problem is a malformed TLV, the tlv-type is set "if the problem is a malformed TLV, the tlv-type is set
to the type value of the suspicious TLV. to the type value of the suspicious TLV.
Otherwise this leaf is not present.";
Otherwise this leaf is not present.";
} }
description description
"This notification is sent when the system "This notification is sent when the system
receives a LSP with a parse error. receives a LSP with a parse error.
The notification generation must be throttled with at least The notification generation must be throttled with at least
a 5 second gap. a 5 second gap.
"; ";
} }
notification adjacency-change { notification adjacency-change {
skipping to change at page 80, line 26 skipping to change at page 84, line 29
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536, March Protocol (NETCONF) Access Control Model", RFC 6536, March
2012. 2012.
Appendix A. Example: NETCONF <get> Reply Appendix A. Example: NETCONF <get> Reply
This section gives an example of a reply to the NETCONF <get> request This section gives an example of a reply to the NETCONF <get> request
for a device that implements the data model defined in this document. for a device that implements the data model defined in this document.
The example is written in XML. The example is written in XML.
TODO <?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<routing-instance>
<name>SLI</name>
<router-id>1.1.1.1</router-id>
<description/>
<default-ribs>
<default-rib>
<address-family>ipv4-unicast</address-family>
<rib-name>default</rib-name>
</default-rib>
</default-ribs>
<interfaces>
<interface>
<name>Loopback0</name>
</interface>
<interface>
<name>Eth1</name>
</interface>
</interfaces>
<routing-protocols>
<routing-protocol>
<name>ISIS</name>
<description/>
<type>isis:isis</type>
<connected-ribs>
<connected-rib>
<rib-name>default</rib-name>
<import-filter/>
<export-filter/>
</connected-rib>
</connected-ribs>
<isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis">
<instance>
<routing-instance>SLI</routing-instance>
<level-type>level-2</level-type>
<system-id>87FC.FCDF.4432</system-id>
<area-address>49.0001</area-address>
<mpls-te>
<ipv4-router-id>1.1.1.1</ipv4-router-id>
</mpls-te>
<lsp-lifetime>65535</lsp-lifetime>
<lsp-refresh>65000</lsp-refresh>
<authentication>
<key>ThisIsThePassword</key>
<type>plain-text</type>
<level>level-2</level>
</authentication>
<metric-type>
<value>wide</value>
</metric-type>
<default-metric>
<value>111111</value>
</default-metric>
<af>
<af>ipv4-unicast</af>
<enabled>true</enabled>
</af>
<interfaces>
<interface>
<name>Loopback0</name>
<tag>200</tag>
<metric>
<value>0</value>
</metric>
<passive>true</passive>
</interface>
<interface>
<name>Eth1</name>
<level-type>level-2</level-type>
<interface-type>point-to-point</interface-type>
<metric>
<value>167890</value>
</metric>
</interface>
</interfaces>
</instance>
</isis>
</routing-protocol>
</routing-protocols>
</routing-instance>
<ribs>
<rib>
<name>default</name>
<address-family>ipv4-unicast</address-family>
<description/>
<recipient-ribs>
<recipient-rib>
<rib-name/>
<filter/>
</recipient-rib>
</recipient-ribs>
</rib>
</ribs>
<route-filters>
<route-filter>
<name/>
<description/>
<type/>
</route-filter>
</route-filters>
</routing>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface>
<name>Loopback0</name>
<description/>
<type/>
<link-up-down-trap-enable/>
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
<mtu/>
<address>
<ip>1.1.1.1</ip>
<prefix-length>32</prefix-length>
</address>
</ipv4>
</interface>
<interface>
<name>Eth1</name>
<description/>
<type/>
<link-up-down-trap-enable/>
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
<mtu/>
<address>
<ip>10.0.0.1</ip>
<prefix-length>30</prefix-length>
</address>
</ipv4>
</interface>
</interfaces>
</data>
Authors' Addresses Authors' Addresses
Stephane Litkowski Stephane Litkowski
Orange Orange
Email: stephane.litkowski@orange.com Email: stephane.litkowski@orange.com
Derek Yeung Derek Yeung
Cisco Systems Cisco Systems
 End of changes. 61 change blocks. 
377 lines changed or deleted 719 lines changed or added

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