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