idnits 2.17.00 (12 Aug 2021)
/tmp/idnits30485/draft-ietf-isis-yang-isis-cfg-23.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:
----------------------------------------------------------------------------
== The page length should not exceed 58 lines per page, but there was 1
longer page, the longest (page 96) being 59 lines
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 (August 09, 2018) is 1381 days in the past. Is this
intentional?
Checking references for intended status: Proposed Standard
----------------------------------------------------------------------------
(See RFCs 3967 and 4897 for information about using normative references
to lower-maturity documents in RFCs)
== Outdated reference: draft-ietf-netmod-routing-cfg has been published as
RFC 8022
== Outdated reference: draft-ietf-rtgwg-yang-key-chain has been published
as RFC 8177
** Downref: Normative reference to an Informational RFC: RFC 5443
** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341)
Summary: 3 errors (**), 0 flaws (~~), 10 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: February 10, 2019 Arrcus, Inc
6 A. Lindem
7 Cisco Systems
8 J. Zhang
9 Juniper Networks
10 L. Lhotka
11 CZ.NIC
12 August 09, 2018
14 YANG Data Model for IS-IS protocol
15 draft-ietf-isis-yang-isis-cfg-23
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-08-09.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 2018-08-09 {
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 }
3278 description "Grouping for LSP log.";
3279 }
3281 grouping hostname-db {
3282 container hostnames {
3283 config false;
3284 list hostname {
3285 key system-id;
3286 leaf system-id {
3287 type system-id;
3288 description
3289 "System-id associated with the hostname.";
3290 }
3291 leaf hostname {
3292 type string;
3293 description
3294 "Hostname associated with the system ID.";
3296 }
3297 description
3298 "List of system-id/hostname associations.";
3299 }
3300 description
3301 "Hostname to system-id mapping database.";
3302 }
3303 description
3304 "Grouping for hostname to system-id mapping database.";
3305 }
3307 /* Groupings for the LSDB description */
3309 grouping prefix-reachability-attributes {
3310 description
3311 "Grouping for extended reachability attributes of an
3312 IPv4 or IPv6 prefix.";
3314 leaf external-prefix-flag {
3315 type boolean;
3316 description "External prefix flag.";
3317 }
3318 leaf readvertisement-flag {
3319 type boolean;
3320 description "Readvertisement flag.";
3321 }
3322 leaf node-flag {
3323 type boolean;
3324 description "Node flag.";
3325 }
3326 }
3328 grouping prefix-ipv4-source-router-id {
3329 description
3330 "Grouping for the IPv4 source router ID of a prefix
3331 advertisement.";
3333 leaf ipv4-source-router-id {
3334 type inet:ipv4-address;
3335 description "IPv4 Source router ID address.";
3336 }
3337 }
3339 grouping prefix-ipv6-source-router-id {
3340 description
3341 "Grouping for the IPv6 source router ID of a prefix
3342 advertisement.";
3344 leaf ipv6-source-router-id {
3345 type inet:ipv6-address;
3346 description "IPv6 Source router ID address.";
3347 }
3348 }
3350 grouping prefix-attributes-extension {
3351 description "Prefix extended attributes.";
3353 uses prefix-reachability-attributes;
3354 uses prefix-ipv4-source-router-id;
3355 uses prefix-ipv6-source-router-id;
3356 }
3358 grouping prefix-ipv4-std {
3359 description
3360 "Grouping for attributes of an IPv4 standard prefix.";
3361 leaf up-down {
3362 type boolean;
3363 description "Value of up/down bit.";
3364 }
3365 leaf i-e {
3366 type boolean;
3367 description "Value of I/E bit.";
3368 }
3369 leaf ip-prefix {
3370 type inet:ipv4-address;
3371 description "IPv4 prefix address";
3372 }
3373 leaf prefix-len {
3374 type uint8;
3375 description "IPv4 prefix length (in bits)";
3376 }
3377 leaf default-metric {
3378 type std-metric;
3379 description "Default IS-IS metric for IPv4 prefix";
3380 }
3381 container delay-metric {
3382 leaf metric {
3383 type std-metric;
3384 description "IS-IS delay metric for IPv4 prefix";
3385 }
3386 leaf supported {
3387 type boolean;
3388 default "false";
3389 description
3390 "Indicates whether IS-IS delay metric is supported.";
3391 }
3392 description "IS-IS delay metric container.";
3393 }
3394 container expense-metric {
3395 leaf metric {
3396 type std-metric;
3397 description "IS-IS expense metric for IPv4 prefix";
3398 }
3399 leaf supported {
3400 type boolean;
3401 default "false";
3402 description
3403 "Indicates whether IS-IS delay metric is supported.";
3404 }
3405 description "IS-IS expense metric container.";
3406 }
3407 container error-metric {
3408 leaf metric {
3409 type std-metric;
3410 description
3411 "This leaf describes the IS-IS error metric value";
3412 }
3413 leaf supported {
3414 type boolean;
3415 default "false";
3416 description "IS-IS error metric for IPv4 prefix";
3417 }
3418 description "IS-IS error metric container.";
3419 }
3420 }
3422 grouping prefix-ipv4-extended {
3423 description
3424 "Grouping for attributes of an IPv4 extended prefix.";
3425 leaf up-down {
3426 type boolean;
3427 description "Value of up/down bit.";
3428 }
3429 leaf ip-prefix {
3430 type inet:ipv4-address;
3431 description "IPv4 prefix address";
3432 }
3433 leaf prefix-len {
3434 type uint8;
3435 description "IPv4 prefix length (in bits)";
3436 }
3438 leaf metric {
3439 type wide-metric;
3440 description "IS-IS wide metric value";
3441 }
3442 leaf-list tag {
3443 type uint32;
3444 description
3445 "List of 32-bit tags associated with the IPv4 prefix.";
3446 }
3447 leaf-list tag64 {
3448 type uint64;
3449 description
3450 "List of 32-bit tags associated with the IPv4 prefix.";
3451 }
3452 uses prefix-attributes-extension;
3453 }
3455 grouping prefix-ipv6-extended {
3456 description "Grouping for attributes of an IPv6 prefix.";
3457 leaf up-down {
3458 type boolean;
3459 description "Value of up/down bit.";
3460 }
3461 leaf ip-prefix {
3462 type inet:ipv6-address;
3463 description "IPv6 prefix address";
3464 }
3465 leaf prefix-len {
3466 type uint8;
3467 description "IPv4 prefix length (in bits)";
3468 }
3469 leaf metric {
3470 type wide-metric;
3471 description "IS-IS wide metric value";
3472 }
3473 leaf-list tag {
3474 type uint32;
3475 description
3476 "List of 32-bit tags associated with the IPv4 prefix.";
3477 }
3478 leaf-list tag64 {
3479 type uint64;
3480 description
3481 "List of 32-bit tags associated with the IPv4 prefix.";
3482 }
3483 uses prefix-attributes-extension;
3484 }
3486 grouping neighbor-extended {
3487 description
3488 "Grouping for attributes of an IS-IS extended neighbor.";
3489 leaf neighbor-id {
3490 type system-id;
3491 description "System-id of the extended neighbor.";
3492 }
3493 leaf metric {
3494 type wide-metric;
3495 description "IS-IS wide metric for extended neighbor";
3496 }
3497 }
3499 grouping neighbor {
3500 description "IS-IS standard neighbor grouping.";
3501 leaf neighbor-id {
3502 type system-id;
3503 description "IS-IS neighbor system-id";
3504 }
3505 leaf i-e {
3506 type boolean;
3507 description
3508 "Internal or External (I/E) Metric bit value";
3509 }
3510 leaf default-metric {
3511 type std-metric;
3512 description "IS-IS default metric value";
3513 }
3514 container delay-metric {
3515 leaf metric {
3516 type std-metric;
3517 description "IS-IS delay metric value";
3518 }
3519 leaf supported {
3520 type boolean;
3521 default "false";
3522 description "IS-IS delay metric supported";
3523 }
3524 description "IS-IS delay metric container";
3525 }
3526 container expense-metric {
3527 leaf metric {
3528 type std-metric;
3529 description "IS-IS delay expense metric value";
3530 }
3531 leaf supported {
3532 type boolean;
3533 default "false";
3534 description "IS-IS delay expense metric supported";
3535 }
3536 description "IS-IS delay expense metric container";
3537 }
3538 container error-metric {
3539 leaf metric {
3540 type std-metric;
3541 description "IS-IS error metric value";
3542 }
3543 leaf supported {
3544 type boolean;
3545 default "false";
3546 description "IS-IS error metric supported";
3547 }
3548 description "IS-IS error metric container";
3549 }
3550 }
3552 grouping lsp-entry {
3553 description "IS-IS LSP database entry groupting";
3555 leaf decoded-completed {
3556 type boolean;
3557 description "IS-IS LSP body fully decoded.";
3558 }
3559 leaf raw-data {
3560 type yang:hex-string;
3561 description
3562 "The hexadecial representation of the complete LSP in
3563 network-byte order (NBO) as received or originated.";
3564 }
3565 leaf lsp-id {
3566 type lsp-id;
3567 description "LSP ID of the LSP";
3568 }
3569 leaf checksum {
3570 type uint16;
3571 description "LSP checksum";
3572 }
3573 leaf remaining-lifetime {
3574 type uint16;
3575 units "seconds";
3576 description
3577 "Remaining lifetime (in seconds) until LSP expiration.";
3578 }
3579 leaf sequence {
3580 type uint32;
3581 description
3582 "This leaf describes the sequence number of the LSP.";
3583 }
3584 leaf attributes {
3585 type bits {
3586 bit partitioned {
3587 description "Originator partition repair supported";
3588 }
3589 bit attached-error {
3590 description
3591 "If set, the originator is attached to
3592 another area using the referred metric.";
3593 }
3594 bit attached-expense {
3595 description
3596 "If set, the originator is attached to
3597 another area using the referred metric.";
3598 }
3599 bit attached-delay {
3600 description
3601 "If set, the originator is attached to
3602 another area using the referred metric.";
3603 }
3604 bit attached-default {
3605 description
3606 "If set, the originator is attached to
3607 another area using the referred metric.";
3608 }
3609 bit overload {
3610 description
3611 "If set, the originator is overloaded,
3612 and must be avoided in path calculation.";
3613 }
3614 }
3615 description "LSP attributes";
3616 }
3618 leaf-list ipv4-addresses {
3619 type inet:ipv4-address;
3620 description
3621 "List of IPv4 addresses of the IS-IS node - IS-IS
3622 reference is TLV 132.";
3623 }
3625 leaf-list ipv6-addresses {
3626 type inet:ipv6-address;
3627 description
3628 "List of IPv6 addresses of the IS-IS node - IS-IS
3629 reference is TLV 232.";
3630 }
3631 leaf ipv4-te-routerid {
3632 type inet:ipv4-address;
3633 description
3634 "IPv4 Traffic Engineering router ID of the IS-IS node -
3635 IS-IS reference is TLV 134.";
3636 }
3638 leaf ipv6-te-routerid {
3639 type inet:ipv6-address;
3640 description
3641 "IPv6 Traffic Engineering router ID of the IS-IS node -
3642 IS-IS reference is TLV 140.";
3643 }
3645 leaf-list protocol-supported {
3646 type uint8;
3647 description
3648 "List of supported protocols of the IS-IS node -
3649 IS-IS reference is TLV 129.";
3650 }
3652 leaf dynamic-hostname {
3653 type string;
3654 description
3655 "Host Name of the IS-IS node - IS-IS reference
3656 is TLV 137.";
3657 }
3659 container authentication {
3660 leaf authentication-type {
3661 type string;
3662 description
3663 "Authentication type to be used with IS-IS node.";
3664 }
3665 leaf authentication-key {
3666 type string;
3667 description
3668 "Authentication keyto be used. For security reasons,
3669 the authentication key MUST NOT be presented in
3670 plaintext format. It is recommended to use an MD5
3671 hash to present the authentication-key.";
3672 }
3673 description
3674 "IS-IS node authentication information container -
3675 IS-IS reference is TLV 10.";
3676 }
3678 container mt-entries {
3679 list topology {
3680 description
3681 "List of topologies supported";
3683 leaf MT-ID {
3684 type uint16 {
3685 range "0 .. 4095";
3686 }
3687 description
3688 "Multi-Topolgoy identifier of topology.";
3689 }
3691 leaf attributes {
3692 type bits {
3693 bit overload {
3694 description
3695 "If set, the originator is overloaded,
3696 and must be avoided in path calculation.";
3697 }
3698 bit attached {
3699 description
3700 "If set, the originator is attached to
3701 another area using the referred metric.";
3702 }
3703 }
3704 description
3705 "Attributes of the LSP for the associated
3706 topology.";
3707 }
3708 }
3709 description
3710 "IS-IS node topology information container -
3711 IS-IS reference is TLV 229.";
3712 }
3714 list router-capabilities {
3715 leaf flags {
3716 type bits {
3717 bit flooding {
3718 position 0;
3719 description
3720 "If the S bit is set, the IS-IS Router CAPABILITY
3721 TLV MUST be flooded across the entire routing
3722 domain. If the S bit is clear, the TLV MUST NOT
3723 be leaked between levels. This bit MUST NOT
3724 be altered during the TLV leaking.";
3725 }
3726 bit down {
3727 position 1;
3728 description
3729 "When the IS-IS Router CAPABILITY TLV is leaked
3730 from level-2 to level-1, the D bit MUST be set.
3731 Otherwise, this bit MUST be clear. IS-IS Router
3732 capability TLVs with the D bit set MUST NOT be
3733 leaked from level-1 to level-2 in to prevent
3734 TLV looping.";
3735 }
3736 }
3737 description "Router Capability Flags";
3738 }
3739 container node-tags {
3740 if-feature node-tag;
3741 list node-tag {
3742 leaf tag {
3743 type uint32;
3744 description "Node tag value.";
3745 }
3746 description "List of tags.";
3747 }
3748 description "Node Tag container";
3749 }
3751 leaf binary {
3752 type binary;
3753 description
3754 "Binary encoding of the IS-IS node capabilities";
3755 }
3756 description
3757 "IS-IS node capabilities container. This container may
3758 be extended with detailed information - IS-IS
3759 reference is TLV 242.";
3760 }
3762 container is-neighbor {
3763 list neighbor {
3764 uses neighbor;
3765 description "List of neighbors.";
3766 }
3767 description
3768 "Standard IS neighbors container - IS-IS reference is
3769 TLV 2.";
3770 }
3772 container extended-is-neighbor {
3773 list neighbor {
3774 uses neighbor-extended;
3775 description
3776 "List of extended IS neighbors";
3777 }
3778 description
3779 "Standard IS extended neighbors container - IS-IS
3780 reference is TLV 22";
3781 }
3783 container ipv4-internal-reachability {
3784 list prefixes {
3785 uses prefix-ipv4-std;
3786 description "List of prefixes.";
3787 }
3788 description
3789 "IPv4 internal reachability information container - IS-IS
3790 reference is TLV 128.";
3791 }
3793 container ipv4-external-reachability {
3794 list prefixes {
3795 uses prefix-ipv4-std;
3796 description "List of prefixes.";
3797 }
3798 description
3799 "IPv4 external reachability information container -
3800 IS-IS reference is TLV 130.";
3801 }
3803 container extended-ipv4-reachability {
3804 list prefixes {
3805 uses prefix-ipv4-extended;
3806 description "List of prefixes.";
3807 }
3808 description
3809 "IPv4 extended reachability information container -
3810 IS-IS reference is TLV 135.";
3811 }
3813 container mt-is-neighbor {
3814 list neighbor {
3815 leaf mt-id {
3816 type uint16 {
3817 range "0 .. 4095";
3818 }
3819 description "Multi-topology (MT) identifier";
3820 }
3821 uses neighbor-extended;
3822 description "List of neighbors.";
3824 }
3825 description
3826 "IS-IS multi-topology neighbor container - IS-IS
3827 reference is TLV 223.";
3828 }
3830 container mt-extended-ipv4-reachability {
3831 list prefixes {
3832 leaf mt-id {
3833 type uint16 {
3834 range "0 .. 4095";
3835 }
3836 description "Multi-topology (MT) identifier";
3837 }
3838 uses prefix-ipv4-extended;
3839 description "List of extended prefixes.";
3840 }
3841 description
3842 "IPv4 multi-topolgy (MT) extended reachability
3843 information container - IS-IS reference is TLV 235.";
3844 }
3846 container mt-ipv6-reachability {
3847 list prefixes {
3848 leaf MT-ID {
3849 type uint16 {
3850 range "0 .. 4095";
3851 }
3852 description "Multi-topology (MT) identifier";
3853 }
3854 uses prefix-ipv6-extended;
3855 description "List of IPv6 extended prefixes.";
3856 }
3857 description
3858 "IPv6 multi-topolgy (MT) extended reachability
3859 information container - IS-IS reference is TLV 237.";
3860 }
3862 container ipv6-reachability {
3863 list prefixes {
3864 uses prefix-ipv6-extended;
3865 description "List of IPv6 prefixes.";
3866 }
3867 description
3868 "IPv6 reachability information container - IS-IS
3869 reference is TLV 236.";
3870 }
3871 }
3872 grouping lsdb {
3873 description "Link State Database (LSDB) grouping";
3874 container database {
3875 config false;
3876 list level-db {
3877 key level;
3879 leaf level {
3880 type level-number;
3881 description "LSDB level number (1 or 2)";
3882 }
3883 list lsp {
3884 key lsp-id;
3885 uses lsp-entry;
3886 description "List of LSPs in LSDB";
3887 }
3888 description "LSP list for LSDB level container";
3889 }
3890 description "IS-IS Link State database container";
3891 }
3892 }
3894 /* Augmentations */
3896 augment "/rt:routing/"
3897 +"rt:ribs/rt:rib/rt:routes/rt:route" {
3898 when "rt:source-protocol = 'isis:isis'" {
3899 description "IS-IS-specific route attributes.";
3900 }
3901 uses route-content;
3902 description
3903 "This augments route object in RIB with IS-IS-specific
3904 attributes.";
3905 }
3907 augment "/if:interfaces/if:interface" {
3908 leaf clns-mtu {
3909 type uint16;
3910 description "CLNS MTU of the interface";
3911 }
3912 description "ISO interface config.";
3913 }
3915 augment "/rt:routing/rt:control-plane-protocols/"
3916 +"rt:control-plane-protocol" {
3917 when "rt:type = 'isis:isis'" {
3918 description
3919 "This augment is only valid when routing protocol
3920 instance type is 'isis'";
3921 }
3922 description
3923 "This augments a routing protocol instance with IS-IS
3924 specific parameters.";
3925 container isis {
3926 must "count(area-address) > 0" {
3927 error-message
3928 "At least one area-address must be configured.";
3929 description
3930 "Enforce configuration of at least one area.";
3931 }
3933 uses isis-global-cfg;
3934 container fast-reroute {
3935 if-feature fast-reroute;
3936 uses fast-reroute-global-cfg;
3937 uses fast-reroute-global-state;
3938 description
3939 "IP Fast ReRoute (IPFRR) global container";
3940 }
3941 container spf-control {
3942 leaf paths {
3943 if-feature max-ecmp;
3944 type uint16 {
3945 range "1..32";
3946 }
3947 description
3948 "Maximum number of Equal-Cost Multi-Path (ECMP) paths.";
3949 }
3950 container ietf-spf-delay {
3951 if-feature ietf-spf-delay;
3952 uses ietf-spf-delay-cfg;
3953 uses ietf-spf-delay-state;
3954 description "IETF SPF delay algorithm container";
3955 }
3956 description
3957 "SPF computation-related information container";
3958 }
3959 container topologies {
3960 if-feature multi-topology;
3961 list topology {
3962 key "name";
3963 leaf enable {
3964 type boolean;
3965 description "Topology enable configuration";
3966 }
3967 leaf name {
3968 type leafref {
3969 path "../../../../../../rt:ribs/rt:rib/rt:name";
3970 }
3971 description
3972 "Routing Information Base (RIB) corresponding
3973 to topology.";
3974 }
3976 uses isis-global-topologies-cfg;
3978 description "List of topologies";
3979 }
3980 description "Multi-topology container";
3981 }
3982 container interfaces {
3983 list interface {
3984 key "name";
3985 leaf name {
3986 type if:interface-ref;
3988 description
3989 "Reference to the interface within
3990 the routing-instance.";
3991 }
3992 uses isis-if-cfg;
3993 container fast-reroute {
3994 if-feature fast-reroute;
3995 uses fast-reroute-if-cfg;
3996 description
3997 "IP Fast ReRoute (IPFRR) interface container";
3998 }
3999 container topologies {
4000 if-feature multi-topology;
4001 list topology {
4002 key name;
4004 leaf name {
4005 type leafref {
4006 path "../../../../../../../../"+
4007 "rt:ribs/rt:rib/rt:name";
4008 }
4010 description
4011 "Routing Information Base (RIB) corresponding
4012 to topology.";
4013 }
4014 uses isis-if-topologies-cfg;
4015 description "List of interface topologies";
4016 }
4017 description "Multi-topology container";
4018 }
4019 uses adjacency-state;
4020 uses event-counters;
4021 uses packet-counters;
4022 description "List of IS-IS interfaces.";
4023 }
4024 description
4025 "IS-IS interface specific configuration container";
4026 }
4027 uses spf-log;
4028 uses lsp-log;
4029 uses hostname-db;
4030 uses lsdb;
4031 uses local-rib;
4032 uses system-counters;
4034 description
4035 "IS-IS configuration/state top-level container";
4036 }
4037 }
4039 /* RPC methods */
4041 rpc clear-adjacency {
4042 description
4043 "This RPC request clears a particular set of IS-IS
4044 adjacencies. If the operation fails due to an internal
4045 reason, then the error-tag and error-app-tag should be
4046 set indicating the reason for the failure.";
4047 input {
4049 leaf routing-protocol-instance-name {
4050 type instance-state-ref;
4051 mandatory "true";
4052 description
4053 "Name of the IS-IS protocol instance whose IS-IS
4054 information is being queried.
4056 If the corresponding IS-IS instance doesn't exist,
4057 then the operation will fail with an error-tag of
4058 'data-missing' and an error-app-tag of
4059 'routing-protocol-instance-not-found'.";
4060 }
4061 leaf level {
4062 type level;
4063 description
4064 "IS-IS level of the adjacency to be cleared. If the
4065 IS-IS level is level-1-2, both level 1 and level 2
4066 adjacencies would be cleared.
4068 If the value provided is different from the one
4069 authorized in the enum type, then the operation
4070 SHALL fail with an error-tag of 'data-missing' and
4071 an error-app-tag of 'bad-isis-level'.";
4072 }
4073 leaf interface {
4074 type string;
4075 description
4076 "IS-IS interface name.
4078 If the corresponding IS-IS interface doesn't exist,
4079 then the operation SHALL fail with an error-tag of
4080 'data-missing' and an error-app-tag of
4081 'isis-interface-not-found'.";
4082 }
4083 }
4084 }
4086 rpc clear-database {
4087 description
4088 "This RPC request clears a particular IS-IS database. If
4089 the operation fails for an IS-IS internal reason, then
4090 the error-tag and error-app-tag should be set
4091 indicating the reason for the failure.";
4092 input {
4093 leaf routing-protocol-instance-name {
4094 type instance-state-ref;
4095 mandatory "true";
4096 description
4097 "Name of the IS-IS protocol instance whose IS-IS
4098 database(s) is/are being cleard.
4100 If the corresponding IS-IS instance doesn't exist,
4101 then the operation will fail with an error-tag of
4102 'data-missing' and an error-app-tag of
4103 'routing-protocol-instance-not-found'.";
4104 }
4105 leaf level {
4106 type level;
4107 description
4108 "IS-IS level of the adjacency to be cleared. If the
4109 IS-IS level is level-1-2, both level 1 and level 2
4110 databases would be cleared.
4112 If the value provided is different from the one
4113 authorized in the enum type, then the operation
4114 SHALL fail with an error-tag of 'data-missing' and
4115 an error-app-tag of 'bad-isis-level'.";
4116 }
4117 }
4118 }
4120 /* Notifications */
4122 notification database-overload {
4123 uses notification-instance-hdr;
4125 leaf overload {
4126 type enumeration {
4127 enum off {
4128 description
4129 "Indicates IS-IS instance has left overload state";
4130 }
4131 enum on {
4132 description
4133 "Indicates IS-IS instance has entered overload state";
4134 }
4136 }
4137 description "New overload state of the IS-IS instance";
4138 }
4139 description
4140 "This notification is sent when an IS-IS instance
4141 overload state changes.";
4142 }
4144 notification lsp-too-large {
4145 uses notification-instance-hdr;
4146 uses notification-interface-hdr;
4148 leaf pdu-size {
4149 type uint32;
4150 description "Size of the LSP PDU";
4151 }
4152 leaf lsp-id {
4153 type lsp-id;
4154 description "LSP ID";
4155 }
4156 description
4157 "This notification is sent when we attempt to propagate
4158 an LSP that is larger than the dataLinkBlockSize for the
4159 circuit. The notification generation must be throttled
4160 with at least 5 seconds betweeen successive
4161 notifications.";
4162 }
4164 notification if-state-change {
4165 uses notification-instance-hdr;
4166 uses notification-interface-hdr;
4168 leaf state {
4169 type if-state-type;
4170 description "Interface state.";
4171 }
4172 description
4173 "This notification is sent when an interface
4174 state change is detected.";
4175 }
4177 notification corrupted-lsp-detected {
4178 uses notification-instance-hdr;
4179 leaf lsp-id {
4180 type lsp-id;
4181 description "LSP ID";
4182 }
4183 description
4184 "This notification is sent when we find that
4185 an LSP that was stored in memory has become
4186 corrupted.";
4187 }
4189 notification attempt-to-exceed-max-sequence {
4190 uses notification-instance-hdr;
4191 leaf lsp-id {
4192 type lsp-id;
4193 description "LSP ID";
4194 }
4195 description
4196 "This notification is sent when the system
4197 wraps the 32-bit sequence counter of an LSP.";
4198 }
4200 notification id-len-mismatch {
4201 uses notification-instance-hdr;
4202 uses notification-interface-hdr;
4204 leaf pdu-field-len {
4205 type uint8;
4206 description "Size of the ID length in the received PDU";
4207 }
4208 leaf raw-pdu {
4209 type binary;
4210 description "Received raw PDU.";
4211 }
4212 description
4213 "This notification is sent when we receive a PDU
4214 with a different value for the System ID length.
4215 The notification generation must be throttled
4216 with at least 5 seconds betweeen successive
4217 notifications.";
4218 }
4220 notification max-area-addresses-mismatch {
4221 uses notification-instance-hdr;
4222 uses notification-interface-hdr;
4224 leaf max-area-addresses {
4225 type uint8;
4226 description "Received number of supported areas";
4227 }
4228 leaf raw-pdu {
4229 type binary;
4230 description "Received raw PDU.";
4231 }
4232 description
4233 "This notification is sent when we receive a PDU
4234 with a different value for the Maximum Area Addresses.
4235 The notification generation must be throttled
4236 with at least 5 seconds betweeen successive
4237 notifications.";
4238 }
4240 notification own-lsp-purge {
4241 uses notification-instance-hdr;
4242 uses notification-interface-hdr;
4243 leaf lsp-id {
4244 type lsp-id;
4245 description "LSP ID";
4246 }
4247 description
4248 "This notification is sent when the system receives
4249 a PDU with its own system ID and zero age.";
4251 }
4253 notification sequence-number-skipped {
4254 uses notification-instance-hdr;
4255 uses notification-interface-hdr;
4256 leaf lsp-id {
4257 type lsp-id;
4258 description "LSP ID";
4259 }
4260 description
4261 "This notification is sent when the system receives a
4262 PDU with its own system ID and different contents. The
4263 system has to reoriginate the LSP with a higher sequence
4264 number.";
4265 }
4267 notification authentication-type-failure {
4268 uses notification-instance-hdr;
4269 uses notification-interface-hdr;
4270 leaf raw-pdu {
4271 type binary;
4272 description "Received raw PDU.";
4273 }
4274 description
4275 "This notification is sent when the system receives a
4276 PDU with the wrong authentication type field.
4277 The notification generation must be throttled
4278 with at least 5 seconds betweeen successive
4279 notifications.";
4280 }
4282 notification authentication-failure {
4283 uses notification-instance-hdr;
4284 uses notification-interface-hdr;
4285 leaf raw-pdu {
4286 type binary;
4287 description "Received raw PDU.";
4288 }
4289 description
4290 "This notification is sent when the system receives
4291 a PDU with the wrong authentication information.
4292 The notification generation must be throttled with
4293 with at least 5 seconds betweeen successive
4294 notifications.";
4295 }
4297 notification version-skew {
4298 uses notification-instance-hdr;
4299 uses notification-interface-hdr;
4300 leaf protocol-version {
4301 type uint8;
4302 description "Protocol version received in the PDU.";
4303 }
4304 leaf raw-pdu {
4305 type binary;
4306 description "Received raw PDU.";
4307 }
4308 description
4309 "This notification is sent when the system receives a
4310 PDU with a different protocol version number.
4311 The notification generation must be throttled
4312 with at least 5 seconds betweeen successive
4313 notifications.";
4314 }
4316 notification area-mismatch {
4317 uses notification-instance-hdr;
4318 uses notification-interface-hdr;
4319 leaf raw-pdu {
4320 type binary;
4321 description "Received raw PDU.";
4322 }
4323 description
4324 "This notification is sent when the system receives a
4325 Hello PDU from an IS that does not share any area
4326 address. The notification generation must be throttled
4327 with at least 5 seconds betweeen successive
4328 notifications.";
4329 }
4331 notification rejected-adjacency {
4332 uses notification-instance-hdr;
4333 uses notification-interface-hdr;
4334 leaf raw-pdu {
4335 type binary;
4336 description
4337 "Received raw PDU.";
4338 }
4339 leaf reason {
4340 type string;
4341 description
4342 "The system may provide a reason to reject the
4343 adjacency. If the reason is not available,
4344 an empty string will be returned.";
4345 }
4346 description
4347 "This notification is sent when the system receives a
4348 Hello PDU from an IS but does not establish an adjacency
4349 for some reason. The notification generation must be
4350 throttled with at least 5 seconds betweeen successive
4351 notifications.";
4352 }
4354 notification protocols-supported-mismatch {
4355 uses notification-instance-hdr;
4356 uses notification-interface-hdr;
4357 leaf raw-pdu {
4358 type binary;
4359 description "Received raw PDU.";
4360 }
4361 leaf-list protocols {
4362 type uint8;
4363 description
4364 "List of protocols supported by the remote system.";
4365 }
4366 description
4367 "This notification is sent when the system receives a
4368 non-pseudonode LSP that has no matching protocols
4369 supported. The notification generation must be throttled
4370 with at least 5 seconds betweeen successive
4371 notifications.";
4372 }
4374 notification lsp-error-detected {
4375 uses notification-instance-hdr;
4376 uses notification-interface-hdr;
4377 leaf lsp-id {
4378 type lsp-id;
4379 description "LSP ID.";
4380 }
4381 leaf raw-pdu {
4382 type binary;
4383 description "Received raw PDU.";
4384 }
4385 leaf error-offset {
4386 type uint32;
4387 description
4388 "If the problem is a malformed TLV, the error-offset
4389 points to the start of the TLV. If the problem is with
4390 the LSP header, the error-offset points to the errant
4391 byte";
4392 }
4393 leaf tlv-type {
4394 type uint8;
4395 description
4396 "If the problem is a malformed TLV, the tlv-type is set
4397 to the type value of the suspicious TLV. Otherwise,
4398 this leaf is not present.";
4399 }
4400 description
4401 "This notification is sent when the system receives an
4402 ' LSP with a parse error. The notification generation must
4403 be throttled with at least 5 seconds betweeen successive
4404 notifications.";
4405 }
4407 notification adjacency-state-change {
4408 uses notification-instance-hdr;
4409 uses notification-interface-hdr;
4410 leaf neighbor {
4411 type string;
4412 description
4413 "Name of the neighbor. If the name of the neighbor is
4414 not available, it is not returned.";
4415 }
4416 leaf neighbor-system-id {
4417 type system-id;
4418 description "Neighbor system-id";
4419 }
4420 leaf state {
4421 type adj-state-type;
4423 description "New state of the IS-IS adjacency.";
4424 }
4425 leaf reason {
4426 type string;
4427 description
4428 "If the adjacency is going to DOWN, this leaf provides
4429 a reason for the adjacency going down. The reason is
4430 provided as a text. If the adjacency is going to UP, no
4431 reason is provided.";
4432 }
4433 description
4434 "This notification is sent when an IS-IS adjacency
4435 moves to Up state or to Down state.";
4436 }
4438 notification lsp-received {
4439 uses notification-instance-hdr;
4440 uses notification-interface-hdr;
4441 leaf lsp-id {
4442 type lsp-id;
4443 description "LSP ID";
4444 }
4445 leaf sequence {
4446 type uint32;
4447 description "Sequence number of the received LSP.";
4448 }
4449 leaf received-timestamp {
4450 type yang:timestamp;
4452 description "Timestamp when the LSP was received.";
4453 }
4454 leaf neighbor-system-id {
4455 type system-id;
4456 description "Neighbor system-id of LSP sender";
4457 }
4458 description
4459 "This notification is sent when an LSP is received.
4460 The notification generation must be throttled with at
4461 least 5 seconds betweeen successive notifications.";
4462 }
4464 notification lsp-generation {
4465 uses notification-instance-hdr;
4467 leaf lsp-id {
4468 type lsp-id;
4469 description "LSP ID";
4470 }
4471 leaf sequence {
4472 type uint32;
4473 description "Sequence number of the received LSP.";
4474 }
4475 leaf send-timestamp {
4476 type yang:timestamp;
4478 description "Timestamp when our LSP was regenerated.";
4479 }
4480 description
4481 "This notification is sent when an LSP is regenerated.
4482 The notification generation must be throttled with at
4483 least 5 seconds betweeen successive notifications.";
4484 }
4485 }
4487
4489 7. Security Considerations
4491 Configuration and state data defined in this document are designed to
4492 be accessed via the NETCONF protocol [RFC6241].
4494 As IS-IS is an IGP protocol (critical piece of the network), ensuring
4495 stability and security of the protocol is mandatory for the network
4496 service.
4498 Authors recommends to implement NETCONF access control model
4499 ([RFC6536]) to restrict access to all or part of the configuration to
4500 specific users. Access control to RPCs is also critical as RPC
4501 allows to clear protocol datastructures that would definitively
4502 impact the network service. This kind of RPC needs only to be used
4503 in specific cases by well-known experienced users.
4505 Authors consider that all the configuration is considered as
4506 sensitive/vulnerable as well as RPCs. But security teams can decide
4507 to open some part of the configuration to less experienced users
4508 depending on the internal organization, for example:
4510 o User FullWrite: would access to the whole data model. This kind
4511 of profile may be restricted to few experienced people.
4513 o User PartialWrite: would only access to configuration part within
4514 /isis/interfaces/interface. So this kind of profile is restricted
4515 to creation/modification/deletion of interfaces. This profile
4516 does not have access to RPC.
4518 o User Read: would only access to the operational states.
4520 Unauthorized access to configuration or RPC may cause high damages to
4521 the network service.
4523 The "isis/database" may contain authentication information. As
4524 presented in the description of the "/isis/database/level-
4525 1/lsp/authentication/authentication-key", the authentication MUST
4526 never be displayed in a plaintext format for security reason.
4527 Authors recommend the usage of MD5 to display or return the
4528 authentication-key.
4530 Some authentication-key may also be required in the "isis" writable
4531 container. When configuring IS-IS using the NETCONF protocol,
4532 authors recommends the usage of secure transport of NETCONF using SSH
4533 ([RFC6242]).
4535 8. Contributors
4537 Authors would like to thank Kiran Agrahara Sreenivasa, Dean
4538 Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the
4539 draft.
4541 9. Acknowledgements
4543 TBD.
4545 10. IANA Considerations
4547 The IANA is requested to assign two new URIs from the IETF XML
4548 registry ([RFC3688]). Authors are suggesting the following URI:
4550 URI: urn:ietf:params:xml:ns:yang:ietf-isis
4551 Registrant Contact: IS-IS WG
4552 XML: N/A, the requested URI is an XML namespace
4554 This document also requests one new YANG module name in the YANG
4555 Module Names registry ([RFC6020]) with the following suggestion:
4557 name: ietf-isis
4558 namespace: urn:ietf:params:xml:ns:yang:ietf-isis
4559 prefix: isis
4560 reference: RFC XXXX
4562 11. Change log for ietf-isis YANG module
4564 11.1. From version -22 to version -23
4566 o Fix revision date of the module
4568 11.2. From version -21 to version -22
4570 o TE router-id modeling alignment with OSPF.
4572 o Add max-ecmp + feature in spf-control container (alignment with
4573 OSPF).
4575 11.3. From version -20 to version -21
4577 o Model revision date fix
4579 11.4. From version -19 to version -20
4581 o Moved to Yang 1.1
4583 o Lower case enumerations
4585 o Add RFC references to features
4586 o Remove segment-routing feature
4588 o Modified BFD activation modeling
4590 11.5. From version -18 to version -19
4592 o Align with draft-ietf-netmod-rfc8022bis.
4594 o Modify address family types as per draft-ietf-rtgwg-routing-types-
4595 17.
4597 11.6. From version -17 to version -18
4599 o NMDA compliancy.
4601 o Set some default values.
4603 o Align with iana-rt-types module.
4605 11.7. From version -16 to version -17
4607 o Cosmetic fixes.
4609 o Use of rt-types model.
4611 11.8. From version -15 to version -16
4613 o Alignment with last IETF key chain model.
4615 o lsp-log "change" leaf moved as an identity.
4617 o Incremental SPF removed from spf-log types.
4619 11.9. From version -14 to version -15
4621 o Alignment with OSPF model done:
4623 * Added spf-control container with IETF SPF delay algorithm as a
4624 feature.
4626 * Added graceful-restart options.
4628 * Added nsr as a feature.
4630 * Removed per topology FRR. Need to be augmented if necessary.
4632 * Created an ldp container within mpls.
4634 * Renamed igp-ldp-sync to igp-sync.
4636 * Added auto-cost container.
4638 * Moved reference-bandwidth under auto-cost container.
4640 * Added IS-IS local RIB as operational state.
4642 * Added decode-completed and raw-data leaves in the LSDB model.
4644 * Modified the notification header.
4646 11.10. From version -13 to version -14
4648 o Segment Routing extensions are now in a separate document.
4650 11.11. From version -12 to version -13
4652 o Move feature nlpid-control to container rather than list.
4654 o Rename multi-topology to topologies to align with OSPF.
4656 o Rename bfd/enabled to bfd/enable for consistency reason.
4658 o Add support for NSR with a feature.
4660 11.12. From version -09 to version -12
4662 o Rename node-tag container to node-tags.
4664 11.13. From version -08 to version -09
4666 o Added container before af list.
4668 o Added container before topology list.
4670 o Aligned LFA if per level cfg.
4672 o Align to draft-ietf-netmod-routing-cfg-23.
4674 11.14. From version -07 to version -08
4676 o Remove selector from system-id type.
4678 o Add some default values.
4680 o Moved lists to containers+groupings for per level configuration.
4682 o remove routing-instance as per core routing model v21.
4684 o added BFD leaf (no more BFD protocol model).
4686 o changed keychain module reference.
4688 11.15. From version -05 to version -07
4690 o Move Overload config from list to container.
4692 o Move Overload-max-metric config from list to container.
4694 o Move preference config from list to container.
4696 o Add Node flag in config.
4698 o Removed BFD config => moved to isis-bfd module.
4700 o Remove call to routing policy model.
4702 11.16. From version -03 to version -05
4704 o Correct invalid references to previous versions of core routing
4705 model.
4707 o Remove BFD config and replace by groupings from ietf-bfd.
4709 o Adding routing-policy support through routing-policy model.
4711 11.17. From version -02 to version -03
4713 o Reviewed config and op state groupings.
4715 o Add default value to lfa candidate-disabled.
4717 o Add enable leaf to isis container to reflect admin state.
4719 o Move to VRF centric only.
4721 o Segment routing is part os a separate module.
4723 11.18. From version -01 to version -02
4725 o Adding IPFRR.
4727 o Adding igp-ldp-sync.
4729 o Adding segment-routing.
4731 o Adding instance reference to operational states.
4733 o Move AF type from string to identity.
4735 o Updated router-capability in LSDB description.
4737 o packet counters moved to interface-packet-counters.
4739 o Added modification information in lsp-log.
4741 o Removing igp-ldp-sync timer in IS-IS.
4743 o Defining hierarchy for operational states.
4745 o Adding clns-mtu.
4747 o Adding key-chain.
4749 11.19. From version -00 to version -01
4751 o Interface metric move from af container to interface container.
4753 o Hello-padding on interface moved to hello-padding-disable with
4754 empty type.
4756 o three-way-handshake removed.
4758 o route preference changed to a choice.
4760 o csnp-authentication/psnp-authentication merged to authentication
4761 container.
4763 o lsp-gen-interval-exp-delay removed.
4765 o Added overload-max-metric feature.
4767 o overload-max-metric is in a separate container.
4769 o Change hello-padding to container.
4771 o Change bfd to container.
4773 o Make BFD a feature.
4775 o Create mpls-te container and put router-id inside.
4777 o Remove GR helper disable and timers.
4779 12. Normative References
4781 [I-D.ietf-netmod-routing-cfg]
4782 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
4783 Management", draft-ietf-netmod-routing-cfg-25 (work in
4784 progress), November 2016.
4786 [I-D.ietf-rtgwg-yang-key-chain]
4787 Lindem, A., Qu, Y., Yeung, D., Chen, I., and Z. Zhang,
4788 "Routing Key Chain YANG Data Model", draft-ietf-rtgwg-
4789 yang-key-chain-24 (work in progress), April 2017.
4791 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
4792 Requirement Levels", BCP 14, RFC 2119,
4793 DOI 10.17487/RFC2119, March 1997,
4794 .
4796 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
4797 DOI 10.17487/RFC3688, January 2004,
4798 .
4800 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi
4801 Topology (MT) Routing in Intermediate System to
4802 Intermediate Systems (IS-ISs)", RFC 5120,
4803 DOI 10.17487/RFC5120, February 2008,
4804 .
4806 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for
4807 IP Fast Reroute: Loop-Free Alternates", RFC 5286,
4808 DOI 10.17487/RFC5286, September 2008,
4809 .
4811 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP
4812 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March
4813 2009, .
4815 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
4816 the Network Configuration Protocol (NETCONF)", RFC 6020,
4817 DOI 10.17487/RFC6020, October 2010,
4818 .
4820 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
4821 and A. Bierman, Ed., "Network Configuration Protocol
4822 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
4823 .
4825 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
4826 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
4827 .
4829 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
4830 Protocol (NETCONF) Access Control Model", RFC 6536,
4831 DOI 10.17487/RFC6536, March 2012,
4832 .
4834 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N.
4835 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)",
4836 RFC 7490, DOI 10.17487/RFC7490, April 2015,
4837 .
4839 Appendix A. Example of IS-IS configuration in XML
4841 This section gives an example of configuration of an IS-IS instance
4842 on a device. The example is written in XML.
4844
4845
4846
4847 SLI
4848 1.1.1.1
4849
4850
4851
4852 Loopback0
4853
4854
4855 Eth1
4856
4857
4858
4859
4860 ISIS
4861
4862 isis:isis
4863
4864 true
4865 level-2
4866 87FC.FCDF.4432
4867 49.0001
4868
4869 1.1.1.1
4870
4871 65535
4872 65000
4873
4874 wide
4875
4876
4877 111111
4878
4879
4880
4881 ipv4-unicast
4882 true
4883
4884
4885
4886
4887 Loopback0
4888 200
4889
4890 0
4891
4892 true
4893
4894
4895 Eth1
4896 level-2
4897 point-to-point
4898
4899 167890
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909 Loopback0
4910
4911
4912
4913
4914
4915
4916 1.1.1.1
4917 32
4918
4919
4921
4922
4923 Eth1
4924
4925
4926
4927
4928
4929
4930 10.0.0.1
4931 30
4932
4933
4935
4936
4937
4939 Authors' Addresses
4941 Stephane Litkowski
4942 Orange
4944 Email: stephane.litkowski@orange.com
4946 Derek Yeung
4947 Arrcus, Inc
4949 Email: derek@arrcus.com
4951 Acee Lindem
4952 Cisco Systems
4954 Email: acee@cisco.com
4956 Jeffrey Zhang
4957 Juniper Networks
4959 Email: zzhang@juniper.net
4961 Ladislav Lhotka
4962 CZ.NIC
4964 Email: lhotka@nic.cz