draft-ietf-isis-yang-isis-cfg-02.txt   draft-ietf-isis-yang-isis-cfg-03.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: September 5, 2015 A. Lindem Expires: December 25, 2015 A. Lindem
Cisco Systems Cisco Systems
J. Zhang J. Zhang
Juniper Networks Juniper Networks
L. Lhotka L. Lhotka
March 04, 2015
June 23, 2015
YANG Data Model for ISIS protocol YANG Data Model for ISIS protocol
draft-ietf-isis-yang-isis-cfg-02 draft-ietf-isis-yang-isis-cfg-03
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 on network elements. and manage ISIS protocol on network elements. It also defined an
extension module for segment routing configuration and operation.
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 42 skipping to change at page 1, line 44
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 September 5, 2015. This Internet-Draft will expire on December 25, 2015.
Copyright Notice Copyright Notice
Copyright (c) 2015 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 . . . . . . . . . . . . . . . . . . . . . . 3
2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3
2.1. ISIS Configuration . . . . . . . . . . . . . . . . . . . 5 2.1. ISIS Configuration . . . . . . . . . . . . . . . . . . . 9
2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 7 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10
2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 7 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10
2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 8 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 10
2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 10 2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 11
2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.7. Segment Routing . . . . . . . . . . . . . . . . . . . . . 10 2.7. Operational State . . . . . . . . . . . . . . . . . . . . 11
2.8. Operational State . . . . . . . . . . . . . . . . . . . . 11 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 12
3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 18 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 12
4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 19 5. Segment Routing . . . . . . . . . . . . . . . . . . . . . . . 16
5. Interaction with Other YANG Modules . . . . . . . . . . . . . 23 5.1. Segment Routing activation . . . . . . . . . . . . . . . 19
6. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.2. Advertising mapping server policy . . . . . . . . . . . . 19
7. Security Considerations . . . . . . . . . . . . . . . . . . . 110 6. Interaction with Other YANG Modules . . . . . . . . . . . . . 19
8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 111 7. ISIS YANG Module . . . . . . . . . . . . . . . . . . . . . . 20
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 112 8. ISIS Segment Routing YANG Module . . . . . . . . . . . . . . 94
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 112 9. Security Considerations . . . . . . . . . . . . . . . . . . . 106
11. Normative References . . . . . . . . . . . . . . . . . . . . 112 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 107
Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 112 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 108
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 115 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 108
13. Normative References . . . . . . . . . . . . . . . . . . . . 108
Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 108
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 111
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 39 skipping to change at page 3, line 49
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: augment /if:interfaces/if:interface:
+--rw clns-mtu? uint16 +--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 enable? boolean {admin-control}?
+--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
+--rw mpls | +--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 igp-ldp-sync {igp-ldp-sync}?
+--rw lsp-mtu? uint16 +--rw reference-bandwidth? uint32 {reference-bandwidth}?
+--rw lsp-lifetime? uint16 +--rw lsp-mtu? uint16
+--rw lsp-refresh? uint16 {lsp-refresh}? +--rw lsp-lifetime? uint16
+--rw graceful-restart {graceful-restart}? +--rw lsp-refresh? uint16 {lsp-refresh}?
| ... +--rw graceful-restart {graceful-restart}?
+--rw node-tag {node-tag}? | +--rw enable? boolean
| ... +--rw node-tag {node-tag}?
+--rw fast-reroute {fast-reroute}? | +--rw node-tag* [tag]
| ... | ...
+--rw segment-routing {segment-routing}? +--rw authentication* [level]
| ... | +--rw (authentication-type)?
+--rw authentication* [level] | | ...
| ... | +--rw level level
+--rw metric-type* [level] +--rw metric-type* [level]
| ... | +--rw value? enumeration
+--rw preference* [level] | +--rw level level
| ... +--rw preference* [level]
+--rw default-metric* [level] | +--rw (granularity)?
| ... | | ...
+--rw af* [af] {nlpid-control}? | +--rw level level
| ... +--rw default-metric* [level]
+--rw topologies* [name] {multi-topology}? | +--rw value? wide-metric
| ... | +--rw level level
+--rw overload* [level] +--rw af* [af] {nlpid-control}?
| ... | +--rw af identityref
+--rw overload-max-metric* [level] {overload-max-metric}? | +--rw enable? boolean
| ... +--rw overload* [level]
+--rw interfaces | +--rw status? boolean
| +--rw timeout? uint16
| +--rw level level
+--rw overload-max-metric* [level] {overload-max-metric}?
| +--rw status? boolean
| +--rw timeout? uint16
| +--rw level level
+--rw fast-reroute {fast-reroute}?
| +--rw lfa {lfa}?
+--rw topologies* [name] {multi-topology}?
| +--rw enable? boolean
| +--rw name rt:rib-ref
| +--rw default-metric* [level]
| | ...
| +--rw node-tag {node-tag}?
| | ...
| +--rw fast-reroute {fast-reroute}?
| ...
+--rw interfaces
+--rw interface* [name]
... ...
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 instance* [routing-instance] +--ro enable? boolean {admin-control}?
+--ro routing-instance rt:routing-instance-ref +--ro level-type? level
+--ro fast-reroute {fast-reroute}? +--ro system-id? system-id
| ... +--ro maximum-area-addresses? uint8 {maximum-area-addresses}?
+--ro topologies* [name] +--ro area-address* area-address
| ... +--ro mpls
+--ro system-counters | +--ro ipv4-router-id? inet:ipv4-address {ipv4-router-id}?
| ... | +--ro ipv6-router-id? inet:ipv6-address {ipv6-router-id}?
+--ro interfaces | +--ro igp-ldp-sync {igp-ldp-sync}?
| ... +--ro reference-bandwidth? uint32 {reference-bandwidth}?
+--ro spf-log +--ro lsp-mtu? uint16
| ... +--ro lsp-lifetime? uint16
+--ro lsp-refresh? uint16 {lsp-refresh}?
+--ro lsp-log +--ro graceful-restart {graceful-restart}?
| ... | +--ro enable? boolean
+--ro database +--ro node-tag {node-tag}?
| ... | +--ro node-tag* [tag]
+--ro hostnames | ...
+--ro authentication* [level]
| +--ro (authentication-type)?
| | ...
| +--ro level level
+--ro metric-type* [level]
| +--ro value? enumeration
| +--ro level level
+--ro preference* [level]
| +--ro (granularity)?
| | ...
| +--ro level level
+--ro default-metric* [level]
| +--ro value? wide-metric
| +--ro level level
+--ro af* [af] {nlpid-control}?
| +--ro af identityref
| +--ro enable? boolean
+--ro overload* [level]
| +--ro status? boolean
| +--ro timeout? uint16
| +--ro level level
+--ro overload-max-metric* [level] {overload-max-metric}?
| +--ro status? boolean
| +--ro timeout? uint16
| +--ro level level
+--ro fast-reroute {fast-reroute}?
| +--ro lfa {lfa}?
| +--ro protected-routes
| | ...
| +--ro nonprotected-routes
| | ...
| +--ro protection-statistics* [frr-protection-method]
| ...
+--ro topologies* [name]
| +--ro name rt:rib-ref
| +--ro fast-route {fast-reroute}?
| ...
+--ro system-counters
| +--ro level* [level]
| ...
+--ro interfaces
| +--ro interface* [interface]
| ...
+--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 2.1. ISIS Configuration
The ISIS configuration currently supports both VRF-centric and The ISIS configuration supports a VRF-centric configuration approach.
protocol-centric configuration. This may be changed in future. The isis configuration is applied directly within the appropriate
routing-instance where ISIS is activated.
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: 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:
+--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
| +--rw ipv4-router-id? inet:ipv4-address {ipv4-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 lsp-mtu? uint16
+--rw lsp-lifetime? uint16
+--rw lsp-refresh? uint16 {lsp-refresh}?
+--rw graceful-restart {graceful-restart}?
| +--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-type)?
| | +--:(key-chain) {key-chain}?
| | | +--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 value? enumeration
| +--rw level level
+--rw preference* [level]
| +--rw (granularity)?
| | +--:(detail)
| | | +--rw internal? uint8
| | | +--rw external? uint8
| | +--:(coarse)
| | +--rw default? uint8
| +--rw level level
+--rw default-metric* [level]
| +--rw value? wide-metric
| +--rw level level
+--rw af* [af] {nlpid-control}?
| +--rw af identityref
| +--rw enabled? boolean
+--rw topologies* [name] {multi-topology}?
| +--rw enabled? boolean
| +--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 value? wide-metric
| | +--rw level level
| +--rw node-tag {node-tag}?
| +--rw node-tag* [tag]
| +--rw tag uint32
+--rw overload* [level]
| +--rw status? boolean
| +--rw timeout? uint16
| +--rw level level
+--rw overload-max-metric* [level] {overload-max-metric}?
| +--rw status? boolean
| +--rw timeout? uint16
| +--rw level level
+--rw interfaces
+--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 Some specific parameters could be defined for a specific topology at
global level and also at interface level. global level and also at interface level.
skipping to change at page 8, line 13 skipping to change at page 10, line 38
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 a reference to an interface in the Interface YANG The interface is a reference to an interface in the Interface YANG
model. model.
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 TODO : interfaces.tree
+--rw interface* [name]
+--rw name if:interface-ref
+--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 (authentication-type)?
| | +--:(key-chain) {key-chain}?
| | | +--rw key-chain? key-chain:key-chain-ref
| | +--:(password)
| | +--rw key? string
| | +--rw (algorithm)?
| | ...
| +--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 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. ISO parameters 2.5. ISO parameters
Some ISO parameters may be required. Some ISO parameters may be required.
This module augments interface configuration model to support ISO This module augments interface configuration model to support ISO
configuration parameters. configuration parameters.
The clns-mtu can be defined under the interface. The clns-mtu can be defined under the interface.
skipping to change at page 10, line 45 skipping to change at page 11, line 41
remote LFA at interface only. The global "lfa" container is present remote LFA at interface only. The global "lfa" container is present
but kept empty to permit augmentation with vendor specific properties but kept empty to permit augmentation with vendor specific properties
like policies. like policies.
Remote LFA is considered as a child of LFA. Remote LFA cannot be Remote LFA is considered as a child of LFA. Remote LFA cannot be
enabled if LFA is not enabled. enabled if LFA is not enabled.
The "candidate-disabled" permit to mark an interface to not be used The "candidate-disabled" permit to mark an interface to not be used
as a backup. as a backup.
2.7. Segment Routing 2.7. Operational State
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 : provides configuration state information for each o interface : provides configuration state information for each
interface. interface.
skipping to change at page 11, line 31 skipping to change at page 12, line 20
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 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:
+--ro isis
+--ro instance* [routing-instance]
+--ro routing-instance rt:routing-instance-ref
+--ro fast-reroute {fast-reroute}?
| +--ro protected-routes
| | +--ro af-stats* [af prefix alternate]
| | +--ro af identityref
| | +--ro prefix string
| | +--ro alternate string
| | +--ro alternate-type? enumeration
| | +--ro best? boolean
| | +--ro non-best-reason? string
| | +--ro protection-available? bits
| | +--ro alternate-metric1? uint32
| | +--ro alternate-metric2? uint32
| | +--ro alternate-metric3? uint32
| +--ro nonprotected-routes
| | +--ro af-stats* [af prefix]
| | +--ro af identityref
| | +--ro prefix string
| +--ro protection-statistics* [frr-protection-method]
| +--ro frr-protection-method string
| +--ro af-stats* [af]
| +--ro af identityref
| +--ro total-routes? uint32
| +--ro unprotected-routes? uint32
| +--ro protected-routes? uint32
| +--ro linkprotected-routes? uint32
| +--ro nodeprotected-routes? uint32
+--ro topologies* [name]
| +--ro name rt:rib-ref
| +--ro fast-route {fast-reroute}?
| +--ro protected-routes
| | +--ro af-stats* [af prefix alternate]
| | +--ro af identityref
| | +--ro prefix string
| | +--ro alternate string
| | +--ro alternate-type? enumeration
| | +--ro best? boolean
| | +--ro non-best-reason? string
| | +--ro protection-available? bits
| | +--ro alternate-metric1? uint32
| | +--ro alternate-metric2? uint32
| | +--ro alternate-metric3? uint32
| +--ro nonprotected-routes
| | +--ro af-stats* [af prefix]
| | +--ro af identityref
| | +--ro prefix string
| +--ro protection-statistics* [frr-protection-method]
| +--ro frr-protection-method string
| +--ro af-stats* [af]
| +--ro af identityref
| +--ro total-routes? uint32
| +--ro unprotected-routes? uint32
| +--ro protected-routes? uint32
| +--ro linkprotected-routes? uint32
| +--ro nodeprotected-routes? uint32
+--ro system-counters
| +--ro level* [level]
| +--ro level level-number
| +--ro corrupted-lsps? uint32
| +--ro authentication-type-fails? uint32
| +--ro authentication-fails? uint32
| +--ro database-overload? uint32
| +--ro own-lsp-purge? uint32
| +--ro manual-address-drop-from-area? uint32
| +--ro max-sequence? uint32
| +--ro sequence-number-skipped? uint32
| +--ro id-len-mismatch? uint32
| +--ro partition-changes? uint32
| +--ro lsp-errors? uint32
| +--ro spf-runs? uint32
+--ro interfaces
| +--ro interfaces* [interface]
| +--ro interface string
| +--ro status
| | +--ro circuit-id? circuit-id
| | +--ro admin-state? admin-state
| | +--ro interface-type? interface-type
| | +--ro passive? empty
| | +--ro three-way-handshake? boolean
| | +--ro mesh-group-enabled? mesh-group-state
| | +--ro mesh-group? uint8
| | +--ro level* [level]
| | +--ro level level-number
| | +--ro priority? uint8
| | +--ro hello-multiplier? uint16
| | +--ro hello-interval? uint16
| | +--ro dr-hello-interval? uint32
| | +--ro metric? wide-metric
| +--ro fast-reroute {fast-reroute}?
| | +--ro lfa* [level] {lfa}?
| | +--ro candidate-disabled? boolean
| | +--ro enabled? boolean
| | +--ro remote-lfa {remote-lfa}?
| | | +--ro enabled? boolean
| | +--ro level level-number
| +--ro adjacencies
| | +--ro adjacency*
| | +--ro neighbor-systype? level
| | +--ro neighbor-sysid? system-id
| | +--ro neighbor-extended-circuit-id? extended-circuit-id
| | +--ro neighbor-snpa? snpa
| | +--ro usage? level
| | +--ro hold-timer? uint16
| | +--ro neighbor-priority? uint8
| | +--ro lastuptime? yang:timestamp
| | +--ro state? enumeration
| | +--ro adjacency-sid* [value] {segment-routing}?
| | +--ro af? identityref
| | +--ro value uint32
| | +--ro weight? uint8
| | +--ro protection-requested? boolean
| +--ro topologies* [name]
| | +--ro name rt:rib-ref
| | +--ro fast-reroute {fast-reroute}?
| | | +--ro lfa* [level] {lfa}?
| | | +--ro candidate-disabled? boolean
| | | +--ro enabled? boolean
| | | +--ro remote-lfa {remote-lfa}?
| | | | ...
| | | +--ro level level-number
| | +--ro adjacencies
| | | +--ro adjacency*
| | | +--ro neighbor-systype? level
| | | +--ro neighbor-sysid? system-id
| | | +--ro neighbor-extended-circuit-id? extended-circuit-id
| | | +--ro neighbor-snpa? snpa
| | | +--ro usage? level
| | | +--ro hold-timer? uint16
| | | +--ro neighbor-priority? uint8
| | | +--ro lastuptime? yang:timestamp
| | | +--ro state? enumeration
| | | +--ro adjacency-sid* [value] {segment-routing}?
| | | ...
| | +--ro level* [level]
| | +--ro level level-number
| | +--ro metric? wide-metric
| +--ro event-counters
| | +--ro adjacency-changes? uint32
| | +--ro adjacency-number? uint32
| | +--ro init-fails? uint32
| | +--ro adjacency-rejects? uint32
| | +--ro id-len-mismatch? uint32
| | +--ro max-area-addresses-mismatch? uint32
| | +--ro authentication-type-fails? uint32
| | +--ro authentication-fails? uint32
| | +--ro lan-dis-changes? uint32
| +--ro packet-counters
| +--ro level* [level]
| +--ro level level-number
| +--ro iih
| | +--ro in? uint32
| | +--ro out? uint32
| +--ro ish
| | +--ro in? uint32
| | +--ro out? uint32
| +--ro esh
| | +--ro in? uint32
| | +--ro out? uint32
| +--ro lsp
| | +--ro in? uint32
| | +--ro out? uint32
| +--ro psnp
| | +--ro in? uint32
| | +--ro out? uint32
| +--ro csnp
| | +--ro in? uint32
| | +--ro out? uint32
| +--ro unknown
| +--ro in? uint32
| +--ro out? uint32
+--ro spf-log
| +--ro event* [id]
| +--ro id uint32
| +--ro spf-type? enumeration
| +--ro level? level-number
| +--ro 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 23, line 19 skipping to change at page 16, line 45
| +--ro sequence? uint32 | +--ro sequence? uint32
| +--ro received-timestamp? yang:timestamp | +--ro received-timestamp? yang:timestamp
| +--ro neighbor-system-id? system-id | +--ro neighbor-system-id? system-id
+---n lsp-generation +---n lsp-generation
+--ro instance-name? string +--ro instance-name? string
+--ro instance-level? level +--ro instance-level? level
+--ro lsp-id? lsp-id +--ro lsp-id? lsp-id
+--ro sequence? uint32 +--ro sequence? uint32
+--ro send-timestamp? yang:timestamp +--ro send-timestamp? yang:timestamp
5. Interaction with Other YANG Modules 5. Segment Routing
The IS-IS SR YANG module is augmenting IS-IS module for both
configuration and operational states.
The IS-IS SR YANG module requires the base segment routing module
([I-D.litkowski-spring-sr-yang]) to be supported as there is a strong
relationship between those modules.
The figure below describe the overall structure of the isis-sr YANG
module:
module: ietf-isis-sr
augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis:
+--rw segment-routing
+--rw enabled? boolean
+--rw bindings
+--rw advertise
| +--rw policies* string
+--rw receive? boolean
augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface:
+--rw segment-routing
+--rw adjacency-sid
| +--rw advertise-adj-group-sid* [group-id]
| | +--rw group-id uint32
| +--rw advertise-protection? enumeration
+--rw prefix-sid
+--rw ipv4
| +--rw prefix-sid* [value]
| +--rw value-type? enumeration
| +--rw value uint32
| +--rw last-hop-behavior? enumeration
+--rw ipv6
+--rw prefix-sid* [value]
+--rw value-type? enumeration
+--rw value uint32
+--rw last-hop-behavior? enumeration
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis:
+--ro segment-routing
+--ro enabled? boolean
+--ro bindings
+--ro advertise
| +--ro policies* string
+--ro receive? boolean
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface:
+--ro segment-routing
+--ro adjacency-sid
| +--ro advertise-adj-group-sid* [group-id]
| | +--ro group-id uint32
| +--ro advertise-protection? enumeration
+--ro prefix-sid
+--ro ipv4
| +--ro prefix-sid* [value]
| +--ro value-type? enumeration
| +--ro value uint32
| +--ro last-hop-behavior? enumeration
+--ro ipv6
+--ro prefix-sid* [value]
+--ro value-type? enumeration
+--ro value uint32
+--ro last-hop-behavior? enumeration
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:extended-is-neighbor/isis:neighbor:
+--ro sid-list* [value]
+--ro flags? bits
+--ro weight? uint8
+--ro neighbor-id? isis:system-id
+--ro value uint32
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-is-neighbor/isis:neighbor:
+--ro sid-list* [value]
+--ro flags? bits
+--ro weight? uint8
+--ro neighbor-id? isis:system-id
+--ro value uint32
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:extended-ipv4-reachability/isis:prefixes:
+--ro sid-list* [value]
+--ro flags? bits
+--ro algorithm? uint8
+--ro value uint32
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-extended-ipv4-reachability/isis:prefixes:
+--ro sid-list* [value]
+--ro flags? bits
+--ro algorithm? uint8
+--ro value uint32
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:ipv6-reachability/isis:prefixes:
+--ro sid-list* [value]
+--ro flags? bits
+--ro algorithm? uint8
+--ro value uint32
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-ipv6-reachability/isis:prefixes:
+--ro sid-list* [value]
+--ro flags? bits
+--ro algorithm? uint8
+--ro value uint32
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp:
+--ro segment-routing-bindings* [fec range]
+--ro fec string
+--ro range uint16
+--ro flags? bits
+--ro weight? uint8
+--ro binding*
+--ro prefix-sid
| +--ro sid-list* [value]
| +--ro flags? bits
| +--ro algorithm? uint8
| +--ro value uint32
+--ro ero-metric? uint32
+--ro ero
| +--ro address-family? identityref
| +--ro loose? boolean
| +--ro address? string
+--ro backup-ero
| +--ro address-family? identityref
| +--ro loose? boolean
| +--ro address? string
+--ro unnumbered-interface-id-ero
| +--ro router-id? string
| +--ro interface-id? uint32
+--ro backup-unnumbered-interface-id-ero
+--ro router-id? string
+--ro interface-id? uint32
5.1. Segment Routing activation
Activation of segment-routing IS-IS is done by setting the "enabled"
leaf to true. This triggers advertisement of segment-routing
extensions based on the configuration parameters that have been setup
using the base segment routing module.
5.2. Advertising mapping server policy
The base segment routing module defines mapping server policies. By
default, IS-IS will not advertise nor receive any mapping server
entry. The IS-IS segment-routing module permits to advertise one or
multiple mapping server policies through the "bindings/advertise/
policies" leaf-list. The "bindings/receive" leaf permits to enable
the reception of mapping server entries.
6. 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 IS-IS specific parameters.
The "isis" module augments "/if:interfaces/if:interface" with ISO The "isis" module augments "/if:interfaces/if:interface" with ISO
specific parameters. 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 7. ISIS YANG Module
<CODE BEGINS> file "ietf-isis@2015-03-04.yang" <CODE BEGINS> file "ietf-isis@2015-06-23.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 { import ietf-yang-types {
prefix yang; prefix yang;
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
} }
import ietf-key-chain {
prefix "key-chain";
}
organization organization
"IETF ISIS Working Group"; "IETF ISIS Working Group";
contact contact
"WG List: &lt;mailto:isis-wg@ietf.org&gt; "WG List: &lt;mailto:isis-wg@ietf.org&gt;
Editor: Stephane Litkowski Editor: Stephane Litkowski
&lt;mailto:stephane.litkowski@orange.com&gt; &lt;mailto:stephane.litkowski@orange.com&gt;
Derek Yeung Derek Yeung
skipping to change at page 24, line 40 skipping to change at page 21, line 19
Ladislav Lhotka Ladislav Lhotka
&lt;mailto:llhotka@nic.cz&gt; &lt;mailto:llhotka@nic.cz&gt;
Yi Yang Yi Yang
&lt;mailto:yiya@cisco.com&gt; &lt;mailto:yiya@cisco.com&gt;
Dean Bogdanovic Dean Bogdanovic
&lt;mailto:deanb@juniper.net&gt; &lt;mailto:deanb@juniper.net&gt;
Kiran Agrahara Sreenivasa Kiran Agrahara Sreenivasa
&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;
Jeff Tantsura
&lt;mailto:jeff.tantsura@ericsson.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 2015-06-22 {
description
" * Segment routing is part os a separate module.";
reference "draft-ietf-isis-yang-isis-03";
}
revision 2015-03-03 {
description
" * Reviewed config and op state groupings.
* Add default value to lfa candidate-disabled
* Add enable leaf to isis container to reflect admin state
* Move to VRF centric only
";
reference "";
}
revision 2015-03-03 { revision 2015-03-03 {
description description
" "
* Defining hierarchy for operational states * Defining hierarchy for operational states
* Adding CLNS MTU * Adding CLNS MTU
* Adding Keychain
"; ";
reference "draft-ietf-isis-yang-isis-02"; reference "draft-ietf-isis-yang-isis-02";
} }
revision 2015-02-20 { revision 2015-02-20 {
description description
" "
* Removing igp-ldp-sync timer in IS-IS * Removing igp-ldp-sync timer in IS-IS
"; ";
reference ""; reference "";
skipping to change at page 28, line 36 skipping to change at page 25, line 30
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 definitions */ /* Feature definitions */
feature key-chain {
description
"Support of keychain for authentication.";
}
feature segment-routing { feature segment-routing {
description description
"Support of segment-routing."; "Support of segment-routing.";
} }
feature node-tag { feature node-tag {
description description
"Support of node tag."; "Support of node tag.";
} }
feature igp-ldp-sync { feature igp-ldp-sync {
description description
skipping to change at page 30, line 21 skipping to change at page 27, line 19
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.";
} }
feature admin-control {
description
"Control administrative state of ISIS.";
}
/* Type definitions */ /* Type definitions */
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.";
skipping to change at page 31, line 47 skipping to change at page 28, line 50
"Point to point interface type."; "Point to point interface type.";
} }
} }
description description
"This type defines the type of adjacency "This type defines the type of adjacency
to be established on the interface. to be established on the interface.
This is affecting the type of hello This is affecting the type of hello
message that would be used."; message that would be used.";
} }
typedef authentication-type {
type enumeration {
enum none {
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 { typedef level {
type enumeration { type enumeration {
enum "level-1" { enum "level-1" {
description description
"This enum describes L1 only capability."; "This enum describes L1 only capability.";
} }
enum "level-2" { enum "level-2" {
description description
"This enum describes L2 only capability."; "This enum describes L2 only capability.";
skipping to change at page 34, line 25 skipping to change at page 31, line 14
description description
"LSPs must not be flooded over that interface."; "LSPs must not be flooded over that interface.";
} }
} }
description description
"This type describes meshgroup state of an interface"; "This type describes meshgroup state of an interface";
} }
/* Grouping definitions */ /* Grouping definitions */
grouping admin-control {
leaf enable {
if-feature admin-control;
type boolean;
default true;
description
"Control the administrative
state.";
}
description
"Grouping for admin control.";
}
grouping adjacency-state {
container adjacencies {
list adjacency {
leaf neighbor-systype {
type level;
description
"Type of neighboring system";
}
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 usage {
type level;
description
"How is the adjacency used ?
On a p2p link this might be level 1 and 2,
but on a LAN, the usage will be level 1
between peers at L1 or level 2 between
peers at L2.";
}
leaf hold-timer {
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'.";
}
leaf state {
type enumeration {
enum "Up" {
description
"This state describes that
adjacency is established.";
}
enum "Down" {
description
"This state describes that
adjacency is NOT established.";
}
enum "Init" {
description
"This state describes that
adjacency is establishing.";
}
enum "Failed" {
description
"This state describes that
adjacency is failed.";
}
}
description
"This leaf describes the state of the
interface.";
}
description
"List of operational adjacencies.";
}
description
"This container lists the adjacencies of
the local node.";
}
description
"Adjacency state";
}
grouping fast-reroute-global-state {
container protected-routes {
list af-stats {
key "af prefix alternate";
leaf af {
type identityref {
base rt:address-family;
}
description
"Address-family";
}
leaf prefix {
type string;
description
"Protected prefix.";
}
leaf alternate {
type string;
description
"Alternate nexthop for the prefix.";
}
leaf alternate-type {
type enumeration {
enum equalcost {
description
"ECMP alternate.";
}
enum lfa {
description
"LFA alternate.";
}
enum remote-lfa {
description
"Remote LFA alternate.";
}
enum tunnel {
description
"Tunnel based alternate
(like RSVP-TE or GRE).";
}
enum ti-lfa {
description
"TI LFA alternate.";
}
enum mrt {
description
"MRT alternate.";
}
enum other {
description
"Unknown alternate type.";
}
}
description
"Type of alternate.";
}
leaf best {
type boolean;
description
"describes if the alternate is the best one.";
}
leaf non-best-reason {
type string;
description
"Information field to describe why the alternate
is not best.";
}
leaf protection-available {
type bits {
bit nodeprotect {
position 0;
description
"Node protection available.";
}
bit linkprotect {
position 1;
description
"Link protection available.";
}
bit srlgprotect {
position 2;
description
"SRLG protection available.";
}
bit downstreamprotect {
position 3;
description
"Downstream protection available.";
}
bit other {
position 4;
description
"Other protection available.";
}
}
description
"Describes protection provided by the alternate.";
}
leaf alternate-metric1 {
type uint32;
description
"Metric from PLR to destination
through the alternate path.";
}
leaf alternate-metric2 {
type uint32;
description
"Metric from PLR to the alternate node";
}
leaf alternate-metric3 {
type uint32;
description
"Metric from alternate node to the destination";
}
description
"Per AF statistics.";
}
description
"List of prefixes that are protected.";
}
container nonprotected-routes {
list af-stats {
key "af prefix";
leaf af {
type identityref {
base rt:address-family;
}
description
"Address-family";
}
leaf prefix {
type string;
description
"Protected prefix.";
}
description
"Per AF statistics.";
}
description
"List of prefixes that are not protected.";
}
list protection-statistics {
key frr-protection-method;
leaf frr-protection-method {
type string;
description
"Protection method used.";
}
list af-stats {
key af;
leaf af {
type identityref {
base rt:address-family;
}
description
"Address-family";
}
leaf total-routes {
type uint32;
description
"Total prefixes.";
}
leaf unprotected-routes {
type uint32;
description
"Total of prefixes who are
not protected.";
}
leaf protected-routes {
type uint32;
description
"Total of prefixes who are
protected.";
}
leaf linkprotected-routes {
type uint32;
description
"Total of prefixes who are
link protected.";
}
leaf nodeprotected-routes {
type uint32;
description
"Total of prefixes who are
node protected.";
}
description
"Per AF statistics.";
}
description
"Global protection statistics.";
}
description
"IPFRR states.";
}
grouping notification-instance-hdr { grouping notification-instance-hdr {
description description
"This group describes common instance specific "This group describes common instance specific
data for notifications."; data for notifications.";
leaf instance-name { leaf instance-name {
type string; type string;
description description
"Describes the name of the ISIS instance."; "Describes the name of the ISIS instance.";
} }
leaf instance-level { leaf instance-level {
skipping to change at page 36, line 22 skipping to change at page 39, line 44
and leaked to a lower level"; and leaked to a lower level";
} }
enum l1-down-external { enum l1-down-external {
description "Level 1 external route description "Level 1 external route
and leaked to a lower level"; and leaked to a lower level";
} }
} }
description description
"This leaf describes the type of ISIS route."; "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 fast-reroute-global-cfg { grouping fast-reroute-global-cfg {
description description
"This group defines global "This group defines global
configuration of IPFRR."; configuration of IPFRR.";
container fast-reroute {
if-feature fast-reroute;
description
"This container may be
augmented with global parameters
for IPFRR.";
container lfa { container lfa {
if-feature lfa; if-feature lfa;
description description
"This container may be "This container may be
augmented with global parameters augmented with global parameters
for LFA. for LFA.
Creating the container has no effect on Creating the container has no effect on
LFA activation."; LFA activation.";
} }
}
} }
grouping fast-reroute-if-cfg { grouping fast-reroute-if-cfg {
description description
"This group defines interface "This group defines interface
configuration of IPFRR."; configuration of IPFRR.";
container fast-reroute {
if-feature fast-reroute;
list lfa { list lfa {
if-feature lfa; if-feature lfa;
key level; key level;
leaf candidate-disabled { leaf candidate-disabled {
type boolean; type boolean;
default false;
description description
"Prevent the interface to be used as backup."; "Prevent the interface to be used as backup.";
} }
leaf enabled { leaf enable {
type boolean; type boolean;
description description
"Activates LFA. "Activates LFA.
This model assumes activation This model assumes activation
of per-prefix LFA."; of per-prefix LFA.";
} }
container remote-lfa { container remote-lfa {
if-feature remote-lfa; if-feature remote-lfa;
leaf enabled { leaf enable {
type boolean; type boolean;
description description
"Activates rLFA."; "Activates rLFA.";
} }
description description
"remote LFA configuration."; "remote LFA configuration.";
} }
leaf level { leaf level {
type level; type level;
description description
"Level applicability."; "Level applicability.";
} }
description description
"LFA configuration."; "LFA configuration.";
} }
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.";
}
description
"segment routing global config.";
}
}
grouping segment-routing-if-cfg {
description
"This grouping defines SR interface config";
container segment-routing {
if-feature segment-routing;
container authorize-bundle {
leaf enabled {
type boolean;
description
"Enable/disable S flag.";
}
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.";
}
}
grouping prefix-segment-id {
description
"This group defines segment routing extensions
for prefixes.";
leaf flags {
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.";
}
bit local {
position 2;
description
"If set, then the value/index carried by
the Prefix-SID has local significance.
By default the flag is UNSET.";
}
}
description
"Describes flags associated with the
segment ID.";
}
leaf algorithm {
type uint8;
description
"Algorithm to be used for path computation.";
}
leaf value {
type uint32;
description
"Value of the prefix-SID.";
}
}
grouping adjacency-segment-id {
description
"This group defines segment routing extensions
for adjacencies.";
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.";
}
bit local {
position 4;
description
"If set, then the value/index carried by
the SID has local significance.
By default the flag is SET.";
}
bit set {
position 3;
description
"When set, the S-Flag indicates that the
Adj-SID refers to a set of adjacencies";
}
}
description
"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.";
}
} }
grouping prefix-ipv4-std { grouping prefix-ipv4-std {
description description
"This group defines attributes of an "This group defines attributes of an
IPv4 standard prefix."; IPv4 standard prefix.";
leaf up-down { leaf up-down {
type boolean; type boolean;
description description
skipping to change at page 45, line 20 skipping to change at page 43, line 35
description description
"This leaf describes a list of tags associated with "This leaf describes a list of tags associated with
the prefix."; the prefix.";
} }
leaf-list tag64 { leaf-list tag64 {
type uint64; type uint64;
description description
"This leaf describes a list of 64-bit tags associated with "This leaf describes a list of 64-bit tags associated with
the prefix."; the prefix.";
} }
list prefix-segment-id {
key value;
uses prefix-segment-id;
description
"List of prefix-segment-id.";
}
} }
grouping prefix-ipv6-extended { grouping prefix-ipv6-extended {
description description
"This group defines attributes of an "This group defines attributes of an
IPv6 prefix."; IPv6 prefix.";
leaf up-down { leaf up-down {
type boolean; type boolean;
description description
"This leaf expresses the value of up/down bit."; "This leaf expresses the value of up/down bit.";
skipping to change at page 46, line 18 skipping to change at page 44, line 27
description description
"This leaf describes a list of tags associated with "This leaf describes a list of tags associated with
the prefix."; the prefix.";
} }
leaf-list tag64 { leaf-list tag64 {
type uint64; type uint64;
description description
"This leaf describes a list of 64-bit tags associated with "This leaf describes a list of 64-bit tags associated with
the prefix."; the prefix.";
} }
list prefix-segment-id {
key value;
uses prefix-segment-id;
description
"List of prefix-segment-id.";
}
} }
grouping neighbor-extended { grouping neighbor-extended {
description description
"This group defines attributes of an "This group defines attributes of an
ISIS extended neighbor."; ISIS extended neighbor.";
leaf neighbor-id { leaf neighbor-id {
type system-id; type system-id;
description description
"This leaf describes the system-id of the neighbor."; "This leaf describes the system-id of the neighbor.";
} }
leaf metric { leaf metric {
type wide-metric; type wide-metric;
description description
"This leaf describes the ISIS metric value"; "This leaf describes the ISIS metric value";
} }
list adjacency-segment-id {
key value;
uses adjacency-segment-id;
description
"List of adjacency-segment-id.";
}
} }
grouping neighbor { grouping neighbor {
description description
"This group defines attributes of an "This group defines attributes of an
ISIS standard neighbor."; ISIS standard neighbor.";
leaf neighbor-id { leaf neighbor-id {
type system-id; type system-id;
description description
"This leaf describes the system-id of the neighbor."; "This leaf describes the system-id of the neighbor.";
skipping to change at page 49, line 46 skipping to change at page 47, line 46
description description
"List of neighbors."; "List of neighbors.";
} }
description description
"This leaf describes list of ISIS neighbors. "This leaf describes list of ISIS neighbors.
ISIS reference is TLV 2."; ISIS reference is TLV 2.";
} }
container authentication { container authentication {
leaf authentication-type { leaf authentication-type {
type authentication-type; type string;
description description
"This leaf describes the authentication type "This leaf describes the authentication type
to be used."; to be used.";
} }
leaf authentication-key { leaf authentication-key {
type string; type string;
description description
"This leaf describes the authentication key "This leaf describes the authentication key
to be used. For security reason, the to be used. For security reason, the
authentication key MUST NOT be presented authentication key MUST NOT be presented
in plaintext format. Authors recommends in plaintext format. Authors recommends
to use MD5 hash to present the authentication-key."; to use MD5 hash to present the authentication-key.";
} }
description "This container describes authentication description "This container describes authentication
information of the node. ISIS reference is TLV 10."; information of the node. ISIS reference is TLV 10.";
} }
container extended-is-neighbor { container extended-is-neighbor {
list neighbor { list neighbor {
key "neighbor-id";
uses neighbor-extended; uses neighbor-extended;
description description
"List of neighbors."; "List of neighbors.";
} }
description description
"This container describes list of ISIS extended "This container describes list of ISIS extended
neighbors. neighbors.
ISIS reference is TLV 22."; ISIS reference is TLV 22.";
} }
container ipv4-internal-reachability { container ipv4-internal-reachability {
list prefixes { list prefixes {
key "ip-prefix";
uses prefix-ipv4-std; uses prefix-ipv4-std;
description description
"List of prefixes."; "List of prefixes.";
} }
description description
"This container describes list of IPv4 internal "This container describes list of IPv4 internal
reachability information. reachability information.
ISIS reference is TLV 128."; ISIS reference is TLV 128.";
} }
leaf-list protocol-supported { leaf-list protocol-supported {
type uint8; type uint8;
description description
"This leaf describes the list of "This leaf describes the list of
supported protocols. supported protocols.
ISIS reference is TLV 129."; ISIS reference is TLV 129.";
} }
container ipv4-external-reachability { container ipv4-external-reachability {
list prefixes { list prefixes {
key "ip-prefix";
uses prefix-ipv4-std; uses prefix-ipv4-std;
description description
"List of prefixes."; "List of prefixes.";
} }
description description
"This container describes list of IPv4 external "This container describes list of IPv4 external
reachability information. reachability information.
ISIS reference is TLV 130."; ISIS reference is TLV 130.";
} }
skipping to change at page 51, line 35 skipping to change at page 49, line 32
type inet:ipv4-address; type inet:ipv4-address;
description description
"This leaf describes the IPv4 Traffic Engineering "This leaf describes the IPv4 Traffic Engineering
router ID of the node. router ID of the node.
ISIS reference is TLV 134."; ISIS reference is TLV 134.";
} }
container extended-ipv4-reachability { container extended-ipv4-reachability {
list prefixes { list prefixes {
key "ip-prefix";
uses prefix-ipv4-extended; uses prefix-ipv4-extended;
description description
"List of prefixes."; "List of prefixes.";
} }
description description
"This container describes list of IPv4 extended "This container describes list of IPv4 extended
reachability information. reachability information.
ISIS reference is TLV 135."; ISIS reference is TLV 135.";
} }
skipping to change at page 52, line 17 skipping to change at page 50, line 12
leaf ipv6-te-routerid { leaf ipv6-te-routerid {
type inet:ipv6-address; type inet:ipv6-address;
description description
"This leaf describes the IPv6 Traffic Engineering "This leaf describes the IPv6 Traffic Engineering
router ID of the node. router ID of the node.
ISIS reference is TLV 140."; ISIS reference is TLV 140.";
} }
container mt-is-neighbor { container mt-is-neighbor {
list neighbor { list neighbor {
key "neighbor-id";
leaf MT-ID { leaf MT-ID {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description description
"This leaf defines the identifier "This leaf defines the identifier
of a topology."; of a topology.";
} }
uses neighbor-extended; uses neighbor-extended;
description description
"List of neighbors."; "List of neighbors.";
} }
description description
"This container describes list of ISIS multi-topology "This container describes list of ISIS multi-topology
neighbors. neighbors.
ISIS reference is TLV 223."; ISIS reference is TLV 223.";
} }
container mt-entries { container mt-entries {
list topology { list topology {
key "MT-ID";
leaf MT-ID { leaf MT-ID {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description description
"This leaf defines the identifier "This leaf defines the identifier
of a topology."; of a topology.";
} }
skipping to change at page 53, line 37 skipping to change at page 51, line 31
leaf-list ipv6-addresses { leaf-list ipv6-addresses {
type inet:ipv6-address; type inet:ipv6-address;
description description
"This leaf describes the IPv6 interface "This leaf describes the IPv6 interface
addresses of the node. addresses of the node.
ISIS reference is TLV 232."; ISIS reference is TLV 232.";
} }
container mt-extended-ipv4-reachability { container mt-extended-ipv4-reachability {
list prefixes { list prefixes {
key "ip-prefix";
leaf MT-ID { leaf MT-ID {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description description
"This leaf defines the identifier "This leaf defines the identifier
of a topology."; of a topology.";
} }
uses prefix-ipv4-extended; uses prefix-ipv4-extended;
description description
skipping to change at page 54, line 11 skipping to change at page 52, line 4
uses prefix-ipv4-extended; uses prefix-ipv4-extended;
description description
"List of prefixes."; "List of prefixes.";
} }
description description
"This container describes list of IPv4 "This container describes list of IPv4
reachability information in multi-topology reachability information in multi-topology
environment. environment.
ISIS reference is TLV 235."; ISIS reference is TLV 235.";
} }
container mt-ipv6-reachability { container mt-ipv6-reachability {
list prefixes { list prefixes {
key "ip-prefix";
leaf MT-ID { leaf MT-ID {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description description
"This leaf defines the identifier "This leaf defines the identifier
of a topology."; of a topology.";
} }
uses prefix-ipv6-extended; uses prefix-ipv6-extended;
description description
skipping to change at page 54, line 37 skipping to change at page 52, line 30
} }
description description
"This container describes list of IPv6 "This container describes list of IPv6
reachability information in multi-topology reachability information in multi-topology
environment. environment.
ISIS reference is TLV 237."; ISIS reference is TLV 237.";
} }
container ipv6-reachability { container ipv6-reachability {
list prefixes { list prefixes {
key "ip-prefix";
uses prefix-ipv6-extended; uses prefix-ipv6-extended;
description description
"List of prefixes."; "List of prefixes.";
} }
description description
"This container describes list of IPv6 "This container describes list of IPv6
reachability information. reachability information.
ISIS reference is TLV 236."; ISIS reference is TLV 236.";
} }
list segment-routing-bindings {
if-feature segment-routing;
key "fec range";
leaf fec {
type string;
description
"IP (v4 or v6) range to be bound to SIDs.";
}
leaf range {
type uint16;
description
"Describes number of elements to assign
a binding to.";
}
leaf flags {
type bits {
bit address-family {
position 7;
description
"If unset, then the Prefix FEC
carries an IPv4 Prefix.
If set then the Prefix FEC carries an
IPv6 Prefix.";
}
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.
";
}
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.
";
}
}
description
"Flags of the binding.";
}
leaf weight {
type uint8;
description
"Weight of the path for loadbalancing purpose.";
}
list binding {
container prefix-sid {
uses prefix-segment-id;
description
"Binding prefix SID to the range.";
}
leaf ero-metric {
type uint32;
description
"Cost of ERO path.";
}
container ero {
leaf address-family {
type identityref {
base rt:address-family;
}
description
"Address-family.";
}
leaf loose {
type boolean;
description
"Set to true,
if hop is a loose hop.";
}
leaf address {
type string;
description
"IP address of a node on the
path.";
}
description
"Binding ERO path to the range.";
}
container backup-ero {
leaf address-family {
type identityref {
base rt:address-family;
}
description
"Address-family.";
}
leaf loose {
type boolean;
description
"Set to true,
if hop is a loose hop.";
}
leaf address {
type string;
description
"IP address of a node on the
path.";
}
description
"Binding backup ERO path to the range.";
}
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.";
}
description
"This container describes list of SID/Label
bindings.
ISIS reference is TLV 149.";
}
list router-capabilities { list router-capabilities {
leaf flags { leaf flags {
type bits { type bits {
bit flooding { bit flooding {
position 0; position 0;
description description
"If the S bit is set(1), "If the S bit is set(1),
the IS-IS Router CAPABILITY TLV the IS-IS Router CAPABILITY TLV
MUST be flooded across the entire routing domain. MUST be flooded across the entire routing domain.
If the S bit is If the S bit is
skipping to change at page 59, line 28 skipping to change at page 53, line 37
type uint32; type uint32;
description description
"Node tag value."; "Node tag value.";
} }
description description
"List of tags."; "List of tags.";
} }
description description
"Container for node tags."; "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.
";
}
bit ipv6 {
position 6;
description
"If set, then the router is capable of
outgoing IPv6 encapsulation on all interfaces.
";
}
}
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 { leaf binary {
type binary; type binary;
description description
"This leaf describes the capability of the node. "This leaf describes the capability of the node.
Format is binary according to the protocol encoding."; Format is binary according to the protocol encoding.";
} }
description description
"This container describes the capabilities of the node. "This container describes the capabilities of the node.
This container may be extended with detailed This container may be extended with detailed
information. information.
ISIS reference is TLV 242."; ISIS reference is TLV 242.";
} }
} }
/* */ grouping isis-node-tag-cfg {
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.";
}
augment "/rt:active-route/rt:output/rt:route"
{
uses route-content;
description "ISIS-specific route attributes.";
}
augment "/if:interfaces/if:interface"
{
leaf clns-mtu {
type uint16;
description
"Defines CLNS MTU of the interface.";
}
description "ISO interface config.";
}
augment "/rt:routing/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 description
"This augments a routing protocol instance with ISIS "ISIS node tag config.";
specific parameters."; container node-tag {
container isis { if-feature node-tag;
list node-tag {
list instance { key tag;
must "count(area-address) > 0" { leaf tag {
error-message "At least one area-address type uint32;
must be configured."; description
"Node tag value.";
}
description description
"Enforce configuration of at least one area."; "List of tags.";
} }
description
"Container for node tags.";
}
}
key routing-instance; grouping isis-global-cfg {
description
"Defines the ISIS global configuration.";
leaf routing-instance { uses admin-control;
type rt:routing-instance-ref;
description
"Reference routing instance.
For protocol centric model, which is
supported in
default-instance only, this could reference
any VRF routing-instance.
For VRF centric model, must reference the
enclosing routing-instance.";
}
leaf level-type { 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.
"; ";
} }
skipping to change at page 63, line 46 skipping to change at page 56, line 25
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.";
} }
container graceful-restart { container graceful-restart {
if-feature graceful-restart; if-feature graceful-restart;
leaf enabled { leaf enable {
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.";
} }
container node-tag { uses isis-node-tag-cfg;
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.";
}
uses fast-reroute-global-cfg;
uses segment-routing-global-cfg;
list authentication { list authentication {
key level; key level;
leaf key { choice authentication-type {
type string; case key-chain {
description if-feature key-chain;
"This leaf describes the leaf key-chain {
authentication key."; type key-chain:key-chain-ref;
} description
leaf type { "Reference to a key-chain.";
type authentication-type; }
}
case password {
leaf key {
type string;
description
"This leaf describes the
authentication key.";
}
uses key-chain:crypto-algorithm-types;
}
description description
"This leaf describes the authentication "Choice of authentication.";
type to be used.";
} }
leaf level { leaf level {
type level; type level;
description description
"Level applicability."; "Level applicability.";
} }
description description
"Container for ISIS authentication. "Container for ISIS authentication.
It covers both LSPs and SNPs."; 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 67, line 17 skipping to change at page 59, line 31
if-feature nlpid-control; if-feature nlpid-control;
key af; key af;
leaf af { leaf af {
type identityref { type identityref {
base rt:address-family; base rt:address-family;
} }
description description
"Address-family"; "Address-family";
} }
leaf enabled { leaf enable {
type boolean; type boolean;
description description
"Describes the activation state of the "Describes the activation state of the
AF."; AF.";
} }
description description
"This list permits activation "This list permits activation
of new address families."; 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";
}
uses fast-reroute-global-cfg;
uses segment-routing-global-cfg;
list default-metric {
key level;
leaf value {
type wide-metric;
description
"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";
}
list overload { list overload {
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 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 69, line 40 skipping to change at page 60, line 48
leaf level { leaf level {
type level; type level;
description description
"Level applicability of the metric."; "Level applicability of the metric.";
} }
description description
"This leaf describes if the router is "This leaf describes if the router is
set to overload state."; set to overload state.";
} }
container interfaces { }
list interface {
key "name";
leaf name {
type if:interface-ref;
description
"Reference to the interface within
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.";
}
container hello-padding { grouping isis-global-topologies-cfg {
leaf enabled { description
type boolean; "Per topology config.";
default "true"; list default-metric {
description key level;
"Status of Hello-padding activation.
By default, the implementation shall
pad HELLOs.";
}
description leaf value {
"This container handles ISIS hello padding type wide-metric;
configuration."; description
"Value of the metric";
}
leaf level {
type level;
description
"Level applicability of the metric.";
}
description
"Defines the metric to be used by default.";
}
uses isis-node-tag-cfg;
}
} grouping isis-if-cfg {
description
"Grouping for interface cfg.";
leaf mesh-group-enabled { leaf level-type {
type mesh-group-state; type level;
description default "level-all";
"Describes the mesh group state of description
the interface."; "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.";
}
leaf mesh-group { container hello-padding {
when "../mesh-group-enabled = meshSet" { leaf enable {
description type boolean;
"Only valid when mesh-group-enabled default "true";
equals meshSet"; description
} "Status of Hello-padding activation.
type uint8; By default, the implementation shall
description pad HELLOs.";
"Describes the mesh group ID of }
the interface.";
}
leaf interface-type { description
type interface-type; "This container handles ISIS hello padding
description configuration.";
"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.";
}
leaf enabled { leaf mesh-group-enable {
type boolean; type mesh-group-state;
default "true"; description
description "Describes the mesh group state of
"This leaf describes the administrative the interface.";
status of the ISIS interface."; }
} leaf mesh-group {
when "../mesh-group-enable = meshSet" {
description
"Only valid when mesh-group-enable
equals meshSet";
}
type uint8;
description
"Describes the mesh group ID of
the interface.";
leaf-list tag { }
if-feature prefix-tag;
type uint32; leaf interface-type {
description type interface-type;
"This leaf defines list of tags associated description
with the interface."; "This leaf defines the type of adjacency
} to be established on the interface.
leaf-list tag64 { This is affecting the type of hello
if-feature prefix-tag64; message that would be used.";
}
type uint64; uses admin-control;
description
"This leaf defines list of 64bits tags
associated with the interface.";
}
list hello-authentication { leaf-list tag {
key level; if-feature prefix-tag;
leaf type { type uint32;
type authentication-type; description
"This leaf defines list of tags associated
with the interface.";
}
description leaf-list tag64 {
"This leaf describes the authentication if-feature prefix-tag64;
type to be used in hello messages.";
}
leaf key {
type string;
description
"This leaf describes the
authentication key
to be used in hello messages.
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 { type uint64;
key level; description
"This leaf defines list of 64bits tags
associated with the interface.";
}
leaf value { list hello-authentication {
type uint16; key level;
units "seconds";
description
"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 { choice authentication-type {
type uint16; case key-chain {
description if-feature key-chain;
"This leaf defines the number of leaf key-chain {
hello failed to be received before type key-chain:key-chain-ref;
declaring the adjacency down."; description
} "Reference to a key-chain.";
leaf level { }
type level; }
description case password {
"Level applicability."; leaf key {
} type string;
description description
"This leaf defines the number of "This leaf describes the
hello failed to be received before authentication key.";
declaring the adjacency down."; }
} uses key-chain:crypto-algorithm-types;
}
description
"Choice of authentication.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"This leaf describes the authentication type
to be used in hello messages.";
}
list priority { list hello-interval {
must 'interface-type = "broadcast"' { key level;
error-message
"Priority only applies to broadcast
interfaces.";
description
"Check for broadcast interface.";
}
key level;
leaf value {
type uint8 {
range "0 .. 127";
}
description leaf value {
"This leaf describes the priority of type uint16;
the interface units "seconds";
for DIS election."; description
} "This leaf defines the interval of
leaf level { hello messages.";
type level; }
description leaf level {
"Level applicability."; type level;
} description
description "Level applicability.";
"This leaf describes the priority of }
the interface description
for DIS election."; "This leaf defines the interval of
} hello messages.";
list metric { }
key level; list hello-multiplier {
key level;
leaf value { leaf value {
type wide-metric; type uint16;
description description
"Metric value."; "This leaf defines the number of
} hello failed to be received before
leaf level { declaring the adjacency down.";
type level; }
description leaf level {
"Level applicability."; type level;
} description
description "Level applicability.";
"Container for interface metric"; }
} description
"This leaf defines the number of
hello failed to be received before
declaring the adjacency down.";
}
list af { list priority {
key af; must 'interface-type = "broadcast"' {
error-message
"Priority only applies to broadcast
interfaces.";
description
"Check for broadcast interface.";
}
key level;
leaf value {
type uint8 {
range "0 .. 127";
}
leaf af { description
type identityref { "This leaf describes the priority of
base rt:address-family; the interface
} for DIS election.";
description }
"Address-family"; leaf level {
} type level;
container segment-routing { description
if-feature segment-routing; "Level applicability.";
list prefix-sid { }
key value; description
leaf value-type { "This leaf describes the priority of
type enumeration { the interface
enum index { for DIS election.";
description }
"The value will be list metric {
interpreted as an index."; key level;
} leaf value {
enum absolute { type wide-metric;
description description
"The value will become "Metric value.";
interpreted as an absolute }
value."; leaf level {
} type level;
} description
description "Level applicability.";
"This leaf defines how value }
must be interpreted."; description
} "Container for interface metric";
}
leaf value { list af {
type uint32; key af;
description
"Value associated with
prefix. The value must
be interpreted in the
context of value-type.";
}
leaf node-flag {
type boolean;
default true;
description
"Set prefix as a node
representative prefix.";
}
leaf last-hop-behavior {
type enumeration {
enum explicit-null {
description
"Use explicit-null for the SID.";
}
enum no-php {
description
"Do no use PHP for the SID.";
}
enum php {
description
"Use PHP for the SID.";
}
}
description
"Configure last hop behavior.";
}
description leaf af {
"List of prefix-SID associated with type identityref {
the interface."; base rt:address-family;
} }
description description
"Segment routing interface configuration."; "Address-family";
} }
container bfd { container bfd {
if-feature bfd; if-feature bfd;
leaf enabled { leaf enable {
type boolean; type boolean;
default false; default false;
description description
"This leaf enables BFD."; "This leaf enables BFD.";
} }
description description
"The container describes "The container describes
BFD config."; BFD config.";
} }
description description
"List of AFs."; "List of AFs.";
} }
list topologies { container mpls {
key name; container igp-ldp-sync {
if-feature igp-ldp-sync;
leaf enable {
type boolean;
description
"Enable/disable IGP LDP sync.";
}
description
"IGP-LDP sync configuration.";
leaf name { }
type rt:rib-ref; description
description "Container for MPLS specific configuration
"Name of RIB."; for ISIS.";
} }
list metric {
key level;
leaf value { }
type wide-metric;
description
"Metric value.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"Container for interface metric";
}
uses fast-reroute-if-cfg;
uses segment-routing-if-cfg; grouping isis-if-topologies-cfg {
description
"ISIS interface topology cfg.";
list metric {
key level;
description leaf value {
"List of topologies."; type wide-metric;
} description
"Metric value.";
}
leaf level {
type level;
description
"Level applicability.";
}
description
"Container for interface metric";
}
}
uses fast-reroute-if-cfg; /* */
uses segment-routing-if-cfg; 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.";
}
container mpls { augment "/rt:active-route/rt:output/rt:route"
container igp-ldp-sync { {
if-feature igp-ldp-sync; uses route-content;
leaf enabled { description "ISIS-specific route attributes.";
type boolean; }
description
"Enable/disable IGP LDP sync.";
}
description
"IGP-LDP sync configuration.";
}
description
"Container for MPLS specific configuration
for ISIS.";
}
description
"List of ISIS interfaces.";
}
description augment "/if:interfaces/if:interface"
"This container defines ISIS interface specific {
configuration objects."; leaf clns-mtu {
} type uint16;
description
"List of ISIS instances.";
}
description description
"This container defines ISIS specific configuration "Defines CLNS MTU of the interface.";
objects."; }
description "ISO interface config.";
} }
}
augment "/rt:routing-state/rt:routing-instance/" augment "/rt:routing/rt:routing-instance/rt:routing-protocols/"
+"rt:routing-protocols/rt:routing-protocol" { +"rt:routing-protocol" {
when "rt:type = 'isis:isis'" { when "rt:type = 'isis:isis'" {
description description
"This augment is only valid when routing protocol "This augment is only valid when routing protocol
instance type is isis."; instance type is isis.";
} }
description description
"This augments routing protocol instance states with ISIS "This augments a routing protocol instance with ISIS
specific parameters."; specific parameters.";
container isis { container isis {
config false;
list instance {
key routing-instance; must "count(area-address) > 0" {
error-message "At least one area-address
leaf routing-instance { must be configured.";
type rt:routing-instance-ref; description
description "Enforce configuration of at least one area.";
"Reference routing instance.
For protocol centric model, which is
supported in
default-instance only, this could reference
any VRF routing-instance.
For VRF centric model, must reference the
enclosing routing-instance.";
} }
container fast-reroute {
if-feature fast-reroute;
container protected-routes {
list af-stats {
key "af prefix alternate";
leaf af { uses isis-global-cfg;
type identityref {
base rt:address-family;
}
description
"Address-family";
}
leaf prefix {
type string;
description
"Protected prefix.";
}
leaf alternate {
type string;
description
"Alternate nexthop for the prefix.";
}
leaf alternate-type {
type enumeration {
enum equalcost {
description
"ECMP alternate.";
}
enum lfa {
description
"LFA alternate.";
}
enum remote-lfa {
description
"Remote LFA alternate.";
}
enum tunnel {
description
"Tunnel based alternate
(like RSVP-TE or GRE).";
}
enum ti-lfa {
description
"TI LFA alternate.";
}
enum mrt {
description
"MRT alternate.";
}
enum other {
description
"Unknown alternate type.";
}
}
description
"Type of alternate.";
}
leaf best {
type boolean;
description
"describes if the alternate is the best one.";
} container fast-reroute {
leaf non-best-reason { if-feature fast-reroute;
type string; uses fast-reroute-global-cfg;
description description
"Information field to describe why the alternate "IPFRR.";
is not best."; }
} list topologies {
leaf protection-available { if-feature multi-topology;
type bits {
bit nodeprotect {
position 0;
description
"Node protection available.";
}
bit linkprotect {
position 1;
description
"Link protection available.";
}
bit srlgprotect {
position 2;
description
"SRLG protection available.";
}
bit downstreamprotect {
position 3;
description
"Downstream protection available.";
}
bit other {
position 4;
description
"Other protection available.";
}
}
description
"Describes protection provided by the alternate.";
}
leaf alternate-metric1 {
type uint32;
description
"Metric from PLR to destination
through the alternate path.";
}
leaf alternate-metric2 {
type uint32;
description
"Metric from PLR to the alternate node";
} key "name";
leaf alternate-metric3 {
type uint32;
description
"Metric from alternate node to the destination";
}
description leaf enable {
"Per AF statistics."; type boolean;
}
description description
"List of prefixes that are protected."; "Control enabling of topologies";
}
leaf name {
type rt:rib-ref;
description "RIB";
} }
container nonprotected-routes { uses isis-global-topologies-cfg;
list af-stats { container fast-reroute {
key "af prefix"; if-feature fast-reroute;
uses fast-reroute-global-cfg;
leaf af { description
type identityref { "IPFRR.";
base rt:address-family;
}
description
"Address-family";
}
leaf prefix {
type string;
description
"Protected prefix.";
}
description
"Per AF statistics.";
}
description
"List of prefixes that are not protected.";
} }
list interfaces { description
key interface; "List of topologies";
leaf interface { }
type string;
description
"This leaf describes the name
of the interface.";
}
leaf protection-enabled { container interfaces {
type boolean; list interface {
description key "name";
"This leaf describes if protection leaf name {
is requested for the interface."; type if:interface-ref;
}
leaf candidate-disabled {
type boolean;
description description
"This leaf describes if interface "Reference to the interface within
is prevented to be used as backup."; the routing-instance.";
} }
uses isis-if-cfg;
container fast-reroute {
if-feature fast-reroute;
uses fast-reroute-if-cfg;
description description
"Interface fast reroute state."; "IPFRR.";
} }
list protection-statistics { list topologies {
key frr-protection-method; key name;
leaf frr-protection-method {
type string;
description
"Protection method used.";
}
list af-stats {
key af;
leaf af { leaf name {
type identityref { type rt:rib-ref;
base rt:address-family;
}
description
"Address-family";
}
leaf total-routes {
type uint32;
description
"Total prefixes.";
}
leaf unprotected-routes {
type uint32;
description description
"Total of prefixes who are "Name of RIB.";
not protected.";
} }
leaf protected-routes { container fast-reroute {
type uint32; if-feature fast-reroute;
uses fast-reroute-if-cfg;
description description
"Total of prefixes who are "IPFRR.";
protected.";
} }
leaf linkprotected-routes { uses isis-if-topologies-cfg;
type uint32;
description
"Total of prefixes who are
link protected.";
}
leaf nodeprotected-routes {
type uint32;
description
"Total of prefixes who are
node protected.";
}
description description
"Per AF statistics."; "List of topologies.";
} }
description
"List of ISIS interfaces.";
}
description
"This container defines ISIS interface specific
configuration objects.";
}
description
"This container defines ISIS specific configuration
objects.";
}
}
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;
uses isis-global-cfg;
container fast-reroute {
if-feature fast-reroute;
uses fast-reroute-global-cfg;
uses fast-reroute-global-state;
description
"IPFRR states.";
}
list topologies {
key name;
leaf name {
type rt:rib-ref;
description description
"Global protection statistics."; "Name of RIB.";
}
container fast-route {
if-feature fast-reroute;
uses fast-reroute-global-cfg;
uses fast-reroute-global-state;
description
"IPFRR states.";
} }
description description
"IPFRR states."; "List of topologies.";
} }
container system-counters { container system-counters {
list level { list level {
key level; key level;
leaf level { leaf level {
type level-number; type level-number;
description description
"This leaf describes the ISIS level."; "This leaf describes the ISIS level.";
skipping to change at page 85, line 16 skipping to change at page 73, line 4
"Number of LSPs with errors we have "Number of LSPs with errors we have
received."; received.";
} }
leaf spf-runs { leaf spf-runs {
type uint32; type uint32;
description description
"Number of times we ran SPF at this level."; "Number of times we ran SPF at this level.";
} }
description description
"List of supported levels."; "List of supported levels.";
} }
description description
"The container defines a list of counters "The container defines a list of counters
for the IS."; for the IS.";
} }
container interfaces { container interfaces {
list interfaces { list interface {
key interface; key interface;
leaf interface { leaf interface {
type string; type string;
description description
"This leaf describes the name "This leaf describes the name
of the interface."; of the interface.";
} }
container status { uses isis-if-cfg;
leaf circuit-id { container fast-reroute {
type circuit-id; if-feature fast-reroute;
description uses fast-reroute-if-cfg;
"This leaf describes the circuit-id description
associated with the interface."; "IPFRR.";
} }
leaf admin-state { uses adjacency-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 passive {
type empty;
description
"The interface is included in LSP, but
does not run ISIS protocol.";
}
leaf three-way-handshake {
type boolean;
description
"The interface uses 3-way handshake.";
}
leaf mesh-group-enabled {
type mesh-group-state;
description
"Mesh group status.";
}
leaf mesh-group {
type uint8;
description
"Mesh group value.";
}
list level {
key level;
leaf level { list topologies {
type level; key name;
description
"Level associated with the interface.";
}
leaf priority {
type uint8;
description
"Priority for becoming the LAN DIS.";
}
leaf hello-multiplier {
type uint16;
description
"Hello multiplier.";
}
leaf hello-interval {
type uint16;
description
"Hello interval in msec.";
}
leaf dr-hello-interval {
type uint32;
description
"Hello interval used by DIS in msec.";
}
leaf metric { leaf name {
type empty; type rt:rib-ref;
description
"The interface is included in LSP, but
does not run ISIS protocol.";
}
description description
"Per level states."; "Name of RIB.";
} }
uses isis-if-topologies-cfg;
container fast-reroute {
if-feature fast-reroute;
uses fast-reroute-if-cfg;
description
"IPFRR.";
}
uses adjacency-state;
description description
"Provides ISIS interface status parameters."; "List of topologies.";
} }
container event-counters { container event-counters {
leaf adjacency-changes { leaf adjacency-changes {
type uint32; type uint32;
description description
"The number of times an adjacency state "The number of times an adjacency state
change has occured on this interface."; change has occured on this interface.";
} }
leaf adjacency-number { leaf adjacency-number {
type uint32; type uint32;
skipping to change at page 91, line 17 skipping to change at page 77, line 47
description description
"Provides packet counters per level."; "Provides packet counters per level.";
} }
description description
"List of interfaces."; "List of interfaces.";
} }
description description
"The container defines operational parameters "The container defines operational parameters
of interfaces."; of interfaces.";
} }
container adjacencies {
list adjacency {
leaf interface {
type string;
description
"This leaf describes the name
of the interface.";
}
leaf neighbor-systype {
type level;
description
"Type of neighboring system";
}
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 usage {
type level;
description
"How is the adjacency used ?
On a p2p link this might be level 1 and 2,
but on a LAN, the usage will be level 1
between peers at L1 or level 2 between
peers at L2.";
}
leaf hold-timer {
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'.";
}
leaf state {
type enumeration {
enum "Up" {
description
"This state describes that
adjacency is established.";
}
enum "Down" {
description
"This state describes that
adjacency is NOT established.";
}
enum "Init" {
description
"This state describes that
adjacency is establishing.";
}
enum "Failed" {
description
"This state describes that
adjacency is failed.";
}
}
description
"This leaf describes the state of the
interface.";
}
list adjacency-sid {
if-feature segment-routing;
key value;
leaf af {
type identityref {
base rt:address-family;
}
description
"Address-family associated with the
segment ID";
}
leaf value {
type uint32;
description
"Value of the Adj-SID.";
}
leaf weight {
type uint8;
description
"Weight associated with
the adjacency SID.";
}
leaf protection-requested {
type boolean;
description
"Describe if the adjacency SID
must be protected.";
}
description
"List of adjacency Segment IDs.";
}
description
"List of operational adjacencies.";
}
description
"This container lists the adjacencies of
the local node.";
}
container spf-log { container spf-log {
list event { list event {
key id; key id;
leaf id { leaf id {
type uint32; type uint32;
description description
"This leaf defines the event identifier. "This leaf defines the event identifier.
This is a purely internal value."; This is a purely internal value.";
} }
skipping to change at page 99, line 25 skipping to change at page 83, line 19
description description
"List of system-id/hostname associations"; "List of system-id/hostname associations";
} }
description description
"This container describes the list "This container describes the list
of binding between system-id and of binding between system-id and
hostnames."; hostnames.";
} }
description
"List of ISIS instances.";
}
description description
"This container defines various ISIS states objects."; "This container defines various ISIS states objects.";
} }
} }
/* RPC methods */ /* RPC methods */
rpc clear-adjacency { rpc clear-adjacency {
description description
"This RPC request clears a particular "This RPC request clears a particular
skipping to change at page 110, line 46 skipping to change at page 94, line 35
"This notification is sent when a LSP "This notification is sent when a LSP
is regenerated. is regenerated.
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. ";
} }
} }
<CODE ENDS> <CODE ENDS>
7. Security Considerations 8. ISIS Segment Routing YANG Module
<CODE BEGINS> file "ietf-isis-sr@2015-06-23.yang"
module ietf-isis-sr {
namespace "urn:ietf:params:xml:ns:"
+ "yang:ietf-isis-sr";
prefix isis-sr;
import ietf-inet-types {
prefix "inet";
}
import ietf-routing {
prefix "rt";
}
import ietf-interfaces {
prefix "if";
}
import ietf-segment-routing {
prefix "sr";
}
import ietf-isis {
prefix "isis";
}
organization
"IETF ISIS Working Group";
contact
"WG List: &lt;mailto:spring@ietf.org&gt;
Editor: Stephane Litkowski
&lt;mailto:stephane.litkowski@orange.com&gt;
Acee Lindem
&lt;mailto:acee@cisco.com&gt;
Yingzhen Qu
&lt;mailto:yiqu@cisco.com&gt;
Pushpasis Sarkar
&lt;mailto:psarkar@juniper.net&gt;
Ing-Wher Chen
&lt;mailto:ing-wher.chen@ericsson.com&gt;
Jeff Tantsura
&lt;mailto:jeff.tantsura@ericsson.com&gt;
";
description
"The YANG module defines a generic configuration model for
Segment routing ISIS extensions common across all of the vendor
implementations.";
revision 2015-05-27 {
description "
* Initialization
";
reference "";
}
/* Identities */
/* Features */
/* Groupings */
grouping adjacency-state {
description
"This group will extend adjacency state.";
list adjacency-sid {
key value;
leaf af {
type identityref {
base rt:address-family;
}
description
"Address-family associated with the
segment ID";
}
leaf value {
type uint32;
description
"Value of the Adj-SID.";
}
leaf weight {
type uint8;
description
"Weight associated with
the adjacency SID.";
}
leaf protection-requested {
type boolean;
description
"Describe if the adjacency SID
must be protected.";
}
description
"List of adjacency Segment IDs.";
}
}
grouping prefix-segment-id {
description
"This group defines segment routing extensions
for prefixes.";
list sid-list {
key value;
leaf flags {
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 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.";
}
bit local {
position 2;
description
"If set, then the value/index carried by
the Prefix-SID has local significance.
By default the flag is UNSET.";
}
}
description
"Describes flags associated with the
segment ID.";
}
leaf algorithm {
type uint8;
description
"Algorithm to be used for path computation.";
}
leaf value {
type uint32;
description
"Value of the prefix-SID.";
}
description
"List of segments.";
}
}
grouping adjacency-segment-id {
description
"This group defines segment routing extensions
for adjacencies.";
list sid-list {
key value;
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.";
}
bit local {
position 4;
description
"If set, then the value/index carried by
the SID has local significance.
By default the flag is SET.";
}
bit set {
position 3;
description
"When set, the S-Flag indicates that the
Adj-SID refers to a set of adjacencies";
}
}
description
"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 isis: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
"List of segments.";
}
}
grouping segment-routing-binding-tlv {
list segment-routing-bindings {
key "fec range";
leaf fec {
type string;
description
"IP (v4 or v6) range to be bound to SIDs.";
}
leaf range {
type uint16;
description
"Describes number of elements to assign
a binding to.";
}
leaf flags {
type bits {
bit address-family {
position 7;
description
"If unset, then the Prefix FEC
carries an IPv4 Prefix.
If set then the Prefix FEC carries an
IPv6 Prefix.";
}
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.
";
}
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.
";
}
}
description
"Flags of the binding.";
}
leaf weight {
type uint8;
description
"Weight of the path for loadbalancing purpose.";
}
list binding {
container prefix-sid {
uses prefix-segment-id;
description
"Binding prefix SID to the range.";
}
leaf ero-metric {
type uint32;
description
"Cost of ERO path.";
}
container ero {
leaf address-family {
type identityref {
base rt:address-family;
}
description
"Address-family.";
}
leaf loose {
type boolean;
description
"Set to true,
if hop is a loose hop.";
}
leaf address {
type string;
description
"IP address of a node on the
path.";
}
description
"Binding ERO path to the range.";
}
container backup-ero {
leaf address-family {
type identityref {
base rt:address-family;
}
description
"Address-family.";
}
leaf loose {
type boolean;
description
"Set to true,
if hop is a loose hop.";
}
leaf address {
type string;
description
"IP address of a node on the
path.";
}
description
"Binding backup ERO path to the range.";
}
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.";
}
description
"This container describes list of SID/Label
bindings.
ISIS reference is TLV 149.";
}
description
"Defines binding TLV for database.";
}
/* Cfg */
augment "/rt:routing/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+
"/isis:isis" {
when "rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol configuration
with segment routing.";
uses sr:controlplane-cfg;
}
augment "/rt:routing/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+
"/isis:isis/isis:interfaces/isis:interface" {
when "rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol configuration
with segment routing.";
uses sr:igp-interface-cfg;
}
/* Operational states */
augment "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+
"/isis:isis" {
when "rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol configuration
with segment routing.";
uses sr:controlplane-cfg;
}
augment "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+
"/isis:isis/isis:interfaces/isis:interface" {
when "rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol configuration
with segment routing.";
uses sr:igp-interface-cfg;
}
augment "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+
"/isis:isis/isis:interfaces/isis:interface" +
"/isis:adjacencies/isis:adjacency" {
when "rt:type = 'isis:isis'" {
description
"This augment ISIS routing protocol when used";
}
description
"This augments ISIS protocol configuration
with segment routing.";
uses adjacency-state;
}
augment "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+
"/isis:isis/isis:database/isis:level-db/isis:lsp"+
"/isis:extended-is-neighbor/isis:neighbor" {
description
"This augments ISIS protocol LSDB neighbor.";
uses adjacency-segment-id;
}
augment "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+
"/isis:isis/isis:database/isis:level-db/isis:lsp"+
"/isis:mt-is-neighbor/isis:neighbor" {
description
"This augments ISIS protocol LSDB neighbor.";
uses adjacency-segment-id;
}
augment "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+
"/isis:isis/isis:database/isis:level-db/isis:lsp"+
"/isis:extended-ipv4-reachability/isis:prefixes" {
description
"This augments ISIS protocol LSDB prefix.";
uses prefix-segment-id;
}
augment "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+
"/isis:isis/isis:database/isis:level-db/isis:lsp"+
"/isis:mt-extended-ipv4-reachability/isis:prefixes" {
description
"This augments ISIS protocol LSDB prefix.";
uses prefix-segment-id;
}
augment "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+
"/isis:isis/isis:database/isis:level-db/isis:lsp"+
"/isis:ipv6-reachability/isis:prefixes" {
description
"This augments ISIS protocol LSDB prefix.";
uses prefix-segment-id;
}
augment "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+
"/isis:isis/isis:database/isis:level-db/isis:lsp"+
"/isis:mt-ipv6-reachability/isis:prefixes" {
description
"This augments ISIS protocol LSDB prefix.";
uses prefix-segment-id;
}
augment "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+
"/isis:isis/isis:database/isis:level-db/isis:lsp" {
description
"This augments ISIS protocol LSDB.";
uses segment-routing-binding-tlv;
}
/* Notifications */
}
<CODE ENDS>
9. Security Considerations
Configuration and state data defined in this document are designed to Configuration and state data defined in this document are designed to
be accessed via the NETCONF protocol [RFC6241]. be accessed via the NETCONF protocol [RFC6241].
As ISIS is an IGP protocol (critical piece of the network), ensuring As ISIS is an IGP protocol (critical piece of the network), ensuring
stability and security of the protocol is mandatory for the network stability and security of the protocol is mandatory for the network
service. service.
Authors recommends to implement NETCONF access control model Authors recommends to implement NETCONF access control model
([RFC6536]) to restrict access to all or part of the configuration to ([RFC6536]) to restrict access to all or part of the configuration to
skipping to change at page 111, line 45 skipping to change at page 107, line 45
presented in the description of the /isis-state/database/level- presented in the description of the /isis-state/database/level-
1/lsp/authentication/authentication-key, the authentication MUST 1/lsp/authentication/authentication-key, the authentication MUST
never be presented in plaintext format for security reason. Authors never be presented in plaintext format for security reason. Authors
recommends the usage of MD5 to present the authentication-key. recommends the usage of MD5 to present the authentication-key.
Some authentication-key may also be present in the /isis Some authentication-key may also be present in the /isis
configuration. When configuring ISIS using the NETCONF protocol, configuration. When configuring ISIS using the NETCONF protocol,
authors recommends the usage of secure transport of NETCONF using SSH authors recommends the usage of secure transport of NETCONF using SSH
([RFC6242]). ([RFC6242]).
8. Contributors 10. Contributors
Authors would like to thank Kiran Agrahara Sreenivasa, Dean Authors would like to thank Kiran Agrahara Sreenivasa, Dean
Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the
draft. draft.
9. Acknowledgements 11. Acknowledgements
TBD. TBD.
10. IANA Considerations 12. IANA Considerations
TBD. TBD.
11. Normative References 13. Normative References
[I-D.ietf-netmod-routing-cfg] [I-D.ietf-netmod-routing-cfg]
Lhotka, L., "A YANG Data Model for Routing Management", Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
draft-ietf-netmod-routing-cfg-16 (work in progress), Management", draft-ietf-netmod-routing-cfg-19 (work in
October 2014. progress), May 2015.
[I-D.litkowski-spring-sr-yang]
Litkowski, S., Lindem, A., Sarkar, P., and H. Chen, "YANG
Data Model for Segment Routing", draft-litkowski-spring-
sr-yang-00 (work in progress), March 2015.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the
Network Configuration Protocol (NETCONF)", RFC 6020,
October 2010.
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A.
Bierman, "Network Configuration Protocol (NETCONF)", RFC Bierman, "Network Configuration Protocol (NETCONF)", RFC
6241, June 2011. 6241, June 2011.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, June 2011. Shell (SSH)", RFC 6242, June 2011.
[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.
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<routing-instance> <routing-instance>
<name>SLI</name> <name>SLI</name>
<router-id>1.1.1.1</router-id> <router-id>1.1.1.1</router-id>
<description/> <description/>
<default-ribs> <default-ribs>
<default-rib> <default-rib>
<address-family>ipv4-unicast</address-family> <address-family>ipv4-unicast</address-family>
<rib-name>default</rib-name> <rib-name>default</rib-name>
</default-rib> </default-rib>
</default-ribs> </default-ribs>
<interfaces> <interfaces>
<interface> <interface>
<name>Loopback0</name> <name>Loopback0</name>
</interface> </interface>
<interface> <interface>
<name>Eth1</name> <name>Eth1</name>
</interface> </interface>
</interfaces> </interfaces>
<routing-protocols> <routing-protocols>
<routing-protocol> <routing-protocol>
<name>ISIS</name> <name>ISIS</name>
<description/> <description/>
<type>isis:isis</type> <type>isis:isis</type>
<connected-ribs> <connected-ribs>
<connected-rib> <connected-rib>
<rib-name>default</rib-name> <rib-name>default</rib-name>
<import-filter/> <import-filter/>
<export-filter/> <export-filter/>
</connected-rib> </connected-rib>
</connected-ribs> </connected-ribs>
<isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis"> <isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis">
<instance> <instance>
<routing-instance>SLI</routing-instance> <routing-instance>SLI</routing-instance>
<level-type>level-2</level-type> <level-type>level-2</level-type>
<system-id>87FC.FCDF.4432</system-id> <system-id>87FC.FCDF.4432</system-id>
<area-address>49.0001</area-address> <area-address>49.0001</area-address>
<mpls-te> <mpls-te>
<ipv4-router-id>1.1.1.1</ipv4-router-id> <ipv4-router-id>1.1.1.1</ipv4-router-id>
</mpls-te> </mpls-te>
<lsp-lifetime>65535</lsp-lifetime> <lsp-lifetime>65535</lsp-lifetime>
<lsp-refresh>65000</lsp-refresh> <lsp-refresh>65000</lsp-refresh>
<authentication> <authentication>
<key>ThisIsThePassword</key> <key>ThisIsThePassword</key>
<type>plain-text</type> <type>plain-text</type>
<level>level-2</level> <level>level-2</level>
</authentication> </authentication>
<metric-type> <metric-type>
<value>wide</value> <value>wide</value>
</metric-type> </metric-type>
<default-metric> <default-metric>
<value>111111</value> <value>111111</value>
</default-metric> </default-metric>
<af> <af>
<af>ipv4-unicast</af> <af>ipv4-unicast</af>
<enabled>true</enabled> <enabled>true</enabled>
</af> </af>
<interfaces> <interfaces>
<interface> <interface>
<name>Loopback0</name> <name>Loopback0</name>
<tag>200</tag> <tag>200</tag>
<metric> <metric>
<value>0</value> <value>0</value>
</metric> </metric>
<passive>true</passive> <passive>true</passive>
</interface> </interface>
<interface> <interface>
<name>Eth1</name> <name>Eth1</name>
<level-type>level-2</level-type> <level-type>level-2</level-type>
<interface-type>point-to-point</interface-type> <interface-type>point-to-point</interface-type>
<metric> <metric>
<value>167890</value> <value>167890</value>
</metric> </metric>
</interface> </interface>
</interfaces> </interfaces>
</instance> </instance>
</isis> </isis>
</routing-protocol> </routing-protocol>
</routing-protocols> </routing-protocols>
</routing-instance> </routing-instance>
<ribs> <ribs>
<rib> <rib>
<name>default</name> <name>default</name>
<address-family>ipv4-unicast</address-family> <address-family>ipv4-unicast</address-family>
<description/> <description/>
<recipient-ribs> <recipient-ribs>
<recipient-rib> <recipient-rib>
<rib-name/> <rib-name/>
<filter/> <filter/>
</recipient-rib> </recipient-rib>
</recipient-ribs> </recipient-ribs>
</rib> </rib>
</ribs> </ribs>
<route-filters> <route-filters>
<route-filter> <route-filter>
<name/> <name/>
<description/> <description/>
<type/> <type/>
</route-filter> </route-filter>
</route-filters> </route-filters>
</routing> </routing>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface> <interface>
<name>Loopback0</name> <name>Loopback0</name>
<description/> <description/>
<type/> <type/>
<link-up-down-trap-enable/> <link-up-down-trap-enable/>
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
<mtu/> <mtu/>
<address> <address>
<ip>1.1.1.1</ip> <ip>1.1.1.1</ip>
<prefix-length>32</prefix-length> <prefix-length>32</prefix-length>
</address> </address>
</ipv4> </ipv4>
</interface> </interface>
<interface> <interface>
<name>Eth1</name> <name>Eth1</name>
<description/> <description/>
<type/> <type/>
<link-up-down-trap-enable/> <link-up-down-trap-enable/>
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
<mtu/> <mtu/>
<address> <address>
<ip>10.0.0.1</ip> <ip>10.0.0.1</ip>
<prefix-length>30</prefix-length> <prefix-length>30</prefix-length>
</address> </address>
</ipv4> </ipv4>
</interface> </interface>
</interfaces> </interfaces>
</data> </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. 161 change blocks. 
2228 lines changed or deleted 2016 lines changed or added

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