idnits 2.17.1
draft-ietf-isis-yang-isis-cfg-22.txt:
Checking boilerplate required by RFC 5378 and the IETF Trust (see
https://trustee.ietf.org/license-info):
----------------------------------------------------------------------------
No issues found here.
Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt:
----------------------------------------------------------------------------
No issues found here.
Checking nits according to https://www.ietf.org/id-info/checklist :
----------------------------------------------------------------------------
** There is 1 instance of too long lines in the document, the longest one
being 9 characters in excess of 72.
Miscellaneous warnings:
----------------------------------------------------------------------------
== The copyright year in the IETF Trust and authors Copyright Line does not
match the current year
== Line 254 has weird spacing: '...ce-name ins...'
== Line 259 has weird spacing: '...ce-name ins...'
== Line 633 has weird spacing: '...--rw af ian...'
== Line 732 has weird spacing: '...stem-id sys...'
== Line 736 has weird spacing: '...o level lev...'
== (3 more instances...)
-- The document date (July 16, 2018) is 2108 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)
** Downref: Normative reference to an Informational RFC: RFC 5443
** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341)
Summary: 3 errors (**), 0 flaws (~~), 7 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: January 17, 2019 Arrcus, Inc
6 A. Lindem
7 Cisco Systems
8 J. Zhang
9 Juniper Networks
10 L. Lhotka
11 CZ.NIC
12 July 16, 2018
14 YANG Data Model for IS-IS protocol
15 draft-ietf-isis-yang-isis-cfg-22
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 https://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 January 17, 2019.
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 (https://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 . . . . . . . . . . . . . . . . . . . . . 24
72 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 24
73 2.9. Operational States . . . . . . . . . . . . . . . . . . . 24
74 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 25
75 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 25
76 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 26
77 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 27
78 7. Security Considerations . . . . . . . . . . . . . . . . . . . 95
79 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 96
80 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 96
81 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 96
82 11. Change log for ietf-isis YANG module . . . . . . . . . . . . 96
83 11.1. From version -21 to version -22 . . . . . . . . . . . . 96
84 11.2. From version -20 to version -21 . . . . . . . . . . . . 96
85 11.3. From version -19 to version -20 . . . . . . . . . . . . 96
86 11.4. From version -18 to version -19 . . . . . . . . . . . . 97
87 11.5. From version -17 to version -18 . . . . . . . . . . . . 97
88 11.6. From version -16 to version -17 . . . . . . . . . . . . 97
89 11.7. From version -15 to version -16 . . . . . . . . . . . . 97
90 11.8. From version -14 to version -15 . . . . . . . . . . . . 97
91 11.9. From version -13 to version -14 . . . . . . . . . . . . 98
92 11.10. From version -12 to version -13 . . . . . . . . . . . . 98
93 11.11. From version -09 to version -12 . . . . . . . . . . . . 98
94 11.12. From version -08 to version -09 . . . . . . . . . . . . 98
95 11.13. From version -07 to version -08 . . . . . . . . . . . . 98
96 11.14. From version -05 to version -07 . . . . . . . . . . . . 99
97 11.15. From version -03 to version -05 . . . . . . . . . . . . 99
98 11.16. From version -02 to version -03 . . . . . . . . . . . . 99
99 11.17. From version -01 to version -02 . . . . . . . . . . . . 99
100 11.18. From version -00 to version -01 . . . . . . . . . . . . 100
101 12. Normative References . . . . . . . . . . . . . . . . . . . . 101
102 Appendix A. Example of IS-IS configuration in XML . . . . . . . 102
103 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 104
105 1. Introduction
107 This document defines a YANG data model for IS-IS routing protocol.
109 The data model covers configuration of an IS-IS routing protocol
110 instance as well as operational states.
112 1.1. Tree diagram
114 A simplified graphical representation of the data model is presented
115 in Section 2.
117 The meaning of the symbols in these diagrams is as follows:
119 o Brackets "[" and "]" enclose list keys.
121 o Curly braces "{" and "}" contain names of optional features that
122 make the corresponding node conditional.
124 o Abbreviations before data node names: "rw" means configuration
125 (read-write), and "ro" state data (read-only).
127 o Symbols after data node names: "?" means an optional node and "*"
128 denotes a "list" or "leaf-list".
130 o Parentheses enclose choice and case nodes, and case nodes are also
131 marked with a colon (":").
133 o Ellipsis ("...") stands for contents of subtrees that are not
134 shown.
136 2. Design of the Data Model
138 The IS-IS YANG module augments the "control-plane-protocol" list in
139 ietf-routing module with specific IS-IS parameters.
141 The module is designed as per NMDA (Network Management Datastore
142 Architecture).
144 The figure below describes the overall structure of the isis YANG
145 module:
147 module: ietf-isis
148 augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route:
149 +--ro metric? uint32
150 +--ro tag* uint64
151 +--ro route-type? enumeration
152 augment /if:interfaces/if:interface:
153 +--rw clns-mtu? uint16
154 augment /rt:routing/rt:control-plane-protocols/
155 | rt:control-plane-protocol:
156 +--rw isis
157 +--rw enable? boolean {admin-control}?
158 +--rw level-type? level
159 +--rw system-id? system-id
160 +--rw maximum-area-addresses? uint8 {maximum-area-addresses}?
161 +--rw area-address* area-address
162 +--rw mpls
163 | +--rw te-rid {te-rid}?
164 | | ...
165 | +--rw ldp
166 | ...
167 +--rw auto-cost {auto-cost}?
168 | +--rw reference-bandwidth? uint32
169 | +--rw enable? boolean
170 +--rw lsp-mtu? uint16
171 +--rw lsp-lifetime? uint16
172 +--rw lsp-refresh?
173 | rt-types:timer-value-seconds16 {lsp-refresh}?
174 +--rw graceful-restart {graceful-restart}?
175 | +--rw enable? boolean
176 | +--rw restart-interval? rt-types:timer-value-seconds16
177 | +--rw helper-enable? boolean
178 +--rw nsr {nsr}?
179 | +--rw enable? boolean
180 +--rw node-tags {node-tag}?
181 | +--rw node-tag* [tag]
182 | ...
183 +--rw authentication
184 | +--rw (authentication-type)?
185 | | ...
186 | +--rw level-1
187 | | ...
189 | +--rw level-2
190 | ...
191 +--rw metric-type
192 | +--rw value? enumeration
193 | +--rw level-1
194 | | ...
195 | +--rw level-2
196 | ...
197 +--rw default-metric
198 | +--rw value? wide-metric
199 | +--rw level-1
200 | | ...
201 | +--rw level-2
202 | ...
203 +--rw afs {nlpid-control}?
204 | +--rw af* [af]
205 | ...
206 +--rw preference
207 | +--rw (granularity)?
208 | ...
209 +--rw overload
210 | +--rw status? boolean
211 +--rw overload-max-metric {overload-max-metric}?
212 | +--rw timeout? rt-types:timer-value-seconds16
213 +--rw fast-reroute {fast-reroute}?
214 | +--rw lfa {lfa}?
215 | +--ro protected-routes
216 | | ...
217 | +--ro unprotected-routes
218 | | ...
219 | +--ro protection-statistics* [frr-protection-method]
220 | ...
221 +--rw spf-control
222 | +--rw paths? uint16 {max-ecmp}?
223 | +--rw ietf-spf-delay {ietf-spf-delay}?
224 | ...
225 +--rw topologies {multi-topology}?
226 | +--rw topology* [name]
227 | ...
228 +--rw interfaces
229 | +--rw interface* [name]
230 | ...
231 +--ro spf-log
232 | +--ro event* [id]
233 | ...
234 +--ro lsp-log
235 | +--ro event* [id]
236 | ...
238 +--ro hostnames
239 | +--ro hostname* [system-id]
240 | ...
241 +--ro database
242 | +--ro level-db* [level]
243 | ...
244 +--ro local-rib
245 | +--ro route* [prefix]
246 | ...
247 +--ro system-counters
248 +--ro level* [level]
249 ...
251 rpcs:
252 +---x clear-adjacency
253 | +---w input
254 | +---w routing-protocol-instance-name instance-state-ref
255 | +---w level? level
256 | +---w interface? string
257 +---x clear-database
258 +---w input
259 +---w routing-protocol-instance-name instance-state-ref
260 +---w level? level
262 notifications:
263 +---n database-overload
264 | +--ro routing-instance? string
265 | +--ro routing-protocol-name? string
266 | +--ro isis-level? level
267 | +--ro overload? enumeration
268 +---n lsp-too-large
269 | +--ro routing-instance? string
270 | +--ro routing-protocol-name? string
271 | +--ro isis-level? level
272 | +--ro interface-name? string
273 | +--ro interface-level? level
274 | +--ro extended-circuit-id? extended-circuit-id
275 | +--ro pdu-size? uint32
276 | +--ro lsp-id? lsp-id
277 +---n if-state-change
278 | +--ro routing-instance? string
279 | +--ro routing-protocol-name? string
280 | +--ro isis-level? level
281 | +--ro interface-name? string
282 | +--ro interface-level? level
283 | +--ro extended-circuit-id? extended-circuit-id
284 | +--ro state? if-state-type
285 +---n corrupted-lsp-detected
286 | +--ro routing-instance? string
287 | +--ro routing-protocol-name? string
288 | +--ro isis-level? level
289 | +--ro lsp-id? lsp-id
290 +---n attempt-to-exceed-max-sequence
291 | +--ro routing-instance? string
292 | +--ro routing-protocol-name? string
293 | +--ro isis-level? level
294 | +--ro lsp-id? lsp-id
295 +---n id-len-mismatch
296 | +--ro routing-instance? string
297 | +--ro routing-protocol-name? string
298 | +--ro isis-level? level
299 | +--ro interface-name? string
300 | +--ro interface-level? level
301 | +--ro extended-circuit-id? extended-circuit-id
302 | +--ro pdu-field-len? uint8
303 | +--ro raw-pdu? binary
304 +---n max-area-addresses-mismatch
305 | +--ro routing-instance? string
306 | +--ro routing-protocol-name? string
307 | +--ro isis-level? level
308 | +--ro interface-name? string
309 | +--ro interface-level? level
310 | +--ro extended-circuit-id? extended-circuit-id
311 | +--ro max-area-addresses? uint8
312 | +--ro raw-pdu? binary
313 +---n own-lsp-purge
314 | +--ro routing-instance? string
315 | +--ro routing-protocol-name? string
316 | +--ro isis-level? level
317 | +--ro interface-name? string
318 | +--ro interface-level? level
319 | +--ro extended-circuit-id? extended-circuit-id
320 | +--ro lsp-id? lsp-id
321 +---n sequence-number-skipped
322 | +--ro routing-instance? string
323 | +--ro routing-protocol-name? string
324 | +--ro isis-level? level
325 | +--ro interface-name? string
326 | +--ro interface-level? level
327 | +--ro extended-circuit-id? extended-circuit-id
328 | +--ro lsp-id? lsp-id
329 +---n authentication-type-failure
330 | +--ro routing-instance? string
331 | +--ro routing-protocol-name? string
332 | +--ro isis-level? level
333 | +--ro interface-name? string
334 | +--ro interface-level? level
335 | +--ro extended-circuit-id? extended-circuit-id
336 | +--ro raw-pdu? binary
337 +---n authentication-failure
338 | +--ro routing-instance? string
339 | +--ro routing-protocol-name? string
340 | +--ro isis-level? level
341 | +--ro interface-name? string
342 | +--ro interface-level? level
343 | +--ro extended-circuit-id? extended-circuit-id
344 | +--ro raw-pdu? binary
345 +---n version-skew
346 | +--ro routing-instance? string
347 | +--ro routing-protocol-name? string
348 | +--ro isis-level? level
349 | +--ro interface-name? string
350 | +--ro interface-level? level
351 | +--ro extended-circuit-id? extended-circuit-id
352 | +--ro protocol-version? uint8
353 | +--ro raw-pdu? binary
354 +---n area-mismatch
355 | +--ro routing-instance? string
356 | +--ro routing-protocol-name? string
357 | +--ro isis-level? level
358 | +--ro interface-name? string
359 | +--ro interface-level? level
360 | +--ro extended-circuit-id? extended-circuit-id
361 | +--ro raw-pdu? binary
362 +---n rejected-adjacency
363 | +--ro routing-instance? string
364 | +--ro routing-protocol-name? string
365 | +--ro isis-level? level
366 | +--ro interface-name? string
367 | +--ro interface-level? level
368 | +--ro extended-circuit-id? extended-circuit-id
369 | +--ro raw-pdu? binary
370 | +--ro reason? string
371 +---n protocols-supported-mismatch
372 | +--ro routing-instance? string
373 | +--ro routing-protocol-name? string
374 | +--ro isis-level? level
375 | +--ro interface-name? string
376 | +--ro interface-level? level
377 | +--ro extended-circuit-id? extended-circuit-id
378 | +--ro raw-pdu? binary
379 | +--ro protocols* uint8
380 +---n lsp-error-detected
381 | +--ro routing-instance? string
382 | +--ro routing-protocol-name? string
383 | +--ro isis-level? level
384 | +--ro interface-name? string
385 | +--ro interface-level? level
386 | +--ro extended-circuit-id? extended-circuit-id
387 | +--ro lsp-id? lsp-id
388 | +--ro raw-pdu? binary
389 | +--ro error-offset? uint32
390 | +--ro tlv-type? uint8
391 +---n adjacency-state-change
392 | +--ro routing-instance? string
393 | +--ro routing-protocol-name? string
394 | +--ro isis-level? level
395 | +--ro interface-name? string
396 | +--ro interface-level? level
397 | +--ro extended-circuit-id? extended-circuit-id
398 | +--ro neighbor? string
399 | +--ro neighbor-system-id? system-id
400 | +--ro state? adj-state-type
401 | +--ro reason? string
402 +---n lsp-received
403 | +--ro routing-instance? string
404 | +--ro routing-protocol-name? string
405 | +--ro isis-level? level
406 | +--ro interface-name? string
407 | +--ro interface-level? level
408 | +--ro extended-circuit-id? extended-circuit-id
409 | +--ro lsp-id? lsp-id
410 | +--ro sequence? uint32
411 | +--ro received-timestamp? yang:timestamp
412 | +--ro neighbor-system-id? system-id
413 +---n lsp-generation
414 +--ro routing-instance? string
415 +--ro routing-protocol-name? string
416 +--ro isis-level? level
417 +--ro lsp-id? lsp-id
418 +--ro sequence? uint32
419 +--ro send-timestamp? yang:timestamp
421 2.1. IS-IS Configuration
423 The IS-IS configuration container is divided in:
425 o Global parameters.
427 o Per interface configuration (see Section 2.4).
429 Additional modules may be created this to support any additional
430 parameters. These additional modules should augment the ietf-isis
431 module.
433 The model implements features, thus some of the configuration
434 statement becomes optional. As an example, the ability to control
435 the administrative state of a particular IS-IS instance is optional.
436 By advertising the feature "admin-control", a device communicates to
437 the client that it supports the ability to shutdown a particular IS-
438 IS instance.
440 The global configuration contains usual IS-IS parameters such as lsp-
441 mtu, lsp-lifetime, lsp-refresh, default-metric...
443 2.2. Multitopology Parameters
445 The model supports multitopology (MT) IS-IS as defined in [RFC5120].
447 The "topologies" container is used to enable support of MT
448 extensions.
450 The "name" used in the topology list should refer to an existing RIB
451 of the device.
453 Some specific parameters could be defined on a per topology basis
454 both at global level and at interface level: for example, an
455 interface metric can be defined per topology.
457 Multiple address families (like IPv4 or IPv6) can also be activated
458 within the default topology. This can be achieved using the "afs"
459 container (requiring "nlpid-control" feature to be advertised).
461 2.3. Per-Level Parameters
463 Some parameters allow a per level configuration. In this case, the
464 parameter is modeled as a container with three configuration
465 locations:
467 o a top level container: corresponds to level-1-2, so the
468 configuration applies to both levels.
470 o a level-1 container: corresponds to level-1 specific parameters.
472 o a level-2 container: corresponds to level-2 specific parameters.
474 +--rw priority
475 | +--rw value? uint8
476 | +--rw level-1
477 | | +--rw value? uint8
478 | +--rw level-2
479 | +--rw value? uint8
481 Example:
483
484 250
485
486 100
487
488
489 200
490
491
493 An implementation SHOULD prefer a level specific parameter over a
494 level-all parameter. As example, if the priority is 100 for the
495 level-1, 200 for the level-2 and 250 for the top level configuration,
496 the implementation should use 100 for the level-1 and 200 for the
497 level-2.
499 Some parameters like "overload bit" and "route preference" are not
500 modeled to support a per level configuration. If an implementation
501 supports per level configuration for such parameter, this
502 implementation SHOULD augment the current model by adding both
503 level-1 and level-2 containers and SHOULD reuse existing
504 configuration groupings.
506 Example of augmentation:
508 augment "/rt:routing/" +
509 "rt:control-plane-protocols/rt:control-plane-protocol"+
510 "/isis:isis/isis:overload" {
511 when "rt:type = 'isis:isis'" {
512 description
513 "This augment IS-IS routing protocol when used";
514 }
515 description
516 "This augments IS-IS overload configuration
517 with per level configuration.";
519 container level-1 {
520 uses isis:overload-global-cfg;
521 description
522 "Level 1 configuration.";
523 }
524 container level-2 {
525 uses isis:overload-global-cfg;
526 description
527 "Level 2 configuration.";
528 }
530 }
532 If an implementation does not support per level configuration for a
533 parameter modeled with per level configuration, the implementation
534 SHOULD advertise a deviation to announce the non support of the
535 level-1 and level-2 containers.
537 Finally, if an implementation supports per level configuration but
538 does not support the level-1-2 configuration, it SHOULD also
539 advertise a deviation.
541 2.4. Per-Interface Parameters
543 The per-interface section of the IS-IS instance describes the
544 interface specific parameters.
546 The interface is modeled as a reference to an existing interface
547 defined in the "ietf-interfaces" YANG model.
549 Each interface has some interface-specific parameters that may have a
550 different per level value as described in previous section. An
551 interface-specific parameter always override an IS-IS global
552 parameter.
554 Some parameters like hello-padding are defined as containers to allow
555 easy extension by vendor specific modules.
557 +--rw interfaces
558 | +--rw interface* [name]
559 | +--rw name if:interface-ref
560 | +--rw level-type? level
561 | +--rw lsp-pacing-interval?
562 | | rt-types:timer-value-milliseconds
563 | +--rw lsp-retransmit-interval?
564 | | rt-types:timer-value-seconds16
565 | +--rw passive? boolean
566 | +--rw csnp-interval?
567 | | rt-types:timer-value-seconds16
568 | +--rw hello-padding
569 | | +--rw enable? boolean
570 | +--rw mesh-group-enable? mesh-group-state
571 | +--rw mesh-group? uint8
572 | +--rw interface-type? interface-type
573 | +--rw enable? boolean {admin-control}?
574 | +--rw tag* uint32 {prefix-tag}?
575 | +--rw tag64* uint64 {prefix-tag64}?
576 | +--rw node-flag? boolean {node-flag}?
577 | +--rw hello-authentication
578 | | +--rw (authentication-type)?
579 | | | +--:(key-chain) {key-chain}?
580 | | | | +--rw key-chain? key-chain:key-chain-ref
581 | | | +--:(password)
582 | | | +--rw key? string
583 | | | +--rw crypto-algorithm? identityref
584 | | +--rw level-1
585 | | | +--rw (authentication-type)?
586 | | | +--:(key-chain) {key-chain}?
587 | | | | +--rw key-chain? key-chain:key-chain-ref
588 | | | +--:(password)
589 | | | +--rw key? string
590 | | | +--rw crypto-algorithm? identityref
591 | | +--rw level-2
592 | | +--rw (authentication-type)?
593 | | +--:(key-chain) {key-chain}?
594 | | | +--rw key-chain? key-chain:key-chain-ref
595 | | +--:(password)
596 | | +--rw key? string
597 | | +--rw crypto-algorithm? identityref
598 | +--rw hello-interval
599 | | +--rw value? rt-types:timer-value-seconds16
600 | | +--rw level-1
601 | | | +--rw value? rt-types:timer-value-seconds16
602 | | +--rw level-2
603 | | +--rw value? rt-types:timer-value-seconds16
604 | +--rw hello-multiplier
605 | | +--rw value? uint16
606 | | +--rw level-1
607 | | | +--rw value? uint16
608 | | +--rw level-2
609 | | +--rw value? uint16
610 | +--rw priority
611 | | +--rw value? uint8
612 | | +--rw level-1
613 | | | +--rw value? uint8
614 | | +--rw level-2
615 | | +--rw value? uint8
616 | +--rw metric
617 | | +--rw value? wide-metric
618 | | +--rw level-1
619 | | | +--rw value? wide-metric
620 | | +--rw level-2
621 | | +--rw value? wide-metric
622 | +--rw bfd {bfd}?
623 | | +--rw enable? boolean
624 | | +--rw local-multiplier? multiplier
625 | | +--rw (interval-config-type)?
626 | | +--:(tx-rx-intervals)
627 | | | +--rw desired-min-tx-interval? uint32
628 | | | +--rw required-min-rx-interval? uint32
629 | | +--:(single-interval) {single-minimum-interval}?
630 | | +--rw min-interval? uint32
631 | +--rw afs {nlpid-control}?
632 | | +--rw af* [af]
633 | | +--rw af iana-rt-types:address-family
634 | +--rw mpls
635 | | +--rw ldp
636 | | +--rw igp-sync? boolean {ldp-igp-sync}?
637 | +--rw fast-reroute {fast-reroute}?
638 | | +--rw lfa {lfa}?
639 | | +--rw candidate-disabled? boolean
640 | | +--rw enable? boolean
641 | | +--rw remote-lfa {remote-lfa}?
642 | | | +--rw enable? boolean
643 | | +--rw level-1
644 | | | +--rw candidate-disabled? boolean
645 | | | +--rw enable? boolean
646 | | | +--rw remote-lfa {remote-lfa}?
647 | | | +--rw enable? boolean
648 | | +--rw level-2
649 | | +--rw candidate-disabled? boolean
650 | | +--rw enable? boolean
651 | | +--rw remote-lfa {remote-lfa}?
652 | | +--rw enable? boolean
653 | +--rw topologies {multi-topology}?
654 | | +--rw topology* [name]
655 | | +--rw name
656 | | -> ../../../../../../../../rt:ribs/rib/name
657 | | +--rw metric
658 | | +--rw value? wide-metric
659 | | +--rw level-1
660 | | | +--rw value? wide-metric
661 | | +--rw level-2
662 | | +--rw value? wide-metric
663 | +--ro adjacencies
664 | | +--ro adjacency* []
665 | | +--ro neighbor-sys-type? level
666 | | +--ro neighbor-sysid? system-id
667 | | +--ro neighbor-extended-circuit-id?
668 | | extended-circuit-id
669 | | +--ro neighbor-snpa? snpa
670 | | +--ro usage? level
671 | | +--ro hold-timer?
672 | | rt-types:timer-value-seconds16
673 | | +--ro neighbor-priority? uint8
674 | | +--ro lastuptime? yang:timestamp
675 | | +--ro state? adj-state-type
676 | +--ro event-counters
677 | | +--ro adjacency-changes? uint32
678 | | +--ro adjacency-number? uint32
679 | | +--ro init-fails? uint32
680 | | +--ro adjacency-rejects? uint32
681 | | +--ro id-len-mismatch? uint32
682 | | +--ro max-area-addresses-mismatch? uint32
683 | | +--ro authentication-type-fails? uint32
684 | | +--ro authentication-fails? uint32
685 | | +--ro lan-dis-changes? uint32
686 | +--ro packet-counters
687 | +--ro level* [level]
688 | +--ro level level-number
689 | +--ro iih
690 | | +--ro in? uint32
691 | | +--ro out? uint32
692 | +--ro ish
693 | | +--ro in? uint32
694 | | +--ro out? uint32
695 | +--ro esh
696 | | +--ro in? uint32
697 | | +--ro out? uint32
698 | +--ro lsp
699 | | +--ro in? uint32
700 | | +--ro out? uint32
701 | +--ro psnp
702 | | +--ro in? uint32
703 | | +--ro out? uint32
704 | +--ro csnp
705 | | +--ro in? uint32
706 | | +--ro out? uint32
707 | +--ro unknown
708 | +--ro in? uint32
709 | +--ro out? uint32
710 +--ro spf-log
711 | +--ro event* [id]
712 | +--ro id uint32
713 | +--ro spf-type? enumeration
714 | +--ro level? level-number
715 | +--ro schedule-timestamp? yang:timestamp
716 | +--ro start-timestamp? yang:timestamp
717 | +--ro end-timestamp? yang:timestamp
718 | +--ro trigger-lsp* [lsp]
719 | +--ro lsp lsp-id
720 | +--ro sequence? uint32
721 +--ro lsp-log
722 | +--ro event* [id]
723 | +--ro id uint32
724 | +--ro level? level-number
725 | +--ro lsp
726 | | +--ro lsp? lsp-id
727 | | +--ro sequence? uint32
728 | +--ro received-timestamp? yang:timestamp
729 | +--ro change? identityref
730 +--ro hostnames
731 | +--ro hostname* [system-id]
732 | +--ro system-id system-id
733 | +--ro hostname? string
734 +--ro database
735 | +--ro level-db* [level]
736 | +--ro level level-number
737 | +--ro lsp* [lsp-id]
738 | +--ro decoded-completed? boolean
739 | +--ro raw-data? yang:hex-string
740 | +--ro lsp-id lsp-id
741 | +--ro checksum? uint16
742 | +--ro remaining-lifetime? uint16
743 | +--ro sequence? uint32
744 | +--ro attributes? bits
745 | +--ro ipv4-addresses* inet:ipv4-address
746 | +--ro ipv6-addresses* inet:ipv6-address
747 | +--ro ipv4-te-routerid? inet:ipv4-address
748 | +--ro ipv6-te-routerid? inet:ipv6-address
749 | +--ro protocol-supported* uint8
750 | +--ro dynamic-hostname? string
751 | +--ro authentication
752 | | +--ro authentication-type? string
753 | | +--ro authentication-key? string
754 | +--ro mt-entries
755 | | +--ro topology* []
756 | | +--ro MT-ID? uint16
757 | | +--ro attributes? bits
758 | +--ro router-capabilities* []
759 | | +--ro flags? bits
760 | | +--ro node-tags {node-tag}?
761 | | | +--ro node-tag* []
762 | | | +--ro tag? uint32
763 | | +--ro binary? binary
764 | +--ro is-neighbor
765 | | +--ro neighbor* []
766 | | +--ro neighbor-id? system-id
767 | | +--ro i-e? boolean
768 | | +--ro default-metric? std-metric
769 | | +--ro delay-metric
770 | | | +--ro metric? std-metric
771 | | | +--ro supported? boolean
772 | | +--ro expense-metric
773 | | | +--ro metric? std-metric
774 | | | +--ro supported? boolean
775 | | +--ro error-metric
776 | | +--ro metric? std-metric
777 | | +--ro supported? boolean
778 | +--ro extended-is-neighbor
779 | | +--ro neighbor* []
780 | | +--ro neighbor-id? system-id
781 | | +--ro metric? wide-metric
782 | +--ro ipv4-internal-reachability
783 | | +--ro prefixes* []
784 | | +--ro up-down? boolean
785 | | +--ro i-e? boolean
786 | | +--ro ip-prefix? inet:ipv4-address
787 | | +--ro prefix-len? uint8
788 | | +--ro default-metric? std-metric
789 | | +--ro delay-metric
790 | | | +--ro metric? std-metric
791 | | | +--ro supported? boolean
792 | | +--ro expense-metric
793 | | | +--ro metric? std-metric
794 | | | +--ro supported? boolean
795 | | +--ro error-metric
796 | | +--ro metric? std-metric
797 | | +--ro supported? boolean
798 | +--ro ipv4-external-reachability
799 | | +--ro prefixes* []
800 | | +--ro up-down? boolean
801 | | +--ro i-e? boolean
802 | | +--ro ip-prefix? inet:ipv4-address
803 | | +--ro prefix-len? uint8
804 | | +--ro default-metric? std-metric
805 | | +--ro delay-metric
806 | | | +--ro metric? std-metric
807 | | | +--ro supported? boolean
808 | | +--ro expense-metric
809 | | | +--ro metric? std-metric
810 | | | +--ro supported? boolean
811 | | +--ro error-metric
812 | | +--ro metric? std-metric
813 | | +--ro supported? boolean
814 | +--ro extended-ipv4-reachability
815 | | +--ro prefixes* []
816 | | +--ro up-down? boolean
817 | | +--ro ip-prefix? inet:ipv4-address
818 | | +--ro prefix-len? uint8
819 | | +--ro metric? wide-metric
820 | | +--ro tag* uint32
821 | | +--ro tag64* uint64
822 | | +--ro external-prefix-flag? boolean
823 | | +--ro readvertisement-flag? boolean
824 | | +--ro node-flag? boolean
825 | | +--ro ipv4-source-router-id? inet:ipv4-address
826 | | +--ro ipv6-source-router-id? inet:ipv6-address
827 | +--ro mt-is-neighbor
828 | | +--ro neighbor* []
829 | | +--ro mt-id? uint16
830 | | +--ro neighbor-id? system-id
831 | | +--ro metric? wide-metric
832 | +--ro mt-extended-ipv4-reachability
833 | | +--ro prefixes* []
834 | | +--ro mt-id? uint16
835 | | +--ro up-down? boolean
836 | | +--ro ip-prefix? inet:ipv4-address
837 | | +--ro prefix-len? uint8
838 | | +--ro metric? wide-metric
839 | | +--ro tag* uint32
840 | | +--ro tag64* uint64
841 | | +--ro external-prefix-flag? boolean
842 | | +--ro readvertisement-flag? boolean
843 | | +--ro node-flag? boolean
844 | | +--ro ipv4-source-router-id? inet:ipv4-address
845 | | +--ro ipv6-source-router-id? inet:ipv6-address
846 | +--ro mt-ipv6-reachability
847 | | +--ro prefixes* []
848 | | +--ro MT-ID? uint16
849 | | +--ro up-down? boolean
850 | | +--ro ip-prefix? inet:ipv6-address
851 | | +--ro prefix-len? uint8
852 | | +--ro metric? wide-metric
853 | | +--ro tag* uint32
854 | | +--ro tag64* uint64
855 | | +--ro external-prefix-flag? boolean
856 | | +--ro readvertisement-flag? boolean
857 | | +--ro node-flag? boolean
858 | | +--ro ipv4-source-router-id? inet:ipv4-address
859 | | +--ro ipv6-source-router-id? inet:ipv6-address
860 | +--ro ipv6-reachability
861 | +--ro prefixes* []
862 | +--ro up-down? boolean
863 | +--ro ip-prefix? inet:ipv6-address
864 | +--ro prefix-len? uint8
865 | +--ro metric? wide-metric
866 | +--ro tag* uint32
867 | +--ro tag64* uint64
868 | +--ro external-prefix-flag? boolean
869 | +--ro readvertisement-flag? boolean
870 | +--ro node-flag? boolean
871 | +--ro ipv4-source-router-id? inet:ipv4-address
872 | +--ro ipv6-source-router-id? inet:ipv6-address
873 +--ro local-rib
874 | +--ro route* [prefix]
875 | +--ro prefix inet:ip-prefix
876 | +--ro next-hops
877 | | +--ro next-hop* [next-hop]
878 | | +--ro outgoing-interface? if:interface-ref
879 | | +--ro next-hop inet:ip-address
880 | +--ro metric? uint32
881 | +--ro level? level-number
882 | +--ro route-tag? uint32
883 +--ro system-counters
884 +--ro level* [level]
885 +--ro level level-number
886 +--ro corrupted-lsps? uint32
887 +--ro authentication-type-fails? uint32
888 +--ro authentication-fails? uint32
889 +--ro database-overload? uint32
890 +--ro own-lsp-purge? uint32
891 +--ro manual-address-drop-from-area? uint32
892 +--ro max-sequence? uint32
893 +--ro sequence-number-skipped? uint32
894 +--ro id-len-mismatch? uint32
895 +--ro partition-changes? uint32
896 +--ro lsp-errors? uint32
897 +--ro spf-runs? uint32
899 rpcs:
900 +---x clear-adjacency
901 | +---w input
902 | +---w routing-protocol-instance-name instance-state-ref
903 | +---w level? level
904 | +---w interface? string
905 +---x clear-database
906 +---w input
907 +---w routing-protocol-instance-name instance-state-ref
908 +---w level? level
910 notifications:
911 +---n database-overload
912 | +--ro routing-instance? string
913 | +--ro routing-protocol-name? string
914 | +--ro isis-level? level
915 | +--ro overload? enumeration
916 +---n lsp-too-large
917 | +--ro routing-instance? string
918 | +--ro routing-protocol-name? string
919 | +--ro isis-level? level
920 | +--ro interface-name? string
921 | +--ro interface-level? level
922 | +--ro extended-circuit-id? extended-circuit-id
923 | +--ro pdu-size? uint32
924 | +--ro lsp-id? lsp-id
925 +---n if-state-change
926 | +--ro routing-instance? string
927 | +--ro routing-protocol-name? string
928 | +--ro isis-level? level
929 | +--ro interface-name? string
930 | +--ro interface-level? level
931 | +--ro extended-circuit-id? extended-circuit-id
932 | +--ro state? if-state-type
933 +---n corrupted-lsp-detected
934 | +--ro routing-instance? string
935 | +--ro routing-protocol-name? string
936 | +--ro isis-level? level
937 | +--ro lsp-id? lsp-id
938 +---n attempt-to-exceed-max-sequence
939 | +--ro routing-instance? string
940 | +--ro routing-protocol-name? string
941 | +--ro isis-level? level
942 | +--ro lsp-id? lsp-id
943 +---n id-len-mismatch
944 | +--ro routing-instance? string
945 | +--ro routing-protocol-name? string
946 | +--ro isis-level? level
947 | +--ro interface-name? string
948 | +--ro interface-level? level
949 | +--ro extended-circuit-id? extended-circuit-id
950 | +--ro pdu-field-len? uint8
951 | +--ro raw-pdu? binary
952 +---n max-area-addresses-mismatch
953 | +--ro routing-instance? string
954 | +--ro routing-protocol-name? string
955 | +--ro isis-level? level
956 | +--ro interface-name? string
957 | +--ro interface-level? level
958 | +--ro extended-circuit-id? extended-circuit-id
959 | +--ro max-area-addresses? uint8
960 | +--ro raw-pdu? binary
961 +---n own-lsp-purge
962 | +--ro routing-instance? string
963 | +--ro routing-protocol-name? string
964 | +--ro isis-level? level
965 | +--ro interface-name? string
966 | +--ro interface-level? level
967 | +--ro extended-circuit-id? extended-circuit-id
968 | +--ro lsp-id? lsp-id
969 +---n sequence-number-skipped
970 | +--ro routing-instance? string
971 | +--ro routing-protocol-name? string
972 | +--ro isis-level? level
973 | +--ro interface-name? string
974 | +--ro interface-level? level
975 | +--ro extended-circuit-id? extended-circuit-id
976 | +--ro lsp-id? lsp-id
977 +---n authentication-type-failure
978 | +--ro routing-instance? string
979 | +--ro routing-protocol-name? string
980 | +--ro isis-level? level
981 | +--ro interface-name? string
982 | +--ro interface-level? level
983 | +--ro extended-circuit-id? extended-circuit-id
984 | +--ro raw-pdu? binary
985 +---n authentication-failure
986 | +--ro routing-instance? string
987 | +--ro routing-protocol-name? string
988 | +--ro isis-level? level
989 | +--ro interface-name? string
990 | +--ro interface-level? level
991 | +--ro extended-circuit-id? extended-circuit-id
992 | +--ro raw-pdu? binary
993 +---n version-skew
994 | +--ro routing-instance? string
995 | +--ro routing-protocol-name? string
996 | +--ro isis-level? level
997 | +--ro interface-name? string
998 | +--ro interface-level? level
999 | +--ro extended-circuit-id? extended-circuit-id
1000 | +--ro protocol-version? uint8
1001 | +--ro raw-pdu? binary
1002 +---n area-mismatch
1003 | +--ro routing-instance? string
1004 | +--ro routing-protocol-name? string
1005 | +--ro isis-level? level
1006 | +--ro interface-name? string
1007 | +--ro interface-level? level
1008 | +--ro extended-circuit-id? extended-circuit-id
1009 | +--ro raw-pdu? binary
1010 +---n rejected-adjacency
1011 | +--ro routing-instance? string
1012 | +--ro routing-protocol-name? string
1013 | +--ro isis-level? level
1014 | +--ro interface-name? string
1015 | +--ro interface-level? level
1016 | +--ro extended-circuit-id? extended-circuit-id
1017 | +--ro raw-pdu? binary
1018 | +--ro reason? string
1019 +---n protocols-supported-mismatch
1020 | +--ro routing-instance? string
1021 | +--ro routing-protocol-name? string
1022 | +--ro isis-level? level
1023 | +--ro interface-name? string
1024 | +--ro interface-level? level
1025 | +--ro extended-circuit-id? extended-circuit-id
1026 | +--ro raw-pdu? binary
1027 | +--ro protocols* uint8
1028 +---n lsp-error-detected
1029 | +--ro routing-instance? string
1030 | +--ro routing-protocol-name? string
1031 | +--ro isis-level? level
1032 | +--ro interface-name? string
1033 | +--ro interface-level? level
1034 | +--ro extended-circuit-id? extended-circuit-id
1035 | +--ro lsp-id? lsp-id
1036 | +--ro raw-pdu? binary
1037 | +--ro error-offset? uint32
1038 | +--ro tlv-type? uint8
1039 +---n adjacency-state-change
1040 | +--ro routing-instance? string
1041 | +--ro routing-protocol-name? string
1042 | +--ro isis-level? level
1043 | +--ro interface-name? string
1044 | +--ro interface-level? level
1045 | +--ro extended-circuit-id? extended-circuit-id
1046 | +--ro neighbor? string
1047 | +--ro neighbor-system-id? system-id
1048 | +--ro state? adj-state-type
1049 | +--ro reason? string
1050 +---n lsp-received
1051 | +--ro routing-instance? string
1052 | +--ro routing-protocol-name? string
1053 | +--ro isis-level? level
1054 | +--ro interface-name? string
1055 | +--ro interface-level? level
1056 | +--ro extended-circuit-id? extended-circuit-id
1057 | +--ro lsp-id? lsp-id
1058 | +--ro sequence? uint32
1059 | +--ro received-timestamp? yang:timestamp
1060 | +--ro neighbor-system-id? system-id
1061 +---n lsp-generation
1062 +--ro routing-instance? string
1063 +--ro routing-protocol-name? string
1064 +--ro isis-level? level
1065 +--ro lsp-id? lsp-id
1066 +--ro sequence? uint32
1067 +--ro send-timestamp? yang:timestamp
1069 2.5. Authentication Parameters
1071 The module enables authentication configuration through the IETF key-
1072 chain module ([I-D.ietf-rtgwg-yang-key-chain]). The IS-IS module
1073 imports the "ietf-key-chain" module and reuses some groupings to
1074 allow global and per interface configuration of authentication. If a
1075 global authentication is configured, an implementation SHOULD
1076 authenticate PSNPs, CSNPs and LSPs with the authentication parameters
1077 supplied. The authentication of hello PDUs can be activated on a per
1078 interface basis.
1080 2.6. IGP/LDP synchronization
1082 [RFC5443] defines a mechanism where IGP needs to be synchronized with
1083 LDP. An "ldp-igp-sync" feature has been defined in the model to
1084 support this mechanism. The "mpls/ldp/igp-sync" leaf under
1085 "interface" allows activation of the mechanism on a per interface
1086 basis. The "mpls/ldp/igp-sync" container in the global configuration
1087 is empty on purpose and is not required for the activation. The goal
1088 of this empty container is to allow easy augmentation with additional
1089 parameters like timers for example.
1091 2.7. ISO parameters
1093 As IS-IS protocol is based on ISO protocol suite, some ISO parameters
1094 may be required.
1096 This module augments interface configuration model to support ISO
1097 configuration parameters.
1099 The clns-mtu can be defined under the interface.
1101 2.8. IP FRR
1103 This YANG model supports LFA ([RFC5286]) and remote LFA ([RFC7490])
1104 as IP FRR techniques. The "fast-reroute" container may be augmented
1105 by other models to support other IPFRR flavors (MRT, TILFA ...).
1107 The current version of the model supports activation of LFA and
1108 remote LFA at interface only. The global "lfa" container is present
1109 but kept empty to allow augmentation with vendor specific properties
1110 like policies.
1112 Remote LFA is considered as a child of LFA. Remote LFA cannot be
1113 enabled if LFA is not enabled.
1115 The "candidate-disabled" allows to mark an interface to not be used
1116 as a backup.
1118 2.9. Operational States
1120 Operational states are provided in the module in various places:
1122 o system-counters: provides statistical informations about the
1123 global system.
1125 o interface : provides configuration state informations for each
1126 interface.
1128 o adjacencies: provides state informations about current IS-IS
1129 adjacencies.
1131 o spf-log: provides informations about SPF events on the node. This
1132 SHOULD be implemented as a wrapping buffer.
1134 o lsp-log: provides informations about LSP events on the node
1135 (reception of an LSP or modification of local LSP). This SHOULD
1136 be implemented as a wrapping buffer and an implementation MAY
1137 decide to log refresh LSPs or not.
1139 o local-rib: provides the IS-IS internal routing table view.
1141 o database: provides details on the current LSDB.
1143 o hostnames: provides informations about system-id to hostname
1144 mappings.
1146 o fast-reroute: provides informations about IP FRR.
1148 3. RPC Operations
1150 The "ietf-isis" module defines two RPC operations:
1152 o clear-isis-database: reset the content of a particular IS-IS
1153 database and restart database synchronization with the neighbors.
1155 o clear-isis-adjacency: restart a particular set of IS-IS
1156 adjacencies.
1158 4. Notifications
1160 The "ietf-isis" module introduces some notifications :
1162 database-overload : raised when overload condition is changed.
1164 lsp-too-large : raised when the system tries to propagate a too
1165 large PDU.
1167 corrupted-lsp-detected : raised when the system find that an LSP
1168 that was stored in memory has become corrupted.
1170 attempt-to-exceed-max-sequence : This notification is sent when
1171 the system wraps the 32-bit sequence counter of an LSP.
1173 id-len-mismatch : This notification is sent when we receive a PDU
1174 with a different value for the System ID length.
1176 max-area-addresses-mismatch : This notification is sent when we
1177 receive a PDU with a different value for the Maximum Area
1178 Addresses.
1180 own-lsp-purge : This notification is sent when the system receives
1181 a PDU with its own system ID and zero age.
1183 sequence-number-skipped : This notification is sent when the
1184 system receives a PDU with its own system ID and different
1185 contents. The system has to reissue the LSP with a higher
1186 sequence number.
1188 authentication-type-failure : This notification is sent when the
1189 system receives a PDU with the wrong authentication type field.
1191 authentication-failure : This notification is sent when the system
1192 receives a PDU with the wrong authentication information.
1194 version-skew : This notification is sent when the system receives
1195 a PDU with a different protocol version number.
1197 area-mismatch : This notification is sent when the system receives
1198 a Hello PDU from an IS that does not share any area address.
1200 rejected-adjacency : This notification is sent when the system
1201 receives a Hello PDU from an IS but does not establish an
1202 adjacency for some reason.
1204 protocols-supported-mismatch : This notification is sent when the
1205 system receives a non pseudonode LSP that has no matching protocol
1206 supported.
1208 lsp-error-detected : This notification is sent when the system
1209 receives a LSP with a parse error.
1211 adjacency-change : This notification is sent when an IS-IS
1212 adjacency moves to Up state or to Down state.
1214 lsp-received : This notification is sent when a LSP is received.
1216 lsp-generation : This notification is sent when a LSP is
1217 regenerated.
1219 5. Interaction with Other YANG Modules
1221 The "isis" configuration container augments the "/rt:routing/
1222 rt:control-plane-protocols/control-plane-protocol" container of the
1223 ietf-routing [I-D.ietf-netmod-routing-cfg] module by defining IS-IS
1224 specific parameters.
1226 The "isis" module augments "/if:interfaces/if:interface" with ISO
1227 specific parameters.
1229 The "isis" operational state container augments the "/rt:routing-
1230 state/rt:control-plane-protocols/control-plane-protocol" container of
1231 the ietf-routing module by defining IS-IS specific operational
1232 states.
1234 Some IS-IS specific routes attributes are added to route objects of
1235 the ietf-routing module by augmenting "/rt:routing-
1236 state/rt:ribs/rt:rib/rt:routes/rt:route".
1238 The modules defined in this document use some groupings from ietf-
1239 keychain [I-D.ietf-rtgwg-yang-key-chain].
1241 6. IS-IS YANG Module
1243 file "ietf-isis@2018-07-16.yang"
1245 module ietf-isis {
1246 yang-version 1.1;
1247 namespace "urn:ietf:params:xml:ns:yang:ietf-isis";
1249 prefix isis;
1251 import ietf-routing {
1252 prefix "rt";
1253 reference "RFC 8349 - A YANG Data Model for Routing
1254 Management (NMDA Version)";
1255 }
1257 import ietf-inet-types {
1258 prefix inet;
1259 reference "RFC 6021 - Common YANG Data Types";
1260 }
1262 import ietf-yang-types {
1263 prefix yang;
1264 reference "RFC 6021 - Common YANG Data Types";
1265 }
1267 import ietf-interfaces {
1268 prefix "if";
1269 reference "RFC 8343 - A YANG Data Model for Interface
1270 Management (NDMA Version)";
1271 }
1273 import ietf-key-chain {
1274 prefix "key-chain";
1275 reference "RFC 8177 - YANG Data Model for Key Chains";
1276 }
1278 import ietf-routing-types {
1279 prefix "rt-types";
1280 reference "RFC 8291 - Common YANG Data Types for the
1281 Routing Area";
1282 }
1284 import iana-routing-types {
1285 prefix "iana-rt-types";
1286 reference "RFC 8291 - Common YANG Data Types for the
1287 Routing Area";
1288 }
1290 import ietf-bfd-types {
1291 prefix "bfd-types";
1292 reference "RFC XXXX - YANG Data Model for Bidirectional
1293 Forwarding Detection (BFD)";
1294 }
1296 organization
1297 "IETF IS-IS Working Group";
1299 contact
1300 "WG List: <mailto:isis-wg@ietf.org>
1302 Editor: Stephane Litkowski
1303 <mailto:stephane.litkowski@orange.com>
1305 Derek Yeung
1306 <mailto:derek@arrcus.com>
1307 Acee Lindem
1308 <mailto:acee@cisco.com>
1309 Jeffrey Zhang
1310 <mailto:zzhang@juniper.net>
1311 Ladislav Lhotka
1312 <mailto:llhotka@nic.cz>
1313 Yi Yang
1314 <mailto:yiya@cisco.com>
1315 Dean Bogdanovic
1316 <mailto:deanb@juniper.net>
1317 Kiran Agrahara Sreenivasa
1318 <mailto:kkoushik@brocade.com>
1319 Yingzhen Qu
1320 <mailto:yiqu@cisco.com>
1321 Jeff Tantsura
1322 <mailto:jefftant.ietf@gmail.com>
1324 ";
1326 description
1327 "The YANG module defines a generic configuration model for
1328 IS-IS common across all of the vendor implementations.";
1330 revision 2017-07-16 {
1331 description
1332 "Initial revision.";
1333 reference "RFC XXXX";
1334 }
1336 /* Identities */
1338 identity isis {
1339 base rt:routing-protocol;
1340 description "Identity for the IS-IS routing protocol.";
1341 }
1343 identity isis-adjacency-change {
1344 description "Identity for the IS-IS routing protocol
1345 adjacency state.";
1346 }
1348 identity clear-isis-database {
1349 description "Identity for the IS-IS routing protocol
1350 database reset action.";
1351 }
1353 identity clear-isis-adjacency {
1354 description "Identity for the IS-IS routing protocol
1355 adjacency reset action.";
1356 }
1358 identity lsp-log-reason {
1359 description "Base identity for an LSP change log reason.";
1360 }
1362 identity refresh {
1363 base lsp-log-reason;
1364 description
1365 "Identity used when the LSP log reason is
1366 a refresh LSP received.";
1367 }
1369 identity content-change {
1370 base lsp-log-reason;
1371 description
1372 "Identity used when the LSP log reason is
1373 a change in the content of the LSP.";
1374 }
1376 /* Feature definitions */
1378 feature ietf-spf-delay {
1379 description
1380 "Support of IETF SPF delay algorithm.";
1381 reference "RFC XXXX - SPF Back-off algorithm for link
1382 state IGPs";
1383 }
1384 feature bfd {
1385 description
1386 "Support for BFD detection of IS-IS neighbor reachability.";
1387 reference "RFC 5880 - Bidirectional Forwarding Detection (BFD)
1388 RFC 5881 - Bidirectional Forwarding Detection
1389 (BFD) for IPv4 and IPv6 (Single Hop)";
1390 }
1391 feature key-chain {
1392 description
1393 "Support of keychain for authentication.";
1394 reference "RFC8177 - YANG Data Model for Key Chains";
1395 }
1396 feature node-flag {
1397 description
1398 "Support of node-flag advertisement
1399 as prefix attribute";
1400 reference "RFC7794 - IS-IS Prefix Attributes for
1401 Extended IP and IPv6 Reachability";
1402 }
1403 feature node-tag {
1404 description
1405 "Support of node tag.";
1406 reference "RFC7917 - Advertising Node Administrative Tags
1407 in IS-IS";
1408 }
1409 feature ldp-igp-sync {
1410 description
1411 "Support of synchronization between IS-IS and LDP.";
1412 reference "RFC5443 - LDP IGP Synchronization";
1413 }
1414 feature fast-reroute {
1415 description
1416 "Support of IP Fast Reroute.";
1418 }
1419 feature nsr {
1420 description
1421 "Support of Non-Stop Routing.";
1422 }
1423 feature lfa {
1424 description
1425 "Support of Loop-Free Alternates.";
1426 reference "RFC5286 - Basic Specification of IP Fast-Reroute:
1427 Loop-free Alternates";
1428 }
1429 feature remote-lfa {
1430 description
1431 "Support of remote Loop Free Alternates.";
1432 reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute";
1433 }
1435 feature overload-max-metric {
1436 description
1437 "Support of overload by setting
1438 all links to max metric.";
1439 }
1440 feature prefix-tag {
1441 description
1442 "Support for 32-bit prefix tags";
1443 reference "RFC5130 - A Policy Control Mechanism in
1444 IS-IS Using Administrative Tags";
1445 }
1446 feature prefix-tag64 {
1447 description
1448 "Support for 64-bit prefix tags";
1449 reference "RFC5130 - A Policy Control Mechanism in
1450 IS-IS Using Administrative Tags";
1451 }
1452 feature auto-cost {
1453 description
1454 "Use an automated assignment of metrics.";
1455 }
1457 feature te-rid {
1458 description
1459 "Traffic-Engineering Router-ID.";
1460 reference "RFC5305 - IS-IS Extensions for Traffic Engineering
1461 RFC6119 - IPv6 Traffic Engineering in IS-IS";
1462 }
1463 feature max-ecmp {
1464 description
1465 "Setting maximum number of ECMP paths.";
1467 }
1468 feature multi-topology {
1469 description
1470 "Multitopology routing support.";
1471 reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS";
1472 }
1473 feature nlpid-control {
1474 description
1475 "This feature controls the advertisement
1476 of support NLPID within IS-IS configuration.";
1477 }
1478 feature graceful-restart {
1479 description
1480 "Graceful restart support.";
1481 reference "RFC5306 - Restart Signaling in IS-IS";
1482 }
1484 feature lsp-refresh {
1485 description
1486 "Configuration of LSP refresh interval.";
1487 }
1489 feature maximum-area-addresses {
1490 description
1491 "Support of maximum-area-addresses config.";
1492 }
1494 feature admin-control {
1495 description
1496 "Control administrative state of IS-IS.";
1497 }
1499 /* Type definitions */
1501 typedef instance-state-ref {
1502 type leafref {
1503 path "/rt:routing-state/"
1504 +"rt:control-plane-protocols/rt:control-plane-protocol/"
1505 +"rt:name";
1506 }
1507 description
1508 "This type is used for leaves that reference state data for
1509 an IS-IS protocol instance.";
1510 }
1512 typedef circuit-id {
1513 type uint8;
1514 description
1515 "This type defines the circuit ID
1516 associated with an interface.";
1517 }
1519 typedef extended-circuit-id {
1520 type uint32;
1521 description
1522 "This type defines the extended circuit ID
1523 associated with an interface.";
1524 }
1526 typedef interface-type {
1527 type enumeration {
1528 enum broadcast {
1529 description
1530 "Broadcast interface type.";
1531 }
1532 enum point-to-point {
1533 description
1534 "Point-to-point interface type.";
1535 }
1536 }
1537 description
1538 "This type defines the type of adjacency
1539 to be established on the interface.
1540 The interface-type determines the type
1541 of hello message that is used.";
1543 }
1545 typedef level {
1546 type enumeration {
1547 enum "level-1" {
1548 description
1549 "This enum indicates L1-only capability.";
1550 }
1551 enum "level-2" {
1552 description
1553 "This enum indicates L2-only capability.";
1554 }
1555 enum "level-all" {
1556 description
1557 "This enum indicates capability for both levels.";
1558 }
1559 }
1560 default "level-all";
1561 description
1562 "This type defines IS-IS level of an object.";
1564 }
1566 typedef adj-state-type {
1567 type enumeration {
1568 enum "up" {
1569 description
1570 "State indicates the adjacency is established.";
1571 }
1572 enum "down" {
1573 description
1574 "State indicates the adjacency is NOT established.";
1575 }
1576 enum "init" {
1577 description
1578 "State indicates the adjacency is establishing.";
1579 }
1580 enum "failed" {
1581 description
1582 "State indicates the adjacency is failed.";
1583 }
1584 }
1585 description
1586 "This type defines states of an adjacency";
1587 }
1589 typedef if-state-type {
1590 type enumeration {
1591 enum "up" {
1592 description "Up state.";
1594 }
1595 enum "down" {
1596 description "Down state";
1597 }
1598 }
1599 description
1600 "This type defines the state of an interface";
1601 }
1603 typedef level-number {
1604 type uint8 {
1605 range "1 .. 2";
1606 }
1607 description
1608 "This type defines the current IS-IS level.";
1609 }
1610 typedef lsp-id {
1611 type string {
1612 pattern
1613 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
1614 +'{4}\.[0-9][0-9]-[0-9][0-9]';
1615 }
1616 description
1617 "This type defines the IS-IS LSP ID format using a
1618 pattern, An example LSP ID is 0143.0438.AeF0.02-01";
1619 }
1621 typedef area-address {
1622 type string {
1623 pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}';
1624 }
1625 description
1626 "This type defines the area address format.";
1627 }
1629 typedef snpa {
1630 type string {
1631 length "0 .. 20";
1632 }
1633 description
1634 "This type defines the Subnetwork Point
1635 of Attachement (SNPA) format.";
1636 }
1638 typedef system-id {
1639 type string {
1640 pattern
1641 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}';
1642 }
1643 description
1644 "This type defines IS-IS system-id using pattern,
1645 An example system-id is 0143.0438.AeF0";
1646 }
1648 typedef wide-metric {
1649 type uint32 {
1650 range "0 .. 16777215";
1651 }
1652 description
1653 "This type defines wide style format of IS-IS metric.";
1654 }
1656 typedef std-metric {
1657 type uint8 {
1658 range "0 .. 63";
1659 }
1660 description
1661 "This type defines old style format of IS-IS metric.";
1662 }
1664 typedef mesh-group-state {
1665 type enumeration {
1666 enum "mesh-inactive" {
1667 description
1668 "Interface is not part of a mesh group.";
1669 }
1670 enum "mesh-set" {
1671 description
1672 "Interface is part of a mesh group.";
1673 }
1674 enum "mesh-blocked" {
1675 description
1676 "LSPs must not be flooded over this interface.";
1677 }
1678 }
1679 description
1680 "This type describes mesh group state of an interface";
1681 }
1683 /* Grouping definitions for configuration and ops state */
1685 grouping adjacency-state {
1686 container adjacencies {
1687 config false;
1688 list adjacency {
1689 leaf neighbor-sys-type {
1690 type level;
1691 description
1692 "Level capability of neighboring system";
1693 }
1694 leaf neighbor-sysid {
1695 type system-id;
1696 description
1697 "The system-id of the neighbor";
1698 }
1699 leaf neighbor-extended-circuit-id {
1700 type extended-circuit-id;
1701 description
1702 "Circuit ID of the neighbor";
1703 }
1704 leaf neighbor-snpa {
1705 type snpa;
1706 description
1707 "SNPA of the neighbor";
1708 }
1709 leaf usage {
1710 type level;
1711 description
1712 "Define the level(s) activated on the adjacency.
1713 On a p2p link this might be level 1 and 2,
1714 but on a LAN, the usage will be level 1
1715 between peers at level 1 or level 2 between
1716 peers at level 2.";
1717 }
1718 leaf hold-timer {
1719 type rt-types:timer-value-seconds16;
1720 units seconds;
1721 description
1722 "The holding time in seconds for this
1723 adjacency. This value is based on
1724 received hello PDUs and the elapsed
1725 time since receipt.";
1726 }
1727 leaf neighbor-priority {
1728 type uint8 {
1729 range "0 .. 127";
1730 }
1731 description
1732 "Priority of the neighboring IS for becoming
1733 the DIS.";
1734 }
1735 leaf lastuptime {
1736 type yang:timestamp;
1737 description
1738 "When the adjacency most recently entered
1739 state 'up', measured in hundredths of a
1740 second since the last reinitialization of
1741 the network management subsystem.
1742 The value is 0 if the adjacency has never
1743 been in state 'up'.";
1744 }
1745 leaf state {
1746 type adj-state-type;
1747 description
1748 "This leaf describes the state of the interface.";
1749 }
1751 description
1752 "List of operational adjacencies.";
1753 }
1754 description
1755 "This container lists the adjacencies of
1756 the local node.";
1757 }
1758 description
1759 "Adjacency state";
1760 }
1762 grouping fast-reroute-global-state {
1763 container protected-routes {
1764 config false;
1765 list af-stats {
1766 key "af prefix alternate";
1768 leaf af {
1769 type iana-rt-types:address-family;
1770 description
1771 "Address-family";
1772 }
1773 leaf prefix {
1774 type string;
1775 description
1776 "Protected prefix.";
1777 }
1778 leaf alternate {
1779 type string;
1780 description
1781 "Alternate nexthop for the prefix.";
1782 }
1783 leaf alternate-type {
1784 type enumeration {
1785 enum equal-cost {
1786 description
1787 "ECMP alternate.";
1788 }
1789 enum lfa {
1790 description
1791 "LFA alternate.";
1792 }
1793 enum remote-lfa {
1794 description
1795 "Remote LFA alternate.";
1796 }
1797 enum tunnel {
1798 description
1799 "Tunnel based alternate
1800 (like RSVP-TE or GRE).";
1801 }
1802 enum ti-lfa {
1803 description
1804 "TI-LFA alternate.";
1805 }
1806 enum mrt {
1807 description
1808 "MRT alternate.";
1809 }
1810 enum other {
1811 description
1812 "Unknown alternate type.";
1813 }
1814 }
1815 description
1816 "Type of alternate.";
1817 }
1818 leaf best {
1819 type boolean;
1820 description
1821 "Indicates if the alternate is the preferred.";
1822 }
1823 leaf non-best-reason {
1824 type string;
1825 description
1826 "Information field to describe why the alternate
1827 is not best.";
1828 }
1829 leaf protection-available {
1830 type bits {
1831 bit node-protect {
1832 position 0;
1833 description
1834 "Node protection available.";
1835 }
1836 bit link-protect {
1837 position 1;
1838 description
1839 "Link protection available.";
1840 }
1841 bit srlg-protect {
1842 position 2;
1843 description
1844 "SRLG protection available.";
1845 }
1846 bit downstream-protect {
1847 position 3;
1848 description
1849 "Downstream protection available.";
1850 }
1851 bit other {
1852 position 4;
1853 description
1854 "Other protection available.";
1855 }
1856 }
1857 description "Protection provided by the alternate.";
1858 }
1859 leaf alternate-metric1 {
1860 type uint32;
1861 description
1862 "Metric from Point of Local Repair (PLR) to
1863 destination through the alternate path.";
1864 }
1865 leaf alternate-metric2 {
1866 type uint32;
1867 description
1868 "Metric from PLR to the alternate node";
1869 }
1870 leaf alternate-metric3 {
1871 type uint32;
1872 description
1873 "Metric from alternate node to the destination";
1874 }
1875 description
1876 "Per-AF protected prefix statistics.";
1877 }
1878 description
1879 "List of prefixes that are protected.";
1880 }
1882 container unprotected-routes {
1883 config false;
1884 list af-stats {
1885 key "af prefix";
1887 leaf af {
1888 type iana-rt-types:address-family;
1890 description "Address-family";
1891 }
1892 leaf prefix {
1893 type string;
1894 description "Unprotected prefix.";
1895 }
1896 description
1897 "Per AF unprotected prefix statistics.";
1898 }
1899 description
1900 "List of prefixes that are not protected.";
1901 }
1903 list protection-statistics {
1904 key frr-protection-method;
1905 config false;
1906 leaf frr-protection-method {
1907 type string;
1908 description "Protection method used.";
1909 }
1910 list af-stats {
1911 key af;
1913 leaf af {
1914 type iana-rt-types:address-family;
1916 description "Address-family";
1917 }
1918 leaf total-routes {
1919 type uint32;
1920 description "Total prefixes.";
1921 }
1922 leaf unprotected-routes {
1923 type uint32;
1924 description
1925 "Total prefixes that are not protected.";
1926 }
1927 leaf protected-routes {
1928 type uint32;
1929 description
1930 "Total prefixes that are protected.";
1931 }
1932 leaf linkprotected-routes {
1933 type uint32;
1934 description
1935 "Total prefixes that are link protected.";
1936 }
1937 leaf nodeprotected-routes {
1938 type uint32;
1939 description
1940 "Total prefixes that are node protected.";
1941 }
1942 description
1943 "Per AF protected prefix statistics.";
1945 }
1947 description "Global protection statistics.";
1948 }
1949 description "IPFRR states.";
1950 }
1952 grouping notification-instance-hdr {
1953 description
1954 "Instance specific IS-IS notification data grouping";
1955 leaf routing-instance {
1956 type string;
1957 description "Name of the routing-instance instance.";
1958 }
1959 leaf routing-protocol-name {
1960 type string;
1961 description "Name of the IS-IS instance.";
1962 }
1963 leaf isis-level {
1964 type level;
1965 description "IS-IS level of the instance.";
1966 }
1967 }
1969 grouping notification-interface-hdr {
1970 description
1971 "Interface specific IS-IS notification data grouping";
1972 leaf interface-name {
1973 type string;
1974 description "IS-IS interface name";
1975 }
1976 leaf interface-level {
1977 type level;
1978 description "IS-IS level of the interface.";
1979 }
1980 leaf extended-circuit-id {
1981 type extended-circuit-id;
1982 description "Eextended circuit-id of the interface.";
1983 }
1984 }
1986 grouping route-content {
1987 description
1988 "IS-IS protocol-specific route properties grouping.";
1989 leaf metric {
1990 type uint32;
1991 description "IS-IS metric of a route.";
1992 }
1993 leaf-list tag {
1994 type uint64;
1995 description
1996 "List of tags associated with the route. The leaf
1997 describes both 32-bit and 64-bit tags.";
1998 }
1999 leaf route-type {
2000 type enumeration {
2001 enum l2-up-internal {
2002 description "Level 2 internal route
2003 and not leaked to a lower level";
2004 }
2005 enum l1-up-internal {
2006 description "Level 1 internal route
2007 and not leaked to a lower level";
2008 }
2009 enum l2-up-external {
2010 description "Level 2 external route
2011 and not leaked to a lower level";
2012 }
2013 enum l1-up-external {
2014 description "Level 1 external route
2015 and not leaked to a lower level";
2016 }
2017 enum l2-down-internal {
2018 description "Level 2 internal route
2019 and leaked to a lower level";
2020 }
2021 enum l1-down-internal {
2022 description "Level 1 internal route
2023 and leaked to a lower level";
2024 }
2025 enum l2-down-external {
2026 description "Level 2 external route
2027 and leaked to a lower level";
2028 }
2029 enum l1-down-external {
2030 description "Level 1 external route
2031 and leaked to a lower level";
2032 }
2033 }
2034 description "IS-IS route type.";
2035 }
2036 }
2038 grouping admin-control {
2039 leaf enable {
2040 if-feature admin-control;
2041 type boolean;
2042 default true;
2043 description
2044 "Control the administrative state.";
2045 }
2046 description
2047 "Grouping for admin control.";
2048 }
2050 grouping fast-reroute-global-cfg {
2051 description
2052 "IPFRR global configuration grouping";
2053 container lfa {
2054 if-feature lfa;
2055 description
2056 "This container may be augmented with global
2057 parameters for LFA. Creating the container has no
2058 effect on LFA activation.";
2059 }
2060 }
2062 grouping fast-reroute-if-cfg {
2063 description
2064 "IPFRR interface configuration grouping";
2065 container lfa {
2066 if-feature lfa;
2067 uses lfa-if-cfg;
2068 container level-1 {
2069 uses lfa-if-cfg;
2070 description
2071 "LFA level 1 config";
2072 }
2073 container level-2 {
2074 uses lfa-if-cfg;
2075 description
2076 "LFA level 2 config";
2077 }
2078 description
2079 "LFA config";
2080 }
2081 }
2083 grouping ietf-spf-delay-cfg {
2084 leaf initial-delay {
2085 type rt-types:timer-value-milliseconds;
2086 units msec;
2087 description
2088 "Delay used while in QUIET state.";
2090 }
2091 leaf short-delay {
2092 type rt-types:timer-value-milliseconds;
2093 units msec;
2094 description
2095 "Delay used while in SHORT_WAIT state.";
2096 }
2097 leaf long-delay {
2098 type rt-types:timer-value-milliseconds;
2099 units msec;
2100 description
2101 "Delay used while in LONG_WAIT state.";
2102 }
2104 leaf hold-down {
2105 type rt-types:timer-value-milliseconds;
2106 units msec;
2107 description
2108 "Timer used to consider an IGP stability period.";
2109 }
2110 leaf time-to-learn {
2111 type rt-types:timer-value-milliseconds;
2112 units msec;
2113 description
2114 "Duration used to learn all the IGP events
2115 related to a single component failure.";
2116 }
2118 description
2119 "Grouping for IETF SPF delay configuration.";
2120 }
2122 grouping ietf-spf-delay-state {
2123 leaf current-state {
2124 type enumeration {
2125 enum "quiet" {
2126 description "QUIET state";
2127 }
2128 enum "short-wait" {
2129 description "SHORT_WAIT state";
2130 }
2131 enum "long-wait" {
2132 description "LONG_WAIT state";
2133 }
2134 }
2135 config false;
2136 description
2137 "Current SPF backoff algorithm state.";
2139 }
2140 leaf remaining-time-to-learn {
2141 type rt-types:timer-value-milliseconds;
2142 units "msec";
2143 config false;
2144 description
2145 "Remaining time until time-to-learn timer fires.";
2146 }
2147 leaf remaining-hold-down {
2148 type rt-types:timer-value-milliseconds;
2149 units "msec";
2150 config false;
2151 description
2152 "Remaining time until hold-down timer fires.";
2153 }
2154 leaf last-event-received {
2155 type yang:timestamp;
2156 config false;
2157 description
2158 "Time of last IGP event received";
2159 }
2160 leaf next-spf-time {
2161 type yang:timestamp;
2162 config false;
2163 description
2164 "Time when next SPF has been scheduled.";
2165 }
2166 leaf last-spf-time {
2167 type yang:timestamp;
2168 config false;
2169 description
2170 "Time of last SPF computation.";
2171 }
2172 description
2173 "Grouping for IETF SPF delay operational states.";
2174 }
2176 grouping local-rib {
2177 description "Local-rib grouping.";
2178 container local-rib {
2179 config false;
2180 description "Local-rib.";
2181 list route {
2182 key "prefix";
2183 description "List of IS-IS local RIB Routes";
2184 leaf prefix {
2185 type inet:ip-prefix;
2186 description "Destination prefix.";
2188 }
2189 container next-hops {
2190 description "All next hops for the route.";
2191 list next-hop {
2192 key "next-hop";
2193 description "List of next hop for the route";
2194 leaf outgoing-interface {
2195 type if:interface-ref;
2196 description
2197 "Name of the outgoing interface.";
2198 }
2199 leaf next-hop {
2200 type inet:ip-address;
2201 description "Nexthop address.";
2202 }
2203 }
2204 }
2205 leaf metric {
2206 type uint32;
2207 description "Metric for this route.";
2208 }
2209 leaf level {
2210 type level-number;
2211 description "Level number for this route.";
2212 }
2213 leaf route-tag {
2214 type uint32;
2215 description "Route tag for this route.";
2216 }
2217 }
2218 }
2219 }
2221 grouping isis-node-tag-cfg {
2222 description "IS-IS node tag config.";
2223 container node-tags {
2224 if-feature node-tag;
2225 list node-tag {
2226 key tag;
2227 leaf tag {
2228 type uint32;
2229 description
2230 "Node tag value.";
2231 }
2232 description
2233 "List of tags.";
2234 }
2235 description
2236 "Container for node tags.";
2237 }
2238 }
2240 grouping authentication-global-cfg {
2241 choice authentication-type {
2242 case key-chain {
2243 if-feature key-chain;
2244 leaf key-chain {
2245 type key-chain:key-chain-ref;
2246 description
2247 "Reference to a key-chain.";
2248 }
2249 }
2250 case password {
2251 leaf key {
2252 type string;
2253 description
2254 "This leaf specifies the authentication key.";
2255 }
2256 leaf crypto-algorithm {
2257 type identityref {
2258 base key-chain:crypto-algorithm;
2259 }
2260 description
2261 "Cryptographic algorithm associated with key.";
2262 }
2263 }
2264 description "Choice of authentication.";
2265 }
2266 description "Grouping for global authentication config.";
2267 }
2269 grouping metric-type-global-cfg {
2270 leaf value {
2271 type enumeration {
2272 enum wide-only {
2273 description
2274 "Advertise new metric style only (RFC5305)";
2275 }
2276 enum old-only {
2277 description
2278 "Advertise old metric style only (RFC1195)";
2279 }
2280 enum both {
2281 description "Advertise both metricstyles";
2282 }
2283 }
2284 default wide-only;
2285 description
2286 "Type of metric to be generated:
2287 - wide-only means only new metric style
2288 is generated,
2289 - old-only means that only old style metric
2290 is generated,
2291 - both means that both are advertised.
2292 This leaf is only affecting IPv4 metrics.";
2293 }
2294 description
2295 "Grouping for global metric style config.";
2296 }
2298 grouping default-metric-global-cfg {
2299 leaf value {
2300 type wide-metric;
2301 default "10";
2302 description "Value of the metric";
2303 }
2304 description
2305 "Global default metric config grouping.";
2306 }
2308 grouping overload-global-cfg {
2309 leaf status {
2310 type boolean;
2311 default false;
2312 description
2313 "This leaf specifies the overload status.";
2314 }
2315 description "Grouping for overload bit config.";
2316 }
2318 grouping overload-max-metric-global-cfg {
2319 leaf timeout {
2320 type rt-types:timer-value-seconds16;
2321 units "seconds";
2322 description
2323 "Timeout (in seconds) of the overload condition.";
2324 }
2325 description
2326 "Overload maximum metric configuration grouping";
2327 }
2329 grouping route-preference-global-cfg {
2330 choice granularity {
2331 case detail {
2332 leaf internal {
2333 type uint8;
2334 description
2335 "Protocol preference for internal routes.";
2336 }
2337 leaf external {
2338 type uint8;
2339 description
2340 "Protocol preference for external routes.";
2341 }
2342 }
2343 case coarse {
2344 leaf default {
2345 type uint8;
2346 description
2347 "Protocol preference for all IS-IS routes.";
2348 }
2349 }
2350 description
2351 "Choice for implementation of route preference.";
2352 }
2353 description
2354 "Global route preference grouping";
2355 }
2357 grouping hello-authentication-cfg {
2358 choice authentication-type {
2359 case key-chain {
2360 if-feature key-chain;
2361 leaf key-chain {
2362 type key-chain:key-chain-ref;
2363 description "Reference to a key-chain.";
2364 }
2365 }
2366 case password {
2367 leaf key {
2368 type string;
2369 description "Authentication key specification";
2370 }
2371 leaf crypto-algorithm {
2372 type identityref {
2373 base key-chain:crypto-algorithm;
2374 }
2375 description
2376 "Cryptographic algorithm associated with key.";
2377 }
2378 }
2379 description "Choice of authentication.";
2380 }
2381 description "Grouping for hello authentication.";
2382 }
2384 grouping hello-interval-cfg {
2385 leaf value {
2386 type rt-types:timer-value-seconds16;
2387 units "seconds";
2388 default 10;
2389 description
2390 "Interval (in seconds) between successive hello
2391 messages.";
2392 }
2394 description "Interval between hello messages.";
2395 }
2397 grouping hello-multiplier-cfg {
2398 leaf value {
2399 type uint16;
2400 default 3;
2401 description
2402 "Number of missed hello messages prior to
2403 declaring the adjacency down.";
2404 }
2405 description
2406 "Number of missed hello messages prior to
2407 adjacency down grouping.";
2408 }
2410 grouping priority-cfg {
2411 leaf value {
2412 type uint8 {
2413 range "0 .. 127";
2414 }
2415 default 64;
2416 description
2417 "Priority of interface for DIS election.";
2418 }
2420 description "Interface DIS election priority grouping";
2421 }
2423 grouping metric-cfg {
2424 leaf value {
2425 type wide-metric;
2426 default "10";
2427 description "Metric value.";
2428 }
2429 description "Interface metric grouping";
2430 }
2432 grouping lfa-if-cfg {
2433 leaf candidate-disabled {
2434 type boolean;
2435 default false;
2436 description
2437 "Prevent the interface to be used as backup.";
2438 }
2439 leaf enable {
2440 type boolean;
2441 default false;
2442 description
2443 "LFA Activation - this model assumes activation
2444 of per-prefix LFA.";
2445 }
2447 container remote-lfa {
2448 if-feature remote-lfa;
2449 leaf enable {
2450 type boolean;
2451 default false;
2452 description
2453 "Activates rLFA.";
2454 }
2455 description "Remote LFA configuration.";
2456 }
2457 description "Grouping for LFA interface configuration";
2458 }
2460 grouping isis-global-cfg {
2461 description "IS-IS global configuration grouping";
2463 uses admin-control;
2465 leaf level-type {
2466 type level;
2467 default "level-all";
2468 description
2469 "Level of an IS-IS node - can be level-1-only,
2470 level-2-only or level-1-2.";
2471 }
2473 leaf system-id {
2474 type system-id;
2475 description "System-id of the node.";
2476 }
2478 leaf maximum-area-addresses {
2479 if-feature maximum-area-addresses;
2480 type uint8;
2481 default 3;
2482 description "Maximum areas supported.";
2483 }
2485 leaf-list area-address {
2486 type area-address;
2487 description
2488 "List of areas supported by the protocol instance.";
2489 }
2491 container mpls {
2492 container te-rid {
2493 if-feature te-rid;
2494 description
2495 "Stable ISIS Router IP Address used for Traffic
2496 Engineering";
2497 leaf ipv4-router-id {
2498 type inet:ipv4-address;
2499 description
2500 "Router ID value that would be used in TLV 134.";
2501 }
2502 leaf ipv6-router-id {
2503 type inet:ipv6-address;
2504 description
2505 "Router ID value that would be used in TLV 140.";
2506 }
2507 }
2508 container ldp {
2509 container igp-sync {
2510 if-feature ldp-igp-sync;
2511 description
2512 "This container may be augmented with global
2513 parameters for igp-ldp-sync.";
2514 }
2515 description "LDP configuration.";
2516 }
2517 description "MPLS configuration";
2518 }
2519 container auto-cost {
2520 if-feature auto-cost;
2521 leaf reference-bandwidth {
2522 type uint32;
2523 units "bps";
2524 description "Bandwidth for calculating metric.";
2525 }
2526 leaf enable {
2527 type boolean;
2528 default false;
2529 description "Enable/disable auto-cost.";
2530 }
2531 description "Auto-cost configuration.";
2532 }
2533 leaf lsp-mtu {
2534 type uint16;
2535 units "bytes";
2536 default 1492;
2537 description
2538 "Maximum size of an LSP PDU in bytes.";
2539 }
2540 leaf lsp-lifetime {
2541 type uint16 {
2542 range "1..65535";
2543 }
2544 units "seconds";
2545 description
2546 "Lifetime of the router's LSPs in seconds.";
2547 }
2548 leaf lsp-refresh {
2549 if-feature lsp-refresh;
2550 type rt-types:timer-value-seconds16;
2551 units "seconds";
2552 description
2553 "Refresh interval of the router's LSPs in seconds.";
2554 }
2555 container graceful-restart {
2556 if-feature graceful-restart;
2557 leaf enable {
2558 type boolean;
2559 default false;
2560 description "Enable graceful restart.";
2561 }
2562 leaf restart-interval {
2563 type rt-types:timer-value-seconds16;
2564 units "seconds";
2565 description
2566 "Interval (in seconds) to attempt graceful restart prior
2567 to failure.";
2568 }
2569 leaf helper-enable {
2570 type boolean;
2571 default true;
2572 description
2573 "Enable local IS-IS router as graceful restart helper.";
2574 }
2575 description "Graceful-Restart Configuration.";
2576 }
2578 container nsr {
2579 if-feature nsr;
2580 description "Non-Stop Routing (NSR) configuration.";
2581 leaf enable {
2582 type boolean;
2583 default false;
2584 description "Enable/Disable Non-Stop Routing (NSR).";
2585 }
2586 }
2588 uses isis-node-tag-cfg;
2590 container authentication {
2591 uses authentication-global-cfg;
2593 container level-1 {
2594 uses authentication-global-cfg;
2595 description "level-1 specific configuration";
2596 }
2597 container level-2 {
2598 uses authentication-global-cfg;
2599 description "level-2 specific configuration";
2600 }
2601 description "Authentication global configuration for
2602 both LSPs and SNPs.";
2603 }
2605 container metric-type {
2606 uses metric-type-global-cfg;
2607 container level-1 {
2608 uses metric-type-global-cfg;
2609 description "level-1 specific configuration";
2610 }
2611 container level-2 {
2612 uses metric-type-global-cfg;
2613 description "level-2 specific configuration";
2614 }
2615 description "Metric style global configuration";
2616 }
2618 container default-metric {
2619 uses default-metric-global-cfg;
2620 container level-1 {
2621 uses default-metric-global-cfg;
2622 description "level-1 specific configuration";
2623 }
2624 container level-2 {
2625 uses default-metric-global-cfg;
2626 description "level-2 specific configuration";
2627 }
2628 description "Default metric global configuration";
2629 }
2631 container afs {
2632 if-feature nlpid-control;
2633 list af {
2634 key af;
2635 leaf af {
2636 type iana-rt-types:address-family;
2637 description "Address-family";
2638 }
2639 leaf enable {
2640 type boolean;
2641 description "Activate the address family.";
2642 }
2643 description
2644 "List of address families and whether or not they
2645 are activated.";
2646 }
2647 description "Address Family configuration";
2648 }
2650 container preference {
2651 uses route-preference-global-cfg;
2652 description "Router preference configuration for IS-IS
2653 protocol instance route installation";
2654 }
2656 container overload {
2657 uses overload-global-cfg;
2658 description "Router protocol instance overload state
2659 configuration";
2660 }
2662 container overload-max-metric {
2663 if-feature overload-max-metric;
2664 uses overload-max-metric-global-cfg;
2665 description
2666 "Router protocol instance overload maximum
2667 metric advertisement configuration.";
2668 }
2669 }
2671 grouping isis-global-topologies-cfg {
2672 description "Per-topology configuration";
2673 container default-metric {
2674 uses default-metric-global-cfg;
2675 container level-1 {
2676 uses default-metric-global-cfg;
2677 description "level-1 specific configuration";
2678 }
2679 container level-2 {
2680 uses default-metric-global-cfg;
2681 description "level-2 specific configuration";
2682 }
2683 description "Default metric per-topology configuration";
2684 }
2685 uses isis-node-tag-cfg;
2686 }
2688 grouping isis-if-cfg {
2689 description "Interface configuration grouping";
2690 leaf level-type {
2691 type level;
2692 default "level-all";
2693 description "IS-IS level of the interface.";
2694 }
2695 leaf lsp-pacing-interval {
2696 type rt-types:timer-value-milliseconds;
2697 units "milliseconds";
2698 default 33;
2699 description
2700 "Interval (in milli-seconds) between LSP
2701 transmissions.";
2702 }
2703 leaf lsp-retransmit-interval {
2704 type rt-types:timer-value-seconds16;
2705 units "seconds";
2706 description
2707 "Interval (in seconds) between LSP
2708 retransmissions.";
2709 }
2710 leaf passive {
2711 type boolean;
2712 default "false";
2713 description
2714 "Indicates whetherthe interface is in passive mode (IS-IS
2715 not running but network is advertised).";
2716 }
2717 leaf csnp-interval {
2718 type rt-types:timer-value-seconds16;
2719 units "seconds";
2720 default 10;
2721 description
2722 "Interval (in seconds) between CSNP messages.";
2723 }
2724 container hello-padding {
2725 leaf enable {
2726 type boolean;
2727 default "true";
2728 description
2729 "IS-IS Hello-padding activation - enabled by default.";
2730 }
2731 description "IS-IS hello padding configuration.";
2732 }
2733 leaf mesh-group-enable {
2734 type mesh-group-state;
2735 description "IS-IS interface mesh-group state";
2736 }
2737 leaf mesh-group {
2738 when "../mesh-group-enable = 'mesh-set'" {
2739 description
2740 "Only valid when mesh-group-enable equals meshset";
2741 }
2742 type uint8;
2743 description "IS-IS interface mesh-group ID.";
2744 }
2745 leaf interface-type {
2746 type interface-type;
2747 default "broadcast";
2748 description
2749 "Type of adjacency to be established on the interface. This
2750 dictates the type of hello messages that are used.";
2751 }
2753 uses admin-control;
2755 leaf-list tag {
2756 if-feature prefix-tag;
2757 type uint32;
2758 description
2759 "List of tags associated with the interface.";
2760 }
2761 leaf-list tag64 {
2762 if-feature prefix-tag64;
2763 type uint64;
2764 description
2765 "List of 64-bit tags associated with the interface.";
2766 }
2767 leaf node-flag {
2768 if-feature node-flag;
2769 type boolean;
2770 default false;
2771 description
2772 "Set prefix as a node representative prefix.";
2773 }
2774 container hello-authentication {
2775 uses hello-authentication-cfg;
2776 container level-1 {
2777 uses hello-authentication-cfg;
2778 description "level-1 specific configuration";
2779 }
2780 container level-2 {
2781 uses hello-authentication-cfg;
2782 description "level-2 specific configuration";
2783 }
2784 description
2785 "Authentication type to be used in hello messages.";
2786 }
2787 container hello-interval {
2788 uses hello-interval-cfg;
2789 container level-1 {
2790 uses hello-interval-cfg;
2791 description "level-1 specific configuration";
2792 }
2793 container level-2 {
2794 uses hello-interval-cfg;
2795 description "level-2 specific configuration";
2796 }
2797 description "Interval between hello messages.";
2798 }
2799 container hello-multiplier {
2800 uses hello-multiplier-cfg;
2801 container level-1 {
2802 uses hello-multiplier-cfg;
2803 description "level-1 specific configuration";
2804 }
2805 container level-2 {
2806 uses hello-multiplier-cfg;
2807 description "level-2 specific configuration";
2808 }
2809 description "Hello multiplier configuration.";
2810 }
2811 container priority {
2812 must '../interface-type = "broadcast"' {
2813 error-message
2814 "Priority only applies to broadcast interfaces.";
2815 description "Check for broadcast interface.";
2816 }
2817 uses priority-cfg;
2818 container level-1 {
2819 uses priority-cfg;
2820 description "level-1 specific configuration";
2821 }
2822 container level-2 {
2823 uses priority-cfg;
2824 description "level-2 specific configuration";
2825 }
2826 description "Priority for DIS election.";
2827 }
2828 container metric {
2829 uses metric-cfg;
2830 container level-1 {
2831 uses metric-cfg;
2832 description "level-1 specific configuration";
2833 }
2834 container level-2 {
2835 uses metric-cfg;
2836 description "level-2 specific configuration";
2837 }
2838 description "Metric configuration.";
2839 }
2840 container bfd {
2841 if-feature bfd;
2842 description "BFD Client Configuration.";
2843 uses bfd-types:client-cfg-parms;
2845 reference "draft-ietf-bfd-yang-xx.txt:
2846 YANG Data Model for Bidirectional Forwarding
2847 Detection (BFD)";
2848 }
2849 container afs {
2850 if-feature nlpid-control;
2851 list af {
2852 key af;
2853 leaf af {
2854 type iana-rt-types:address-family;
2855 description "Address-family";
2856 }
2857 description "List of AFs.";
2858 }
2859 description "Interface address-families";
2860 }
2861 container mpls {
2862 container ldp {
2863 leaf igp-sync {
2864 if-feature ldp-igp-sync;
2865 type boolean;
2866 default false;
2867 description "Enables IGP/LDP synchronization";
2868 }
2869 description "LDP protocol related configuration.";
2870 }
2871 description "MPLS configuration for IS-IS interfaces";
2872 }
2873 }
2875 grouping isis-if-topologies-cfg {
2876 description "IS-IS interface topology configuration.";
2877 container metric {
2878 uses metric-cfg;
2879 container level-1 {
2880 uses metric-cfg;
2881 description "level-1 specific configuration";
2882 }
2883 container level-2 {
2884 uses metric-cfg;
2885 description "level-2 specific configuration";
2886 }
2887 description "Metric IS-IS interface configuration.";
2888 }
2889 }
2891 grouping system-counters {
2892 container system-counters {
2893 config false;
2894 list level {
2895 key level;
2897 leaf level {
2898 type level-number;
2899 description "IS-IS level.";
2900 }
2901 leaf corrupted-lsps {
2902 type uint32;
2903 description
2904 "Number of corrupted in-memory LSPs detected.
2905 LSPs received from the wire with a bad
2906 checksum are silently dropped and not counted.
2908 LSPs received from the wire with parse errors
2909 are counted by lsp-errors.";
2910 }
2911 leaf authentication-type-fails {
2912 type uint32;
2913 description
2914 "Number of authentication type mismatches.";
2915 }
2916 leaf authentication-fails {
2917 type uint32;
2918 description
2919 "Number of authentication key failures.";
2920 }
2921 leaf database-overload {
2922 type uint32;
2923 description
2924 "Number of times the database has become
2925 overloaded.";
2926 }
2927 leaf own-lsp-purge {
2928 type uint32;
2929 description
2930 "Number of times a zero-aged copy of the system's
2931 own LSP is received from some other IS-IS node.";
2932 }
2933 leaf manual-address-drop-from-area {
2934 type uint32;
2935 description
2936 "Number of times a manual address
2937 has been dropped from the area.";
2938 }
2939 leaf max-sequence {
2940 type uint32;
2941 description
2942 "Number of times the system has attempted
2943 to exceed the maximum sequence number.";
2944 }
2945 leaf sequence-number-skipped {
2946 type uint32;
2947 description
2948 "Number of times a sequence number skip has
2949 occured.";
2950 }
2951 leaf id-len-mismatch {
2952 type uint32;
2953 description
2954 "Number of times a PDU is received with a
2955 different value for the ID field length
2956 than that of the receiving system.";
2957 }
2958 leaf partition-changes {
2959 type uint32;
2960 description
2961 "Number of partition changes detected.";
2962 }
2963 leaf lsp-errors {
2964 type uint32;
2965 description
2966 "Number of LSPs with errors we have received.";
2967 }
2968 leaf spf-runs {
2969 type uint32;
2970 description
2971 "Number of times we ran SPF at this level.";
2972 }
2973 description
2974 "List of supported levels.";
2975 }
2976 description
2977 "List counters for the IS-IS protocol instance";
2978 }
2979 description "System counters grouping.";
2980 }
2982 grouping event-counters {
2983 container event-counters {
2984 config false;
2985 leaf adjacency-changes {
2986 type uint32;
2987 description
2988 "The number of times an adjacency state change has
2989 occured on this interface.";
2990 }
2991 leaf adjacency-number {
2992 type uint32;
2993 description
2994 "The number of adjacencies on this interface.";
2995 }
2996 leaf init-fails {
2997 type uint32;
2998 description
2999 "The number of times initialization of this
3000 interface has failed. This counts events such
3001 as PPP NCP failures. Failures to form an
3002 adjacency are counted by adjacency-rejects.";
3003 }
3004 leaf adjacency-rejects {
3005 type uint32;
3006 description
3007 "The number of times an adjacency has been
3008 rejected on this interface.";
3009 }
3010 leaf id-len-mismatch {
3011 type uint32;
3012 description
3013 "The number of times an IS-IS PDU with an ID
3014 field length different from that for this
3015 system has been received on this interface.";
3016 }
3017 leaf max-area-addresses-mismatch {
3018 type uint32;
3019 description
3020 "The number of times an IS-IS PDU has been
3021 received on this interface with the
3022 max area address field differing from that of
3023 this system.";
3024 }
3025 leaf authentication-type-fails {
3026 type uint32;
3027 description
3028 "Number of authentication type mismatches.";
3029 }
3030 leaf authentication-fails {
3031 type uint32;
3032 description
3033 "Number of authentication key failures.";
3034 }
3035 leaf lan-dis-changes {
3036 type uint32;
3037 description
3038 "The number of times the DIS has changed on this
3039 interface at this level. If the interface type is
3040 point-to-point,the count is zero.";
3041 }
3042 description "IS-IS interface event counters.";
3043 }
3044 description
3045 "Grouping for IS-IS interface event counters";
3046 }
3048 grouping packet-counters {
3049 container packet-counters {
3050 config false;
3051 list level {
3052 key level;
3054 leaf level {
3055 type level-number;
3056 description "IS-IS level.";
3057 }
3058 container iih {
3059 leaf in {
3060 type uint32;
3061 description "Received IIH PDUs.";
3062 }
3063 leaf out {
3064 type uint32;
3065 description "Sent IIH PDUs.";
3066 }
3067 description "Number of IIH PDUs received/sent.";
3068 }
3069 container ish {
3070 leaf in {
3071 type uint32;
3072 description "Received ISH PDUs.";
3073 }
3074 leaf out {
3075 type uint32;
3076 description "Sent ISH PDUs.";
3077 }
3078 description
3079 "ISH PDUs received/sent.";
3080 }
3081 container esh {
3082 leaf in {
3083 type uint32;
3084 description "Received ESH PDUs.";
3085 }
3086 leaf out {
3087 type uint32;
3088 description "Sent ESH PDUs.";
3089 }
3090 description "Number of ESH PDUs received/sent.";
3091 }
3092 container lsp {
3093 leaf in {
3094 type uint32;
3095 description "Received LSP PDUs.";
3096 }
3097 leaf out {
3098 type uint32;
3099 description "Sent LSP PDUs.";
3101 }
3102 description "Number of LSP PDUs received/sent.";
3103 }
3104 container psnp {
3105 leaf in {
3106 type uint32;
3107 description "Received PSNP PDUs.";
3108 }
3109 leaf out {
3110 type uint32;
3111 description "Sent PSNP PDUs.";
3112 }
3113 description "Number of PSNP PDUs received/sent.";
3114 }
3115 container csnp {
3116 leaf in {
3117 type uint32;
3118 description "Received CSNP PDUs.";
3119 }
3120 leaf out {
3121 type uint32;
3122 description "Sent CSNP PDUs.";
3123 }
3124 description "Number of CSNP PDUs received/sent.";
3125 }
3126 container unknown {
3127 leaf in {
3128 type uint32;
3129 description "Received unknown PDUs.";
3130 }
3131 leaf out {
3132 type uint32;
3133 description "Sent unknown PDUs.";
3134 }
3135 description "Number of unknown PDUs received/sent.";
3136 }
3137 description
3138 "List of packet counter for supported llevels.";
3139 }
3140 description "Packet counters per IS-IS level.";
3141 }
3142 description
3143 "Grouping for per IS-IS Level packet counters.";
3144 }
3146 grouping spf-log {
3147 container spf-log {
3148 config false;
3149 list event {
3150 key id;
3152 leaf id {
3153 type uint32;
3154 description
3155 "Event identifier - purely internal value.";
3156 }
3157 leaf spf-type {
3158 type enumeration {
3159 enum full {
3160 description "Full SPF computation.";
3161 }
3162 enum route-only {
3163 description
3164 "Route reachability only SPF computation";
3165 }
3166 }
3167 description "Type of SPF computation performed.";
3168 }
3169 leaf level {
3170 type level-number;
3171 description
3172 "IS-IS level number for SPF computation";
3173 }
3174 leaf schedule-timestamp {
3175 type yang:timestamp;
3176 description
3177 "Timestamp of when the SPF computation was
3178 scheduled.";
3179 }
3180 leaf start-timestamp {
3181 type yang:timestamp;
3182 description
3183 "Timestamp of when the SPF computation started.";
3184 }
3185 leaf end-timestamp {
3186 type yang:timestamp;
3187 description
3188 "Timestamp of when the SPF computation ended.";
3189 }
3190 list trigger-lsp {
3191 key "lsp";
3192 leaf lsp {
3193 type lsp-id;
3194 description
3195 "LSPID of the LSP triggering SPF computation.";
3196 }
3197 leaf sequence {
3198 type uint32;
3199 description
3200 "Sequence number of the LSP triggering SPF
3201 computation";
3202 }
3203 description
3204 "This list includes the LSPs that triggered the
3205 SPF computation.";
3206 }
3207 description
3208 "List of computation events - implemented as a
3209 wrapping buffer.";
3210 }
3212 description
3213 "This container lists the SPF computation events.";
3214 }
3215 description "Grouping for spf-log events.";
3216 }
3218 grouping lsp-log {
3219 container lsp-log {
3220 config false;
3221 list event {
3222 key id;
3224 leaf id {
3225 type uint32;
3226 description
3227 "Event identifier - purely internal value.";
3228 }
3229 leaf level {
3230 type level-number;
3231 description
3232 "IS-IS level number for LSP";
3233 }
3234 container lsp {
3235 leaf lsp {
3237 type lsp-id;
3238 description
3239 "LSPID of the LSP.";
3240 }
3241 leaf sequence {
3242 type uint32;
3243 description
3244 "Sequence number of the LSP.";
3246 }
3247 description
3248 "LSP identification container - either the received
3249 LSP or the locally generated LSP.";
3250 }
3252 leaf received-timestamp {
3253 type yang:timestamp;
3255 description
3256 "Timestamp of when the LSP was received. In case
3257 of local LSP update, the timestamp refers to the
3258 local LSP update time.";
3259 }
3261 leaf change {
3262 type identityref {
3263 base lsp-log-reason;
3264 }
3265 description "Type of LSP change.";
3266 }
3268 description
3269 "List of LSP events - implemented as a
3270 wrapping buffer.";
3271 }
3273 description
3274 "LSP reception and local LSP origination events
3275 container.";
3277 } description "Grouping for LSP log.";
3278 }
3280 grouping hostname-db {
3281 container hostnames {
3282 config false;
3283 list hostname {
3284 key system-id;
3285 leaf system-id {
3286 type system-id;
3287 description
3288 "System-id associated with the hostname.";
3289 }
3290 leaf hostname {
3291 type string;
3292 description
3293 "Hostname associated with the system ID.";
3295 }
3296 description
3297 "List of system-id/hostname associations.";
3298 }
3299 description
3300 "Hostname to system-id mapping database.";
3301 }
3302 description
3303 "Grouping for hostname to system-id mapping database.";
3304 }
3306 /* Groupings for the LSDB description */
3308 grouping prefix-reachability-attributes {
3309 description
3310 "Grouping for extended reachability attributes of an
3311 IPv4 or IPv6 prefix.";
3313 leaf external-prefix-flag {
3314 type boolean;
3315 description "External prefix flag.";
3316 }
3317 leaf readvertisement-flag {
3318 type boolean;
3319 description "Readvertisement flag.";
3320 }
3321 leaf node-flag {
3322 type boolean;
3323 description "Node flag.";
3324 }
3325 }
3327 grouping prefix-ipv4-source-router-id {
3328 description
3329 "Grouping for the IPv4 source router ID of a prefix
3330 advertisement.";
3332 leaf ipv4-source-router-id {
3333 type inet:ipv4-address;
3334 description "IPv4 Source router ID address.";
3335 }
3336 }
3338 grouping prefix-ipv6-source-router-id {
3339 description
3340 "Grouping for the IPv6 source router ID of a prefix
3341 advertisement.";
3343 leaf ipv6-source-router-id {
3344 type inet:ipv6-address;
3345 description "IPv6 Source router ID address.";
3346 }
3347 }
3349 grouping prefix-attributes-extension {
3350 description "Prefix extended attributes.";
3352 uses prefix-reachability-attributes;
3353 uses prefix-ipv4-source-router-id;
3354 uses prefix-ipv6-source-router-id;
3355 }
3357 grouping prefix-ipv4-std {
3358 description
3359 "Grouping for attributes of an IPv4 standard prefix.";
3360 leaf up-down {
3361 type boolean;
3362 description "Value of up/down bit.";
3363 }
3364 leaf i-e {
3365 type boolean;
3366 description "Value of I/E bit.";
3367 }
3368 leaf ip-prefix {
3369 type inet:ipv4-address;
3370 description "IPv4 prefix address";
3371 }
3372 leaf prefix-len {
3373 type uint8;
3374 description "IPv4 prefix length (in bits)";
3375 }
3376 leaf default-metric {
3377 type std-metric;
3378 description "Default IS-IS metric for IPv4 prefix";
3379 }
3380 container delay-metric {
3381 leaf metric {
3382 type std-metric;
3383 description "IS-IS delay metric for IPv4 prefix";
3384 }
3385 leaf supported {
3386 type boolean;
3387 default "false";
3388 description
3389 "Indicates whether IS-IS delay metric is supported.";
3390 }
3391 description "IS-IS delay metric container.";
3392 }
3393 container expense-metric {
3394 leaf metric {
3395 type std-metric;
3396 description "IS-IS expense metric for IPv4 prefix";
3397 }
3398 leaf supported {
3399 type boolean;
3400 default "false";
3401 description
3402 "Indicates whether IS-IS delay metric is supported.";
3403 }
3404 description "IS-IS expense metric container.";
3405 }
3406 container error-metric {
3407 leaf metric {
3408 type std-metric;
3409 description
3410 "This leaf describes the IS-IS error metric value";
3411 }
3412 leaf supported {
3413 type boolean;
3414 default "false";
3415 description "IS-IS error metric for IPv4 prefix";
3416 }
3417 description "IS-IS error metric container.";
3418 }
3419 }
3421 grouping prefix-ipv4-extended {
3422 description
3423 "Grouping for attributes of an IPv4 extended prefix.";
3424 leaf up-down {
3425 type boolean;
3426 description "Value of up/down bit.";
3427 }
3428 leaf ip-prefix {
3429 type inet:ipv4-address;
3430 description "IPv4 prefix address";
3431 }
3432 leaf prefix-len {
3433 type uint8;
3434 description "IPv4 prefix length (in bits)";
3435 }
3437 leaf metric {
3438 type wide-metric;
3439 description "IS-IS wide metric value";
3440 }
3441 leaf-list tag {
3442 type uint32;
3443 description
3444 "List of 32-bit tags associated with the IPv4 prefix.";
3445 }
3446 leaf-list tag64 {
3447 type uint64;
3448 description
3449 "List of 32-bit tags associated with the IPv4 prefix.";
3450 }
3451 uses prefix-attributes-extension;
3452 }
3454 grouping prefix-ipv6-extended {
3455 description "Grouping for attributes of an IPv6 prefix.";
3456 leaf up-down {
3457 type boolean;
3458 description "Value of up/down bit.";
3459 }
3460 leaf ip-prefix {
3461 type inet:ipv6-address;
3462 description "IPv6 prefix address";
3463 }
3464 leaf prefix-len {
3465 type uint8;
3466 description "IPv4 prefix length (in bits)";
3467 }
3468 leaf metric {
3469 type wide-metric;
3470 description "IS-IS wide metric value";
3471 }
3472 leaf-list tag {
3473 type uint32;
3474 description
3475 "List of 32-bit tags associated with the IPv4 prefix.";
3476 }
3477 leaf-list tag64 {
3478 type uint64;
3479 description
3480 "List of 32-bit tags associated with the IPv4 prefix.";
3481 }
3482 uses prefix-attributes-extension;
3483 }
3485 grouping neighbor-extended {
3486 description
3487 "Grouping for attributes of an IS-IS extended neighbor.";
3488 leaf neighbor-id {
3489 type system-id;
3490 description "System-id of the extended neighbor.";
3491 }
3492 leaf metric {
3493 type wide-metric;
3494 description "IS-IS wide metric for extended neighbor";
3495 }
3496 }
3498 grouping neighbor {
3499 description "IS-IS standard neighbor grouping.";
3500 leaf neighbor-id {
3501 type system-id;
3502 description "IS-IS neighbor system-id";
3503 }
3504 leaf i-e {
3505 type boolean;
3506 description
3507 "Internal or External (I/E) Metric bit value";
3508 }
3509 leaf default-metric {
3510 type std-metric;
3511 description "IS-IS default metric value";
3512 }
3513 container delay-metric {
3514 leaf metric {
3515 type std-metric;
3516 description "IS-IS delay metric value";
3517 }
3518 leaf supported {
3519 type boolean;
3520 default "false";
3521 description "IS-IS delay metric supported";
3522 }
3523 description "IS-IS delay metric container";
3524 }
3525 container expense-metric {
3526 leaf metric {
3527 type std-metric;
3528 description "IS-IS delay expense metric value";
3529 }
3530 leaf supported {
3531 type boolean;
3532 default "false";
3533 description "IS-IS delay expense metric supported";
3534 }
3535 description "IS-IS delay expense metric container";
3536 }
3537 container error-metric {
3538 leaf metric {
3539 type std-metric;
3540 description "IS-IS error metric value";
3541 }
3542 leaf supported {
3543 type boolean;
3544 default "false";
3545 description "IS-IS error metric supported";
3546 }
3547 description "IS-IS error metric container";
3548 }
3549 }
3551 grouping lsp-entry {
3552 description "IS-IS LSP database entry groupting";
3554 leaf decoded-completed {
3555 type boolean;
3556 description "IS-IS LSP body fully decoded.";
3557 }
3558 leaf raw-data {
3559 type yang:hex-string;
3560 description
3561 "The hexadecial representation of the complete LSP in
3562 network-byte order (NBO) as received or originated.";
3563 }
3564 leaf lsp-id {
3565 type lsp-id;
3566 description "LSP ID of the LSP";
3567 }
3568 leaf checksum {
3569 type uint16;
3570 description "LSP checksum";
3571 }
3572 leaf remaining-lifetime {
3573 type uint16;
3574 units "seconds";
3575 description
3576 "Remaining lifetime (in seconds) until LSP expiration.";
3577 }
3578 leaf sequence {
3579 type uint32;
3580 description
3581 "This leaf describes the sequence number of the LSP.";
3582 }
3583 leaf attributes {
3584 type bits {
3585 bit partitioned {
3586 description "Originator partition repair supported";
3587 }
3588 bit attached-error {
3589 description
3590 "If set, the originator is attached to
3591 another area using the referred metric.";
3592 }
3593 bit attached-expense {
3594 description
3595 "If set, the originator is attached to
3596 another area using the referred metric.";
3597 }
3598 bit attached-delay {
3599 description
3600 "If set, the originator is attached to
3601 another area using the referred metric.";
3602 }
3603 bit attached-default {
3604 description
3605 "If set, the originator is attached to
3606 another area using the referred metric.";
3607 }
3608 bit overload {
3609 description
3610 "If set, the originator is overloaded,
3611 and must be avoided in path calculation.";
3612 }
3613 }
3614 description "LSP attributes";
3615 }
3617 leaf-list ipv4-addresses {
3618 type inet:ipv4-address;
3619 description
3620 "List of IPv4 addresses of the IS-IS node - IS-IS
3621 reference is TLV 132.";
3622 }
3624 leaf-list ipv6-addresses {
3625 type inet:ipv6-address;
3626 description
3627 "List of IPv6 addresses of the IS-IS node - IS-IS
3628 reference is TLV 232.";
3629 }
3630 leaf ipv4-te-routerid {
3631 type inet:ipv4-address;
3632 description
3633 "IPv4 Traffic Engineering router ID of the IS-IS node -
3634 IS-IS reference is TLV 134.";
3635 }
3637 leaf ipv6-te-routerid {
3638 type inet:ipv6-address;
3639 description
3640 "IPv6 Traffic Engineering router ID of the IS-IS node -
3641 IS-IS reference is TLV 140.";
3642 }
3644 leaf-list protocol-supported {
3645 type uint8;
3646 description
3647 "List of supported protocols of the IS-IS node -
3648 IS-IS reference is TLV 129.";
3649 }
3651 leaf dynamic-hostname {
3652 type string;
3653 description
3654 "Host Name of the IS-IS node - IS-IS reference
3655 is TLV 137.";
3656 }
3658 container authentication {
3659 leaf authentication-type {
3660 type string;
3661 description
3662 "Authentication type to be used with IS-IS node.";
3663 }
3664 leaf authentication-key {
3665 type string;
3666 description
3667 "Authentication keyto be used. For security reasons,
3668 the authentication key MUST NOT be presented in
3669 plaintext format. It is recommended to use an MD5
3670 hash to present the authentication-key.";
3671 }
3672 description
3673 "IS-IS node authentication information container -
3674 IS-IS reference is TLV 10.";
3675 }
3677 container mt-entries {
3678 list topology {
3679 description
3680 "List of topologies supported";
3682 leaf MT-ID {
3683 type uint16 {
3684 range "0 .. 4095";
3685 }
3686 description
3687 "Multi-Topolgoy identifier of topology.";
3688 }
3690 leaf attributes {
3691 type bits {
3692 bit overload {
3693 description
3694 "If set, the originator is overloaded,
3695 and must be avoided in path calculation.";
3696 }
3697 bit attached {
3698 description
3699 "If set, the originator is attached to
3700 another area using the referred metric.";
3701 }
3702 }
3703 description
3704 "Attributes of the LSP for the associated
3705 topology.";
3706 }
3707 }
3708 description
3709 "IS-IS node topology information container -
3710 IS-IS reference is TLV 229.";
3711 }
3713 list router-capabilities {
3714 leaf flags {
3715 type bits {
3716 bit flooding {
3717 position 0;
3718 description
3719 "If the S bit is set, the IS-IS Router CAPABILITY
3720 TLV MUST be flooded across the entire routing
3721 domain. If the S bit is clear, the TLV MUST NOT
3722 be leaked between levels. This bit MUST NOT
3723 be altered during the TLV leaking.";
3724 }
3725 bit down {
3726 position 1;
3727 description
3728 "When the IS-IS Router CAPABILITY TLV is leaked
3729 from level-2 to level-1, the D bit MUST be set.
3730 Otherwise, this bit MUST be clear. IS-IS Router
3731 capability TLVs with the D bit set MUST NOT be
3732 leaked from level-1 to level-2 in to prevent
3733 TLV looping.";
3734 }
3735 }
3736 description "Router Capability Flags";
3737 }
3738 container node-tags {
3739 if-feature node-tag;
3740 list node-tag {
3741 leaf tag {
3742 type uint32;
3743 description "Node tag value.";
3744 }
3745 description "List of tags.";
3746 }
3747 description "Node Tag container";
3748 }
3750 leaf binary {
3751 type binary;
3752 description
3753 "Binary encoding of the IS-IS node capabilities";
3754 }
3755 description
3756 "IS-IS node capabilities container. This container may
3757 be extended with detailed information - IS-IS
3758 reference is TLV 242.";
3759 }
3761 container is-neighbor {
3762 list neighbor {
3763 uses neighbor;
3764 description "List of neighbors.";
3765 }
3766 description
3767 "Standard IS neighbors container - IS-IS reference is
3768 TLV 2.";
3769 }
3771 container extended-is-neighbor {
3772 list neighbor {
3773 uses neighbor-extended;
3774 description
3775 "List of extended IS neighbors";
3776 }
3777 description
3778 "Standard IS extended neighbors container - IS-IS
3779 reference is TLV 22";
3780 }
3782 container ipv4-internal-reachability {
3783 list prefixes {
3784 uses prefix-ipv4-std;
3785 description "List of prefixes.";
3786 }
3787 description
3788 "IPv4 internal reachability information container - IS-IS
3789 reference is TLV 128.";
3790 }
3792 container ipv4-external-reachability {
3793 list prefixes {
3794 uses prefix-ipv4-std;
3795 description "List of prefixes.";
3796 }
3797 description
3798 "IPv4 external reachability information container -
3799 IS-IS reference is TLV 130.";
3800 }
3802 container extended-ipv4-reachability {
3803 list prefixes {
3804 uses prefix-ipv4-extended;
3805 description "List of prefixes.";
3806 }
3807 description
3808 "IPv4 extended reachability information container -
3809 IS-IS reference is TLV 135.";
3810 }
3812 container mt-is-neighbor {
3813 list neighbor {
3814 leaf mt-id {
3815 type uint16 {
3816 range "0 .. 4095";
3817 }
3818 description "Multi-topology (MT) identifier";
3819 }
3820 uses neighbor-extended;
3821 description "List of neighbors.";
3823 }
3824 description
3825 "IS-IS multi-topology neighbor container - IS-IS
3826 reference is TLV 223.";
3827 }
3829 container mt-extended-ipv4-reachability {
3830 list prefixes {
3831 leaf mt-id {
3832 type uint16 {
3833 range "0 .. 4095";
3834 }
3835 description "Multi-topology (MT) identifier";
3836 }
3837 uses prefix-ipv4-extended;
3838 description "List of extended prefixes.";
3839 }
3840 description
3841 "IPv4 multi-topolgy (MT) extended reachability
3842 information container - IS-IS reference is TLV 235.";
3843 }
3845 container mt-ipv6-reachability {
3846 list prefixes {
3847 leaf MT-ID {
3848 type uint16 {
3849 range "0 .. 4095";
3850 }
3851 description "Multi-topology (MT) identifier";
3852 }
3853 uses prefix-ipv6-extended;
3854 description "List of IPv6 extended prefixes.";
3855 }
3856 description
3857 "IPv6 multi-topolgy (MT) extended reachability
3858 information container - IS-IS reference is TLV 237.";
3859 }
3861 container ipv6-reachability {
3862 list prefixes {
3863 uses prefix-ipv6-extended;
3864 description "List of IPv6 prefixes.";
3865 }
3866 description
3867 "IPv6 reachability information container - IS-IS
3868 reference is TLV 236.";
3869 }
3870 }
3871 grouping lsdb {
3872 description "Link State Database (LSDB) grouping";
3873 container database {
3874 config false;
3875 list level-db {
3876 key level;
3878 leaf level {
3879 type level-number;
3880 description "LSDB level number (1 or 2)";
3881 }
3882 list lsp {
3883 key lsp-id;
3884 uses lsp-entry;
3885 description "List of LSPs in LSDB";
3886 }
3887 description "LSP list for LSDB level container";
3888 }
3889 description "IS-IS Link State database container";
3890 }
3891 }
3893 /* Augmentations */
3895 augment "/rt:routing/"
3896 +"rt:ribs/rt:rib/rt:routes/rt:route" {
3897 when "rt:source-protocol = 'isis:isis'" {
3898 description "IS-IS-specific route attributes.";
3899 }
3900 uses route-content;
3901 description
3902 "This augments route object in RIB with IS-IS-specific
3903 attributes.";
3904 }
3906 augment "/if:interfaces/if:interface" {
3907 leaf clns-mtu {
3908 type uint16;
3909 description "CLNS MTU of the interface";
3910 }
3911 description "ISO interface config.";
3912 }
3914 augment "/rt:routing/rt:control-plane-protocols/"
3915 +"rt:control-plane-protocol" {
3916 when "rt:type = 'isis:isis'" {
3917 description
3918 "This augment is only valid when routing protocol
3919 instance type is 'isis'";
3920 }
3921 description
3922 "This augments a routing protocol instance with IS-IS
3923 specific parameters.";
3924 container isis {
3925 must "count(area-address) > 0" {
3926 error-message
3927 "At least one area-address must be configured.";
3928 description
3929 "Enforce configuration of at least one area.";
3930 }
3932 uses isis-global-cfg;
3933 container fast-reroute {
3934 if-feature fast-reroute;
3935 uses fast-reroute-global-cfg;
3936 uses fast-reroute-global-state;
3937 description
3938 "IP Fast ReRoute (IPFRR) global container";
3939 }
3940 container spf-control {
3941 leaf paths {
3942 if-feature max-ecmp;
3943 type uint16 {
3944 range "1..32";
3945 }
3946 description
3947 "Maximum number of Equal-Cost Multi-Path (ECMP) paths.";
3948 }
3949 container ietf-spf-delay {
3950 if-feature ietf-spf-delay;
3951 uses ietf-spf-delay-cfg;
3952 uses ietf-spf-delay-state;
3953 description "IETF SPF delay algorithm container";
3954 }
3955 description
3956 "SPF computation-related information container";
3957 }
3958 container topologies {
3959 if-feature multi-topology;
3960 list topology {
3961 key "name";
3962 leaf enable {
3963 type boolean;
3964 description "Topology enable configuration";
3965 }
3966 leaf name {
3967 type leafref {
3968 path "../../../../../../rt:ribs/rt:rib/rt:name";
3969 }
3970 description
3971 "Routing Information Base (RIB) corresponding
3972 to topology.";
3973 }
3975 uses isis-global-topologies-cfg;
3977 description "List of topologies";
3978 }
3979 description "Multi-topology container";
3980 }
3981 container interfaces {
3982 list interface {
3983 key "name";
3984 leaf name {
3985 type if:interface-ref;
3987 description
3988 "Reference to the interface within
3989 the routing-instance.";
3990 }
3991 uses isis-if-cfg;
3992 container fast-reroute {
3993 if-feature fast-reroute;
3994 uses fast-reroute-if-cfg;
3995 description
3996 "IP Fast ReRoute (IPFRR) interface container";
3997 }
3998 container topologies {
3999 if-feature multi-topology;
4000 list topology {
4001 key name;
4003 leaf name {
4004 type leafref {
4005 path "../../../../../../../../"+
4006 "rt:ribs/rt:rib/rt:name";
4007 }
4009 description
4010 "Routing Information Base (RIB) corresponding
4011 to topology.";
4012 }
4013 uses isis-if-topologies-cfg;
4014 description "List of interface topologies";
4015 }
4016 description "Multi-topology container";
4017 }
4018 uses adjacency-state;
4019 uses event-counters;
4020 uses packet-counters;
4021 description "List of IS-IS interfaces.";
4022 }
4023 description
4024 "IS-IS interface specific configuration container";
4025 }
4026 uses spf-log;
4027 uses lsp-log;
4028 uses hostname-db;
4029 uses lsdb;
4030 uses local-rib;
4031 uses system-counters;
4033 description
4034 "IS-IS configuration/state top-level container";
4035 }
4036 }
4038 /* RPC methods */
4040 rpc clear-adjacency {
4041 description
4042 "This RPC request clears a particular set of IS-IS
4043 adjacencies. If the operation fails due to an internal
4044 reason, then the error-tag and error-app-tag should be
4045 set indicating the reason for the failure.";
4046 input {
4048 leaf routing-protocol-instance-name {
4049 type instance-state-ref;
4050 mandatory "true";
4051 description
4052 "Name of the IS-IS protocol instance whose IS-IS
4053 information is being queried.
4055 If the corresponding IS-IS instance doesn't exist,
4056 then the operation will fail with an error-tag of
4057 'data-missing' and an error-app-tag of
4058 'routing-protocol-instance-not-found'.";
4059 }
4060 leaf level {
4061 type level;
4062 description
4063 "IS-IS level of the adjacency to be cleared. If the
4064 IS-IS level is level-1-2, both level 1 and level 2
4065 adjacencies would be cleared.
4067 If the value provided is different from the one
4068 authorized in the enum type, then the operation
4069 SHALL fail with an error-tag of 'data-missing' and
4070 an error-app-tag of 'bad-isis-level'.";
4071 }
4072 leaf interface {
4073 type string;
4074 description
4075 "IS-IS interface name.
4077 If the corresponding IS-IS interface doesn't exist,
4078 then the operation SHALL fail with an error-tag of
4079 'data-missing' and an error-app-tag of
4080 'isis-interface-not-found'.";
4081 }
4082 }
4083 }
4085 rpc clear-database {
4086 description
4087 "This RPC request clears a particular IS-IS database. If
4088 the operation fails for an IS-IS internal reason, then
4089 the error-tag and error-app-tag should be set
4090 indicating the reason for the failure.";
4091 input {
4092 leaf routing-protocol-instance-name {
4093 type instance-state-ref;
4094 mandatory "true";
4095 description
4096 "Name of the IS-IS protocol instance whose IS-IS
4097 database(s) is/are being cleard.
4099 If the corresponding IS-IS instance doesn't exist,
4100 then the operation will fail with an error-tag of
4101 'data-missing' and an error-app-tag of
4102 'routing-protocol-instance-not-found'.";
4103 }
4104 leaf level {
4105 type level;
4106 description
4107 "IS-IS level of the adjacency to be cleared. If the
4108 IS-IS level is level-1-2, both level 1 and level 2
4109 databases would be cleared.
4111 If the value provided is different from the one
4112 authorized in the enum type, then the operation
4113 SHALL fail with an error-tag of 'data-missing' and
4114 an error-app-tag of 'bad-isis-level'.";
4115 }
4116 }
4117 }
4119 /* Notifications */
4121 notification database-overload {
4122 uses notification-instance-hdr;
4124 leaf overload {
4125 type enumeration {
4126 enum off {
4127 description
4128 "Indicates IS-IS instance has left overload state";
4129 }
4130 enum on {
4131 description
4132 "Indicates IS-IS instance has entered overload state";
4133 }
4135 }
4136 description "New overload state of the IS-IS instance";
4137 }
4138 description
4139 "This notification is sent when an IS-IS instance
4140 overload state changes.";
4141 }
4143 notification lsp-too-large {
4144 uses notification-instance-hdr;
4145 uses notification-interface-hdr;
4147 leaf pdu-size {
4148 type uint32;
4149 description "Size of the LSP PDU";
4150 }
4151 leaf lsp-id {
4152 type lsp-id;
4153 description "LSP ID";
4154 }
4155 description
4156 "This notification is sent when we attempt to propagate
4157 an LSP that is larger than the dataLinkBlockSize for the
4158 circuit. The notification generation must be throttled
4159 with at least 5 seconds betweeen successive
4160 notifications.";
4161 }
4163 notification if-state-change {
4164 uses notification-instance-hdr;
4165 uses notification-interface-hdr;
4167 leaf state {
4168 type if-state-type;
4169 description "Interface state.";
4170 }
4171 description
4172 "This notification is sent when an interface
4173 state change is detected.";
4174 }
4176 notification corrupted-lsp-detected {
4177 uses notification-instance-hdr;
4178 leaf lsp-id {
4179 type lsp-id;
4180 description "LSP ID";
4181 }
4182 description
4183 "This notification is sent when we find that
4184 an LSP that was stored in memory has become
4185 corrupted.";
4186 }
4188 notification attempt-to-exceed-max-sequence {
4189 uses notification-instance-hdr;
4190 leaf lsp-id {
4191 type lsp-id;
4192 description "LSP ID";
4193 }
4194 description
4195 "This notification is sent when the system
4196 wraps the 32-bit sequence counter of an LSP.";
4197 }
4199 notification id-len-mismatch {
4200 uses notification-instance-hdr;
4201 uses notification-interface-hdr;
4203 leaf pdu-field-len {
4204 type uint8;
4205 description "Size of the ID length in the received PDU";
4206 }
4207 leaf raw-pdu {
4208 type binary;
4209 description "Received raw PDU.";
4210 }
4211 description
4212 "This notification is sent when we receive a PDU
4213 with a different value for the System ID length.
4214 The notification generation must be throttled
4215 with at least 5 seconds betweeen successive
4216 notifications.";
4217 }
4219 notification max-area-addresses-mismatch {
4220 uses notification-instance-hdr;
4221 uses notification-interface-hdr;
4223 leaf max-area-addresses {
4224 type uint8;
4225 description "Received number of supported areas";
4226 }
4227 leaf raw-pdu {
4228 type binary;
4229 description "Received raw PDU.";
4230 }
4231 description
4232 "This notification is sent when we receive a PDU
4233 with a different value for the Maximum Area Addresses.
4234 The notification generation must be throttled
4235 with at least 5 seconds betweeen successive
4236 notifications.";
4237 }
4239 notification own-lsp-purge {
4240 uses notification-instance-hdr;
4241 uses notification-interface-hdr;
4242 leaf lsp-id {
4243 type lsp-id;
4244 description "LSP ID";
4245 }
4246 description
4247 "This notification is sent when the system receives
4248 a PDU with its own system ID and zero age.";
4250 }
4252 notification sequence-number-skipped {
4253 uses notification-instance-hdr;
4254 uses notification-interface-hdr;
4255 leaf lsp-id {
4256 type lsp-id;
4257 description "LSP ID";
4258 }
4259 description
4260 "This notification is sent when the system receives a
4261 PDU with its own system ID and different contents. The
4262 system has to reoriginate the LSP with a higher sequence
4263 number.";
4264 }
4266 notification authentication-type-failure {
4267 uses notification-instance-hdr;
4268 uses notification-interface-hdr;
4269 leaf raw-pdu {
4270 type binary;
4271 description "Received raw PDU.";
4272 }
4273 description
4274 "This notification is sent when the system receives a
4275 PDU with the wrong authentication type field.
4276 The notification generation must be throttled
4277 with at least 5 seconds betweeen successive
4278 notifications.";
4279 }
4281 notification authentication-failure {
4282 uses notification-instance-hdr;
4283 uses notification-interface-hdr;
4284 leaf raw-pdu {
4285 type binary;
4286 description "Received raw PDU.";
4287 }
4288 description
4289 "This notification is sent when the system receives
4290 a PDU with the wrong authentication information.
4291 The notification generation must be throttled with
4292 with at least 5 seconds betweeen successive
4293 notifications.";
4294 }
4296 notification version-skew {
4297 uses notification-instance-hdr;
4298 uses notification-interface-hdr;
4299 leaf protocol-version {
4300 type uint8;
4301 description "Protocol version received in the PDU.";
4302 }
4303 leaf raw-pdu {
4304 type binary;
4305 description "Received raw PDU.";
4306 }
4307 description
4308 "This notification is sent when the system receives a
4309 PDU with a different protocol version number.
4310 The notification generation must be throttled
4311 with at least 5 seconds betweeen successive
4312 notifications.";
4313 }
4315 notification area-mismatch {
4316 uses notification-instance-hdr;
4317 uses notification-interface-hdr;
4318 leaf raw-pdu {
4319 type binary;
4320 description "Received raw PDU.";
4321 }
4322 description
4323 "This notification is sent when the system receives a
4324 Hello PDU from an IS that does not share any area
4325 address. The notification generation must be throttled
4326 with at least 5 seconds betweeen successive
4327 notifications.";
4328 }
4330 notification rejected-adjacency {
4331 uses notification-instance-hdr;
4332 uses notification-interface-hdr;
4333 leaf raw-pdu {
4334 type binary;
4335 description
4336 "Received raw PDU.";
4337 }
4338 leaf reason {
4339 type string;
4340 description
4341 "The system may provide a reason to reject the
4342 adjacency. If the reason is not available,
4343 an empty string will be returned.";
4344 }
4345 description
4346 "This notification is sent when the system receives a
4347 Hello PDU from an IS but does not establish an adjacency
4348 for some reason. The notification generation must be
4349 throttled with at least 5 seconds betweeen successive
4350 notifications.";
4351 }
4353 notification protocols-supported-mismatch {
4354 uses notification-instance-hdr;
4355 uses notification-interface-hdr;
4356 leaf raw-pdu {
4357 type binary;
4358 description "Received raw PDU.";
4359 }
4360 leaf-list protocols {
4361 type uint8;
4362 description
4363 "List of protocols supported by the remote system.";
4364 }
4365 description
4366 "This notification is sent when the system receives a
4367 non-pseudonode LSP that has no matching protocols
4368 supported. The notification generation must be throttled
4369 with at least 5 seconds betweeen successive
4370 notifications.";
4371 }
4373 notification lsp-error-detected {
4374 uses notification-instance-hdr;
4375 uses notification-interface-hdr;
4376 leaf lsp-id {
4377 type lsp-id;
4378 description "LSP ID.";
4379 }
4380 leaf raw-pdu {
4381 type binary;
4382 description "Received raw PDU.";
4383 }
4384 leaf error-offset {
4385 type uint32;
4386 description
4387 "If the problem is a malformed TLV, the error-offset
4388 points to the start of the TLV. If the problem is with
4389 the LSP header, the error-offset points to the errant
4390 byte";
4391 }
4392 leaf tlv-type {
4393 type uint8;
4394 description
4395 "If the problem is a malformed TLV, the tlv-type is set
4396 to the type value of the suspicious TLV. Otherwise,
4397 this leaf is not present.";
4398 }
4399 description
4400 "This notification is sent when the system receives an
4401 ' LSP with a parse error. The notification generation must
4402 be throttled with at least 5 seconds betweeen successive
4403 notifications.";
4404 }
4406 notification adjacency-state-change {
4407 uses notification-instance-hdr;
4408 uses notification-interface-hdr;
4409 leaf neighbor {
4410 type string;
4411 description
4412 "Name of the neighbor. If the name of the neighbor is
4413 not available, it is not returned.";
4414 }
4415 leaf neighbor-system-id {
4416 type system-id;
4417 description "Neighbor system-id";
4418 }
4419 leaf state {
4420 type adj-state-type;
4422 description "New state of the IS-IS adjacency.";
4423 }
4424 leaf reason {
4425 type string;
4426 description
4427 "If the adjacency is going to DOWN, this leaf provides
4428 a reason for the adjacency going down. The reason is
4429 provided as a text. If the adjacency is going to UP, no
4430 reason is provided.";
4431 }
4432 description
4433 "This notification is sent when an IS-IS adjacency
4434 moves to Up state or to Down state.";
4435 }
4437 notification lsp-received {
4438 uses notification-instance-hdr;
4439 uses notification-interface-hdr;
4440 leaf lsp-id {
4441 type lsp-id;
4442 description "LSP ID";
4443 }
4444 leaf sequence {
4445 type uint32;
4446 description "Sequence number of the received LSP.";
4447 }
4448 leaf received-timestamp {
4449 type yang:timestamp;
4451 description "Timestamp when the LSP was received.";
4452 }
4453 leaf neighbor-system-id {
4454 type system-id;
4455 description "Neighbor system-id of LSP sender";
4456 }
4457 description
4458 "This notification is sent when an LSP is received.
4459 The notification generation must be throttled with at
4460 least 5 seconds betweeen successive notifications.";
4461 }
4463 notification lsp-generation {
4464 uses notification-instance-hdr;
4466 leaf lsp-id {
4467 type lsp-id;
4468 description "LSP ID";
4469 }
4470 leaf sequence {
4471 type uint32;
4472 description "Sequence number of the received LSP.";
4473 }
4474 leaf send-timestamp {
4475 type yang:timestamp;
4477 description "Timestamp when our LSP was regenerated.";
4478 }
4479 description
4480 "This notification is sent when an LSP is regenerated.
4481 The notification generation must be throttled with at
4482 least 5 seconds betweeen successive notifications.";
4483 }
4484 }
4486
4488 7. Security Considerations
4490 Configuration and state data defined in this document are designed to
4491 be accessed via the NETCONF protocol [RFC6241].
4493 As IS-IS is an IGP protocol (critical piece of the network), ensuring
4494 stability and security of the protocol is mandatory for the network
4495 service.
4497 Authors recommends to implement NETCONF access control model
4498 ([RFC6536]) to restrict access to all or part of the configuration to
4499 specific users. Access control to RPCs is also critical as RPC
4500 allows to clear protocol datastructures that would definitively
4501 impact the network service. This kind of RPC needs only to be used
4502 in specific cases by well-known experienced users.
4504 Authors consider that all the configuration is considered as
4505 sensitive/vulnerable as well as RPCs. But security teams can decide
4506 to open some part of the configuration to less experienced users
4507 depending on the internal organization, for example:
4509 o User FullWrite: would access to the whole data model. This kind
4510 of profile may be restricted to few experienced people.
4512 o User PartialWrite: would only access to configuration part within
4513 /isis/interfaces/interface. So this kind of profile is restricted
4514 to creation/modification/deletion of interfaces. This profile
4515 does not have access to RPC.
4517 o User Read: would only access to the operational states.
4519 Unauthorized access to configuration or RPC may cause high damages to
4520 the network service.
4522 The "isis/database" may contain authentication information. As
4523 presented in the description of the "/isis/database/level-
4524 1/lsp/authentication/authentication-key", the authentication MUST
4525 never be displayed in a plaintext format for security reason.
4526 Authors recommend the usage of MD5 to display or return the
4527 authentication-key.
4529 Some authentication-key may also be required in the "isis" writable
4530 container. When configuring IS-IS using the NETCONF protocol,
4531 authors recommends the usage of secure transport of NETCONF using SSH
4532 ([RFC6242]).
4534 8. Contributors
4536 Authors would like to thank Kiran Agrahara Sreenivasa, Dean
4537 Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the
4538 draft.
4540 9. Acknowledgements
4542 TBD.
4544 10. IANA Considerations
4546 The IANA is requested to assign two new URIs from the IETF XML
4547 registry ([RFC3688]). Authors are suggesting the following URI:
4549 URI: urn:ietf:params:xml:ns:yang:ietf-isis
4550 Registrant Contact: IS-IS WG
4551 XML: N/A, the requested URI is an XML namespace
4553 This document also requests one new YANG module name in the YANG
4554 Module Names registry ([RFC6020]) with the following suggestion:
4556 name: ietf-isis
4557 namespace: urn:ietf:params:xml:ns:yang:ietf-isis
4558 prefix: isis
4559 reference: RFC XXXX
4561 11. Change log for ietf-isis YANG module
4563 11.1. From version -21 to version -22
4565 o TE router-id modeling alignment with OSPF.
4567 o Add max-ecmp + feature in spf-control container (alignment with
4568 OSPF).
4570 11.2. From version -20 to version -21
4572 o Model revision date fix
4574 11.3. From version -19 to version -20
4576 o Moved to Yang 1.1
4578 o Lower case enumerations
4580 o Add RFC references to features
4581 o Remove segment-routing feature
4583 o Modified BFD activation modeling
4585 11.4. From version -18 to version -19
4587 o Align with draft-ietf-netmod-rfc8022bis.
4589 o Modify address family types as per draft-ietf-rtgwg-routing-types-
4590 17.
4592 11.5. From version -17 to version -18
4594 o NMDA compliancy.
4596 o Set some default values.
4598 o Align with iana-rt-types module.
4600 11.6. From version -16 to version -17
4602 o Cosmetic fixes.
4604 o Use of rt-types model.
4606 11.7. From version -15 to version -16
4608 o Alignment with last IETF key chain model.
4610 o lsp-log "change" leaf moved as an identity.
4612 o Incremental SPF removed from spf-log types.
4614 11.8. From version -14 to version -15
4616 o Alignment with OSPF model done:
4618 * Added spf-control container with IETF SPF delay algorithm as a
4619 feature.
4621 * Added graceful-restart options.
4623 * Added nsr as a feature.
4625 * Removed per topology FRR. Need to be augmented if necessary.
4627 * Created an ldp container within mpls.
4629 * Renamed igp-ldp-sync to igp-sync.
4631 * Added auto-cost container.
4633 * Moved reference-bandwidth under auto-cost container.
4635 * Added IS-IS local RIB as operational state.
4637 * Added decode-completed and raw-data leaves in the LSDB model.
4639 * Modified the notification header.
4641 11.9. From version -13 to version -14
4643 o Segment Routing extensions are now in a separate document.
4645 11.10. From version -12 to version -13
4647 o Move feature nlpid-control to container rather than list.
4649 o Rename multi-topology to topologies to align with OSPF.
4651 o Rename bfd/enabled to bfd/enable for consistency reason.
4653 o Add support for NSR with a feature.
4655 11.11. From version -09 to version -12
4657 o Rename node-tag container to node-tags.
4659 11.12. From version -08 to version -09
4661 o Added container before af list.
4663 o Added container before topology list.
4665 o Aligned LFA if per level cfg.
4667 o Align to draft-ietf-netmod-routing-cfg-23.
4669 11.13. From version -07 to version -08
4671 o Remove selector from system-id type.
4673 o Add some default values.
4675 o Moved lists to containers+groupings for per level configuration.
4677 o remove routing-instance as per core routing model v21.
4679 o added BFD leaf (no more BFD protocol model).
4681 o changed keychain module reference.
4683 11.14. From version -05 to version -07
4685 o Move Overload config from list to container.
4687 o Move Overload-max-metric config from list to container.
4689 o Move preference config from list to container.
4691 o Add Node flag in config.
4693 o Removed BFD config => moved to isis-bfd module.
4695 o Remove call to routing policy model.
4697 11.15. From version -03 to version -05
4699 o Correct invalid references to previous versions of core routing
4700 model.
4702 o Remove BFD config and replace by groupings from ietf-bfd.
4704 o Adding routing-policy support through routing-policy model.
4706 11.16. From version -02 to version -03
4708 o Reviewed config and op state groupings.
4710 o Add default value to lfa candidate-disabled.
4712 o Add enable leaf to isis container to reflect admin state.
4714 o Move to VRF centric only.
4716 o Segment routing is part os a separate module.
4718 11.17. From version -01 to version -02
4720 o Adding IPFRR.
4722 o Adding igp-ldp-sync.
4724 o Adding segment-routing.
4726 o Adding instance reference to operational states.
4728 o Move AF type from string to identity.
4730 o Updated router-capability in LSDB description.
4732 o packet counters moved to interface-packet-counters.
4734 o Added modification information in lsp-log.
4736 o Removing igp-ldp-sync timer in IS-IS.
4738 o Defining hierarchy for operational states.
4740 o Adding clns-mtu.
4742 o Adding key-chain.
4744 11.18. From version -00 to version -01
4746 o Interface metric move from af container to interface container.
4748 o Hello-padding on interface moved to hello-padding-disable with
4749 empty type.
4751 o three-way-handshake removed.
4753 o route preference changed to a choice.
4755 o csnp-authentication/psnp-authentication merged to authentication
4756 container.
4758 o lsp-gen-interval-exp-delay removed.
4760 o Added overload-max-metric feature.
4762 o overload-max-metric is in a separate container.
4764 o Change hello-padding to container.
4766 o Change bfd to container.
4768 o Make BFD a feature.
4770 o Create mpls-te container and put router-id inside.
4772 o Remove GR helper disable and timers.
4774 12. Normative References
4776 [I-D.ietf-netmod-routing-cfg]
4777 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
4778 Management", draft-ietf-netmod-routing-cfg-25 (work in
4779 progress), November 2016.
4781 [I-D.ietf-rtgwg-yang-key-chain]
4782 Lindem, A., Qu, Y., Yeung, D., Chen, I., and Z. Zhang,
4783 "Routing Key Chain YANG Data Model", draft-ietf-rtgwg-
4784 yang-key-chain-24 (work in progress), April 2017.
4786 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
4787 Requirement Levels", BCP 14, RFC 2119,
4788 DOI 10.17487/RFC2119, March 1997,
4789 .
4791 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
4792 DOI 10.17487/RFC3688, January 2004,
4793 .
4795 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi
4796 Topology (MT) Routing in Intermediate System to
4797 Intermediate Systems (IS-ISs)", RFC 5120,
4798 DOI 10.17487/RFC5120, February 2008,
4799 .
4801 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for
4802 IP Fast Reroute: Loop-Free Alternates", RFC 5286,
4803 DOI 10.17487/RFC5286, September 2008,
4804 .
4806 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP
4807 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March
4808 2009, .
4810 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
4811 the Network Configuration Protocol (NETCONF)", RFC 6020,
4812 DOI 10.17487/RFC6020, October 2010,
4813 .
4815 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
4816 and A. Bierman, Ed., "Network Configuration Protocol
4817 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
4818 .
4820 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
4821 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
4822 .
4824 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
4825 Protocol (NETCONF) Access Control Model", RFC 6536,
4826 DOI 10.17487/RFC6536, March 2012,
4827 .
4829 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N.
4830 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)",
4831 RFC 7490, DOI 10.17487/RFC7490, April 2015,
4832 .
4834 Appendix A. Example of IS-IS configuration in XML
4836 This section gives an example of configuration of an IS-IS instance
4837 on a device. The example is written in XML.
4839
4840
4841
4842 SLI
4843 1.1.1.1
4844
4845
4846
4847 Loopback0
4848
4849
4850 Eth1
4851
4852
4853
4854
4855 ISIS
4856
4857 isis:isis
4858
4859 true
4860 level-2
4861 87FC.FCDF.4432
4862 49.0001
4863
4864 1.1.1.1
4865
4866 65535
4867 65000
4868
4869 wide
4870
4871
4872 111111
4873
4874
4875
4876 ipv4-unicast
4877 true
4878
4879
4880
4881
4882 Loopback0
4883 200
4884
4885 0
4886
4887 true
4888
4889
4890 Eth1
4891 level-2
4892 point-to-point
4893
4894 167890
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904 Loopback0
4905
4906
4907
4908
4909
4910
4911 1.1.1.1
4912 32
4913
4914
4916
4917
4918 Eth1
4919
4920
4921
4922
4923
4924
4925 10.0.0.1
4926 30
4927
4928
4930
4931
4932
4934 Authors' Addresses
4936 Stephane Litkowski
4937 Orange
4939 Email: stephane.litkowski@orange.com
4941 Derek Yeung
4942 Arrcus, Inc
4944 Email: derek@arrcus.com
4946 Acee Lindem
4947 Cisco Systems
4949 Email: acee@cisco.com
4951 Jeffrey Zhang
4952 Juniper Networks
4954 Email: zzhang@juniper.net
4956 Ladislav Lhotka
4957 CZ.NIC
4959 Email: lhotka@nic.cz