idnits 2.17.00 (12 Aug 2021)
/tmp/idnits40043/draft-ietf-isis-yang-isis-cfg-16.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 326 has weird spacing: '...ce-name ins...'
== Line 331 has weird spacing: '...ce-name ins...'
== Line 696 has weird spacing: '...--rw af ide...'
== Line 819 has weird spacing: '...ce-name ins...'
== Line 824 has weird spacing: '...ce-name ins...'
== (1 more instance...)
-- The document date (March 29, 2017) is 1879 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: September 30, 2017 Arrcus, Inc
6 A. Lindem
7 Cisco Systems
8 J. Zhang
9 Juniper Networks
10 L. Lhotka
11 CZ.NIC
12 March 29, 2017
14 YANG Data Model for IS-IS protocol
15 draft-ietf-isis-yang-isis-cfg-16
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 September 30, 2017.
45 Copyright Notice
47 Copyright (c) 2017 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 . . . . . . . . . . . . . . . . . . . 11
66 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 11
67 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 12
68 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 13
69 2.5. Authentication Parameters . . . . . . . . . . . . . . . . 16
70 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 16
71 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 16
72 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 16
73 2.9. Operational States . . . . . . . . . . . . . . . . . . . 17
74 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 17
75 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 18
76 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 22
77 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 23
78 7. Security Considerations . . . . . . . . . . . . . . . . . . . 101
79 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 102
80 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 102
81 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 102
82 11. Change log for ietf-isis YANG module . . . . . . . . . . . . 102
83 11.1. From version -15 to version -16 . . . . . . . . . . . . 102
84 11.2. From version -14 to version -15 . . . . . . . . . . . . 102
85 11.3. From version -13 to version -14 . . . . . . . . . . . . 103
86 11.4. From version -12 to version -13 . . . . . . . . . . . . 103
87 11.5. From version -09 to version -12 . . . . . . . . . . . . 103
88 11.6. From version -08 to version -09 . . . . . . . . . . . . 103
89 11.7. From version -07 to version -08 . . . . . . . . . . . . 104
90 11.8. From version -05 to version -07 . . . . . . . . . . . . 104
91 11.9. From version -03 to version -05 . . . . . . . . . . . . 104
92 11.10. From version -02 to version -03 . . . . . . . . . . . . 104
93 11.11. From version -01 to version -02 . . . . . . . . . . . . 105
94 11.12. From version -00 to version -01 . . . . . . . . . . . . 105
95 12. Normative References . . . . . . . . . . . . . . . . . . . . 106
96 Appendix A. Example of IS-IS configuration in XML . . . . . . . 107
97 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 109
99 1. Introduction
101 This document defines a YANG data model for IS-IS routing protocol.
103 The data model covers configuration of an IS-IS routing protocol
104 instance as well as operational states.
106 1.1. Tree diagram
108 A simplified graphical representation of the data model is presented
109 in Section 2.
111 The meaning of the symbols in these diagrams is as follows:
113 o Brackets "[" and "]" enclose list keys.
115 o Curly braces "{" and "}" contain names of optional features that
116 make the corresponding node conditional.
118 o Abbreviations before data node names: "rw" means configuration
119 (read-write), and "ro" state data (read-only).
121 o Symbols after data node names: "?" means an optional node and "*"
122 denotes a "list" or "leaf-list".
124 o Parentheses enclose choice and case nodes, and case nodes are also
125 marked with a colon (":").
127 o Ellipsis ("...") stands for contents of subtrees that are not
128 shown.
130 2. Design of the Data Model
132 The IS-IS YANG module is divided in two main "isis" containers that
133 are augmenting the "control-plane-protocol" lists in ietf-routing
134 module with specific IS-IS parameters.
136 One container contains the writable parameters, while the other
137 contains the operational states.
139 The figure below describes the overall structure of the isis YANG
140 module:
142 module: ietf-isis
143 augment /rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route:
144 +--ro metric? uint32
145 +--ro tag* uint64
146 +--ro route-type? enumeration
147 augment /if:interfaces/if:interface:
148 +--rw clns-mtu? uint16
149 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol
150 :
151 +--rw isis
152 +--rw enable? boolean {admin-control}?
153 +--rw level-type? level
154 +--rw system-id? system-id
155 +--rw maximum-area-addresses? uint8 {maximum-area-addresses}?
156 +--rw area-address* area-address
157 +--rw mpls
158 | +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}?
159 | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}?
160 | +--rw ldp
161 | ...
162 +--rw auto-cost {auto-cost}?
163 | +--rw reference-bandwidth? uint32
164 | +--rw enable? boolean
165 +--rw lsp-mtu? uint16
166 +--rw lsp-lifetime? uint16
167 +--rw lsp-refresh? uint16 {lsp-refresh}?
168 +--rw spf-control
169 | +--rw ietf-spf-delay {ietf-spf-delay}?
170 | ...
171 +--rw graceful-restart {graceful-restart}?
172 | +--rw enable? boolean
173 | +--rw restart-interval? uint16
174 | +--rw helper-enable? boolean
175 +--rw nsr {nsr}?
176 | +--rw enable? boolean
177 +--rw node-tags {node-tag}?
178 | +--rw node-tag* [tag]
179 | ...
180 +--rw authentication
181 | +--rw (authentication-type)?
182 | | ...
183 | +--rw level-1
184 | | ...
185 | +--rw level-2
186 | ...
187 +--rw metric-type
188 | +--rw value? enumeration
189 | +--rw level-1
190 | | ...
192 | +--rw level-2
193 | ...
194 +--rw default-metric
195 | +--rw value? wide-metric
196 | +--rw level-1
197 | | ...
198 | +--rw level-2
199 | ...
200 +--rw afs {nlpid-control}?
201 | +--rw af* [af]
202 | ...
203 +--rw preference
204 | +--rw (granularity)?
205 | ...
206 +--rw overload
207 | +--rw status? boolean
208 +--rw overload-max-metric {overload-max-metric}?
209 | +--rw timeout? uint16
210 +--rw fast-reroute {fast-reroute}?
211 | +--rw lfa {lfa}?
212 +--rw topologies {multi-topology}?
213 | +--rw topology* [name]
214 | ...
215 +--rw interfaces
216 +--rw interface* [name]
217 ...
218 augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-pr
219 otocol:
220 +--ro isis
221 +--ro enable? boolean {admin-control}?
222 +--ro level-type? level
223 +--ro system-id? system-id
224 +--ro maximum-area-addresses? uint8 {maximum-area-addresses}?
225 +--ro area-address* area-address
226 +--ro mpls
227 | +--ro ipv4-router-id? inet:ipv4-address {ipv4-router-id}?
228 | +--ro ipv6-router-id? inet:ipv6-address {ipv6-router-id}?
229 | +--ro ldp
230 | ...
231 +--ro auto-cost {auto-cost}?
232 | +--ro reference-bandwidth? uint32
233 | +--ro enable? boolean
234 +--ro lsp-mtu? uint16
235 +--ro lsp-lifetime? uint16
236 +--ro lsp-refresh? uint16 {lsp-refresh}?
237 +--ro spf-control
238 | +--ro ietf-spf-delay {ietf-spf-delay}?
239 | ...
240 +--ro graceful-restart {graceful-restart}?
241 | +--ro enable? boolean
242 | +--ro restart-interval? uint16
243 | +--ro helper-enable? boolean
244 +--ro nsr {nsr}?
245 | +--ro enable? boolean
246 +--ro node-tags {node-tag}?
247 | +--ro node-tag* [tag]
248 | ...
249 +--ro authentication
250 | +--ro (authentication-type)?
251 | | ...
252 | +--ro level-1
253 | | ...
254 | +--ro level-2
255 | ...
256 +--ro metric-type
257 | +--ro value? enumeration
258 | +--ro level-1
259 | | ...
260 | +--ro level-2
261 | ...
262 +--ro default-metric
263 | +--ro value? wide-metric
264 | +--ro level-1
265 | | ...
266 | +--ro level-2
267 | ...
268 +--ro afs {nlpid-control}?
269 | +--ro af* [af]
270 | ...
271 +--ro preference
272 | +--ro (granularity)?
273 | ...
274 +--ro overload
275 | +--ro status? boolean
276 +--ro overload-max-metric {overload-max-metric}?
277 | +--ro timeout? uint16
278 +--ro fast-reroute {fast-reroute}?
279 | +--ro lfa {lfa}?
280 | +--ro protected-routes
281 | | ...
282 | +--ro nonprotected-routes
283 | | ...
284 | +--ro protection-statistics* [frr-protection-method]
285 | ...
286 +--ro ietf-spf-delay {ietf-spf-delay}?
287 | +--ro initial-delay? uint16
288 | +--ro short-delay? uint16
289 | +--ro long-delay? uint16
290 | +--ro hold-down? uint16
291 | +--ro time-to-learn? uint16
292 | +--ro current-state? enumeration
293 | +--ro remaining-time-to-learn? uint16
294 | +--ro remaining-hold-down? uint16
295 | +--ro last-event-received? yang:timestamp
296 | +--ro next-spf-time? yang:timestamp
297 | +--ro last-spf-time? yang:timestamp
298 +--ro local-rib
299 | +--ro route* [prefix]
300 | ...
301 +--ro topologies* [name]
302 | +--ro name leafref
303 | +--ro local-rib
304 | ...
305 +--ro system-counters
306 | +--ro level* [level]
307 | ...
308 +--ro interfaces
309 | +--ro interface* [interface]
310 | ...
311 +--ro spf-log
312 | +--ro event* [id]
313 | ...
314 +--ro lsp-log
315 | +--ro event* [id]
316 | ...
317 +--ro database
318 | +--ro level-db* [level]
319 | ...
320 +--ro hostnames
321 +--ro hostname* [system-id]
322 ...
323 rpcs:
324 +---x clear-adjacency
325 | +--ro input
326 | +--ro routing-protocol-instance-name instance-state-ref
327 | +--ro level? level
328 | +--ro interface? string
329 +---x clear-database
330 +--ro input
331 +--ro routing-protocol-instance-name instance-state-ref
332 +--ro level? level
333 notifications:
334 +---n database-overload
335 | +--ro routing-instance? string
336 | +--ro routing-protocol-name? string
337 | +--ro isis-level? level
338 | +--ro overload? enumeration
339 +---n lsp-too-large
340 | +--ro routing-instance? string
341 | +--ro routing-protocol-name? string
342 | +--ro isis-level? level
343 | +--ro interface-name? string
344 | +--ro interface-level? level
345 | +--ro extended-circuit-id? extended-circuit-id
346 | +--ro pdu-size? uint32
347 | +--ro lsp-id? lsp-id
348 +---n if-state-change
349 | +--ro routing-instance? string
350 | +--ro routing-protocol-name? string
351 | +--ro isis-level? level
352 | +--ro interface-name? string
353 | +--ro interface-level? level
354 | +--ro extended-circuit-id? extended-circuit-id
355 | +--ro state? if-state-type
356 +---n corrupted-lsp-detected
357 | +--ro routing-instance? string
358 | +--ro routing-protocol-name? string
359 | +--ro isis-level? level
360 | +--ro lsp-id? lsp-id
361 +---n attempt-to-exceed-max-sequence
362 | +--ro routing-instance? string
363 | +--ro routing-protocol-name? string
364 | +--ro isis-level? level
365 | +--ro lsp-id? lsp-id
366 +---n id-len-mismatch
367 | +--ro routing-instance? string
368 | +--ro routing-protocol-name? string
369 | +--ro isis-level? level
370 | +--ro interface-name? string
371 | +--ro interface-level? level
372 | +--ro extended-circuit-id? extended-circuit-id
373 | +--ro pdu-field-len? uint8
374 | +--ro raw-pdu? binary
375 +---n max-area-addresses-mismatch
376 | +--ro routing-instance? string
377 | +--ro routing-protocol-name? string
378 | +--ro isis-level? level
379 | +--ro interface-name? string
380 | +--ro interface-level? level
381 | +--ro extended-circuit-id? extended-circuit-id
382 | +--ro max-area-addresses? uint8
383 | +--ro raw-pdu? binary
384 +---n own-lsp-purge
385 | +--ro routing-instance? string
386 | +--ro routing-protocol-name? string
387 | +--ro isis-level? level
388 | +--ro interface-name? string
389 | +--ro interface-level? level
390 | +--ro extended-circuit-id? extended-circuit-id
391 | +--ro lsp-id? lsp-id
392 +---n sequence-number-skipped
393 | +--ro routing-instance? string
394 | +--ro routing-protocol-name? string
395 | +--ro isis-level? level
396 | +--ro interface-name? string
397 | +--ro interface-level? level
398 | +--ro extended-circuit-id? extended-circuit-id
399 | +--ro lsp-id? lsp-id
400 +---n authentication-type-failure
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 raw-pdu? binary
408 +---n authentication-failure
409 | +--ro routing-instance? string
410 | +--ro routing-protocol-name? string
411 | +--ro isis-level? level
412 | +--ro interface-name? string
413 | +--ro interface-level? level
414 | +--ro extended-circuit-id? extended-circuit-id
415 | +--ro raw-pdu? binary
416 +---n version-skew
417 | +--ro routing-instance? string
418 | +--ro routing-protocol-name? string
419 | +--ro isis-level? level
420 | +--ro interface-name? string
421 | +--ro interface-level? level
422 | +--ro extended-circuit-id? extended-circuit-id
423 | +--ro protocol-version? uint8
424 | +--ro raw-pdu? binary
425 +---n area-mismatch
426 | +--ro routing-instance? string
427 | +--ro routing-protocol-name? string
428 | +--ro isis-level? level
429 | +--ro interface-name? string
430 | +--ro interface-level? level
431 | +--ro extended-circuit-id? extended-circuit-id
432 | +--ro raw-pdu? binary
433 +---n rejected-adjacency
434 | +--ro routing-instance? string
435 | +--ro routing-protocol-name? string
436 | +--ro isis-level? level
437 | +--ro interface-name? string
438 | +--ro interface-level? level
439 | +--ro extended-circuit-id? extended-circuit-id
440 | +--ro raw-pdu? binary
441 | +--ro reason? string
442 +---n protocols-supported-mismatch
443 | +--ro routing-instance? string
444 | +--ro routing-protocol-name? string
445 | +--ro isis-level? level
446 | +--ro interface-name? string
447 | +--ro interface-level? level
448 | +--ro extended-circuit-id? extended-circuit-id
449 | +--ro raw-pdu? binary
450 | +--ro protocols* uint8
451 +---n lsp-error-detected
452 | +--ro routing-instance? string
453 | +--ro routing-protocol-name? string
454 | +--ro isis-level? level
455 | +--ro interface-name? string
456 | +--ro interface-level? level
457 | +--ro extended-circuit-id? extended-circuit-id
458 | +--ro lsp-id? lsp-id
459 | +--ro raw-pdu? binary
460 | +--ro error-offset? uint32
461 | +--ro tlv-type? uint8
462 +---n adjacency-state-change
463 | +--ro routing-instance? string
464 | +--ro routing-protocol-name? string
465 | +--ro isis-level? level
466 | +--ro interface-name? string
467 | +--ro interface-level? level
468 | +--ro extended-circuit-id? extended-circuit-id
469 | +--ro neighbor? string
470 | +--ro neighbor-system-id? system-id
471 | +--ro state? adj-state-type
472 | +--ro reason? string
473 +---n lsp-received
474 | +--ro routing-instance? string
475 | +--ro routing-protocol-name? string
476 | +--ro isis-level? level
477 | +--ro interface-name? string
478 | +--ro interface-level? level
479 | +--ro extended-circuit-id? extended-circuit-id
480 | +--ro lsp-id? lsp-id
481 | +--ro sequence? uint32
482 | +--ro received-timestamp? yang:timestamp
483 | +--ro neighbor-system-id? system-id
484 +---n lsp-generation
485 +--ro routing-instance? string
486 +--ro routing-protocol-name? string
487 +--ro isis-level? level
488 +--ro lsp-id? lsp-id
489 +--ro sequence? uint32
490 +--ro send-timestamp? yang:timestamp
492 2.1. IS-IS Configuration
494 The IS-IS configuration container is divided in:
496 o Global parameters.
498 o Per interface configuration (see Section 2.4).
500 Additional modules may be created this to support any additional
501 parameters. These additional modules should augment the ietf-isis
502 module.
504 The model implements features, thus some of the configuration
505 statement becomes optional. As an example, the ability to control
506 the administrative state of a particular IS-IS instance is optional.
507 By advertising the feature "admin-control", a device communicates to
508 the client that it supports the ability to shutdown a particular IS-
509 IS instance.
511 The global configuration contains usual IS-IS parameters such as lsp-
512 mtu, lsp-lifetime, lsp-refresh, default-metric...
514 2.2. Multitopology Parameters
516 The model supports multitopology (MT) IS-IS as defined in [RFC5120].
518 The "topologies" container is used to enable support of MT
519 extensions.
521 The "name" used in the topology list should refer to an existing RIB
522 of the device.
524 Some specific parameters could be defined on a per topology basis
525 both at global level and at interface level: for example, an
526 interface metric can be defined per topology.
528 Multiple address families (like IPv4 or IPv6) can also be activated
529 within the default topology. This can be achieved using the "afs"
530 container (requiring "nlpid-control" feature to be advertised).
532 2.3. Per-Level Parameters
534 Some parameters allow a per level configuration. In this case, the
535 parameter is modeled as a container with three configuration
536 locations:
538 o a top level container: corresponds to level-1-2, so the
539 configuration applies to both levels.
541 o a level-1 container: corresponds to level-1 specific parameters.
543 o a level-2 container: corresponds to level-2 specific parameters.
545 +--rw priority
546 | +--rw value? uint8
547 | +--rw level-1
548 | | +--rw value? uint8
549 | +--rw level-2
550 | +--rw value? uint8
552 Example:
554
555 250
556
557 100
558
559
560 200
561
562
564 An implementation SHOULD prefer a level specific parameter over a
565 level-all parameter. As example, if the priority is 100 for the
566 level-1, 200 for the level-2 and 250 for the top level configuration,
567 the implementation should use 100 for the level-1 and 200 for the
568 level-2.
570 Some parameters like "overload bit" and "route preference" are not
571 modeled to support a per level configuration. If an implementation
572 supports per level configuration for such parameter, this
573 implementation SHOULD augment the current model by adding both
574 level-1 and level-2 containers and SHOULD reuse existing
575 configuration groupings.
577 Example of augmentation:
579 augment "/rt:routing/" +
580 "rt:control-plane-protocols/rt:control-plane-protocol"+
581 "/isis:isis/isis:overload" {
582 when "rt:type = 'isis:isis'" {
583 description
584 "This augment IS-IS routing protocol when used";
585 }
586 description
587 "This augments IS-IS overload configuration
588 with per level configuration.";
590 container level-1 {
591 uses isis:overload-global-cfg;
592 description
593 "Level 1 configuration.";
594 }
595 container level-2 {
596 uses isis:overload-global-cfg;
597 description
598 "Level 2 configuration.";
599 }
601 }
603 If an implementation does not support per level configuration for a
604 parameter modeled with per level configuration, the implementation
605 SHOULD advertise a deviation to announce the non support of the
606 level-1 and level-2 containers.
608 Finally, if an implementation supports per level configuration but
609 does not support the level-1-2 configuration, it SHOULD also
610 advertise a deviation.
612 2.4. Per-Interface Parameters
614 The per-interface section of the IS-IS instance describes the
615 interface specific parameters.
617 The interface is modeled as a reference to an existing interface
618 defined in the "ietf-interfaces" YANG model.
620 Each interface has some interface-specific parameters that may have a
621 different per level value as described in previous section. An
622 interface-specific parameter always override an IS-IS global
623 parameter.
625 Some parameters like hello-padding are defined as containers to allow
626 easy extension by vendor specific modules.
628 +--rw interfaces
629 +--rw interface* [name]
630 +--rw name if:interface-ref
631 +--rw level-type? level
632 +--rw lsp-pacing-interval? uint16
633 +--rw lsp-retransmit-interval? uint16
634 +--rw passive? boolean
635 +--rw csnp-interval? uint16
636 +--rw hello-padding
637 | +--rw enable? boolean
638 +--rw mesh-group-enable? mesh-group-state
639 +--rw mesh-group? uint8
640 +--rw interface-type? interface-type
641 +--rw enable? boolean {admin-control}?
642 +--rw tag* uint32 {prefix-tag}?
643 +--rw tag64* uint64 {prefix-tag64}?
644 +--rw node-flag? boolean {node-flag}?
645 +--rw hello-authentication
646 | +--rw (authentication-type)?
647 | | +--:(key-chain) {key-chain}?
648 | | | +--rw key-chain? key-chain:key-chain-ref
649 | | +--:(password)
650 | | +--rw key? string
651 | | +--rw crypto-algorithm? identityref
652 | +--rw level-1
653 | | +--rw (authentication-type)?
654 | | +--:(key-chain) {key-chain}?
655 | | | +--rw key-chain? key-chain:key-chain-re
656 f
657 | | +--:(password)
658 | | +--rw key? string
659 | | +--rw crypto-algorithm? identityref
660 | +--rw level-2
661 | +--rw (authentication-type)?
662 | +--:(key-chain) {key-chain}?
663 | | +--rw key-chain? key-chain:key-chain-re
664 f
665 | +--:(password)
666 | +--rw key? string
667 | +--rw crypto-algorithm? identityref
668 +--rw hello-interval
669 | +--rw value? uint16
670 | +--rw level-1
671 | | +--rw value? uint16
672 | +--rw level-2
673 | +--rw value? uint16
674 +--rw hello-multiplier
675 | +--rw value? uint16
676 | +--rw level-1
677 | | +--rw value? uint16
678 | +--rw level-2
679 | +--rw value? uint16
680 +--rw priority
681 | +--rw value? uint8
682 | +--rw level-1
683 | | +--rw value? uint8
684 | +--rw level-2
685 | +--rw value? uint8
686 +--rw metric
687 | +--rw value? wide-metric
688 | +--rw level-1
689 | | +--rw value? wide-metric
690 | +--rw level-2
691 | +--rw value? wide-metric
692 +--rw bfd {bfd}?
693 | +--rw enable? boolean
694 +--rw afs {nlpid-control}?
695 | +--rw af* [af]
696 | +--rw af identityref
697 +--rw mpls
698 | +--rw ldp
699 | +--rw igp-sync? boolean {ldp-igp-sync}?
700 +--rw fast-reroute {fast-reroute}?
701 | +--rw lfa {lfa}?
702 | +--rw candidate-disabled? boolean
703 | +--rw enable? boolean
704 | +--rw remote-lfa {remote-lfa}?
705 | | +--rw enable? boolean
706 | +--rw level-1
707 | | +--rw candidate-disabled? boolean
708 | | +--rw enable? boolean
709 | | +--rw remote-lfa {remote-lfa}?
710 | | +--rw enable? boolean
711 | +--rw level-2
712 | +--rw candidate-disabled? boolean
713 | +--rw enable? boolean
714 | +--rw remote-lfa {remote-lfa}?
715 | +--rw enable? boolean
716 +--rw topologies {multi-topology}?
717 +--rw topology* [name]
718 +--rw name leafref
719 +--rw metric
720 +--rw value? wide-metric
721 +--rw level-1
722 | +--rw value? wide-metric
723 +--rw level-2
724 +--rw value? wide-metric
726 2.5. Authentication Parameters
728 The module enables authentication configuration through the IETF key-
729 chain module ([I-D.ietf-rtgwg-yang-key-chain]). The IS-IS module
730 imports the "ietf-key-chain" module and reuses some groupings to
731 allow global and per interface configuration of authentication. If a
732 global authentication is configured, an implementation SHOULD
733 authenticate PSNPs, CSNPs and LSPs with the authentication parameters
734 supplied. The authentication of hello PDUs can be activated on a per
735 interface basis.
737 2.6. IGP/LDP synchronization
739 [RFC5443] defines a mechanism where IGP needs to be synchronized with
740 LDP. An "ldp-igp-sync" feature has been defined in the model to
741 support this mechanism. The "mpls/ldp/igp-sync" leaf under
742 "interface" allows activation of the mechanism on a per interface
743 basis. The "mpls/ldp/igp-sync" container in the global configuration
744 is empty on purpose and is not required for the activation. The goal
745 of this empty container is to allow easy augmentation with additional
746 parameters like timers for example.
748 2.7. ISO parameters
750 As IS-IS protocol is based on ISO protocol suite, some ISO parameters
751 may be required.
753 This module augments interface configuration model to support ISO
754 configuration parameters.
756 The clns-mtu can be defined under the interface.
758 2.8. IP FRR
760 This YANG model supports LFA ([RFC5286]) and remote LFA ([RFC7490])
761 as IP FRR techniques. The "fast-reroute" container may be augmented
762 by other models to support other IPFRR flavors (MRT, TILFA ...).
764 The current version of the model supports activation of LFA and
765 remote LFA at interface only. The global "lfa" container is present
766 but kept empty to allow augmentation with vendor specific properties
767 like policies.
769 Remote LFA is considered as a child of LFA. Remote LFA cannot be
770 enabled if LFA is not enabled.
772 The "candidate-disabled" allows to mark an interface to not be used
773 as a backup.
775 2.9. Operational States
777 An "isis" container provides operational states for IS-IS. This
778 container is divided in multiple components:
780 o system-counters : provides statistical informations about the
781 global system.
783 o interface : provides configuration state informations for each
784 interface.
786 o adjacencies: provides state informations about current IS-IS
787 adjacencies.
789 o spf-log: provides informations about SPF events on the node. This
790 SHOULD be implemented as a wrapping buffer.
792 o lsp-log: provides informations about LSP events on the node
793 (reception of an LSP or modification of local LSP). This SHOULD
794 be implemented as a wrapping buffer and an implementation MAY
795 decide to log refresh LSPs or not.
797 o local-rib: provides the IS-IS internal routing table view.
799 o database: provides details on the current LSDB.
801 o hostnames: provides informations about system-id to hostname
802 mappings.
804 o fast-reroute: provides informations about IP FRR.
806 3. RPC Operations
808 The "ietf-isis" module defines two RPC operations:
810 o clear-isis-database: reset the content of a particular IS-IS
811 database and restart database synchronization with the neighbors.
813 o clear-isis-adjacency: restart a particular set of IS-IS
814 adjacencies.
816 rpcs:
817 +---x clear-adjacency
818 | +--ro input
819 | +--ro routing-protocol-instance-name instance-state-ref
820 | +--ro level? level
821 | +--ro interface? string
822 +---x clear-database
823 +--ro input
824 +--ro routing-protocol-instance-name instance-state-ref
825 +--ro level? level
827 4. Notifications
829 The "ietf-isis" module introduces some notifications :
831 database-overload : raised when overload condition is changed.
833 lsp-too-large : raised when the system tries to propagate a too
834 large PDU.
836 corrupted-lsp-detected : raised when the system find that an LSP
837 that was stored in memory has become corrupted.
839 attempt-to-exceed-max-sequence : This notification is sent when
840 the system wraps the 32-bit sequence counter of an LSP.
842 id-len-mismatch : This notification is sent when we receive a PDU
843 with a different value for the System ID length.
845 max-area-addresses-mismatch : This notification is sent when we
846 receive a PDU with a different value for the Maximum Area
847 Addresses.
849 own-lsp-purge : This notification is sent when the system receives
850 a PDU with its own system ID and zero age.
852 sequence-number-skipped : This notification is sent when the
853 system receives a PDU with its own system ID and different
854 contents. The system has to reissue the LSP with a higher
855 sequence number.
857 authentication-type-failure : This notification is sent when the
858 system receives a PDU with the wrong authentication type field.
860 authentication-failure : This notification is sent when the system
861 receives a PDU with the wrong authentication information.
863 version-skew : This notification is sent when the system receives
864 a PDU with a different protocol version number.
866 area-mismatch : This notification is sent when the system receives
867 a Hello PDU from an IS that does not share any area address.
869 rejected-adjacency : This notification is sent when the system
870 receives a Hello PDU from an IS but does not establish an
871 adjacency for some reason.
873 protocols-supported-mismatch : This notification is sent when the
874 system receives a non pseudonode LSP that has no matching protocol
875 supported.
877 lsp-error-detected : This notification is sent when the system
878 receives a LSP with a parse error.
880 adjacency-change : This notification is sent when an IS-IS
881 adjacency moves to Up state or to Down state.
883 lsp-received : This notification is sent when a LSP is received.
885 lsp-generation : This notification is sent when a LSP is
886 regenerated.
888 notifications:
889 +---n database-overload
890 | +--ro routing-instance? string
891 | +--ro routing-protocol-name? string
892 | +--ro isis-level? level
893 | +--ro overload? enumeration
894 +---n lsp-too-large
895 | +--ro routing-instance? string
896 | +--ro routing-protocol-name? string
897 | +--ro isis-level? level
898 | +--ro interface-name? string
899 | +--ro interface-level? level
900 | +--ro extended-circuit-id? extended-circuit-id
901 | +--ro pdu-size? uint32
902 | +--ro lsp-id? lsp-id
903 +---n if-state-change
904 | +--ro routing-instance? string
905 | +--ro routing-protocol-name? string
906 | +--ro isis-level? level
907 | +--ro interface-name? string
908 | +--ro interface-level? level
909 | +--ro extended-circuit-id? extended-circuit-id
910 | +--ro state? if-state-type
911 +---n corrupted-lsp-detected
912 | +--ro routing-instance? string
913 | +--ro routing-protocol-name? string
914 | +--ro isis-level? level
915 | +--ro lsp-id? lsp-id
916 +---n attempt-to-exceed-max-sequence
917 | +--ro routing-instance? string
918 | +--ro routing-protocol-name? string
919 | +--ro isis-level? level
920 | +--ro lsp-id? lsp-id
921 +---n id-len-mismatch
922 | +--ro routing-instance? string
923 | +--ro routing-protocol-name? string
924 | +--ro isis-level? level
925 | +--ro interface-name? string
926 | +--ro interface-level? level
927 | +--ro extended-circuit-id? extended-circuit-id
928 | +--ro pdu-field-len? uint8
929 | +--ro raw-pdu? binary
930 +---n max-area-addresses-mismatch
931 | +--ro routing-instance? string
932 | +--ro routing-protocol-name? string
933 | +--ro isis-level? level
934 | +--ro interface-name? string
935 | +--ro interface-level? level
936 | +--ro extended-circuit-id? extended-circuit-id
937 | +--ro max-area-addresses? uint8
938 | +--ro raw-pdu? binary
939 +---n own-lsp-purge
940 | +--ro routing-instance? string
941 | +--ro routing-protocol-name? string
942 | +--ro isis-level? level
943 | +--ro interface-name? string
944 | +--ro interface-level? level
945 | +--ro extended-circuit-id? extended-circuit-id
946 | +--ro lsp-id? lsp-id
947 +---n sequence-number-skipped
948 | +--ro routing-instance? string
949 | +--ro routing-protocol-name? string
950 | +--ro isis-level? level
951 | +--ro interface-name? string
952 | +--ro interface-level? level
953 | +--ro extended-circuit-id? extended-circuit-id
954 | +--ro lsp-id? lsp-id
955 +---n authentication-type-failure
956 | +--ro routing-instance? string
957 | +--ro routing-protocol-name? string
958 | +--ro isis-level? level
959 | +--ro interface-name? string
960 | +--ro interface-level? level
961 | +--ro extended-circuit-id? extended-circuit-id
962 | +--ro raw-pdu? binary
963 +---n authentication-failure
964 | +--ro routing-instance? string
965 | +--ro routing-protocol-name? string
966 | +--ro isis-level? level
967 | +--ro interface-name? string
968 | +--ro interface-level? level
969 | +--ro extended-circuit-id? extended-circuit-id
970 | +--ro raw-pdu? binary
971 +---n version-skew
972 | +--ro routing-instance? string
973 | +--ro routing-protocol-name? string
974 | +--ro isis-level? level
975 | +--ro interface-name? string
976 | +--ro interface-level? level
977 | +--ro extended-circuit-id? extended-circuit-id
978 | +--ro protocol-version? uint8
979 | +--ro raw-pdu? binary
980 +---n area-mismatch
981 | +--ro routing-instance? string
982 | +--ro routing-protocol-name? string
983 | +--ro isis-level? level
984 | +--ro interface-name? string
985 | +--ro interface-level? level
986 | +--ro extended-circuit-id? extended-circuit-id
987 | +--ro raw-pdu? binary
988 +---n rejected-adjacency
989 | +--ro routing-instance? string
990 | +--ro routing-protocol-name? string
991 | +--ro isis-level? level
992 | +--ro interface-name? string
993 | +--ro interface-level? level
994 | +--ro extended-circuit-id? extended-circuit-id
995 | +--ro raw-pdu? binary
996 | +--ro reason? string
997 +---n protocols-supported-mismatch
998 | +--ro routing-instance? string
999 | +--ro routing-protocol-name? string
1000 | +--ro isis-level? level
1001 | +--ro interface-name? string
1002 | +--ro interface-level? level
1003 | +--ro extended-circuit-id? extended-circuit-id
1004 | +--ro raw-pdu? binary
1005 | +--ro protocols* uint8
1006 +---n lsp-error-detected
1007 | +--ro routing-instance? string
1008 | +--ro routing-protocol-name? string
1009 | +--ro isis-level? level
1010 | +--ro interface-name? string
1011 | +--ro interface-level? level
1012 | +--ro extended-circuit-id? extended-circuit-id
1013 | +--ro lsp-id? lsp-id
1014 | +--ro raw-pdu? binary
1015 | +--ro error-offset? uint32
1016 | +--ro tlv-type? uint8
1017 +---n adjacency-state-change
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 neighbor? string
1025 | +--ro neighbor-system-id? system-id
1026 | +--ro state? adj-state-type
1027 | +--ro reason? string
1028 +---n lsp-received
1029 | +--ro routing-instance? string
1030 | +--ro routing-protocol-name? string
1031 | +--ro isis-level? level
1032 | +--ro interface-name? string
1033 | +--ro interface-level? level
1034 | +--ro extended-circuit-id? extended-circuit-id
1035 | +--ro lsp-id? lsp-id
1036 | +--ro sequence? uint32
1037 | +--ro received-timestamp? yang:timestamp
1038 | +--ro neighbor-system-id? system-id
1039 +---n lsp-generation
1040 +--ro routing-instance? string
1041 +--ro routing-protocol-name? string
1042 +--ro isis-level? level
1043 +--ro lsp-id? lsp-id
1044 +--ro sequence? uint32
1045 +--ro send-timestamp? yang:timestamp
1047 5. Interaction with Other YANG Modules
1049 The "isis" configuration container augments the "/rt:routing/
1050 rt:control-plane-protocols/control-plane-protocol" container of the
1051 ietf-routing [I-D.ietf-netmod-routing-cfg] module by defining IS-IS
1052 specific parameters.
1054 The "isis" module augments "/if:interfaces/if:interface" with ISO
1055 specific parameters.
1057 The "isis" operational state container augments the "/rt:routing-
1058 state/rt:control-plane-protocols/control-plane-protocol" container of
1059 the ietf-routing module by defining IS-IS specific operational
1060 states.
1062 Some IS-IS specific routes attributes are added to route objects of
1063 the ietf-routing module by augmenting "/rt:routing-
1064 state/rt:ribs/rt:rib/rt:routes/rt:route".
1066 The modules defined in this document use some groupings from ietf-
1067 keychain [I-D.ietf-rtgwg-yang-key-chain].
1069 6. IS-IS YANG Module
1071 file "ietf-isis@2017-03-29.yang"
1073 module ietf-isis {
1074 namespace "urn:ietf:params:xml:ns:yang:ietf-isis";
1076 prefix isis;
1078 import ietf-routing {
1079 prefix "rt";
1080 }
1082 import ietf-inet-types {
1083 prefix inet;
1084 }
1086 import ietf-yang-types {
1087 prefix yang;
1088 }
1090 import ietf-interfaces {
1091 prefix "if";
1092 }
1094 import ietf-key-chain {
1095 prefix "key-chain";
1096 }
1098 organization
1099 "IETF ISIS Working Group";
1101 contact
1102 "WG List: <mailto:isis-wg@ietf.org>
1104 Editor: Stephane Litkowski
1105 <mailto:stephane.litkowski@orange.com>
1107 Derek Yeung
1108 <mailto:derek@arrcus.com>
1109 Acee Lindem
1110 <mailto:acee@cisco.com>
1111 Jeffrey Zhang
1112 <mailto:zzhang@juniper.net>
1113 Ladislav Lhotka
1114 <mailto:llhotka@nic.cz>
1115 Yi Yang
1116 <mailto:yiya@cisco.com>
1117 Dean Bogdanovic
1118 <mailto:deanb@juniper.net>
1119 Kiran Agrahara Sreenivasa
1120 <mailto:kkoushik@brocade.com>
1121 Yingzhen Qu
1122 <mailto:yiqu@cisco.com>
1123 Jeff Tantsura
1124 <mailto:jefftant.ietf@gmail.com>
1126 ";
1128 description
1129 "The YANG module defines a generic configuration model for
1130 ISIS common across all of the vendor implementations.";
1132 revision 2017-03-29 {
1133 description
1134 "Initial revision.";
1135 reference "RFC XXXX";
1136 }
1138 /* Identities */
1140 identity isis {
1141 base rt:routing-protocol;
1142 description "Identity for the ISIS routing protocol.";
1143 }
1145 identity isis-adjacency-change {
1146 description "Identity for the ISIS routing protocol
1147 adjacency state.";
1148 }
1149 identity clear-isis-database {
1150 description "Identity for the ISIS routing protocol
1151 database reset action.";
1152 }
1154 identity clear-isis-adjacency {
1155 description "Identity for the ISIS routing protocol
1156 adjacency reset action.";
1157 }
1159 identity lsp-log-reason {
1160 description "Base identity for an LSP change
1161 log reason.";
1162 }
1163 identity refresh {
1164 base lsp-log-reason;
1165 description
1166 "Identity used when the LSP log reason is
1167 a refresh LSP received.";
1168 }
1169 identity content-change {
1170 base lsp-log-reason;
1171 description
1172 "Identity used when the LSP log reason is
1173 a change in the content of the LSP.";
1174 }
1176 /* Feature definitions */
1178 feature ietf-spf-delay {
1179 description
1180 "Support of IETF SPF delay algorithm.";
1181 }
1182 feature bfd {
1183 description
1184 "Support of BFD for IS-IS links.";
1185 }
1186 feature key-chain {
1187 description
1188 "Support of keychain for authentication.";
1189 }
1190 feature segment-routing {
1191 description
1192 "Support of segment-routing.";
1193 }
1194 feature node-flag {
1195 description
1196 "Support of node-flag advertisement
1197 as prefix attribute";
1198 }
1199 feature node-tag {
1200 description
1201 "Support of node tag.";
1202 }
1203 feature ldp-igp-sync {
1204 description
1205 "Support of RFC5443.";
1206 }
1207 feature fast-reroute {
1208 description
1209 "Support of IPFRR.";
1210 }
1211 feature nsr {
1212 description
1213 "Support of
1214 Non Stop Routing.";
1215 }
1216 feature lfa {
1217 description
1218 "Support of Loop Free Alternates.";
1219 }
1220 feature remote-lfa {
1221 description
1222 "Support of remote Loop Free Alternates.";
1223 }
1225 feature overload-max-metric {
1226 description
1227 "Support of overload by setting
1228 all links to max metric.";
1229 }
1230 feature prefix-tag {
1231 description
1232 "Add 32bit tag to prefixes";
1233 }
1234 feature prefix-tag64 {
1235 description
1236 "Add 64bit tag to prefixes";
1237 }
1238 feature auto-cost {
1239 description
1240 "Use an automated assignment of metrics.";
1241 }
1242 feature ipv4-router-id {
1243 description
1244 "Support of IPv4 router ID configuration under ISIS.";
1246 }
1248 feature ipv6-router-id {
1249 description
1250 "Support of IPv6 router ID configuration under ISIS.";
1251 }
1253 feature multi-topology {
1254 description
1255 "Multitopology routing support.";
1256 }
1257 feature nlpid-control {
1258 description
1259 "This feature controls the advertisement
1260 of support NLPID within ISIS configuration.";
1261 }
1262 feature graceful-restart {
1263 description
1264 "Graceful restart support as per RFC5306.";
1265 }
1267 feature lsp-refresh {
1268 description
1269 "Configuration of LSP refresh interval.";
1270 }
1272 feature maximum-area-addresses {
1273 description
1274 "Support of maximum-area-addresses config.";
1275 }
1277 feature admin-control {
1278 description
1279 "Control administrative state of ISIS.";
1280 }
1282 /* Type definitions */
1284 typedef instance-state-ref {
1285 type leafref {
1286 path "/rt:routing-state/"
1287 +"rt:control-plane-protocols/rt:control-plane-protocol/"
1288 +"rt:name";
1289 }
1290 description
1291 "This type is used for leaves that reference state data of
1292 an ISIS protocol instance.";
1293 }
1295 typedef admin-state {
1296 type enumeration {
1297 enum "up" {
1298 description
1299 "Up state";
1300 }
1301 enum "down" {
1302 description
1303 "Down state";
1304 }
1305 }
1306 description
1307 "Administrative state of a component.";
1308 }
1309 typedef oper-state {
1310 type enumeration {
1311 enum "up" {
1312 description
1313 "Up state";
1314 }
1315 enum "down" {
1316 description
1317 "Down state";
1318 }
1319 }
1320 description
1321 "Operational state of a component.";
1322 }
1323 typedef circuit-id {
1324 type uint8;
1325 description
1326 "This type defines the circuit ID
1327 associated with an interface.";
1328 }
1330 typedef extended-circuit-id {
1331 type uint32;
1332 description
1333 "This type defines the extended circuit ID
1334 associated with an interface.";
1335 }
1337 typedef interface-type {
1338 type enumeration {
1339 enum broadcast {
1340 description "Broadcast interface type.
1341 Would result in DIS election.";
1342 }
1343 enum point-to-point {
1344 description
1345 "Point to point interface type.";
1346 }
1347 }
1348 description
1349 "This type defines the type of adjacency
1350 to be established on the interface.
1351 This is affecting the type of hello
1352 message that would be used.";
1354 }
1356 typedef level {
1357 type enumeration {
1358 enum "level-1" {
1359 description
1360 "This enum describes L1 only capability.";
1361 }
1362 enum "level-2" {
1363 description
1364 "This enum describes L2 only capability.";
1365 }
1366 enum "level-all" {
1367 description
1368 "This enum describes both levels capability.";
1369 }
1370 }
1371 default "level-all";
1372 description
1373 "This type defines ISIS level of an object.";
1375 }
1377 typedef adj-state-type {
1378 type enumeration {
1379 enum "Up" {
1380 description
1381 "This state describes that
1382 adjacency is established.";
1383 }
1384 enum "Down" {
1385 description
1386 "This state describes that
1387 adjacency is NOT established.";
1389 }
1390 enum "Init" {
1391 description
1392 "This state describes that
1393 adjacency is establishing.";
1394 }
1395 enum "Failed" {
1396 description
1397 "This state describes that
1398 adjacency is failed.";
1399 }
1400 }
1401 description
1402 "This type defines states of an adjacency";
1403 }
1405 typedef if-state-type {
1406 type enumeration {
1407 enum "Up" {
1408 description
1409 "This state describes that
1410 .";
1411 }
1412 enum "Down" {
1413 description
1414 "This state describes that
1415 .";
1416 }
1417 }
1418 description
1419 "This type defines states of an interface";
1420 }
1422 typedef level-number {
1423 type uint8 {
1424 range "1 .. 2";
1425 }
1426 description
1427 "This type defines a current ISIS level.";
1428 }
1430 typedef lsp-id {
1431 type string {
1432 pattern
1433 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
1434 +'{4}\.[0-9][0-9]-[0-9][0-9]';
1435 }
1436 description
1437 "This type defines ISIS LSP ID using pattern,
1438 system id looks like : 0143.0438.AeF0.02-01";
1439 }
1441 typedef area-address {
1442 type string {
1443 pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}';
1444 }
1445 description
1446 "This type defines the area address.";
1447 }
1449 typedef snpa {
1450 type string {
1451 length "0 .. 20";
1452 }
1453 description
1454 "This type defines Subnetwork Point of Attachement format.";
1456 }
1458 typedef system-id {
1459 type string {
1460 pattern
1461 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}';
1462 }
1463 description
1464 "This type defines ISIS system id using pattern,
1465 system id looks like : 0143.0438.AeF0";
1466 }
1468 typedef wide-metric {
1469 type uint32 {
1470 range "0 .. 16777215";
1471 }
1472 description
1473 "This type defines wide style format
1474 of ISIS metric.";
1475 }
1477 typedef std-metric {
1478 type uint8 {
1479 range "0 .. 63";
1480 }
1481 description
1482 "This type defines old style format
1483 of ISIS metric.";
1485 }
1487 typedef mesh-group-state {
1488 type enumeration {
1489 enum "meshInactive" {
1490 description
1491 "Interface is not part of a mesh group.";
1492 }
1493 enum "meshSet" {
1494 description
1495 "Interface is part of a mesh group.";
1496 }
1497 enum "meshBlocked" {
1498 description
1499 "LSPs must not be flooded over that interface.";
1500 }
1501 }
1502 description
1503 "This type describes meshgroup state of an interface";
1504 }
1506 /* Grouping definitions */
1508 grouping local-rib {
1509 description "Local-rib grouping.";
1510 container local-rib {
1511 description "Local-rib.";
1512 list route {
1513 key "prefix";
1514 description "Routes";
1515 leaf prefix {
1516 type inet:ip-prefix;
1517 description "Destination prefix.";
1518 }
1519 container next-hops {
1520 description "All next hops for the route.";
1521 list next-hop {
1522 key "next-hop";
1523 description "List of next hop for the route";
1524 leaf outgoing-interface {
1525 type if:interface-ref;
1526 description
1527 "Name of the outgoing interface.";
1528 }
1529 leaf next-hop {
1530 type inet:ip-address;
1531 description "Nexthop address.";
1532 }
1533 }
1534 }
1535 leaf metric {
1536 type uint32;
1537 description "Metric for this route.";
1538 }
1539 leaf level {
1540 type level-number;
1541 description "Level number for this route.";
1542 }
1543 leaf route-tag {
1544 type uint32;
1545 description "Route tag for this route.";
1546 }
1547 }
1548 }
1549 }
1551 grouping admin-control {
1552 leaf enable {
1553 if-feature admin-control;
1554 type boolean;
1555 default true;
1556 description
1557 "Control the administrative
1558 state.";
1559 }
1560 description
1561 "Grouping for admin control.";
1562 }
1564 grouping adjacency-state {
1565 container adjacencies {
1566 list adjacency {
1567 leaf neighbor-systype {
1568 type level;
1569 description
1570 "Type of neighboring system";
1572 }
1573 leaf neighbor-sysid {
1574 type system-id;
1575 description
1576 "The system-id of the neighbor";
1578 }
1579 leaf neighbor-extended-circuit-id {
1580 type extended-circuit-id;
1581 description
1582 "Circuit ID of the neighbor";
1583 }
1584 leaf neighbor-snpa {
1585 type snpa;
1586 description
1587 "SNPA of the neighbor";
1588 }
1589 leaf usage {
1590 type level;
1591 description
1592 "How is the adjacency used ?
1593 On a p2p link this might be level 1 and 2,
1594 but on a LAN, the usage will be level 1
1595 between peers at L1 or level 2 between
1596 peers at L2.";
1597 }
1598 leaf hold-timer {
1599 type uint16;
1600 description
1601 "The holding time in seconds for this
1602 adjacency. This value is based on
1603 received hello PDUs and the elapsed
1604 time since receipt.";
1605 }
1606 leaf neighbor-priority {
1607 type uint8 {
1608 range "0 .. 127";
1609 }
1610 description
1611 "Priority of the neighboring IS for becoming
1612 the DIS.";
1613 }
1614 leaf lastuptime {
1615 type yang:timestamp;
1616 description
1617 "When the adjacency most recently entered
1618 state 'up', measured in hundredths of a
1619 second since the last reinitialization of
1620 the network management subsystem.
1621 The value is 0 if the adjacency has never
1622 been in state 'up'.";
1624 }
1625 leaf state {
1626 type adj-state-type;
1627 description
1628 "This leaf describes the state of the
1629 interface.";
1630 }
1632 description
1633 "List of operational adjacencies.";
1634 }
1635 description
1636 "This container lists the adjacencies of
1637 the local node.";
1638 }
1639 description
1640 "Adjacency state";
1641 }
1643 grouping fast-reroute-global-state {
1644 container protected-routes {
1645 list af-stats {
1646 key "af prefix alternate";
1648 leaf af {
1649 type identityref {
1650 base rt:address-family;
1651 }
1652 description
1653 "Address-family";
1654 }
1655 leaf prefix {
1656 type string;
1657 description
1658 "Protected prefix.";
1659 }
1660 leaf alternate {
1661 type string;
1662 description
1663 "Alternate nexthop for the prefix.";
1664 }
1665 leaf alternate-type {
1666 type enumeration {
1667 enum equalcost {
1668 description
1669 "ECMP alternate.";
1670 }
1671 enum lfa {
1672 description
1673 "LFA alternate.";
1674 }
1675 enum remote-lfa {
1676 description
1677 "Remote LFA alternate.";
1678 }
1679 enum tunnel {
1680 description
1681 "Tunnel based alternate
1682 (like RSVP-TE or GRE).";
1683 }
1684 enum ti-lfa {
1685 description
1686 "TI LFA alternate.";
1687 }
1688 enum mrt {
1689 description
1690 "MRT alternate.";
1691 }
1692 enum other {
1693 description
1694 "Unknown alternate type.";
1695 }
1696 }
1697 description
1698 "Type of alternate.";
1699 }
1700 leaf best {
1701 type boolean;
1702 description
1703 "describes if the alternate is the best one.";
1704 }
1705 leaf non-best-reason {
1706 type string;
1707 description
1708 "Information field to describe why the alternate
1709 is not best.";
1710 }
1711 leaf protection-available {
1712 type bits {
1713 bit nodeprotect {
1714 position 0;
1715 description
1716 "Node protection available.";
1717 }
1718 bit linkprotect {
1719 position 1;
1720 description
1721 "Link protection available.";
1722 }
1723 bit srlgprotect {
1724 position 2;
1725 description
1726 "SRLG protection available.";
1727 }
1728 bit downstreamprotect {
1729 position 3;
1730 description
1731 "Downstream protection available.";
1732 }
1733 bit other {
1734 position 4;
1735 description
1736 "Other protection available.";
1737 }
1738 }
1739 description
1740 "Describes protection provided by the alternate.";
1741 }
1742 leaf alternate-metric1 {
1743 type uint32;
1744 description
1745 "Metric from PLR to destination
1746 through the alternate path.";
1747 }
1748 leaf alternate-metric2 {
1749 type uint32;
1750 description
1751 "Metric from PLR to the alternate node";
1752 }
1753 leaf alternate-metric3 {
1754 type uint32;
1755 description
1756 "Metric from alternate node to the destination";
1757 }
1759 description
1760 "Per AF statistics.";
1761 }
1762 description
1763 "List of prefixes that are protected.";
1764 }
1766 container nonprotected-routes {
1767 list af-stats {
1768 key "af prefix";
1770 leaf af {
1771 type identityref {
1772 base rt:address-family;
1773 }
1774 description
1775 "Address-family";
1776 }
1777 leaf prefix {
1778 type string;
1779 description
1780 "Protected prefix.";
1781 }
1782 description
1783 "Per AF statistics.";
1784 }
1785 description
1786 "List of prefixes that are not protected.";
1787 }
1789 list protection-statistics {
1790 key frr-protection-method;
1792 leaf frr-protection-method {
1793 type string;
1794 description
1795 "Protection method used.";
1796 }
1797 list af-stats {
1798 key af;
1800 leaf af {
1801 type identityref {
1802 base rt:address-family;
1803 }
1804 description
1805 "Address-family";
1806 }
1807 leaf total-routes {
1808 type uint32;
1809 description
1810 "Total prefixes.";
1811 }
1812 leaf unprotected-routes {
1813 type uint32;
1814 description
1815 "Total of prefixes who are
1816 not protected.";
1817 }
1818 leaf protected-routes {
1819 type uint32;
1820 description
1821 "Total of prefixes who are
1822 protected.";
1823 }
1824 leaf linkprotected-routes {
1825 type uint32;
1826 description
1827 "Total of prefixes who are
1828 link protected.";
1829 }
1830 leaf nodeprotected-routes {
1831 type uint32;
1832 description
1833 "Total of prefixes who are
1834 node protected.";
1835 }
1836 description
1837 "Per AF statistics.";
1838 }
1840 description
1841 "Global protection statistics.";
1842 }
1843 description
1844 "IPFRR states.";
1845 }
1847 grouping notification-instance-hdr {
1848 description
1849 "This group describes common instance specific
1850 data for notifications.";
1851 leaf routing-instance {
1852 type string;
1853 description
1854 "Describes the name of the routing-instance instance.";
1855 }
1856 leaf routing-protocol-name {
1857 type string;
1858 description
1859 "Describes the name of the ISIS instance.";
1860 }
1861 leaf isis-level {
1862 type level;
1863 description
1864 "Describes the ISIS level of the instance.";
1865 }
1866 }
1868 grouping notification-interface-hdr {
1869 description
1870 "This group describes common interface specific
1871 data for notifications.";
1872 leaf interface-name {
1873 type string;
1874 description
1875 "Describes the name of the ISIS interface.";
1876 }
1877 leaf interface-level {
1878 type level;
1879 description
1880 "Describes the ISIS level of the interface.";
1881 }
1882 leaf extended-circuit-id {
1883 type extended-circuit-id;
1884 description
1885 "Describes the extended circuit-id of the interface.";
1886 }
1887 }
1889 grouping route-content {
1890 description
1891 "This group add isis-specific route properties.";
1892 leaf metric {
1893 type uint32;
1894 description
1895 "This leaf describes ISIS metric of a route.";
1896 }
1897 leaf-list tag {
1898 type uint64;
1899 description
1900 "This leaf describes list of tags associated
1901 with the route. The leaf describes both
1902 32bits and 64bits tags.";
1903 }
1904 leaf route-type {
1905 type enumeration {
1906 enum l2-up-internal {
1907 description "Level 2 internal route
1908 and not leaked to a lower level";
1909 }
1910 enum l1-up-internal {
1911 description "Level 1 internal route
1912 and not leaked to a lower level";
1913 }
1914 enum l2-up-external {
1915 description "Level 2 external route
1916 and not leaked to a lower level";
1917 }
1918 enum l1-up-external {
1919 description "Level 1 external route
1920 and not leaked to a lower level";
1921 }
1922 enum l2-down-internal {
1923 description "Level 2 internal route
1924 and leaked to a lower level";
1925 }
1926 enum l1-down-internal {
1927 description "Level 1 internal route
1928 and leaked to a lower level";
1929 }
1930 enum l2-down-external {
1931 description "Level 2 external route
1932 and leaked to a lower level";
1933 }
1934 enum l1-down-external {
1935 description "Level 1 external route
1936 and leaked to a lower level";
1937 }
1938 }
1939 description
1940 "This leaf describes the type of ISIS route.";
1941 }
1942 }
1944 grouping fast-reroute-global-cfg {
1945 description
1946 "This group defines global
1947 configuration of IPFRR.";
1949 container lfa {
1950 if-feature lfa;
1951 description
1952 "This container may be
1953 augmented with global parameters
1954 for LFA.
1955 Creating the container has no effect on
1956 LFA activation.";
1957 }
1959 }
1960 grouping fast-reroute-if-cfg {
1961 description
1962 "This group defines interface
1963 configuration of IPFRR.";
1965 container lfa {
1966 if-feature lfa;
1967 uses lfa-if-cfg;
1968 container level-1 {
1969 uses lfa-if-cfg;
1970 description
1971 "LFA level 21 config";
1972 }
1973 container level-2 {
1974 uses lfa-if-cfg;
1975 description
1976 "LFA level 2 config";
1977 }
1978 description
1979 "LFA config";
1980 }
1982 }
1984 grouping ietf-spf-delay-cfg {
1985 leaf initial-delay {
1986 type uint16;
1987 units msec;
1988 description
1989 "Delay used while in QUIET state.";
1990 }
1991 leaf short-delay {
1992 type uint16;
1993 units msec;
1994 description
1995 "Delay used while in SHORT_WAIT state.";
1996 }
1997 leaf long-delay {
1998 type uint16;
1999 units msec;
2000 description
2001 "Delay used while in LONG_WAIT state.";
2002 }
2004 leaf hold-down {
2005 type uint16;
2006 units msec;
2007 description
2008 "Timer used to consider an IGP stability period.";
2009 }
2010 leaf time-to-learn {
2011 type uint16;
2012 units msec;
2013 description
2014 "Duration used to learn all the IGP events
2015 related to a single component failure.";
2016 }
2018 description
2019 "Grouping for IETF SPF delay configuration.";
2020 }
2022 grouping ietf-spf-delay-state {
2023 leaf current-state {
2024 type enumeration {
2025 enum "QUIET" {
2026 description "QUIET state";
2027 }
2028 enum "SHORT_WAIT" {
2029 description "SHORT_WAIT state";
2030 }
2031 enum "LONG_WAIT" {
2032 description "LONG_WAIT state";
2033 }
2034 }
2035 description
2036 "Current state of the algorithm.";
2037 }
2038 leaf remaining-time-to-learn {
2039 type uint16;
2040 units "seconds";
2041 description
2042 "Remaining time until time-to-learn timer fires.";
2043 }
2044 leaf remaining-hold-down {
2045 type uint16;
2046 units "seconds";
2047 description
2048 "Remaining time until hold-down timer fires.";
2049 }
2050 leaf last-event-received {
2051 type yang:timestamp;
2052 description
2053 "Time of last IGP event received";
2054 }
2055 leaf next-spf-time {
2056 type yang:timestamp;
2057 description
2058 "Time when next SPF has been scheduled.";
2059 }
2060 leaf last-spf-time {
2061 type yang:timestamp;
2062 description
2063 "Time of last SPF computation.";
2064 }
2065 description
2066 "Grouping for IETF SPF delay operational states.";
2067 }
2069 grouping prefix-reachability-attributes {
2070 description
2071 "This group defines extended reachability attributes of an
2072 IPv4 or IPv6 prefix.";
2074 leaf external-prefix-flag {
2075 type boolean;
2076 description
2077 "External prefix flag.";
2078 }
2079 leaf readvertisement-flag {
2080 type boolean;
2081 description
2082 "Readvertisement flag.";
2083 }
2084 leaf node-flag {
2085 type boolean;
2086 description
2087 "Node flag.";
2088 }
2089 }
2091 grouping prefix-ipv4-source-router-id {
2092 description
2093 "This group defines the IPv4 source router ID of
2094 a prefix advertisement.";
2096 leaf ipv4-source-router-id {
2097 type inet:ipv4-address;
2098 description
2099 "IPv4 Source router ID address.";
2100 }
2102 }
2103 grouping prefix-ipv6-source-router-id {
2104 description
2105 "This group defines the IPv6 source router ID of
2106 a prefix advertisement.";
2108 leaf ipv6-source-router-id {
2109 type inet:ipv6-address;
2110 description
2111 "IPv6 Source router ID address.";
2112 }
2114 }
2116 grouping prefix-attributes-extension {
2117 description
2118 "Prefix extended attributes.";
2120 uses prefix-reachability-attributes;
2121 uses prefix-ipv4-source-router-id;
2122 uses prefix-ipv6-source-router-id;
2123 }
2125 grouping prefix-ipv4-std {
2126 description
2127 "This group defines attributes of an
2128 IPv4 standard prefix.";
2129 leaf up-down {
2130 type boolean;
2131 description
2132 "This leaf expresses the value of up/down bit.";
2133 }
2134 leaf i-e {
2135 type boolean;
2136 description
2137 "This leaf expresses the value of I/E bit.";
2138 }
2139 leaf ip-prefix {
2140 type inet:ipv4-address;
2141 description
2142 "This leaf describes the IPv4 prefix";
2143 }
2144 leaf prefix-len {
2145 type uint8;
2146 description
2147 "This leaf describes the IPv4 prefix len in bits";
2148 }
2149 leaf default-metric {
2150 type std-metric;
2151 description
2152 "This leaf describes the ISIS default metric value";
2153 }
2154 container delay-metric {
2155 leaf metric {
2156 type std-metric;
2157 description
2158 "This leaf describes the ISIS delay metric value";
2159 }
2160 leaf supported {
2161 type boolean;
2162 default "false";
2163 description
2164 "This leaf describes if the metric is supported.";
2165 }
2167 description
2168 "This container defines the ISIS delay metric.";
2169 }
2170 container expense-metric {
2171 leaf metric {
2172 type std-metric;
2173 description
2174 "This leaf describes the ISIS expense metric value";
2175 }
2176 leaf supported {
2177 type boolean;
2178 default "false";
2179 description
2180 "This leaf describes if the metric is supported.";
2181 }
2182 description
2183 "This container defines the ISIS expense metric.";
2184 }
2185 container error-metric {
2186 leaf metric {
2187 type std-metric;
2188 description
2189 "This leaf describes the ISIS error metric value";
2190 }
2191 leaf supported {
2192 type boolean;
2193 default "false";
2194 description
2195 "This leaf describes if the metric is supported.";
2196 }
2198 description
2199 "This container defines the ISIS error metric.";
2200 }
2201 }
2203 grouping prefix-ipv4-extended {
2204 description
2205 "This group defines attributes of an
2206 IPv4 extended prefix.";
2207 leaf up-down {
2208 type boolean;
2209 description
2210 "This leaf expresses the value of up/down bit.";
2211 }
2212 leaf ip-prefix {
2213 type inet:ipv4-address;
2214 description
2215 "This leaf describes the IPv4 prefix";
2216 }
2217 leaf prefix-len {
2218 type uint8;
2219 description
2220 "This leaf describes the IPv4 prefix len in bits";
2221 }
2223 leaf metric {
2224 type wide-metric;
2225 description
2226 "This leaf describes the ISIS metric value";
2227 }
2228 leaf-list tag {
2229 type uint32;
2230 description
2231 "This leaf describes a list of tags associated with
2232 the prefix.";
2233 }
2234 leaf-list tag64 {
2235 type uint64;
2236 description
2237 "This leaf describes a list of 64-bit tags associated with
2238 the prefix.";
2239 }
2241 uses prefix-attributes-extension;
2243 }
2245 grouping prefix-ipv6-extended {
2246 description
2247 "This group defines attributes of an
2248 IPv6 prefix.";
2249 leaf up-down {
2250 type boolean;
2251 description
2252 "This leaf expresses the value of up/down bit.";
2253 }
2254 leaf ip-prefix {
2255 type inet:ipv6-address;
2256 description
2257 "This leaf describes the IPv6 prefix";
2258 }
2259 leaf prefix-len {
2260 type uint8;
2261 description
2262 "This leaf describes the IPv4 prefix len in bits";
2263 }
2265 leaf metric {
2266 type wide-metric;
2267 description
2268 "This leaf describes the ISIS metric value";
2269 }
2270 leaf-list tag {
2271 type uint32;
2272 description
2273 "This leaf describes a list of tags associated with
2274 the prefix.";
2275 }
2276 leaf-list tag64 {
2277 type uint64;
2278 description
2279 "This leaf describes a list of 64-bit tags associated with
2280 the prefix.";
2281 }
2283 uses prefix-attributes-extension;
2284 }
2286 grouping neighbor-extended {
2287 description
2288 "This group defines attributes of an
2289 ISIS extended neighbor.";
2290 leaf neighbor-id {
2291 type system-id;
2292 description
2293 "This leaf describes the system-id of the neighbor.";
2294 }
2295 leaf metric {
2296 type wide-metric;
2297 description
2298 "This leaf describes the ISIS metric value";
2299 }
2301 }
2303 grouping neighbor {
2304 description
2305 "This group defines attributes of an
2306 ISIS standard neighbor.";
2307 leaf neighbor-id {
2308 type system-id;
2309 description
2310 "This leaf describes the system-id of the neighbor.";
2311 }
2312 leaf i-e {
2313 type boolean;
2314 description
2315 "This leaf expresses the value of I/E bit.";
2316 }
2317 leaf default-metric {
2318 type std-metric;
2319 description
2320 "This leaf describes the ISIS default metric value";
2321 }
2322 container delay-metric {
2323 leaf metric {
2324 type std-metric;
2325 description
2326 "This leaf describes the ISIS delay metric value";
2327 }
2328 leaf supported {
2329 type boolean;
2330 default "false";
2331 description
2332 "This leaf describes if the metric is supported.";
2333 }
2334 description
2335 "This container defines the ISIS delay metric.";
2336 }
2337 container expense-metric {
2338 leaf metric {
2339 type std-metric;
2340 description
2341 "This leaf describes the ISIS delay expense value";
2342 }
2343 leaf supported {
2344 type boolean;
2345 default "false";
2346 description
2347 "This leaf describes if the metric is supported.";
2348 }
2349 description
2350 "This container defines the ISIS expense metric.";
2351 }
2352 container error-metric {
2353 leaf metric {
2354 type std-metric;
2355 description
2356 "This leaf describes the ISIS error metric value";
2357 }
2358 leaf supported {
2359 type boolean;
2360 default "false";
2361 description
2362 "This leaf describes if the metric is supported.";
2363 }
2364 description
2365 "This container defines the ISIS error metric.";
2366 }
2367 }
2369 grouping database {
2370 description
2371 "This group defines attributes of an
2372 ISIS database (Link State DB).";
2373 leaf decoded-completed {
2374 type boolean;
2375 description
2376 "The OSPF LSA body is fully decoded.";
2377 }
2378 leaf raw-data {
2379 type yang:hex-string;
2380 description
2381 "The complete LSP in network byte
2382 order hexadecimal as received or originated.";
2383 }
2384 leaf lsp-id {
2385 type lsp-id;
2386 description
2387 "This leaf describes the LSP ID of the LSP.";
2389 }
2390 leaf checksum {
2391 type uint16;
2392 description
2393 "This leaf describes the checksum of the LSP.";
2394 }
2395 leaf remaining-lifetime {
2396 type uint16;
2397 units "seconds";
2398 description
2399 "This leaf describes the remaining lifetime
2400 in seconds before the LSP expiration.";
2401 }
2402 leaf sequence {
2403 type uint32;
2404 description
2405 "This leaf describes the sequence number of the LSP.";
2406 }
2407 leaf attributes {
2408 type bits {
2409 bit PARTITIONNED {
2410 description
2411 "If set, the originator supports partition
2412 repair.";
2413 }
2414 bit ATTACHED-ERROR {
2415 description
2416 "If set, the originator is attached to
2417 another area using the referred metric.";
2418 }
2419 bit ATTACHED-EXPENSE {
2420 description
2421 "If set, the originator is attached to
2422 another area using the referred metric.";
2423 }
2424 bit ATTACHED-DELAY {
2425 description
2426 "If set, the originator is attached to
2427 another area using the referred metric.";
2428 }
2429 bit ATTACHED-DEFAULT {
2430 description
2431 "If set, the originator is attached to
2432 another area using the referred metric.";
2433 }
2434 bit OVERLOAD {
2435 description
2436 "If set, the originator is overloaded,
2437 and must be avoided in path calculation.";
2438 }
2439 }
2440 description
2441 "This leaf describes attributes of the LSP.";
2442 }
2444 container is-neighbor {
2445 list neighbor {
2446 uses neighbor;
2447 description
2448 "List of neighbors.";
2449 }
2450 description
2451 "This leaf describes list of ISIS neighbors.
2452 ISIS reference is TLV 2.";
2453 }
2455 container authentication {
2456 leaf authentication-type {
2457 type string;
2458 description
2459 "This leaf describes the authentication type
2460 to be used.";
2461 }
2462 leaf authentication-key {
2463 type string;
2464 description
2465 "This leaf describes the authentication key
2466 to be used. For security reason, the
2467 authentication key MUST NOT be presented
2468 in plaintext format. Authors recommends
2469 to use MD5 hash to present the authentication-key.";
2470 }
2471 description "This container describes authentication
2472 information of the node. ISIS reference is TLV 10.";
2473 }
2475 container extended-is-neighbor {
2476 list neighbor {
2477 uses neighbor-extended;
2478 description
2479 "List of neighbors.";
2480 }
2481 description
2482 "This container describes list of ISIS extended
2483 neighbors.
2485 ISIS reference is TLV 22.";
2486 }
2488 container ipv4-internal-reachability {
2489 list prefixes {
2490 uses prefix-ipv4-std;
2491 description
2492 "List of prefixes.";
2493 }
2494 description
2495 "This container describes list of IPv4 internal
2496 reachability information.
2497 ISIS reference is TLV 128.";
2498 }
2500 leaf-list protocol-supported {
2501 type uint8;
2502 description
2503 "This leaf describes the list of
2504 supported protocols.
2505 ISIS reference is TLV 129.";
2506 }
2508 container ipv4-external-reachability {
2509 list prefixes {
2510 uses prefix-ipv4-std;
2511 description
2512 "List of prefixes.";
2513 }
2514 description
2515 "This container describes list of IPv4 external
2516 reachability information.
2517 ISIS reference is TLV 130.";
2518 }
2520 leaf-list ipv4-addresses {
2521 type inet:ipv4-address;
2522 description
2523 "This leaf describes the IPv4 addresses of the node.
2524 ISIS reference is TLV 132.";
2525 }
2527 leaf ipv4-te-routerid {
2529 type inet:ipv4-address;
2530 description
2531 "This leaf describes the IPv4 Traffic Engineering
2532 router ID of the node.
2534 ISIS reference is TLV 134.";
2535 }
2537 container extended-ipv4-reachability {
2539 list prefixes {
2540 uses prefix-ipv4-extended;
2541 description
2542 "List of prefixes.";
2543 }
2544 description
2545 "This container describes list of IPv4 extended
2546 reachability information.
2547 ISIS reference is TLV 135.";
2548 }
2550 leaf dynamic-hostname {
2551 type string;
2553 description
2554 "This leaf describes the name of the node.
2555 ISIS reference is TLV 137.";
2556 }
2558 leaf ipv6-te-routerid {
2559 type inet:ipv6-address;
2560 description
2561 "This leaf describes the IPv6 Traffic Engineering
2562 router ID of the node.
2563 ISIS reference is TLV 140.";
2564 }
2566 container mt-is-neighbor {
2567 list neighbor {
2568 leaf MT-ID {
2569 type uint16 {
2570 range "0 .. 4095";
2571 }
2572 description
2573 "This leaf defines the identifier
2574 of a topology.";
2575 }
2576 uses neighbor-extended;
2577 description
2578 "List of neighbors.";
2579 }
2580 description
2581 "This container describes list of ISIS multi-topology
2582 neighbors.
2583 ISIS reference is TLV 223.";
2584 }
2586 container mt-entries {
2587 list topology {
2589 leaf MT-ID {
2590 type uint16 {
2591 range "0 .. 4095";
2592 }
2593 description
2594 "This leaf defines the identifier
2595 of a topology.";
2596 }
2598 leaf attributes {
2599 type bits {
2600 bit OVERLOAD {
2601 description
2602 "If set, the originator is overloaded,
2603 and must be avoided in path
2604 calculation.";
2605 }
2606 bit ATTACHED {
2607 description
2608 "If set, the originator is attached to
2609 another area using the referred metric.";
2610 }
2611 }
2612 description
2613 "This leaf describes attributes of the LSP
2614 for the associated topology.";
2615 }
2616 description
2617 "List of topologies supported.";
2618 }
2619 description
2620 "This container describes the topology supported.
2621 ISIS reference is TLV 229.";
2622 }
2624 leaf-list ipv6-addresses {
2625 type inet:ipv6-address;
2626 description
2627 "This leaf describes the IPv6 interface
2628 addresses of the node.
2630 ISIS reference is TLV 232.";
2631 }
2633 container mt-extended-ipv4-reachability {
2634 list prefixes {
2635 leaf MT-ID {
2636 type uint16 {
2637 range "0 .. 4095";
2638 }
2639 description
2640 "This leaf defines the identifier
2641 of a topology.";
2642 }
2643 uses prefix-ipv4-extended;
2644 description
2645 "List of prefixes.";
2647 }
2648 description
2649 "This container describes list of IPv4
2650 reachability information in multi-topology
2651 environment.
2652 ISIS reference is TLV 235.";
2653 }
2655 container mt-ipv6-reachability {
2656 list prefixes {
2657 leaf MT-ID {
2658 type uint16 {
2659 range "0 .. 4095";
2660 }
2661 description
2662 "This leaf defines the identifier
2663 of a topology.";
2664 }
2665 uses prefix-ipv6-extended;
2666 description
2667 "List of prefixes.";
2668 }
2669 description
2670 "This container describes list of IPv6
2671 reachability information in multi-topology
2672 environment.
2673 ISIS reference is TLV 237.";
2674 }
2675 container ipv6-reachability {
2676 list prefixes {
2677 uses prefix-ipv6-extended;
2678 description
2679 "List of prefixes.";
2680 }
2681 description
2682 "This container describes list of IPv6
2683 reachability information.
2684 ISIS reference is TLV 236.";
2685 }
2687 list router-capabilities {
2688 leaf flags {
2689 type bits {
2690 bit flooding {
2691 position 0;
2692 description
2693 "If the S bit is set(1),
2694 the IS-IS Router CAPABILITY TLV
2695 MUST be flooded across the entire routing domain.
2696 If the S bit is
2697 not set(0), the TLV MUST NOT be leaked between levels.
2698 This bit MUST NOT be altered during the TLV leaking.";
2699 }
2700 bit down {
2701 position 1;
2702 description
2703 "When the IS-IS Router CAPABILITY TLV is
2704 leaked from level-2 to level-1, the D bit
2705 MUST be set. Otherwise, this bit MUST
2706 be clear. IS-IS Router capability TLVs
2707 with the D bit set MUST NOT
2708 be leaked from level-1 to level-2.
2709 This is to prevent TLV looping.
2710 ";
2711 }
2712 }
2713 description
2714 "Flags associated with router capability.";
2715 }
2716 container node-tags {
2717 if-feature node-tag;
2718 list node-tag {
2719 leaf tag {
2720 type uint32;
2721 description
2722 "Node tag value.";
2723 }
2724 description
2725 "List of tags.";
2726 }
2727 description
2728 "Container for node tags.";
2729 }
2731 leaf binary {
2732 type binary;
2733 description
2734 "This leaf describes the capability of the node.
2735 Format is binary according to the protocol encoding.";
2736 }
2737 description
2738 "This container describes the capabilities of the node.
2739 This container may be extended with detailed
2740 information.
2741 ISIS reference is TLV 242.";
2742 }
2743 }
2745 grouping isis-node-tag-cfg {
2746 description
2747 "ISIS node tag config.";
2748 container node-tags {
2749 if-feature node-tag;
2750 list node-tag {
2751 key tag;
2752 leaf tag {
2753 type uint32;
2754 description
2755 "Node tag value.";
2756 }
2757 description
2758 "List of tags.";
2759 }
2760 description
2761 "Container for node tags.";
2762 }
2763 }
2765 grouping authentication-global-cfg {
2766 choice authentication-type {
2767 case key-chain {
2768 if-feature key-chain;
2769 leaf key-chain {
2770 type key-chain:key-chain-ref;
2771 description
2772 "Reference to a key-chain.";
2773 }
2774 }
2775 case password {
2776 leaf key {
2777 type string;
2778 description
2779 "This leaf describes the
2780 authentication key.";
2781 }
2782 leaf crypto-algorithm {
2783 type identityref {
2784 base key-chain:crypto-algorithm;
2785 }
2786 description
2787 "Cryptographic algorithm associated with key.";
2788 }
2789 }
2790 description
2791 "Choice of authentication.";
2792 }
2793 description
2794 "Grouping for global auth config.";
2795 }
2797 grouping metric-type-global-cfg {
2798 leaf value {
2799 type enumeration {
2800 enum wide-only {
2801 description
2802 "Advertise new metric style only
2803 (RFC5305)";
2804 }
2805 enum old-only {
2806 description
2807 "Advertise old metric style only
2808 (RFC1195)";
2809 }
2810 enum both {
2811 description "Advertise both metric
2812 styles";
2813 }
2814 }
2815 description
2816 "This leaf describes the type of metric
2817 to be generated.
2818 Wide-only means only new metric style
2819 is generated,
2820 old-only means that only old style metric
2821 is generated,
2822 and both means that both are advertised.
2823 This leaf is only affecting IPv4 metrics.";
2824 }
2825 description
2826 "Grouping for global metric style config.";
2827 }
2829 grouping default-metric-global-cfg {
2830 leaf value {
2831 type wide-metric;
2832 default "10";
2833 description
2834 "Value of the metric";
2835 }
2836 description
2837 "Grouping for global default metric config.";
2838 }
2840 grouping overload-global-cfg {
2841 leaf status {
2842 type boolean;
2843 description
2844 "This leaf defines the overload status.";
2845 }
2846 description
2847 "Grouping for overload bit config.";
2848 }
2849 grouping overload-max-metric-global-cfg {
2850 leaf timeout {
2851 type uint16;
2852 units "seconds";
2853 description
2854 "This leaf defines the timeout in seconds
2855 of the overload condition.";
2856 }
2857 description
2858 "Grouping for overload-max-metric config.";
2859 }
2861 grouping route-preference-global-cfg {
2862 choice granularity {
2863 case detail {
2864 leaf internal {
2865 type uint8;
2866 description
2867 "This leaf defines the protocol
2868 preference for internal routes.";
2869 }
2870 leaf external {
2871 type uint8;
2872 description
2873 "This leaf defines the protocol
2874 preference for external routes.";
2875 }
2876 }
2877 case coarse {
2878 leaf default {
2879 type uint8;
2880 description
2881 "This leaf defines the protocol
2882 preference for all ISIS routes.";
2883 }
2884 }
2885 description
2886 "Choice for implementation of route preference.";
2887 }
2888 description
2889 "This grouping defines how route preference is configured.";
2890 }
2892 grouping hello-authentication-cfg {
2893 choice authentication-type {
2894 case key-chain {
2895 if-feature key-chain;
2896 leaf key-chain {
2897 type key-chain:key-chain-ref;
2898 description
2899 "Reference to a key-chain.";
2900 }
2901 }
2902 case password {
2903 leaf key {
2904 type string;
2905 description
2906 "This leaf describes the
2907 authentication key.";
2908 }
2909 leaf crypto-algorithm {
2910 type identityref {
2911 base key-chain:crypto-algorithm;
2913 }
2914 description
2915 "Cryptographic algorithm associated with key.";
2916 }
2917 }
2918 description
2919 "Choice of authentication.";
2920 }
2921 description
2922 "Grouping for hello authentication.";
2923 }
2925 grouping hello-interval-cfg {
2926 leaf value {
2927 type uint16 {
2928 range "1..65535";
2929 }
2930 units "seconds";
2931 default 10;
2932 description
2933 "This leaf defines the interval of
2934 hello messages.";
2935 }
2937 description
2938 "Interval between
2939 hello messages.";
2940 }
2942 grouping hello-multiplier-cfg {
2943 leaf value {
2944 type uint16;
2945 description
2946 "This leaf defines the number of
2947 hello failed to be received before
2948 declaring the adjacency down.";
2949 }
2950 description
2951 "This grouping defines the number of
2952 hello failed to be received before
2953 declaring the adjacency down.";
2954 }
2956 grouping priority-cfg {
2957 leaf value {
2958 type uint8 {
2959 range "0 .. 127";
2960 }
2961 default 64;
2962 description
2963 "This leaf describes the priority of
2964 the interface
2965 for DIS election.";
2966 }
2968 description
2969 "This grouping leaf describes the
2970 priority of
2971 the interface
2972 for DIS election.";
2973 }
2975 grouping metric-cfg {
2976 leaf value {
2977 type wide-metric;
2978 description
2979 "Metric value.";
2980 }
2981 description
2982 "Grouping for interface metric";
2983 }
2984 grouping lfa-if-cfg {
2985 leaf candidate-disabled {
2986 type boolean;
2987 default false;
2988 description
2989 "Prevent the interface to be used as backup.";
2990 }
2991 leaf enable {
2992 type boolean;
2993 description
2994 "Activates LFA.
2995 This model assumes activation
2996 of per-prefix LFA.";
2997 }
2999 container remote-lfa {
3000 if-feature remote-lfa;
3001 leaf enable {
3002 type boolean;
3003 description
3004 "Activates rLFA.";
3006 }
3007 description
3008 "remote LFA configuration.";
3009 }
3010 description
3011 "Grouping for LFA
3012 interface configuration";
3013 }
3014 grouping isis-global-cfg {
3015 description
3016 "Defines the ISIS global configuration.";
3018 uses admin-control;
3020 leaf level-type {
3021 type level;
3022 default "level-all";
3023 description
3024 "This leaf describes the type of ISIS node.
3025 A node can be level-1-only, level-2-only
3026 or level-1-2.
3027 ";
3028 }
3030 leaf system-id {
3031 type system-id;
3032 description
3033 "This leaf defines the system-id of the node.";
3034 }
3036 leaf maximum-area-addresses {
3037 if-feature maximum-area-addresses;
3038 type uint8;
3039 default 3;
3040 description
3041 "Defines the maximum areas supported.";
3042 }
3044 leaf-list area-address {
3045 type area-address;
3046 description
3047 "List of areas supported by the
3048 protocol instance.";
3049 }
3051 container mpls {
3052 leaf ipv4-router-id {
3053 if-feature ipv4-router-id;
3054 type inet:ipv4-address;
3055 description
3056 "Router ID value that would be used in
3057 TLV 134.";
3058 }
3059 leaf ipv6-router-id {
3060 if-feature ipv6-router-id;
3061 type inet:ipv6-address;
3062 description
3063 "Router ID value that would be used in
3064 TLV 140.";
3065 }
3066 container ldp {
3067 container igp-sync {
3068 if-feature ldp-igp-sync;
3069 description
3070 "This container may be augmented
3071 with global parameters for igp-ldp-sync.";
3072 }
3073 description
3074 "LDP related configuration.";
3075 }
3076 description
3077 "This container handles mpls config.";
3078 }
3079 container auto-cost {
3080 if-feature auto-cost;
3081 leaf reference-bandwidth {
3082 type uint32;
3083 units "bps";
3084 description
3085 "This leaf defines the bandwidth for calculating
3086 metric.";
3087 }
3088 leaf enable {
3089 type boolean;
3090 default false;
3091 description
3092 "Enable/disable auto-cost.";
3093 }
3094 description
3095 "This container defines the auto-cost configuration.";
3096 }
3098 leaf lsp-mtu {
3099 type uint16;
3100 units "bytes";
3101 default 1492;
3102 description
3103 "This leaf describes the maximum size of a
3104 LSP PDU in bytes.";
3105 }
3106 leaf lsp-lifetime {
3107 type uint16 {
3108 range "1..65535";
3109 }
3110 units "seconds";
3111 description
3112 "This leaf describes the lifetime of the router
3113 LSP in seconds.";
3114 }
3115 leaf lsp-refresh {
3116 if-feature lsp-refresh;
3117 type uint16 {
3118 range "1..65535";
3119 }
3120 units "seconds";
3121 description
3122 "This leaf describes the refresh interval of the
3123 router LSP in seconds.";
3124 }
3125 container spf-control {
3126 container ietf-spf-delay {
3127 if-feature ietf-spf-delay;
3128 uses ietf-spf-delay-cfg;
3129 description
3130 "IETF spf delay algorithm configuration.";
3131 }
3132 description
3133 "Container for all SPF computation related
3134 operations.";
3135 }
3136 container graceful-restart {
3137 if-feature graceful-restart;
3138 leaf enable {
3139 type boolean;
3140 description
3141 "Control enabling the feature.";
3142 }
3143 leaf restart-interval {
3144 type uint16;
3145 units "seconds";
3146 description
3147 "Interval in seconds to attempt graceful restart prior
3148 to failing";
3149 }
3150 leaf helper-enable {
3151 type boolean;
3152 description
3153 "If enabled, the local router can act as restart helper.";
3154 }
3155 description
3156 "This container activates graceful restart.";
3157 }
3159 container nsr {
3160 if-feature nsr;
3161 description
3162 "Non-Stop Routing (NSR) config state.";
3163 leaf enable {
3164 type boolean;
3165 description
3166 "Enable/Disable NSR.";
3167 }
3168 }
3170 uses isis-node-tag-cfg;
3172 container authentication {
3173 uses authentication-global-cfg;
3175 container level-1 {
3176 uses authentication-global-cfg;
3177 description "level-1 specific cfg";
3178 }
3179 container level-2 {
3180 uses authentication-global-cfg;
3181 description "level-2 specific cfg";
3182 }
3183 description "authentication global cfg.
3184 It covers both LSPs and SNPs.";
3185 }
3187 container metric-type {
3188 uses metric-type-global-cfg;
3190 container level-1 {
3191 uses metric-type-global-cfg;
3192 description "level-1 specific cfg";
3193 }
3194 container level-2 {
3195 uses metric-type-global-cfg;
3196 description "level-2 specific cfg";
3197 }
3198 description "Metric style global cfg.";
3199 }
3201 container default-metric {
3202 uses default-metric-global-cfg;
3204 container level-1 {
3205 uses default-metric-global-cfg;
3206 description "level-1 specific cfg";
3207 }
3208 container level-2 {
3209 uses default-metric-global-cfg;
3210 description "level-2 specific cfg";
3211 }
3212 description "Default metric global cfg.";
3213 }
3215 container afs {
3216 if-feature nlpid-control;
3217 list af {
3218 key af;
3219 leaf af {
3220 type identityref {
3221 base rt:address-family;
3222 }
3223 description
3224 "Address-family";
3225 }
3227 leaf enable {
3228 type boolean;
3229 description
3230 "Describes the activation state of the
3231 AF.";
3232 }
3233 description
3234 "This list permits activation
3235 of new address families.";
3237 }
3238 description
3239 "Container for address-families";
3240 }
3241 container preference {
3242 uses route-preference-global-cfg;
3243 description
3244 "This container defines the protocol preference.";
3245 }
3247 container overload {
3249 uses overload-global-cfg;
3250 description
3251 "This container describes if the router is
3252 set to overload state.";
3253 }
3255 container overload-max-metric {
3256 if-feature overload-max-metric;
3257 uses overload-max-metric-global-cfg;
3259 description
3260 "This container describes if the router is
3261 set to overload state using max-metric
3262 advertisement.";
3263 }
3265 }
3267 grouping isis-global-topologies-cfg {
3268 description
3269 "Per topology config.";
3271 container default-metric {
3272 uses default-metric-global-cfg;
3274 container level-1 {
3275 uses default-metric-global-cfg;
3276 description "level-1 specific cfg";
3277 }
3278 container level-2 {
3279 uses default-metric-global-cfg;
3280 description "level-2 specific cfg";
3281 }
3282 description "Default metric per
3283 topology cfg.";
3284 }
3286 uses isis-node-tag-cfg;
3288 }
3290 grouping isis-if-cfg {
3291 description
3292 "Grouping for interface cfg.";
3294 leaf level-type {
3295 type level;
3296 default "level-all";
3297 description
3298 "This leaf defines the associated ISIS
3299 level of the interface.";
3300 }
3301 leaf lsp-pacing-interval {
3302 type uint16;
3303 units "milliseconds";
3304 default 33;
3305 description
3306 "This leaf defines the interval between
3307 LSP transmissions in milli-seconds";
3308 }
3309 leaf lsp-retransmit-interval {
3310 type uint16;
3311 units "seconds";
3312 description
3313 "This leaf defines the interval between
3314 retransmission of LSP";
3315 }
3316 leaf passive {
3317 type boolean;
3318 default "false";
3319 description
3320 "This leaf defines if interface is in
3321 passive mode (ISIS not running,
3322 but network is advertised).";
3323 }
3324 leaf csnp-interval {
3325 type uint16 {
3326 range "1..65535";
3327 }
3328 units "seconds";
3329 default 10;
3330 description
3331 "This leaf defines the interval of CSNP
3332 messages.";
3333 }
3334 container hello-padding {
3335 leaf enable {
3336 type boolean;
3337 default "true";
3338 description
3339 "Status of Hello-padding activation.
3340 By default, the implementation shall
3341 pad HELLOs.";
3342 }
3344 description
3345 "This container handles ISIS hello padding
3346 configuration.";
3347 }
3349 leaf mesh-group-enable {
3350 type mesh-group-state;
3351 description
3352 "Describes the mesh group state of
3353 the interface.";
3354 }
3356 leaf mesh-group {
3357 when "../mesh-group-enable = 'meshSet'" {
3358 description
3359 "Only valid when mesh-group-enable
3360 equals meshSet";
3361 }
3362 type uint8;
3363 description
3364 "Describes the mesh group ID of
3365 the interface.";
3366 }
3368 leaf interface-type {
3369 type interface-type;
3370 description
3371 "This leaf defines the type of adjacency
3372 to be established on the interface.
3373 This is affecting the type of hello
3374 message that would be used.";
3375 }
3377 uses admin-control;
3379 leaf-list tag {
3380 if-feature prefix-tag;
3381 type uint32;
3382 description
3383 "This leaf defines list of tags associated
3384 with the interface.";
3385 }
3387 leaf-list tag64 {
3388 if-feature prefix-tag64;
3390 type uint64;
3391 description
3392 "This leaf defines list of 64bits tags
3393 associated with the interface.";
3394 }
3396 leaf node-flag {
3397 if-feature node-flag;
3398 type boolean;
3399 default false;
3400 description
3401 "Set prefix as a node
3402 representative prefix.";
3404 }
3406 container hello-authentication {
3407 uses hello-authentication-cfg;
3409 container level-1 {
3410 uses hello-authentication-cfg;
3411 description "level-1 specific cfg";
3412 }
3413 container level-2 {
3414 uses hello-authentication-cfg;
3415 description "level-2 specific cfg";
3416 }
3417 description "Authentication type
3418 to be used in hello messages.";
3419 }
3421 container hello-interval {
3422 uses hello-interval-cfg;
3424 container level-1 {
3425 uses hello-interval-cfg;
3426 description "level-1 specific cfg";
3428 }
3429 container level-2 {
3430 uses hello-interval-cfg;
3431 description "level-2 specific cfg";
3432 }
3433 description "Interval between
3434 hello messages.";
3435 }
3437 container hello-multiplier {
3438 uses hello-multiplier-cfg;
3440 container level-1 {
3441 uses hello-multiplier-cfg;
3442 description "level-1 specific cfg";
3443 }
3444 container level-2 {
3445 uses hello-multiplier-cfg;
3446 description "level-2 specific cfg";
3447 }
3448 description "Hello multiplier
3449 configuration.";
3450 }
3452 container priority {
3453 must '../interface-type = "broadcast"' {
3454 error-message
3455 "Priority only applies to broadcast
3456 interfaces.";
3457 description
3458 "Check for broadcast interface.";
3459 }
3460 uses priority-cfg;
3462 container level-1 {
3463 uses priority-cfg;
3464 description "level-1 specific cfg";
3465 }
3466 container level-2 {
3467 uses priority-cfg;
3468 description "level-2 specific cfg";
3469 }
3470 description "Priority for DIS election.";
3471 }
3473 container metric {
3474 uses metric-cfg;
3475 container level-1 {
3476 uses metric-cfg;
3477 description "level-1 specific cfg";
3478 }
3479 container level-2 {
3480 uses metric-cfg;
3481 description "level-2 specific cfg";
3482 }
3483 description "Metric configuration.";
3484 }
3486 container bfd {
3487 if-feature bfd;
3488 leaf enable {
3489 type boolean;
3490 default false;
3491 description "
3492 Enables BFD on the interface
3493 ";
3494 }
3495 description
3496 "BFD configuration.";
3497 }
3499 container afs {
3500 if-feature nlpid-control;
3501 list af {
3502 key af;
3504 leaf af {
3505 type identityref {
3506 base rt:address-family;
3507 }
3508 description
3509 "Address-family";
3510 }
3512 description
3513 "List of AFs.";
3514 }
3515 description
3516 "Container for address-families";
3517 }
3519 container mpls {
3520 container ldp {
3521 leaf igp-sync {
3522 if-feature ldp-igp-sync;
3523 type boolean;
3524 description
3525 "Enables IGP/LDP sync.";
3526 }
3527 description
3528 "LDP protocol related configurations.";
3529 }
3531 description
3532 "Container for MPLS specific configuration
3533 for ISIS.";
3534 }
3536 }
3538 grouping isis-if-topologies-cfg {
3539 description
3540 "ISIS interface topology cfg.";
3541 container metric {
3542 uses metric-cfg;
3544 container level-1 {
3545 uses metric-cfg;
3546 description "level-1 specific cfg";
3547 }
3548 container level-2 {
3549 uses metric-cfg;
3550 description "level-2 specific cfg";
3551 }
3552 description "Metric configuration.";
3553 }
3554 }
3556 /* */
3558 augment "/rt:routing-state/"
3559 +"rt:ribs/rt:rib/rt:routes/rt:route" {
3560 when "rt:source-protocol = 'isis:isis'" {
3561 description "ISIS-specific route attributes.";
3562 }
3563 uses route-content;
3564 description
3565 "This augments route object in RIB with ISIS-specific
3566 attributes.";
3567 }
3569 augment "/if:interfaces/if:interface"
3570 {
3571 leaf clns-mtu {
3572 type uint16;
3573 description
3574 "Defines CLNS MTU of the interface.";
3575 }
3576 description "ISO interface config.";
3577 }
3579 augment "/rt:routing/rt:control-plane-protocols/"
3580 +"rt:control-plane-protocol" {
3581 when "rt:type = 'isis:isis'" {
3582 description
3583 "This augment is only valid when routing protocol
3584 instance type is isis.";
3585 }
3586 description
3587 "This augments a routing protocol instance with ISIS
3588 specific parameters.";
3589 container isis {
3591 must "count(area-address) > 0" {
3592 error-message "At least one area-address
3593 must be configured.";
3594 description
3595 "Enforce configuration of at least one area.";
3596 }
3598 uses isis-global-cfg;
3600 container fast-reroute {
3601 if-feature fast-reroute;
3602 uses fast-reroute-global-cfg;
3603 description
3604 "IPFRR.";
3605 }
3606 container topologies {
3607 if-feature multi-topology;
3608 list topology {
3610 key "name";
3612 leaf enable {
3613 type boolean;
3614 description
3615 "Control enabling of topologies";
3616 }
3618 leaf name {
3619 type leafref {
3620 path "../../../../../../rt:ribs/rt:rib/rt:name";
3621 }
3623 description "RIB";
3624 }
3626 uses isis-global-topologies-cfg;
3628 description
3629 "List of topologies";
3630 }
3631 description
3632 "Container for multi-topology";
3633 }
3635 container interfaces {
3636 list interface {
3637 key "name";
3638 leaf name {
3639 type if:interface-ref;
3641 description
3642 "Reference to the interface within
3643 the routing-instance.";
3644 }
3646 uses isis-if-cfg;
3647 container fast-reroute {
3648 if-feature fast-reroute;
3649 uses fast-reroute-if-cfg;
3650 description
3651 "IPFRR.";
3652 }
3653 container topologies {
3654 if-feature multi-topology;
3655 list topology {
3656 key name;
3658 leaf name {
3659 type leafref {
3660 path "../../../../../../../../"+
3661 "rt:ribs/rt:rib/rt:name";
3662 }
3663 description
3664 "Name of RIB.";
3665 }
3666 uses isis-if-topologies-cfg;
3667 description
3668 "List of topologies.";
3669 }
3670 description
3671 "Container for multi-topology";
3672 }
3674 description
3675 "List of ISIS interfaces.";
3676 }
3677 description
3678 "This container defines ISIS interface specific
3679 configuration objects.";
3680 }
3682 description
3683 "This container defines ISIS specific configuration
3684 objects.";
3685 }
3686 }
3688 augment "/rt:routing-state/"
3689 +"rt:control-plane-protocols/rt:control-plane-protocol" {
3690 when "rt:type = 'isis:isis'" {
3691 description
3692 "This augment is only valid when routing protocol
3693 instance type is isis.";
3694 }
3695 description
3696 "This augments routing protocol instance states with ISIS
3697 specific parameters.";
3699 container isis {
3700 config false;
3701 uses isis-global-cfg;
3702 container fast-reroute {
3703 if-feature fast-reroute;
3704 uses fast-reroute-global-cfg;
3705 uses fast-reroute-global-state;
3706 description
3707 "IPFRR states.";
3708 }
3709 container ietf-spf-delay {
3710 if-feature ietf-spf-delay;
3711 uses ietf-spf-delay-cfg;
3712 uses ietf-spf-delay-state;
3713 description
3714 "IETF SPF delay operational states.";
3715 }
3716 uses local-rib;
3717 list topologies {
3718 key name;
3720 leaf name {
3721 type leafref {
3722 path "../../../../../"
3723 +"rt:ribs/rt:rib/rt:name";
3724 }
3726 description
3727 "Name of RIB.";
3728 }
3729 uses local-rib;
3730 description
3731 "List of topologies.";
3732 }
3734 container system-counters {
3735 list level {
3736 key level;
3738 leaf level {
3739 type level-number;
3740 description
3741 "This leaf describes the ISIS level.";
3742 }
3743 leaf corrupted-lsps {
3744 type uint32;
3745 description
3746 "Number of corrupted in-memory LSPs detected.
3747 LSPs received from the wire with a bad
3748 checksum are silently dropped and not counted.
3749 LSPs received from the wire with parse errors
3750 are counted by lsp-errors.";
3751 }
3752 leaf authentication-type-fails {
3753 type uint32;
3754 description
3755 "Number of authentication type mismatches.";
3756 }
3757 leaf authentication-fails {
3758 type uint32;
3759 description
3760 "Number of authentication key failures.";
3761 }
3762 leaf database-overload {
3763 type uint32;
3764 description
3765 "Number of times the database has become
3766 overloaded.";
3767 }
3768 leaf own-lsp-purge {
3769 type uint32;
3770 description
3771 "Number of times a zero-aged copy of the
3772 system's own LSP is received from some
3773 other node.";
3774 }
3775 leaf manual-address-drop-from-area {
3776 type uint32;
3777 description
3778 "Number of times a manual address
3779 has been dropped from the area.";
3780 }
3781 leaf max-sequence {
3782 type uint32;
3783 description
3784 "Number of times the system has attempted
3785 to exceed the maximum sequence number.";
3786 }
3787 leaf sequence-number-skipped {
3788 type uint32;
3789 description
3790 "Number of times a sequence number skip has
3791 occured.";
3792 }
3793 leaf id-len-mismatch {
3794 type uint32;
3795 description
3796 "Number of times a PDU is received with
3797 a different value for ID field length
3798 from that of the receiving system.";
3799 }
3800 leaf partition-changes {
3801 type uint32;
3802 description
3803 "Number of partition changes detected.";
3804 }
3805 leaf lsp-errors {
3806 type uint32;
3807 description
3808 "Number of LSPs with errors we have
3809 received.";
3810 }
3811 leaf spf-runs {
3812 type uint32;
3813 description
3814 "Number of times we ran SPF at this level.";
3815 }
3816 description
3817 "List of supported levels.";
3818 }
3819 description
3820 "The container defines a list of counters
3821 for the IS.";
3822 }
3824 container interfaces {
3825 list interface {
3826 key interface;
3828 leaf interface {
3829 type string;
3830 description
3831 "This leaf describes the name
3832 of the interface.";
3833 }
3834 uses isis-if-cfg;
3835 container fast-reroute {
3836 if-feature fast-reroute;
3837 uses fast-reroute-if-cfg;
3838 description
3839 "IPFRR.";
3840 }
3841 uses adjacency-state;
3843 list topologies {
3844 key name;
3846 leaf name {
3847 type leafref {
3848 path "../../../../../"
3849 +"../../rt:ribs/rt:rib/rt:name";
3850 }
3852 description
3853 "Name of RIB.";
3854 }
3855 uses isis-if-topologies-cfg;
3856 container fast-reroute {
3857 if-feature fast-reroute;
3858 uses fast-reroute-if-cfg;
3859 description
3860 "IPFRR.";
3861 }
3862 uses adjacency-state;
3864 description
3865 "List of topologies.";
3866 }
3868 container event-counters {
3869 leaf adjacency-changes {
3870 type uint32;
3871 description
3872 "The number of times an adjacency state
3873 change has occured on this interface.";
3874 }
3875 leaf adjacency-number {
3876 type uint32;
3877 description
3878 "The number of adjacencies on this
3879 interface.";
3880 }
3881 leaf init-fails {
3882 type uint32;
3883 description
3884 "The number of times initialization of
3885 this interface has failed. This counts
3886 events such as PPP NCP failures.
3887 Failures to form an adjacency are counted
3888 by adjacency-rejects.";
3889 }
3890 leaf adjacency-rejects {
3891 type uint32;
3892 description
3893 "The number of times an adjacency has been
3894 rejected on this interface.";
3895 }
3896 leaf id-len-mismatch {
3897 type uint32;
3898 description
3899 "The number of times an IS-IS PDU with an ID
3900 field length different from that for this
3901 system has been received on this interface.";
3902 }
3903 leaf max-area-addresses-mismatch {
3904 type uint32;
3905 description
3906 "The number of times an IS-IS PDU with
3907 according max area address field
3908 differs from that for
3909 this system has been received on this
3910 interface.";
3911 }
3912 leaf authentication-type-fails {
3913 type uint32;
3914 description
3915 "Number of authentication type mismatches.";
3916 }
3917 leaf authentication-fails {
3918 type uint32;
3919 description
3920 "Number of authentication key failures.";
3921 }
3922 leaf lan-dis-changes {
3923 type uint32;
3924 description
3925 "The number of times the DIS has changed
3926 on this interface at this level.
3927 If the interface type is point to point,
3928 the count is zero.";
3929 }
3930 description
3931 "Provides protocol event counters.";
3932 }
3933 container packet-counters {
3934 list level {
3935 key level;
3937 leaf level {
3938 type level-number;
3939 description
3940 "This leaf describes the ISIS level.";
3941 }
3943 container iih {
3944 leaf in {
3945 type uint32;
3946 description
3947 "Received PDUs.";
3948 }
3949 leaf out {
3950 type uint32;
3951 description
3952 "Sent PDUs.";
3953 }
3954 description
3955 "The number of IIH PDUs received/sent.";
3956 }
3957 container ish {
3958 leaf in {
3959 type uint32;
3960 description
3961 "Received PDUs.";
3962 }
3963 leaf out {
3964 type uint32;
3965 description
3966 "Sent PDUs.";
3967 }
3968 description
3969 "The number of ISH PDUs received/sent.";
3970 }
3971 container esh {
3972 leaf in {
3973 type uint32;
3974 description
3975 "Received PDUs.";
3976 }
3977 leaf out {
3978 type uint32;
3979 description
3980 "Sent PDUs.";
3981 }
3982 description
3983 "The number of ESH PDUs received/sent.";
3984 }
3985 container lsp {
3986 leaf in {
3987 type uint32;
3988 description
3989 "Received PDUs.";
3990 }
3991 leaf out {
3992 type uint32;
3993 description
3994 "Sent PDUs.";
3996 }
3997 description
3998 "The number of LSP PDUs received/sent.";
3999 }
4000 container psnp {
4001 leaf in {
4002 type uint32;
4003 description
4004 "Received PDUs.";
4005 }
4006 leaf out {
4007 type uint32;
4008 description
4009 "Sent PDUs.";
4010 }
4011 description
4012 "The number of PSNP PDUs received/sent.";
4013 }
4014 container csnp {
4015 leaf in {
4016 type uint32;
4017 description
4018 "Received PDUs.";
4019 }
4020 leaf out {
4021 type uint32;
4022 description
4023 "Sent PDUs.";
4024 }
4025 description
4026 "The number of CSNP PDUs received/sent.";
4027 }
4028 container unknown {
4029 leaf in {
4030 type uint32;
4031 description
4032 "Received PDUs.";
4033 }
4034 leaf out {
4035 type uint32;
4036 description
4037 "Sent PDUs.";
4038 }
4039 description
4040 "The number of unknown PDUs received/sent.";
4041 }
4042 description
4043 "List of supported levels.";
4045 }
4046 description
4047 "Provides packet counters per level.";
4048 }
4049 description
4050 "List of interfaces.";
4051 }
4052 description
4053 "The container defines operational parameters
4054 of interfaces.";
4055 }
4057 container spf-log {
4058 list event {
4059 key id;
4061 leaf id {
4062 type uint32;
4063 description
4064 "This leaf defines the event identifier.
4065 This is a purely internal value.";
4066 }
4067 leaf spf-type {
4068 type enumeration {
4069 enum full {
4070 description
4071 "Computation done is a Full SPF.";
4072 }
4073 enum route-only {
4074 description
4075 "Computation done is a
4076 reachability computation
4077 only.";
4078 }
4079 }
4080 description
4081 "This leaf describes the type of computation
4082 used.";
4083 }
4084 leaf level {
4085 type level-number;
4086 description
4087 "This leaf describes the level affected by the
4088 the computation.";
4089 }
4090 leaf schedule-timestamp {
4091 type yang:timestamp;
4092 description
4093 "This leaf describes the timestamp
4094 when the computation was scheduled.";
4095 }
4096 leaf start-timestamp {
4097 type yang:timestamp;
4098 description
4099 "This leaf describes the timestamp
4100 when the computation was started.";
4101 }
4102 leaf end-timestamp {
4103 type yang:timestamp;
4104 description
4105 "This leaf describes the timestamp
4106 when the computation was ended.";
4107 }
4108 list trigger-lsp {
4109 key "lsp";
4110 leaf lsp {
4111 type lsp-id;
4112 description
4113 "This leaf describes the LSPID
4114 of the LSP.";
4115 }
4116 leaf sequence {
4117 type uint32;
4118 description
4119 "This leaf describes the sequence
4120 number of the LSP.";
4121 }
4122 description
4123 "This leaf describes list of LSPs
4124 that triggered the computation.";
4125 }
4126 description
4127 "List of computation events.";
4128 }
4130 description
4131 "This container lists the SPF computation events.";
4132 }
4133 container lsp-log {
4134 list event {
4135 key id;
4137 leaf id {
4138 type uint32;
4139 description
4140 "This leaf defines the event identifier.
4142 This is a purely internal value.";
4143 }
4144 leaf level {
4145 type level-number;
4146 description
4147 "This leaf describes the level affected by the
4148 the computation.";
4149 }
4150 container lsp {
4151 leaf lsp {
4153 type lsp-id;
4154 description
4155 "This leaf describes the LSPID
4156 of the LSP.";
4157 }
4158 leaf sequence {
4159 type uint32;
4160 description
4161 "This leaf describes the sequence
4162 number of the LSP.";
4163 }
4164 description
4165 "This container describes the received LSP
4166 , in case of local LSP update the local
4167 LSP ID is referenced.";
4168 }
4170 leaf received-timestamp {
4171 type yang:timestamp;
4173 description
4174 "This leaf describes the timestamp
4175 when the LSP was received. In case of
4176 local LSP update, the timestamp refers
4177 to the local LSP update time.";
4178 }
4180 leaf change {
4181 type identityref {
4182 base lsp-log-reason;
4183 }
4184 description
4185 "This leaf describes the type of change
4186 in the LSP.";
4187 }
4189 description
4190 "List of LSP events.";
4191 }
4193 description
4194 "This container lists the LSP reception events.
4195 Local LSP modification are also contained in the
4196 list.";
4197 }
4198 container database {
4199 list level-db {
4200 key level;
4202 leaf level {
4203 type level-number;
4204 description
4205 "Current level number";
4206 }
4207 list lsp {
4208 key lsp-id;
4210 uses database;
4211 description
4212 "List of LSPs in LSDB.";
4213 }
4215 description
4216 "This container describes the list of LSPs
4217 in the level x database.";
4218 }
4220 description
4221 "This container describes ISIS Link State
4222 databases.";
4223 }
4224 container hostnames {
4226 list hostname {
4227 key system-id;
4228 leaf system-id {
4229 type system-id;
4230 description
4231 "This leaf describes the system-id
4232 associated with the hostname.";
4233 }
4234 leaf hostname {
4236 type string;
4237 description
4238 "This leaf describes the hostname
4239 associated with the system ID.";
4240 }
4241 description
4242 "List of system-id/hostname associations";
4243 }
4245 description
4246 "This container describes the list
4247 of binding between system-id and
4248 hostnames.";
4249 }
4251 description
4252 "This container defines various ISIS states objects.";
4253 }
4254 }
4256 /* RPC methods */
4258 rpc clear-adjacency {
4259 description
4260 "This RPC request clears a particular
4261 set of ISIS adjacencies. If the operation
4262 fails for ISIS internal reason, then
4263 error-tag and error-app-tag should be set
4264 to a meaningful value.";
4265 input {
4267 leaf routing-protocol-instance-name {
4268 type instance-state-ref;
4269 mandatory "true";
4270 description
4271 "Name of the ISIS protocol instance whose ISIS
4272 information is being queried.
4274 If the ISIS instance with name equal to the
4275 value of this parameter doesn't exist, then this
4276 operation SHALL fail with error-tag 'data-missing'
4277 and error-app-tag
4278 'routing-protocol-instance-not-found'.";
4279 }
4280 leaf level {
4281 type level;
4282 description
4283 "ISIS level of the adjacency to be cleared.
4284 If ISIS level is level-1-2, both level 1 and level 2
4285 adjacencies would be cleared.
4287 If the value provided is different from the one
4288 authorized in the enum type, then this
4289 operation SHALL fail with error-tag 'data-missing'
4290 and error-app-tag
4291 'bad-isis-level'.
4292 ";
4293 }
4294 leaf interface {
4295 type string;
4296 description
4297 "Name of the ISIS interface.
4299 If the ISIS interface with name equal to the
4300 value of this parameter doesn't exist, then this
4301 operation SHALL fail with error-tag 'data-missing'
4302 and error-app-tag
4303 'isis-interface-not-found'.";
4304 }
4305 }
4306 }
4308 rpc clear-database {
4309 description
4310 "This RPC request clears a particular
4311 ISIS database. If the operation
4312 fails for ISIS internal reason, then
4313 error-tag and error-app-tag should be set
4314 to a meaningful value.";
4315 input {
4317 leaf routing-protocol-instance-name {
4318 type instance-state-ref;
4319 mandatory "true";
4320 description
4321 "Name of the ISIS protocol instance whose ISIS
4322 information is being queried.
4324 If the ISIS instance with name equal to the
4325 value of this parameter doesn't exist, then this
4326 operation SHALL fail with error-tag 'data-missing'
4327 and error-app-tag
4328 'routing-protocol-instance-not-found'.";
4329 }
4330 leaf level {
4331 type level;
4332 description
4333 "ISIS level of the adjacency to be cleared.
4334 If ISIS level is level-1-2, both level 1 and level 2
4335 adjacencies would be cleared.
4337 If the value provided is different from the one
4338 authorized in the enum type, then this
4339 operation SHALL fail with error-tag 'data-missing'
4340 and error-app-tag
4341 'bad-isis-level'.
4342 ";
4343 }
4344 }
4346 }
4348 /* Notifications */
4350 notification database-overload {
4351 uses notification-instance-hdr;
4353 leaf overload {
4354 type enumeration {
4355 enum "off" {
4356 description
4357 "The system has left overload condition.";
4358 }
4359 enum "on" {
4360 description
4361 "The system is in overload condition.";
4362 }
4364 }
4365 description
4366 "Describes the new overload state of the instance.";
4367 }
4368 description
4369 "This notification is sent when an ISIS instance
4370 overload condition changes.";
4371 }
4373 notification lsp-too-large {
4374 uses notification-instance-hdr;
4375 uses notification-interface-hdr;
4377 leaf pdu-size {
4378 type uint32;
4379 description
4380 "Size of the PDU";
4381 }
4382 leaf lsp-id {
4383 type lsp-id;
4384 description
4385 "LSP ID.";
4386 }
4387 description
4388 "This notification is sent when we attempt
4389 to propagate an LSP that is larger than the
4390 dataLinkBlockSize for the circuit.
4391 The notification generation must be throttled
4392 with at least a 5 second gap.
4393 ";
4394 }
4396 notification if-state-change {
4397 uses notification-instance-hdr;
4398 uses notification-interface-hdr;
4400 leaf state {
4401 type if-state-type;
4402 description "Interface state.";
4403 }
4404 description
4405 "This notification is sent when an interface
4406 state change is detected.";
4407 }
4409 notification corrupted-lsp-detected {
4410 uses notification-instance-hdr;
4411 leaf lsp-id {
4412 type lsp-id;
4413 description
4414 "LSP ID.";
4415 }
4416 description
4417 "This notification is sent when we find
4418 that an LSP that was stored in memory has
4419 become corrupted.
4420 ";
4421 }
4423 notification attempt-to-exceed-max-sequence {
4424 uses notification-instance-hdr;
4425 leaf lsp-id {
4426 type lsp-id;
4427 description
4428 "LSP ID.";
4429 }
4430 description
4431 "This notification is sent when the system
4432 wraps the 32-bit sequence counter of an LSP.
4433 ";
4434 }
4436 notification id-len-mismatch {
4437 uses notification-instance-hdr;
4438 uses notification-interface-hdr;
4440 leaf pdu-field-len {
4441 type uint8;
4442 description
4443 "Size of the ID length in the received PDU";
4444 }
4445 leaf raw-pdu {
4446 type binary;
4447 description
4448 "Received raw PDU.";
4449 }
4450 description
4451 "This notification is sent when we receive a PDU
4452 with a different value for the System ID length.
4453 The notification generation must be throttled
4454 with at least a 5 second gap.
4455 ";
4456 }
4458 notification max-area-addresses-mismatch {
4459 uses notification-instance-hdr;
4460 uses notification-interface-hdr;
4462 leaf max-area-addresses {
4463 type uint8;
4464 description
4465 "Received number of supported areas";
4466 }
4467 leaf raw-pdu {
4468 type binary;
4469 description
4470 "Received raw PDU.";
4471 }
4472 description
4473 "This notification is sent when we receive a PDU
4474 with a different value for the Maximum Area Addresses.
4476 The notification generation must be throttled
4477 with at least a 5 second gap.
4478 ";
4479 }
4481 notification own-lsp-purge {
4482 uses notification-instance-hdr;
4483 uses notification-interface-hdr;
4484 leaf lsp-id {
4485 type lsp-id;
4486 description
4487 "LSP ID.";
4488 }
4489 description
4490 "This notification is sent when the system
4491 receives a PDU with its own system ID and zero age.
4492 ";
4493 }
4495 notification sequence-number-skipped {
4496 uses notification-instance-hdr;
4497 uses notification-interface-hdr;
4498 leaf lsp-id {
4499 type lsp-id;
4500 description
4501 "LSP ID.";
4502 }
4503 description
4504 "This notification is sent when the system
4505 receives a PDU with its own system ID and
4506 different contents. The system has to reissue
4507 the LSP with a higher sequence number.
4508 ";
4509 }
4511 notification authentication-type-failure {
4512 uses notification-instance-hdr;
4513 uses notification-interface-hdr;
4514 leaf raw-pdu {
4515 type binary;
4516 description
4517 "Received raw PDU.";
4518 }
4519 description
4520 "This notification is sent when the system
4521 receives a PDU with the wrong authentication type
4522 field.
4523 The notification generation must be throttled with
4524 at least a 5 second gap.
4525 ";
4526 }
4528 notification authentication-failure {
4529 uses notification-instance-hdr;
4530 uses notification-interface-hdr;
4531 leaf raw-pdu {
4532 type binary;
4533 description
4534 "Received raw PDU.";
4535 }
4536 description
4537 "This notification is sent when the system
4538 receives a PDU with the wrong authentication
4539 information.
4540 The notification generation must be throttled with
4541 at least a 5 second gap.
4542 ";
4543 }
4545 notification version-skew {
4546 uses notification-instance-hdr;
4547 uses notification-interface-hdr;
4548 leaf protocol-version {
4549 type uint8;
4550 description
4551 "Protocol version received in the PDU.";
4552 }
4553 leaf raw-pdu {
4554 type binary;
4555 description
4556 "Received raw PDU.";
4557 }
4558 description
4559 "This notification is sent when the system
4560 receives a PDU with a different protocol version
4561 number.
4562 The notification generation must be throttled with at least
4563 a 5 second gap.
4564 ";
4565 }
4567 notification area-mismatch {
4568 uses notification-instance-hdr;
4569 uses notification-interface-hdr;
4570 leaf raw-pdu {
4571 type binary;
4572 description
4573 "Received raw PDU.";
4574 }
4575 description
4576 "This notification is sent when the system
4577 receives a Hello PDU from an IS that does
4578 not share any area address.
4579 The notification generation must be throttled with at least
4580 a 5 second gap.
4581 ";
4582 }
4584 notification rejected-adjacency {
4585 uses notification-instance-hdr;
4586 uses notification-interface-hdr;
4587 leaf raw-pdu {
4588 type binary;
4589 description
4590 "Received raw PDU.";
4591 }
4592 leaf reason {
4593 type string;
4594 description
4595 "The system may provide a reason to reject the
4596 adjacency. If the reason is not available,
4597 the system use an empty string.";
4598 }
4599 description
4600 "This notification is sent when the system
4601 receives a Hello PDU from an IS but does not
4602 establish an adjacency for some reason.
4603 The notification generation must be throttled with at least
4604 a 5 second gap.
4605 ";
4606 }
4608 notification protocols-supported-mismatch {
4609 uses notification-instance-hdr;
4610 uses notification-interface-hdr;
4611 leaf raw-pdu {
4612 type binary;
4613 description
4614 "Received raw PDU.";
4615 }
4616 leaf-list protocols {
4617 type uint8;
4618 description
4619 "The list of protocols supported by the
4620 remote system.";
4621 }
4622 description
4623 "This notification is sent when the system
4624 receives a non pseudonode LSP that has no matching
4625 protocol supported.
4626 The notification generation must be throttled with at least
4627 a 5 second gap.
4628 ";
4629 }
4631 notification lsp-error-detected {
4632 uses notification-instance-hdr;
4633 uses notification-interface-hdr;
4634 leaf lsp-id {
4635 type lsp-id;
4636 description
4637 "LSP ID.";
4638 }
4639 leaf raw-pdu {
4640 type binary;
4641 description
4642 "Received raw PDU.";
4643 }
4644 leaf error-offset {
4645 type uint32;
4646 description
4647 "If the problem is a malformed TLV,
4648 the error-offset points to the start of the TLV.
4649 If the problem is with the LSP header,
4650 the error-offset points to the suspicious byte";
4651 }
4652 leaf tlv-type {
4653 type uint8;
4654 description
4655 "if the problem is a malformed TLV, the tlv-type is set
4656 to the type value of the suspicious TLV.
4657 Otherwise this leaf is not present.";
4658 }
4659 description
4660 "This notification is sent when the system
4661 receives a LSP with a parse error.
4662 The notification generation must be throttled with at least
4663 a 5 second gap.
4664 ";
4665 }
4666 notification adjacency-state-change {
4667 uses notification-instance-hdr;
4668 uses notification-interface-hdr;
4669 leaf neighbor {
4670 type string;
4671 description
4672 "Describes the name of the neighbor. If the
4673 name of the neighbor is not available, the
4674 field would be empty.";
4675 }
4676 leaf neighbor-system-id {
4677 type system-id;
4678 description
4679 "Describes the system-id of the neighbor.";
4680 }
4681 leaf state {
4682 type adj-state-type;
4684 description
4685 "This leaf describes the new state of the
4686 ISIS adjacency.";
4687 }
4688 leaf reason {
4689 type string;
4690 description
4691 "If the adjacency is going to DOWN,
4692 this leaf provides a reason for the adjacency
4693 going down. The reason is provided as a text.
4694 If the adjacency is going to UP, no reason is
4695 provided.";
4696 }
4697 description
4698 "This notification is sent when an ISIS adjacency
4699 moves to Up state or to Down state.";
4700 }
4702 notification lsp-received {
4703 uses notification-instance-hdr;
4704 uses notification-interface-hdr;
4706 leaf lsp-id {
4707 type lsp-id;
4708 description
4709 "LSP ID.";
4710 }
4711 leaf sequence {
4712 type uint32;
4713 description
4714 "Sequence number of the received LSP.";
4715 }
4716 leaf received-timestamp {
4717 type yang:timestamp;
4719 description
4720 "This leaf describes the timestamp
4721 when the LSP was received. ";
4722 }
4723 leaf neighbor-system-id {
4724 type system-id;
4725 description
4726 "Describes the system-id of the neighbor
4727 that sent the LSP.";
4728 }
4729 description
4730 "This notification is sent when a LSP
4731 is received.
4732 The notification generation must be throttled with at least
4733 a 5 second gap. ";
4734 }
4736 notification lsp-generation {
4737 uses notification-instance-hdr;
4739 leaf lsp-id {
4740 type lsp-id;
4741 description
4742 "LSP ID.";
4743 }
4744 leaf sequence {
4745 type uint32;
4746 description
4747 "Sequence number of the received LSP.";
4748 }
4749 leaf send-timestamp {
4750 type yang:timestamp;
4752 description
4753 "This leaf describes the timestamp
4754 when our LSP was regenerated. ";
4755 }
4756 description
4757 "This notification is sent when a LSP
4758 is regenerated.
4759 The notification generation must be throttled with at least
4760 a 5 second gap. ";
4761 }
4763 }
4764
4766 7. Security Considerations
4768 Configuration and state data defined in this document are designed to
4769 be accessed via the NETCONF protocol [RFC6241].
4771 As IS-IS is an IGP protocol (critical piece of the network), ensuring
4772 stability and security of the protocol is mandatory for the network
4773 service.
4775 Authors recommends to implement NETCONF access control model
4776 ([RFC6536]) to restrict access to all or part of the configuration to
4777 specific users. Access control to RPCs is also critical as RPC
4778 allows to clear protocol datastructures that would definitively
4779 impact the network service. This kind of RPC needs only to be used
4780 in specific cases by well-known experienced users.
4782 Authors consider that all the configuration is considered as
4783 sensitive/vulnerable as well as RPCs. But security teams can decide
4784 to open some part of the configuration to less experienced users
4785 depending on the internal organization, for example:
4787 o User FullWrite: would access to the whole data model. This kind
4788 of profile may be restricted to few experienced people.
4790 o User PartialWrite: would only access to configuration part within
4791 /isis/interfaces/interface. So this kind of profile is restricted
4792 to creation/modification/deletion of interfaces. This profile
4793 does not have access to RPC.
4795 o User Read: would only access to the operational states.
4797 Unauthorized access to configuration or RPC may cause high damages to
4798 the network service.
4800 The "isis/database" may contain authentication information. As
4801 presented in the description of the "/isis/database/level-
4802 1/lsp/authentication/authentication-key", the authentication MUST
4803 never be displayed in a plaintext format for security reason.
4804 Authors recommend the usage of MD5 to display or return the
4805 authentication-key.
4807 Some authentication-key may also be required in the "isis" writable
4808 container. When configuring IS-IS using the NETCONF protocol,
4809 authors recommends the usage of secure transport of NETCONF using SSH
4810 ([RFC6242]).
4812 8. Contributors
4814 Authors would like to thank Kiran Agrahara Sreenivasa, Dean
4815 Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the
4816 draft.
4818 9. Acknowledgements
4820 TBD.
4822 10. IANA Considerations
4824 The IANA is requested to assign two new URIs from the IETF XML
4825 registry ([RFC3688]). Authors are suggesting the following URI:
4827 URI: urn:ietf:params:xml:ns:yang:ietf-isis
4828 Registrant Contact: IS-IS WG
4829 XML: N/A, the requested URI is an XML namespace
4831 This document also requests one new YANG module name in the YANG
4832 Module Names registry ([RFC6020]) with the following suggestion:
4834 name: ietf-isis
4835 namespace: urn:ietf:params:xml:ns:yang:ietf-isis
4836 prefix: isis
4837 reference: RFC XXXX
4839 11. Change log for ietf-isis YANG module
4841 11.1. From version -15 to version -16
4843 o Alignment with last IETF key chain model.
4845 o lsp-log "change" leaf moved as an identity.
4847 o Incremental SPF removed from spf-log types.
4849 11.2. From version -14 to version -15
4851 o Alignment with OSPF model done:
4853 * Added spf-control container with IETF SPF delay algorithm as a
4854 feature.
4856 * Added graceful-restart options.
4858 * Added nsr as a feature.
4860 * Removed per topology FRR. Need to be augmented if necessary.
4862 * Created an ldp container within mpls.
4864 * Renamed igp-ldp-sync to igp-sync.
4866 * Added auto-cost container.
4868 * Moved reference-bandwidth under auto-cost container.
4870 * Added IS-IS local RIB as operational state.
4872 * Added decode-completed and raw-data leaves in the LSDB model.
4874 * Modified the notification header.
4876 11.3. From version -13 to version -14
4878 o Segment Routing extensions are now in a separate document.
4880 11.4. From version -12 to version -13
4882 o Move feature nlpid-control to container rather than list.
4884 o Rename multi-topology to topologies to align with OSPF.
4886 o Rename bfd/enabled to bfd/enable for consistency reason.
4888 o Add support for NSR with a feature.
4890 11.5. From version -09 to version -12
4892 o Rename node-tag container to node-tags.
4894 11.6. From version -08 to version -09
4896 o Added container before af list.
4898 o Added container before topology list.
4900 o Aligned LFA if per level cfg.
4902 o Align to draft-ietf-netmod-routing-cfg-23.
4904 11.7. From version -07 to version -08
4906 o Remove selector from system-id type.
4908 o Add some default values.
4910 o Moved lists to containers+groupings for per level configuration.
4912 o remove routing-instance as per core routing model v21.
4914 o added BFD leaf (no more BFD protocol model).
4916 o changed keychain module reference.
4918 11.8. From version -05 to version -07
4920 o Move Overload config from list to container.
4922 o Move Overload-max-metric config from list to container.
4924 o Move preference config from list to container.
4926 o Add Node flag in config.
4928 o Removed BFD config => moved to isis-bfd module.
4930 o Remove call to routing policy model.
4932 11.9. From version -03 to version -05
4934 o Correct invalid references to previous versions of core routing
4935 model.
4937 o Remove BFD config and replace by groupings from ietf-bfd.
4939 o Adding routing-policy support through routing-policy model.
4941 11.10. From version -02 to version -03
4943 o Reviewed config and op state groupings.
4945 o Add default value to lfa candidate-disabled.
4947 o Add enable leaf to isis container to reflect admin state.
4949 o Move to VRF centric only.
4951 o Segment routing is part os a separate module.
4953 11.11. From version -01 to version -02
4955 o Adding IPFRR.
4957 o Adding igp-ldp-sync.
4959 o Adding segment-routing.
4961 o Adding instance reference to operational states.
4963 o Move AF type from string to identity.
4965 o Updated router-capability in LSDB description.
4967 o packet counters moved to interface-packet-counters.
4969 o Added modification information in lsp-log.
4971 o Removing igp-ldp-sync timer in IS-IS.
4973 o Defining hierarchy for operational states.
4975 o Adding clns-mtu.
4977 o Adding key-chain.
4979 11.12. From version -00 to version -01
4981 o Interface metric move from af container to interface container.
4983 o Hello-padding on interface moved to hello-padding-disable with
4984 empty type.
4986 o three-way-handshake removed.
4988 o route preference changed to a choice.
4990 o csnp-authentication/psnp-authentication merged to authentication
4991 container.
4993 o lsp-gen-interval-exp-delay removed.
4995 o Added overload-max-metric feature.
4997 o overload-max-metric is in a separate container.
4999 o Change hello-padding to container.
5001 o Change bfd to container.
5003 o Make BFD a feature.
5005 o Create mpls-te container and put router-id inside.
5007 o Remove GR helper disable and timers.
5009 12. Normative References
5011 [I-D.ietf-netmod-routing-cfg]
5012 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
5013 Management", draft-ietf-netmod-routing-cfg-25 (work in
5014 progress), November 2016.
5016 [I-D.ietf-rtgwg-yang-key-chain]
5017 Lindem, A., Qu, Y., Yeung, D., Chen, I., and Z. Zhang,
5018 "Routing Key Chain YANG Data Model", draft-ietf-rtgwg-
5019 yang-key-chain-17 (work in progress), March 2017.
5021 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
5022 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/
5023 RFC2119, March 1997,
5024 .
5026 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
5027 DOI 10.17487/RFC3688, January 2004,
5028 .
5030 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi
5031 Topology (MT) Routing in Intermediate System to
5032 Intermediate Systems (IS-ISs)", RFC 5120, DOI 10.17487/
5033 RFC5120, February 2008,
5034 .
5036 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for
5037 IP Fast Reroute: Loop-Free Alternates", RFC 5286, DOI
5038 10.17487/RFC5286, September 2008,
5039 .
5041 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP
5042 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March
5043 2009, .
5045 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
5046 the Network Configuration Protocol (NETCONF)", RFC 6020,
5047 DOI 10.17487/RFC6020, October 2010,
5048 .
5050 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
5051 and A. Bierman, Ed., "Network Configuration Protocol
5052 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
5053 .
5055 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
5056 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
5057 .
5059 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
5060 Protocol (NETCONF) Access Control Model", RFC 6536, DOI
5061 10.17487/RFC6536, March 2012,
5062 .
5064 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N.
5065 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)",
5066 RFC 7490, DOI 10.17487/RFC7490, April 2015,
5067 .
5069 Appendix A. Example of IS-IS configuration in XML
5071 This section gives an example of configuration of an IS-IS instance
5072 on a device. The example is written in XML.
5074
5075
5076
5077 SLI
5078 1.1.1.1
5079
5080
5081
5082 Loopback0
5083
5084
5085 Eth1
5086
5087
5088
5089
5090 ISIS
5091
5092 isis:isis
5093
5094 true
5095 level-2
5096 87FC.FCDF.4432
5097 49.0001
5098
5099 1.1.1.1
5100
5101 65535
5102 65000
5103
5104 wide
5105
5106
5107 111111
5108
5109
5110
5111 ipv4-unicast
5112 true
5113
5114
5115
5116
5117 Loopback0
5118 200
5119
5120 0
5121
5122 true
5123
5124
5125 Eth1
5126 level-2
5127 point-to-point
5128
5129 167890
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139 Loopback0
5140
5141
5142
5143
5144
5145
5146 1.1.1.1
5147 32
5148
5149
5151
5152
5153 Eth1
5154
5155
5156
5157
5158
5159
5160 10.0.0.1
5161 30
5162
5163
5165
5166
5167
5169 Authors' Addresses
5171 Stephane Litkowski
5172 Orange
5174 Email: stephane.litkowski@orange.com
5176 Derek Yeung
5177 Arrcus, Inc
5179 Email: derek@arrcus.com
5181 Acee Lindem
5182 Cisco Systems
5184 Email: acee@cisco.com
5186 Jeffrey Zhang
5187 Juniper Networks
5189 Email: zzhang@juniper.net
5190 Ladislav Lhotka
5191 CZ.NIC
5193 Email: lhotka@nic.cz