idnits 2.17.1
draft-ietf-isis-yang-isis-cfg-31.txt:
Checking boilerplate required by RFC 5378 and the IETF Trust (see
https://trustee.ietf.org/license-info):
----------------------------------------------------------------------------
No issues found here.
Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt:
----------------------------------------------------------------------------
No issues found here.
Checking nits according to https://www.ietf.org/id-info/checklist :
----------------------------------------------------------------------------
== There are 1 instance of lines with non-RFC2606-compliant FQDNs in the
document.
Miscellaneous warnings:
----------------------------------------------------------------------------
== The copyright year in the IETF Trust and authors Copyright Line does not
match the current year
== Line 98 has weird spacing: '... -13 to versi...'
== Line 99 has weird spacing: '... -12 to versi...'
== Line 100 has weird spacing: '... -09 to versi...'
== Line 101 has weird spacing: '... -08 to versi...'
== Line 102 has weird spacing: '... -07 to versi...'
== (8 more instances...)
-- The document date (January 21, 2019) is 1921 days in the past. Is this
intentional?
Checking references for intended status: Proposed Standard
----------------------------------------------------------------------------
(See RFCs 3967 and 4897 for information about using normative references
to lower-maturity documents in RFCs)
-- Possible downref: Non-RFC (?) normative reference: ref. 'ISO-10589'
** Obsolete normative reference: RFC 5306 (Obsoleted by RFC 8706)
** Obsolete normative reference: RFC 7810 (Obsoleted by RFC 8570)
Summary: 2 errors (**), 0 flaws (~~), 8 warnings (==), 2 comments (--).
Run idnits with the --verbose option for more detailed information about
the items above.
--------------------------------------------------------------------------------
2 IS-IS Working Group S. Litkowski
3 Internet-Draft Orange
4 Intended status: Standards Track D. Yeung
5 Expires: July 25, 2019 Arrcus, Inc
6 A. Lindem
7 Cisco Systems
8 J. Zhang
9 Juniper Networks
10 L. Lhotka
11 CZ.NIC
12 January 21, 2019
14 YANG Data Model for IS-IS Protocol
15 draft-ietf-isis-yang-isis-cfg-31
17 Abstract
19 This document defines a YANG data model that can be used to configure
20 and manage IS-IS protocol on network elements.
22 Requirements Language
24 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
25 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
26 "OPTIONAL" in this document are to be interpreted as described in BCP
27 14 [RFC2119] [RFC8174] when, and only when, they appear in all
28 capitals, as shown here.
30 Status of This Memo
32 This Internet-Draft is submitted in full conformance with the
33 provisions of BCP 78 and BCP 79.
35 Internet-Drafts are working documents of the Internet Engineering
36 Task Force (IETF). Note that other groups may also distribute
37 working documents as Internet-Drafts. The list of current Internet-
38 Drafts is at https://datatracker.ietf.org/drafts/current/.
40 Internet-Drafts are draft documents valid for a maximum of six months
41 and may be updated, replaced, or obsoleted by other documents at any
42 time. It is inappropriate to use Internet-Drafts as reference
43 material or to cite them other than as "work in progress."
45 This Internet-Draft will expire on July 25, 2019.
47 Copyright Notice
49 Copyright (c) 2019 IETF Trust and the persons identified as the
50 document authors. All rights reserved.
52 This document is subject to BCP 78 and the IETF Trust's Legal
53 Provisions Relating to IETF Documents
54 (https://trustee.ietf.org/license-info) in effect on the date of
55 publication of this document. Please review these documents
56 carefully, as they describe your rights and restrictions with respect
57 to this document. Code Components extracted from this document must
58 include Simplified BSD License text as described in Section 4.e of
59 the Trust Legal Provisions and are provided without warranty as
60 described in the Simplified BSD License.
62 Table of Contents
64 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
65 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3
66 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9
67 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10
68 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10
69 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12
70 2.5. Authentication Parameters . . . . . . . . . . . . . . . 19
71 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . 20
72 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 20
73 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 20
74 2.9. Operational States . . . . . . . . . . . . . . . . . . . 21
75 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 21
76 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 21
77 5. Interaction with Other YANG Modules . . . . . . . . . . . . 23
78 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 23
79 7. Security Considerations . . . . . . . . . . . . . . . . . . . 104
80 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 105
81 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 105
82 10. Change log for ietf-isis YANG module . . . . . . . . . . . . 105
83 10.1. From version -29 to version -30 . . . . . . . . . . . . 105
84 10.2. From version -28 to version -29 . . . . . . . . . . . . 106
85 10.3. From version -27 to version -28 . . . . . . . . . . . . 106
86 10.4. From version -26 to version -27 . . . . . . . . . . . . 106
87 10.5. From version -25 to version -26 . . . . . . . . . . . . 106
88 10.6. From version -24 to version -25 . . . . . . . . . . . . 106
89 10.7. From version -22 to version -24 . . . . . . . . . . . . 107
90 10.8. From version -21 to version -22 . . . . . . . . . . . . 107
91 10.9. From version -20 to version -21 . . . . . . . . . . . . 107
92 10.10. From version -19 to version -20 . . . . . . . . . . . . 108
93 10.11. From version -18 to version -19 . . . . . . . . . . . . 108
94 10.12. From version -17 to version -18 . . . . . . . . . . . . 108
95 10.13. From version -16 to version -17 . . . . . . . . . . . . 108
96 10.14. From version -15 to version -16 . . . . . . . . . . . . 108
97 10.15. From version -14 to version -15 . . . . . . . . . . . . 108
98 10.16. From version -13 to version -14 . . . . . . . . . . . . 109
99 10.17. From version -12 to version -13 . . . . . . . . . . . . 109
100 10.18. From version -09 to version -12 . . . . . . . . . . . . 109
101 10.19. From version -08 to version -09 . . . . . . . . . . . . 109
102 10.20. From version -07 to version -08 . . . . . . . . . . . . 110
103 10.21. From version -05 to version -07 . . . . . . . . . . . . 110
104 10.22. From version -03 to version -05 . . . . . . . . . . . . 110
105 10.23. From version -02 to version -03 . . . . . . . . . . . . 110
106 10.24. From version -01 to version -02 . . . . . . . . . . . . 111
107 10.25. From version -00 to version -01 . . . . . . . . . . . . 111
108 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 112
109 11.1. Normative References . . . . . . . . . . . . . . . . . . 112
110 11.2. Informative References . . . . . . . . . . . . . . . . . 115
111 Appendix A. Example of IS-IS configuration in XML . . . . . . . 116
112 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 118
114 1. Introduction
116 This document defines a YANG ([RFC7950]) data model for IS-IS routing
117 protocol.
119 The data model covers configuration of an IS-IS routing protocol
120 instance as well as operational states.
122 A simplified tree representation of the data model is presented in
123 Section 2. Tree diagrams used in this document follow the notation
124 defined in [RFC8340].
126 The module is designed as per NMDA (Network Management Datastore
127 Architecture) [RFC8342].
129 2. Design of the Data Model
131 The IS-IS YANG module augments the "control-plane-protocol" list in
132 ietf-routing module (defined in [RFC8349]) with specific IS-IS
133 parameters.
135 The figure below describes the overall structure of the isis YANG
136 module:
138 module: ietf-isis
139 augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route:
140 +--ro metric? uint32
141 +--ro tag* uint64
142 +--ro route-type? enumeration
143 augment /if:interfaces/if:interface:
144 +--rw clns-mtu? uint16
145 augment
146 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:
147 +--rw isis
148 +--rw enable? boolean {admin-control}?
149 +--rw level-type? level
150 +--rw system-id? system-id
151 +--rw maximum-area-addresses? uint8 {maximum-area-addresses}?
152 +--rw area-address* area-address
153 +--rw lsp-mtu? uint16
154 +--rw lsp-lifetime? uint16
155 +--rw lsp-refresh? rt-types:timer-value-seconds16
156 {lsp-refresh}?
157 +--rw poi-tlv? boolean {poi-tlv}?
158 +--rw graceful-restart {graceful-restart}?
159 | +--rw enable? boolean
160 | +--rw restart-interval? rt-types:timer-value-seconds16
161 | +--rw helper-enable? boolean
162 +--rw nsr {nsr}?
163 | +--rw enable? boolean
164 +--rw node-tags {node-tag}?
165 | +--rw node-tag* [tag]
166 | ...
167 +--rw metric-type
168 | +--rw value? enumeration
169 | +--rw level-1
170 | | ...
171 | +--rw level-2
172 | ...
173 +--rw default-metric
174 | +--rw value? wide-metric
175 | +--rw level-1
176 | | ...
177 | +--rw level-2
178 | ...
179 +--rw auto-cost {auto-cost}?
180 | +--rw enable? boolean
181 | +--rw reference-bandwidth? uint32
182 +--rw authentication
183 | +--rw (authentication-type)?
184 | | ...
185 | +--rw level-1
186 | | ...
187 | +--rw level-2
188 | ...
189 +--rw address-families {nlpid-control}?
190 | +--rw address-family-list* [address-family]
191 | ...
192 +--rw mpls
193 | +--rw te-rid {te-rid}?
194 | | ...
195 | +--rw ldp
196 | ...
197 +--rw spf-control
198 | +--rw paths? uint16 {max-ecmp}?
199 | +--rw ietf-spf-delay {ietf-spf-delay}?
200 | ...
201 +--rw fast-reroute {fast-reroute}?
202 | +--rw lfa {lfa}?
203 +--rw preference
204 | +--rw (granularity)?
205 | ...
206 +--rw overload
207 | +--rw status? boolean
208 +--rw overload-max-metric {overload-max-metric}?
209 | +--rw timeout? rt-types:timer-value-seconds16
210 +--ro spf-log
211 | +--ro event* [id]
212 | ...
213 +--ro lsp-log
214 | +--ro event* [id]
215 | ...
216 +--ro hostnames
217 | +--ro hostname* [system-id]
218 | ...
219 +--ro database
220 | +--ro levels* [level]
221 | ...
222 +--ro local-rib
223 | +--ro route* [prefix]
224 | ...
225 +--ro system-counters
226 | +--ro level* [level]
227 | ...
228 +--ro protected-routes
229 | +--ro address-family-stats* [address-family prefix alternate]
230 | ...
231 +--ro unprotected-routes
232 | +--ro address-family-stats* [address-family prefix]
233 | ...
234 +--ro protection-statistics* [frr-protection-method]
235 | +--ro frr-protection-method string
236 | +--ro address-family-stats* [address-family]
237 | ...
239 +--rw topologies {multi-topology}?
240 | +--rw topology* [name]
241 | ...
242 +--rw interfaces
243 +--rw interface* [name]
244 ...
246 rpcs:
247 +---x clear-adjacency
248 | +---w input
249 | +---w routing-protocol-instance-name ->
250 /rt:routing/control-plane-protocols/control-plane-protocol/name
251 | +---w level? level
252 | +---w interface? if:interface-ref
253 +---x clear-database
254 +---w input
255 +---w routing-protocol-instance-name ->
256 /rt:routing/control-plane-protocols/control-plane-protocol/name
257 +---w level? level
259 notifications:
260 +---n database-overload
261 | +--ro routing-protocol-name? ->
262 /rt:routing/control-plane-protocols/control-plane-protocol/name
263 | +--ro isis-level? level
264 | +--ro overload? enumeration
265 +---n lsp-too-large
266 | +--ro routing-protocol-name? ->
267 /rt:routing/control-plane-protocols/control-plane-protocol/name
268 | +--ro isis-level? level
269 | +--ro interface-name? if:interface-ref
270 | +--ro interface-level? level
271 | +--ro extended-circuit-id? extended-circuit-id
272 | +--ro pdu-size? uint32
273 | +--ro lsp-id? lsp-id
274 +---n if-state-change
275 | +--ro routing-protocol-name? ->
276 /rt:routing/control-plane-protocols/control-plane-protocol/name
277 | +--ro isis-level? level
278 | +--ro interface-name? if:interface-ref
279 | +--ro interface-level? level
280 | +--ro extended-circuit-id? extended-circuit-id
281 | +--ro state? if-state-type
282 +---n corrupted-lsp-detected
283 | +--ro routing-protocol-name? ->
284 /rt:routing/control-plane-protocols/control-plane-protocol/name
285 | +--ro isis-level? level
286 | +--ro lsp-id? lsp-id
287 +---n attempt-to-exceed-max-sequence
288 | +--ro routing-protocol-name? ->
289 /rt:routing/control-plane-protocols/control-plane-protocol/name
290 | +--ro isis-level? level
291 | +--ro lsp-id? lsp-id
292 +---n id-len-mismatch
293 | +--ro routing-protocol-name? ->
294 /rt:routing/control-plane-protocols/control-plane-protocol/name
295 | +--ro isis-level? level
296 | +--ro interface-name? if:interface-ref
297 | +--ro interface-level? level
298 | +--ro extended-circuit-id? extended-circuit-id
299 | +--ro pdu-field-len? uint8
300 | +--ro raw-pdu? binary
301 +---n max-area-addresses-mismatch
302 | +--ro routing-protocol-name? ->
303 /rt:routing/control-plane-protocols/control-plane-protocol/name
304 | +--ro isis-level? level
305 | +--ro interface-name? if:interface-ref
306 | +--ro interface-level? level
307 | +--ro extended-circuit-id? extended-circuit-id
308 | +--ro max-area-addresses? uint8
309 | +--ro raw-pdu? binary
310 +---n own-lsp-purge
311 | +--ro routing-protocol-name? ->
312 /rt:routing/control-plane-protocols/control-plane-protocol/name
313 | +--ro isis-level? level
314 | +--ro interface-name? if:interface-ref
315 | +--ro interface-level? level
316 | +--ro extended-circuit-id? extended-circuit-id
317 | +--ro lsp-id? lsp-id
318 +---n sequence-number-skipped
319 | +--ro routing-protocol-name? ->
320 /rt:routing/control-plane-protocols/control-plane-protocol/name
321 | +--ro isis-level? level
322 | +--ro interface-name? if:interface-ref
323 | +--ro interface-level? level
324 | +--ro extended-circuit-id? extended-circuit-id
325 | +--ro lsp-id? lsp-id
326 +---n authentication-type-failure
327 | +--ro routing-protocol-name? ->
328 /rt:routing/control-plane-protocols/control-plane-protocol/name
329 | +--ro isis-level? level
330 | +--ro interface-name? if:interface-ref
331 | +--ro interface-level? level
332 | +--ro extended-circuit-id? extended-circuit-id
333 | +--ro raw-pdu? binary
334 +---n authentication-failure
335 | +--ro routing-protocol-name? ->
336 /rt:routing/control-plane-protocols/control-plane-protocol/name
337 | +--ro isis-level? level
338 | +--ro interface-name? if:interface-ref
339 | +--ro interface-level? level
340 | +--ro extended-circuit-id? extended-circuit-id
341 | +--ro raw-pdu? binary
342 +---n version-skew
343 | +--ro routing-protocol-name? ->
344 /rt:routing/control-plane-protocols/control-plane-protocol/name
345 | +--ro isis-level? level
346 | +--ro interface-name? if:interface-ref
347 | +--ro interface-level? level
348 | +--ro extended-circuit-id? extended-circuit-id
349 | +--ro protocol-version? uint8
350 | +--ro raw-pdu? binary
351 +---n area-mismatch
352 | +--ro routing-protocol-name? ->
353 /rt:routing/control-plane-protocols/control-plane-protocol/name
354 | +--ro isis-level? level
355 | +--ro interface-name? if:interface-ref
356 | +--ro interface-level? level
357 | +--ro extended-circuit-id? extended-circuit-id
358 | +--ro raw-pdu? binary
359 +---n rejected-adjacency
360 | +--ro routing-protocol-name? ->
361 /rt:routing/control-plane-protocols/control-plane-protocol/name
362 | +--ro isis-level? level
363 | +--ro interface-name? if:interface-ref
364 | +--ro interface-level? level
365 | +--ro extended-circuit-id? extended-circuit-id
366 | +--ro raw-pdu? binary
367 | +--ro reason? string
368 +---n protocols-supported-mismatch
369 | +--ro routing-protocol-name? ->
370 /rt:routing/control-plane-protocols/control-plane-protocol/name
371 | +--ro isis-level? level
372 | +--ro interface-name? if:interface-ref
373 | +--ro interface-level? level
374 | +--ro extended-circuit-id? extended-circuit-id
375 | +--ro raw-pdu? binary
376 | +--ro protocols* uint8
377 +---n lsp-error-detected
378 | +--ro routing-protocol-name? ->
379 /rt:routing/control-plane-protocols/control-plane-protocol/name
380 | +--ro isis-level? level
381 | +--ro interface-name? if:interface-ref
382 | +--ro interface-level? level
383 | +--ro extended-circuit-id? extended-circuit-id
384 | +--ro lsp-id? lsp-id
385 | +--ro raw-pdu? binary
386 | +--ro error-offset? uint32
387 | +--ro tlv-type? uint8
388 +---n adjacency-state-change
389 | +--ro routing-protocol-name? ->
390 /rt:routing/control-plane-protocols/control-plane-protocol/name
391 | +--ro isis-level? level
392 | +--ro interface-name? if:interface-ref
393 | +--ro interface-level? level
394 | +--ro extended-circuit-id? extended-circuit-id
395 | +--ro neighbor? string
396 | +--ro neighbor-system-id? system-id
397 | +--ro state? adj-state-type
398 | +--ro reason? string
399 +---n lsp-received
400 | +--ro routing-protocol-name? ->
401 /rt:routing/control-plane-protocols/control-plane-protocol/name
402 | +--ro isis-level? level
403 | +--ro interface-name? if:interface-ref
404 | +--ro interface-level? level
405 | +--ro extended-circuit-id? extended-circuit-id
406 | +--ro lsp-id? lsp-id
407 | +--ro sequence? uint32
408 | +--ro received-timestamp? yang:timestamp
409 | +--ro neighbor-system-id? system-id
410 +---n lsp-generation
411 +--ro routing-protocol-name? ->
412 /rt:routing/control-plane-protocols/control-plane-protocol/name
413 +--ro isis-level? level
414 +--ro lsp-id? lsp-id
415 +--ro sequence? uint32
416 +--ro send-timestamp? yang:timestamp
418 2.1. IS-IS Configuration
420 The IS-IS configuration is divided in:
422 o Global parameters.
424 o Per interface configuration (see Section 2.4).
426 Additional modules may be created to support any additional
427 parameters. These additional modules MUST augment the ietf-isis
428 module.
430 The model implements features, thus some of the configuration
431 statement becomes optional. As an example, the ability to control
432 the administrative state of a particular IS-IS instance is optional.
433 By advertising the feature "admin-control", a device communicates to
434 the client that it supports the ability to shutdown a particular IS-
435 IS instance.
437 The global configuration contains usual IS-IS parameters such as lsp-
438 mtu, lsp-lifetime, lsp-refresh, default-metric...
440 2.2. Multitopology Parameters
442 The model supports multitopology (MT) IS-IS as defined in [RFC5120].
444 The "topologies" container is used to enable support of MT
445 extensions.
447 The "name" used in the topology list should refer to an existing RIB
448 of the device.
450 Some specific parameters could be defined on a per topology basis
451 both at global level and at interface level: for example, an
452 interface metric can be defined per topology.
454 Multiple address families (like IPv4 or IPv6) can also be activated
455 within the default topology. This can be achieved using the "afs"
456 container (requiring "nlpid-control" feature to be advertised).
458 2.3. Per-Level Parameters
460 Some parameters allow a per level configuration. In this case, the
461 parameter is modeled as a container with three configuration
462 locations:
464 o a top level container: corresponds to level-1-2, so the
465 configuration applies to both levels.
467 o a level-1 container: corresponds to level-1 specific parameters.
469 o a level-2 container: corresponds to level-2 specific parameters.
471 +--rw priority
472 | +--rw value? uint8
473 | +--rw level-1
474 | | +--rw value? uint8
475 | +--rw level-2
476 | +--rw value? uint8
478 Example:
480
481 250
482
483 100
484
485
486 200
487
488
490 An implementation SHOULD prefer a level specific parameter over a
491 level-all parameter. As example, if the priority is 100 for the
492 level-1, 200 for the level-2 and 250 for the top level configuration,
493 the implementation should use 100 for the level-1 and 200 for the
494 level-2.
496 Some parameters like "overload bit" and "route preference" are not
497 modeled to support a per level configuration. If an implementation
498 supports per level configuration for such parameter, this
499 implementation SHOULD augment the current model by adding both
500 level-1 and level-2 containers and SHOULD reuse existing
501 configuration groupings.
503 Example of augmentation:
505 augment "/rt:routing/" +
506 "rt:control-plane-protocols/rt:control-plane-protocol"+
507 "/isis:isis/isis:overload" {
508 when "rt:type = 'isis:isis'" {
509 description
510 "This augment IS-IS routing protocol when used";
511 }
512 description
513 "This augments IS-IS overload configuration
514 with per level configuration.";
516 container level-1 {
517 uses isis:overload-global-cfg;
518 description
519 "Level 1 configuration.";
520 }
521 container level-2 {
522 uses isis:overload-global-cfg;
523 description
524 "Level 2 configuration.";
525 }
526 }
528 If an implementation does not support per level configuration for a
529 parameter modeled with per level configuration, the implementation
530 SHOULD advertise a deviation to announce the non support of the
531 level-1 and level-2 containers.
533 Finally, if an implementation supports per level configuration but
534 does not support the level-1-2 configuration, it SHOULD also
535 advertise a deviation.
537 2.4. Per-Interface Parameters
539 The per-interface section of the IS-IS instance describes the
540 interface specific parameters.
542 The interface is modeled as a reference to an existing interface
543 defined in the "ietf-interfaces" YANG model ([RFC8343].
545 Each interface has some interface-specific parameters that may have a
546 different per level value as described in previous section. An
547 interface-specific parameter always override an IS-IS global
548 parameter.
550 Some parameters like hello-padding are defined as containers to allow
551 easy extension by vendor specific modules.
553 +--rw interfaces
554 +--rw interface* [name]
555 +--rw name if:interface-ref
556 +--rw level-type? level
557 +--rw lsp-pacing-interval?
558 rt-types:timer-value-milliseconds
559 +--rw lsp-retransmit-interval?
560 rt-types:timer-value-seconds16
561 +--rw passive? boolean
562 +--rw csnp-interval?
563 rt-types:timer-value-seconds16
564 +--rw hello-padding
565 | +--rw enable? boolean
566 +--rw mesh-group-enable? mesh-group-state
567 +--rw mesh-group? uint8
568 +--rw interface-type? interface-type
569 +--rw enable? boolean {admin-control}?
570 +--rw tag* uint32 {prefix-tag}?
571 +--rw tag64* uint64 {prefix-tag64}?
572 +--rw node-flag? boolean {node-flag}?
573 +--rw hello-authentication
574 | +--rw (authentication-type)?
575 | | +--:(key-chain) {key-chain}?
576 | | | +--rw key-chain? key-chain:key-chain-ref
577 | | +--:(password)
578 | | +--rw key? string
579 | | +--rw crypto-algorithm? identityref
580 | +--rw level-1
581 | | +--rw (authentication-type)?
582 | | +--:(key-chain) {key-chain}?
583 | | | +--rw key-chain?
584 key-chain:key-chain-ref
585 | | +--:(password)
586 | | +--rw key? string
587 | | +--rw crypto-algorithm? identityref
588 | +--rw level-2
589 | +--rw (authentication-type)?
590 | +--:(key-chain) {key-chain}?
591 | | +--rw key-chain?
592 key-chain:key-chain-ref
593 | +--:(password)
594 | +--rw key? string
595 | +--rw crypto-algorithm? identityref
596 +--rw hello-interval
597 | +--rw value? rt-types:timer-value-seconds16
598 | +--rw level-1
599 | | +--rw value? rt-types:timer-value-seconds16
600 | +--rw level-2
601 | +--rw value? rt-types:timer-value-seconds16
602 +--rw hello-multiplier
603 | +--rw value? uint16
604 | +--rw level-1
605 | | +--rw value? uint16
606 | +--rw level-2
607 | +--rw value? uint16
608 +--rw priority
609 | +--rw value? uint8
610 | +--rw level-1
611 | | +--rw value? uint8
612 | +--rw level-2
613 | +--rw value? uint8
614 +--rw metric
615 | +--rw value? wide-metric
616 | +--rw level-1
617 | | +--rw value? wide-metric
618 | +--rw level-2
619 | +--rw value? wide-metric
620 +--rw bfd {bfd}?
621 | +--rw enable? boolean
622 | +--rw local-multiplier? multiplier
623 | +--rw (interval-config-type)?
624 | +--:(tx-rx-intervals)
625 | | +--rw desired-min-tx-interval? uint32
626 | | +--rw required-min-rx-interval? uint32
627 | +--:(single-interval) {single-minimum-interval}?
628 | +--rw min-interval? uint32
629 +--rw address-families {nlpid-control}?
630 | +--rw address-family-list* [address-family]
631 | +--rw address-family iana-rt-types:address-family
632 +--rw mpls
633 | +--rw ldp
634 | +--rw igp-sync? boolean {ldp-igp-sync}?
635 +--rw fast-reroute {fast-reroute}?
636 | +--rw lfa {lfa}?
637 | +--rw candidate-enable? boolean
638 | +--rw enable? boolean
639 | +--rw remote-lfa {remote-lfa}?
640 | | +--rw enable? boolean
641 | +--rw level-1
642 | | +--rw candidate-enable? boolean
643 | | +--rw enable? boolean
644 | | +--rw remote-lfa {remote-lfa}?
645 | | +--rw enable? boolean
646 | +--rw level-2
647 | +--rw candidate-enable? boolean
648 | +--rw enable? boolean
649 | +--rw remote-lfa {remote-lfa}?
650 | +--rw enable? boolean
651 +--ro adjacencies
652 | +--ro adjacency* []
653 | +--ro neighbor-sys-type? level
654 | +--ro neighbor-sysid? system-id
655 | +--ro neighbor-extended-circuit-id?
656 extended-circuit-id
657 | +--ro neighbor-snpa? snpa
658 | +--ro usage? level
659 | +--ro hold-timer?
660 rt-types:timer-value-seconds16
661 | +--ro neighbor-priority? uint8
662 | +--ro lastuptime? yang:timestamp
663 | +--ro state? adj-state-type
664 +--ro event-counters
665 | +--ro adjacency-changes? uint32
666 | +--ro adjacency-number? uint32
667 | +--ro init-fails? uint32
668 | +--ro adjacency-rejects? uint32
669 | +--ro id-len-mismatch? uint32
670 | +--ro max-area-addresses-mismatch? uint32
671 | +--ro authentication-type-fails? uint32
672 | +--ro authentication-fails? uint32
673 | +--ro lan-dis-changes? uint32
674 +--ro packet-counters
675 | +--ro level* [level]
676 | +--ro level level-number
677 | +--ro iih
678 | | +--ro in? uint32
679 | | +--ro out? uint32
680 | +--ro ish
681 | | +--ro in? uint32
682 | | +--ro out? uint32
683 | +--ro esh
684 | | +--ro in? uint32
685 | | +--ro out? uint32
686 | +--ro lsp
687 | | +--ro in? uint32
688 | | +--ro out? uint32
689 | +--ro psnp
690 | | +--ro in? uint32
691 | | +--ro out? uint32
692 | +--ro csnp
693 | | +--ro in? uint32
694 | | +--ro out? uint32
695 | +--ro unknown
696 | +--ro in? uint32
697 | +--ro out? uint32
698 +--rw topologies {multi-topology}?
699 +--rw topology* [name]
700 +--rw name ->
701 ../../../../../../../../rt:ribs/rib/name
702 +--rw metric
703 +--rw value? wide-metric
704 +--rw level-1
705 | +--rw value? wide-metric
706 +--rw level-2
707 +--rw value? wide-metric
709 rpcs:
710 +---x clear-adjacency
711 | +---w input
712 | +---w routing-protocol-instance-name ->
713 /rt:routing/control-plane-protocols/control-plane-protocol/name
714 | +---w level? level
715 | +---w interface? if:interface-ref
716 +---x clear-database
717 +---w input
718 +---w routing-protocol-instance-name ->
719 /rt:routing/control-plane-protocols/control-plane-protocol/name
720 +---w level? level
722 notifications:
723 +---n database-overload
724 | +--ro routing-protocol-name? ->
725 /rt:routing/control-plane-protocols/control-plane-protocol/name
726 | +--ro isis-level? level
727 | +--ro overload? enumeration
728 +---n lsp-too-large
729 | +--ro routing-protocol-name? ->
730 /rt:routing/control-plane-protocols/control-plane-protocol/name
731 | +--ro isis-level? level
732 | +--ro interface-name? if:interface-ref
733 | +--ro interface-level? level
734 | +--ro extended-circuit-id? extended-circuit-id
735 | +--ro pdu-size? uint32
736 | +--ro lsp-id? lsp-id
737 +---n if-state-change
738 | +--ro routing-protocol-name? ->
739 /rt:routing/control-plane-protocols/control-plane-protocol/name
740 | +--ro isis-level? level
741 | +--ro interface-name? if:interface-ref
742 | +--ro interface-level? level
743 | +--ro extended-circuit-id? extended-circuit-id
744 | +--ro state? if-state-type
745 +---n corrupted-lsp-detected
746 | +--ro routing-protocol-name? ->
747 /rt:routing/control-plane-protocols/control-plane-protocol/name
748 | +--ro isis-level? level
749 | +--ro lsp-id? lsp-id
750 +---n attempt-to-exceed-max-sequence
751 | +--ro routing-protocol-name? ->
752 /rt:routing/control-plane-protocols/control-plane-protocol/name
753 | +--ro isis-level? level
754 | +--ro lsp-id? lsp-id
755 +---n id-len-mismatch
756 | +--ro routing-protocol-name? ->
757 /rt:routing/control-plane-protocols/control-plane-protocol/name
758 | +--ro isis-level? level
759 | +--ro interface-name? if:interface-ref
760 | +--ro interface-level? level
761 | +--ro extended-circuit-id? extended-circuit-id
762 | +--ro pdu-field-len? uint8
763 | +--ro raw-pdu? binary
764 +---n max-area-addresses-mismatch
765 | +--ro routing-protocol-name? ->
766 /rt:routing/control-plane-protocols/control-plane-protocol/name
767 | +--ro isis-level? level
768 | +--ro interface-name? if:interface-ref
769 | +--ro interface-level? level
770 | +--ro extended-circuit-id? extended-circuit-id
771 | +--ro max-area-addresses? uint8
772 | +--ro raw-pdu? binary
773 +---n own-lsp-purge
774 | +--ro routing-protocol-name? ->
775 /rt:routing/control-plane-protocols/control-plane-protocol/name
776 | +--ro isis-level? level
777 | +--ro interface-name? if:interface-ref
778 | +--ro interface-level? level
779 | +--ro extended-circuit-id? extended-circuit-id
780 | +--ro lsp-id? lsp-id
781 +---n sequence-number-skipped
782 | +--ro routing-protocol-name? ->
783 /rt:routing/control-plane-protocols/control-plane-protocol/name
784 | +--ro isis-level? level
785 | +--ro interface-name? if:interface-ref
786 | +--ro interface-level? level
787 | +--ro extended-circuit-id? extended-circuit-id
788 | +--ro lsp-id? lsp-id
789 +---n authentication-type-failure
790 | +--ro routing-protocol-name? ->
791 /rt:routing/control-plane-protocols/control-plane-protocol/name
792 | +--ro isis-level? level
793 | +--ro interface-name? if:interface-ref
794 | +--ro interface-level? level
795 | +--ro extended-circuit-id? extended-circuit-id
796 | +--ro raw-pdu? binary
797 +---n authentication-failure
798 | +--ro routing-protocol-name? ->
799 /rt:routing/control-plane-protocols/control-plane-protocol/name
800 | +--ro isis-level? level
801 | +--ro interface-name? if:interface-ref
802 | +--ro interface-level? level
803 | +--ro extended-circuit-id? extended-circuit-id
804 | +--ro raw-pdu? binary
805 +---n version-skew
806 | +--ro routing-protocol-name? ->
807 /rt:routing/control-plane-protocols/control-plane-protocol/name
808 | +--ro isis-level? level
809 | +--ro interface-name? if:interface-ref
810 | +--ro interface-level? level
811 | +--ro extended-circuit-id? extended-circuit-id
812 | +--ro protocol-version? uint8
813 | +--ro raw-pdu? binary
814 +---n area-mismatch
815 | +--ro routing-protocol-name? ->
816 /rt:routing/control-plane-protocols/control-plane-protocol/name
817 | +--ro isis-level? level
818 | +--ro interface-name? if:interface-ref
819 | +--ro interface-level? level
820 | +--ro extended-circuit-id? extended-circuit-id
821 | +--ro raw-pdu? binary
822 +---n rejected-adjacency
823 | +--ro routing-protocol-name? ->
824 /rt:routing/control-plane-protocols/control-plane-protocol/name
825 | +--ro isis-level? level
826 | +--ro interface-name? if:interface-ref
827 | +--ro interface-level? level
828 | +--ro extended-circuit-id? extended-circuit-id
829 | +--ro raw-pdu? binary
830 | +--ro reason? string
831 +---n protocols-supported-mismatch
832 | +--ro routing-protocol-name? ->
833 /rt:routing/control-plane-protocols/control-plane-protocol/name
834 | +--ro isis-level? level
835 | +--ro interface-name? if:interface-ref
836 | +--ro interface-level? level
837 | +--ro extended-circuit-id? extended-circuit-id
838 | +--ro raw-pdu? binary
839 | +--ro protocols* uint8
840 +---n lsp-error-detected
841 | +--ro routing-protocol-name? ->
842 /rt:routing/control-plane-protocols/control-plane-protocol/name
843 | +--ro isis-level? level
844 | +--ro interface-name? if:interface-ref
845 | +--ro interface-level? level
846 | +--ro extended-circuit-id? extended-circuit-id
847 | +--ro lsp-id? lsp-id
848 | +--ro raw-pdu? binary
849 | +--ro error-offset? uint32
850 | +--ro tlv-type? uint8
851 +---n adjacency-state-change
852 | +--ro routing-protocol-name? ->
853 /rt:routing/control-plane-protocols/control-plane-protocol/name
854 | +--ro isis-level? level
855 | +--ro interface-name? if:interface-ref
856 | +--ro interface-level? level
857 | +--ro extended-circuit-id? extended-circuit-id
858 | +--ro neighbor? string
859 | +--ro neighbor-system-id? system-id
860 | +--ro state? adj-state-type
861 | +--ro reason? string
862 +---n lsp-received
863 | +--ro routing-protocol-name? ->
864 /rt:routing/control-plane-protocols/control-plane-protocol/name
865 | +--ro isis-level? level
866 | +--ro interface-name? if:interface-ref
867 | +--ro interface-level? level
868 | +--ro extended-circuit-id? extended-circuit-id
869 | +--ro lsp-id? lsp-id
870 | +--ro sequence? uint32
871 | +--ro received-timestamp? yang:timestamp
872 | +--ro neighbor-system-id? system-id
873 +---n lsp-generation
874 +--ro routing-protocol-name? ->
875 /rt:routing/control-plane-protocols/control-plane-protocol/name
876 +--ro isis-level? level
877 +--ro lsp-id? lsp-id
878 +--ro sequence? uint32
879 +--ro send-timestamp? yang:timestamp
881 2.5. Authentication Parameters
883 The module enables authentication configuration through the IETF key-
884 chain module ([RFC8177]). The IS-IS module imports the "ietf-key-
885 chain" module and reuses some groupings to allow global and per
886 interface configuration of authentication. If a global
887 authentication is configured, an implementation SHOULD authenticate
888 PSNPs (Partial Sequence Number Packets), CSNPs (Complete Sequence
889 Number Packets) and LSPs (Link State Packets) with the authentication
890 parameters supplied. The authentication of HELLO PDUs (Protocol Data
891 Units) can be activated on a per interface basis.
893 2.6. IGP/LDP synchronization
895 [RFC5443] defines a mechanism where IGP (Interior Gateway Protocol)
896 needs to be synchronized with LDP (Label Distribution Protocol). An
897 "ldp-igp-sync" feature has been defined in the model to support this
898 mechanism. The "mpls/ldp/igp-sync" leaf under "interface" allows
899 activation of the mechanism on a per interface basis. The "mpls/ldp/
900 igp-sync" container in the global configuration is empty on purpose
901 and is not required for the activation. The goal of this empty
902 container is to allow easy augmentation with additional parameters
903 like timers for example.
905 2.7. ISO parameters
907 As IS-IS protocol is based on ISO protocol suite, some ISO parameters
908 may be required.
910 This module augments interface configuration model to support ISO
911 configuration parameters.
913 The clns-mtu can be defined under the interface.
915 2.8. IP FRR
917 This YANG module supports LFA (Loop Free Alternates) ([RFC5286]) and
918 remote LFA ([RFC7490]) as IP FRR techniques. The "fast-reroute"
919 container may be augmented by other models to support other IPFRR
920 flavors (MRT, TILFA ...).
922 The current version of the model supports activation of LFA and
923 remote LFA at interface only. The global "lfa" container is present
924 but kept empty to allow augmentation with vendor specific properties
925 like policies.
927 Remote LFA is considered as a child of LFA. Remote LFA cannot be
928 enabled if LFA is not enabled.
930 The "candidate-disabled" allows to mark an interface to not be used
931 as a backup.
933 2.9. Operational States
935 Operational states are provided in the module in various places:
937 o system-counters: provides statistical informations about the
938 global system.
940 o interface : provides configuration state informations for each
941 interface.
943 o adjacencies: provides state informations about current IS-IS
944 adjacencies.
946 o spf-log: provides informations about SPF events on the node. This
947 SHOULD be implemented as a wrapping buffer.
949 o lsp-log: provides informations about LSP events on the node
950 (reception of an LSP or modification of local LSP). This SHOULD
951 be implemented as a wrapping buffer and an implementation MAY
952 decide to log refresh LSPs or not.
954 o local-rib: provides the IS-IS internal routing table view.
956 o database: provides details on the current LSDB.
958 o hostnames: provides informations about system-id to hostname
959 mappings (as defined in [RFC5301]).
961 o fast-reroute: provides informations about IP FRR.
963 3. RPC Operations
965 The "ietf-isis" module defines two RPC operations:
967 o clear-database: reset the content of a particular IS-IS database
968 and restart database synchronization with the neighbors.
970 o clear-adjacency: restart a particular set of IS-IS adjacencies.
972 4. Notifications
974 The "ietf-isis" module introduces some notifications :
976 database-overload: raised when overload condition is changed.
978 lsp-too-large: raised when the system tries to propagate a too
979 large PDU.
981 if-state-change: raised when the state of an interface changes.
983 corrupted-lsp-detected: raised when the system finds that an LSP
984 that was stored in memory has become corrupted.
986 attempt-to-exceed-max-sequence: This notification is sent when the
987 system wraps the 32-bit sequence counter of an LSP.
989 id-len-mismatch: This notification is sent when we receive a PDU
990 with a different value for the System ID length.
992 max-area-addresses-mismatch: This notification is sent when we
993 receive a PDU with a different value for the Maximum Area
994 Addresses.
996 own-lsp-purge: This notification is sent when the system receives
997 a PDU with its own system ID and zero age.
999 sequence-number-skipped: This notification is sent when the system
1000 receives a PDU with its own system ID and different contents. The
1001 system has to reissue the LSP with a higher sequence number.
1003 authentication-type-failure: This notification is sent when the
1004 system receives a PDU with the wrong authentication type field.
1006 authentication-failure: This notification is sent when the system
1007 receives a PDU with the wrong authentication information.
1009 version-skew: This notification is sent when the system receives a
1010 PDU with a different protocol version number.
1012 area-mismatch: This notification is sent when the system receives
1013 a Hello PDU from an IS that does not share any area address.
1015 rejected-adjacency: This notification is sent when the system
1016 receives a Hello PDU from an IS but does not establish an
1017 adjacency for some reason.
1019 protocols-supported-mismatch: This notification is sent when the
1020 system receives a non pseudonode LSP that has no matching protocol
1021 supported.
1023 lsp-error-detected: This notification is sent when the system
1024 receives a LSP with a parse error.
1026 adjacency-state-change: This notification is sent when an IS-IS
1027 adjacency moves to Up state or to Down state.
1029 lsp-received: This notification is sent when a LSP is received.
1031 lsp-generation: This notification is sent when a LSP is
1032 regenerated.
1034 5. Interaction with Other YANG Modules
1036 The "isis" container augments the "/rt:routing/rt:control-plane-
1037 protocols/control-plane-protocol" container of the ietf-routing
1038 [RFC8349] module by defining IS-IS specific parameters.
1040 The "isis" module augments "/if:interfaces/if:interface" defined by
1041 [RFC8343] with ISO specific parameters.
1043 The "isis" operational state container augments the "/rt:routing-
1044 state/rt:control-plane-protocols/control-plane-protocol" container of
1045 the ietf-routing module by defining IS-IS specific operational
1046 states.
1048 Some IS-IS specific routes attributes are added to route objects of
1049 the ietf-routing module by augmenting "/rt:routing-
1050 state/rt:ribs/rt:rib/rt:routes/rt:route".
1052 The modules defined in this document use some groupings from ietf-
1053 keychain [RFC8177].
1055 The module reuses types from [RFC6991] and [RFC8294].
1057 To support BFD for fast detection, the module relies on
1058 [I-D.ietf-bfd-yang].
1060 6. IS-IS YANG Module
1062 The following RFCs, drafts and external standards are not referenced
1063 in the document text but are referenced in the ietf-isis.yang module:
1064 [ISO-10589], [RFC1195], [RFC5029], [RFC5130], [RFC5305], [RFC5306],
1065 [RFC5308], [RFC5880], [RFC5881], [RFC6119], [RFC6232], [RFC7794],
1066 [RFC7810], [RFC7917], [RFC8405].
1068 file "ietf-isis@2019-01-21.yang"
1070 module ietf-isis {
1071 yang-version 1.1;
1072 namespace "urn:ietf:params:xml:ns:yang:ietf-isis";
1074 prefix isis;
1075 import ietf-routing {
1076 prefix "rt";
1077 reference "RFC 8349 - A YANG Data Model for Routing
1078 Management (NMDA Version)";
1079 }
1081 import ietf-inet-types {
1082 prefix inet;
1083 reference "RFC 6991 - Common YANG Data Types";
1084 }
1086 import ietf-yang-types {
1087 prefix yang;
1088 reference "RFC 6991 - Common YANG Data Types";
1089 }
1091 import ietf-interfaces {
1092 prefix "if";
1093 reference "RFC 8343 - A YANG Data Model for Interface
1094 Management (NDMA Version)";
1095 }
1097 import ietf-key-chain {
1098 prefix "key-chain";
1099 reference "RFC 8177 - YANG Data Model for Key Chains";
1100 }
1102 import ietf-routing-types {
1103 prefix "rt-types";
1104 reference "RFC 8294 - Common YANG Data Types for the
1105 Routing Area";
1106 }
1108 import iana-routing-types {
1109 prefix "iana-rt-types";
1110 reference "RFC 8294 - Common YANG Data Types for the
1111 Routing Area";
1112 }
1114 import ietf-bfd-types {
1115 prefix "bfd-types";
1116 reference "RFC YYYY - YANG Data Model for Bidirectional
1117 Forwarding Detection (BFD).
1119 -- Note to RFC Editor Please replace YYYY with published RFC number for
1120 draft-ietf-bfd-yang.";
1122 }
1123 organization
1124 "IETF LSR Working Group";
1126 contact
1127 "WG List: <mailto:lsr@ietf.org>
1129 Editor: Stephane Litkowski
1130 <mailto:stephane.litkowski@orange.com>
1132 Derek Yeung
1133 <mailto:derek@arrcus.com>
1134 Acee Lindem
1135 <mailto:acee@cisco.com>
1136 Jeffrey Zhang
1137 <mailto:zzhang@juniper.net>
1138 Ladislav Lhotka
1139 <mailto:llhotka@nic.cz>
1140 Yi Yang
1141 <mailto:yiya@cisco.com>
1142 Dean Bogdanovic
1143 <mailto:deanb@juniper.net>
1144 Kiran Agrahara Sreenivasa
1145 <mailto:kkoushik@brocade.com>
1146 Yingzhen Qu
1147 <mailto:yiqu@cisco.com>
1148 Jeff Tantsura
1149 <mailto:jefftant.ietf@gmail.com>
1151 ";
1153 description
1154 "This YANG module defines the generic configuration and
1155 operational state for the IS-IS protocol.
1156 It is intended that the module
1157 will be extended by vendors to define vendor-specific
1158 IS-IS configuration parameters and policies,
1159 for example route maps or route policies.
1161 This YANG module conforms to the Network Management
1162 Datastore Architecture (NDMA) as described in RFC 8242.
1164 Copyright (c) 2018 IETF Trust and the persons identified as
1165 authors of the code. All rights reserved.
1167 Redistribution and use in source and binary forms, with or
1168 without modification, is permitted pursuant to, and subject
1169 to the license terms contained in, the Simplified BSD License
1170 set forth in Section 4.c of the IETF Trust's Legal Provisions
1171 Relating to IETF Documents
1172 (http://trustee.ietf.org/license-info).
1174 This version of this YANG module is part of RFC XXXX;
1175 see the RFC itself for full legal notices.
1177 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
1178 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
1179 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
1180 are to be interpreted as described in BCP 14 [RFC2119] [RFC8174]
1181 when, and only when, they appear in all capitals, as shown here.
1182 ";
1184 revision 2019-01-21 {
1185 description
1186 "Initial revision.";
1187 reference "RFC XXXX";
1188 }
1190 /* Identities */
1192 identity isis {
1193 base rt:routing-protocol;
1194 description "Identity for the IS-IS routing protocol.";
1195 }
1197 identity lsp-log-reason {
1198 description "Base identity for an LSP change log reason.";
1199 }
1201 identity refresh {
1202 base lsp-log-reason;
1203 description
1204 "Identity used when the LSP log reason is
1205 a refresh LSP received.";
1206 }
1208 identity content-change {
1209 base lsp-log-reason;
1210 description
1211 "Identity used when the LSP log reason is
1212 a change in the content of the LSP.";
1213 }
1215 /* Feature definitions */
1217 feature poi-tlv {
1218 description "Support of Purge Originator Identification.";
1219 reference "RFC 6232 - Purge Originator Identification TLV
1220 for IS-IS";
1221 }
1222 feature ietf-spf-delay {
1223 description
1224 "Support for IETF SPF delay algorithm.";
1225 reference "RFC 8405 - SPF Back-off algorithm for link
1226 state IGPs";
1227 }
1228 feature bfd {
1229 description
1230 "Support for BFD detection of IS-IS neighbor reachability.";
1231 reference "RFC 5880 - Bidirectional Forwarding Detection (BFD)
1232 RFC 5881 - Bidirectional Forwarding Detection
1233 (BFD) for IPv4 and IPv6 (Single Hop)";
1234 }
1235 feature key-chain {
1236 description
1237 "Support of keychain for authentication.";
1238 reference "RFC8177 - YANG Data Model for Key Chains";
1239 }
1240 feature node-flag {
1241 description
1242 "Support for node-flag for IS-IS prefixes.";
1243 reference "RFC7794 - IS-IS Prefix Attributes for
1244 Extended IP and IPv6 Reachability";
1245 }
1246 feature node-tag {
1247 description
1248 "Support for node admin tag for IS-IS routing instances.";
1249 reference "RFC7917 - Advertising Node Administrative Tags
1250 in IS-IS";
1251 }
1252 feature ldp-igp-sync {
1253 description
1254 "LDP IGP synchronization.";
1255 reference "RFC5443 - LDP IGP Synchronization.";
1256 }
1257 feature fast-reroute {
1258 description
1259 "Support for IP Fast Reroute (IP-FRR).";
1260 }
1261 feature nsr {
1262 description
1263 "Non-Stop-Routing (NSR) support.";
1264 }
1265 feature lfa {
1266 description
1267 "Support for Loop-Free Alternates (LFAs).";
1268 reference "RFC5286 - Basic Specification of IP Fast-Reroute:
1269 Loop-free Alternates";
1270 }
1271 feature remote-lfa {
1272 description
1273 "Support for Remote Loop-Free Alternates (R-LFAs).";
1274 reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute";
1275 }
1277 feature overload-max-metric {
1278 description
1279 "Support of overload by setting
1280 all links to max metric.";
1281 }
1282 feature prefix-tag {
1283 description
1284 "Support for 32-bit prefix tags";
1285 reference "RFC5130 - A Policy Control Mechanism in
1286 IS-IS Using Administrative Tags";
1287 }
1288 feature prefix-tag64 {
1289 description
1290 "Support for 64-bit prefix tags";
1291 reference "RFC5130 - A Policy Control Mechanism in
1292 IS-IS Using Administrative Tags";
1293 }
1294 feature auto-cost {
1295 description
1296 "Calculate IS-IS interface metric according to
1297 reference bandwidth.";
1298 }
1300 feature te-rid {
1301 description
1302 "Traffic-Engineering Router-ID.";
1303 reference "RFC5305 - IS-IS Extensions for Traffic Engineering
1304 RFC6119 - IPv6 Traffic Engineering in IS-IS";
1305 }
1306 feature max-ecmp {
1307 description
1308 "Setting maximum number of ECMP paths.";
1309 }
1310 feature multi-topology {
1311 description
1312 "Support for Multiple-Topology Routing (MTR).";
1313 reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS";
1315 }
1316 feature nlpid-control {
1317 description
1318 "This feature controls the advertisement
1319 of support NLPID within IS-IS configuration.";
1320 }
1321 feature graceful-restart {
1322 description
1323 "IS-IS Graceful restart support.";
1324 reference "RFC5306 - Restart Signaling in IS-IS";
1325 }
1327 feature lsp-refresh {
1328 description
1329 "Configuration of LSP refresh interval.";
1330 }
1332 feature maximum-area-addresses {
1333 description
1334 "Support of maximum-area-addresses config.";
1335 }
1337 feature admin-control {
1338 description
1339 "Administrative control of the protocol state.";
1340 }
1342 /* Type definitions */
1344 typedef circuit-id {
1345 type uint8;
1346 description
1347 "This type defines the circuit ID
1348 associated with an interface.";
1349 }
1351 typedef extended-circuit-id {
1352 type uint32;
1353 description
1354 "This type defines the extended circuit ID
1355 associated with an interface.";
1356 }
1358 typedef interface-type {
1359 type enumeration {
1360 enum broadcast {
1361 description
1362 "Broadcast interface type.";
1364 }
1365 enum point-to-point {
1366 description
1367 "Point-to-point interface type.";
1368 }
1369 }
1370 description
1371 "This type defines the type of adjacency
1372 to be established on the interface.
1373 The interface-type determines the type
1374 of hello message that is used.";
1376 }
1378 typedef level {
1379 type enumeration {
1380 enum "level-1" {
1381 description
1382 "This enum indicates L1-only capability.";
1383 }
1384 enum "level-2" {
1385 description
1386 "This enum indicates L2-only capability.";
1387 }
1388 enum "level-all" {
1389 description
1390 "This enum indicates capability for both levels.";
1391 }
1392 }
1393 default "level-all";
1394 description
1395 "This type defines IS-IS level of an object.";
1397 }
1399 typedef adj-state-type {
1400 type enumeration {
1401 enum "up" {
1402 description
1403 "State indicates the adjacency is established.";
1404 }
1405 enum "down" {
1406 description
1407 "State indicates the adjacency is NOT established.";
1408 }
1409 enum "init" {
1410 description
1411 "State indicates the adjacency is establishing.";
1413 }
1414 enum "failed" {
1415 description
1416 "State indicates the adjacency is failed.";
1417 }
1418 }
1419 description
1420 "This type defines states of an adjacency";
1421 }
1423 typedef if-state-type {
1424 type enumeration {
1425 enum "up" {
1426 description "Up state.";
1428 }
1429 enum "down" {
1430 description "Down state";
1431 }
1432 }
1433 description
1434 "This type defines the state of an interface";
1435 }
1437 typedef level-number {
1438 type uint8 {
1439 range "1 .. 2";
1440 }
1441 description
1442 "This type defines the current IS-IS level.";
1443 }
1445 typedef lsp-id {
1446 type string {
1447 pattern
1448 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
1449 +'{4}\.[0-9][0-9]-[0-9][0-9]';
1450 }
1451 description
1452 "This type defines the IS-IS LSP ID format using a
1453 pattern. An example LSP ID is 0143.0438.AEF0.02-01";
1454 }
1456 typedef area-address {
1457 type string {
1458 pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}';
1459 }
1460 description
1461 "This type defines the area address format.";
1462 }
1464 typedef snpa {
1465 type string {
1466 length "0 .. 20";
1467 }
1468 description
1469 "This type defines the Subnetwork Point
1470 of Attachement (SNPA) format.
1471 The SNPA should be encoded according to the rules
1472 specified for the particular type of subnetwork
1473 being used. As an example, for an ethernet subnetwork,
1474 the SNPA is encoded as a MAC address like 00aa.bbcc.ddee";
1475 }
1477 typedef system-id {
1478 type string {
1479 pattern
1480 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}';
1481 }
1482 description
1483 "This type defines IS-IS system-id using pattern,
1484 An example system-id is 0143.0438.AEF0";
1485 }
1486 typedef extended-system-id {
1487 type string {
1488 pattern
1489 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9][0-9]';
1490 }
1491 description
1492 "This type defines IS-IS system-id using pattern. The extended
1493 system-id contains the pseudonode number in addition to the
1494 system-id.
1495 An example system-id is 0143.0438.AEF0.00";
1496 }
1498 typedef wide-metric {
1499 type uint32 {
1500 range "0 .. 16777215";
1501 }
1502 description
1503 "This type defines wide style format of IS-IS metric.";
1504 }
1506 typedef std-metric {
1507 type uint8 {
1508 range "0 .. 63";
1510 }
1511 description
1512 "This type defines old style format of IS-IS metric.";
1513 }
1515 typedef mesh-group-state {
1516 type enumeration {
1517 enum "mesh-inactive" {
1518 description
1519 "Interface is not part of a mesh group.";
1520 }
1521 enum "mesh-set" {
1522 description
1523 "Interface is part of a mesh group.";
1524 }
1525 enum "mesh-blocked" {
1526 description
1527 "LSPs must not be flooded over this interface.";
1528 }
1529 }
1530 description
1531 "This type describes mesh group state of an interface";
1532 }
1534 /* Grouping for notifications */
1536 grouping notification-instance-hdr {
1537 description
1538 "Instance specific IS-IS notification data grouping";
1539 leaf routing-protocol-name {
1540 type leafref {
1541 path "/rt:routing/rt:control-plane-protocols/"
1542 + "rt:control-plane-protocol/rt:name";
1543 }
1544 description "Name of the IS-IS instance.";
1545 }
1546 leaf isis-level {
1547 type level;
1548 description "IS-IS level of the instance.";
1549 }
1550 }
1552 grouping notification-interface-hdr {
1553 description
1554 "Interface specific IS-IS notification data grouping";
1555 leaf interface-name {
1556 type if:interface-ref;
1557 description "IS-IS interface name";
1559 }
1560 leaf interface-level {
1561 type level;
1562 description "IS-IS level of the interface.";
1563 }
1564 leaf extended-circuit-id {
1565 type extended-circuit-id;
1566 description "Eextended circuit-id of the interface.";
1567 }
1568 }
1570 /* Groupings for IP Fast Reroute */
1572 grouping instance-fast-reroute-config {
1573 description
1574 "This group defines global configuration of IP
1575 Fast ReRoute (FRR).";
1576 container fast-reroute {
1577 if-feature fast-reroute;
1578 description
1579 "This container may be augmented with global
1580 parameters for IP-FRR.";
1581 container lfa {
1582 if-feature lfa;
1583 description
1584 "This container may be augmented with
1585 global parameters for Loop-Free Alternatives (LFA).
1586 Container creation has no effect on LFA activation.";
1587 }
1588 }
1589 }
1591 grouping interface-lfa-config {
1592 leaf candidate-enable {
1593 type boolean;
1594 default true;
1595 description
1596 "Enable the interface to be used as backup.";
1597 }
1598 leaf enable {
1599 type boolean;
1600 default false;
1601 description
1602 "Activates LFA - Per-prefix LFA computation
1603 is assumed.";
1604 }
1605 container remote-lfa {
1606 if-feature remote-lfa;
1607 leaf enable {
1608 type boolean;
1609 default false;
1610 description
1611 "Activates Remote LFA (R-LFA).";
1612 }
1613 description
1614 "Remote LFA configuration.";
1615 }
1616 description "Grouping for LFA interface configuration";
1617 }
1618 grouping interface-fast-reroute-config {
1619 description
1620 "This group defines interface configuration of IP-FRR.";
1621 container fast-reroute {
1622 if-feature fast-reroute;
1623 container lfa {
1624 if-feature lfa;
1625 uses interface-lfa-config;
1626 container level-1 {
1627 uses interface-lfa-config;
1628 description
1629 "LFA level 1 config";
1630 }
1631 container level-2 {
1632 uses interface-lfa-config;
1633 description
1634 "LFA level 2 config";
1635 }
1636 description
1637 "LFA configuration.";
1638 }
1639 description
1640 "Interface IP Fast-reroute configuration.";
1641 }
1642 }
1643 grouping instance-fast-reroute-state {
1644 description "IPFRR state data grouping";
1645 container protected-routes {
1646 config false;
1647 list address-family-stats {
1648 key "address-family prefix alternate";
1650 leaf address-family {
1651 type iana-rt-types:address-family;
1652 description
1653 "Address-family";
1655 }
1656 leaf prefix {
1657 type inet:ip-prefix;
1658 description
1659 "Protected prefix.";
1660 }
1661 leaf alternate {
1662 type inet:ip-address;
1663 description
1664 "Alternate nexthop for the prefix.";
1665 }
1666 leaf alternate-type {
1667 type enumeration {
1668 enum equal-cost {
1669 description
1670 "ECMP alternate.";
1671 }
1672 enum lfa {
1673 description
1674 "LFA alternate.";
1675 }
1676 enum remote-lfa {
1677 description
1678 "Remote LFA alternate.";
1679 }
1680 enum tunnel {
1681 description
1682 "Tunnel based alternate
1683 (like RSVP-TE or GRE).";
1684 }
1685 enum ti-lfa {
1686 description
1687 "TI-LFA alternate.";
1688 }
1689 enum mrt {
1690 description
1691 "MRT alternate.";
1692 }
1693 enum other {
1694 description
1695 "Unknown alternate type.";
1696 }
1697 }
1698 description
1699 "Type of alternate.";
1700 }
1701 leaf best {
1702 type boolean;
1703 description
1704 "Is set when the alternate is the preferred one,
1705 is unset otherwise.";
1706 }
1707 leaf non-best-reason {
1708 type string {
1709 length "1..255";
1710 }
1711 description
1712 "Information field to describe why the alternate
1713 is not best. The length should be limited to 255 unicode
1714 characters. The expected format is a single line text.";
1715 }
1716 leaf protection-available {
1717 type bits {
1718 bit node-protect {
1719 position 0;
1720 description
1721 "Node protection available.";
1722 }
1723 bit link-protect {
1724 position 1;
1725 description
1726 "Link protection available.";
1727 }
1728 bit srlg-protect {
1729 position 2;
1730 description
1731 "SRLG protection available.";
1732 }
1733 bit downstream-protect {
1734 position 3;
1735 description
1736 "Downstream protection available.";
1737 }
1738 bit other {
1739 position 4;
1740 description
1741 "Other protection available.";
1742 }
1743 }
1744 description "Protection provided by the alternate.";
1745 }
1746 leaf alternate-metric1 {
1747 type uint32;
1748 description
1749 "Metric from Point of Local Repair (PLR) to
1750 destination through the alternate path.";
1752 }
1753 leaf alternate-metric2 {
1754 type uint32;
1755 description
1756 "Metric from PLR to the alternate node";
1757 }
1758 leaf alternate-metric3 {
1759 type uint32;
1760 description
1761 "Metric from alternate node to the destination";
1762 }
1763 description
1764 "Per-AF protected prefix statistics.";
1765 }
1766 description
1767 "List of prefixes that are protected.";
1768 }
1770 container unprotected-routes {
1771 config false;
1772 list address-family-stats {
1773 key "address-family prefix";
1775 leaf address-family {
1776 type iana-rt-types:address-family;
1778 description "Address-family";
1779 }
1780 leaf prefix {
1781 type inet:ip-prefix;
1782 description "Unprotected prefix.";
1783 }
1784 description
1785 "Per AF unprotected prefix statistics.";
1786 }
1787 description
1788 "List of prefixes that are not protected.";
1789 }
1791 list protection-statistics {
1792 key frr-protection-method;
1793 config false;
1794 leaf frr-protection-method {
1795 type string;
1796 description "Protection method used.
1797 The expected format is a single word.
1798 As example: LFA,rLFA, MRT, RSVP-TE...";
1799 }
1800 list address-family-stats {
1801 key address-family;
1803 leaf address-family {
1804 type iana-rt-types:address-family;
1806 description "Address-family";
1807 }
1808 leaf total-routes {
1809 type uint32;
1810 description "Total prefixes.";
1811 }
1812 leaf unprotected-routes {
1813 type uint32;
1814 description
1815 "Total prefixes that are not protected.";
1816 }
1817 leaf protected-routes {
1818 type uint32;
1819 description
1820 "Total prefixes that are protected.";
1821 }
1822 leaf linkprotected-routes {
1823 type uint32;
1824 description
1825 "Total prefixes that are link protected.";
1826 }
1827 leaf nodeprotected-routes {
1828 type uint32;
1829 description
1830 "Total prefixes that are node protected.";
1831 }
1832 description
1833 "Per AF protected prefix statistics.";
1834 }
1836 description "Global protection statistics.";
1837 }
1838 }
1840 /* Route table and local RIB groupings */
1842 grouping local-rib {
1843 description "Local-rib - RIB for Routes computed by the local
1844 IS-IS routing instance.";
1845 container local-rib {
1846 config false;
1847 description "Local-rib.";
1848 list route {
1849 key "prefix";
1850 description "Routes";
1851 leaf prefix {
1852 type inet:ip-prefix;
1853 description "Destination prefix.";
1854 }
1855 container next-hops {
1856 description "Next hops for the route.";
1857 list next-hop {
1858 key "next-hop";
1859 description "List of next hops for the route";
1860 leaf outgoing-interface {
1861 type if:interface-ref;
1862 description
1863 "Name of the outgoing interface.";
1864 }
1865 leaf next-hop {
1866 type inet:ip-address;
1867 description "Nexthop address.";
1868 }
1869 }
1870 }
1871 leaf metric {
1872 type uint32;
1873 description "Metric for this route.";
1874 }
1875 leaf level {
1876 type level-number;
1877 description "Level number for this route.";
1878 }
1879 leaf route-tag {
1880 type uint32;
1881 description "Route tag for this route.";
1882 }
1883 }
1884 }
1885 }
1887 grouping route-content {
1888 description
1889 "IS-IS protocol-specific route properties grouping.";
1890 leaf metric {
1891 type uint32;
1892 description "IS-IS metric of a route.";
1893 }
1894 leaf-list tag {
1895 type uint64;
1896 description
1897 "List of tags associated with the route. The leaf
1898 describes both 32-bit and 64-bit tags.";
1899 }
1900 leaf route-type {
1901 type enumeration {
1902 enum l2-up-internal {
1903 description "Level 2 internal route
1904 and not leaked to a lower level";
1905 }
1906 enum l1-up-internal {
1907 description "Level 1 internal route
1908 and not leaked to a lower level";
1909 }
1910 enum l2-up-external {
1911 description "Level 2 external route
1912 and not leaked to a lower level";
1913 }
1914 enum l1-up-external {
1915 description "Level 1 external route
1916 and not leaked to a lower level";
1917 }
1918 enum l2-down-internal {
1919 description "Level 2 internal route
1920 and leaked to a lower level";
1921 }
1922 enum l1-down-internal {
1923 description "Level 1 internal route
1924 and leaked to a lower level";
1925 }
1926 enum l2-down-external {
1927 description "Level 2 external route
1928 and leaked to a lower level";
1929 }
1930 enum l1-down-external {
1931 description "Level 1 external route
1932 and leaked to a lower level";
1933 }
1934 }
1935 description "IS-IS route type.";
1936 }
1937 }
1939 /* Grouping definitions for configuration and ops state */
1941 grouping adjacency-state {
1942 container adjacencies {
1943 config false;
1944 list adjacency {
1945 leaf neighbor-sys-type {
1946 type level;
1947 description
1948 "Level capability of neighboring system";
1949 }
1950 leaf neighbor-sysid {
1951 type system-id;
1952 description
1953 "The system-id of the neighbor";
1954 }
1955 leaf neighbor-extended-circuit-id {
1956 type extended-circuit-id;
1957 description
1958 "Circuit ID of the neighbor";
1959 }
1960 leaf neighbor-snpa {
1961 type snpa;
1962 description
1963 "SNPA of the neighbor";
1964 }
1965 leaf usage {
1966 type level;
1967 description
1968 "Define the level(s) activated on the adjacency.
1969 On a p2p link this might be level 1 and 2,
1970 but on a LAN, the usage will be level 1
1971 between peers at level 1 or level 2 between
1972 peers at level 2.";
1973 }
1974 leaf hold-timer {
1975 type rt-types:timer-value-seconds16;
1976 units seconds;
1977 description
1978 "The holding time in seconds for this
1979 adjacency. This value is based on
1980 received hello PDUs and the elapsed
1981 time since receipt.";
1982 }
1983 leaf neighbor-priority {
1984 type uint8 {
1985 range "0 .. 127";
1986 }
1987 description
1988 "Priority of the neighboring IS for becoming
1989 the DIS.";
1991 }
1992 leaf lastuptime {
1993 type yang:timestamp;
1994 description
1995 "When the adjacency most recently entered
1996 state 'up', measured in hundredths of a
1997 second since the last reinitialization of
1998 the network management subsystem.
1999 The value is 0 if the adjacency has never
2000 been in state 'up'.";
2001 }
2002 leaf state {
2003 type adj-state-type;
2004 description
2005 "This leaf describes the state of the interface.";
2006 }
2008 description
2009 "List of operational adjacencies.";
2010 }
2011 description
2012 "This container lists the adjacencies of
2013 the local node.";
2014 }
2015 description
2016 "Adjacency state";
2017 }
2019 grouping admin-control {
2020 leaf enable {
2021 if-feature admin-control;
2022 type boolean;
2023 default true;
2024 description
2025 "Enable/Disable the protocol.";
2026 }
2027 description
2028 "Grouping for admin control.";
2029 }
2031 grouping ietf-spf-delay {
2032 leaf initial-delay {
2033 type rt-types:timer-value-milliseconds;
2034 units msec;
2035 description
2036 "Delay used while in QUIET state (milliseconds).";
2037 }
2038 leaf short-delay {
2039 type rt-types:timer-value-milliseconds;
2040 units msec;
2041 description
2042 "Delay used while in SHORT_WAIT state (milliseconds).";
2043 }
2044 leaf long-delay {
2045 type rt-types:timer-value-milliseconds;
2046 units msec;
2047 description
2048 "Delay used while in LONG_WAIT state (milliseconds).";
2049 }
2051 leaf hold-down {
2052 type rt-types:timer-value-milliseconds;
2053 units msec;
2054 description
2055 "Timer used to consider an IGP stability period
2056 (milliseconds).";
2057 }
2058 leaf time-to-learn {
2059 type rt-types:timer-value-milliseconds;
2060 units msec;
2061 description
2062 "Duration used to learn all the IGP events
2063 related to a single component failure (milliseconds).";
2064 }
2065 leaf current-state {
2066 type enumeration {
2067 enum "quiet" {
2068 description "QUIET state";
2069 }
2070 enum "short-wait" {
2071 description "SHORT_WAIT state";
2072 }
2073 enum "long-wait" {
2074 description "LONG_WAIT state";
2075 }
2076 }
2077 config false;
2078 description
2079 "Current SPF backoff algorithm state.";
2080 }
2081 leaf remaining-time-to-learn {
2082 type rt-types:timer-value-milliseconds;
2083 units "msec";
2084 config false;
2085 description
2086 "Remaining time until time-to-learn timer fires.";
2088 }
2089 leaf remaining-hold-down {
2090 type rt-types:timer-value-milliseconds;
2091 units "msec";
2092 config false;
2093 description
2094 "Remaining time until hold-down timer fires.";
2095 }
2096 leaf last-event-received {
2097 type yang:timestamp;
2098 config false;
2099 description
2100 "Time of last IGP event received";
2101 }
2102 leaf next-spf-time {
2103 type yang:timestamp;
2104 config false;
2105 description
2106 "Time when next SPF has been scheduled.";
2107 }
2108 leaf last-spf-time {
2109 type yang:timestamp;
2110 config false;
2111 description
2112 "Time of last SPF computation.";
2113 }
2114 description
2115 "Grouping for IETF SPF delay configuration and state.";
2116 }
2118 grouping node-tag-config {
2119 description
2120 "IS-IS node tag config state.";
2121 container node-tags {
2122 if-feature node-tag;
2123 list node-tag {
2124 key tag;
2125 leaf tag {
2126 type uint32;
2127 description
2128 "Node tag value.";
2129 }
2130 description
2131 "List of tags.";
2132 }
2133 description
2134 "Container for node admin tags.";
2135 }
2136 }
2138 grouping authentication-global-cfg {
2139 choice authentication-type {
2140 case key-chain {
2141 if-feature key-chain;
2142 leaf key-chain {
2143 type key-chain:key-chain-ref;
2144 description
2145 "Reference to a key-chain.";
2146 }
2147 }
2148 case password {
2149 leaf key {
2150 type string;
2151 description
2152 "This leaf specifies the authentication key. The
2153 length of the key may be dependent on the
2154 cryptographic algorithm. In cases where it is
2155 not, a key length of at least 32 octets should be
2156 supported to allow for interoperability with
2157 strong keys.";
2158 }
2159 leaf crypto-algorithm {
2160 type identityref {
2161 base key-chain:crypto-algorithm;
2162 }
2163 description
2164 "Cryptographic algorithm associated with key.";
2165 }
2166 }
2167 description "Choice of authentication.";
2168 }
2169 description "Grouping for global authentication config.";
2170 }
2172 grouping metric-type-global-cfg {
2173 leaf value {
2174 type enumeration {
2175 enum wide-only {
2176 description
2177 "Advertise new metric style only (RFC5305)";
2178 }
2179 enum old-only {
2180 description
2181 "Advertise old metric style only (RFC1195)";
2183 }
2184 enum both {
2185 description "Advertise both metric styles";
2186 }
2187 }
2188 default wide-only;
2189 description
2190 "Type of metric to be generated:
2191 - wide-only means only new metric style
2192 is generated,
2193 - old-only means that only old style metric
2194 is generated,
2195 - both means that both are advertised.
2196 This leaf is only affecting IPv4 metrics.";
2197 }
2198 description
2199 "Grouping for global metric style config.";
2200 }
2202 grouping default-metric-global-cfg {
2203 leaf value {
2204 type wide-metric;
2205 default "10";
2206 description "Value of the metric";
2207 }
2208 description
2209 "Global default metric config grouping.";
2210 }
2212 grouping overload-global-cfg {
2213 leaf status {
2214 type boolean;
2215 default false;
2216 description
2217 "This leaf specifies the overload status.";
2218 }
2219 description "Grouping for overload bit config.";
2220 }
2222 grouping overload-max-metric-global-cfg {
2223 leaf timeout {
2224 type rt-types:timer-value-seconds16;
2225 units "seconds";
2226 description
2227 "Timeout (in seconds) of the overload condition.";
2228 }
2229 description
2230 "Overload maximum metric configuration grouping";
2231 }
2233 grouping route-preference-global-cfg {
2234 choice granularity {
2235 case detail {
2236 leaf internal {
2237 type uint8;
2238 description
2239 "Protocol preference for internal routes.";
2240 }
2241 leaf external {
2242 type uint8;
2243 description
2244 "Protocol preference for external routes.";
2245 }
2246 }
2247 case coarse {
2248 leaf default {
2249 type uint8;
2250 description
2251 "Protocol preference for all IS-IS routes.";
2252 }
2253 }
2254 description
2255 "Choice for implementation of route preference.";
2256 }
2257 description
2258 "Global route preference grouping";
2259 }
2261 grouping hello-authentication-cfg {
2262 choice authentication-type {
2263 case key-chain {
2264 if-feature key-chain;
2265 leaf key-chain {
2266 type key-chain:key-chain-ref;
2267 description "Reference to a key-chain.";
2268 }
2269 }
2270 case password {
2271 leaf key {
2272 type string;
2273 description "Authentication key specification - The
2274 length of the key may be dependent on the
2275 cryptographic algorithm. In cases where it is
2276 not, a key length of at leawt 32 octets should be
2277 supported to allow for interoperability with
2279 strong
2280 keys.";
2281 }
2282 leaf crypto-algorithm {
2283 type identityref {
2284 base key-chain:crypto-algorithm;
2285 }
2286 description
2287 "Cryptographic algorithm associated with key.";
2288 }
2289 }
2290 description "Choice of authentication.";
2291 }
2292 description "Grouping for hello authentication.";
2293 }
2295 grouping hello-interval-cfg {
2296 leaf value {
2297 type rt-types:timer-value-seconds16;
2298 units "seconds";
2299 default 10;
2300 description
2301 "Interval (in seconds) between successive hello
2302 messages.";
2303 }
2305 description "Interval between hello messages.";
2306 }
2308 grouping hello-multiplier-cfg {
2309 leaf value {
2310 type uint16;
2311 default 3;
2312 description
2313 "Number of missed hello messages prior to
2314 declaring the adjacency down.";
2315 }
2316 description
2317 "Number of missed hello messages prior to
2318 adjacency down grouping.";
2319 }
2321 grouping priority-cfg {
2322 leaf value {
2323 type uint8 {
2324 range "0 .. 127";
2325 }
2326 default 64;
2327 description
2328 "Priority of interface for DIS election.";
2329 }
2331 description "Interface DIS election priority grouping";
2332 }
2334 grouping metric-cfg {
2335 leaf value {
2336 type wide-metric;
2337 default "10";
2338 description "Metric value.";
2339 }
2340 description "Interface metric grouping";
2341 }
2343 grouping metric-parameters {
2344 container metric-type {
2345 uses metric-type-global-cfg;
2346 container level-1 {
2347 uses metric-type-global-cfg;
2348 description "level-1 specific configuration";
2349 }
2350 container level-2 {
2351 uses metric-type-global-cfg;
2352 description "level-2 specific configuration";
2353 }
2354 description "Metric style global configuration";
2355 }
2357 container default-metric {
2358 uses default-metric-global-cfg;
2359 container level-1 {
2360 uses default-metric-global-cfg;
2361 description "level-1 specific configuration";
2362 }
2363 container level-2 {
2364 uses default-metric-global-cfg;
2365 description "level-2 specific configuration";
2366 }
2367 description "Default metric global configuration";
2368 }
2369 container auto-cost {
2370 if-feature auto-cost;
2371 description
2372 "Interface Auto-cost configuration state.";
2373 leaf enable {
2374 type boolean;
2375 description
2376 "Enable/Disable interface auto-cost.";
2377 }
2378 leaf reference-bandwidth {
2379 when "../enable = 'true'" {
2380 description "Only when auto cost is enabled";
2381 }
2382 type uint32 {
2383 range "1..4294967";
2384 }
2385 units Mbits;
2386 description
2387 "Configure reference bandwidth used to automatically
2388 determine interface cost (Mbits). The cost is the
2389 reference bandwidth divided by the interface speed
2390 with 1 being the minimum cost.";
2391 }
2392 }
2394 description "Grouping for global metric parameters.";
2395 }
2397 grouping high-availability-parameters {
2398 container graceful-restart {
2399 if-feature graceful-restart;
2400 leaf enable {
2401 type boolean;
2402 default false;
2403 description "Enable graceful restart.";
2404 }
2405 leaf restart-interval {
2406 type rt-types:timer-value-seconds16;
2407 units "seconds";
2408 description
2409 "Interval (in seconds) to attempt graceful restart prior
2410 to failure.";
2411 }
2412 leaf helper-enable {
2413 type boolean;
2414 default true;
2415 description
2416 "Enable local IS-IS router as graceful restart helper.";
2417 }
2418 description "Graceful-Restart Configuration.";
2419 }
2420 container nsr {
2421 if-feature nsr;
2422 description "Non-Stop Routing (NSR) configuration.";
2423 leaf enable {
2424 type boolean;
2425 default false;
2426 description "Enable/Disable Non-Stop Routing (NSR).";
2427 }
2428 }
2429 description "Grouping for High Availability parameters.";
2430 }
2432 grouping authentication-parameters {
2433 container authentication {
2434 uses authentication-global-cfg;
2436 container level-1 {
2437 uses authentication-global-cfg;
2438 description "level-1 specific configuration";
2439 }
2440 container level-2 {
2441 uses authentication-global-cfg;
2442 description "level-2 specific configuration";
2443 }
2444 description "Authentication global configuration for
2445 both LSPs and SNPs.";
2446 }
2447 description "Grouping for authentication parameters";
2448 }
2449 grouping address-family-parameters {
2450 container address-families {
2451 if-feature nlpid-control;
2452 list address-family-list {
2453 key address-family;
2454 leaf address-family {
2455 type iana-rt-types:address-family;
2456 description "Address-family";
2457 }
2458 leaf enable {
2459 type boolean;
2460 description "Activate the address family.";
2461 }
2462 description
2463 "List of address families and whether or not they
2464 are activated.";
2465 }
2466 description "Address Family configuration";
2467 }
2468 description "Grouping for address family parameters.";
2469 }
2470 grouping mpls-parameters {
2471 container mpls {
2472 container te-rid {
2473 if-feature te-rid;
2474 description
2475 "Stable ISIS Router IP Address used for Traffic
2476 Engineering";
2477 leaf ipv4-router-id {
2478 type inet:ipv4-address;
2479 description
2480 "Router ID value that would be used in TLV 134.";
2481 }
2482 leaf ipv6-router-id {
2483 type inet:ipv6-address;
2484 description
2485 "Router ID value that would be used in TLV 140.";
2486 }
2487 }
2488 container ldp {
2489 container igp-sync {
2490 if-feature ldp-igp-sync;
2491 description
2492 "This container may be augmented with global
2493 parameters for igp-ldp-sync.";
2494 }
2495 description "LDP configuration.";
2496 }
2497 description "MPLS configuration";
2498 }
2499 description "Grouping for MPLS global parameters.";
2500 }
2502 grouping lsp-parameters {
2503 leaf lsp-mtu {
2504 type uint16;
2505 units "bytes";
2506 default 1492;
2507 description
2508 "Maximum size of an LSP PDU in bytes.";
2509 }
2510 leaf lsp-lifetime {
2511 type uint16 {
2512 range "1..65535";
2513 }
2514 units "seconds";
2515 description
2516 "Lifetime of the router's LSPs in seconds.";
2517 }
2518 leaf lsp-refresh {
2519 if-feature lsp-refresh;
2520 type rt-types:timer-value-seconds16;
2521 units "seconds";
2522 description
2523 "Refresh interval of the router's LSPs in seconds.";
2524 }
2525 leaf poi-tlv {
2526 if-feature poi-tlv;
2527 type boolean;
2528 default false;
2529 description
2530 "Enable advertisement of IS-IS purge TLV.";
2531 }
2532 description "Grouping for LSP global parameters.";
2533 }
2534 grouping spf-parameters {
2535 container spf-control {
2536 leaf paths {
2537 if-feature max-ecmp;
2538 type uint16 {
2539 range "1..32";
2540 }
2541 description
2542 "Maximum number of Equal-Cost Multi-Path (ECMP) paths.";
2543 }
2544 container ietf-spf-delay {
2545 if-feature ietf-spf-delay;
2546 uses ietf-spf-delay;
2547 description "IETF SPF delay algorithm configuration.";
2548 }
2549 description
2550 "SPF calculation control.";
2551 }
2552 description "Grouping for SPF global parameters.";
2553 }
2554 grouping instance-config {
2555 description "IS-IS global configuration grouping";
2557 uses admin-control;
2559 leaf level-type {
2560 type level;
2561 default "level-all";
2562 description
2563 "Level of an IS-IS node - can be level-1,
2564 level-2 or level-all.";
2565 }
2566 leaf system-id {
2567 type system-id;
2568 description "system-id of the node.";
2569 }
2571 leaf maximum-area-addresses {
2572 if-feature maximum-area-addresses;
2573 type uint8;
2574 default 3;
2575 description "Maximum areas supported.";
2576 }
2578 leaf-list area-address {
2579 type area-address;
2580 description
2581 "List of areas supported by the protocol instance.";
2582 }
2584 uses lsp-parameters;
2585 uses high-availability-parameters;
2586 uses node-tag-config;
2587 uses metric-parameters;
2588 uses authentication-parameters;
2589 uses address-family-parameters;
2590 uses mpls-parameters;
2591 uses spf-parameters;
2592 uses instance-fast-reroute-config;
2594 container preference {
2595 uses route-preference-global-cfg;
2596 description "Router preference configuration for IS-IS
2597 protocol instance route installation";
2598 }
2600 container overload {
2601 uses overload-global-cfg;
2602 description "Router protocol instance overload state
2603 configuration";
2604 }
2606 container overload-max-metric {
2607 if-feature overload-max-metric;
2608 uses overload-max-metric-global-cfg;
2609 description
2610 "Router protocol instance overload maximum
2611 metric advertisement configuration.";
2612 }
2613 }
2614 grouping instance-state {
2615 description
2616 "IS-IS instance operational state.";
2617 uses spf-log;
2618 uses lsp-log;
2619 uses hostname-db;
2620 uses lsdb;
2621 uses local-rib;
2622 uses system-counters;
2623 uses instance-fast-reroute-state;
2624 }
2626 grouping multi-topology-config {
2627 description "Per-topology configuration";
2628 container default-metric {
2629 uses default-metric-global-cfg;
2630 container level-1 {
2631 uses default-metric-global-cfg;
2632 description "level-1 specific configuration";
2633 }
2634 container level-2 {
2635 uses default-metric-global-cfg;
2636 description "level-2 specific configuration";
2637 }
2638 description "Default metric per-topology configuration";
2639 }
2640 uses node-tag-config;
2641 }
2643 grouping interface-config {
2644 description "Interface configuration grouping";
2645 leaf level-type {
2646 type level;
2647 default "level-all";
2648 description "IS-IS level of the interface.";
2649 }
2650 leaf lsp-pacing-interval {
2651 type rt-types:timer-value-milliseconds;
2652 units "milliseconds";
2653 default 33;
2654 description
2655 "Interval (in milli-seconds) between LSP
2656 transmissions.";
2657 }
2658 leaf lsp-retransmit-interval {
2659 type rt-types:timer-value-seconds16;
2660 units "seconds";
2661 description
2662 "Interval (in seconds) between LSP
2663 retransmissions.";
2664 }
2665 leaf passive {
2666 type boolean;
2667 default "false";
2668 description
2669 "Indicates whetherthe interface is in passive mode (IS-IS
2670 not running but network is advertised).";
2671 }
2672 leaf csnp-interval {
2673 type rt-types:timer-value-seconds16;
2674 units "seconds";
2675 default 10;
2676 description
2677 "Interval (in seconds) between CSNP messages.";
2678 }
2679 container hello-padding {
2680 leaf enable {
2681 type boolean;
2682 default "true";
2683 description
2684 "IS-IS Hello-padding activation - enabled by default.";
2685 }
2686 description "IS-IS hello padding configuration.";
2687 }
2688 leaf mesh-group-enable {
2689 type mesh-group-state;
2690 description "IS-IS interface mesh-group state";
2691 }
2692 leaf mesh-group {
2693 when "../mesh-group-enable = 'mesh-set'" {
2694 description
2695 "Only valid when mesh-group-enable equals meshset";
2696 }
2697 type uint8;
2698 description "IS-IS interface mesh-group ID.";
2699 }
2700 leaf interface-type {
2701 type interface-type;
2702 default "broadcast";
2703 description
2704 "Type of adjacency to be established on the interface. This
2705 dictates the type of hello messages that are used.";
2706 }
2708 uses admin-control;
2709 leaf-list tag {
2710 if-feature prefix-tag;
2711 type uint32;
2712 description
2713 "List of tags associated with the interface.";
2714 }
2715 leaf-list tag64 {
2716 if-feature prefix-tag64;
2717 type uint64;
2718 description
2719 "List of 64-bit tags associated with the interface.";
2720 }
2721 leaf node-flag {
2722 if-feature node-flag;
2723 type boolean;
2724 default false;
2725 description
2726 "Set prefix as a node representative prefix.";
2727 }
2728 container hello-authentication {
2729 uses hello-authentication-cfg;
2730 container level-1 {
2731 uses hello-authentication-cfg;
2732 description "level-1 specific configuration";
2733 }
2734 container level-2 {
2735 uses hello-authentication-cfg;
2736 description "level-2 specific configuration";
2737 }
2738 description
2739 "Authentication type to be used in hello messages.";
2740 }
2741 container hello-interval {
2742 uses hello-interval-cfg;
2743 container level-1 {
2744 uses hello-interval-cfg;
2745 description "level-1 specific configuration";
2746 }
2747 container level-2 {
2748 uses hello-interval-cfg;
2749 description "level-2 specific configuration";
2750 }
2751 description "Interval between hello messages.";
2752 }
2753 container hello-multiplier {
2754 uses hello-multiplier-cfg;
2755 container level-1 {
2756 uses hello-multiplier-cfg;
2757 description "level-1 specific configuration";
2758 }
2759 container level-2 {
2760 uses hello-multiplier-cfg;
2761 description "level-2 specific configuration";
2762 }
2763 description "Hello multiplier configuration.";
2764 }
2765 container priority {
2766 must '../interface-type = "broadcast"' {
2767 error-message
2768 "Priority only applies to broadcast interfaces.";
2769 description "Check for broadcast interface.";
2770 }
2771 uses priority-cfg;
2772 container level-1 {
2773 uses priority-cfg;
2774 description "level-1 specific configuration";
2775 }
2776 container level-2 {
2777 uses priority-cfg;
2778 description "level-2 specific configuration";
2779 }
2780 description "Priority for DIS election.";
2781 }
2782 container metric {
2783 uses metric-cfg;
2784 container level-1 {
2785 uses metric-cfg;
2786 description "level-1 specific configuration";
2787 }
2788 container level-2 {
2789 uses metric-cfg;
2790 description "level-2 specific configuration";
2791 }
2792 description "Metric configuration.";
2793 }
2794 container bfd {
2795 if-feature bfd;
2796 description "BFD Client Configuration.";
2797 uses bfd-types:client-cfg-parms;
2799 reference "RFC YYYY - YANG Data Model for Bidirectional
2800 Forwarding Detection (BFD).
2802 -- Note to RFC Editor Please replace YYYY with published RFC number for
2803 draft-ietf-bfd-yang.";
2804 }
2805 container address-families {
2806 if-feature nlpid-control;
2807 list address-family-list {
2808 key address-family;
2809 leaf address-family {
2810 type iana-rt-types:address-family;
2811 description "Address-family";
2812 }
2813 description "List of AFs.";
2814 }
2815 description "Interface address-families";
2816 }
2817 container mpls {
2818 container ldp {
2819 leaf igp-sync {
2820 if-feature ldp-igp-sync;
2821 type boolean;
2822 default false;
2823 description "Enables IGP/LDP synchronization";
2824 }
2825 description "LDP protocol related configuration.";
2826 }
2827 description "MPLS configuration for IS-IS interfaces";
2828 }
2829 uses interface-fast-reroute-config;
2830 }
2832 grouping multi-topology-interface-config {
2833 description "IS-IS interface topology configuration.";
2834 container metric {
2835 uses metric-cfg;
2836 container level-1 {
2837 uses metric-cfg;
2838 description "level-1 specific configuration";
2839 }
2840 container level-2 {
2841 uses metric-cfg;
2842 description "level-2 specific configuration";
2843 }
2844 description "Metric IS-IS interface configuration.";
2845 }
2846 }
2847 grouping interface-state {
2848 description
2849 "IS-IS interface operational state.";
2850 uses adjacency-state;
2851 uses event-counters;
2852 uses packet-counters;
2853 }
2855 /* Grouping for the hostname database */
2857 grouping hostname-db {
2858 container hostnames {
2859 config false;
2860 list hostname {
2861 key system-id;
2862 leaf system-id {
2863 type system-id;
2864 description
2865 "system-id associated with the hostname.";
2866 }
2867 leaf hostname {
2868 type string {
2869 length "1..255";
2870 }
2871 description
2872 "Hostname associated with the system-id
2873 as defined in RFC5301.";
2874 }
2875 description
2876 "List of system-id/hostname associations.";
2877 }
2878 description
2879 "Hostname to system-id mapping database.";
2880 }
2881 description
2882 "Grouping for hostname to system-id mapping database.";
2883 }
2885 /* Groupings for counters */
2887 grouping system-counters {
2888 container system-counters {
2889 config false;
2890 list level {
2891 key level;
2893 leaf level {
2894 type level-number;
2895 description "IS-IS level.";
2896 }
2897 leaf corrupted-lsps {
2898 type uint32;
2899 description
2900 "Number of corrupted in-memory LSPs detected.
2901 LSPs received from the wire with a bad
2902 checksum are silently dropped and not counted.
2903 LSPs received from the wire with parse errors
2904 are counted by lsp-errors.";
2905 }
2906 leaf authentication-type-fails {
2907 type uint32;
2908 description
2909 "Number of authentication type mismatches.";
2910 }
2911 leaf authentication-fails {
2912 type uint32;
2913 description
2914 "Number of authentication key failures.";
2915 }
2916 leaf database-overload {
2917 type uint32;
2918 description
2919 "Number of times the database has become
2920 overloaded.";
2921 }
2922 leaf own-lsp-purge {
2923 type uint32;
2924 description
2925 "Number of times a zero-aged copy of the system's
2926 own LSP is received from some other IS-IS node.";
2927 }
2928 leaf manual-address-drop-from-area {
2929 type uint32;
2930 description
2931 "Number of times a manual address
2932 has been dropped from the area.";
2933 }
2934 leaf max-sequence {
2935 type uint32;
2936 description
2937 "Number of times the system has attempted
2938 to exceed the maximum sequence number.";
2939 }
2940 leaf sequence-number-skipped {
2941 type uint32;
2942 description
2943 "Number of times a sequence number skip has
2944 occured.";
2945 }
2946 leaf id-len-mismatch {
2947 type uint32;
2948 description
2949 "Number of times a PDU is received with a
2950 different value for the ID field length
2951 than that of the receiving system.";
2952 }
2953 leaf partition-changes {
2954 type uint32;
2955 description
2956 "Number of partition changes detected.";
2957 }
2958 leaf lsp-errors {
2959 type uint32;
2960 description
2961 "Number of LSPs with errors we have received.";
2962 }
2963 leaf spf-runs {
2964 type uint32;
2965 description
2966 "Number of times we ran SPF at this level.";
2967 }
2968 description
2969 "List of supported levels.";
2970 }
2971 description
2972 "List counters for the IS-IS protocol instance";
2973 }
2974 description "System counters grouping.";
2975 }
2977 grouping event-counters {
2978 container event-counters {
2979 config false;
2980 leaf adjacency-changes {
2981 type uint32;
2982 description
2983 "The number of times an adjacency state change has
2984 occured on this interface.";
2985 }
2986 leaf adjacency-number {
2987 type uint32;
2988 description
2989 "The number of adjacencies on this interface.";
2990 }
2991 leaf init-fails {
2992 type uint32;
2993 description
2994 "The number of times initialization of this
2995 interface has failed. This counts events such
2996 as PPP NCP failures. Failures to form an
2997 adjacency are counted by adjacency-rejects.";
2998 }
2999 leaf adjacency-rejects {
3000 type uint32;
3001 description
3002 "The number of times an adjacency has been
3003 rejected on this interface.";
3004 }
3005 leaf id-len-mismatch {
3006 type uint32;
3007 description
3008 "The number of times an IS-IS PDU with an ID
3009 field length different from that for this
3010 system has been received on this interface.";
3011 }
3012 leaf max-area-addresses-mismatch {
3013 type uint32;
3014 description
3015 "The number of times an IS-IS PDU has been
3016 received on this interface with the
3017 max area address field differing from that of
3018 this system.";
3019 }
3020 leaf authentication-type-fails {
3021 type uint32;
3022 description
3023 "Number of authentication type mismatches.";
3024 }
3025 leaf authentication-fails {
3026 type uint32;
3027 description
3028 "Number of authentication key failures.";
3029 }
3030 leaf lan-dis-changes {
3031 type uint32;
3032 description
3033 "The number of times the DIS has changed on this
3034 interface at this level. If the interface type is
3035 point-to-point,the count is zero.";
3036 }
3037 description "IS-IS interface event counters.";
3038 }
3039 description
3040 "Grouping for IS-IS interface event counters";
3041 }
3043 grouping packet-counters {
3044 container packet-counters {
3045 config false;
3046 list level {
3047 key level;
3049 leaf level {
3050 type level-number;
3051 description "IS-IS level.";
3052 }
3053 container iih {
3054 leaf in {
3055 type uint32;
3056 description "Received IIH PDUs.";
3057 }
3058 leaf out {
3059 type uint32;
3060 description "Sent IIH PDUs.";
3061 }
3062 description "Number of IIH PDUs received/sent.";
3063 }
3064 container ish {
3065 leaf in {
3066 type uint32;
3067 description "Received ISH PDUs.";
3068 }
3069 leaf out {
3070 type uint32;
3071 description "Sent ISH PDUs.";
3072 }
3073 description
3074 "ISH PDUs received/sent.";
3075 }
3076 container esh {
3077 leaf in {
3078 type uint32;
3079 description "Received ESH PDUs.";
3080 }
3081 leaf out {
3082 type uint32;
3083 description "Sent ESH PDUs.";
3084 }
3085 description "Number of ESH PDUs received/sent.";
3086 }
3087 container lsp {
3088 leaf in {
3089 type uint32;
3090 description "Received LSP PDUs.";
3091 }
3092 leaf out {
3093 type uint32;
3094 description "Sent LSP PDUs.";
3095 }
3096 description "Number of LSP PDUs received/sent.";
3097 }
3098 container psnp {
3099 leaf in {
3100 type uint32;
3101 description "Received PSNP PDUs.";
3102 }
3103 leaf out {
3104 type uint32;
3105 description "Sent PSNP PDUs.";
3106 }
3107 description "Number of PSNP PDUs received/sent.";
3108 }
3109 container csnp {
3110 leaf in {
3111 type uint32;
3112 description "Received CSNP PDUs.";
3113 }
3114 leaf out {
3115 type uint32;
3116 description "Sent CSNP PDUs.";
3117 }
3118 description "Number of CSNP PDUs received/sent.";
3119 }
3120 container unknown {
3121 leaf in {
3122 type uint32;
3123 description "Received unknown PDUs.";
3124 }
3125 leaf out {
3126 type uint32;
3127 description "Sent unknown PDUs.";
3128 }
3129 description "Number of unknown PDUs received/sent.";
3130 }
3131 description
3132 "List of packet counter for supported llevels.";
3133 }
3134 description "Packet counters per IS-IS level.";
3135 }
3136 description
3137 "Grouping for per IS-IS Level packet counters.";
3138 }
3139 /* Groupings for various log buffers */
3140 grouping spf-log {
3141 container spf-log {
3142 config false;
3143 list event {
3144 key id;
3146 leaf id {
3147 type uint32;
3148 description
3149 "Event identifier - purely internal value.";
3150 }
3151 leaf spf-type {
3152 type enumeration {
3153 enum full {
3154 description "Full SPF computation.";
3155 }
3156 enum route-only {
3157 description
3158 "Route reachability only SPF computation";
3159 }
3160 }
3161 description "Type of SPF computation performed.";
3162 }
3163 leaf level {
3164 type level-number;
3165 description
3166 "IS-IS level number for SPF computation";
3167 }
3168 leaf schedule-timestamp {
3169 type yang:timestamp;
3170 description
3171 "Timestamp of when the SPF computation was
3172 scheduled.";
3173 }
3174 leaf start-timestamp {
3175 type yang:timestamp;
3176 description
3177 "Timestamp of when the SPF computation started.";
3178 }
3179 leaf end-timestamp {
3180 type yang:timestamp;
3181 description
3182 "Timestamp of when the SPF computation ended.";
3183 }
3184 list trigger-lsp {
3185 key "lsp";
3186 leaf lsp {
3187 type lsp-id;
3188 description
3189 "LSP ID of the LSP triggering SPF computation.";
3190 }
3191 leaf sequence {
3192 type uint32;
3193 description
3194 "Sequence number of the LSP triggering SPF
3195 computation";
3196 }
3197 description
3198 "This list includes the LSPs that triggered the
3199 SPF computation.";
3200 }
3201 description
3202 "List of computation events - implemented as a
3203 wrapping buffer.";
3204 }
3206 description
3207 "This container lists the SPF computation events.";
3208 }
3209 description "Grouping for spf-log events.";
3210 }
3212 grouping lsp-log {
3213 container lsp-log {
3214 config false;
3215 list event {
3216 key id;
3218 leaf id {
3219 type uint32;
3220 description
3221 "Event identifier - purely internal value.";
3222 }
3223 leaf level {
3224 type level-number;
3225 description
3226 "IS-IS level number for LSP";
3227 }
3228 container lsp {
3229 leaf lsp {
3230 type lsp-id;
3231 description
3232 "LSP ID of the LSP.";
3233 }
3234 leaf sequence {
3235 type uint32;
3236 description
3237 "Sequence number of the LSP.";
3238 }
3239 description
3240 "LSP identification container - either the received
3241 LSP or the locally generated LSP.";
3242 }
3244 leaf received-timestamp {
3245 type yang:timestamp;
3246 description
3247 "This is the timestamp when the LSA was received.
3248 In case of local LSA update, the timestamp refers
3249 to the LSA origination time.";
3250 }
3252 leaf reason {
3253 type identityref {
3254 base lsp-log-reason;
3255 }
3256 description "Type of LSP change.";
3257 }
3259 description
3260 "List of LSP events - implemented as a
3261 wrapping buffer.";
3262 }
3264 description
3265 "This container lists the LSP log.
3266 Local LSP modifications are also included
3267 in the list.";
3269 } description "Grouping for LSP log.";
3270 }
3272 /* Groupings for the LSDB description */
3274 /* Unknown TLV and subTLV description */
3275 grouping tlv {
3276 description
3277 "Type-Length-Value (TLV)";
3278 leaf type {
3279 type uint16;
3280 description "TLV type.";
3282 }
3283 leaf length {
3284 type uint16;
3285 description "TLV length (octets).";
3286 }
3287 leaf value {
3288 type yang:hex-string;
3289 description "TLV value.";
3290 }
3291 }
3293 grouping unknown-tlvs {
3294 description
3295 "Unknown TLVs grouping - Used for unknown TLVs or
3296 unknown sub-TLVs.";
3297 container unknown-tlvs {
3298 description "All unknown TLVs.";
3299 list unknown-tlv {
3300 description "Unknown TLV.";
3301 uses tlv;
3302 }
3303 }
3304 }
3306 /* TLVs and subTLVs for prefixes */
3308 grouping prefix-reachability-attributes {
3309 description
3310 "Grouping for extended reachability attributes of an
3311 IPv4 or IPv6 prefix.";
3313 leaf external-prefix-flag {
3314 type boolean;
3315 description "External prefix flag.";
3316 }
3317 leaf readvertisement-flag {
3318 type boolean;
3319 description "Readvertisement flag.";
3320 }
3321 leaf node-flag {
3322 type boolean;
3323 description "Node flag.";
3324 }
3325 }
3327 grouping prefix-ipv4-source-router-id {
3328 description
3329 "Grouping for the IPv4 source router ID of a prefix
3330 advertisement.";
3332 leaf ipv4-source-router-id {
3333 type inet:ipv4-address;
3334 description "IPv4 Source router ID address.";
3335 }
3336 }
3338 grouping prefix-ipv6-source-router-id {
3339 description
3340 "Grouping for the IPv6 source router ID of a prefix
3341 advertisement.";
3343 leaf ipv6-source-router-id {
3344 type inet:ipv6-address;
3345 description "IPv6 Source router ID address.";
3346 }
3347 }
3349 grouping prefix-attributes-extension {
3350 description "Prefix extended attributes
3351 as defined in RFC7794.";
3353 uses prefix-reachability-attributes;
3354 uses prefix-ipv4-source-router-id;
3355 uses prefix-ipv6-source-router-id;
3356 }
3358 grouping prefix-ipv4-std {
3359 description
3360 "Grouping for attributes of an IPv4 standard prefix
3361 as defined in RFC1195.";
3362 leaf ip-prefix {
3363 type inet:ipv4-address;
3364 description "IPv4 prefix address";
3365 }
3366 leaf prefix-len {
3367 type uint8;
3368 description "IPv4 prefix length (in bits)";
3369 }
3370 leaf i-e {
3371 type boolean;
3372 description "Internal or External (I/E) Metric bit value.";
3373 }
3374 container default-metric {
3375 leaf metric {
3376 type std-metric;
3377 description "Default IS-IS metric for IPv4 prefix";
3379 }
3380 description "IS-IS default metric container.";
3381 }
3382 container delay-metric {
3383 leaf metric {
3384 type std-metric;
3385 description "IS-IS delay metric for IPv4 prefix";
3386 }
3387 leaf supported {
3388 type boolean;
3389 default "false";
3390 description
3391 "Indicates whether IS-IS delay metric is supported.";
3392 }
3393 description "IS-IS delay metric container.";
3394 }
3395 container expense-metric {
3396 leaf metric {
3397 type std-metric;
3398 description "IS-IS expense metric for IPv4 prefix";
3399 }
3400 leaf supported {
3401 type boolean;
3402 default "false";
3403 description
3404 "Indicates whether IS-IS delay metric is supported.";
3405 }
3406 description "IS-IS expense metric container.";
3407 }
3408 container error-metric {
3409 leaf metric {
3410 type std-metric;
3411 description
3412 "This leaf describes the IS-IS error metric value";
3413 }
3414 leaf supported {
3415 type boolean;
3416 default "false";
3417 description "IS-IS error metric for IPv4 prefix";
3418 }
3419 description "IS-IS error metric container.";
3420 }
3421 }
3423 grouping prefix-ipv4-extended {
3424 description
3425 "Grouping for attributes of an IPv4 extended prefix
3426 as defined in RFC5305.";
3428 leaf up-down {
3429 type boolean;
3430 description "Value of up/down bit.";
3431 }
3432 leaf ip-prefix {
3433 type inet:ipv4-address;
3434 description "IPv4 prefix address";
3435 }
3436 leaf prefix-len {
3437 type uint8;
3438 description "IPv4 prefix length (in bits)";
3439 }
3440 leaf metric {
3441 type wide-metric;
3442 description "IS-IS wide metric value";
3443 }
3444 leaf-list tag {
3445 type uint32;
3446 description
3447 "List of 32-bit tags associated with the IPv4 prefix.";
3448 }
3449 leaf-list tag64 {
3450 type uint64;
3451 description
3452 "List of 32-bit tags associated with the IPv4 prefix.";
3453 }
3454 uses prefix-attributes-extension;
3455 }
3457 grouping prefix-ipv6-extended {
3458 description "Grouping for attributes of an IPv6 prefix
3459 as defined in RFC5308.";
3460 leaf up-down {
3461 type boolean;
3462 description "Value of up/down bit.";
3463 }
3464 leaf ip-prefix {
3465 type inet:ipv6-address;
3466 description "IPv6 prefix address";
3467 }
3468 leaf prefix-len {
3469 type uint8;
3470 description "IPv4 prefix length (in bits)";
3471 }
3472 leaf metric {
3473 type wide-metric;
3474 description "IS-IS wide metric value";
3475 }
3476 leaf-list tag {
3477 type uint32;
3478 description
3479 "List of 32-bit tags associated with the IPv4 prefix.";
3480 }
3481 leaf-list tag64 {
3482 type uint64;
3483 description
3484 "List of 32-bit tags associated with the IPv4 prefix.";
3485 }
3486 uses prefix-attributes-extension;
3487 }
3489 /* TLVs and subTLVs for neighbors */
3491 grouping neighbor-link-attributes {
3492 description
3493 "Grouping for link attributes as defined
3494 in RFC5029";
3495 leaf link-attributes-flags {
3496 type uint16;
3497 description
3498 "Flags for the link attributes";
3499 }
3500 }
3501 grouping neighbor-gmpls-extensions {
3502 description
3503 "Grouping for GMPLS attributes of a neighbor as defined
3504 in RFC5307";
3505 leaf link-local-id {
3506 type uint32;
3507 description
3508 "Local identifier of the link.";
3509 }
3510 leaf remote-local-id {
3511 type uint32;
3512 description
3513 "Remote identifier of the link.";
3514 }
3515 leaf protection-capability {
3516 type uint8;
3517 description
3518 "Describes the protection capabilities
3519 of the link. This is the value of the
3520 first octet of the sub-TLV type 20 value.";
3521 }
3522 container interface-switching-capability {
3523 description
3524 "Interface switching capabilities of the link.";
3525 leaf switching-capability {
3526 type uint8;
3527 description
3528 "Switching capability of the link.";
3529 }
3530 leaf encoding {
3531 type uint8;
3532 description
3533 "Type of encoding of the LSP being used.";
3534 }
3535 container max-lsp-bandwidths {
3536 description "Per priority max LSP bandwidths.";
3537 list max-lsp-bandwidth {
3538 leaf priority {
3539 type uint8 {
3540 range "0 .. 7";
3541 }
3542 description "Priority from 0 to 7.";
3543 }
3544 leaf bandwidth {
3545 type rt-types:bandwidth-ieee-float32;
3546 description "max LSP bandwidth.";
3547 }
3548 description
3549 "List of max LSP bandwidths for different
3550 priorities.";
3551 }
3552 }
3553 container tdm-specific {
3554 when "../switching-capability = 100";
3555 description
3556 "Switching Capability-specific information applicable
3557 when switching type is TDM.";
3559 leaf minimum-lsp-bandwidth {
3560 type rt-types:bandwidth-ieee-float32;
3561 description "minimum LSP bandwidth.";
3562 }
3563 leaf indication {
3564 type uint8;
3565 description
3566 "The indication whether the interface supports Standard
3567 or Arbitrary SONET/SDH.";
3568 }
3569 }
3570 container psc-specific {
3571 when "../switching-capability >= 1 and
3573 ../switching-capability <= 4";
3574 description
3575 "Switching Capability-specific information applicable
3576 when switching type is PSC1,PSC2,PSC3 or PSC4.";
3578 leaf minimum-lsp-bandwidth {
3579 type rt-types:bandwidth-ieee-float32;
3580 description "minimum LSP bandwidth.";
3581 }
3582 leaf mtu {
3583 type uint16;
3584 units bytes;
3585 description
3586 "Interface MTU";
3587 }
3588 }
3589 }
3590 }
3592 grouping neighbor-extended-te-extensions {
3593 description
3594 "Grouping for TE attributes of a neighbor as defined
3595 in RFC7810";
3597 container unidirectional-link-delay {
3598 description
3599 "Container for the average delay
3600 from the local neighbor to the remote one.";
3601 leaf flags {
3602 type bits {
3603 bit A {
3604 position 7;
3605 description
3606 "The A bit represents the Anomalous (A) bit.
3607 The A bit is set when the measured value of
3608 this parameter exceeds its configured
3609 maximum threshold.
3610 The A bit is cleared when the measured value
3611 falls below its configured reuse threshold.
3612 If the A bit is clear,
3613 the value represents steady-state link performance.";
3614 }
3615 }
3616 description
3617 "Flags.";
3618 }
3619 leaf value {
3620 type uint32;
3621 units usec;
3622 description
3623 "Delay value expressed in microseconds.";
3624 }
3625 }
3626 container min-max-unidirectional-link-delay {
3627 description
3628 "Container for the min and max delay
3629 from the local neighbor to the remote one.";
3630 leaf flags {
3631 type bits {
3632 bit A {
3633 position 7;
3634 description
3635 "The A bit represents the Anomalous (A) bit.
3636 The A bit is set when the measured value of
3637 this parameter exceeds its configured
3638 maximum threshold.
3639 The A bit is cleared when the measured value
3640 falls below its configured reuse threshold.
3641 If the A bit is clear,
3642 the value represents steady-state link performance.";
3643 }
3644 }
3645 description
3646 "Flags.";
3647 }
3648 leaf min-value {
3649 type uint32;
3650 units usec;
3651 description
3652 "Minimum delay value expressed in microseconds.";
3653 }
3654 leaf max-value {
3655 type uint32;
3656 units usec;
3657 description
3658 "Maximum delay value expressed in microseconds.";
3659 }
3660 }
3661 container unidirectional-link-delay-variation {
3662 description
3663 "Container for the average delay variation
3664 from the local neighbor to the remote one.";
3665 leaf value {
3666 type uint32;
3667 units usec;
3668 description
3669 "Delay variation value expressed in microseconds.";
3670 }
3671 }
3672 container unidirectional-link-loss{
3673 description
3674 "Container for the packet loss
3675 from the local neighbor to the remote one.";
3676 leaf flags {
3677 type bits {
3678 bit A {
3679 position 7;
3680 description
3681 "The A bit represents the Anomalous (A) bit.
3682 The A bit is set when the measured value of
3683 this parameter exceeds its configured
3684 maximum threshold.
3685 The A bit is cleared when the measured value
3686 falls below its configured reuse threshold.
3687 If the A bit is clear,
3688 the value represents steady-state link performance.";
3689 }
3690 }
3691 description
3692 "Flags.";
3693 }
3694 leaf value {
3695 type uint32;
3696 units percent;
3697 description
3698 "Link packet loss expressed as a percentage
3699 of the total traffic sent over a configurable interval.";
3700 }
3701 }
3702 container unidirectional-link-residual-bandwidth {
3703 description
3704 "Container for the residual bandwidth
3705 from the local neighbor to the remote one.";
3706 leaf value {
3707 type rt-types:bandwidth-ieee-float32;
3708 units Bps;
3709 description
3710 "Residual bandwidth.";
3711 }
3712 }
3713 container unidirectional-link-available-bandwidth {
3714 description
3715 "Container for the available bandwidth
3716 from the local neighbor to the remote one.";
3718 leaf value {
3719 type rt-types:bandwidth-ieee-float32;
3720 units Bps;
3721 description
3722 "Available bandwidth.";
3723 }
3724 }
3725 container unidirectional-link-utilized-bandwidth {
3726 description
3727 "Container for the utilized bandwidth
3728 from the local neighbor to the remote one.";
3729 leaf value {
3730 type rt-types:bandwidth-ieee-float32;
3731 units Bps;
3732 description
3733 "Utilized bandwidth.";
3734 }
3735 }
3736 }
3738 grouping neighbor-te-extensions {
3739 description
3740 "Grouping for TE attributes of a neighbor as defined
3741 in RFC5305";
3742 leaf admin-group {
3743 type uint32;
3744 description
3745 "Administrative group/Resource Class/Color.";
3746 }
3747 container local-if-ipv4-addrs {
3748 description "All local interface IPv4 addresses.";
3749 leaf-list local-if-ipv4-addr {
3750 type inet:ipv4-address;
3751 description
3752 "List of local interface IPv4 addresses.";
3753 }
3754 }
3755 container remote-if-ipv4-addrs {
3756 description "All remote interface IPv4 addresses.";
3757 leaf-list remote-if-ipv4-addr {
3758 type inet:ipv4-address;
3759 description
3760 "List of remote interface IPv4 addresses.";
3761 }
3762 }
3763 leaf te-metric {
3764 type uint32;
3765 description "TE metric.";
3767 }
3768 leaf max-bandwidth {
3769 type rt-types:bandwidth-ieee-float32;
3770 description "Maximum bandwidth.";
3771 }
3772 leaf max-reservable-bandwidth {
3773 type rt-types:bandwidth-ieee-float32;
3774 description "Maximum reservable bandwidth.";
3775 }
3776 container unreserved-bandwidths {
3777 description "All unreserved bandwidths.";
3778 list unreserved-bandwidth {
3779 leaf priority {
3780 type uint8 {
3781 range "0 .. 7";
3782 }
3783 description "Priority from 0 to 7.";
3784 }
3785 leaf unreserved-bandwidth {
3786 type rt-types:bandwidth-ieee-float32;
3787 description "Unreserved bandwidth.";
3788 }
3789 description
3790 "List of unreserved bandwidths for different
3791 priorities.";
3792 }
3793 }
3794 }
3796 grouping neighbor-extended {
3797 description
3798 "Grouping for attributes of an IS-IS extended neighbor.";
3799 leaf neighbor-id {
3800 type extended-system-id;
3801 description "system-id of the extended neighbor.";
3802 }
3803 container instances {
3804 description "List of all adjacencies between the local
3805 system and the neighbor system-id.";
3806 list instance {
3807 key id;
3809 leaf id {
3810 type uint32;
3811 description "Unique identifier of an instance of a
3812 particular neighbor.";
3813 }
3814 leaf metric {
3815 type wide-metric;
3816 description "IS-IS wide metric for extended neighbor";
3817 }
3818 uses neighbor-gmpls-extensions;
3819 uses neighbor-te-extensions;
3820 uses neighbor-extended-te-extensions;
3821 uses neighbor-link-attributes;
3822 uses unknown-tlvs;
3823 description "Instance of a particular adjacency.";
3824 }
3825 }
3826 }
3828 grouping neighbor {
3829 description "IS-IS standard neighbor grouping.";
3830 leaf neighbor-id {
3831 type extended-system-id;
3832 description "IS-IS neighbor system-id";
3833 }
3834 container instances {
3835 description "List of all adjacencies between the local
3836 system and the neighbor system-id.";
3837 list instance {
3838 key id;
3840 leaf id {
3841 type uint32;
3842 description "Unique identifier of an instance of a
3843 particular neighbor.";
3844 }
3845 leaf i-e {
3846 type boolean;
3847 description
3848 "Internal or External (I/E) Metric bit value";
3849 }
3850 container default-metric {
3851 leaf metric {
3852 type std-metric;
3853 description "IS-IS default metric value";
3854 }
3855 description "IS-IS default metric container";
3856 }
3857 container delay-metric {
3858 leaf metric {
3859 type std-metric;
3860 description "IS-IS delay metric value";
3861 }
3862 leaf supported {
3863 type boolean;
3864 default "false";
3865 description "IS-IS delay metric supported";
3866 }
3867 description "IS-IS delay metric container";
3868 }
3869 container expense-metric {
3870 leaf metric {
3871 type std-metric;
3872 description "IS-IS delay expense metric value";
3873 }
3874 leaf supported {
3875 type boolean;
3876 default "false";
3877 description "IS-IS delay expense metric supported";
3878 }
3879 description "IS-IS delay expense metric container";
3880 }
3881 container error-metric {
3882 leaf metric {
3883 type std-metric;
3884 description "IS-IS error metric value";
3885 }
3886 leaf supported {
3887 type boolean;
3888 default "false";
3889 description "IS-IS error metric supported";
3890 }
3891 description "IS-IS error metric container";
3892 }
3893 description "Instance of a particular adjacency
3894 as defined in ISO10589.";
3895 }
3896 }
3897 }
3899 /* Top level TLVs */
3901 grouping tlv132-ipv4-addresses {
3902 leaf-list ipv4-addresses {
3903 type inet:ipv4-address;
3904 description
3905 "List of IPv4 addresses of the IS-IS node - IS-IS
3906 reference is TLV 132.";
3907 }
3908 description "Grouping for TLV132.";
3909 }
3910 grouping tlv232-ipv6-addresses {
3911 leaf-list ipv6-addresses {
3912 type inet:ipv6-address;
3913 description
3914 "List of IPv6 addresses of the IS-IS node - IS-IS
3915 reference is TLV 232.";
3916 }
3917 description "Grouping for TLV232.";
3918 }
3919 grouping tlv134-ipv4-te-rid {
3920 leaf ipv4-te-routerid {
3921 type inet:ipv4-address;
3922 description
3923 "IPv4 Traffic Engineering router ID of the IS-IS node -
3924 IS-IS reference is TLV 134.";
3925 }
3926 description "Grouping for TLV134.";
3927 }
3928 grouping tlv140-ipv6-te-rid {
3929 leaf ipv6-te-routerid {
3930 type inet:ipv6-address;
3931 description
3932 "IPv6 Traffic Engineering router ID of the IS-IS node -
3933 IS-IS reference is TLV 140.";
3934 }
3935 description "Grouping for TLV140.";
3936 }
3937 grouping tlv129-protocols {
3938 leaf-list protocol-supported {
3939 type uint8;
3940 description
3941 "List of supported protocols of the IS-IS node -
3942 IS-IS reference is TLV 129.";
3943 }
3944 description "Grouping for TLV129.";
3945 }
3946 grouping tlv137-hostname {
3947 leaf dynamic-hostname {
3948 type string;
3949 description
3950 "Host Name of the IS-IS node - IS-IS reference
3951 is TLV 137.";
3952 }
3953 description "Grouping for TLV137.";
3954 }
3955 grouping tlv10-authentication {
3956 container authentication {
3957 leaf authentication-type {
3958 type identityref {
3959 base key-chain:crypto-algorithm;
3960 }
3961 description
3962 "Authentication type to be used with IS-IS node.";
3963 }
3964 leaf authentication-key {
3965 type string;
3966 description
3967 "Authentication key to be used. For security reasons,
3968 the authentication key MUST NOT be presented in
3969 a clear text format in response to any request
3970 (e.g., via get, get-config).";
3971 }
3972 description
3973 "IS-IS node authentication information container -
3974 IS-IS reference is TLV 10.";
3975 }
3976 description "Grouping for TLV10.";
3977 }
3978 grouping tlv229-mt {
3979 container mt-entries {
3980 list topology {
3981 description
3982 "List of topologies supported";
3984 leaf mt-id {
3985 type uint16 {
3986 range "0 .. 4095";
3987 }
3988 description
3989 "Multi-Topology identifier of topology.";
3990 }
3992 leaf attributes {
3993 type bits {
3994 bit overload {
3995 description
3996 "If set, the originator is overloaded,
3997 and must be avoided in path calculation.";
3998 }
3999 bit attached {
4000 description
4001 "If set, the originator is attached to
4002 another area using the referred metric.";
4003 }
4004 }
4005 description
4006 "Attributes of the LSP for the associated
4007 topology.";
4008 }
4009 }
4010 description
4011 "IS-IS node topology information container -
4012 IS-IS reference is TLV 229.";
4013 }
4014 description "Grouping for TLV229.";
4015 }
4017 grouping tlv242-router-capabilities {
4018 container router-capabilities {
4019 list router-capability {
4020 leaf flags {
4021 type bits {
4022 bit flooding {
4023 position 0;
4024 description
4025 "If the S bit is set, the IS-IS Router CAPABILITY
4026 TLV MUST be flooded across the entire routing
4027 domain. If the S bit is clear, the TLV MUST NOT
4028 be leaked between levels. This bit MUST NOT
4029 be altered during the TLV leaking.";
4030 }
4031 bit down {
4032 position 1;
4033 description
4034 "When the IS-IS Router CAPABILITY TLV is leaked
4035 from level-2 to level-1, the D bit MUST be set.
4036 Otherwise, this bit MUST be clear. IS-IS Router
4037 capability TLVs with the D bit set MUST NOT be
4038 leaked from level-1 to level-2 in to prevent
4039 TLV looping.";
4040 }
4041 }
4042 description "Router Capability Flags";
4043 }
4044 container node-tags {
4045 if-feature node-tag;
4046 list node-tag {
4047 leaf tag {
4048 type uint32;
4049 description "Node tag value.";
4050 }
4051 description "List of tags.";
4052 }
4053 description "Container for node admin tags";
4054 }
4055 uses unknown-tlvs;
4057 leaf binary {
4058 type binary;
4059 description
4060 "Binary encoding of the IS-IS node capabilities";
4061 }
4062 description
4063 "IS-IS node capabilities. This list element may
4064 be extended with detailed information - IS-IS
4065 reference is TLV 242.";
4066 }
4067 description "List of router capability TLVs.";
4068 }
4069 description "Grouping for TLV242.";
4070 }
4072 grouping tlv138-srlg {
4073 description
4074 "Grouping for TLV138.";
4075 container links-srlgs {
4076 list links {
4077 leaf neighbor-id {
4078 type extended-system-id;
4079 description "system-id of the extended neighbor.";
4080 }
4081 leaf flags {
4082 type uint8;
4083 description
4084 "Flags associated with the link.";
4085 }
4086 leaf link-local-id {
4087 type union {
4088 type inet:ip-address;
4089 type uint32;
4090 }
4091 description
4092 "Local identifier of the link.
4093 It could be an IPv4 address or a local identifier.";
4094 }
4095 leaf link-remote-id {
4096 type union {
4097 type inet:ip-address;
4098 type uint32;
4099 }
4100 description
4101 "Remote identifier of the link.
4102 It could be an IPv4 address or a remotely learned
4103 identifier.";
4104 }
4105 container srlgs {
4106 description "List of SRLGs.";
4107 leaf-list srlg {
4108 type uint32;
4109 description
4110 "SRLG value of the link.";
4111 }
4112 }
4113 description
4114 "SRLG attribute of a link.";
4115 }
4116 description
4117 "List of links with SRLGs";
4118 }
4119 }
4121 /* Grouping for LSDB description */
4123 grouping lsp-entry {
4124 description "IS-IS LSP database entry groupting";
4126 leaf decoded-completed {
4127 type boolean;
4128 description "IS-IS LSP body fully decoded.";
4129 }
4130 leaf raw-data {
4131 type yang:hex-string;
4132 description
4133 "The hexadecial representation of the complete LSP in
4134 network-byte order (NBO) as received or originated.";
4135 }
4136 leaf lsp-id {
4137 type lsp-id;
4138 description "LSP ID of the LSP";
4139 }
4140 leaf checksum {
4141 type uint16;
4142 description "LSP checksum";
4143 }
4144 leaf remaining-lifetime {
4145 type uint16;
4146 units "seconds";
4147 description
4148 "Remaining lifetime (in seconds) until LSP expiration.";
4149 }
4150 leaf sequence {
4151 type uint32;
4152 description
4153 "This leaf describes the sequence number of the LSP.";
4154 }
4155 leaf attributes {
4156 type bits {
4157 bit partitioned {
4158 description "Originator partition repair supported";
4159 }
4160 bit attached-error {
4161 description
4162 "If set, the originator is attached to
4163 another area using the referred metric.";
4164 }
4165 bit attached-expense {
4166 description
4167 "If set, the originator is attached to
4168 another area using the referred metric.";
4169 }
4170 bit attached-delay {
4171 description
4172 "If set, the originator is attached to
4173 another area using the referred metric.";
4174 }
4175 bit attached-default {
4176 description
4177 "If set, the originator is attached to
4178 another area using the referred metric.";
4179 }
4180 bit overload {
4181 description
4182 "If set, the originator is overloaded,
4183 and must be avoided in path calculation.";
4184 }
4185 }
4186 description "LSP attributes";
4187 }
4189 uses tlv132-ipv4-addresses;
4190 uses tlv232-ipv6-addresses;
4191 uses tlv134-ipv4-te-rid;
4192 uses tlv140-ipv6-te-rid;
4193 uses tlv129-protocols;
4194 uses tlv137-hostname;
4195 uses tlv10-authentication;
4196 uses tlv229-mt;
4197 uses tlv242-router-capabilities;
4198 uses tlv138-srlg;
4199 uses unknown-tlvs;
4201 container is-neighbor {
4202 list neighbor {
4203 key neighbor-id;
4205 uses neighbor;
4206 description "List of neighbors.";
4207 }
4208 description
4209 "Standard IS neighbors container - IS-IS reference is
4210 TLV 2.";
4211 }
4213 container extended-is-neighbor {
4214 list neighbor {
4215 key neighbor-id;
4217 uses neighbor-extended;
4218 description
4219 "List of extended IS neighbors";
4220 }
4221 description
4222 "Standard IS extended neighbors container - IS-IS
4223 reference is TLV 22";
4224 }
4226 container ipv4-internal-reachability {
4227 list prefixes {
4228 uses prefix-ipv4-std;
4229 description "List of prefixes.";
4230 }
4231 description
4232 "IPv4 internal reachability information container - IS-IS
4233 reference is TLV 128.";
4234 }
4236 container ipv4-external-reachability {
4237 list prefixes {
4238 uses prefix-ipv4-std;
4239 description "List of prefixes.";
4240 }
4241 description
4242 "IPv4 external reachability information container -
4243 IS-IS reference is TLV 130.";
4244 }
4246 container extended-ipv4-reachability {
4247 list prefixes {
4248 uses prefix-ipv4-extended;
4249 uses unknown-tlvs;
4250 description "List of prefixes.";
4251 }
4252 description
4253 "IPv4 extended reachability information container -
4254 IS-IS reference is TLV 135.";
4255 }
4257 container mt-is-neighbor {
4258 list neighbor {
4259 leaf mt-id {
4260 type uint16 {
4261 range "0 .. 4095";
4262 }
4263 description "Multi-topology (MT) identifier";
4264 }
4265 uses neighbor-extended;
4266 description "List of neighbors.";
4267 }
4268 description
4269 "IS-IS multi-topology neighbor container - IS-IS
4270 reference is TLV 223.";
4271 }
4273 container mt-extended-ipv4-reachability {
4274 list prefixes {
4275 leaf mt-id {
4276 type uint16 {
4277 range "0 .. 4095";
4278 }
4279 description "Multi-topology (MT) identifier";
4280 }
4281 uses prefix-ipv4-extended;
4282 uses unknown-tlvs;
4283 description "List of extended prefixes.";
4284 }
4285 description
4286 "IPv4 multi-topolgy (MT) extended reachability
4287 information container - IS-IS reference is TLV 235.";
4288 }
4290 container mt-ipv6-reachability {
4291 list prefixes {
4292 leaf MT-ID {
4293 type uint16 {
4294 range "0 .. 4095";
4296 }
4297 description "Multi-topology (MT) identifier";
4298 }
4299 uses prefix-ipv6-extended;
4300 uses unknown-tlvs;
4301 description "List of IPv6 extended prefixes.";
4302 }
4303 description
4304 "IPv6 multi-topolgy (MT) extended reachability
4305 information container - IS-IS reference is TLV 237.";
4306 }
4308 container ipv6-reachability {
4309 list prefixes {
4310 uses prefix-ipv6-extended;
4311 uses unknown-tlvs;
4312 description "List of IPv6 prefixes.";
4313 }
4314 description
4315 "IPv6 reachability information container - IS-IS
4316 reference is TLV 236.";
4317 }
4318 }
4320 grouping lsdb {
4321 description "Link State Database (LSDB) grouping";
4322 container database {
4323 config false;
4324 list levels {
4325 key level;
4327 leaf level {
4328 type level-number;
4329 description "LSDB level number (1 or 2)";
4330 }
4331 list lsp {
4332 key lsp-id;
4333 uses lsp-entry;
4334 description "List of LSPs in LSDB";
4335 }
4336 description "List of LSPs for the LSDB level container";
4337 }
4338 description "IS-IS Link State database container";
4339 }
4340 }
4341 /* Augmentations */
4343 augment "/rt:routing/"
4344 +"rt:ribs/rt:rib/rt:routes/rt:route" {
4345 when "rt:source-protocol = 'isis:isis'" {
4346 description "IS-IS-specific route attributes.";
4347 }
4348 uses route-content;
4349 description
4350 "This augments route object in RIB with IS-IS-specific
4351 attributes.";
4352 }
4354 augment "/if:interfaces/if:interface" {
4355 leaf clns-mtu {
4356 type uint16;
4357 description "CLNS MTU of the interface";
4358 }
4359 description "ISO specific interface parameters.";
4360 }
4362 augment "/rt:routing/rt:control-plane-protocols/"
4363 +"rt:control-plane-protocol" {
4364 when "rt:type = 'isis:isis'" {
4365 description
4366 "This augment is only valid when routing protocol
4367 instance type is 'isis'";
4368 }
4369 description
4370 "This augments a routing protocol instance with IS-IS
4371 specific parameters.";
4372 container isis {
4373 must "count(area-address) > 0" {
4374 error-message
4375 "At least one area-address must be configured.";
4376 description
4377 "Enforce configuration of at least one area.";
4378 }
4380 uses instance-config;
4381 uses instance-state;
4383 container topologies {
4384 if-feature multi-topology;
4385 list topology {
4386 key "name";
4387 leaf enable {
4388 type boolean;
4389 description "Topology enable configuration";
4390 }
4391 leaf name {
4392 type leafref {
4393 path "../../../../../../rt:ribs/rt:rib/rt:name";
4394 }
4395 description
4396 "Routing Information Base (RIB) corresponding
4397 to topology.";
4398 }
4400 uses multi-topology-config;
4402 description "List of topologies";
4403 }
4404 description "Multi-topology container";
4405 }
4406 container interfaces {
4407 list interface {
4408 key "name";
4409 leaf name {
4410 type if:interface-ref;
4412 description
4413 "Reference to the interface within
4414 the routing-instance.";
4415 }
4416 uses interface-config;
4417 uses interface-state;
4418 container topologies {
4419 if-feature multi-topology;
4420 list topology {
4421 key name;
4423 leaf name {
4424 type leafref {
4425 path "../../../../../../../../"+
4426 "rt:ribs/rt:rib/rt:name";
4427 }
4429 description
4430 "Routing Information Base (RIB) corresponding
4431 to topology.";
4432 }
4433 uses multi-topology-interface-config;
4434 description "List of interface topologies";
4435 }
4436 description "Multi-topology container";
4437 }
4438 description "List of IS-IS interfaces.";
4439 }
4440 description
4441 "IS-IS interface specific configuration container";
4442 }
4444 description
4445 "IS-IS configuration/state top-level container";
4446 }
4447 }
4449 /* RPC methods */
4451 rpc clear-adjacency {
4452 description
4453 "This RPC request clears a particular set of IS-IS
4454 adjacencies. If the operation fails due to an internal
4455 reason, then the error-tag and error-app-tag should be
4456 set indicating the reason for the failure.";
4457 input {
4459 leaf routing-protocol-instance-name {
4460 type leafref {
4461 path "/rt:routing/rt:control-plane-protocols/"
4462 + "rt:control-plane-protocol/rt:name";
4463 }
4464 mandatory "true";
4465 description
4466 "Name of the IS-IS protocol instance whose IS-IS
4467 adjacency is being cleared.
4469 If the corresponding IS-IS instance doesn't exist,
4470 then the operation will fail with an error-tag of
4471 'data-missing' and an error-app-tag of
4472 'routing-protocol-instance-not-found'.";
4473 }
4474 leaf level {
4475 type level;
4476 description
4477 "IS-IS level of the adjacency to be cleared. If the
4478 IS-IS level is level-1-2, both level 1 and level 2
4479 adjacencies would be cleared.
4481 If the value provided is different from the one
4482 authorized in the enum type, then the operation
4483 SHALL fail with an error-tag of 'data-missing' and
4484 an error-app-tag of 'bad-isis-level'.";
4485 }
4486 leaf interface {
4487 type if:interface-ref;
4488 description
4489 "IS-IS interface name.
4491 If the corresponding IS-IS interface doesn't exist,
4492 then the operation SHALL fail with an error-tag of
4493 'data-missing' and an error-app-tag of
4494 'isis-interface-not-found'.";
4495 }
4496 }
4497 }
4499 rpc clear-database {
4500 description
4501 "This RPC request clears a particular IS-IS database. If
4502 the operation fails for an IS-IS internal reason, then
4503 the error-tag and error-app-tag should be set
4504 indicating the reason for the failure.";
4505 input {
4506 leaf routing-protocol-instance-name {
4507 type leafref {
4508 path "/rt:routing/rt:control-plane-protocols/"
4509 + "rt:control-plane-protocol/rt:name";
4510 }
4511 mandatory "true";
4512 description
4513 "Name of the IS-IS protocol instance whose IS-IS
4514 database(s) is/are being cleared.
4516 If the corresponding IS-IS instance doesn't exist,
4517 then the operation will fail with an error-tag of
4518 'data-missing' and an error-app-tag of
4519 'routing-protocol-instance-not-found'.";
4520 }
4521 leaf level {
4522 type level;
4523 description
4524 "IS-IS level of the adjacency to be cleared. If the
4525 IS-IS level is level-1-2, both level 1 and level 2
4526 databases would be cleared.
4528 If the value provided is different from the one
4529 authorized in the enum type, then the operation
4530 SHALL fail with an error-tag of 'data-missing' and
4531 an error-app-tag of 'bad-isis-level'.";
4532 }
4533 }
4534 }
4536 /* Notifications */
4538 notification database-overload {
4539 uses notification-instance-hdr;
4541 leaf overload {
4542 type enumeration {
4543 enum off {
4544 description
4545 "Indicates IS-IS instance has left overload state";
4546 }
4547 enum on {
4548 description
4549 "Indicates IS-IS instance has entered overload state";
4550 }
4552 }
4553 description "New overload state of the IS-IS instance";
4554 }
4555 description
4556 "This notification is sent when an IS-IS instance
4557 overload state changes.";
4558 }
4560 notification lsp-too-large {
4561 uses notification-instance-hdr;
4562 uses notification-interface-hdr;
4564 leaf pdu-size {
4565 type uint32;
4566 description "Size of the LSP PDU";
4567 }
4568 leaf lsp-id {
4569 type lsp-id;
4570 description "LSP ID";
4571 }
4572 description
4573 "This notification is sent when we attempt to propagate
4574 an LSP that is larger than the dataLinkBlockSize for the
4575 circuit. The notification generation must be throttled
4576 with at least 5 seconds betweeen successive
4577 notifications.";
4579 }
4581 notification if-state-change {
4582 uses notification-instance-hdr;
4583 uses notification-interface-hdr;
4585 leaf state {
4586 type if-state-type;
4587 description "Interface state.";
4588 }
4589 description
4590 "This notification is sent when an interface
4591 state change is detected.";
4592 }
4594 notification corrupted-lsp-detected {
4595 uses notification-instance-hdr;
4596 leaf lsp-id {
4597 type lsp-id;
4598 description "LSP ID";
4599 }
4600 description
4601 "This notification is sent when we find that
4602 an LSP that was stored in memory has become
4603 corrupted.";
4604 }
4606 notification attempt-to-exceed-max-sequence {
4607 uses notification-instance-hdr;
4608 leaf lsp-id {
4609 type lsp-id;
4610 description "LSP ID";
4611 }
4612 description
4613 "This notification is sent when the system
4614 wraps the 32-bit sequence counter of an LSP.";
4615 }
4617 notification id-len-mismatch {
4618 uses notification-instance-hdr;
4619 uses notification-interface-hdr;
4621 leaf pdu-field-len {
4622 type uint8;
4623 description "Size of the ID length in the received PDU";
4624 }
4625 leaf raw-pdu {
4626 type binary;
4627 description "Received raw PDU.";
4628 }
4629 description
4630 "This notification is sent when we receive a PDU
4631 with a different value for the system-id length.
4632 The notification generation must be throttled
4633 with at least 5 seconds betweeen successive
4634 notifications.";
4635 }
4637 notification max-area-addresses-mismatch {
4638 uses notification-instance-hdr;
4639 uses notification-interface-hdr;
4641 leaf max-area-addresses {
4642 type uint8;
4643 description "Received number of supported areas";
4644 }
4645 leaf raw-pdu {
4646 type binary;
4647 description "Received raw PDU.";
4648 }
4649 description
4650 "This notification is sent when we receive a PDU
4651 with a different value for the Maximum Area Addresses.
4652 The notification generation must be throttled
4653 with at least 5 seconds betweeen successive
4654 notifications.";
4655 }
4657 notification own-lsp-purge {
4658 uses notification-instance-hdr;
4659 uses notification-interface-hdr;
4660 leaf lsp-id {
4661 type lsp-id;
4662 description "LSP ID";
4663 }
4664 description
4665 "This notification is sent when the system receives
4666 a PDU with its own system-id and zero age.";
4667 }
4669 notification sequence-number-skipped {
4670 uses notification-instance-hdr;
4671 uses notification-interface-hdr;
4672 leaf lsp-id {
4673 type lsp-id;
4674 description "LSP ID";
4676 }
4677 description
4678 "This notification is sent when the system receives a
4679 PDU with its own system-id and different contents. The
4680 system has to reoriginate the LSP with a higher sequence
4681 number.";
4682 }
4684 notification authentication-type-failure {
4685 uses notification-instance-hdr;
4686 uses notification-interface-hdr;
4687 leaf raw-pdu {
4688 type binary;
4689 description "Received raw PDU.";
4690 }
4691 description
4692 "This notification is sent when the system receives a
4693 PDU with the wrong authentication type field.
4694 The notification generation must be throttled
4695 with at least 5 seconds betweeen successive
4696 notifications.";
4697 }
4699 notification authentication-failure {
4700 uses notification-instance-hdr;
4701 uses notification-interface-hdr;
4702 leaf raw-pdu {
4703 type binary;
4704 description "Received raw PDU.";
4705 }
4706 description
4707 "This notification is sent when the system receives
4708 a PDU with the wrong authentication information.
4709 The notification generation must be throttled with
4710 with at least 5 seconds betweeen successive
4711 notifications.";
4712 }
4714 notification version-skew {
4715 uses notification-instance-hdr;
4716 uses notification-interface-hdr;
4717 leaf protocol-version {
4718 type uint8;
4719 description "Protocol version received in the PDU.";
4720 }
4721 leaf raw-pdu {
4722 type binary;
4723 description "Received raw PDU.";
4725 }
4726 description
4727 "This notification is sent when the system receives a
4728 PDU with a different protocol version number.
4729 The notification generation must be throttled
4730 with at least 5 seconds betweeen successive
4731 notifications.";
4732 }
4734 notification area-mismatch {
4735 uses notification-instance-hdr;
4736 uses notification-interface-hdr;
4737 leaf raw-pdu {
4738 type binary;
4739 description "Received raw PDU.";
4740 }
4741 description
4742 "This notification is sent when the system receives a
4743 Hello PDU from an IS that does not share any area
4744 address. The notification generation must be throttled
4745 with at least 5 seconds betweeen successive
4746 notifications.";
4747 }
4749 notification rejected-adjacency {
4750 uses notification-instance-hdr;
4751 uses notification-interface-hdr;
4752 leaf raw-pdu {
4753 type binary;
4754 description
4755 "Received raw PDU.";
4756 }
4757 leaf reason {
4758 type string {
4759 length "1..255";
4760 }
4761 description
4762 "The system may provide a reason to reject the
4763 adjacency. If the reason is not available,
4764 an empty string will be returned.
4765 The expected format is a single line text.";
4766 }
4767 description
4768 "This notification is sent when the system receives a
4769 Hello PDU from an IS but does not establish an adjacency
4770 for some reason. The notification generation must be
4771 throttled with at least 5 seconds betweeen successive
4772 notifications.";
4774 }
4776 notification protocols-supported-mismatch {
4777 uses notification-instance-hdr;
4778 uses notification-interface-hdr;
4779 leaf raw-pdu {
4780 type binary;
4781 description "Received raw PDU.";
4782 }
4783 leaf-list protocols {
4784 type uint8;
4785 description
4786 "List of protocols supported by the remote system.";
4787 }
4788 description
4789 "This notification is sent when the system receives a
4790 non-pseudonode LSP that has no matching protocols
4791 supported. The notification generation must be throttled
4792 with at least 5 seconds betweeen successive
4793 notifications.";
4794 }
4796 notification lsp-error-detected {
4797 uses notification-instance-hdr;
4798 uses notification-interface-hdr;
4799 leaf lsp-id {
4800 type lsp-id;
4801 description "LSP ID.";
4802 }
4803 leaf raw-pdu {
4804 type binary;
4805 description "Received raw PDU.";
4806 }
4807 leaf error-offset {
4808 type uint32;
4809 description
4810 "If the problem is a malformed TLV, the error-offset
4811 points to the start of the TLV. If the problem is with
4812 the LSP header, the error-offset points to the errant
4813 byte";
4814 }
4815 leaf tlv-type {
4816 type uint8;
4817 description
4818 "If the problem is a malformed TLV, the tlv-type is set
4819 to the type value of the suspicious TLV. Otherwise,
4820 this leaf is not present.";
4822 }
4823 description
4824 "This notification is sent when the system receives an
4825 LSP with a parse error. The notification generation must
4826 be throttled with at least 5 seconds betweeen successive
4827 notifications.";
4828 }
4830 notification adjacency-state-change {
4831 uses notification-instance-hdr;
4832 uses notification-interface-hdr;
4833 leaf neighbor {
4834 type string {
4835 length "1..255";
4836 }
4837 description
4838 "Name of the neighbor.
4839 It corresponds to the hostname associated
4840 with the system-id of the neighbor in the
4841 mapping database (RFC5301).
4842 If the name of the neighbor is
4843 not available, it is not returned.";
4844 }
4845 leaf neighbor-system-id {
4846 type system-id;
4847 description "Neighbor system-id";
4848 }
4849 leaf state {
4850 type adj-state-type;
4852 description "New state of the IS-IS adjacency.";
4853 }
4854 leaf reason {
4855 type string {
4856 length "1..255";
4857 }
4858 description
4859 "If the adjacency is going to DOWN, this leaf provides
4860 a reason for the adjacency going down. The reason is
4861 provided as a text. If the adjacency is going to UP, no
4862 reason is provided. The expected format is a single line
4863 text.";
4864 }
4865 description
4866 "This notification is sent when an IS-IS adjacency
4867 moves to Up state or to Down state.";
4868 }
4869 notification lsp-received {
4870 uses notification-instance-hdr;
4871 uses notification-interface-hdr;
4873 leaf lsp-id {
4874 type lsp-id;
4875 description "LSP ID";
4876 }
4877 leaf sequence {
4878 type uint32;
4879 description "Sequence number of the received LSP.";
4880 }
4881 leaf received-timestamp {
4882 type yang:timestamp;
4884 description "Timestamp when the LSP was received.";
4885 }
4886 leaf neighbor-system-id {
4887 type system-id;
4888 description "Neighbor system-id of LSP sender";
4889 }
4890 description
4891 "This notification is sent when an LSP is received.
4892 The notification generation must be throttled with at
4893 least 5 seconds betweeen successive notifications.";
4894 }
4896 notification lsp-generation {
4897 uses notification-instance-hdr;
4899 leaf lsp-id {
4900 type lsp-id;
4901 description "LSP ID";
4902 }
4903 leaf sequence {
4904 type uint32;
4905 description "Sequence number of the received LSP.";
4906 }
4907 leaf send-timestamp {
4908 type yang:timestamp;
4910 description "Timestamp when our LSP was regenerated.";
4911 }
4912 description
4913 "This notification is sent when an LSP is regenerated.
4914 The notification generation must be throttled with at
4915 least 5 seconds betweeen successive notifications.";
4916 }
4918 }
4920
4922 7. Security Considerations
4924 The YANG module specified in this document defines a schema for data
4925 that is designed to be accessed via network management protocols such
4926 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
4927 is the secure transport layer, and the mandatory-to-implement secure
4928 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
4929 is HTTPS, and the mandatory-to-implement secure transport is TLS
4930 [RFC8446]
4932 The Network Configuration Access Control Model (NACM) [RFC8341]
4933 provides the means to restrict access for particular NETCONF or
4934 RESTCONF users to a preconfigured subset of all available NETCONF or
4935 RESTCONF protocol operations and content.
4937 There are a number of data nodes defined in this YANG module that are
4938 writable/creatable/deletable (i.e., config true, which is the
4939 default). These data nodes may be considered sensitive or vulnerable
4940 in some network environments. Write operations (e.g., edit-config)
4941 to these data nodes without proper protection can have a negative
4942 effect on network operations. For IS-IS, the ability to modify IS-IS
4943 configuration will allow the entire IS-IS domain to be compromised
4944 including creating adjacencies with unauthorized routers to misroute
4945 traffic, isolate routers, or mount a massive Denial-of-Service (DoS)
4946 attack. A user should consider all the configuration nodes are
4947 sensible.
4949 Some of the readable data nodes in this YANG module may be considered
4950 sensitive or vulnerable in some network environments. It is thus
4951 important to control read access (e.g., via get, get-config, or
4952 notification) to these data nodes. The exposure of the Link State
4953 Database (LSDB) will expose the detailed topology of the network
4954 including authentication parameters. Implementations MUST NOT
4955 provide a configured authentication key in a clear text format in
4956 response to any request (e.g., via get, get-config).
4958 For IS-IS authentication, configuration is supported via the
4959 specification of key-chain [RFC8177] or the direction specification
4960 of key and authentication algorithm. Hence, authentification
4961 configuration using the "auth-table-trailer" case in the
4962 "authentication" container inherits the security considerations of
4963 [RFC8177]. This includes the considerations with respect to the
4964 local storage and handling of authentication keys.
4966 Some of the RPC operations in this YANG module may be considered
4967 sensitive or vulnerable in some network environments. It is thus
4968 important to control access to these operations. The OSPF YANG
4969 module support the "clear-adjacency" and "clear-database" RPCs. If
4970 access too either of these is compromised, they can result in
4971 temporary network outages be employed to mount DoS attacks.
4973 8. Contributors
4975 Authors would like to thank Kiran Agrahara Sreenivasa, Dean
4976 Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major
4977 contributions to the draft.
4979 9. IANA Considerations
4981 The IANA is requested to assign two new URIs from the IETF XML
4982 registry ([RFC3688]). Authors are suggesting the following URI:
4984 URI: urn:ietf:params:xml:ns:yang:ietf-isis
4985 Registrant Contact: The IESG
4986 XML: N/A, the requested URI is an XML namespace
4988 This document also requests one new YANG module name in the YANG
4989 Module Names registry ([RFC6020]) with the following suggestion:
4991 name: ietf-isis
4992 namespace: urn:ietf:params:xml:ns:yang:ietf-isis
4993 prefix: isis
4994 reference: RFC XXXX
4996 10. Change log for ietf-isis YANG module
4998 10.1. From version -29 to version -30
5000 o Set a maximum-length of 255 for the non-best-reason leaf.
5002 o Updated some descriptions.
5004 o Renamed "level-db" container to "levels" for consistency reasons.
5006 o Added some RFC references in the YANG model.
5008 o Leaf default-metric of container prefix-ipv4-std is now a
5009 container.
5011 o Changed the description of the authentication and removed the
5012 reference to MD5 as a possible way to hide the password.
5014 o Changed leaf type for authentication type within
5015 tlv10-authentication container.Moved from string to
5016 keychain:crypto-algorithm identity.
5018 o Some admin strings are now limited to a range of 1..255.
5020 o Hostname string in hostname DB is limited to 255 as per RFC5301.
5022 o In FRR stats, "prefix" is now encoded as inet:ip-prefix rather
5023 than a string. "alternate" is now encoded as ip-address.
5025 10.2. From version -28 to version -29
5027 o Fixed area-address type pattern. The authorized number of bytes
5028 was wrong.
5030 10.3. From version -27 to version -28
5032 o Fixed non accurate description of level-type leaf.
5034 10.4. From version -26 to version -27
5036 o Fixed XPATH to switching-capability leaf in "when" statement of
5037 psc-specific and tdm-specific containers.
5039 10.5. From version -25 to version -26
5041 o Modify BFD reference descriptions.
5043 o Fix indentation.
5045 o "uses interface-state" was missing.
5047 10.6. From version -24 to version -25
5049 o RPC clear-adjacency uses now an interface reference instead of a
5050 string.
5052 o Use expanded "address-family" rather than "af" in the model.
5054 o Fix pattern for area-address.
5056 o Removed unnecessary identities.
5058 o Added an instances container and list in the modeling of neighbors
5059 in the LSDB. This is to manage the case where there are parallel
5060 links between two neighbors.
5062 o Notification instance header: removed routing-instance leaf
5063 (alignment with OSPF).
5065 o Notification instance header: changed routing-protocol-name to a
5066 reference.
5068 o Notification interface header: changed interface to a reference.
5070 o RPCs: changed instance-state-ref typedef to a leafref. Removed
5071 associated typedef.
5073 o Revised some groupings and their names (alignment with OSPF).
5075 o Some description alignment with OSPF.
5077 o auto-cost container alignment with OSPF.
5079 o MT-ID leaf in database description renamed (lower-case) mt-id.
5081 o In lsp-log grouping, leaf change is renamed reason to align with
5082 OSPF.
5084 o Added some link attributes (GMPLS, TE, extended TE, SRLGs) in the
5085 LSDB.
5087 o Added extended-system-id typedef which contains the systemid plus
5088 the pseudonode number.
5090 o Add support of POI Purge Originator Identification.
5092 10.7. From version -22 to version -24
5094 o Fix revision date of the module.
5096 10.8. From version -21 to version -22
5098 o TE router-id modeling alignment with OSPF.
5100 o Add max-ecmp + feature in spf-control container (alignment with
5101 OSPF).
5103 10.9. From version -20 to version -21
5105 o Model revision date fix
5107 10.10. From version -19 to version -20
5109 o Moved to Yang 1.1
5111 o Lower case enumerations
5113 o Add RFC references to features
5115 o Remove segment-routing feature
5117 o Modified BFD activation modeling
5119 10.11. From version -18 to version -19
5121 o Align with draft-ietf-netmod-rfc8022bis.
5123 o Modify address family types as per draft-ietf-rtgwg-routing-types-
5124 17.
5126 10.12. From version -17 to version -18
5128 o NMDA compliancy.
5130 o Set some default values.
5132 o Align with iana-rt-types module.
5134 10.13. From version -16 to version -17
5136 o Cosmetic fixes.
5138 o Use of rt-types model.
5140 10.14. From version -15 to version -16
5142 o Alignment with last IETF key chain model.
5144 o lsp-log "change" leaf moved as an identity.
5146 o Incremental SPF removed from spf-log types.
5148 10.15. From version -14 to version -15
5150 o Alignment with OSPF model done:
5152 * Added spf-control container with IETF SPF delay algorithm as a
5153 feature.
5155 * Added graceful-restart options.
5157 * Added nsr as a feature.
5159 * Removed per topology FRR. Need to be augmented if necessary.
5161 * Created an ldp container within mpls.
5163 * Renamed igp-ldp-sync to igp-sync.
5165 * Added auto-cost container.
5167 * Moved reference-bandwidth under auto-cost container.
5169 * Added IS-IS local RIB as operational state.
5171 * Added decode-completed and raw-data leaves in the LSDB model.
5173 * Modified the notification header.
5175 10.16. From version -13 to version -14
5177 o Segment Routing extensions are now in a separate document.
5179 10.17. From version -12 to version -13
5181 o Move feature nlpid-control to container rather than list.
5183 o Rename multi-topology to topologies to align with OSPF.
5185 o Rename bfd/enabled to bfd/enable for consistency reason.
5187 o Add support for NSR with a feature.
5189 10.18. From version -09 to version -12
5191 o Rename node-tag container to node-tags.
5193 10.19. From version -08 to version -09
5195 o Added container before af list.
5197 o Added container before topology list.
5199 o Aligned LFA if per level cfg.
5201 o Align to draft-ietf-netmod-routing-cfg-23.
5203 10.20. From version -07 to version -08
5205 o Remove selector from system-id type.
5207 o Add some default values.
5209 o Moved lists to containers+groupings for per level configuration.
5211 o remove routing-instance as per core routing model v21.
5213 o added BFD leaf (no more BFD protocol model).
5215 o changed keychain module reference.
5217 10.21. From version -05 to version -07
5219 o Move Overload config from list to container.
5221 o Move Overload-max-metric config from list to container.
5223 o Move preference config from list to container.
5225 o Add Node flag in config.
5227 o Removed BFD config => moved to isis-bfd module.
5229 o Remove call to routing policy model.
5231 10.22. From version -03 to version -05
5233 o Correct invalid references to previous versions of core routing
5234 model.
5236 o Remove BFD config and replace by groupings from ietf-bfd.
5238 o Adding routing-policy support through routing-policy model.
5240 10.23. From version -02 to version -03
5242 o Reviewed config and op state groupings.
5244 o Add default value to lfa candidate-disabled.
5246 o Add enable leaf to isis container to reflect admin state.
5248 o Move to VRF centric only.
5250 o Segment routing is part os a separate module.
5252 10.24. From version -01 to version -02
5254 o Adding IPFRR.
5256 o Adding igp-ldp-sync.
5258 o Adding segment-routing.
5260 o Adding instance reference to operational states.
5262 o Move AF type from string to identity.
5264 o Updated router-capability in LSDB description.
5266 o packet counters moved to interface-packet-counters.
5268 o Added modification information in lsp-log.
5270 o Removing igp-ldp-sync timer in IS-IS.
5272 o Defining hierarchy for operational states.
5274 o Adding clns-mtu.
5276 o Adding key-chain.
5278 10.25. From version -00 to version -01
5280 o Interface metric move from af container to interface container.
5282 o Hello-padding on interface moved to hello-padding-disable with
5283 empty type.
5285 o three-way-handshake removed.
5287 o route preference changed to a choice.
5289 o csnp-authentication/psnp-authentication merged to authentication
5290 container.
5292 o lsp-gen-interval-exp-delay removed.
5294 o Added overload-max-metric feature.
5296 o overload-max-metric is in a separate container.
5298 o Change hello-padding to container.
5300 o Change bfd to container.
5302 o Make BFD a feature.
5304 o Create mpls-te container and put router-id inside.
5306 o Remove GR helper disable and timers.
5308 11. References
5310 11.1. Normative References
5312 [I-D.ietf-bfd-yang]
5313 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and
5314 G. Mirsky, "YANG Data Model for Bidirectional Forwarding
5315 Detection (BFD)", draft-ietf-bfd-yang-17 (work in
5316 progress), August 2018.
5318 [ISO-10589]
5319 ISO, "Intermediate System to Intermediate System intra-
5320 domain routeing information exchange protocol for use in
5321 conjunction with the protocol for providing the
5322 connectionless-mode network service (ISO 8473)",
5323 International Standard 10589: 2002, Second Edition, 2002.
5325 [RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and
5326 dual environments", RFC 1195, DOI 10.17487/RFC1195,
5327 December 1990, .
5329 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
5330 Requirement Levels", BCP 14, RFC 2119,
5331 DOI 10.17487/RFC2119, March 1997,
5332 .
5334 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
5335 DOI 10.17487/RFC3688, January 2004,
5336 .
5338 [RFC5029] Vasseur, JP. and S. Previdi, "Definition of an IS-IS Link
5339 Attribute Sub-TLV", RFC 5029, DOI 10.17487/RFC5029,
5340 September 2007, .
5342 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi
5343 Topology (MT) Routing in Intermediate System to
5344 Intermediate Systems (IS-ISs)", RFC 5120,
5345 DOI 10.17487/RFC5120, February 2008,
5346 .
5348 [RFC5130] Previdi, S., Shand, M., Ed., and C. Martin, "A Policy
5349 Control Mechanism in IS-IS Using Administrative Tags",
5350 RFC 5130, DOI 10.17487/RFC5130, February 2008,
5351 .
5353 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for
5354 IP Fast Reroute: Loop-Free Alternates", RFC 5286,
5355 DOI 10.17487/RFC5286, September 2008,
5356 .
5358 [RFC5301] McPherson, D. and N. Shen, "Dynamic Hostname Exchange
5359 Mechanism for IS-IS", RFC 5301, DOI 10.17487/RFC5301,
5360 October 2008, .
5362 [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic
5363 Engineering", RFC 5305, DOI 10.17487/RFC5305, October
5364 2008, .
5366 [RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS",
5367 RFC 5306, DOI 10.17487/RFC5306, October 2008,
5368 .
5370 [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308,
5371 DOI 10.17487/RFC5308, October 2008,
5372 .
5374 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection
5375 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010,
5376 .
5378 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection
5379 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881,
5380 DOI 10.17487/RFC5881, June 2010,
5381 .
5383 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
5384 the Network Configuration Protocol (NETCONF)", RFC 6020,
5385 DOI 10.17487/RFC6020, October 2010,
5386 .
5388 [RFC6119] Harrison, J., Berger, J., and M. Bartlett, "IPv6 Traffic
5389 Engineering in IS-IS", RFC 6119, DOI 10.17487/RFC6119,
5390 February 2011, .
5392 [RFC6232] Wei, F., Qin, Y., Li, Z., Li, T., and J. Dong, "Purge
5393 Originator Identification TLV for IS-IS", RFC 6232,
5394 DOI 10.17487/RFC6232, May 2011,
5395 .
5397 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
5398 and A. Bierman, Ed., "Network Configuration Protocol
5399 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
5400 .
5402 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
5403 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
5404 .
5406 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
5407 RFC 6991, DOI 10.17487/RFC6991, July 2013,
5408 .
5410 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N.
5411 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)",
5412 RFC 7490, DOI 10.17487/RFC7490, April 2015,
5413 .
5415 [RFC7794] Ginsberg, L., Ed., Decraene, B., Previdi, S., Xu, X., and
5416 U. Chunduri, "IS-IS Prefix Attributes for Extended IPv4
5417 and IPv6 Reachability", RFC 7794, DOI 10.17487/RFC7794,
5418 March 2016, .
5420 [RFC7810] Previdi, S., Ed., Giacalone, S., Ward, D., Drake, J., and
5421 Q. Wu, "IS-IS Traffic Engineering (TE) Metric Extensions",
5422 RFC 7810, DOI 10.17487/RFC7810, May 2016,
5423 .
5425 [RFC7917] Sarkar, P., Ed., Gredler, H., Hegde, S., Litkowski, S.,
5426 and B. Decraene, "Advertising Node Administrative Tags in
5427 IS-IS", RFC 7917, DOI 10.17487/RFC7917, July 2016,
5428 .
5430 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
5431 RFC 7950, DOI 10.17487/RFC7950, August 2016,
5432 .
5434 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
5435 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
5436 .
5438 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
5439 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
5440 May 2017, .
5442 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J.
5443 Zhang, "YANG Data Model for Key Chains", RFC 8177,
5444 DOI 10.17487/RFC8177, June 2017,
5445 .
5447 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
5448 "Common YANG Data Types for the Routing Area", RFC 8294,
5449 DOI 10.17487/RFC8294, December 2017,
5450 .
5452 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
5453 Access Control Model", STD 91, RFC 8341,
5454 DOI 10.17487/RFC8341, March 2018,
5455 .
5457 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
5458 and R. Wilton, "Network Management Datastore Architecture
5459 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
5460 .
5462 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface
5463 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
5464 .
5466 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
5467 Routing Management (NMDA Version)", RFC 8349,
5468 DOI 10.17487/RFC8349, March 2018,
5469 .
5471 [RFC8405] Decraene, B., Litkowski, S., Gredler, H., Lindem, A.,
5472 Francois, P., and C. Bowers, "Shortest Path First (SPF)
5473 Back-Off Delay Algorithm for Link-State IGPs", RFC 8405,
5474 DOI 10.17487/RFC8405, June 2018,
5475 .
5477 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
5478 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
5479 .
5481 11.2. Informative References
5483 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP
5484 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March
5485 2009, .
5487 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
5488 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
5489 .
5491 Appendix A. Example of IS-IS configuration in XML
5493 This section gives an example of configuration of an IS-IS instance
5494 on a device. The example is written in XML.
5496
5497
5498
5499 SLI
5500 1.1.1.1
5501
5502
5503 ISIS-example
5504
5505
5506
5508 isis:isis
5509
5510
5511
5512 true
5513 level-2
5514 87FC.FCDF.4432
5515 49.0001
5516
5517
5518 192.0.2.1
5519
5520
5521 65535
5522 65000
5523
5524 wide-only
5525
5526
5527 111111
5528
5529
5530
5531 ipv4
5532 true
5533
5534
5535 ipv6
5536 true
5537
5538
5539
5540
5541 Loopback0
5542 200
5543
5544 0
5545
5546 true
5547
5548
5549 Eth1
5550 level-2
5552 point-to-point
5553
5554 167890
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564 Loopback0
5565
5566
5568 ianaift:softwareLoopback
5569
5571 enabled
5572
5573
5574 192.0.2.1
5575 32
5576
5577
5578
5579
5580 2001:DB8::1
5581 128
5582
5583
5584
5585
5586 Eth1
5587
5588
5590 ianaift:ethernetCsmacd
5591
5593 enabled
5594
5595
5596 198.51.100.1
5597 30
5598
5599
5600
5601
5602 2001:DB8:0:0:FF::1
5603 64
5604
5605
5606
5607
5608
5610 Authors' Addresses
5612 Stephane Litkowski
5613 Orange
5615 Email: stephane.litkowski@orange.com
5617 Derek Yeung
5618 Arrcus, Inc
5620 Email: derek@arrcus.com
5622 Acee Lindem
5623 Cisco Systems
5625 Email: acee@cisco.com
5627 Jeffrey Zhang
5628 Juniper Networks
5630 Email: zzhang@juniper.net
5631 Ladislav Lhotka
5632 CZ.NIC
5634 Email: lhotka@nic.cz