idnits 2.17.00 (12 Aug 2021)
/tmp/idnits52217/draft-ietf-isis-yang-isis-cfg-20.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 :
----------------------------------------------------------------------------
No issues found here.
Miscellaneous warnings:
----------------------------------------------------------------------------
== The copyright year in the IETF Trust and authors Copyright Line does not
match the current year
== Line 250 has weird spacing: '...ce-name ins...'
== Line 255 has weird spacing: '...ce-name ins...'
== Line 631 has weird spacing: '...--rw af ian...'
== Line 730 has weird spacing: '...stem-id sys...'
== Line 734 has weird spacing: '...o level lev...'
== (2 more instances...)
-- The document date (May 25, 2018) is 1457 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)
== Outdated reference: draft-ietf-netmod-routing-cfg has been published as
RFC 8022
== Outdated reference: draft-ietf-rtgwg-yang-key-chain has been published
as RFC 8177
** Downref: Normative reference to an Informational RFC: RFC 5443
** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341)
Summary: 2 errors (**), 0 flaws (~~), 9 warnings (==), 1 comment (--).
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: November 26, 2018 Arrcus, Inc
6 A. Lindem
7 Cisco Systems
8 J. Zhang
9 Juniper Networks
10 L. Lhotka
11 CZ.NIC
12 May 25, 2018
14 YANG Data Model for IS-IS protocol
15 draft-ietf-isis-yang-isis-cfg-20
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", "MAY", and "OPTIONAL" in this
26 document are to be interpreted as described in [RFC2119].
28 Status of This Memo
30 This Internet-Draft is submitted in full conformance with the
31 provisions of BCP 78 and BCP 79.
33 Internet-Drafts are working documents of the Internet Engineering
34 Task Force (IETF). Note that other groups may also distribute
35 working documents as Internet-Drafts. The list of current Internet-
36 Drafts is at http://datatracker.ietf.org/drafts/current/.
38 Internet-Drafts are draft documents valid for a maximum of six months
39 and may be updated, replaced, or obsoleted by other documents at any
40 time. It is inappropriate to use Internet-Drafts as reference
41 material or to cite them other than as "work in progress."
43 This Internet-Draft will expire on November 26, 2018.
45 Copyright Notice
47 Copyright (c) 2018 IETF Trust and the persons identified as the
48 document authors. All rights reserved.
50 This document is subject to BCP 78 and the IETF Trust's Legal
51 Provisions Relating to IETF Documents
52 (http://trustee.ietf.org/license-info) in effect on the date of
53 publication of this document. Please review these documents
54 carefully, as they describe your rights and restrictions with respect
55 to this document. Code Components extracted from this document must
56 include Simplified BSD License text as described in Section 4.e of
57 the Trust Legal Provisions and are provided without warranty as
58 described in the Simplified BSD License.
60 Table of Contents
62 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
63 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3
64 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3
65 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9
66 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10
67 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10
68 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12
69 2.5. Authentication Parameters . . . . . . . . . . . . . . . . 23
70 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 23
71 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 23
72 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 23
73 2.9. Operational States . . . . . . . . . . . . . . . . . . . 24
74 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 24
75 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 25
76 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 26
77 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 26
78 7. Security Considerations . . . . . . . . . . . . . . . . . . . 101
79 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 102
80 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 102
81 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 103
82 11. Change log for ietf-isis YANG module . . . . . . . . . . . . 103
83 11.1. From version -19 to version -20 . . . . . . . . . . . . 103
84 11.2. From version -18 to version -19 . . . . . . . . . . . . 103
85 11.3. From version -17 to version -18 . . . . . . . . . . . . 103
86 11.4. From version -16 to version -17 . . . . . . . . . . . . 104
87 11.5. From version -15 to version -16 . . . . . . . . . . . . 104
88 11.6. From version -14 to version -15 . . . . . . . . . . . . 104
89 11.7. From version -13 to version -14 . . . . . . . . . . . . 104
90 11.8. From version -12 to version -13 . . . . . . . . . . . . 105
91 11.9. From version -09 to version -12 . . . . . . . . . . . . 105
92 11.10. From version -08 to version -09 . . . . . . . . . . . . 105
93 11.11. From version -07 to version -08 . . . . . . . . . . . . 105
94 11.12. From version -05 to version -07 . . . . . . . . . . . . 105
95 11.13. From version -03 to version -05 . . . . . . . . . . . . 106
96 11.14. From version -02 to version -03 . . . . . . . . . . . . 106
97 11.15. From version -01 to version -02 . . . . . . . . . . . . 106
98 11.16. From version -00 to version -01 . . . . . . . . . . . . 107
99 12. Normative References . . . . . . . . . . . . . . . . . . . . 107
100 Appendix A. Example of IS-IS configuration in XML . . . . . . . 108
101 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 111
103 1. Introduction
105 This document defines a YANG data model for IS-IS routing protocol.
107 The data model covers configuration of an IS-IS routing protocol
108 instance as well as operational states.
110 1.1. Tree diagram
112 A simplified graphical representation of the data model is presented
113 in Section 2.
115 The meaning of the symbols in these diagrams is as follows:
117 o Brackets "[" and "]" enclose list keys.
119 o Curly braces "{" and "}" contain names of optional features that
120 make the corresponding node conditional.
122 o Abbreviations before data node names: "rw" means configuration
123 (read-write), and "ro" state data (read-only).
125 o Symbols after data node names: "?" means an optional node and "*"
126 denotes a "list" or "leaf-list".
128 o Parentheses enclose choice and case nodes, and case nodes are also
129 marked with a colon (":").
131 o Ellipsis ("...") stands for contents of subtrees that are not
132 shown.
134 2. Design of the Data Model
136 The IS-IS YANG module augments the "control-plane-protocol" list in
137 ietf-routing module with specific IS-IS parameters.
139 The module is designed as per NMDA (Network Management Datastore
140 Architecture).
142 The figure below describes the overall structure of the isis YANG
143 module:
145 module: ietf-isis
146 augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route:
147 +--ro metric? uint32
148 +--ro tag* uint64
149 +--ro route-type? enumeration
150 augment /if:interfaces/if:interface:
151 +--rw clns-mtu? uint16
152 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protoc
153 ol:
154 +--rw isis
155 +--rw enable? boolean {admin-control}?
156 +--rw level-type? level
157 +--rw system-id? system-id
158 +--rw maximum-area-addresses? uint8 {maximum-area-addresses}?
159 +--rw area-address* area-address
160 +--rw mpls
161 | +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}?
162 | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}?
163 | +--rw ldp
164 | ...
165 +--rw auto-cost {auto-cost}?
166 | +--rw reference-bandwidth? uint32
167 | +--rw enable? boolean
168 +--rw lsp-mtu? uint16
169 +--rw lsp-lifetime? uint16
170 +--rw lsp-refresh? rt-types:timer-value-seconds16 {l
171 sp-refresh}?
172 +--rw graceful-restart {graceful-restart}?
173 | +--rw enable? boolean
174 | +--rw restart-interval? rt-types:timer-value-seconds16
175 | +--rw helper-enable? boolean
176 +--rw nsr {nsr}?
177 | +--rw enable? boolean
178 +--rw node-tags {node-tag}?
179 | +--rw node-tag* [tag]
180 | ...
181 +--rw authentication
182 | +--rw (authentication-type)?
183 | | ...
184 | +--rw level-1
185 | | ...
186 | +--rw level-2
187 | ...
188 +--rw metric-type
189 | +--rw value? enumeration
190 | +--rw level-1
191 | | ...
192 | +--rw level-2
193 | ...
194 +--rw default-metric
195 | +--rw value? wide-metric
196 | +--rw level-1
197 | | ...
198 | +--rw level-2
199 | ...
200 +--rw afs {nlpid-control}?
201 | +--rw af* [af]
202 | ...
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 +--rw fast-reroute {fast-reroute}?
211 | +--rw lfa {lfa}?
212 | +--ro protected-routes
213 | | ...
214 | +--ro nonprotected-routes
215 | | ...
216 | +--ro protection-statistics* [frr-protection-method]
217 | ...
218 +--rw spf-control
219 | +--rw ietf-spf-delay {ietf-spf-delay}?
220 | ...
221 +--rw topologies {multi-topology}?
222 | +--rw topology* [name]
223 | ...
224 +--rw interfaces
225 | +--rw interface* [name]
226 | ...
227 +--ro spf-log
228 | +--ro event* [id]
229 | ...
230 +--ro lsp-log
231 | +--ro event* [id]
232 | ...
233 +--ro hostnames
234 | +--ro hostname* [system-id]
235 | ...
236 +--ro database
237 | +--ro level-db* [level]
238 | ...
240 +--ro local-rib
241 | +--ro route* [prefix]
242 | ...
243 +--ro system-counters
244 +--ro level* [level]
245 ...
247 rpcs:
248 +---x clear-adjacency
249 | +---w input
250 | +---w routing-protocol-instance-name instance-state-ref
251 | +---w level? level
252 | +---w interface? string
253 +---x clear-database
254 +---w input
255 +---w routing-protocol-instance-name instance-state-ref
256 +---w level? level
258 notifications:
259 +---n database-overload
260 | +--ro routing-instance? string
261 | +--ro routing-protocol-name? string
262 | +--ro isis-level? level
263 | +--ro overload? enumeration
264 +---n lsp-too-large
265 | +--ro routing-instance? string
266 | +--ro routing-protocol-name? string
267 | +--ro isis-level? level
268 | +--ro interface-name? string
269 | +--ro interface-level? level
270 | +--ro extended-circuit-id? extended-circuit-id
271 | +--ro pdu-size? uint32
272 | +--ro lsp-id? lsp-id
273 +---n if-state-change
274 | +--ro routing-instance? string
275 | +--ro routing-protocol-name? string
276 | +--ro isis-level? level
277 | +--ro interface-name? string
278 | +--ro interface-level? level
279 | +--ro extended-circuit-id? extended-circuit-id
280 | +--ro state? if-state-type
281 +---n corrupted-lsp-detected
282 | +--ro routing-instance? string
283 | +--ro routing-protocol-name? string
284 | +--ro isis-level? level
285 | +--ro lsp-id? lsp-id
286 +---n attempt-to-exceed-max-sequence
287 | +--ro routing-instance? string
288 | +--ro routing-protocol-name? string
289 | +--ro isis-level? level
290 | +--ro lsp-id? lsp-id
291 +---n id-len-mismatch
292 | +--ro routing-instance? string
293 | +--ro routing-protocol-name? string
294 | +--ro isis-level? level
295 | +--ro interface-name? string
296 | +--ro interface-level? level
297 | +--ro extended-circuit-id? extended-circuit-id
298 | +--ro pdu-field-len? uint8
299 | +--ro raw-pdu? binary
300 +---n max-area-addresses-mismatch
301 | +--ro routing-instance? string
302 | +--ro routing-protocol-name? string
303 | +--ro isis-level? level
304 | +--ro interface-name? string
305 | +--ro interface-level? level
306 | +--ro extended-circuit-id? extended-circuit-id
307 | +--ro max-area-addresses? uint8
308 | +--ro raw-pdu? binary
309 +---n own-lsp-purge
310 | +--ro routing-instance? string
311 | +--ro routing-protocol-name? string
312 | +--ro isis-level? level
313 | +--ro interface-name? string
314 | +--ro interface-level? level
315 | +--ro extended-circuit-id? extended-circuit-id
316 | +--ro lsp-id? lsp-id
317 +---n sequence-number-skipped
318 | +--ro routing-instance? string
319 | +--ro routing-protocol-name? string
320 | +--ro isis-level? level
321 | +--ro interface-name? string
322 | +--ro interface-level? level
323 | +--ro extended-circuit-id? extended-circuit-id
324 | +--ro lsp-id? lsp-id
325 +---n authentication-type-failure
326 | +--ro routing-instance? string
327 | +--ro routing-protocol-name? string
328 | +--ro isis-level? level
329 | +--ro interface-name? string
330 | +--ro interface-level? level
331 | +--ro extended-circuit-id? extended-circuit-id
332 | +--ro raw-pdu? binary
333 +---n authentication-failure
334 | +--ro routing-instance? string
335 | +--ro routing-protocol-name? string
336 | +--ro isis-level? level
337 | +--ro interface-name? string
338 | +--ro interface-level? level
339 | +--ro extended-circuit-id? extended-circuit-id
340 | +--ro raw-pdu? binary
341 +---n version-skew
342 | +--ro routing-instance? string
343 | +--ro routing-protocol-name? string
344 | +--ro isis-level? level
345 | +--ro interface-name? string
346 | +--ro interface-level? level
347 | +--ro extended-circuit-id? extended-circuit-id
348 | +--ro protocol-version? uint8
349 | +--ro raw-pdu? binary
350 +---n area-mismatch
351 | +--ro routing-instance? string
352 | +--ro routing-protocol-name? string
353 | +--ro isis-level? level
354 | +--ro interface-name? string
355 | +--ro interface-level? level
356 | +--ro extended-circuit-id? extended-circuit-id
357 | +--ro raw-pdu? binary
358 +---n rejected-adjacency
359 | +--ro routing-instance? string
360 | +--ro routing-protocol-name? string
361 | +--ro isis-level? level
362 | +--ro interface-name? string
363 | +--ro interface-level? level
364 | +--ro extended-circuit-id? extended-circuit-id
365 | +--ro raw-pdu? binary
366 | +--ro reason? string
367 +---n protocols-supported-mismatch
368 | +--ro routing-instance? string
369 | +--ro routing-protocol-name? string
370 | +--ro isis-level? level
371 | +--ro interface-name? string
372 | +--ro interface-level? level
373 | +--ro extended-circuit-id? extended-circuit-id
374 | +--ro raw-pdu? binary
375 | +--ro protocols* uint8
376 +---n lsp-error-detected
377 | +--ro routing-instance? string
378 | +--ro routing-protocol-name? string
379 | +--ro isis-level? level
380 | +--ro interface-name? string
381 | +--ro interface-level? level
382 | +--ro extended-circuit-id? extended-circuit-id
383 | +--ro lsp-id? lsp-id
384 | +--ro raw-pdu? binary
385 | +--ro error-offset? uint32
386 | +--ro tlv-type? uint8
387 +---n adjacency-state-change
388 | +--ro routing-instance? string
389 | +--ro routing-protocol-name? string
390 | +--ro isis-level? level
391 | +--ro interface-name? string
392 | +--ro interface-level? level
393 | +--ro extended-circuit-id? extended-circuit-id
394 | +--ro neighbor? string
395 | +--ro neighbor-system-id? system-id
396 | +--ro state? adj-state-type
397 | +--ro reason? string
398 +---n lsp-received
399 | +--ro routing-instance? string
400 | +--ro routing-protocol-name? string
401 | +--ro isis-level? level
402 | +--ro interface-name? string
403 | +--ro interface-level? level
404 | +--ro extended-circuit-id? extended-circuit-id
405 | +--ro lsp-id? lsp-id
406 | +--ro sequence? uint32
407 | +--ro received-timestamp? yang:timestamp
408 | +--ro neighbor-system-id? system-id
409 +---n lsp-generation
410 +--ro routing-instance? string
411 +--ro routing-protocol-name? string
412 +--ro isis-level? level
413 +--ro lsp-id? lsp-id
414 +--ro sequence? uint32
415 +--ro send-timestamp? yang:timestamp
417 2.1. IS-IS Configuration
419 The IS-IS configuration container is divided in:
421 o Global parameters.
423 o Per interface configuration (see Section 2.4).
425 Additional modules may be created this to support any additional
426 parameters. These additional modules should augment the ietf-isis
427 module.
429 The model implements features, thus some of the configuration
430 statement becomes optional. As an example, the ability to control
431 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 }
527 }
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.
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? rt-types:timer-value-milli
558 seconds
559 | +--rw lsp-retransmit-interval? rt-types:timer-value-secon
560 ds16
561 | +--rw passive? boolean
562 | +--rw csnp-interval? rt-types:timer-value-secon
563 ds16
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? key-chain:key-chain-r
584 ef
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? key-chain:key-chain-r
592 ef
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 afs {nlpid-control}?
630 | | +--rw af* [af]
631 | | +--rw af 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-disabled? boolean
638 | | +--rw enable? boolean
639 | | +--rw remote-lfa {remote-lfa}?
640 | | | +--rw enable? boolean
641 | | +--rw level-1
642 | | | +--rw candidate-disabled? boolean
643 | | | +--rw enable? boolean
644 | | | +--rw remote-lfa {remote-lfa}?
645 | | | +--rw enable? boolean
646 | | +--rw level-2
647 | | +--rw candidate-disabled? boolean
648 | | +--rw enable? boolean
649 | | +--rw remote-lfa {remote-lfa}?
650 | | +--rw enable? boolean
651 | +--rw topologies {multi-topology}?
652 | | +--rw topology* [name]
653 | | +--rw name -> ../../../../../../../../rt:ribs/ri
654 b/name
655 | | +--rw metric
656 | | +--rw value? wide-metric
657 | | +--rw level-1
658 | | | +--rw value? wide-metric
659 | | +--rw level-2
660 | | +--rw value? wide-metric
661 | +--ro adjacencies
662 | | +--ro adjacency* []
663 | | +--ro neighbor-systype? level
664 | | +--ro neighbor-sysid? system-id
665 | | +--ro neighbor-extended-circuit-id? extended-circui
666 t-id
667 | | +--ro neighbor-snpa? snpa
668 | | +--ro usage? level
669 | | +--ro hold-timer? rt-types:timer-
670 value-seconds16
671 | | +--ro neighbor-priority? uint8
672 | | +--ro lastuptime? yang:timestamp
673 | | +--ro state? adj-state-type
674 | +--ro event-counters
675 | | +--ro adjacency-changes? uint32
676 | | +--ro adjacency-number? uint32
677 | | +--ro init-fails? uint32
678 | | +--ro adjacency-rejects? uint32
679 | | +--ro id-len-mismatch? uint32
680 | | +--ro max-area-addresses-mismatch? uint32
681 | | +--ro authentication-type-fails? uint32
682 | | +--ro authentication-fails? uint32
683 | | +--ro lan-dis-changes? uint32
684 | +--ro packet-counters
685 | +--ro level* [level]
686 | +--ro level level-number
687 | +--ro iih
688 | | +--ro in? uint32
689 | | +--ro out? uint32
690 | +--ro ish
691 | | +--ro in? uint32
692 | | +--ro out? uint32
693 | +--ro esh
694 | | +--ro in? uint32
695 | | +--ro out? uint32
696 | +--ro lsp
697 | | +--ro in? uint32
698 | | +--ro out? uint32
699 | +--ro psnp
700 | | +--ro in? uint32
701 | | +--ro out? uint32
702 | +--ro csnp
703 | | +--ro in? uint32
704 | | +--ro out? uint32
705 | +--ro unknown
706 | +--ro in? uint32
707 | +--ro out? uint32
708 +--ro spf-log
709 | +--ro event* [id]
710 | +--ro id uint32
711 | +--ro spf-type? enumeration
712 | +--ro level? level-number
713 | +--ro schedule-timestamp? yang:timestamp
714 | +--ro start-timestamp? yang:timestamp
715 | +--ro end-timestamp? yang:timestamp
716 | +--ro trigger-lsp* [lsp]
717 | +--ro lsp lsp-id
718 | +--ro sequence? uint32
719 +--ro lsp-log
720 | +--ro event* [id]
721 | +--ro id uint32
722 | +--ro level? level-number
723 | +--ro lsp
724 | | +--ro lsp? lsp-id
725 | | +--ro sequence? uint32
726 | +--ro received-timestamp? yang:timestamp
727 | +--ro change? identityref
728 +--ro hostnames
729 | +--ro hostname* [system-id]
730 | +--ro system-id system-id
731 | +--ro hostname? string
732 +--ro database
733 | +--ro level-db* [level]
734 | +--ro level level-number
735 | +--ro lsp* [lsp-id]
736 | +--ro decoded-completed? boolean
737 | +--ro raw-data? yang:hex-string
738 | +--ro lsp-id lsp-id
739 | +--ro checksum? uint16
740 | +--ro remaining-lifetime? uint16
741 | +--ro sequence? uint32
742 | +--ro attributes? bits
743 | +--ro ipv4-addresses* inet:ipv4-address
744 | +--ro ipv6-addresses* inet:ipv6-address
745 | +--ro ipv4-te-routerid? inet:ipv4-address
746 | +--ro ipv6-te-routerid? inet:ipv6-address
747 | +--ro protocol-supported* uint8
748 | +--ro dynamic-hostname? string
749 | +--ro authentication
750 | | +--ro authentication-type? string
751 | | +--ro authentication-key? string
752 | +--ro mt-entries
753 | | +--ro topology* []
754 | | +--ro MT-ID? uint16
755 | | +--ro attributes? bits
756 | +--ro router-capabilities* []
757 | | +--ro flags? bits
758 | | +--ro node-tags {node-tag}?
759 | | | +--ro node-tag* []
760 | | | +--ro tag? uint32
761 | | +--ro binary? binary
762 | +--ro is-neighbor
763 | | +--ro neighbor* []
764 | | +--ro neighbor-id? system-id
765 | | +--ro i-e? boolean
766 | | +--ro default-metric? std-metric
767 | | +--ro delay-metric
768 | | | +--ro metric? std-metric
769 | | | +--ro supported? boolean
770 | | +--ro expense-metric
771 | | | +--ro metric? std-metric
772 | | | +--ro supported? boolean
773 | | +--ro error-metric
774 | | +--ro metric? std-metric
775 | | +--ro supported? boolean
776 | +--ro extended-is-neighbor
777 | | +--ro neighbor* []
778 | | +--ro neighbor-id? system-id
779 | | +--ro metric? wide-metric
780 | +--ro ipv4-internal-reachability
781 | | +--ro prefixes* []
782 | | +--ro up-down? boolean
783 | | +--ro i-e? boolean
784 | | +--ro ip-prefix? inet:ipv4-address
785 | | +--ro prefix-len? uint8
786 | | +--ro default-metric? std-metric
787 | | +--ro delay-metric
788 | | | +--ro metric? std-metric
789 | | | +--ro supported? boolean
790 | | +--ro expense-metric
791 | | | +--ro metric? std-metric
792 | | | +--ro supported? boolean
793 | | +--ro error-metric
794 | | +--ro metric? std-metric
795 | | +--ro supported? boolean
796 | +--ro ipv4-external-reachability
797 | | +--ro prefixes* []
798 | | +--ro up-down? boolean
799 | | +--ro i-e? boolean
800 | | +--ro ip-prefix? inet:ipv4-address
801 | | +--ro prefix-len? uint8
802 | | +--ro default-metric? std-metric
803 | | +--ro delay-metric
804 | | | +--ro metric? std-metric
805 | | | +--ro supported? boolean
806 | | +--ro expense-metric
807 | | | +--ro metric? std-metric
808 | | | +--ro supported? boolean
809 | | +--ro error-metric
810 | | +--ro metric? std-metric
811 | | +--ro supported? boolean
812 | +--ro extended-ipv4-reachability
813 | | +--ro prefixes* []
814 | | +--ro up-down? boolean
815 | | +--ro ip-prefix? inet:ipv4-address
816 | | +--ro prefix-len? uint8
817 | | +--ro metric? wide-metric
818 | | +--ro tag* uint32
819 | | +--ro tag64* uint64
820 | | +--ro external-prefix-flag? boolean
821 | | +--ro readvertisement-flag? boolean
822 | | +--ro node-flag? boolean
823 | | +--ro ipv4-source-router-id? inet:ipv4-address
824 | | +--ro ipv6-source-router-id? inet:ipv6-address
825 | +--ro mt-is-neighbor
826 | | +--ro neighbor* []
827 | | +--ro MT-ID? uint16
828 | | +--ro neighbor-id? system-id
829 | | +--ro metric? wide-metric
830 | +--ro mt-extended-ipv4-reachability
831 | | +--ro prefixes* []
832 | | +--ro MT-ID? uint16
833 | | +--ro up-down? boolean
834 | | +--ro ip-prefix? inet:ipv4-address
835 | | +--ro prefix-len? uint8
836 | | +--ro metric? wide-metric
837 | | +--ro tag* uint32
838 | | +--ro tag64* uint64
839 | | +--ro external-prefix-flag? boolean
840 | | +--ro readvertisement-flag? boolean
841 | | +--ro node-flag? boolean
842 | | +--ro ipv4-source-router-id? inet:ipv4-address
843 | | +--ro ipv6-source-router-id? inet:ipv6-address
844 | +--ro mt-ipv6-reachability
845 | | +--ro prefixes* []
846 | | +--ro MT-ID? uint16
847 | | +--ro up-down? boolean
848 | | +--ro ip-prefix? inet:ipv6-address
849 | | +--ro prefix-len? uint8
850 | | +--ro metric? wide-metric
851 | | +--ro tag* uint32
852 | | +--ro tag64* uint64
853 | | +--ro external-prefix-flag? boolean
854 | | +--ro readvertisement-flag? boolean
855 | | +--ro node-flag? boolean
856 | | +--ro ipv4-source-router-id? inet:ipv4-address
857 | | +--ro ipv6-source-router-id? inet:ipv6-address
858 | +--ro ipv6-reachability
859 | +--ro prefixes* []
860 | +--ro up-down? boolean
861 | +--ro ip-prefix? inet:ipv6-address
862 | +--ro prefix-len? uint8
863 | +--ro metric? wide-metric
864 | +--ro tag* uint32
865 | +--ro tag64* uint64
866 | +--ro external-prefix-flag? boolean
867 | +--ro readvertisement-flag? boolean
868 | +--ro node-flag? boolean
869 | +--ro ipv4-source-router-id? inet:ipv4-address
870 | +--ro ipv6-source-router-id? inet:ipv6-address
871 +--ro local-rib
872 | +--ro route* [prefix]
873 | +--ro prefix inet:ip-prefix
874 | +--ro next-hops
875 | | +--ro next-hop* [next-hop]
876 | | +--ro outgoing-interface? if:interface-ref
877 | | +--ro next-hop inet:ip-address
878 | +--ro metric? uint32
879 | +--ro level? level-number
880 | +--ro route-tag? uint32
881 +--ro system-counters
882 +--ro level* [level]
883 +--ro level level-number
884 +--ro corrupted-lsps? uint32
885 +--ro authentication-type-fails? uint32
886 +--ro authentication-fails? uint32
887 +--ro database-overload? uint32
888 +--ro own-lsp-purge? uint32
889 +--ro manual-address-drop-from-area? uint32
890 +--ro max-sequence? uint32
891 +--ro sequence-number-skipped? uint32
892 +--ro id-len-mismatch? uint32
893 +--ro partition-changes? uint32
894 +--ro lsp-errors? uint32
895 +--ro spf-runs? uint32
897 rpcs:
898 +---x clear-adjacency
899 | +---w input
900 | +---w routing-protocol-instance-name instance-state-ref
901 | +---w level? level
902 | +---w interface? string
903 +---x clear-database
904 +---w input
905 +---w routing-protocol-instance-name instance-state-ref
906 +---w level? level
908 notifications:
909 +---n database-overload
910 | +--ro routing-instance? string
911 | +--ro routing-protocol-name? string
912 | +--ro isis-level? level
913 | +--ro overload? enumeration
914 +---n lsp-too-large
915 | +--ro routing-instance? string
916 | +--ro routing-protocol-name? string
917 | +--ro isis-level? level
918 | +--ro interface-name? string
919 | +--ro interface-level? level
920 | +--ro extended-circuit-id? extended-circuit-id
921 | +--ro pdu-size? uint32
922 | +--ro lsp-id? lsp-id
923 +---n if-state-change
924 | +--ro routing-instance? string
925 | +--ro routing-protocol-name? string
926 | +--ro isis-level? level
927 | +--ro interface-name? string
928 | +--ro interface-level? level
929 | +--ro extended-circuit-id? extended-circuit-id
930 | +--ro state? if-state-type
931 +---n corrupted-lsp-detected
932 | +--ro routing-instance? string
933 | +--ro routing-protocol-name? string
934 | +--ro isis-level? level
935 | +--ro lsp-id? lsp-id
936 +---n attempt-to-exceed-max-sequence
937 | +--ro routing-instance? string
938 | +--ro routing-protocol-name? string
939 | +--ro isis-level? level
940 | +--ro lsp-id? lsp-id
941 +---n id-len-mismatch
942 | +--ro routing-instance? string
943 | +--ro routing-protocol-name? string
944 | +--ro isis-level? level
945 | +--ro interface-name? string
946 | +--ro interface-level? level
947 | +--ro extended-circuit-id? extended-circuit-id
948 | +--ro pdu-field-len? uint8
949 | +--ro raw-pdu? binary
950 +---n max-area-addresses-mismatch
951 | +--ro routing-instance? string
952 | +--ro routing-protocol-name? string
953 | +--ro isis-level? level
954 | +--ro interface-name? string
955 | +--ro interface-level? level
956 | +--ro extended-circuit-id? extended-circuit-id
957 | +--ro max-area-addresses? uint8
958 | +--ro raw-pdu? binary
959 +---n own-lsp-purge
960 | +--ro routing-instance? string
961 | +--ro routing-protocol-name? string
962 | +--ro isis-level? level
963 | +--ro interface-name? string
964 | +--ro interface-level? level
965 | +--ro extended-circuit-id? extended-circuit-id
966 | +--ro lsp-id? lsp-id
967 +---n sequence-number-skipped
968 | +--ro routing-instance? string
969 | +--ro routing-protocol-name? string
970 | +--ro isis-level? level
971 | +--ro interface-name? string
972 | +--ro interface-level? level
973 | +--ro extended-circuit-id? extended-circuit-id
974 | +--ro lsp-id? lsp-id
975 +---n authentication-type-failure
976 | +--ro routing-instance? string
977 | +--ro routing-protocol-name? string
978 | +--ro isis-level? level
979 | +--ro interface-name? string
980 | +--ro interface-level? level
981 | +--ro extended-circuit-id? extended-circuit-id
982 | +--ro raw-pdu? binary
983 +---n authentication-failure
984 | +--ro routing-instance? string
985 | +--ro routing-protocol-name? string
986 | +--ro isis-level? level
987 | +--ro interface-name? string
988 | +--ro interface-level? level
989 | +--ro extended-circuit-id? extended-circuit-id
990 | +--ro raw-pdu? binary
991 +---n version-skew
992 | +--ro routing-instance? string
993 | +--ro routing-protocol-name? string
994 | +--ro isis-level? level
995 | +--ro interface-name? string
996 | +--ro interface-level? level
997 | +--ro extended-circuit-id? extended-circuit-id
998 | +--ro protocol-version? uint8
999 | +--ro raw-pdu? binary
1000 +---n area-mismatch
1001 | +--ro routing-instance? string
1002 | +--ro routing-protocol-name? string
1003 | +--ro isis-level? level
1004 | +--ro interface-name? string
1005 | +--ro interface-level? level
1006 | +--ro extended-circuit-id? extended-circuit-id
1007 | +--ro raw-pdu? binary
1008 +---n rejected-adjacency
1009 | +--ro routing-instance? string
1010 | +--ro routing-protocol-name? string
1011 | +--ro isis-level? level
1012 | +--ro interface-name? string
1013 | +--ro interface-level? level
1014 | +--ro extended-circuit-id? extended-circuit-id
1015 | +--ro raw-pdu? binary
1016 | +--ro reason? string
1017 +---n protocols-supported-mismatch
1018 | +--ro routing-instance? string
1019 | +--ro routing-protocol-name? string
1020 | +--ro isis-level? level
1021 | +--ro interface-name? string
1022 | +--ro interface-level? level
1023 | +--ro extended-circuit-id? extended-circuit-id
1024 | +--ro raw-pdu? binary
1025 | +--ro protocols* uint8
1026 +---n lsp-error-detected
1027 | +--ro routing-instance? string
1028 | +--ro routing-protocol-name? string
1029 | +--ro isis-level? level
1030 | +--ro interface-name? string
1031 | +--ro interface-level? level
1032 | +--ro extended-circuit-id? extended-circuit-id
1033 | +--ro lsp-id? lsp-id
1034 | +--ro raw-pdu? binary
1035 | +--ro error-offset? uint32
1036 | +--ro tlv-type? uint8
1037 +---n adjacency-state-change
1038 | +--ro routing-instance? string
1039 | +--ro routing-protocol-name? string
1040 | +--ro isis-level? level
1041 | +--ro interface-name? string
1042 | +--ro interface-level? level
1043 | +--ro extended-circuit-id? extended-circuit-id
1044 | +--ro neighbor? string
1045 | +--ro neighbor-system-id? system-id
1046 | +--ro state? adj-state-type
1047 | +--ro reason? string
1048 +---n lsp-received
1049 | +--ro routing-instance? string
1050 | +--ro routing-protocol-name? string
1051 | +--ro isis-level? level
1052 | +--ro interface-name? string
1053 | +--ro interface-level? level
1054 | +--ro extended-circuit-id? extended-circuit-id
1055 | +--ro lsp-id? lsp-id
1056 | +--ro sequence? uint32
1057 | +--ro received-timestamp? yang:timestamp
1058 | +--ro neighbor-system-id? system-id
1059 +---n lsp-generation
1060 +--ro routing-instance? string
1061 +--ro routing-protocol-name? string
1062 +--ro isis-level? level
1063 +--ro lsp-id? lsp-id
1064 +--ro sequence? uint32
1065 +--ro send-timestamp? yang:timestamp
1067 2.5. Authentication Parameters
1069 The module enables authentication configuration through the IETF key-
1070 chain module ([I-D.ietf-rtgwg-yang-key-chain]). The IS-IS module
1071 imports the "ietf-key-chain" module and reuses some groupings to
1072 allow global and per interface configuration of authentication. If a
1073 global authentication is configured, an implementation SHOULD
1074 authenticate PSNPs, CSNPs and LSPs with the authentication parameters
1075 supplied. The authentication of hello PDUs can be activated on a per
1076 interface basis.
1078 2.6. IGP/LDP synchronization
1080 [RFC5443] defines a mechanism where IGP needs to be synchronized with
1081 LDP. An "ldp-igp-sync" feature has been defined in the model to
1082 support this mechanism. The "mpls/ldp/igp-sync" leaf under
1083 "interface" allows activation of the mechanism on a per interface
1084 basis. The "mpls/ldp/igp-sync" container in the global configuration
1085 is empty on purpose and is not required for the activation. The goal
1086 of this empty container is to allow easy augmentation with additional
1087 parameters like timers for example.
1089 2.7. ISO parameters
1091 As IS-IS protocol is based on ISO protocol suite, some ISO parameters
1092 may be required.
1094 This module augments interface configuration model to support ISO
1095 configuration parameters.
1097 The clns-mtu can be defined under the interface.
1099 2.8. IP FRR
1101 This YANG model supports LFA ([RFC5286]) and remote LFA ([RFC7490])
1102 as IP FRR techniques. The "fast-reroute" container may be augmented
1103 by other models to support other IPFRR flavors (MRT, TILFA ...).
1105 The current version of the model supports activation of LFA and
1106 remote LFA at interface only. The global "lfa" container is present
1107 but kept empty to allow augmentation with vendor specific properties
1108 like policies.
1110 Remote LFA is considered as a child of LFA. Remote LFA cannot be
1111 enabled if LFA is not enabled.
1113 The "candidate-disabled" allows to mark an interface to not be used
1114 as a backup.
1116 2.9. Operational States
1118 Operational states are provided in the module in various places:
1120 o system-counters: provides statistical informations about the
1121 global system.
1123 o interface : provides configuration state informations for each
1124 interface.
1126 o adjacencies: provides state informations about current IS-IS
1127 adjacencies.
1129 o spf-log: provides informations about SPF events on the node. This
1130 SHOULD be implemented as a wrapping buffer.
1132 o lsp-log: provides informations about LSP events on the node
1133 (reception of an LSP or modification of local LSP). This SHOULD
1134 be implemented as a wrapping buffer and an implementation MAY
1135 decide to log refresh LSPs or not.
1137 o local-rib: provides the IS-IS internal routing table view.
1139 o database: provides details on the current LSDB.
1141 o hostnames: provides informations about system-id to hostname
1142 mappings.
1144 o fast-reroute: provides informations about IP FRR.
1146 3. RPC Operations
1148 The "ietf-isis" module defines two RPC operations:
1150 o clear-isis-database: reset the content of a particular IS-IS
1151 database and restart database synchronization with the neighbors.
1153 o clear-isis-adjacency: restart a particular set of IS-IS
1154 adjacencies.
1156 4. Notifications
1158 The "ietf-isis" module introduces some notifications :
1160 database-overload : raised when overload condition is changed.
1162 lsp-too-large : raised when the system tries to propagate a too
1163 large PDU.
1165 corrupted-lsp-detected : raised when the system find that an LSP
1166 that was stored in memory has become corrupted.
1168 attempt-to-exceed-max-sequence : This notification is sent when
1169 the system wraps the 32-bit sequence counter of an LSP.
1171 id-len-mismatch : This notification is sent when we receive a PDU
1172 with a different value for the System ID length.
1174 max-area-addresses-mismatch : This notification is sent when we
1175 receive a PDU with a different value for the Maximum Area
1176 Addresses.
1178 own-lsp-purge : This notification is sent when the system receives
1179 a PDU with its own system ID and zero age.
1181 sequence-number-skipped : This notification is sent when the
1182 system receives a PDU with its own system ID and different
1183 contents. The system has to reissue the LSP with a higher
1184 sequence number.
1186 authentication-type-failure : This notification is sent when the
1187 system receives a PDU with the wrong authentication type field.
1189 authentication-failure : This notification is sent when the system
1190 receives a PDU with the wrong authentication information.
1192 version-skew : This notification is sent when the system receives
1193 a PDU with a different protocol version number.
1195 area-mismatch : This notification is sent when the system receives
1196 a Hello PDU from an IS that does not share any area address.
1198 rejected-adjacency : This notification is sent when the system
1199 receives a Hello PDU from an IS but does not establish an
1200 adjacency for some reason.
1202 protocols-supported-mismatch : This notification is sent when the
1203 system receives a non pseudonode LSP that has no matching protocol
1204 supported.
1206 lsp-error-detected : This notification is sent when the system
1207 receives a LSP with a parse error.
1209 adjacency-change : This notification is sent when an IS-IS
1210 adjacency moves to Up state or to Down state.
1212 lsp-received : This notification is sent when a LSP is received.
1214 lsp-generation : This notification is sent when a LSP is
1215 regenerated.
1217 5. Interaction with Other YANG Modules
1219 The "isis" configuration container augments the "/rt:routing/
1220 rt:control-plane-protocols/control-plane-protocol" container of the
1221 ietf-routing [I-D.ietf-netmod-routing-cfg] module by defining IS-IS
1222 specific parameters.
1224 The "isis" module augments "/if:interfaces/if:interface" with ISO
1225 specific parameters.
1227 The "isis" operational state container augments the "/rt:routing-
1228 state/rt:control-plane-protocols/control-plane-protocol" container of
1229 the ietf-routing module by defining IS-IS specific operational
1230 states.
1232 Some IS-IS specific routes attributes are added to route objects of
1233 the ietf-routing module by augmenting "/rt:routing-
1234 state/rt:ribs/rt:rib/rt:routes/rt:route".
1236 The modules defined in this document use some groupings from ietf-
1237 keychain [I-D.ietf-rtgwg-yang-key-chain].
1239 6. IS-IS YANG Module
1241 file "ietf-isis@2018-05-25.yang"
1243 module ietf-isis {
1244 yang-version 1.1;
1245 namespace "urn:ietf:params:xml:ns:yang:ietf-isis";
1247 prefix isis;
1248 import ietf-routing {
1249 prefix "rt";
1250 reference "RFC 8349 - A YANG Data Model for Routing
1251 Management (NMDA Version)";
1252 }
1254 import ietf-inet-types {
1255 prefix inet;
1256 reference "RFC 6021 - Common YANG Data Types";
1257 }
1259 import ietf-yang-types {
1260 prefix yang;
1261 reference "RFC 6021 - Common YANG Data Types";
1262 }
1264 import ietf-interfaces {
1265 prefix "if";
1266 reference "RFC 8343 - A YANG Data Model for Interface
1267 Management (NDMA Version)";
1268 }
1270 import ietf-key-chain {
1271 prefix "key-chain";
1272 reference "RFC 8177 - YANG Data Model for Key Chains";
1273 }
1275 import ietf-routing-types {
1276 prefix "rt-types";
1277 reference "RFC 8291 - Common YANG Data Types for the
1278 Routing Area";
1279 }
1281 import iana-routing-types {
1282 prefix "iana-rt-types";
1283 reference "RFC 8291 - Common YANG Data Types for the
1284 Routing Area";
1285 }
1287 import ietf-bfd-types {
1288 prefix "bfd-types";
1289 reference "RFC XXXX - YANG Data Model for Bidirectional
1290 Forwarding Detection (BFD)";
1291 }
1293 organization
1294 "IETF IS-IS Working Group";
1296 contact
1297 "WG List: <mailto:isis-wg@ietf.org>
1299 Editor: Stephane Litkowski
1300 <mailto:stephane.litkowski@orange.com>
1302 Derek Yeung
1303 <mailto:derek@arrcus.com>
1304 Acee Lindem
1305 <mailto:acee@cisco.com>
1306 Jeffrey Zhang
1307 <mailto:zzhang@juniper.net>
1308 Ladislav Lhotka
1309 <mailto:llhotka@nic.cz>
1310 Yi Yang
1311 <mailto:yiya@cisco.com>
1312 Dean Bogdanovic
1313 <mailto:deanb@juniper.net>
1314 Kiran Agrahara Sreenivasa
1315 <mailto:kkoushik@brocade.com>
1316 Yingzhen Qu
1317 <mailto:yiqu@cisco.com>
1318 Jeff Tantsura
1319 <mailto:jefftant.ietf@gmail.com>
1321 ";
1323 description
1324 "The YANG module defines a generic configuration model for
1325 IS-IS common across all of the vendor implementations.";
1327 revision 2017-05-25 {
1328 description
1329 "Initial revision.";
1330 reference "RFC XXXX";
1331 }
1333 /* Identities */
1335 identity isis {
1336 base rt:routing-protocol;
1337 description "Identity for the IS-IS routing protocol.";
1338 }
1340 identity isis-adjacency-change {
1341 description "Identity for the IS-IS routing protocol
1342 adjacency state.";
1343 }
1344 identity clear-isis-database {
1345 description "Identity for the IS-IS routing protocol
1346 database reset action.";
1347 }
1349 identity clear-isis-adjacency {
1350 description "Identity for the IS-IS routing protocol
1351 adjacency reset action.";
1352 }
1354 identity lsp-log-reason {
1355 description "Base identity for an LSP change
1356 log reason.";
1357 }
1359 identity refresh {
1360 base lsp-log-reason;
1361 description
1362 "Identity used when the LSP log reason is
1363 a refresh LSP received.";
1364 }
1366 identity content-change {
1367 base lsp-log-reason;
1368 description
1369 "Identity used when the LSP log reason is
1370 a change in the content of the LSP.";
1371 }
1373 /* Feature definitions */
1375 feature ietf-spf-delay {
1376 description
1377 "Support of IETF SPF delay algorithm.";
1378 reference "RFC XXXX - SPF Back-off algorithm for link
1379 state IGPs";
1380 }
1381 feature bfd {
1382 description
1383 "Support for BFD detection of IS-IS neighbor reachability.";
1384 reference "RFC 5880 - Bidirectional Forwarding Detection (BFD)
1385 RFC 5881 - Bidirectional Forwarding Detection
1386 (BFD) for IPv4 and IPv6 (Single Hop)";
1387 }
1388 feature key-chain {
1389 description
1390 "Support of keychain for authentication.";
1392 }
1393 feature node-flag {
1394 description
1395 "Support of node-flag advertisement
1396 as prefix attribute";
1397 reference "RFC7794 - IS-IS Prefix Attributes for
1398 Extended IP and IPv6 Reachability";
1399 }
1400 feature node-tag {
1401 description
1402 "Support of node tag.";
1403 reference "RFC7917 - Advertising Node Administrative Tags
1404 in IS-IS";
1405 }
1406 feature ldp-igp-sync {
1407 description
1408 "Support of synchronization between IS-IS and LDP.";
1409 reference "RFC5443 - LDP IGP Synchronization";
1410 }
1411 feature fast-reroute {
1412 description
1413 "Support of IP Fast Reroute.";
1414 }
1415 feature nsr {
1416 description
1417 "Support of
1418 Non Stop Routing.";
1419 }
1420 feature lfa {
1421 description
1422 "Support of Loop Free Alternates.";
1423 reference "RFC5286 - Basic Specification of IP Fast-Reroute:
1424 Loop-free Alternates";
1425 }
1426 feature remote-lfa {
1427 description
1428 "Support of remote Loop Free Alternates.";
1429 reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute";
1430 }
1432 feature overload-max-metric {
1433 description
1434 "Support of overload by setting
1435 all links to max metric.";
1436 }
1437 feature prefix-tag {
1438 description
1439 "Add 32bit tag to prefixes";
1441 reference "RFC5130 - A Policy Control Mechanism in
1442 IS-IS Using Administrative Tags";
1443 }
1444 feature prefix-tag64 {
1445 description
1446 "Add 64bit tag to prefixes";
1447 reference "RFC5130 - A Policy Control Mechanism in
1448 IS-IS Using Administrative Tags";
1449 }
1450 feature auto-cost {
1451 description
1452 "Use an automated assignment of metrics.";
1453 }
1454 feature ipv4-router-id {
1455 description
1456 "Support of IPv4 router ID configuration under IS-IS.";
1457 }
1459 feature ipv6-router-id {
1460 description
1461 "Support of IPv6 router ID configuration under IS-IS.";
1462 }
1464 feature multi-topology {
1465 description
1466 "Multitopology routing support.";
1467 reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS";
1468 }
1469 feature nlpid-control {
1470 description
1471 "This feature controls the advertisement
1472 of support NLPID within IS-IS configuration.";
1473 }
1474 feature graceful-restart {
1475 description
1476 "Graceful restart support.";
1477 reference "RFC5306 - Restart Signaling in IS-IS";
1478 }
1480 feature lsp-refresh {
1481 description
1482 "Configuration of LSP refresh interval.";
1483 }
1485 feature maximum-area-addresses {
1486 description
1487 "Support of maximum-area-addresses config.";
1488 }
1489 feature admin-control {
1490 description
1491 "Control administrative state of IS-IS.";
1492 }
1494 /* Type definitions */
1496 typedef instance-state-ref {
1497 type leafref {
1498 path "/rt:routing-state/"
1499 +"rt:control-plane-protocols/rt:control-plane-protocol/"
1500 +"rt:name";
1501 }
1502 description
1503 "This type is used for leaves that reference state data of
1504 an IS-IS protocol instance.";
1505 }
1507 typedef circuit-id {
1508 type uint8;
1509 description
1510 "This type defines the circuit ID
1511 associated with an interface.";
1512 }
1514 typedef extended-circuit-id {
1515 type uint32;
1516 description
1517 "This type defines the extended circuit ID
1518 associated with an interface.";
1519 }
1521 typedef interface-type {
1522 type enumeration {
1523 enum broadcast {
1524 description
1525 "Broadcast interface type.";
1526 }
1527 enum point-to-point {
1528 description
1529 "Point to point interface type.";
1530 }
1531 }
1532 description
1533 "This type defines the type of adjacency
1534 to be established on the interface.
1535 This is affecting the type of hello
1536 message that would be used.";
1538 }
1540 typedef level {
1541 type enumeration {
1542 enum "level-1" {
1543 description
1544 "This enum describes L1 only capability.";
1545 }
1546 enum "level-2" {
1547 description
1548 "This enum describes L2 only capability.";
1549 }
1550 enum "level-all" {
1551 description
1552 "This enum describes both levels capability.";
1553 }
1554 }
1555 default "level-all";
1556 description
1557 "This type defines IS-IS level of an object.";
1559 }
1561 typedef adj-state-type {
1562 type enumeration {
1563 enum "up" {
1564 description
1565 "This state describes that
1566 adjacency is established.";
1567 }
1568 enum "down" {
1569 description
1570 "This state describes that
1571 adjacency is NOT established.";
1572 }
1573 enum "init" {
1574 description
1575 "This state describes that
1576 adjacency is establishing.";
1577 }
1578 enum "failed" {
1579 description
1580 "This state describes that
1581 adjacency is failed.";
1582 }
1583 }
1584 description
1585 "This type defines states of an adjacency";
1586 }
1588 typedef if-state-type {
1589 type enumeration {
1590 enum "up" {
1591 description
1592 "Up state.";
1594 }
1595 enum "down" {
1596 description
1597 "Down state";
1598 }
1599 }
1600 description
1601 "This type defines states of an interface";
1602 }
1604 typedef level-number {
1605 type uint8 {
1606 range "1 .. 2";
1607 }
1608 description
1609 "This type defines a current IS-IS level.";
1610 }
1612 typedef lsp-id {
1613 type string {
1614 pattern
1615 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
1616 +'{4}\.[0-9][0-9]-[0-9][0-9]';
1617 }
1618 description
1619 "This type defines IS-IS LSP ID using pattern,
1620 system id looks like : 0143.0438.AeF0.02-01";
1621 }
1623 typedef area-address {
1624 type string {
1625 pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}';
1626 }
1627 description
1628 "This type defines the area address format.";
1629 }
1631 typedef snpa {
1632 type string {
1633 length "0 .. 20";
1634 }
1635 description
1636 "This type defines Subnetwork Point
1637 of Attachement format.";
1638 }
1640 typedef system-id {
1641 type string {
1642 pattern
1643 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}';
1644 }
1645 description
1646 "This type defines IS-IS system id using pattern,
1647 system id looks like : 0143.0438.AeF0";
1648 }
1650 typedef wide-metric {
1651 type uint32 {
1652 range "0 .. 16777215";
1653 }
1654 description
1655 "This type defines wide style format
1656 of IS-IS metric.";
1657 }
1659 typedef std-metric {
1660 type uint8 {
1661 range "0 .. 63";
1662 }
1663 description
1664 "This type defines old style format
1665 of IS-IS metric.";
1666 }
1668 typedef mesh-group-state {
1669 type enumeration {
1670 enum "meshinactive" {
1671 description
1672 "Interface is not part of a mesh group.";
1673 }
1674 enum "meshset" {
1675 description
1676 "Interface is part of a mesh group.";
1677 }
1678 enum "meshblocked" {
1679 description
1680 "LSPs must not be flooded over that interface.";
1681 }
1682 }
1683 description
1684 "This type describes meshgroup state of an interface";
1685 }
1687 /* Grouping definitions for configuration and ops state */
1689 grouping adjacency-state {
1690 container adjacencies {
1691 config false;
1692 list adjacency {
1693 leaf neighbor-systype {
1694 type level;
1695 description
1696 "Type of neighboring system";
1697 }
1698 leaf neighbor-sysid {
1699 type system-id;
1700 description
1701 "The system-id of the neighbor";
1702 }
1703 leaf neighbor-extended-circuit-id {
1704 type extended-circuit-id;
1705 description
1706 "Circuit ID of the neighbor";
1707 }
1708 leaf neighbor-snpa {
1709 type snpa;
1710 description
1711 "SNPA of the neighbor";
1712 }
1713 leaf usage {
1714 type level;
1715 description
1716 "Define the level(s) activated on the adjacency.
1717 On a p2p link this might be level 1 and 2,
1718 but on a LAN, the usage will be level 1
1719 between peers at L1 or level 2 between
1720 peers at L2.";
1721 }
1722 leaf hold-timer {
1723 type rt-types:timer-value-seconds16;
1724 units seconds;
1725 description
1726 "The holding time in seconds for this
1727 adjacency. This value is based on
1728 received hello PDUs and the elapsed
1729 time since receipt.";
1730 }
1731 leaf neighbor-priority {
1732 type uint8 {
1733 range "0 .. 127";
1734 }
1735 description
1736 "Priority of the neighboring IS for becoming
1737 the DIS.";
1738 }
1739 leaf lastuptime {
1740 type yang:timestamp;
1741 description
1742 "When the adjacency most recently entered
1743 state 'up', measured in hundredths of a
1744 second since the last reinitialization of
1745 the network management subsystem.
1746 The value is 0 if the adjacency has never
1747 been in state 'up'.";
1748 }
1749 leaf state {
1750 type adj-state-type;
1751 description
1752 "This leaf describes the state of the
1753 interface.";
1754 }
1756 description
1757 "List of operational adjacencies.";
1758 }
1759 description
1760 "This container lists the adjacencies of
1761 the local node.";
1762 }
1763 description
1764 "Adjacency state";
1765 }
1767 grouping fast-reroute-global-state {
1768 container protected-routes {
1769 config false;
1770 list af-stats {
1771 key "af prefix alternate";
1773 leaf af {
1774 type iana-rt-types:address-family;
1775 description
1776 "Address-family";
1777 }
1778 leaf prefix {
1779 type string;
1780 description
1781 "Protected prefix.";
1782 }
1783 leaf alternate {
1784 type string;
1785 description
1786 "Alternate nexthop for the prefix.";
1787 }
1788 leaf alternate-type {
1789 type enumeration {
1790 enum equalcost {
1791 description
1792 "ECMP alternate.";
1793 }
1794 enum lfa {
1795 description
1796 "LFA alternate.";
1797 }
1798 enum remote-lfa {
1799 description
1800 "Remote LFA alternate.";
1801 }
1802 enum tunnel {
1803 description
1804 "Tunnel based alternate
1805 (like RSVP-TE or GRE).";
1806 }
1807 enum ti-lfa {
1808 description
1809 "TI LFA alternate.";
1810 }
1811 enum mrt {
1812 description
1813 "MRT alternate.";
1814 }
1815 enum other {
1816 description
1817 "Unknown alternate type.";
1818 }
1819 }
1820 description
1821 "Type of alternate.";
1823 }
1824 leaf best {
1825 type boolean;
1826 description
1827 "describes if the alternate is the best one.";
1828 }
1829 leaf non-best-reason {
1830 type string;
1831 description
1832 "Information field to describe why the alternate
1833 is not best.";
1834 }
1835 leaf protection-available {
1836 type bits {
1837 bit nodeprotect {
1838 position 0;
1839 description
1840 "Node protection available.";
1841 }
1842 bit linkprotect {
1843 position 1;
1844 description
1845 "Link protection available.";
1846 }
1847 bit srlgprotect {
1848 position 2;
1849 description
1850 "SRLG protection available.";
1851 }
1852 bit downstreamprotect {
1853 position 3;
1854 description
1855 "Downstream protection available.";
1856 }
1857 bit other {
1858 position 4;
1859 description
1860 "Other protection available.";
1861 }
1862 }
1863 description
1864 "Describes protection provided by the alternate.";
1865 }
1866 leaf alternate-metric1 {
1867 type uint32;
1868 description
1869 "Metric from PLR to destination
1870 through the alternate path.";
1872 }
1873 leaf alternate-metric2 {
1874 type uint32;
1875 description
1876 "Metric from PLR to the alternate node";
1877 }
1878 leaf alternate-metric3 {
1879 type uint32;
1880 description
1881 "Metric from alternate node to the destination";
1882 }
1883 description
1884 "Per AF statistics.";
1885 }
1886 description
1887 "List of prefixes that are protected.";
1888 }
1890 container nonprotected-routes {
1891 config false;
1892 list af-stats {
1893 key "af prefix";
1895 leaf af {
1896 type iana-rt-types:address-family;
1898 description
1899 "Address-family";
1900 }
1901 leaf prefix {
1902 type string;
1903 description
1904 "Protected prefix.";
1905 }
1906 description
1907 "Per AF statistics.";
1908 }
1909 description
1910 "List of prefixes that are not protected.";
1911 }
1913 list protection-statistics {
1914 key frr-protection-method;
1915 config false;
1916 leaf frr-protection-method {
1917 type string;
1918 description
1919 "Protection method used.";
1921 }
1922 list af-stats {
1923 key af;
1925 leaf af {
1926 type iana-rt-types:address-family;
1928 description
1929 "Address-family";
1930 }
1931 leaf total-routes {
1932 type uint32;
1933 description
1934 "Total prefixes.";
1935 }
1936 leaf unprotected-routes {
1937 type uint32;
1938 description
1939 "Total of prefixes who are
1940 not protected.";
1941 }
1942 leaf protected-routes {
1943 type uint32;
1944 description
1945 "Total of prefixes who are
1946 protected.";
1947 }
1948 leaf linkprotected-routes {
1949 type uint32;
1950 description
1951 "Total of prefixes who are
1952 link protected.";
1953 }
1954 leaf nodeprotected-routes {
1955 type uint32;
1956 description
1957 "Total of prefixes who are
1958 node protected.";
1959 }
1960 description
1961 "Per AF statistics.";
1962 }
1964 description
1965 "Global protection statistics.";
1966 }
1967 description
1968 "IPFRR states.";
1970 }
1972 grouping notification-instance-hdr {
1973 description
1974 "This group describes common instance specific
1975 data for notifications.";
1976 leaf routing-instance {
1977 type string;
1978 description
1979 "Describes the name of the routing-instance instance.";
1980 }
1981 leaf routing-protocol-name {
1982 type string;
1983 description
1984 "Describes the name of the IS-IS instance.";
1985 }
1986 leaf isis-level {
1987 type level;
1988 description
1989 "Describes the IS-IS level of the instance.";
1990 }
1991 }
1993 grouping notification-interface-hdr {
1994 description
1995 "This group describes common interface specific
1996 data for notifications.";
1997 leaf interface-name {
1998 type string;
1999 description
2000 "Describes the name of the IS-IS interface.";
2001 }
2002 leaf interface-level {
2003 type level;
2004 description
2005 "Describes the IS-IS level of the interface.";
2006 }
2007 leaf extended-circuit-id {
2008 type extended-circuit-id;
2009 description
2010 "Describes the extended circuit-id of the interface.";
2011 }
2012 }
2014 grouping route-content {
2015 description
2016 "This group add isis-specific route properties.";
2017 leaf metric {
2018 type uint32;
2019 description
2020 "This leaf describes IS-IS metric of a route.";
2021 }
2022 leaf-list tag {
2023 type uint64;
2024 description
2025 "This leaf describes list of tags associated
2026 with the route. The leaf describes both
2027 32bits and 64bits tags.";
2028 }
2029 leaf route-type {
2030 type enumeration {
2031 enum l2-up-internal {
2032 description "Level 2 internal route
2033 and not leaked to a lower level";
2034 }
2035 enum l1-up-internal {
2036 description "Level 1 internal route
2037 and not leaked to a lower level";
2038 }
2039 enum l2-up-external {
2040 description "Level 2 external route
2041 and not leaked to a lower level";
2042 }
2043 enum l1-up-external {
2044 description "Level 1 external route
2045 and not leaked to a lower level";
2046 }
2047 enum l2-down-internal {
2048 description "Level 2 internal route
2049 and leaked to a lower level";
2050 }
2051 enum l1-down-internal {
2052 description "Level 1 internal route
2053 and leaked to a lower level";
2054 }
2055 enum l2-down-external {
2056 description "Level 2 external route
2057 and leaked to a lower level";
2058 }
2059 enum l1-down-external {
2060 description "Level 1 external route
2061 and leaked to a lower level";
2062 }
2063 }
2064 description
2065 "This leaf describes the type of IS-IS route.";
2067 }
2068 }
2070 grouping admin-control {
2071 leaf enable {
2072 if-feature admin-control;
2073 type boolean;
2074 default true;
2075 description
2076 "Control the administrative
2077 state.";
2078 }
2079 description
2080 "Grouping for admin control.";
2081 }
2083 grouping fast-reroute-global-cfg {
2084 description
2085 "This group defines global
2086 configuration of IPFRR.";
2087 container lfa {
2088 if-feature lfa;
2089 description
2090 "This container may be
2091 augmented with global parameters
2092 for LFA.
2093 Creating the container has no effect on
2094 LFA activation.";
2095 }
2096 }
2098 grouping fast-reroute-if-cfg {
2099 description
2100 "This group defines interface
2101 configuration of IPFRR.";
2102 container lfa {
2103 if-feature lfa;
2104 uses lfa-if-cfg;
2105 container level-1 {
2106 uses lfa-if-cfg;
2107 description
2108 "LFA level 1 config";
2109 }
2110 container level-2 {
2111 uses lfa-if-cfg;
2112 description
2113 "LFA level 2 config";
2114 }
2115 description
2116 "LFA config";
2117 }
2118 }
2120 grouping ietf-spf-delay-cfg {
2121 leaf initial-delay {
2122 type rt-types:timer-value-milliseconds;
2123 units msec;
2124 description
2125 "Delay used while in QUIET state.";
2126 }
2127 leaf short-delay {
2128 type rt-types:timer-value-milliseconds;
2129 units msec;
2130 description
2131 "Delay used while in SHORT_WAIT state.";
2132 }
2133 leaf long-delay {
2134 type rt-types:timer-value-milliseconds;
2135 units msec;
2136 description
2137 "Delay used while in LONG_WAIT state.";
2138 }
2140 leaf hold-down {
2141 type rt-types:timer-value-milliseconds;
2142 units msec;
2143 description
2144 "Timer used to consider an IGP stability period.";
2145 }
2146 leaf time-to-learn {
2147 type rt-types:timer-value-milliseconds;
2148 units msec;
2149 description
2150 "Duration used to learn all the IGP events
2151 related to a single component failure.";
2152 }
2154 description
2155 "Grouping for IETF SPF delay configuration.";
2156 }
2158 grouping ietf-spf-delay-state {
2159 leaf current-state {
2160 type enumeration {
2161 enum "quiet" {
2162 description "QUIET state";
2164 }
2165 enum "short-wait" {
2166 description "SHORT_WAIT state";
2167 }
2168 enum "long-wait" {
2169 description "LONG_WAIT state";
2170 }
2171 }
2172 config false;
2173 description
2174 "Current SPF backoff algorithm state.";
2175 }
2176 leaf remaining-time-to-learn {
2177 type rt-types:timer-value-milliseconds;
2178 units "msec";
2179 config false;
2180 description
2181 "Remaining time until time-to-learn timer fires.";
2182 }
2183 leaf remaining-hold-down {
2184 type rt-types:timer-value-milliseconds;
2185 units "msec";
2186 config false;
2187 description
2188 "Remaining time until hold-down timer fires.";
2189 }
2190 leaf last-event-received {
2191 type yang:timestamp;
2192 config false;
2193 description
2194 "Time of last IGP event received";
2195 }
2196 leaf next-spf-time {
2197 type yang:timestamp;
2198 config false;
2199 description
2200 "Time when next SPF has been scheduled.";
2201 }
2202 leaf last-spf-time {
2203 type yang:timestamp;
2204 config false;
2205 description
2206 "Time of last SPF computation.";
2207 }
2208 description
2209 "Grouping for IETF SPF delay operational states.";
2210 }
2211 grouping local-rib {
2212 description "Local-rib grouping.";
2213 container local-rib {
2214 config false;
2215 description "Local-rib.";
2216 list route {
2217 key "prefix";
2218 description "Routes";
2219 leaf prefix {
2220 type inet:ip-prefix;
2221 description "Destination prefix.";
2222 }
2223 container next-hops {
2224 description "All next hops for the route.";
2225 list next-hop {
2226 key "next-hop";
2227 description "List of next hop for the route";
2228 leaf outgoing-interface {
2229 type if:interface-ref;
2230 description
2231 "Name of the outgoing interface.";
2232 }
2233 leaf next-hop {
2234 type inet:ip-address;
2235 description "Nexthop address.";
2236 }
2237 }
2238 }
2239 leaf metric {
2240 type uint32;
2241 description "Metric for this route.";
2242 }
2243 leaf level {
2244 type level-number;
2245 description "Level number for this route.";
2246 }
2247 leaf route-tag {
2248 type uint32;
2249 description "Route tag for this route.";
2250 }
2251 }
2252 }
2253 }
2255 grouping isis-node-tag-cfg {
2256 description
2257 "IS-IS node tag config.";
2258 container node-tags {
2259 if-feature node-tag;
2260 list node-tag {
2261 key tag;
2262 leaf tag {
2263 type uint32;
2264 description
2265 "Node tag value.";
2266 }
2267 description
2268 "List of tags.";
2269 }
2270 description
2271 "Container for node tags.";
2272 }
2273 }
2275 grouping authentication-global-cfg {
2276 choice authentication-type {
2277 case key-chain {
2278 if-feature key-chain;
2279 leaf key-chain {
2280 type key-chain:key-chain-ref;
2281 description
2282 "Reference to a key-chain.";
2283 }
2284 }
2285 case password {
2286 leaf key {
2287 type string;
2288 description
2289 "This leaf describes the
2290 authentication key.";
2291 }
2292 leaf crypto-algorithm {
2293 type identityref {
2294 base key-chain:crypto-algorithm;
2295 }
2296 description
2297 "Cryptographic algorithm associated with key.";
2298 }
2299 }
2300 description
2301 "Choice of authentication.";
2302 }
2303 description
2304 "Grouping for global auth config.";
2305 }
2306 grouping metric-type-global-cfg {
2307 leaf value {
2308 type enumeration {
2309 enum wide-only {
2310 description
2311 "Advertise new metric style only
2312 (RFC5305)";
2313 }
2314 enum old-only {
2315 description
2316 "Advertise old metric style only
2317 (RFC1195)";
2318 }
2319 enum both {
2320 description "Advertise both metric
2321 styles";
2322 }
2323 }
2324 default wide-only;
2325 description
2326 "This leaf describes the type of metric
2327 to be generated.
2328 Wide-only means only new metric style
2329 is generated,
2330 old-only means that only old style metric
2331 is generated,
2332 and both means that both are advertised.
2333 This leaf is only affecting IPv4 metrics.";
2334 }
2335 description
2336 "Grouping for global metric style config.";
2337 }
2339 grouping default-metric-global-cfg {
2340 leaf value {
2341 type wide-metric;
2342 default "10";
2343 description
2344 "Value of the metric";
2345 }
2346 description
2347 "Grouping for global default metric config.";
2348 }
2350 grouping overload-global-cfg {
2351 leaf status {
2352 type boolean;
2353 default false;
2354 description
2355 "This leaf defines the overload status.";
2356 }
2357 description
2358 "Grouping for overload bit config.";
2359 }
2361 grouping overload-max-metric-global-cfg {
2362 leaf timeout {
2363 type rt-types:timer-value-seconds16;
2364 units "seconds";
2365 description
2366 "This leaf defines the timeout in seconds
2367 of the overload condition.";
2368 }
2369 description
2370 "Grouping for overload-max-metric config.";
2371 }
2373 grouping route-preference-global-cfg {
2374 choice granularity {
2375 case detail {
2376 leaf internal {
2377 type uint8;
2378 description
2379 "This leaf defines the protocol
2380 preference for internal routes.";
2381 }
2382 leaf external {
2383 type uint8;
2384 description
2385 "This leaf defines the protocol
2386 preference for external routes.";
2387 }
2388 }
2389 case coarse {
2390 leaf default {
2391 type uint8;
2392 description
2393 "This leaf defines the protocol
2394 preference for all IS-IS routes.";
2395 }
2396 }
2397 description
2398 "Choice for implementation of route preference.";
2399 }
2400 description
2401 "This grouping defines how route preference is configured.";
2402 }
2404 grouping hello-authentication-cfg {
2405 choice authentication-type {
2406 case key-chain {
2407 if-feature key-chain;
2408 leaf key-chain {
2409 type key-chain:key-chain-ref;
2410 description
2411 "Reference to a key-chain.";
2412 }
2413 }
2414 case password {
2415 leaf key {
2416 type string;
2417 description
2418 "This leaf describes the
2419 authentication key.";
2420 }
2421 leaf crypto-algorithm {
2422 type identityref {
2423 base key-chain:crypto-algorithm;
2424 }
2425 description
2426 "Cryptographic algorithm associated with key.";
2427 }
2428 }
2429 description
2430 "Choice of authentication.";
2431 }
2432 description
2433 "Grouping for hello authentication.";
2434 }
2436 grouping hello-interval-cfg {
2437 leaf value {
2438 type rt-types:timer-value-seconds16;
2439 units "seconds";
2440 default 10;
2441 description
2442 "This leaf defines the interval of
2443 hello messages.";
2444 }
2446 description
2447 "Interval between
2448 hello messages.";
2450 }
2452 grouping hello-multiplier-cfg {
2453 leaf value {
2454 type uint16;
2455 default 3;
2456 description
2457 "This leaf defines the number of
2458 hello failed to be received before
2459 declaring the adjacency down.";
2460 }
2461 description
2462 "This grouping defines the number of
2463 hello failed to be received before
2464 declaring the adjacency down.";
2465 }
2467 grouping priority-cfg {
2468 leaf value {
2469 type uint8 {
2470 range "0 .. 127";
2471 }
2472 default 64;
2473 description
2474 "This leaf describes the priority of
2475 the interface
2476 for DIS election.";
2477 }
2479 description
2480 "This grouping leaf describes the
2481 priority of
2482 the interface
2483 for DIS election.";
2484 }
2486 grouping metric-cfg {
2487 leaf value {
2488 type wide-metric;
2489 default "10";
2490 description
2491 "Metric value.";
2492 }
2493 description
2494 "Grouping for interface metric";
2495 }
2497 grouping lfa-if-cfg {
2498 leaf candidate-disabled {
2499 type boolean;
2500 default false;
2501 description
2502 "Prevent the interface to be used as backup.";
2503 }
2504 leaf enable {
2505 type boolean;
2506 default false;
2507 description
2508 "Activates LFA.
2509 This model assumes activation
2510 of per-prefix LFA.";
2511 }
2513 container remote-lfa {
2514 if-feature remote-lfa;
2515 leaf enable {
2516 type boolean;
2517 default false;
2518 description
2519 "Activates rLFA.";
2520 }
2521 description
2522 "remote LFA configuration.";
2523 }
2524 description
2525 "Grouping for LFA
2526 interface configuration";
2527 }
2529 grouping isis-global-cfg {
2530 description
2531 "Defines the IS-IS global configuration.";
2533 uses admin-control;
2535 leaf level-type {
2536 type level;
2537 default "level-all";
2538 description
2539 "This leaf describes the type of IS-IS node.
2540 A node can be level-1-only, level-2-only
2541 or level-1-2.
2542 ";
2543 }
2545 leaf system-id {
2546 type system-id;
2547 description
2548 "This leaf defines the system-id of the node.";
2549 }
2551 leaf maximum-area-addresses {
2552 if-feature maximum-area-addresses;
2553 type uint8;
2554 default 3;
2555 description
2556 "Defines the maximum areas supported.";
2557 }
2559 leaf-list area-address {
2560 type area-address;
2561 description
2562 "List of areas supported by the
2563 protocol instance.";
2564 }
2566 container mpls {
2567 leaf ipv4-router-id {
2568 if-feature ipv4-router-id;
2569 type inet:ipv4-address;
2570 description
2571 "Router ID value that would be used in
2572 TLV 134.";
2573 }
2574 leaf ipv6-router-id {
2575 if-feature ipv6-router-id;
2576 type inet:ipv6-address;
2577 description
2578 "Router ID value that would be used in
2579 TLV 140.";
2580 }
2581 container ldp {
2582 container igp-sync {
2583 if-feature ldp-igp-sync;
2584 description
2585 "This container may be augmented
2586 with global parameters for igp-ldp-sync.";
2587 }
2588 description
2589 "LDP related configuration.";
2590 }
2591 description
2592 "This container handles mpls config.";
2593 }
2594 container auto-cost {
2595 if-feature auto-cost;
2596 leaf reference-bandwidth {
2597 type uint32;
2598 units "bps";
2599 description
2600 "This leaf defines the bandwidth for calculating
2601 metric.";
2602 }
2603 leaf enable {
2604 type boolean;
2605 default false;
2606 description
2607 "Enable/disable auto-cost.";
2608 }
2609 description
2610 "This container defines the auto-cost configuration.";
2611 }
2612 leaf lsp-mtu {
2613 type uint16;
2614 units "bytes";
2615 default 1492;
2616 description
2617 "This leaf describes the maximum size of a
2618 LSP PDU in bytes.";
2619 }
2620 leaf lsp-lifetime {
2621 type uint16 {
2622 range "1..65535";
2623 }
2624 units "seconds";
2625 description
2626 "This leaf describes the lifetime of the router
2627 LSP in seconds.";
2628 }
2629 leaf lsp-refresh {
2630 if-feature lsp-refresh;
2631 type rt-types:timer-value-seconds16;
2632 units "seconds";
2633 description
2634 "This leaf describes the refresh interval of the
2635 router LSP in seconds.";
2636 }
2637 container graceful-restart {
2638 if-feature graceful-restart;
2639 leaf enable {
2640 type boolean;
2641 default false;
2642 description
2643 "Control enabling the feature.";
2644 }
2645 leaf restart-interval {
2646 type rt-types:timer-value-seconds16;
2647 units "seconds";
2648 description
2649 "Interval in seconds to attempt graceful restart prior
2650 to failing";
2651 }
2652 leaf helper-enable {
2653 type boolean;
2654 default true;
2655 description
2656 "If enabled, the local router can act as restart helper.";
2657 }
2658 description
2659 "This container activates graceful restart.";
2660 }
2662 container nsr {
2663 if-feature nsr;
2664 description
2665 "Non-Stop Routing (NSR) config state.";
2666 leaf enable {
2667 type boolean;
2668 default false;
2669 description
2670 "Enable/Disable NSR.";
2671 }
2672 }
2674 uses isis-node-tag-cfg;
2676 container authentication {
2677 uses authentication-global-cfg;
2679 container level-1 {
2680 uses authentication-global-cfg;
2681 description "level-1 specific cfg";
2682 }
2683 container level-2 {
2684 uses authentication-global-cfg;
2685 description "level-2 specific cfg";
2686 }
2687 description "authentication global cfg.
2688 It covers both LSPs and SNPs.";
2689 }
2690 container metric-type {
2691 uses metric-type-global-cfg;
2692 container level-1 {
2693 uses metric-type-global-cfg;
2694 description "level-1 specific cfg";
2695 }
2696 container level-2 {
2697 uses metric-type-global-cfg;
2698 description "level-2 specific cfg";
2699 }
2700 description "Metric style global cfg.";
2701 }
2703 container default-metric {
2704 uses default-metric-global-cfg;
2705 container level-1 {
2706 uses default-metric-global-cfg;
2707 description "level-1 specific cfg";
2708 }
2709 container level-2 {
2710 uses default-metric-global-cfg;
2711 description "level-2 specific cfg";
2712 }
2713 description "Default metric global cfg.";
2714 }
2716 container afs {
2717 if-feature nlpid-control;
2718 list af {
2719 key af;
2720 leaf af {
2721 type iana-rt-types:address-family;
2723 description
2724 "Address-family";
2725 }
2726 leaf enable {
2727 type boolean;
2728 description
2729 "Describes the activation state of the
2730 AF.";
2731 }
2732 description
2733 "This list permits activation
2734 of new address families.";
2735 }
2736 description
2737 "Container for address-families";
2739 }
2741 container preference {
2742 uses route-preference-global-cfg;
2743 description
2744 "This container defines the protocol preference.";
2745 }
2747 container overload {
2748 uses overload-global-cfg;
2749 description
2750 "This container describes if the router is
2751 set to overload state.";
2752 }
2754 container overload-max-metric {
2755 if-feature overload-max-metric;
2756 uses overload-max-metric-global-cfg;
2757 description
2758 "This container describes if the router is
2759 set to overload state using max-metric
2760 advertisement.";
2761 }
2762 }
2764 grouping isis-global-topologies-cfg {
2765 description
2766 "Per topology config.";
2767 container default-metric {
2768 uses default-metric-global-cfg;
2769 container level-1 {
2770 uses default-metric-global-cfg;
2771 description "level-1 specific cfg";
2772 }
2773 container level-2 {
2774 uses default-metric-global-cfg;
2775 description "level-2 specific cfg";
2776 }
2777 description "Default metric per
2778 topology cfg.";
2779 }
2780 uses isis-node-tag-cfg;
2781 }
2783 grouping isis-if-cfg {
2784 description
2785 "Grouping for interface cfg.";
2787 leaf level-type {
2788 type level;
2789 default "level-all";
2790 description
2791 "This leaf defines the associated IS-IS
2792 level of the interface.";
2793 }
2794 leaf lsp-pacing-interval {
2795 type rt-types:timer-value-milliseconds;
2796 units "milliseconds";
2797 default 33;
2798 description
2799 "This leaf defines the interval between
2800 LSP transmissions in milli-seconds";
2801 }
2802 leaf lsp-retransmit-interval {
2803 type rt-types:timer-value-seconds16;
2804 units "seconds";
2805 description
2806 "This leaf defines the interval between
2807 retransmission of LSP";
2808 }
2809 leaf passive {
2810 type boolean;
2811 default "false";
2812 description
2813 "This leaf defines if interface is in
2814 passive mode (IS-IS not running,
2815 but network is advertised).";
2816 }
2817 leaf csnp-interval {
2818 type rt-types:timer-value-seconds16;
2819 units "seconds";
2820 default 10;
2821 description
2822 "This leaf defines the interval of CSNP
2823 messages.";
2824 }
2825 container hello-padding {
2826 leaf enable {
2827 type boolean;
2828 default "true";
2829 description
2830 "Status of Hello-padding activation.
2831 By default, the implementation shall
2832 pad HELLOs.";
2833 }
2834 description
2835 "This container handles IS-IS hello padding
2836 configuration.";
2837 }
2838 leaf mesh-group-enable {
2839 type mesh-group-state;
2840 description
2841 "Describes the mesh group state of
2842 the interface.";
2843 }
2844 leaf mesh-group {
2845 when "../mesh-group-enable = 'meshset'" {
2846 description
2847 "Only valid when mesh-group-enable
2848 equals to meshset";
2849 }
2850 type uint8;
2851 description
2852 "Describes the mesh group ID of
2853 the interface.";
2854 }
2855 leaf interface-type {
2856 type interface-type;
2857 default "broadcast";
2858 description
2859 "This leaf defines the type of adjacency
2860 to be established on the interface.
2861 This is affecting the type of hello
2862 message that would be used.";
2863 }
2865 uses admin-control;
2867 leaf-list tag {
2868 if-feature prefix-tag;
2869 type uint32;
2870 description
2871 "This leaf defines list of tags associated
2872 with the interface.";
2873 }
2874 leaf-list tag64 {
2875 if-feature prefix-tag64;
2876 type uint64;
2877 description
2878 "This leaf defines list of 64bits tags
2879 associated with the interface.";
2880 }
2881 leaf node-flag {
2882 if-feature node-flag;
2883 type boolean;
2884 default false;
2885 description
2886 "Set prefix as a node
2887 representative prefix.";
2888 }
2889 container hello-authentication {
2890 uses hello-authentication-cfg;
2891 container level-1 {
2892 uses hello-authentication-cfg;
2893 description "level-1 specific cfg";
2894 }
2895 container level-2 {
2896 uses hello-authentication-cfg;
2897 description "level-2 specific cfg";
2898 }
2899 description "Authentication type
2900 to be used in hello messages.";
2901 }
2902 container hello-interval {
2903 uses hello-interval-cfg;
2904 container level-1 {
2905 uses hello-interval-cfg;
2906 description "level-1 specific cfg";
2907 }
2908 container level-2 {
2909 uses hello-interval-cfg;
2910 description "level-2 specific cfg";
2911 }
2912 description "Interval between
2913 hello messages.";
2914 }
2915 container hello-multiplier {
2916 uses hello-multiplier-cfg;
2917 container level-1 {
2918 uses hello-multiplier-cfg;
2919 description "level-1 specific cfg";
2920 }
2921 container level-2 {
2922 uses hello-multiplier-cfg;
2923 description "level-2 specific cfg";
2924 }
2925 description "Hello multiplier
2926 configuration.";
2927 }
2928 container priority {
2929 must '../interface-type = "broadcast"' {
2930 error-message
2931 "Priority only applies to broadcast
2932 interfaces.";
2933 description
2934 "Check for broadcast interface.";
2935 }
2936 uses priority-cfg;
2937 container level-1 {
2938 uses priority-cfg;
2939 description "level-1 specific cfg";
2940 }
2941 container level-2 {
2942 uses priority-cfg;
2943 description "level-2 specific cfg";
2944 }
2945 description "Priority for DIS election.";
2946 }
2947 container metric {
2948 uses metric-cfg;
2949 container level-1 {
2950 uses metric-cfg;
2951 description "level-1 specific cfg";
2952 }
2953 container level-2 {
2954 uses metric-cfg;
2955 description "level-2 specific cfg";
2956 }
2957 description "Metric configuration.";
2958 }
2959 container bfd {
2960 if-feature bfd;
2961 description "BFD Client Configuration.";
2962 uses bfd-types:client-cfg-parms;
2964 reference "draft-ietf-bfd-yang-xx.txt:
2965 YANG Data Model for Bidirectional Forwarding
2966 Detection (BFD)";
2967 }
2968 container afs {
2969 if-feature nlpid-control;
2970 list af {
2971 key af;
2972 leaf af {
2973 type iana-rt-types:address-family;
2975 description
2976 "Address-family";
2977 }
2978 description
2979 "List of AFs.";
2980 }
2981 description
2982 "Container for address-families";
2983 }
2984 container mpls {
2985 container ldp {
2986 leaf igp-sync {
2987 if-feature ldp-igp-sync;
2988 type boolean;
2989 default false;
2990 description
2991 "Enables IGP/LDP sync.";
2992 }
2993 description
2994 "LDP protocol related configurations.";
2995 }
2996 description
2997 "Container for MPLS specific configuration
2998 for IS-IS.";
2999 }
3000 }
3002 grouping isis-if-topologies-cfg {
3003 description
3004 "IS-IS interface topology cfg.";
3005 container metric {
3006 uses metric-cfg;
3007 container level-1 {
3008 uses metric-cfg;
3009 description "level-1 specific cfg";
3010 }
3011 container level-2 {
3012 uses metric-cfg;
3013 description "level-2 specific cfg";
3014 }
3015 description "Metric configuration.";
3016 }
3017 }
3019 grouping system-counters {
3020 container system-counters {
3021 config false;
3022 list level {
3023 key level;
3025 leaf level {
3026 type level-number;
3027 description
3028 "This leaf describes the IS-IS level.";
3029 }
3030 leaf corrupted-lsps {
3031 type uint32;
3032 description
3033 "Number of corrupted in-memory LSPs detected.
3034 LSPs received from the wire with a bad
3035 checksum are silently dropped and not counted.
3036 LSPs received from the wire with parse errors
3037 are counted by lsp-errors.";
3038 }
3039 leaf authentication-type-fails {
3040 type uint32;
3041 description
3042 "Number of authentication type mismatches.";
3043 }
3044 leaf authentication-fails {
3045 type uint32;
3046 description
3047 "Number of authentication key failures.";
3048 }
3049 leaf database-overload {
3050 type uint32;
3051 description
3052 "Number of times the database has become
3053 overloaded.";
3054 }
3055 leaf own-lsp-purge {
3056 type uint32;
3057 description
3058 "Number of times a zero-aged copy of the
3059 system's own LSP is received from some
3060 other node.";
3061 }
3062 leaf manual-address-drop-from-area {
3063 type uint32;
3064 description
3065 "Number of times a manual address
3066 has been dropped from the area.";
3067 }
3068 leaf max-sequence {
3069 type uint32;
3070 description
3071 "Number of times the system has attempted
3072 to exceed the maximum sequence number.";
3073 }
3074 leaf sequence-number-skipped {
3075 type uint32;
3076 description
3077 "Number of times a sequence number skip has
3078 occured.";
3079 }
3080 leaf id-len-mismatch {
3081 type uint32;
3082 description
3083 "Number of times a PDU is received with
3084 a different value for ID field length
3085 from that of the receiving system.";
3086 }
3087 leaf partition-changes {
3088 type uint32;
3089 description
3090 "Number of partition changes detected.";
3091 }
3092 leaf lsp-errors {
3093 type uint32;
3094 description
3095 "Number of LSPs with errors we have
3096 received.";
3097 }
3098 leaf spf-runs {
3099 type uint32;
3100 description
3101 "Number of times we ran SPF at this level.";
3102 }
3103 description
3104 "List of supported levels.";
3105 }
3106 description
3107 "The container defines a list of counters
3108 for the IS.";
3109 }
3110 description
3111 "Grouping for system counters.";
3112 }
3114 grouping event-counters {
3115 container event-counters {
3116 config false;
3117 leaf adjacency-changes {
3118 type uint32;
3119 description
3120 "The number of times an adjacency state
3121 change has occured on this interface.";
3122 }
3123 leaf adjacency-number {
3124 type uint32;
3125 description
3126 "The number of adjacencies on this
3127 interface.";
3128 }
3129 leaf init-fails {
3130 type uint32;
3131 description
3132 "The number of times initialization of
3133 this interface has failed. This counts
3134 events such as PPP NCP failures.
3135 Failures to form an adjacency are counted
3136 by adjacency-rejects.";
3137 }
3138 leaf adjacency-rejects {
3139 type uint32;
3140 description
3141 "The number of times an adjacency has been
3142 rejected on this interface.";
3143 }
3144 leaf id-len-mismatch {
3145 type uint32;
3146 description
3147 "The number of times an IS-IS PDU with an ID
3148 field length different from that for this
3149 system has been received on this interface.";
3150 }
3151 leaf max-area-addresses-mismatch {
3152 type uint32;
3153 description
3154 "The number of times an IS-IS PDU with
3155 according max area address field
3156 differs from that for
3157 this system has been received on this
3158 interface.";
3159 }
3160 leaf authentication-type-fails {
3161 type uint32;
3162 description
3163 "Number of authentication type mismatches.";
3164 }
3165 leaf authentication-fails {
3166 type uint32;
3167 description
3168 "Number of authentication key failures.";
3169 }
3170 leaf lan-dis-changes {
3171 type uint32;
3172 description
3173 "The number of times the DIS has changed
3174 on this interface at this level.
3175 If the interface type is point to point,
3176 the count is zero.";
3177 }
3178 description
3179 "Provides protocol event counters.";
3180 }
3181 description
3182 "Grouping for event counters";
3183 }
3185 grouping packet-counters {
3186 container packet-counters {
3187 config false;
3188 list level {
3189 key level;
3191 leaf level {
3192 type level-number;
3193 description
3194 "This leaf describes the IS-IS level.";
3195 }
3196 container iih {
3197 leaf in {
3198 type uint32;
3199 description
3200 "Received PDUs.";
3201 }
3202 leaf out {
3203 type uint32;
3204 description
3205 "Sent PDUs.";
3206 }
3207 description
3208 "The number of IIH PDUs received/sent.";
3209 }
3210 container ish {
3211 leaf in {
3212 type uint32;
3213 description
3214 "Received PDUs.";
3215 }
3216 leaf out {
3217 type uint32;
3218 description
3219 "Sent PDUs.";
3220 }
3221 description
3222 "The number of ISH PDUs received/sent.";
3223 }
3224 container esh {
3225 leaf in {
3226 type uint32;
3227 description
3228 "Received PDUs.";
3229 }
3230 leaf out {
3231 type uint32;
3232 description
3233 "Sent PDUs.";
3234 }
3235 description
3236 "The number of ESH PDUs received/sent.";
3237 }
3238 container lsp {
3239 leaf in {
3240 type uint32;
3241 description
3242 "Received PDUs.";
3243 }
3244 leaf out {
3245 type uint32;
3246 description
3247 "Sent PDUs.";
3248 }
3249 description
3250 "The number of LSP PDUs received/sent.";
3251 }
3252 container psnp {
3253 leaf in {
3254 type uint32;
3255 description
3256 "Received PDUs.";
3257 }
3258 leaf out {
3259 type uint32;
3260 description
3261 "Sent PDUs.";
3262 }
3263 description
3264 "The number of PSNP PDUs received/sent.";
3265 }
3266 container csnp {
3267 leaf in {
3268 type uint32;
3269 description
3270 "Received PDUs.";
3271 }
3272 leaf out {
3273 type uint32;
3274 description
3275 "Sent PDUs.";
3276 }
3277 description
3278 "The number of CSNP PDUs received/sent.";
3279 }
3280 container unknown {
3281 leaf in {
3282 type uint32;
3283 description
3284 "Received PDUs.";
3285 }
3286 leaf out {
3287 type uint32;
3288 description
3289 "Sent PDUs.";
3290 }
3291 description
3292 "The number of unknown PDUs received/sent.";
3293 }
3294 description
3295 "List of supported levels.";
3296 }
3297 description
3298 "Provides packet counters per level.";
3299 }
3300 description
3301 "Grouping for packet counters.";
3302 }
3304 grouping spf-log {
3305 container spf-log {
3306 config false;
3307 list event {
3308 key id;
3310 leaf id {
3311 type uint32;
3312 description
3313 "This leaf defines the event identifier.
3314 This is a purely internal value.";
3316 }
3317 leaf spf-type {
3318 type enumeration {
3319 enum full {
3320 description
3321 "Computation done is a Full SPF.";
3322 }
3323 enum route-only {
3324 description
3325 "Computation done is a
3326 reachability computation
3327 only.";
3328 }
3329 }
3330 description
3331 "This leaf describes the type of computation
3332 used.";
3333 }
3334 leaf level {
3335 type level-number;
3336 description
3337 "This leaf describes the level affected by the
3338 the computation.";
3339 }
3340 leaf schedule-timestamp {
3341 type yang:timestamp;
3342 description
3343 "This leaf describes the timestamp
3344 when the computation was scheduled.";
3345 }
3346 leaf start-timestamp {
3347 type yang:timestamp;
3348 description
3349 "This leaf describes the timestamp
3350 when the computation was started.";
3351 }
3352 leaf end-timestamp {
3353 type yang:timestamp;
3354 description
3355 "This leaf describes the timestamp
3356 when the computation was ended.";
3357 }
3358 list trigger-lsp {
3359 key "lsp";
3360 leaf lsp {
3361 type lsp-id;
3362 description
3363 "This leaf describes the LSPID
3364 of the LSP.";
3365 }
3366 leaf sequence {
3367 type uint32;
3368 description
3369 "This leaf describes the sequence
3370 number of the LSP.";
3371 }
3372 description
3373 "This leaf describes list of LSPs
3374 that triggered the computation.";
3375 }
3376 description
3377 "List of computation events.
3378 It is used as a wrapping buffer.";
3379 }
3381 description
3382 "This container lists the SPF computation events.";
3383 }
3384 description
3385 "Grouping for spf-log events.";
3386 }
3388 grouping lsp-log {
3389 container lsp-log {
3390 config false;
3391 list event {
3392 key id;
3394 leaf id {
3395 type uint32;
3396 description
3397 "This leaf defines the event identifier.
3398 This is a purely internal value.";
3399 }
3400 leaf level {
3401 type level-number;
3402 description
3403 "This leaf describes the level affected by the
3404 the computation.";
3405 }
3406 container lsp {
3407 leaf lsp {
3409 type lsp-id;
3410 description
3411 "This leaf describes the LSPID
3412 of the LSP.";
3413 }
3414 leaf sequence {
3415 type uint32;
3416 description
3417 "This leaf describes the sequence
3418 number of the LSP.";
3419 }
3420 description
3421 "This container describes the received LSP
3422 , in case of local LSP update the local
3423 LSP ID is referenced.";
3424 }
3426 leaf received-timestamp {
3427 type yang:timestamp;
3429 description
3430 "This leaf describes the timestamp
3431 when the LSP was received. In case of
3432 local LSP update, the timestamp refers
3433 to the local LSP update time.";
3434 }
3436 leaf change {
3437 type identityref {
3438 base lsp-log-reason;
3439 }
3440 description
3441 "This leaf describes the type of change
3442 in the LSP.";
3443 }
3445 description
3446 "List of LSP events.
3447 It is used as a wrapping buffer.";
3448 }
3450 description
3451 "This container lists the LSP reception events.
3452 Local LSP modification are also contained in the
3453 list.";
3454 }
3455 description
3456 "Grouping for LSP log.";
3457 }
3459 grouping hostname-db {
3460 container hostnames {
3461 config false;
3462 list hostname {
3463 key system-id;
3464 leaf system-id {
3465 type system-id;
3466 description
3467 "This leaf describes the system-id
3468 associated with the hostname.";
3469 }
3470 leaf hostname {
3471 type string;
3472 description
3473 "This leaf describes the hostname
3474 associated with the system ID.";
3475 }
3476 description
3477 "List of system-id/hostname associations";
3478 }
3479 description
3480 "This container describes the list
3481 of binding between system-id and
3482 hostnames.";
3483 }
3484 description
3485 "Grouping for hostname to systemid mapping database.";
3486 }
3488 /* Groupings for the LSDB description */
3490 grouping prefix-reachability-attributes {
3491 description
3492 "This group defines extended reachability attributes of an
3493 IPv4 or IPv6 prefix.";
3495 leaf external-prefix-flag {
3496 type boolean;
3497 description
3498 "External prefix flag.";
3499 }
3500 leaf readvertisement-flag {
3501 type boolean;
3502 description
3503 "Readvertisement flag.";
3504 }
3505 leaf node-flag {
3506 type boolean;
3507 description
3508 "Node flag.";
3509 }
3510 }
3512 grouping prefix-ipv4-source-router-id {
3513 description
3514 "This group defines the IPv4 source router ID of
3515 a prefix advertisement.";
3517 leaf ipv4-source-router-id {
3518 type inet:ipv4-address;
3519 description
3520 "IPv4 Source router ID address.";
3521 }
3522 }
3524 grouping prefix-ipv6-source-router-id {
3525 description
3526 "This group defines the IPv6 source router ID of
3527 a prefix advertisement.";
3529 leaf ipv6-source-router-id {
3530 type inet:ipv6-address;
3531 description
3532 "IPv6 Source router ID address.";
3533 }
3534 }
3536 grouping prefix-attributes-extension {
3537 description
3538 "Prefix extended attributes.";
3540 uses prefix-reachability-attributes;
3541 uses prefix-ipv4-source-router-id;
3542 uses prefix-ipv6-source-router-id;
3543 }
3545 grouping prefix-ipv4-std {
3546 description
3547 "This group defines attributes of an
3548 IPv4 standard prefix.";
3549 leaf up-down {
3550 type boolean;
3551 description
3552 "This leaf expresses the value of up/down bit.";
3553 }
3554 leaf i-e {
3555 type boolean;
3556 description
3557 "This leaf expresses the value of I/E bit.";
3558 }
3559 leaf ip-prefix {
3560 type inet:ipv4-address;
3561 description
3562 "This leaf describes the IPv4 prefix";
3563 }
3564 leaf prefix-len {
3565 type uint8;
3566 description
3567 "This leaf describes the IPv4 prefix len in bits";
3568 }
3569 leaf default-metric {
3570 type std-metric;
3571 description
3572 "This leaf describes the IS-IS default metric value";
3573 }
3574 container delay-metric {
3575 leaf metric {
3576 type std-metric;
3577 description
3578 "This leaf describes the IS-IS delay metric value";
3579 }
3580 leaf supported {
3581 type boolean;
3582 default "false";
3583 description
3584 "This leaf describes if the metric is supported.";
3585 }
3587 description
3588 "This container defines the IS-IS delay metric.";
3589 }
3590 container expense-metric {
3591 leaf metric {
3592 type std-metric;
3593 description
3594 "This leaf describes the IS-IS expense metric value";
3595 }
3596 leaf supported {
3597 type boolean;
3598 default "false";
3599 description
3600 "This leaf describes if the metric is supported.";
3601 }
3602 description
3603 "This container defines the IS-IS expense metric.";
3605 }
3606 container error-metric {
3607 leaf metric {
3608 type std-metric;
3609 description
3610 "This leaf describes the IS-IS error metric value";
3611 }
3612 leaf supported {
3613 type boolean;
3614 default "false";
3615 description
3616 "This leaf describes if the metric is supported.";
3617 }
3619 description
3620 "This container defines the IS-IS error metric.";
3621 }
3622 }
3624 grouping prefix-ipv4-extended {
3625 description
3626 "This group defines attributes of an
3627 IPv4 extended prefix.";
3628 leaf up-down {
3629 type boolean;
3630 description
3631 "This leaf expresses the value of up/down bit.";
3632 }
3633 leaf ip-prefix {
3634 type inet:ipv4-address;
3635 description
3636 "This leaf describes the IPv4 prefix";
3637 }
3638 leaf prefix-len {
3639 type uint8;
3640 description
3641 "This leaf describes the IPv4 prefix len in bits";
3642 }
3644 leaf metric {
3645 type wide-metric;
3646 description
3647 "This leaf describes the IS-IS metric value";
3648 }
3649 leaf-list tag {
3650 type uint32;
3651 description
3652 "This leaf describes a list of tags associated with
3653 the prefix.";
3654 }
3655 leaf-list tag64 {
3656 type uint64;
3657 description
3658 "This leaf describes a list of 64-bit tags associated with
3659 the prefix.";
3660 }
3661 uses prefix-attributes-extension;
3662 }
3664 grouping prefix-ipv6-extended {
3665 description
3666 "This group defines attributes of an
3667 IPv6 prefix.";
3668 leaf up-down {
3669 type boolean;
3670 description
3671 "This leaf expresses the value of up/down bit.";
3672 }
3673 leaf ip-prefix {
3674 type inet:ipv6-address;
3675 description
3676 "This leaf describes the IPv6 prefix";
3677 }
3678 leaf prefix-len {
3679 type uint8;
3680 description
3681 "This leaf describes the IPv4 prefix len in bits";
3682 }
3683 leaf metric {
3684 type wide-metric;
3685 description
3686 "This leaf describes the IS-IS metric value";
3687 }
3688 leaf-list tag {
3689 type uint32;
3690 description
3691 "This leaf describes a list of tags associated with
3692 the prefix.";
3693 }
3694 leaf-list tag64 {
3695 type uint64;
3696 description
3697 "This leaf describes a list of 64-bit tags associated with
3698 the prefix.";
3699 }
3700 uses prefix-attributes-extension;
3702 }
3704 grouping neighbor-extended {
3705 description
3706 "This group defines attributes of an
3707 IS-IS extended neighbor.";
3708 leaf neighbor-id {
3709 type system-id;
3710 description
3711 "This leaf describes the system-id of the neighbor.";
3712 }
3713 leaf metric {
3714 type wide-metric;
3715 description
3716 "This leaf describes the IS-IS metric value";
3717 }
3718 }
3720 grouping neighbor {
3721 description
3722 "This group defines attributes of an
3723 IS-IS standard neighbor.";
3724 leaf neighbor-id {
3725 type system-id;
3726 description
3727 "This leaf describes the system-id of the neighbor.";
3728 }
3729 leaf i-e {
3730 type boolean;
3731 description
3732 "This leaf expresses the value of I/E bit.";
3733 }
3734 leaf default-metric {
3735 type std-metric;
3736 description
3737 "This leaf describes the IS-IS default metric value";
3738 }
3739 container delay-metric {
3740 leaf metric {
3741 type std-metric;
3742 description
3743 "This leaf describes the IS-IS delay metric value";
3744 }
3745 leaf supported {
3746 type boolean;
3747 default "false";
3748 description
3749 "This leaf describes if the metric is supported.";
3751 }
3752 description
3753 "This container defines the IS-IS delay metric.";
3754 }
3755 container expense-metric {
3756 leaf metric {
3757 type std-metric;
3758 description
3759 "This leaf describes the IS-IS delay expense value";
3760 }
3761 leaf supported {
3762 type boolean;
3763 default "false";
3764 description
3765 "This leaf describes if the metric is supported.";
3766 }
3767 description
3768 "This container defines the IS-IS expense metric.";
3769 }
3770 container error-metric {
3771 leaf metric {
3772 type std-metric;
3773 description
3774 "This leaf describes the IS-IS error metric value";
3775 }
3776 leaf supported {
3777 type boolean;
3778 default "false";
3779 description
3780 "This leaf describes if the metric is supported.";
3781 }
3782 description
3783 "This container defines the IS-IS error metric.";
3784 }
3785 }
3787 grouping lsp-entry {
3788 description
3789 "This group defines attributes of an
3790 IS-IS LSP database entry.";
3792 leaf decoded-completed {
3793 type boolean;
3794 description
3795 "The IS-IS body is fully decoded.";
3796 }
3797 leaf raw-data {
3798 type yang:hex-string;
3799 description
3800 "The complete LSP in network byte
3801 order hexadecimal as received or originated.";
3802 }
3803 leaf lsp-id {
3804 type lsp-id;
3805 description
3806 "This leaf describes the LSP ID of the LSP.";
3807 }
3808 leaf checksum {
3809 type uint16;
3810 description
3811 "This leaf describes the checksum of the LSP.";
3812 }
3813 leaf remaining-lifetime {
3814 type uint16;
3815 units "seconds";
3816 description
3817 "This leaf describes the remaining lifetime
3818 in seconds before the LSP expiration.";
3819 }
3820 leaf sequence {
3821 type uint32;
3822 description
3823 "This leaf describes the sequence number of the LSP.";
3824 }
3825 leaf attributes {
3826 type bits {
3827 bit PARTITIONNED {
3828 description
3829 "If set, the originator supports partition
3830 repair.";
3831 }
3832 bit ATTACHED-ERROR {
3833 description
3834 "If set, the originator is attached to
3835 another area using the referred metric.";
3836 }
3837 bit ATTACHED-EXPENSE {
3838 description
3839 "If set, the originator is attached to
3840 another area using the referred metric.";
3841 }
3842 bit ATTACHED-DELAY {
3843 description
3844 "If set, the originator is attached to
3845 another area using the referred metric.";
3846 }
3847 bit ATTACHED-DEFAULT {
3848 description
3849 "If set, the originator is attached to
3850 another area using the referred metric.";
3851 }
3852 bit OVERLOAD {
3853 description
3854 "If set, the originator is overloaded,
3855 and must be avoided in path calculation.";
3856 }
3857 }
3858 description
3859 "This leaf describes attributes of the LSP.";
3860 }
3862 leaf-list ipv4-addresses {
3863 type inet:ipv4-address;
3864 description
3865 "This leaf describes the IPv4 addresses of the node.
3866 IS-IS reference is TLV 132.";
3867 }
3869 leaf-list ipv6-addresses {
3870 type inet:ipv6-address;
3871 description
3872 "This leaf describes the IPv6 interface
3873 addresses of the node.
3874 IS-IS reference is TLV 232.";
3875 }
3877 leaf ipv4-te-routerid {
3878 type inet:ipv4-address;
3879 description
3880 "This leaf describes the IPv4 Traffic Engineering
3881 router ID of the node.
3882 IS-IS reference is TLV 134.";
3883 }
3885 leaf ipv6-te-routerid {
3886 type inet:ipv6-address;
3887 description
3888 "This leaf describes the IPv6 Traffic Engineering
3889 router ID of the node.
3890 IS-IS reference is TLV 140.";
3891 }
3893 leaf-list protocol-supported {
3894 type uint8;
3895 description
3896 "This leaf describes the list of
3897 supported protocols.
3898 IS-IS reference is TLV 129.";
3899 }
3901 leaf dynamic-hostname {
3902 type string;
3903 description
3904 "This leaf describes the name of the node.
3905 IS-IS reference is TLV 137.";
3906 }
3908 container authentication {
3909 leaf authentication-type {
3910 type string;
3911 description
3912 "This leaf describes the authentication type
3913 to be used.";
3914 }
3915 leaf authentication-key {
3916 type string;
3917 description
3918 "This leaf describes the authentication key
3919 to be used. For security reason, the
3920 authentication key MUST NOT be presented
3921 in plaintext format. Authors recommends
3922 to use MD5 hash to present the authentication-key.";
3923 }
3924 description "This container describes authentication
3925 information of the node. IS-IS reference is TLV 10.";
3926 }
3928 container mt-entries {
3929 list topology {
3931 leaf MT-ID {
3932 type uint16 {
3933 range "0 .. 4095";
3934 }
3935 description
3936 "This leaf defines the identifier
3937 of a topology.";
3938 }
3940 leaf attributes {
3941 type bits {
3942 bit OVERLOAD {
3943 description
3944 "If set, the originator is overloaded,
3945 and must be avoided in path
3946 calculation.";
3947 }
3948 bit ATTACHED {
3949 description
3950 "If set, the originator is attached to
3951 another area using the referred metric.";
3952 }
3953 }
3954 description
3955 "This leaf describes attributes of the LSP
3956 for the associated topology.";
3957 }
3958 description
3959 "List of topologies supported.";
3960 }
3961 description
3962 "This container describes the topology supported.
3963 IS-IS reference is TLV 229.";
3964 }
3966 list router-capabilities {
3967 leaf flags {
3968 type bits {
3969 bit flooding {
3970 position 0;
3971 description
3972 "If the S bit is set(1),
3973 the IS-IS Router CAPABILITY TLV
3974 MUST be flooded across the entire routing domain.
3975 If the S bit is
3976 not set(0), the TLV MUST NOT be leaked between levels.
3977 This bit MUST NOT be altered during the TLV leaking.";
3978 }
3979 bit down {
3980 position 1;
3981 description
3982 "When the IS-IS Router CAPABILITY TLV is
3983 leaked from level-2 to level-1, the D bit
3984 MUST be set. Otherwise, this bit MUST
3985 be clear. IS-IS Router capability TLVs
3986 with the D bit set MUST NOT
3987 be leaked from level-1 to level-2.
3988 This is to prevent TLV looping.
3989 ";
3990 }
3992 }
3993 description
3994 "Flags associated with router capability.";
3995 }
3996 container node-tags {
3997 if-feature node-tag;
3998 list node-tag {
3999 leaf tag {
4000 type uint32;
4001 description
4002 "Node tag value.";
4003 }
4004 description
4005 "List of tags.";
4006 }
4007 description
4008 "Container for node tags.";
4009 }
4011 leaf binary {
4012 type binary;
4013 description
4014 "This leaf describes the capability of the node.
4015 Format is binary according to the protocol encoding.";
4016 }
4017 description
4018 "This container describes the capabilities of the node.
4019 This container may be extended with detailed
4020 information.
4021 IS-IS reference is TLV 242.";
4022 }
4024 container is-neighbor {
4025 list neighbor {
4026 uses neighbor;
4027 description
4028 "List of neighbors.";
4029 }
4030 description
4031 "This leaf describes list of IS-IS neighbors.
4032 IS-IS reference is TLV 2.";
4033 }
4035 container extended-is-neighbor {
4036 list neighbor {
4037 uses neighbor-extended;
4038 description
4039 "List of neighbors.";
4041 }
4042 description
4043 "This container describes list of IS-IS extended
4044 neighbors.
4045 IS-IS reference is TLV 22.";
4046 }
4048 container ipv4-internal-reachability {
4049 list prefixes {
4050 uses prefix-ipv4-std;
4051 description
4052 "List of prefixes.";
4053 }
4054 description
4055 "This container describes list of IPv4 internal
4056 reachability information.
4057 IS-IS reference is TLV 128.";
4058 }
4060 container ipv4-external-reachability {
4061 list prefixes {
4062 uses prefix-ipv4-std;
4063 description
4064 "List of prefixes.";
4065 }
4066 description
4067 "This container describes list of IPv4 external
4068 reachability information.
4069 IS-IS reference is TLV 130.";
4070 }
4072 container extended-ipv4-reachability {
4073 list prefixes {
4074 uses prefix-ipv4-extended;
4075 description
4076 "List of prefixes.";
4077 }
4078 description
4079 "This container describes list of IPv4 extended
4080 reachability information.
4081 IS-IS reference is TLV 135.";
4082 }
4084 container mt-is-neighbor {
4085 list neighbor {
4086 leaf MT-ID {
4087 type uint16 {
4088 range "0 .. 4095";
4090 }
4091 description
4092 "This leaf defines the identifier
4093 of a topology.";
4094 }
4095 uses neighbor-extended;
4096 description
4097 "List of neighbors.";
4098 }
4099 description
4100 "This container describes list of IS-IS multi-topology
4101 neighbors.
4102 IS-IS reference is TLV 223.";
4103 }
4105 container mt-extended-ipv4-reachability {
4106 list prefixes {
4107 leaf MT-ID {
4108 type uint16 {
4109 range "0 .. 4095";
4110 }
4111 description
4112 "This leaf defines the identifier
4113 of a topology.";
4114 }
4115 uses prefix-ipv4-extended;
4116 description
4117 "List of prefixes.";
4119 }
4120 description
4121 "This container describes list of IPv4
4122 reachability information in multi-topology
4123 environment.
4124 IS-IS reference is TLV 235.";
4125 }
4127 container mt-ipv6-reachability {
4128 list prefixes {
4129 leaf MT-ID {
4130 type uint16 {
4131 range "0 .. 4095";
4132 }
4133 description
4134 "This leaf defines the identifier
4135 of a topology.";
4136 }
4137 uses prefix-ipv6-extended;
4138 description
4139 "List of prefixes.";
4140 }
4141 description
4142 "This container describes list of IPv6
4143 reachability information in multi-topology
4144 environment.
4145 IS-IS reference is TLV 237.";
4146 }
4148 container ipv6-reachability {
4149 list prefixes {
4150 uses prefix-ipv6-extended;
4151 description
4152 "List of prefixes.";
4153 }
4154 description
4155 "This container describes list of IPv6
4156 reachability information.
4157 IS-IS reference is TLV 236.";
4158 }
4159 }
4161 grouping lsdb {
4162 container database {
4163 config false;
4164 list level-db {
4165 key level;
4167 leaf level {
4168 type level-number;
4169 description
4170 "Current level number";
4171 }
4172 list lsp {
4173 key lsp-id;
4174 uses lsp-entry;
4175 description
4176 "List of LSPs in LSDB.";
4177 }
4178 description
4179 "This container describes the list of LSPs
4180 in the level x database.";
4181 }
4182 description
4183 "This container describes IS-IS Link State
4184 databases.";
4185 }
4186 description
4187 "Grouping for LSDB description.";
4188 }
4190 /* Augmentations */
4192 augment "/rt:routing/"
4193 +"rt:ribs/rt:rib/rt:routes/rt:route" {
4194 when "rt:source-protocol = 'isis:isis'" {
4195 description "IS-IS-specific route attributes.";
4196 }
4197 uses route-content;
4198 description
4199 "This augments route object in RIB with IS-IS-specific
4200 attributes.";
4201 }
4203 augment "/if:interfaces/if:interface" {
4204 leaf clns-mtu {
4205 type uint16;
4206 description
4207 "Defines CLNS MTU of the interface.";
4208 }
4209 description "ISO interface config.";
4210 }
4212 augment "/rt:routing/rt:control-plane-protocols/"
4213 +"rt:control-plane-protocol" {
4214 when "rt:type = 'isis:isis'" {
4215 description
4216 "This augment is only valid when routing protocol
4217 instance type is isis.";
4218 }
4219 description
4220 "This augments a routing protocol instance with IS-IS
4221 specific parameters.";
4222 container isis {
4223 must "count(area-address) > 0" {
4224 error-message "At least one area-address
4225 must be configured.";
4226 description
4227 "Enforce configuration of at least one area.";
4228 }
4229 uses isis-global-cfg;
4230 container fast-reroute {
4231 if-feature fast-reroute;
4232 uses fast-reroute-global-cfg;
4233 uses fast-reroute-global-state;
4234 description
4235 "IPFRR.";
4236 }
4237 container spf-control {
4238 container ietf-spf-delay {
4239 if-feature ietf-spf-delay;
4240 uses ietf-spf-delay-cfg;
4241 uses ietf-spf-delay-state;
4242 description
4243 "IETF spf delay algorithm configuration.";
4244 }
4245 description
4246 "Container for all SPF computation related
4247 operations.";
4248 }
4249 container topologies {
4250 if-feature multi-topology;
4251 list topology {
4252 key "name";
4253 leaf enable {
4254 type boolean;
4255 description
4256 "Control enabling of topologies";
4257 }
4258 leaf name {
4259 type leafref {
4260 path "../../../../../../rt:ribs/rt:rib/rt:name";
4261 }
4263 description "RIB";
4264 }
4266 uses isis-global-topologies-cfg;
4268 description
4269 "List of topologies";
4270 }
4271 description
4272 "Container for multi-topology";
4273 }
4274 container interfaces {
4275 list interface {
4276 key "name";
4277 leaf name {
4278 type if:interface-ref;
4280 description
4281 "Reference to the interface within
4282 the routing-instance.";
4283 }
4284 uses isis-if-cfg;
4285 container fast-reroute {
4286 if-feature fast-reroute;
4287 uses fast-reroute-if-cfg;
4288 description
4289 "IPFRR.";
4290 }
4291 container topologies {
4292 if-feature multi-topology;
4293 list topology {
4294 key name;
4296 leaf name {
4297 type leafref {
4298 path "../../../../../../../../"+
4299 "rt:ribs/rt:rib/rt:name";
4300 }
4302 description
4303 "Name of RIB.";
4304 }
4305 uses isis-if-topologies-cfg;
4306 description
4307 "List of topologies.";
4308 }
4309 description
4310 "Container for multi-topology";
4311 }
4312 uses adjacency-state;
4313 uses event-counters;
4314 uses packet-counters;
4315 description
4316 "List of IS-IS interfaces.";
4317 }
4318 description
4319 "This container defines IS-IS interface specific
4320 configuration objects.";
4321 }
4322 uses spf-log;
4323 uses lsp-log;
4324 uses hostname-db;
4325 uses lsdb;
4326 uses local-rib;
4327 uses system-counters;
4329 description
4330 "This container defines IS-IS specific configuration
4331 objects.";
4332 }
4333 }
4335 /* RPC methods */
4337 rpc clear-adjacency {
4338 description
4339 "This RPC request clears a particular
4340 set of IS-IS adjacencies. If the operation
4341 fails for IS-IS internal reason, then
4342 error-tag and error-app-tag should be set
4343 to a meaningful value.";
4344 input {
4346 leaf routing-protocol-instance-name {
4347 type instance-state-ref;
4348 mandatory "true";
4349 description
4350 "Name of the IS-IS protocol instance whose IS-IS
4351 information is being queried.
4353 If the IS-IS instance with name equal to the
4354 value of this parameter doesn't exist, then this
4355 operation SHALL fail with error-tag 'data-missing'
4356 and error-app-tag
4357 'routing-protocol-instance-not-found'.";
4358 }
4359 leaf level {
4360 type level;
4361 description
4362 "IS-IS level of the adjacency to be cleared.
4363 If IS-IS level is level-1-2, both level 1 and level 2
4364 adjacencies would be cleared.
4366 If the value provided is different from the one
4367 authorized in the enum type, then this
4368 operation SHALL fail with error-tag 'data-missing'
4369 and error-app-tag
4370 'bad-isis-level'.
4371 ";
4373 }
4374 leaf interface {
4375 type string;
4376 description
4377 "Name of the IS-IS interface.
4379 If the IS-IS interface with name equal to the
4380 value of this parameter doesn't exist, then this
4381 operation SHALL fail with error-tag 'data-missing'
4382 and error-app-tag
4383 'isis-interface-not-found'.";
4384 }
4385 }
4386 }
4388 rpc clear-database {
4389 description
4390 "This RPC request clears a particular
4391 IS-IS database. If the operation
4392 fails for IS-IS internal reason, then
4393 error-tag and error-app-tag should be set
4394 to a meaningful value.";
4395 input {
4396 leaf routing-protocol-instance-name {
4397 type instance-state-ref;
4398 mandatory "true";
4399 description
4400 "Name of the IS-IS protocol instance whose IS-IS
4401 information is being queried.
4403 If the IS-IS instance with name equal to the
4404 value of this parameter doesn't exist, then this
4405 operation SHALL fail with error-tag 'data-missing'
4406 and error-app-tag
4407 'routing-protocol-instance-not-found'.";
4408 }
4409 leaf level {
4410 type level;
4411 description
4412 "IS-IS level of the adjacency to be cleared.
4413 If IS-IS level is level-1-2, both level 1 and level 2
4414 adjacencies would be cleared.
4416 If the value provided is different from the one
4417 authorized in the enum type, then this
4418 operation SHALL fail with error-tag 'data-missing'
4419 and error-app-tag
4420 'bad-isis-level'.
4422 ";
4423 }
4424 }
4425 }
4427 /* Notifications */
4429 notification database-overload {
4430 uses notification-instance-hdr;
4432 leaf overload {
4433 type enumeration {
4434 enum "off" {
4435 description
4436 "The system has left overload condition.";
4437 }
4438 enum "on" {
4439 description
4440 "The system is in overload condition.";
4441 }
4443 }
4444 description
4445 "Describes the new overload state of the instance.";
4446 }
4447 description
4448 "This notification is sent when an IS-IS instance
4449 overload condition changes.";
4450 }
4452 notification lsp-too-large {
4453 uses notification-instance-hdr;
4454 uses notification-interface-hdr;
4456 leaf pdu-size {
4457 type uint32;
4458 description
4459 "Size of the PDU";
4460 }
4461 leaf lsp-id {
4462 type lsp-id;
4463 description
4464 "LSP ID.";
4465 }
4466 description
4467 "This notification is sent when we attempt
4468 to propagate an LSP that is larger than the
4469 dataLinkBlockSize for the circuit.
4470 The notification generation must be throttled
4471 with at least a 5 second gap.
4472 ";
4473 }
4475 notification if-state-change {
4476 uses notification-instance-hdr;
4477 uses notification-interface-hdr;
4479 leaf state {
4480 type if-state-type;
4481 description "Interface state.";
4482 }
4483 description
4484 "This notification is sent when an interface
4485 state change is detected.";
4486 }
4488 notification corrupted-lsp-detected {
4489 uses notification-instance-hdr;
4490 leaf lsp-id {
4491 type lsp-id;
4492 description
4493 "LSP ID.";
4494 }
4495 description
4496 "This notification is sent when we find
4497 that an LSP that was stored in memory has
4498 become corrupted.
4499 ";
4500 }
4502 notification attempt-to-exceed-max-sequence {
4503 uses notification-instance-hdr;
4504 leaf lsp-id {
4505 type lsp-id;
4506 description
4507 "LSP ID.";
4508 }
4509 description
4510 "This notification is sent when the system
4511 wraps the 32-bit sequence counter of an LSP.
4512 ";
4513 }
4515 notification id-len-mismatch {
4516 uses notification-instance-hdr;
4517 uses notification-interface-hdr;
4519 leaf pdu-field-len {
4520 type uint8;
4521 description
4522 "Size of the ID length in the received PDU";
4523 }
4524 leaf raw-pdu {
4525 type binary;
4526 description
4527 "Received raw PDU.";
4528 }
4529 description
4530 "This notification is sent when we receive a PDU
4531 with a different value for the System ID length.
4532 The notification generation must be throttled
4533 with at least a 5 second gap.
4534 ";
4535 }
4537 notification max-area-addresses-mismatch {
4538 uses notification-instance-hdr;
4539 uses notification-interface-hdr;
4541 leaf max-area-addresses {
4542 type uint8;
4543 description
4544 "Received number of supported areas";
4545 }
4546 leaf raw-pdu {
4547 type binary;
4548 description
4549 "Received raw PDU.";
4550 }
4551 description
4552 "This notification is sent when we receive a PDU
4553 with a different value for the Maximum Area Addresses.
4554 The notification generation must be throttled
4555 with at least a 5 second gap.
4556 ";
4557 }
4559 notification own-lsp-purge {
4560 uses notification-instance-hdr;
4561 uses notification-interface-hdr;
4562 leaf lsp-id {
4563 type lsp-id;
4564 description
4565 "LSP ID.";
4566 }
4567 description
4568 "This notification is sent when the system
4569 receives a PDU with its own system ID and zero age.
4570 ";
4571 }
4573 notification sequence-number-skipped {
4574 uses notification-instance-hdr;
4575 uses notification-interface-hdr;
4576 leaf lsp-id {
4577 type lsp-id;
4578 description
4579 "LSP ID.";
4580 }
4581 description
4582 "This notification is sent when the system
4583 receives a PDU with its own system ID and
4584 different contents. The system has to reissue
4585 the LSP with a higher sequence number.
4586 ";
4587 }
4589 notification authentication-type-failure {
4590 uses notification-instance-hdr;
4591 uses notification-interface-hdr;
4592 leaf raw-pdu {
4593 type binary;
4594 description
4595 "Received raw PDU.";
4596 }
4597 description
4598 "This notification is sent when the system
4599 receives a PDU with the wrong authentication type
4600 field.
4601 The notification generation must be throttled with
4602 at least a 5 second gap.
4603 ";
4604 }
4606 notification authentication-failure {
4607 uses notification-instance-hdr;
4608 uses notification-interface-hdr;
4609 leaf raw-pdu {
4610 type binary;
4611 description
4612 "Received raw PDU.";
4614 }
4615 description
4616 "This notification is sent when the system
4617 receives a PDU with the wrong authentication
4618 information.
4619 The notification generation must be throttled with
4620 at least a 5 second gap.
4621 ";
4622 }
4624 notification version-skew {
4625 uses notification-instance-hdr;
4626 uses notification-interface-hdr;
4627 leaf protocol-version {
4628 type uint8;
4629 description
4630 "Protocol version received in the PDU.";
4631 }
4632 leaf raw-pdu {
4633 type binary;
4634 description
4635 "Received raw PDU.";
4636 }
4637 description
4638 "This notification is sent when the system
4639 receives a PDU with a different protocol version
4640 number.
4641 The notification generation must be throttled with at least
4642 a 5 second gap.
4643 ";
4644 }
4646 notification area-mismatch {
4647 uses notification-instance-hdr;
4648 uses notification-interface-hdr;
4649 leaf raw-pdu {
4650 type binary;
4651 description
4652 "Received raw PDU.";
4653 }
4654 description
4655 "This notification is sent when the system
4656 receives a Hello PDU from an IS that does
4657 not share any area address.
4658 The notification generation must be throttled with at least
4659 a 5 second gap.
4660 ";
4661 }
4662 notification rejected-adjacency {
4663 uses notification-instance-hdr;
4664 uses notification-interface-hdr;
4665 leaf raw-pdu {
4666 type binary;
4667 description
4668 "Received raw PDU.";
4669 }
4670 leaf reason {
4671 type string;
4672 description
4673 "The system may provide a reason to reject the
4674 adjacency. If the reason is not available,
4675 the system use an empty string.";
4676 }
4677 description
4678 "This notification is sent when the system
4679 receives a Hello PDU from an IS but does not
4680 establish an adjacency for some reason.
4681 The notification generation must be throttled with at least
4682 a 5 second gap.
4683 ";
4684 }
4686 notification protocols-supported-mismatch {
4687 uses notification-instance-hdr;
4688 uses notification-interface-hdr;
4689 leaf raw-pdu {
4690 type binary;
4691 description
4692 "Received raw PDU.";
4693 }
4694 leaf-list protocols {
4695 type uint8;
4696 description
4697 "The list of protocols supported by the
4698 remote system.";
4699 }
4700 description
4701 "This notification is sent when the system
4702 receives a non pseudonode LSP that has no matching
4703 protocol supported.
4704 The notification generation must be throttled with at least
4705 a 5 second gap.
4706 ";
4707 }
4708 notification lsp-error-detected {
4709 uses notification-instance-hdr;
4710 uses notification-interface-hdr;
4711 leaf lsp-id {
4712 type lsp-id;
4713 description
4714 "LSP ID.";
4715 }
4716 leaf raw-pdu {
4717 type binary;
4718 description
4719 "Received raw PDU.";
4720 }
4721 leaf error-offset {
4722 type uint32;
4723 description
4724 "If the problem is a malformed TLV,
4725 the error-offset points to the start of the TLV.
4726 If the problem is with the LSP header,
4727 the error-offset points to the suspicious byte";
4728 }
4729 leaf tlv-type {
4730 type uint8;
4731 description
4732 "if the problem is a malformed TLV, the tlv-type is set
4733 to the type value of the suspicious TLV.
4734 Otherwise this leaf is not present.";
4735 }
4736 description
4737 "This notification is sent when the system
4738 receives a LSP with a parse error.
4739 The notification generation must be throttled with at least
4740 a 5 second gap.
4741 ";
4742 }
4744 notification adjacency-state-change {
4745 uses notification-instance-hdr;
4746 uses notification-interface-hdr;
4747 leaf neighbor {
4748 type string;
4749 description
4750 "Describes the name of the neighbor. If the
4751 name of the neighbor is not available, the
4752 field would be empty.";
4753 }
4754 leaf neighbor-system-id {
4755 type system-id;
4756 description
4757 "Describes the system-id of the neighbor.";
4758 }
4759 leaf state {
4760 type adj-state-type;
4762 description
4763 "This leaf describes the new state of the
4764 IS-IS adjacency.";
4765 }
4766 leaf reason {
4767 type string;
4768 description
4769 "If the adjacency is going to DOWN,
4770 this leaf provides a reason for the adjacency
4771 going down. The reason is provided as a text.
4772 If the adjacency is going to UP, no reason is
4773 provided.";
4774 }
4775 description
4776 "This notification is sent when an IS-IS adjacency
4777 moves to Up state or to Down state.";
4778 }
4780 notification lsp-received {
4781 uses notification-instance-hdr;
4782 uses notification-interface-hdr;
4784 leaf lsp-id {
4785 type lsp-id;
4786 description
4787 "LSP ID.";
4788 }
4789 leaf sequence {
4790 type uint32;
4791 description
4792 "Sequence number of the received LSP.";
4793 }
4794 leaf received-timestamp {
4795 type yang:timestamp;
4797 description
4798 "This leaf describes the timestamp
4799 when the LSP was received. ";
4800 }
4801 leaf neighbor-system-id {
4802 type system-id;
4803 description
4804 "Describes the system-id of the neighbor
4805 that sent the LSP.";
4806 }
4807 description
4808 "This notification is sent when a LSP
4809 is received.
4810 The notification generation must be throttled with at least
4811 a 5 second gap. ";
4812 }
4814 notification lsp-generation {
4815 uses notification-instance-hdr;
4817 leaf lsp-id {
4818 type lsp-id;
4819 description
4820 "LSP ID.";
4821 }
4822 leaf sequence {
4823 type uint32;
4824 description
4825 "Sequence number of the received LSP.";
4826 }
4827 leaf send-timestamp {
4828 type yang:timestamp;
4830 description
4831 "This leaf describes the timestamp
4832 when our LSP was regenerated. ";
4833 }
4834 description
4835 "This notification is sent when a LSP
4836 is regenerated.
4837 The notification generation must be throttled with at least
4838 a 5 second gap. ";
4839 }
4840 }
4842
4844 7. Security Considerations
4846 Configuration and state data defined in this document are designed to
4847 be accessed via the NETCONF protocol [RFC6241].
4849 As IS-IS is an IGP protocol (critical piece of the network), ensuring
4850 stability and security of the protocol is mandatory for the network
4851 service.
4853 Authors recommends to implement NETCONF access control model
4854 ([RFC6536]) to restrict access to all or part of the configuration to
4855 specific users. Access control to RPCs is also critical as RPC
4856 allows to clear protocol datastructures that would definitively
4857 impact the network service. This kind of RPC needs only to be used
4858 in specific cases by well-known experienced users.
4860 Authors consider that all the configuration is considered as
4861 sensitive/vulnerable as well as RPCs. But security teams can decide
4862 to open some part of the configuration to less experienced users
4863 depending on the internal organization, for example:
4865 o User FullWrite: would access to the whole data model. This kind
4866 of profile may be restricted to few experienced people.
4868 o User PartialWrite: would only access to configuration part within
4869 /isis/interfaces/interface. So this kind of profile is restricted
4870 to creation/modification/deletion of interfaces. This profile
4871 does not have access to RPC.
4873 o User Read: would only access to the operational states.
4875 Unauthorized access to configuration or RPC may cause high damages to
4876 the network service.
4878 The "isis/database" may contain authentication information. As
4879 presented in the description of the "/isis/database/level-
4880 1/lsp/authentication/authentication-key", the authentication MUST
4881 never be displayed in a plaintext format for security reason.
4882 Authors recommend the usage of MD5 to display or return the
4883 authentication-key.
4885 Some authentication-key may also be required in the "isis" writable
4886 container. When configuring IS-IS using the NETCONF protocol,
4887 authors recommends the usage of secure transport of NETCONF using SSH
4888 ([RFC6242]).
4890 8. Contributors
4892 Authors would like to thank Kiran Agrahara Sreenivasa, Dean
4893 Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the
4894 draft.
4896 9. Acknowledgements
4898 TBD.
4900 10. IANA Considerations
4902 The IANA is requested to assign two new URIs from the IETF XML
4903 registry ([RFC3688]). Authors are suggesting the following URI:
4905 URI: urn:ietf:params:xml:ns:yang:ietf-isis
4906 Registrant Contact: IS-IS WG
4907 XML: N/A, the requested URI is an XML namespace
4909 This document also requests one new YANG module name in the YANG
4910 Module Names registry ([RFC6020]) with the following suggestion:
4912 name: ietf-isis
4913 namespace: urn:ietf:params:xml:ns:yang:ietf-isis
4914 prefix: isis
4915 reference: RFC XXXX
4917 11. Change log for ietf-isis YANG module
4919 11.1. From version -19 to version -20
4921 o Moved to Yang 1.1
4923 o Lower case enumerations
4925 o Add RFC references to features
4927 o Remove segment-routing feature
4929 o Modified BFD activation modeling
4931 11.2. From version -18 to version -19
4933 o Align with draft-ietf-netmod-rfc8022bis.
4935 o Modify address family types as per draft-ietf-rtgwg-routing-types-
4936 17.
4938 11.3. From version -17 to version -18
4940 o NMDA compliancy.
4942 o Set some default values.
4944 o Align with iana-rt-types module.
4946 11.4. From version -16 to version -17
4948 o Cosmetic fixes.
4950 o Use of rt-types model.
4952 11.5. From version -15 to version -16
4954 o Alignment with last IETF key chain model.
4956 o lsp-log "change" leaf moved as an identity.
4958 o Incremental SPF removed from spf-log types.
4960 11.6. From version -14 to version -15
4962 o Alignment with OSPF model done:
4964 * Added spf-control container with IETF SPF delay algorithm as a
4965 feature.
4967 * Added graceful-restart options.
4969 * Added nsr as a feature.
4971 * Removed per topology FRR. Need to be augmented if necessary.
4973 * Created an ldp container within mpls.
4975 * Renamed igp-ldp-sync to igp-sync.
4977 * Added auto-cost container.
4979 * Moved reference-bandwidth under auto-cost container.
4981 * Added IS-IS local RIB as operational state.
4983 * Added decode-completed and raw-data leaves in the LSDB model.
4985 * Modified the notification header.
4987 11.7. From version -13 to version -14
4989 o Segment Routing extensions are now in a separate document.
4991 11.8. From version -12 to version -13
4993 o Move feature nlpid-control to container rather than list.
4995 o Rename multi-topology to topologies to align with OSPF.
4997 o Rename bfd/enabled to bfd/enable for consistency reason.
4999 o Add support for NSR with a feature.
5001 11.9. From version -09 to version -12
5003 o Rename node-tag container to node-tags.
5005 11.10. From version -08 to version -09
5007 o Added container before af list.
5009 o Added container before topology list.
5011 o Aligned LFA if per level cfg.
5013 o Align to draft-ietf-netmod-routing-cfg-23.
5015 11.11. From version -07 to version -08
5017 o Remove selector from system-id type.
5019 o Add some default values.
5021 o Moved lists to containers+groupings for per level configuration.
5023 o remove routing-instance as per core routing model v21.
5025 o added BFD leaf (no more BFD protocol model).
5027 o changed keychain module reference.
5029 11.12. From version -05 to version -07
5031 o Move Overload config from list to container.
5033 o Move Overload-max-metric config from list to container.
5035 o Move preference config from list to container.
5037 o Add Node flag in config.
5039 o Removed BFD config => moved to isis-bfd module.
5041 o Remove call to routing policy model.
5043 11.13. From version -03 to version -05
5045 o Correct invalid references to previous versions of core routing
5046 model.
5048 o Remove BFD config and replace by groupings from ietf-bfd.
5050 o Adding routing-policy support through routing-policy model.
5052 11.14. From version -02 to version -03
5054 o Reviewed config and op state groupings.
5056 o Add default value to lfa candidate-disabled.
5058 o Add enable leaf to isis container to reflect admin state.
5060 o Move to VRF centric only.
5062 o Segment routing is part os a separate module.
5064 11.15. From version -01 to version -02
5066 o Adding IPFRR.
5068 o Adding igp-ldp-sync.
5070 o Adding segment-routing.
5072 o Adding instance reference to operational states.
5074 o Move AF type from string to identity.
5076 o Updated router-capability in LSDB description.
5078 o packet counters moved to interface-packet-counters.
5080 o Added modification information in lsp-log.
5082 o Removing igp-ldp-sync timer in IS-IS.
5084 o Defining hierarchy for operational states.
5086 o Adding clns-mtu.
5088 o Adding key-chain.
5090 11.16. From version -00 to version -01
5092 o Interface metric move from af container to interface container.
5094 o Hello-padding on interface moved to hello-padding-disable with
5095 empty type.
5097 o three-way-handshake removed.
5099 o route preference changed to a choice.
5101 o csnp-authentication/psnp-authentication merged to authentication
5102 container.
5104 o lsp-gen-interval-exp-delay removed.
5106 o Added overload-max-metric feature.
5108 o overload-max-metric is in a separate container.
5110 o Change hello-padding to container.
5112 o Change bfd to container.
5114 o Make BFD a feature.
5116 o Create mpls-te container and put router-id inside.
5118 o Remove GR helper disable and timers.
5120 12. Normative References
5122 [I-D.ietf-netmod-routing-cfg]
5123 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
5124 Management", draft-ietf-netmod-routing-cfg-25 (work in
5125 progress), November 2016.
5127 [I-D.ietf-rtgwg-yang-key-chain]
5128 Lindem, A., Qu, Y., Yeung, D., Chen, I., and Z. Zhang,
5129 "Routing Key Chain YANG Data Model", draft-ietf-rtgwg-
5130 yang-key-chain-24 (work in progress), April 2017.
5132 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
5133 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/
5134 RFC2119, March 1997, .
5137 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
5138 DOI 10.17487/RFC3688, January 2004, .
5141 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi
5142 Topology (MT) Routing in Intermediate System to
5143 Intermediate Systems (IS-ISs)", RFC 5120, DOI 10.17487/
5144 RFC5120, February 2008, .
5147 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for
5148 IP Fast Reroute: Loop-Free Alternates", RFC 5286, DOI
5149 10.17487/RFC5286, September 2008, .
5152 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP
5153 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March
5154 2009, .
5156 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
5157 the Network Configuration Protocol (NETCONF)", RFC 6020,
5158 DOI 10.17487/RFC6020, October 2010, .
5161 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
5162 and A. Bierman, Ed., "Network Configuration Protocol
5163 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
5164 .
5166 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
5167 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
5168 .
5170 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
5171 Protocol (NETCONF) Access Control Model", RFC 6536, DOI
5172 10.17487/RFC6536, March 2012, .
5175 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N.
5176 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)",
5177 RFC 7490, DOI 10.17487/RFC7490, April 2015,
5178 .
5180 Appendix A. Example of IS-IS configuration in XML
5182 This section gives an example of configuration of an IS-IS instance
5183 on a device. The example is written in XML.
5185
5186
5187
5188 SLI
5189 1.1.1.1
5190
5191
5192
5193 Loopback0
5194
5195
5196 Eth1
5197
5198
5199
5200
5201 ISIS
5202
5203 isis:isis
5204
5205 true
5206 level-2
5207 87FC.FCDF.4432
5208 49.0001
5209
5210 1.1.1.1
5211
5212 65535
5213 65000
5214
5215 wide
5216
5217
5218 111111
5219
5220
5221
5222 ipv4-unicast
5223 true
5224
5225
5226
5227
5228 Loopback0
5229 200
5230
5231 0
5232
5233 true
5234
5235
5236 Eth1
5237 level-2
5238 point-to-point
5239
5240 167890
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250 Loopback0
5251
5252
5253
5254
5255
5256
5257 1.1.1.1
5258 32
5259
5260
5262
5263
5264 Eth1
5265
5266
5267
5268
5269
5270
5271 10.0.0.1
5272 30
5273
5274
5276
5277
5278
5280 Authors' Addresses
5282 Stephane Litkowski
5283 Orange
5285 Email: stephane.litkowski@orange.com
5287 Derek Yeung
5288 Arrcus, Inc
5290 Email: derek@arrcus.com
5292 Acee Lindem
5293 Cisco Systems
5295 Email: acee@cisco.com
5297 Jeffrey Zhang
5298 Juniper Networks
5300 Email: zzhang@juniper.net
5302 Ladislav Lhotka
5303 CZ.NIC
5305 Email: lhotka@nic.cz