idnits 2.17.1
draft-ietf-isis-yang-isis-cfg-37.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 210 has weird spacing: '...-method ide...'
== Line 605 has weird spacing: '...-family ian...'
== Line 1418 has weird spacing: '... allows a rou...'
-- The document date (September 9, 2019) is 1684 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)
-- Possible downref: Non-RFC (?) normative reference: ref. 'ISO-10589'
** Obsolete normative reference: RFC 5306 (Obsoleted by RFC 8706)
** Downref: Normative reference to an Informational RFC: RFC 5443
Summary: 2 errors (**), 0 flaws (~~), 4 warnings (==), 2 comments (--).
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: March 12, 2020 Arrcus, Inc
6 A. Lindem
7 Cisco Systems
8 J. Zhang
9 Juniper Networks
10 L. Lhotka
11 CZ.NIC
12 September 9, 2019
14 YANG Data Model for IS-IS Protocol
15 draft-ietf-isis-yang-isis-cfg-37
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", "NOT RECOMMENDED", "MAY", and
26 "OPTIONAL" in this document are to be interpreted as described in BCP
27 14 [RFC2119] [RFC8174] when, and only when, they appear in all
28 capitals, as shown here.
30 Status of This Memo
32 This Internet-Draft is submitted in full conformance with the
33 provisions of BCP 78 and BCP 79.
35 Internet-Drafts are working documents of the Internet Engineering
36 Task Force (IETF). Note that other groups may also distribute
37 working documents as Internet-Drafts. The list of current Internet-
38 Drafts is at https://datatracker.ietf.org/drafts/current/.
40 Internet-Drafts are draft documents valid for a maximum of six months
41 and may be updated, replaced, or obsoleted by other documents at any
42 time. It is inappropriate to use Internet-Drafts as reference
43 material or to cite them other than as "work in progress."
45 This Internet-Draft will expire on March 12, 2020.
47 Copyright Notice
49 Copyright (c) 2019 IETF Trust and the persons identified as the
50 document authors. All rights reserved.
52 This document is subject to BCP 78 and the IETF Trust's Legal
53 Provisions Relating to IETF Documents
54 (https://trustee.ietf.org/license-info) in effect on the date of
55 publication of this document. Please review these documents
56 carefully, as they describe your rights and restrictions with respect
57 to this document. Code Components extracted from this document must
58 include Simplified BSD License text as described in Section 4.e of
59 the Trust Legal Provisions and are provided without warranty as
60 described in the Simplified BSD License.
62 Table of Contents
64 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
65 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3
66 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9
67 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 9
68 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10
69 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 11
70 2.5. Authentication Parameters . . . . . . . . . . . . . . . . 18
71 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 19
72 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 19
73 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 19
74 2.9. Operational States . . . . . . . . . . . . . . . . . . . 19
75 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 20
76 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 20
77 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 22
78 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 22
79 7. Security Considerations . . . . . . . . . . . . . . . . . . . 105
80 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 107
81 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 107
82 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 107
83 10.1. Normative References . . . . . . . . . . . . . . . . . . 107
84 10.2. Informative References . . . . . . . . . . . . . . . . . 112
85 Appendix A. Example of IS-IS configuration in XML . . . . . . . 112
86 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 114
88 1. Introduction
90 This document defines a YANG [RFC7950] data model for IS-IS routing
91 protocol.
93 The data model covers configuration of an IS-IS routing protocol
94 instance as well as operational states.
96 A simplified tree representation of the data model is presented in
97 Section 2. Tree diagrams used in this document follow the notation
98 defined in [RFC8340].
100 The module is designed as per NMDA (Network Management Datastore
101 Architecture) [RFC8342].
103 2. Design of the Data Model
105 The IS-IS YANG module augments the "control-plane-protocol" list in
106 ietf-routing module [RFC8349] with specific IS-IS parameters.
108 The figure below describes the overall structure of the isis YANG
109 module:
111 module: ietf-isis
112 augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route:
113 +--ro metric? uint32
114 +--ro tag* uint64
115 +--ro route-type? enumeration
116 augment /if:interfaces/if:interface:
117 +--rw clns-mtu? uint16 {osi-interface}?
118 augment
119 | /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:
120 +--rw isis
121 +--rw enable? boolean {admin-control}?
122 +--rw level-type? level
123 +--rw system-id? system-id
124 +--rw maximum-area-addresses? uint8 {maximum-area-addresses}?
125 +--rw area-address* area-address
126 +--rw lsp-mtu? uint16
127 +--rw lsp-lifetime? uint16
128 +--rw lsp-refresh?
129 | rt-types:timer-value-seconds16 {lsp-refresh}?
130 +--rw poi-tlv? boolean {poi-tlv}?
131 +--rw graceful-restart {graceful-restart}?
132 | +--rw enable? boolean
133 | +--rw restart-interval? rt-types:timer-value-seconds16
134 | +--rw helper-enable? boolean
135 +--rw nsr {nsr}?
136 | +--rw enable? boolean
137 +--rw node-tags {node-tag}?
138 | +--rw node-tag* [tag]
139 | ...
140 +--rw metric-type
141 | +--rw value? enumeration
142 | +--rw level-1
143 | | ...
145 | +--rw level-2
146 | ...
147 +--rw default-metric
148 | +--rw value? wide-metric
149 | +--rw level-1
150 | | ...
151 | +--rw level-2
152 | ...
153 +--rw auto-cost {auto-cost}?
154 | +--rw enable? boolean
155 | +--rw reference-bandwidth? uint32
156 +--rw authentication
157 | +--rw (authentication-type)?
158 | | ...
159 | +--rw level-1
160 | | ...
161 | +--rw level-2
162 | ...
163 +--rw address-families {nlpid-control}?
164 | +--rw address-family-list* [address-family]
165 | ...
166 +--rw mpls
167 | +--rw te-rid {te-rid}?
168 | | ...
169 | +--rw ldp
170 | ...
171 +--rw spf-control
172 | +--rw paths? uint16 {max-ecmp}?
173 | +--rw ietf-spf-delay {ietf-spf-delay}?
174 | ...
175 +--rw fast-reroute {fast-reroute}?
176 | +--rw lfa {lfa}?
177 +--rw preference
178 | +--rw (granularity)?
179 | ...
180 +--rw overload
181 | +--rw status? boolean
182 +--rw overload-max-metric {overload-max-metric}?
183 | +--rw timeout? rt-types:timer-value-seconds16
184 +--ro spf-log
185 | +--ro event* [id]
186 | ...
187 +--ro lsp-log
188 | +--ro event* [id]
189 | ...
190 +--ro hostnames
191 | +--ro hostname* [system-id]
192 | ...
194 +--ro database
195 | +--ro levels* [level]
196 | ...
197 +--ro local-rib
198 | +--ro route* [prefix]
199 | ...
200 +--ro system-counters
201 | +--ro level* [level]
202 | ...
203 +--ro protected-routes
204 | +--ro address-family-stats* [address-family prefix alternate]
205 | ...
206 +--ro unprotected-routes
207 | +--ro address-family-stats* [address-family prefix]
208 | ...
209 +--ro protection-statistics* [frr-protection-method]
210 | +--ro frr-protection-method identityref
211 | +--ro address-family-stats* [address-family]
212 | ...
213 +--rw discontinuity-time? yang:date-and-time
214 +--rw topologies {multi-topology}?
215 | +--rw topology* [name]
216 | ...
217 +--rw interfaces
218 +--rw interface* [name]
219 ...
221 rpcs:
222 +---x clear-adjacency
223 | +---w input
224 | +---w routing-protocol-instance-name
225 | ->/rt:routing/control-plane-protocols/control-plane-protocol/name
226 | +---w level? level
227 | +---w interface? if:interface-ref
228 +---x clear-database
229 +---w input
230 +---w routing-protocol-instance-name
231 -> /rt:routing/control-plane-protocols/control-plane-protocol/name
232 +---w level? level
234 notifications:
235 +---n database-overload
236 | +--ro routing-protocol-name?
237 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
238 | +--ro isis-level? level
239 | +--ro overload? enumeration
240 +---n lsp-too-large
241 | +--ro routing-protocol-name?
242 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
243 | +--ro isis-level? level
244 | +--ro interface-name? if:interface-ref
245 | +--ro interface-level? level
246 | +--ro extended-circuit-id? extended-circuit-id
247 | +--ro pdu-size? uint32
248 | +--ro lsp-id? lsp-id
249 +---n if-state-change
250 | +--ro routing-protocol-name?
251 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
252 | +--ro isis-level? level
253 | +--ro interface-name? if:interface-ref
254 | +--ro interface-level? level
255 | +--ro extended-circuit-id? extended-circuit-id
256 | +--ro state? if-state-type
257 +---n corrupted-lsp-detected
258 | +--ro routing-protocol-name?
259 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
260 | +--ro isis-level? level
261 | +--ro lsp-id? lsp-id
262 +---n attempt-to-exceed-max-sequence
263 | +--ro routing-protocol-name?
264 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
265 | +--ro isis-level? level
266 | +--ro lsp-id? lsp-id
267 +---n id-len-mismatch
268 | +--ro routing-protocol-name?
269 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
270 | +--ro isis-level? level
271 | +--ro interface-name? if:interface-ref
272 | +--ro interface-level? level
273 | +--ro extended-circuit-id? extended-circuit-id
274 | +--ro pdu-field-len? uint8
275 | +--ro raw-pdu? binary
276 +---n max-area-addresses-mismatch
277 | +--ro routing-protocol-name?
278 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
279 | +--ro isis-level? level
280 | +--ro interface-name? if:interface-ref
281 | +--ro interface-level? level
282 | +--ro extended-circuit-id? extended-circuit-id
283 | +--ro max-area-addresses? uint8
284 | +--ro raw-pdu? binary
285 +---n own-lsp-purge
286 | +--ro routing-protocol-name?
287 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
288 | +--ro isis-level? level
289 | +--ro interface-name? if:interface-ref
290 | +--ro interface-level? level
291 | +--ro extended-circuit-id? extended-circuit-id
292 | +--ro lsp-id? lsp-id
293 +---n sequence-number-skipped
294 | +--ro routing-protocol-name?
295 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
296 | +--ro isis-level? level
297 | +--ro interface-name? if:interface-ref
298 | +--ro interface-level? level
299 | +--ro extended-circuit-id? extended-circuit-id
300 | +--ro lsp-id? lsp-id
301 +---n authentication-type-failure
302 | +--ro routing-protocol-name?
303 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
304 | +--ro isis-level? level
305 | +--ro interface-name? if:interface-ref
306 | +--ro interface-level? level
307 | +--ro extended-circuit-id? extended-circuit-id
308 | +--ro raw-pdu? binary
309 +---n authentication-failure
310 | +--ro routing-protocol-name?
311 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
312 | +--ro isis-level? level
313 | +--ro interface-name? if:interface-ref
314 | +--ro interface-level? level
315 | +--ro extended-circuit-id? extended-circuit-id
316 | +--ro raw-pdu? binary
317 +---n version-skew
318 | +--ro routing-protocol-name?
319 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
320 | +--ro isis-level? level
321 | +--ro interface-name? if:interface-ref
322 | +--ro interface-level? level
323 | +--ro extended-circuit-id? extended-circuit-id
324 | +--ro protocol-version? uint8
325 | +--ro raw-pdu? binary
326 +---n area-mismatch
327 | +--ro routing-protocol-name?
328 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
329 | +--ro isis-level? level
330 | +--ro interface-name? if:interface-ref
331 | +--ro interface-level? level
332 | +--ro extended-circuit-id? extended-circuit-id
333 | +--ro raw-pdu? binary
334 +---n rejected-adjacency
335 | +--ro routing-protocol-name?
336 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
337 | +--ro isis-level? level
338 | +--ro interface-name? if:interface-ref
339 | +--ro interface-level? level
340 | +--ro extended-circuit-id? extended-circuit-id
341 | +--ro raw-pdu? binary
342 | +--ro reason? string
343 +---n protocols-supported-mismatch
344 | +--ro routing-protocol-name?
345 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
346 | +--ro isis-level? level
347 | +--ro interface-name? if:interface-ref
348 | +--ro interface-level? level
349 | +--ro extended-circuit-id? extended-circuit-id
350 | +--ro raw-pdu? binary
351 | +--ro protocols* uint8
352 +---n lsp-error-detected
353 | +--ro routing-protocol-name?
354 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
355 | +--ro isis-level? level
356 | +--ro interface-name? if:interface-ref
357 | +--ro interface-level? level
358 | +--ro extended-circuit-id? extended-circuit-id
359 | +--ro lsp-id? lsp-id
360 | +--ro raw-pdu? binary
361 | +--ro error-offset? uint32
362 | +--ro tlv-type? uint8
363 +---n adjacency-state-change
364 | +--ro routing-protocol-name?
365 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
366 | +--ro isis-level? level
367 | +--ro interface-name? if:interface-ref
368 | +--ro interface-level? level
369 | +--ro extended-circuit-id? extended-circuit-id
370 | +--ro neighbor? string
371 | +--ro neighbor-system-id? system-id
372 | +--ro state? adj-state-type
373 | +--ro reason? string
374 +---n lsp-received
375 | +--ro routing-protocol-name?
376 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
377 | +--ro isis-level? level
378 | +--ro interface-name? if:interface-ref
379 | +--ro interface-level? level
380 | +--ro extended-circuit-id? extended-circuit-id
381 | +--ro lsp-id? lsp-id
382 | +--ro sequence? uint32
383 | +--ro received-timestamp? yang:timestamp
384 | +--ro neighbor-system-id? system-id
385 +---n lsp-generation
386 +--ro routing-protocol-name?
387 -> /rt:routing/control-plane-protocols/control-plane-protocol/name
388 +--ro isis-level? level
389 +--ro lsp-id? lsp-id
390 +--ro sequence? uint32
391 +--ro send-timestamp? yang:timestamp
393 2.1. IS-IS Configuration
395 The IS-IS configuration is divided in:
397 o Global parameters.
399 o Per interface configuration (see Section 2.4).
401 Additional modules may be created to support any additional
402 parameters. These additional modules MUST augment the ietf-isis
403 module.
405 The model implements features, thus some of the configuration
406 statement becomes optional. As an example, the ability to control
407 the administrative state of a particular IS-IS instance is optional.
408 By advertising the feature "admin-control", a device communicates to
409 the client that it supports the ability to shutdown a particular IS-
410 IS instance.
412 The global configuration contains usual IS-IS parameters such as lsp-
413 mtu, lsp-lifetime, lsp-refresh, default-metric...
415 2.2. Multitopology Parameters
417 The model supports multitopology (MT) IS-IS as defined in [RFC5120].
419 The "topologies" container is used to enable support of MT
420 extensions.
422 The "name" used in the topology list should refer to an existing RIB
423 of the device.
425 Some specific parameters can be defined on a per topology basis both
426 at global level and at interface level: for example, an interface
427 metric can be defined per topology.
429 Multiple address families (like IPv4 or IPv6) can also be activated
430 within the default topology. This can be achieved using the address-
431 families container (requiring "nlpid-control" feature to be
432 advertised).
434 2.3. Per-Level Parameters
436 Some parameters allow a per level configuration. In this case, the
437 parameter is modeled as a container with three configuration
438 locations:
440 o a top-level container: corresponds to level-1-2, so the
441 configuration applies to both levels.
443 o a level-1 container: corresponds to level-1 specific parameters.
445 o a level-2 container: corresponds to level-2 specific parameters.
447 +--rw priority
448 | +--rw value? uint8
449 | +--rw level-1
450 | | +--rw value? uint8
451 | +--rw level-2
452 | +--rw value? uint8
454 Example:
456
457 250
458
459 100
460
461
462 200
463
464
466 An implementation MUST prefer a level specific parameter over a
467 level-all parameter. As example, if the priority is 100 for the
468 level-1, 200 for the level-2 and 250 for the top-level configuration,
469 the implementation should use 100 for the level-1 and 200 for the
470 level-2.
472 Some parameters like "overload bit" and "route preference" are not
473 modeled to support a per level configuration. If an implementation
474 supports per level configuration for such parameter, this
475 implementation MUST augment the current model by adding both level-1
476 and level-2 containers and MUST reuse existing configuration
477 groupings.
479 Example of augmentation:
481 augment "/rt:routing/" +
482 "rt:control-plane-protocols/rt:control-plane-protocol"+
483 "/isis:isis/isis:overload" {
484 when "rt:type = 'isis:isis'" {
485 description
486 "This augment IS-IS routing protocol when used";
487 }
488 description
489 "This augments IS-IS overload configuration
490 with per level configuration.";
492 container level-1 {
493 uses isis:overload-global-cfg;
494 description
495 "Level 1 configuration.";
496 }
497 container level-2 {
498 uses isis:overload-global-cfg;
499 description
500 "Level 2 configuration.";
501 }
502 }
504 If an implementation does not support per level configuration for a
505 parameter modeled with per level configuration, the implementation
506 should advertise a deviation to announce the non-support of the
507 level-1 and level-2 containers.
509 Finally, if an implementation supports per level configuration but
510 does not support the level-1-2 configuration, it SHOULD also
511 advertise a deviation.
513 2.4. Per-Interface Parameters
515 The per-interface section of the IS-IS instance describes the
516 interface specific parameters.
518 The interface is modeled as a reference to an existing interface
519 defined in the "ietf-interfaces" YANG model ([RFC8343].
521 Each interface has some interface-specific parameters that may have a
522 different per level value as described in previous section. An
523 interface-specific parameter MUST be preferred over an IS-IS global
524 parameter.
526 Some parameters like hello-padding are defined as containers to allow
527 easy extension by vendor specific modules.
529 +--rw interfaces
530 +--rw interface* [name]
531 +--rw name if:interface-ref
532 +--rw enable? boolean {admin-control}?
533 +--rw level-type? level
534 +--rw lsp-pacing-interval?
535 | rt-types:timer-value-milliseconds
536 +--rw lsp-retransmit-interval?
537 | rt-types:timer-value-seconds16
538 +--rw passive? boolean
539 +--rw csnp-interval?
540 | rt-types:timer-value-seconds16
541 +--rw hello-padding
542 | +--rw enable? boolean
543 +--rw mesh-group-enable? mesh-group-state
544 +--rw mesh-group? uint8
545 +--rw interface-type? interface-type
546 +--rw tag* uint32 {prefix-tag}?
547 +--rw tag64* uint64 {prefix-tag64}?
548 +--rw node-flag? boolean {node-flag}?
549 +--rw hello-authentication
550 | +--rw (authentication-type)?
551 | | +--:(key-chain) {key-chain}?
552 | | | +--rw key-chain? key-chain:key-chain-ref
553 | | +--:(password)
554 | | +--rw key? string
555 | | +--rw crypto-algorithm? identityref
556 | +--rw level-1
557 | | +--rw (authentication-type)?
558 | | +--:(key-chain) {key-chain}?
559 | | | +--rw key-chain? key-chain:key-chain-ref
560 | | +--:(password)
561 | | +--rw key? string
562 | | +--rw crypto-algorithm? identityref
563 | +--rw level-2
564 | +--rw (authentication-type)?
565 | +--:(key-chain) {key-chain}?
566 | | +--rw key-chain? key-chain:key-chain-ref
567 | +--:(password)
568 | +--rw key? string
569 | +--rw crypto-algorithm? identityref
570 +--rw hello-interval
571 | +--rw value? rt-types:timer-value-seconds16
572 | +--rw level-1
573 | | +--rw value? rt-types:timer-value-seconds16
574 | +--rw level-2
575 | +--rw value? rt-types:timer-value-seconds16
576 +--rw hello-multiplier
577 | +--rw value? uint16
578 | +--rw level-1
579 | | +--rw value? uint16
580 | +--rw level-2
581 | +--rw value? uint16
582 +--rw priority
583 | +--rw value? uint8
584 | +--rw level-1
585 | | +--rw value? uint8
586 | +--rw level-2
587 | +--rw value? uint8
588 +--rw metric
589 | +--rw value? wide-metric
590 | +--rw level-1
591 | | +--rw value? wide-metric
592 | +--rw level-2
593 | +--rw value? wide-metric
594 +--rw bfd {bfd}?
595 | +--rw enable? boolean
596 | +--rw local-multiplier? multiplier
597 | +--rw (interval-config-type)?
598 | +--:(tx-rx-intervals)
599 | | +--rw desired-min-tx-interval? uint32
600 | | +--rw required-min-rx-interval? uint32
601 | +--:(single-interval) {single-minimum-interval}?
602 | +--rw min-interval? uint32
603 +--rw address-families {nlpid-control}?
604 | +--rw address-family-list* [address-family]
605 | +--rw address-family iana-rt-types:address-family
606 +--rw mpls
607 | +--rw ldp
608 | +--rw igp-sync? boolean {ldp-igp-sync}?
609 +--rw fast-reroute {fast-reroute}?
610 | +--rw lfa {lfa}?
611 | +--rw candidate-enable? boolean
612 | +--rw enable? boolean
613 | +--rw remote-lfa {remote-lfa}?
614 | | +--rw enable? boolean
615 | +--rw level-1
616 | | +--rw candidate-enable? boolean
617 | | +--rw enable? boolean
618 | | +--rw remote-lfa {remote-lfa}?
619 | | +--rw enable? boolean
620 | +--rw level-2
621 | +--rw candidate-enable? boolean
622 | +--rw enable? boolean
623 | +--rw remote-lfa {remote-lfa}?
624 | +--rw enable? boolean
625 +--ro adjacencies
626 | +--ro adjacency* []
627 | +--ro neighbor-sys-type? level
628 | +--ro neighbor-sysid? system-id
629 | +--ro neighbor-extended-circuit-id?
630 | | extended-circuit-id
631 | +--ro neighbor-snpa? snpa
632 | +--ro usage? level
633 | +--ro hold-timer?
634 | rt-types:timer-value-seconds16
635 | +--ro neighbor-priority? uint8
636 | +--ro lastuptime? yang:timestamp
637 | +--ro state? adj-state-type
638 +--ro event-counters
639 | +--ro adjacency-changes? uint32
640 | +--ro adjacency-number? uint32
641 | +--ro init-fails? uint32
642 | +--ro adjacency-rejects? uint32
643 | +--ro id-len-mismatch? uint32
644 | +--ro max-area-addresses-mismatch? uint32
645 | +--ro authentication-type-fails? uint32
646 | +--ro authentication-fails? uint32
647 | +--ro lan-dis-changes? uint32
648 +--ro packet-counters
649 | +--ro level* [level]
650 | +--ro level level-number
651 | +--ro iih
652 | | +--ro in? uint32
653 | | +--ro out? uint32
654 | +--ro ish
655 | | +--ro in? uint32
656 | | +--ro out? uint32
657 | +--ro esh
658 | | +--ro in? uint32
659 | | +--ro out? uint32
660 | +--ro lsp
661 | | +--ro in? uint32
662 | | +--ro out? uint32
663 | +--ro psnp
664 | | +--ro in? uint32
665 | | +--ro out? uint32
666 | +--ro csnp
667 | | +--ro in? uint32
668 | | +--ro out? uint32
669 | +--ro unknown
670 | +--ro in? uint32
671 +--rw discontinuity-time? yang:date-and-time
672 +--rw topologies {multi-topology}?
673 +--rw topology* [name]
674 +--rw name
675 | -> ../../../../../../../../rt:ribs/rib/name
676 +--rw metric
677 +--rw value? wide-metric
678 +--rw level-1
679 | +--rw value? wide-metric
680 +--rw level-2
681 +--rw value? wide-metric
683 rpcs:
684 +---x clear-adjacency
685 | +---w input
686 | +---w routing-protocol-instance-name
687 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
688 | +---w level? level
689 | +---w interface? if:interface-ref
690 +---x clear-database
691 +---w input
692 +---w routing-protocol-instance-name
693 -> /rt:routing/control-plane-protocols/control-plane-protocol/name
694 +---w level? level
696 notifications:
697 +---n database-overload
698 | +--ro routing-protocol-name?
699 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
700 | +--ro isis-level? level
701 | +--ro overload? enumeration
702 +---n lsp-too-large
703 | +--ro routing-protocol-name?
704 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
705 | +--ro isis-level? level
706 | +--ro interface-name? if:interface-ref
707 | +--ro interface-level? level
708 | +--ro extended-circuit-id? extended-circuit-id
709 | +--ro pdu-size? uint32
710 | +--ro lsp-id? lsp-id
711 +---n if-state-change
712 | +--ro routing-protocol-name?
713 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
714 | +--ro isis-level? level
715 | +--ro interface-name? if:interface-ref
716 | +--ro interface-level? level
717 | +--ro extended-circuit-id? extended-circuit-id
718 | +--ro state? if-state-type
719 +---n corrupted-lsp-detected
720 | +--ro routing-protocol-name?
721 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
722 | +--ro isis-level? level
723 | +--ro lsp-id? lsp-id
724 +---n attempt-to-exceed-max-sequence
725 | +--ro routing-protocol-name?
726 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
727 | +--ro isis-level? level
728 | +--ro lsp-id? lsp-id
729 +---n id-len-mismatch
730 | +--ro routing-protocol-name?
731 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
732 | +--ro isis-level? level
733 | +--ro interface-name? if:interface-ref
734 | +--ro interface-level? level
735 | +--ro extended-circuit-id? extended-circuit-id
736 | +--ro pdu-field-len? uint8
737 | +--ro raw-pdu? binary
738 +---n max-area-addresses-mismatch
739 | +--ro routing-protocol-name?
740 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
741 | +--ro isis-level? level
742 | +--ro interface-name? if:interface-ref
743 | +--ro interface-level? level
744 | +--ro extended-circuit-id? extended-circuit-id
745 | +--ro max-area-addresses? uint8
746 | +--ro raw-pdu? binary
747 +---n own-lsp-purge
748 | +--ro routing-protocol-name?
749 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
750 | +--ro isis-level? level
751 | +--ro interface-name? if:interface-ref
752 | +--ro interface-level? level
753 | +--ro extended-circuit-id? extended-circuit-id
754 | +--ro lsp-id? lsp-id
755 +---n sequence-number-skipped
756 | +--ro routing-protocol-name?
757 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
758 | +--ro isis-level? level
759 | +--ro interface-name? if:interface-ref
760 | +--ro interface-level? level
761 | +--ro extended-circuit-id? extended-circuit-id
762 | +--ro lsp-id? lsp-id
763 +---n authentication-type-failure
764 | +--ro routing-protocol-name?
765 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
766 | +--ro isis-level? level
767 | +--ro interface-name? if:interface-ref
768 | +--ro interface-level? level
769 | +--ro extended-circuit-id? extended-circuit-id
770 | +--ro raw-pdu? binary
771 +---n authentication-failure
772 | +--ro routing-protocol-name?
773 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
774 | +--ro isis-level? level
775 | +--ro interface-name? if:interface-ref
776 | +--ro interface-level? level
777 | +--ro extended-circuit-id? extended-circuit-id
778 | +--ro raw-pdu? binary
779 +---n version-skew
780 | +--ro routing-protocol-name?
781 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
782 | +--ro isis-level? level
783 | +--ro interface-name? if:interface-ref
784 | +--ro interface-level? level
785 | +--ro extended-circuit-id? extended-circuit-id
786 | +--ro protocol-version? uint8
787 | +--ro raw-pdu? binary
788 +---n area-mismatch
789 | +--ro routing-protocol-name?
790 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
791 | +--ro isis-level? level
792 | +--ro interface-name? if:interface-ref
793 | +--ro interface-level? level
794 | +--ro extended-circuit-id? extended-circuit-id
795 | +--ro raw-pdu? binary
796 +---n rejected-adjacency
797 | +--ro routing-protocol-name?
798 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
799 | +--ro isis-level? level
800 | +--ro interface-name? if:interface-ref
801 | +--ro interface-level? level
802 | +--ro extended-circuit-id? extended-circuit-id
803 | +--ro raw-pdu? binary
804 | +--ro reason? string
805 +---n protocols-supported-mismatch
806 | +--ro routing-protocol-name?
807 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
808 | +--ro isis-level? level
809 | +--ro interface-name? if:interface-ref
810 | +--ro interface-level? level
811 | +--ro extended-circuit-id? extended-circuit-id
812 | +--ro raw-pdu? binary
813 | +--ro protocols* uint8
814 +---n lsp-error-detected
815 | +--ro routing-protocol-name?
816 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
817 | +--ro isis-level? level
818 | +--ro interface-name? if:interface-ref
819 | +--ro interface-level? level
820 | +--ro extended-circuit-id? extended-circuit-id
821 | +--ro lsp-id? lsp-id
822 | +--ro raw-pdu? binary
823 | +--ro error-offset? uint32
824 | +--ro tlv-type? uint8
825 +---n adjacency-state-change
826 | +--ro routing-protocol-name?
827 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
828 | +--ro isis-level? level
829 | +--ro interface-name? if:interface-ref
830 | +--ro interface-level? level
831 | +--ro extended-circuit-id? extended-circuit-id
832 | +--ro neighbor? string
833 | +--ro neighbor-system-id? system-id
834 | +--ro state? adj-state-type
835 | +--ro reason? string
836 +---n lsp-received
837 | +--ro routing-protocol-name?
838 | -> /rt:routing/control-plane-protocols/control-plane-protocol/name
839 | +--ro isis-level? level
840 | +--ro interface-name? if:interface-ref
841 | +--ro interface-level? level
842 | +--ro extended-circuit-id? extended-circuit-id
843 | +--ro lsp-id? lsp-id
844 | +--ro sequence? uint32
845 | +--ro received-timestamp? yang:timestamp
846 | +--ro neighbor-system-id? system-id
847 +---n lsp-generation
848 +--ro routing-protocol-name?
849 -> /rt:routing/control-plane-protocols/control-plane-protocol/name
850 +--ro isis-level? level
851 +--ro lsp-id? lsp-id
852 +--ro sequence? uint32
853 +--ro send-timestamp? yang:timestamp
855 2.5. Authentication Parameters
857 The module enables authentication configuration through the IETF key-
858 chain module [RFC8177]. The IS-IS module imports the "ietf-key-
859 chain" module and reuses some groupings to allow global and per
860 interface configuration of authentication. If a global
861 authentication is configured, an implementation SHOULD authenticate
862 PSNPs (Partial Sequence Number Packets), CSNPs (Complete Sequence
863 Number Packets) and LSPs (Link State Packets) with the authentication
864 parameters supplied. The authentication of HELLO PDUs (Protocol Data
865 Units) can be activated on a per interface basis.
867 2.6. IGP/LDP synchronization
869 [RFC5443] defines a mechanism where IGP (Interior Gateway Protocol)
870 needs to be synchronized with LDP (Label Distribution Protocol). An
871 "ldp-igp-sync" feature has been defined in the model to support this
872 mechanism. The "mpls/ldp/igp-sync" leaf under "interface" allows
873 activation of the mechanism on a per interface basis. The "mpls/ldp/
874 igp-sync" container in the global configuration is empty on purpose
875 and is not required for the activation. The goal of this empty
876 container is to allow easy augmentation with additional parameters
877 like timers for example.
879 2.7. ISO parameters
881 As IS-IS protocol is based on ISO protocol suite, some ISO parameters
882 may be required.
884 This module augments interface configuration model to support ISO
885 configuration parameters.
887 The clns-mtu can be defined under the interface.
889 2.8. IP FRR
891 This YANG module supports LFA (Loop Free Alternates) [RFC5286] and
892 remote LFA [RFC7490] as IP FRR techniques. The "fast-reroute"
893 container may be augmented by other models to support other IPFRR
894 flavors (MRT, TILFA ...).
896 The current version of the model supports activation of LFA and
897 remote LFA at interface only. The global "lfa" container is present
898 but kept empty to allow augmentation with vendor specific properties
899 like policies.
901 Remote LFA is considered as a child of LFA. Remote LFA cannot be
902 enabled if LFA is not enabled.
904 The "candidate-enable" allows to mark an interface to be used as a
905 backup.
907 2.9. Operational States
909 Operational states are provided in the module in various places:
911 o system-counters: provides statistical informations about the
912 global system.
914 o interface : provides configuration state informations for each
915 interface.
917 o adjacencies: provides state informations about current IS-IS
918 adjacencies.
920 o spf-log: provides informations about SPF events on the node. This
921 SHOULD be implemented as a wrapping buffer.
923 o lsp-log: provides informations about LSP events on the node
924 (reception of an LSP or modification of local LSP). This SHOULD
925 be implemented as a wrapping buffer and an implementation MAY
926 decide to log refresh LSPs or not.
928 o local-rib: provides the IS-IS internal routing table view.
930 o database: provides details on the current LSDB.
932 o hostnames: provides informations about system-id to hostname
933 mappings [RFC5301].
935 o fast-reroute: provides informations about IP FRR.
937 3. RPC Operations
939 The "ietf-isis" module defines two RPC operations:
941 o clear-database: reset the content of a particular IS-IS database
942 and restart database synchronization with the neighbors.
944 o clear-adjacency: restart a particular set of IS-IS adjacencies.
946 4. Notifications
948 The "ietf-isis" module introduces some notifications :
950 database-overload: raised when overload condition is changed.
952 lsp-too-large: raised when the system tries to propagate a PDU
953 that is too large.
955 if-state-change: raised when the state of an interface changes.
957 corrupted-lsp-detected: raised when the system finds that an LSP
958 that was stored in memory has become corrupted.
960 attempt-to-exceed-max-sequence: This notification is sent when the
961 system wraps the 32-bit sequence counter of an LSP.
963 id-len-mismatch: This notification is sent when we receive a PDU
964 with a different value for the System ID length.
966 max-area-addresses-mismatch: This notification is sent when we
967 receive a PDU with a different value for the Maximum Area
968 Addresses.
970 own-lsp-purge: This notification is sent when the system receives
971 a PDU with its own system ID and zero age.
973 sequence-number-skipped: This notification is sent when the system
974 receives a PDU with its own system ID and different contents. The
975 system has to reissue the LSP with a higher sequence number.
977 authentication-type-failure: This notification is sent when the
978 system receives a PDU with the wrong authentication type field.
980 authentication-failure: This notification is sent when the system
981 receives a PDU with the wrong authentication information.
983 version-skew: This notification is sent when the system receives a
984 PDU with a different protocol version number.
986 area-mismatch: This notification is sent when the system receives
987 a Hello PDU from an IS that does not share any area address.
989 rejected-adjacency: This notification is sent when the system
990 receives a Hello PDU from an IS but does not establish an
991 adjacency for some reason.
993 protocols-supported-mismatch: This notification is sent when the
994 system receives a non-pseudonode LSP that has no matching protocol
995 supported.
997 lsp-error-detected: This notification is sent when the system
998 receives an LSP with a parse error.
1000 adjacency-state-change: This notification is sent when an IS-IS
1001 adjacency moves to Up state or to Down state.
1003 lsp-received: This notification is sent when an LSP is received.
1005 lsp-generation: This notification is sent when an LSP is
1006 regenerated.
1008 5. Interaction with Other YANG Modules
1010 The "isis" container augments the "/rt:routing/rt:control-plane-
1011 protocols/control-plane-protocol" container of the ietf-routing
1012 [RFC8349] module by defining IS-IS specific parameters.
1014 The "isis" module augments "/if:interfaces/if:interface" defined by
1015 [RFC8343] with ISO specific parameters.
1017 The "isis" operational state container augments the "/rt:routing-
1018 state/rt:control-plane-protocols/control-plane-protocol" container of
1019 the ietf-routing module by defining IS-IS specific operational
1020 states.
1022 Some IS-IS specific routes attributes are added to route objects of
1023 the ietf-routing module by augmenting "/rt:routing-
1024 state/rt:ribs/rt:rib/rt:routes/rt:route".
1026 The modules defined in this document use some groupings from ietf-
1027 keychain [RFC8177].
1029 The module reuses types from [RFC6991] and [RFC8294].
1031 To support BFD for fast detection, the module relies on
1032 [I-D.ietf-bfd-yang].
1034 6. IS-IS YANG Module
1036 The following RFCs, drafts and external standards are not referenced
1037 in the document text but are referenced in the ietf-isis.yang module:
1038 [ISO-10589], [RFC1195], [RFC4090],[RFC5029], [RFC5130], [RFC5302],
1039 [RFC5305], [RFC5306], [RFC5307], [RFC5308], [RFC5880], [RFC5881],
1040 [RFC6119], [RFC6232], [RFC7794], [RFC7981], [RFC8570], [RFC7917],
1041 [RFC8405].
1043 file "ietf-isis@2019-09-09.yang"
1044 module ietf-isis {
1045 yang-version 1.1;
1046 namespace "urn:ietf:params:xml:ns:yang:ietf-isis";
1048 prefix isis;
1050 import ietf-routing {
1051 prefix "rt";
1052 reference "RFC 8349 - A YANG Data Model for Routing
1053 Management (NMDA Version)";
1054 }
1056 import ietf-inet-types {
1057 prefix inet;
1058 reference "RFC 6991 - Common YANG Data Types";
1059 }
1061 import ietf-yang-types {
1062 prefix yang;
1063 reference "RFC 6991 - Common YANG Data Types";
1064 }
1066 import ietf-interfaces {
1067 prefix "if";
1068 reference "RFC 8343 - A YANG Data Model for Interface
1069 Management (NDMA Version)";
1070 }
1072 import ietf-key-chain {
1073 prefix "key-chain";
1074 reference "RFC 8177 - YANG Data Model for Key Chains";
1075 }
1077 import ietf-routing-types {
1078 prefix "rt-types";
1079 reference "RFC 8294 - Common YANG Data Types for the
1080 Routing Area";
1081 }
1083 import iana-routing-types {
1084 prefix "iana-rt-types";
1085 reference "RFC 8294 - Common YANG Data Types for the
1086 Routing Area";
1087 }
1089 import ietf-bfd-types {
1090 prefix "bfd-types";
1091 reference "RFC YYYY - YANG Data Model for Bidirectional
1092 Forwarding Detection (BFD).
1094 -- Note to RFC Editor Please replace YYYY with published RFC
1095 number for draft-ietf-bfd-yang.";
1097 }
1099 organization
1100 "IETF LSR Working Group";
1102 contact
1103 "WG List:
1105 Editor: Stephane Litkowski
1106
1108 Derek Yeung
1109
1110 Acee Lindem
1111
1112 Jeffrey Zhang
1113
1114 Ladislav Lhotka
1115
1117 ";
1119 description
1120 "This YANG module defines the generic configuration and
1121 operational state for the IS-IS protocol common to all
1122 vendor implementations. It is intended that the module
1123 will be extended by vendors to define vendor-specific
1124 IS-IS configuration parameters and policies,
1125 for example, route maps or route policies.
1127 This YANG model conforms to the Network Management
1128 Datastore Architecture (NMDA) as described in RFC 8242.
1130 Copyright (c) 2018 IETF Trust and the persons identified as
1131 authors of the code. All rights reserved.
1133 Redistribution and use in source and binary forms, with or
1134 without modification, is permitted pursuant to, and subject to
1135 the license terms contained in, the Simplified BSD License set
1136 forth in Section 4.c of the IETF Trust's Legal Provisions
1137 Relating to IETF Documents
1138 (https://trustee.ietf.org/license-info).
1140 This version of this YANG module is part of RFC XXXX
1141 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
1142 for full legal notices.
1144 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
1145 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
1146 'MAY', and 'OPTIONAL' in this document are to be interpreted as
1147 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
1148 they appear in all capitals, as shown here.
1150 This version of this YANG module is part of RFC XXXX;
1151 see the RFC itself for full legal notices.";
1153 revision 2019-09-09 {
1154 description
1155 "Initial revision.";
1156 reference "RFC XXXX";
1157 }
1159 /* Identities */
1161 identity isis {
1162 base rt:routing-protocol;
1163 description "Identity for the IS-IS routing protocol.";
1164 }
1166 identity lsp-log-reason {
1167 description "Base identity for an LSP change log reason.";
1168 }
1170 identity refresh {
1171 base lsp-log-reason;
1172 description
1173 "Identity used when the LSP log reason is
1174 a refresh LSP received.";
1175 }
1177 identity content-change {
1178 base lsp-log-reason;
1179 description
1180 "Identity used when the LSP log reason is
1181 a change in the content of the LSP.";
1182 }
1184 identity frr-protection-method {
1185 description
1186 "Base identity for a Fast Reroute protection method.";
1187 }
1188 identity frr-protection-method-lfa {
1189 base frr-protection-method;
1190 description "Loop Free Alternate as defined in RFC5286.";
1191 }
1192 identity frr-protection-method-rlfa {
1193 base frr-protection-method;
1194 description "Remote Loop Free Alternate as defined in RFC7490.";
1195 }
1196 identity frr-protection-method-rsvpte {
1197 base frr-protection-method;
1198 description "RSVP-TE as defined in RFC4090.";
1199 }
1201 identity frr-protection-available-type {
1202 description "Base identity for Fast Reroute protection types
1203 provided by an alternate path.";
1204 }
1205 identity frr-protection-available-node-type {
1206 base frr-protection-available-type;
1207 description "Node protection is provided by the alternate.";
1208 }
1209 identity frr-protection-available-link-type {
1210 base frr-protection-available-type;
1211 description "Link protection is provided by the alternate.";
1212 }
1213 identity frr-protection-available-srlg-type {
1214 base frr-protection-available-type;
1215 description "SRLG protection is provided by the alternate.";
1216 }
1217 identity frr-protection-available-downstream-type {
1218 base frr-protection-available-type;
1219 description "The alternate is downstream on the path.";
1220 }
1221 identity frr-protection-available-other-type {
1222 base frr-protection-available-type;
1223 description "The level of protection is unknown.";
1224 }
1226 identity unidirectional-link-delay-subtlv-flag {
1227 description "Base identity for unidirectional-link-delay
1228 subTLV flags. Flags are defined in RFC8570.";
1229 }
1230 identity unidirectional-link-delay-subtlv-a-flag {
1231 base unidirectional-link-delay-subtlv-flag;
1232 description
1233 "The A bit represents the Anomalous (A) bit.
1234 The A bit is set when the measured value of
1235 this parameter exceeds its configured
1236 maximum threshold.
1237 The A bit is cleared when the measured value
1238 falls below its configured reuse threshold.
1239 If the A bit is clear,
1240 the value represents steady-state link performance.";
1241 }
1242 identity min-max-unidirectional-link-delay-subtlv-flag {
1243 description
1244 "Base identity for min-max-unidirectional-link-delay
1245 subTLV flags. Flags are defined in RFC8570.";
1246 }
1247 identity min-max-unidirectional-link-delay-subtlv-a-flag {
1248 base min-max-unidirectional-link-delay-subtlv-flag;
1249 description
1250 "The A bit represents the Anomalous (A) bit.
1251 The A bit is set when the measured value of
1252 this parameter exceeds its configured
1253 maximum threshold.
1254 The A bit is cleared when the measured value
1255 falls below its configured reuse threshold.
1256 If the A bit is clear,
1257 the value represents steady-state link performance.";
1258 }
1259 identity unidirectional-link-loss-subtlv-flag {
1260 description "Base identity for unidirectional-link-loss
1261 subTLV flags. Flags are defined in RFC8570.";
1262 }
1264 identity unidirectional-link-loss-subtlv-a-flag {
1265 base unidirectional-link-loss-subtlv-flag;
1266 description
1267 "The A bit represents the Anomalous (A) bit.
1268 The A bit is set when the measured value of
1269 this parameter exceeds its configured
1270 maximum threshold.
1271 The A bit is cleared when the measured value
1272 falls below its configured reuse threshold.
1273 If the A bit is clear,
1274 the value represents steady-state link performance.";
1275 }
1276 identity tlv229-flag {
1277 description "Base identity for TLV229 flags. Flags are defined
1278 in RFC5120.";
1279 }
1280 identity tlv229-overload-flag {
1281 base tlv229-flag;
1282 description
1283 "If set, the originator is overloaded,
1284 and must be avoided in path calculation.";
1285 }
1286 identity tlv229-attached-flag {
1287 base tlv229-flag;
1288 description
1289 "If set, the originator is attached to
1290 another area using the referred metric.";
1292 }
1293 identity router-capability-flag {
1294 description "Base identity for router capability flags.
1295 Flags are defined in RFC7981.";
1296 }
1297 identity router-capability-flooding-flag {
1298 base router-capability-flag;
1299 description
1300 "Quote from RFC7981: 'If the S bit is set,
1301 the IS-IS Router CAPABILITY
1302 TLV MUST be flooded across the entire routing
1303 domain. If the S bit is clear, the TLV MUST NOT
1304 be leaked between levels. This bit MUST NOT
1305 be altered during the TLV leaking'.";
1306 }
1307 identity router-capability-down-flag {
1308 base router-capability-flag;
1309 description
1310 "Quote from RFC7981: 'When the IS-IS Router CAPABILITY TLV
1311 is leaked from level-2 to level-1, the D bit MUST be set.
1312 Otherwise, this bit MUST be clear. IS-IS Router
1313 capability TLVs with the D bit set MUST NOT be
1314 leaked from level-1 to level-2 in to prevent
1315 TLV looping'.";
1316 }
1318 identity lsp-flag {
1319 description "Base identity for LSP attributes.
1320 Attributes are defined in ISO 10589";
1321 }
1322 identity lsp-partitioned-flag {
1323 base lsp-flag;
1324 description "Originator partition repair supported";
1325 }
1326 identity lsp-attached-error-metric-flag {
1327 base lsp-flag;
1328 description "Set when originator is attached to
1329 another area using the referred metric.";
1330 }
1331 identity lsp-attached-delay-metric-flag {
1332 base lsp-flag;
1333 description "Set when originator is attached to
1334 another area using the referred metric.";
1335 }
1336 identity lsp-attached-expense-metric-flag {
1337 base lsp-flag;
1338 description "Set when originator is attached to
1339 another area using the referred metric.";
1341 }
1342 identity lsp-attached-default-metric-flag {
1343 base lsp-flag;
1344 description "Set when originator is attached to
1345 another area using the referred metric.";
1346 }
1347 identity lsp-overload-flag {
1348 base lsp-flag;
1349 description
1350 "If set, the originator is overloaded,
1351 and must be avoided in path calculation.";
1352 }
1353 identity lsp-l1system-flag {
1354 base lsp-flag;
1355 description
1356 "Set when the Intermediate System has an L1 type.";
1357 }
1358 identity lsp-l2system-flag {
1359 base lsp-flag;
1360 description
1361 "Set when the Intermediate System has an L2 type.";
1362 }
1364 /* Feature definitions */
1366 feature osi-interface {
1367 description "Support of OSI specific parameters on an
1368 interface.";
1369 }
1370 feature poi-tlv {
1371 description "Support of Purge Originator Identification.";
1372 reference "RFC 6232 - Purge Originator Identification TLV
1373 for IS-IS";
1374 }
1375 feature ietf-spf-delay {
1376 description
1377 "Support for IETF SPF delay algorithm.";
1378 reference "RFC 8405 - SPF Back-off algorithm for link
1379 state IGPs";
1380 }
1381 feature bfd {
1382 description
1383 "Support for BFD detection of IS-IS neighbor reachability.";
1384 reference "RFC 5880 - Bidirectional Forwarding Detection (BFD)
1385 RFC 5881 - Bidirectional Forwarding Detection
1386 (BFD) for IPv4 and IPv6 (Single Hop)";
1388 }
1389 feature key-chain {
1390 description
1391 "Support of keychain for authentication.";
1392 reference "RFC8177 - YANG Data Model for Key Chains";
1393 }
1394 feature node-flag {
1395 description
1396 "Support for node-flag for IS-IS prefixes.";
1397 reference "RFC7794 - IS-IS Prefix Attributes for
1398 Extended IP and IPv6 Reachability";
1399 }
1400 feature node-tag {
1401 description
1402 "Support for node admin tag for IS-IS routing instances.";
1403 reference "RFC7917 - Advertising Node Administrative Tags
1404 in IS-IS";
1405 }
1406 feature ldp-igp-sync {
1407 description
1408 "LDP IGP synchronization.";
1409 reference "RFC5443 - LDP IGP Synchronization.";
1410 }
1411 feature fast-reroute {
1412 description
1413 "Support for IP Fast Reroute (IP-FRR).";
1414 }
1415 feature nsr {
1416 description
1417 "Non-Stop-Routing (NSR) support. The IS-IS NSR feature
1418 allows a router with redundant control-plane capability
1419 (e.g., dual Route-Processor (RP) cards) to maintain its
1420 state and adjacencies during planned and unplanned
1421 IS-IS instance restarts. It differs from graceful-restart
1422 or Non-Stop Forwarding (NSF) in that no protocol signaling
1423 or assistance from adjacent IS-IS neighbors is required to
1424 recover control-plane state.";
1425 }
1426 feature lfa {
1427 description
1428 "Support for Loop-Free Alternates (LFAs).";
1429 reference "RFC5286 - Basic Specification of IP Fast-Reroute:
1430 Loop-free Alternates";
1431 }
1432 feature remote-lfa {
1433 description
1434 "Support for Remote Loop-Free Alternates (R-LFAs).";
1435 reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute";
1437 }
1439 feature overload-max-metric {
1440 description
1441 "Support of overload by setting all links to max metric.
1442 In IS-IS, the overload bit is usually used to signal that
1443 a node cannot be used as a transit. The overload-max-metric
1444 feature brings a similar behavior leveraging on setting all
1445 the link metrics to MAX_METRIC.";
1446 }
1447 feature prefix-tag {
1448 description
1449 "Support for 32-bit prefix tags";
1450 reference "RFC5130 - A Policy Control Mechanism in
1451 IS-IS Using Administrative Tags";
1452 }
1453 feature prefix-tag64 {
1454 description
1455 "Support for 64-bit prefix tags";
1456 reference "RFC5130 - A Policy Control Mechanism in
1457 IS-IS Using Administrative Tags";
1458 }
1459 feature auto-cost {
1460 description
1461 "Calculate IS-IS interface metric according to
1462 reference bandwidth.";
1463 }
1465 feature te-rid {
1466 description
1467 "Traffic-Engineering Router-ID.";
1468 reference "RFC5305 - IS-IS Extensions for Traffic Engineering
1469 RFC6119 - IPv6 Traffic Engineering in IS-IS";
1470 }
1471 feature max-ecmp {
1472 description
1473 "Setting maximum number of ECMP paths.";
1474 }
1475 feature multi-topology {
1476 description
1477 "Support for Multiple-Topology Routing (MTR).";
1478 reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS";
1479 }
1480 feature nlpid-control {
1481 description
1482 "This feature controls the advertisement
1483 of support NLPID within IS-IS configuration.";
1484 }
1485 feature graceful-restart {
1486 description
1487 "IS-IS Graceful restart support.";
1488 reference "RFC5306 - Restart Signaling in IS-IS";
1489 }
1491 feature lsp-refresh {
1492 description
1493 "Configuration of LSP refresh interval.";
1494 }
1496 feature maximum-area-addresses {
1497 description
1498 "Support of maximum-area-addresses config.";
1499 }
1501 feature admin-control {
1502 description
1503 "Administrative control of the protocol state.";
1504 }
1506 /* Type definitions */
1508 typedef circuit-id {
1509 type uint8;
1510 description
1511 "This type defines the circuit ID
1512 associated with an interface.";
1513 }
1515 typedef extended-circuit-id {
1516 type uint32;
1517 description
1518 "This type defines the extended circuit ID
1519 associated with an interface.";
1520 }
1522 typedef interface-type {
1523 type enumeration {
1524 enum broadcast {
1525 description
1526 "Broadcast interface type.";
1527 }
1528 enum point-to-point {
1529 description
1530 "Point-to-point interface type.";
1531 }
1532 }
1533 description
1534 "This type defines the type of adjacency
1535 to be established on the interface.
1536 The interface-type determines the type
1537 of hello message that is used.";
1539 }
1541 typedef level {
1542 type enumeration {
1543 enum "level-1" {
1544 description
1545 "This enum indicates L1-only capability.";
1546 }
1547 enum "level-2" {
1548 description
1549 "This enum indicates L2-only capability.";
1550 }
1551 enum "level-all" {
1552 description
1553 "This enum indicates capability for both levels.";
1554 }
1555 }
1556 default "level-all";
1557 description
1558 "This type defines IS-IS level of an object.";
1560 }
1562 typedef adj-state-type {
1563 type enumeration {
1564 enum "up" {
1565 description
1566 "State indicates the adjacency is established.";
1567 }
1568 enum "down" {
1569 description
1570 "State indicates the adjacency is NOT established.";
1571 }
1572 enum "init" {
1573 description
1574 "State indicates the adjacency is establishing.";
1575 }
1576 enum "failed" {
1577 description
1578 "State indicates the adjacency is failed.";
1579 }
1580 }
1581 description
1582 "This type defines states of an adjacency";
1583 }
1585 typedef if-state-type {
1586 type enumeration {
1587 enum "up" {
1588 description "Up state.";
1590 }
1591 enum "down" {
1592 description "Down state";
1593 }
1594 }
1595 description
1596 "This type defines the state of an interface";
1597 }
1599 typedef level-number {
1600 type uint8 {
1601 range "1 .. 2";
1602 }
1603 description
1604 "This type defines the current IS-IS level.";
1605 }
1607 typedef lsp-id {
1608 type string {
1609 pattern
1610 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
1611 +'{4}\.[0-9][0-9]-[0-9][0-9]';
1612 }
1613 description
1614 "This type defines the IS-IS LSP ID format using a
1615 pattern. An example LSP ID is 0143.0438.AEF0.02-01";
1616 }
1618 typedef area-address {
1619 type string {
1620 pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}';
1621 }
1622 description
1623 "This type defines the area address format.";
1624 }
1626 typedef snpa {
1627 type string {
1628 length "0 .. 20";
1630 }
1631 description
1632 "This type defines the Subnetwork Point
1633 of Attachment (SNPA) format.
1634 The SNPA should be encoded according to the rules
1635 specified for the particular type of subnetwork
1636 being used. As an example, for an ethernet subnetwork,
1637 the SNPA is encoded as a MAC address like
1638 '00aa.bbcc.ddee'.";
1639 }
1641 typedef system-id {
1642 type string {
1643 pattern
1644 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}';
1645 }
1646 description
1647 "This type defines IS-IS system-id using pattern,
1648 An example system-id is 0143.0438.AEF0";
1649 }
1650 typedef extended-system-id {
1651 type string {
1652 pattern
1653 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.'
1654 +'[0-9][0-9]';
1655 }
1656 description
1657 "This type defines IS-IS system-id using pattern. The extended
1658 system-id contains the pseudonode number in addition to the
1659 system-id.
1660 An example system-id is 0143.0438.AEF0.00";
1661 }
1663 typedef wide-metric {
1664 type uint32 {
1665 range "0 .. 16777215";
1666 }
1667 description
1668 "This type defines wide style format of IS-IS metric.";
1669 }
1671 typedef std-metric {
1672 type uint8 {
1673 range "0 .. 63";
1674 }
1675 description
1676 "This type defines old style format of IS-IS metric.";
1677 }
1678 typedef mesh-group-state {
1679 type enumeration {
1680 enum "mesh-inactive" {
1681 description
1682 "Interface is not part of a mesh group.";
1683 }
1684 enum "mesh-set" {
1685 description
1686 "Interface is part of a mesh group.";
1687 }
1688 enum "mesh-blocked" {
1689 description
1690 "LSPs must not be flooded over this interface.";
1691 }
1692 }
1693 description
1694 "This type describes mesh group state of an interface";
1695 }
1697 /* Grouping for notifications */
1699 grouping notification-instance-hdr {
1700 description
1701 "Instance specific IS-IS notification data grouping";
1702 leaf routing-protocol-name {
1703 type leafref {
1704 path "/rt:routing/rt:control-plane-protocols/"
1705 + "rt:control-plane-protocol/rt:name";
1706 }
1707 description "Name of the IS-IS instance.";
1708 }
1709 leaf isis-level {
1710 type level;
1711 description "IS-IS level of the instance.";
1712 }
1713 }
1715 grouping notification-interface-hdr {
1716 description
1717 "Interface specific IS-IS notification data grouping";
1718 leaf interface-name {
1719 type if:interface-ref;
1720 description "IS-IS interface name";
1721 }
1722 leaf interface-level {
1723 type level;
1724 description "IS-IS level of the interface.";
1725 }
1726 leaf extended-circuit-id {
1727 type extended-circuit-id;
1728 description "Extended circuit-id of the interface.";
1729 }
1730 }
1732 /* Groupings for IP Fast Reroute */
1734 grouping instance-fast-reroute-config {
1735 description
1736 "This group defines global configuration of IP
1737 Fast ReRoute (FRR).";
1738 container fast-reroute {
1739 if-feature fast-reroute;
1740 description
1741 "This container may be augmented with global
1742 parameters for IP-FRR.";
1743 container lfa {
1744 if-feature lfa;
1745 description
1746 "This container may be augmented with
1747 global parameters for Loop-Free Alternatives (LFA).
1748 Container creation has no effect on LFA activation.";
1749 }
1750 }
1751 }
1753 grouping interface-lfa-config {
1754 leaf candidate-enable {
1755 type boolean;
1756 default "true";
1757 description
1758 "Enable the interface to be used as backup.";
1759 }
1760 leaf enable {
1761 type boolean;
1762 default false;
1763 description
1764 "Activates LFA - Per-prefix LFA computation
1765 is assumed.";
1766 }
1767 container remote-lfa {
1768 if-feature remote-lfa;
1769 leaf enable {
1770 type boolean;
1771 default false;
1772 description
1773 "Activates Remote LFA (R-LFA).";
1774 }
1775 description
1776 "Remote LFA configuration.";
1777 }
1778 description "Grouping for LFA interface configuration";
1779 }
1780 grouping interface-fast-reroute-config {
1781 description
1782 "This group defines interface configuration of IP-FRR.";
1783 container fast-reroute {
1784 if-feature fast-reroute;
1785 container lfa {
1786 if-feature lfa;
1787 uses interface-lfa-config;
1788 container level-1 {
1789 uses interface-lfa-config;
1790 description
1791 "LFA level 1 config";
1792 }
1793 container level-2 {
1794 uses interface-lfa-config;
1795 description
1796 "LFA level 2 config";
1797 }
1798 description
1799 "LFA configuration.";
1800 }
1801 description
1802 "Interface IP Fast-reroute configuration.";
1803 }
1804 }
1805 grouping instance-fast-reroute-state {
1806 description "IPFRR state data grouping";
1807 container protected-routes {
1808 config false;
1809 list address-family-stats {
1810 key "address-family prefix alternate";
1812 leaf address-family {
1813 type iana-rt-types:address-family;
1814 description
1815 "Address-family";
1816 }
1817 leaf prefix {
1818 type inet:ip-prefix;
1819 description
1820 "Protected prefix.";
1822 }
1823 leaf alternate {
1824 type inet:ip-address;
1825 description
1826 "Alternate next hop for the prefix.";
1827 }
1828 leaf alternate-type {
1829 type enumeration {
1830 enum equal-cost {
1831 description
1832 "ECMP alternate.";
1833 }
1834 enum lfa {
1835 description
1836 "LFA alternate.";
1837 }
1838 enum remote-lfa {
1839 description
1840 "Remote LFA alternate.";
1841 }
1842 enum tunnel {
1843 description
1844 "Tunnel based alternate
1845 (like RSVP-TE or GRE).";
1846 }
1847 enum ti-lfa {
1848 description
1849 "TI-LFA alternate.";
1850 }
1851 enum mrt {
1852 description
1853 "MRT alternate.";
1854 }
1855 enum other {
1856 description
1857 "Unknown alternate type.";
1858 }
1859 }
1860 description
1861 "Type of alternate.";
1862 }
1863 leaf best {
1864 type boolean;
1865 description
1866 "Is set when the alternate is the preferred one,
1867 is unset otherwise.";
1868 }
1869 leaf non-best-reason {
1870 type string {
1871 length "1..255";
1872 }
1873 description
1874 "Information field to describe why the alternate
1875 is not best. The length should be limited to 255
1876 unicode characters. The expected format is a single
1877 line text.";
1878 }
1879 container protection-available {
1880 leaf-list protection-types {
1881 type identityref {
1882 base frr-protection-available-type;
1883 }
1884 description "This list contains a set of protection
1885 types defined as identities.
1886 An identity must be added for each type of
1887 protection provided by the alternate.
1888 As an example, if an alternate provides
1889 SRLG, node and link protection, three
1890 identities must be added in this list:
1891 one for SRLG protection, one for node
1892 protection, one for link protection.";
1893 }
1894 description "Protection types provided by the alternate.";
1895 }
1896 leaf alternate-metric1 {
1897 type uint32;
1898 description
1899 "Metric from Point of Local Repair (PLR) to
1900 destination through the alternate path.";
1901 }
1902 leaf alternate-metric2 {
1903 type uint32;
1904 description
1905 "Metric from PLR to the alternate node";
1906 }
1907 leaf alternate-metric3 {
1908 type uint32;
1909 description
1910 "Metric from alternate node to the destination";
1911 }
1912 description
1913 "Per-AF protected prefix statistics.";
1914 }
1915 description
1916 "List of prefixes that are protected.";
1917 }
1918 container unprotected-routes {
1919 config false;
1920 list address-family-stats {
1921 key "address-family prefix";
1923 leaf address-family {
1924 type iana-rt-types:address-family;
1926 description "Address-family";
1927 }
1928 leaf prefix {
1929 type inet:ip-prefix;
1930 description "Unprotected prefix.";
1931 }
1932 description
1933 "Per AF unprotected prefix statistics.";
1934 }
1935 description
1936 "List of prefixes that are not protected.";
1937 }
1939 list protection-statistics {
1940 key frr-protection-method;
1941 config false;
1942 leaf frr-protection-method {
1943 type identityref {
1944 base frr-protection-method;
1945 }
1946 description "Protection method used.";
1947 }
1948 list address-family-stats {
1949 key address-family;
1951 leaf address-family {
1952 type iana-rt-types:address-family;
1954 description "Address-family";
1955 }
1956 leaf total-routes {
1957 type uint32;
1958 description "Total prefixes.";
1959 }
1960 leaf unprotected-routes {
1961 type uint32;
1962 description
1963 "Total prefixes that are not protected.";
1964 }
1965 leaf protected-routes {
1966 type uint32;
1967 description
1968 "Total prefixes that are protected.";
1969 }
1970 leaf linkprotected-routes {
1971 type uint32;
1972 description
1973 "Total prefixes that are link protected.";
1974 }
1975 leaf nodeprotected-routes {
1976 type uint32;
1977 description
1978 "Total prefixes that are node protected.";
1979 }
1980 description
1981 "Per AF protected prefix statistics.";
1982 }
1984 description "Global protection statistics.";
1985 }
1986 }
1988 /* Route table and local RIB groupings */
1990 grouping local-rib {
1991 description "Local-rib - RIB for Routes computed by the local
1992 IS-IS routing instance.";
1993 container local-rib {
1994 config false;
1995 description "Local-rib.";
1996 list route {
1997 key "prefix";
1998 description "Routes";
1999 leaf prefix {
2000 type inet:ip-prefix;
2001 description "Destination prefix.";
2002 }
2003 container next-hops {
2004 description "Next hops for the route.";
2005 list next-hop {
2006 key "next-hop";
2007 description "List of next hops for the route";
2008 leaf outgoing-interface {
2009 type if:interface-ref;
2010 description
2011 "Name of the outgoing interface.";
2012 }
2013 leaf next-hop {
2014 type inet:ip-address;
2015 description "Next hop address.";
2016 }
2017 }
2018 }
2019 leaf metric {
2020 type uint32;
2021 description "Metric for this route.";
2022 }
2023 leaf level {
2024 type level-number;
2025 description "Level number for this route.";
2026 }
2027 leaf route-tag {
2028 type uint32;
2029 description "Route tag for this route.";
2030 }
2031 }
2032 }
2033 }
2035 grouping route-content {
2036 description
2037 "IS-IS protocol-specific route properties grouping.";
2038 leaf metric {
2039 type uint32;
2040 description "IS-IS metric of a route.";
2041 }
2042 leaf-list tag {
2043 type uint64;
2044 description
2045 "List of tags associated with the route. The leaf
2046 describes both 32-bit and 64-bit tags.";
2047 }
2048 leaf route-type {
2049 type enumeration {
2050 enum l2-intra-area {
2051 description "Level 2 internal route. As per RFC5302,
2052 the prefix is directly connected to the
2053 advertising router. It cannot be
2054 distinguished from an L1->L2 inter-area
2055 route.";
2056 }
2057 enum l1-intra-area {
2058 description "Level 1 internal route. As per RFC5302,
2059 the prefix is directly connected to the
2060 advertising router.";
2061 }
2062 enum l2-external {
2063 description "Level 2 external route. As per RFC5302,
2064 such a route is learned from other IGPs.
2065 It cannot be distinguished from an L1->L2
2066 inter-area external route.";
2067 }
2068 enum l1-external {
2069 description "Level 1 external route. As per RFC5302,
2070 such a route is learned from other IGPs.";
2071 }
2072 enum l1-inter-area {
2073 description "These prefixes are learned via L2 routing.";
2074 }
2075 enum l1-inter-area-external {
2076 description "These prefixes are learned via L2 routing
2077 towards an l2-external route.";
2078 }
2079 }
2080 description "IS-IS route type.";
2081 }
2082 }
2084 /* Grouping definitions for configuration and ops state */
2086 grouping adjacency-state {
2087 container adjacencies {
2088 config false;
2089 list adjacency {
2090 leaf neighbor-sys-type {
2091 type level;
2092 description
2093 "Level capability of neighboring system";
2094 }
2095 leaf neighbor-sysid {
2096 type system-id;
2097 description
2098 "The system-id of the neighbor";
2099 }
2100 leaf neighbor-extended-circuit-id {
2101 type extended-circuit-id;
2102 description
2103 "Circuit ID of the neighbor";
2104 }
2105 leaf neighbor-snpa {
2106 type snpa;
2107 description
2108 "SNPA of the neighbor";
2109 }
2110 leaf usage {
2111 type level;
2112 description
2113 "Define the level(s) activated on the adjacency.
2114 On a p2p link this might be level 1 and 2,
2115 but on a LAN, the usage will be level 1
2116 between neighbors at level 1 or level 2 between
2117 neighbors at level 2.";
2118 }
2119 leaf hold-timer {
2120 type rt-types:timer-value-seconds16;
2121 units seconds;
2122 description
2123 "The holding time in seconds for this
2124 adjacency. This value is based on
2125 received hello PDUs and the elapsed
2126 time since receipt.";
2127 }
2128 leaf neighbor-priority {
2129 type uint8 {
2130 range "0 .. 127";
2131 }
2132 description
2133 "Priority of the neighboring IS for becoming
2134 the DIS.";
2135 }
2136 leaf lastuptime {
2137 type yang:timestamp;
2138 description
2139 "When the adjacency most recently entered
2140 state 'up', measured in hundredths of a
2141 second since the last reinitialization of
2142 the network management subsystem.
2143 The value is 0 if the adjacency has never
2144 been in state 'up'.";
2145 }
2146 leaf state {
2147 type adj-state-type;
2148 description
2149 "This leaf describes the state of the interface.";
2150 }
2152 description
2153 "List of operational adjacencies.";
2154 }
2155 description
2156 "This container lists the adjacencies of
2157 the local node.";
2158 }
2159 description
2160 "Adjacency state";
2161 }
2163 grouping admin-control {
2164 leaf enable {
2165 if-feature admin-control;
2166 type boolean;
2167 default "true";
2168 description
2169 "Enable/Disable the protocol.";
2170 }
2171 description
2172 "Grouping for admin control.";
2173 }
2175 grouping ietf-spf-delay {
2176 leaf initial-delay {
2177 type rt-types:timer-value-milliseconds;
2178 units msec;
2179 description
2180 "Delay used while in QUIET state (milliseconds).";
2181 }
2182 leaf short-delay {
2183 type rt-types:timer-value-milliseconds;
2184 units msec;
2185 description
2186 "Delay used while in SHORT_WAIT state (milliseconds).";
2187 }
2188 leaf long-delay {
2189 type rt-types:timer-value-milliseconds;
2190 units msec;
2191 description
2192 "Delay used while in LONG_WAIT state (milliseconds).";
2193 }
2195 leaf hold-down {
2196 type rt-types:timer-value-milliseconds;
2197 units msec;
2198 description
2199 "Timer used to consider an IGP stability period
2200 (milliseconds).";
2201 }
2202 leaf time-to-learn {
2203 type rt-types:timer-value-milliseconds;
2204 units msec;
2205 description
2206 "Duration used to learn all the IGP events
2207 related to a single component failure (milliseconds).";
2208 }
2209 leaf current-state {
2210 type enumeration {
2211 enum "quiet" {
2212 description "QUIET state";
2213 }
2214 enum "short-wait" {
2215 description "SHORT_WAIT state";
2216 }
2217 enum "long-wait" {
2218 description "LONG_WAIT state";
2219 }
2220 }
2221 config false;
2222 description
2223 "Current SPF back-off algorithm state.";
2224 }
2225 leaf remaining-time-to-learn {
2226 type rt-types:timer-value-milliseconds;
2227 units "msec";
2228 config false;
2229 description
2230 "Remaining time until time-to-learn timer fires.";
2231 }
2232 leaf remaining-hold-down {
2233 type rt-types:timer-value-milliseconds;
2234 units "msec";
2235 config false;
2236 description
2237 "Remaining time until hold-down timer fires.";
2238 }
2239 leaf last-event-received {
2240 type yang:timestamp;
2241 config false;
2242 description
2243 "Time of last IGP event received";
2244 }
2245 leaf next-spf-time {
2246 type yang:timestamp;
2247 config false;
2248 description
2249 "Time when next SPF has been scheduled.";
2250 }
2251 leaf last-spf-time {
2252 type yang:timestamp;
2253 config false;
2254 description
2255 "Time of last SPF computation.";
2256 }
2257 description
2258 "Grouping for IETF SPF delay configuration and state.";
2259 }
2261 grouping node-tag-config {
2262 description
2263 "IS-IS node tag config state.";
2264 container node-tags {
2265 if-feature node-tag;
2266 list node-tag {
2267 key tag;
2268 leaf tag {
2269 type uint32;
2270 description
2271 "Node tag value.";
2272 }
2273 description
2274 "List of tags.";
2275 }
2276 description
2277 "Container for node admin tags.";
2278 }
2279 }
2281 grouping authentication-global-cfg {
2282 choice authentication-type {
2283 case key-chain {
2284 if-feature key-chain;
2285 leaf key-chain {
2286 type key-chain:key-chain-ref;
2287 description
2288 "Reference to a key-chain.";
2289 }
2290 }
2291 case password {
2292 leaf key {
2293 type string;
2294 description
2295 "This leaf specifies the authentication key. The
2296 length of the key may be dependent on the
2297 cryptographic algorithm.";
2299 }
2300 leaf crypto-algorithm {
2301 type identityref {
2302 base key-chain:crypto-algorithm;
2303 }
2304 description
2305 "Cryptographic algorithm associated with key.";
2306 }
2307 }
2308 description "Choice of authentication.";
2309 }
2310 description "Grouping for global authentication config.";
2311 }
2313 grouping metric-type-global-cfg {
2314 leaf value {
2315 type enumeration {
2316 enum wide-only {
2317 description
2318 "Advertise new metric style only (RFC5305)";
2319 }
2320 enum old-only {
2321 description
2322 "Advertise old metric style only (RFC1195)";
2323 }
2324 enum both {
2325 description "Advertise both metric styles";
2326 }
2327 }
2328 default wide-only;
2329 description
2330 "Type of metric to be generated:
2331 - wide-only means only new metric style
2332 is generated,
2333 - old-only means that only old-style metric
2334 is generated,
2335 - both means that both are advertised.
2336 This leaf is only affecting IPv4 metrics.";
2337 }
2338 description
2339 "Grouping for global metric style config.";
2340 }
2342 grouping default-metric-global-cfg {
2343 leaf value {
2344 type wide-metric;
2345 default "10";
2346 description "Value of the metric";
2348 }
2349 description
2350 "Global default metric config grouping.";
2351 }
2353 grouping overload-global-cfg {
2354 leaf status {
2355 type boolean;
2356 default false;
2357 description
2358 "This leaf specifies the overload status.";
2359 }
2360 description "Grouping for overload bit config.";
2361 }
2363 grouping overload-max-metric-global-cfg {
2364 leaf timeout {
2365 type rt-types:timer-value-seconds16;
2366 units "seconds";
2367 description
2368 "Timeout (in seconds) of the overload condition.";
2369 }
2370 description
2371 "Overload maximum metric configuration grouping";
2372 }
2374 grouping route-preference-global-cfg {
2375 choice granularity {
2376 case detail {
2377 leaf internal {
2378 type uint8;
2379 description
2380 "Protocol preference for internal routes.";
2381 }
2382 leaf external {
2383 type uint8;
2384 description
2385 "Protocol preference for external routes.";
2386 }
2387 }
2388 case coarse {
2389 leaf default {
2390 type uint8;
2391 description
2392 "Protocol preference for all IS-IS routes.";
2393 }
2394 }
2395 description
2396 "Choice for implementation of route preference.";
2397 }
2398 description
2399 "Global route preference grouping";
2400 }
2402 grouping hello-authentication-cfg {
2403 choice authentication-type {
2404 case key-chain {
2405 if-feature key-chain;
2406 leaf key-chain {
2407 type key-chain:key-chain-ref;
2408 description "Reference to a key-chain.";
2409 }
2410 }
2411 case password {
2412 leaf key {
2413 type string;
2414 description "Authentication key specification - The
2415 length of the key may be dependent on the
2416 cryptographic algorithm.";
2417 }
2418 leaf crypto-algorithm {
2419 type identityref {
2420 base key-chain:crypto-algorithm;
2421 }
2422 description
2423 "Cryptographic algorithm associated with key.";
2424 }
2425 }
2426 description "Choice of authentication.";
2427 }
2428 description "Grouping for hello authentication.";
2429 }
2431 grouping hello-interval-cfg {
2432 leaf value {
2433 type rt-types:timer-value-seconds16;
2434 units "seconds";
2435 default 10;
2436 description
2437 "Interval (in seconds) between successive hello
2438 messages.";
2439 }
2441 description "Interval between hello messages.";
2442 }
2443 grouping hello-multiplier-cfg {
2444 leaf value {
2445 type uint16;
2446 default 3;
2447 description
2448 "Number of missed hello messages prior to
2449 declaring the adjacency down.";
2450 }
2451 description
2452 "Number of missed hello messages prior to
2453 adjacency down grouping.";
2454 }
2456 grouping priority-cfg {
2457 leaf value {
2458 type uint8 {
2459 range "0 .. 127";
2460 }
2461 default 64;
2462 description
2463 "Priority of interface for DIS election.";
2464 }
2466 description "Interface DIS election priority grouping";
2467 }
2469 grouping metric-cfg {
2470 leaf value {
2471 type wide-metric;
2472 default "10";
2473 description "Metric value.";
2474 }
2475 description "Interface metric grouping";
2476 }
2478 grouping metric-parameters {
2479 container metric-type {
2480 uses metric-type-global-cfg;
2481 container level-1 {
2482 uses metric-type-global-cfg;
2483 description "level-1 specific configuration";
2484 }
2485 container level-2 {
2486 uses metric-type-global-cfg;
2487 description "level-2 specific configuration";
2488 }
2489 description "Metric style global configuration";
2491 }
2493 container default-metric {
2494 uses default-metric-global-cfg;
2495 container level-1 {
2496 uses default-metric-global-cfg;
2497 description "level-1 specific configuration";
2498 }
2499 container level-2 {
2500 uses default-metric-global-cfg;
2501 description "level-2 specific configuration";
2502 }
2503 description "Default metric global configuration";
2504 }
2505 container auto-cost {
2506 if-feature auto-cost;
2507 description
2508 "Interface Auto-cost configuration state.";
2509 leaf enable {
2510 type boolean;
2511 description
2512 "Enable/Disable interface auto-cost.";
2513 }
2514 leaf reference-bandwidth {
2515 when "../enable = 'true'" {
2516 description "Only when auto cost is enabled";
2517 }
2518 type uint32 {
2519 range "1..4294967";
2520 }
2521 units Mbits;
2522 description
2523 "Configure reference bandwidth used to automatically
2524 determine interface cost (Mbits). The cost is the
2525 reference bandwidth divided by the interface speed
2526 with 1 being the minimum cost.";
2527 }
2528 }
2530 description "Grouping for global metric parameters.";
2531 }
2533 grouping high-availability-parameters {
2534 container graceful-restart {
2535 if-feature graceful-restart;
2536 leaf enable {
2537 type boolean;
2538 default false;
2539 description "Enable graceful restart.";
2540 }
2541 leaf restart-interval {
2542 type rt-types:timer-value-seconds16;
2543 units "seconds";
2544 description
2545 "Interval (in seconds) to attempt graceful restart prior
2546 to failure.";
2547 }
2548 leaf helper-enable {
2549 type boolean;
2550 default "true";
2551 description
2552 "Enable local IS-IS router as graceful restart helper.";
2553 }
2554 description "Graceful-Restart Configuration.";
2555 }
2556 container nsr {
2557 if-feature nsr;
2558 description "Non-Stop Routing (NSR) configuration.";
2559 leaf enable {
2560 type boolean;
2561 default false;
2562 description "Enable/Disable Non-Stop Routing (NSR).";
2563 }
2564 }
2565 description "Grouping for High Availability parameters.";
2566 }
2568 grouping authentication-parameters {
2569 container authentication {
2570 uses authentication-global-cfg;
2572 container level-1 {
2573 uses authentication-global-cfg;
2574 description "level-1 specific configuration";
2575 }
2576 container level-2 {
2577 uses authentication-global-cfg;
2578 description "level-2 specific configuration";
2579 }
2580 description "Authentication global configuration for
2581 both LSPs and SNPs.";
2582 }
2583 description "Grouping for authentication parameters";
2584 }
2585 grouping address-family-parameters {
2586 container address-families {
2587 if-feature nlpid-control;
2588 list address-family-list {
2589 key address-family;
2590 leaf address-family {
2591 type iana-rt-types:address-family;
2592 description "Address-family";
2593 }
2594 leaf enable {
2595 type boolean;
2596 description "Activate the address family.";
2597 }
2598 description
2599 "List of address families and whether or not they
2600 are activated.";
2601 }
2602 description "Address Family configuration";
2603 }
2604 description "Grouping for address family parameters.";
2605 }
2607 grouping mpls-parameters {
2608 container mpls {
2609 container te-rid {
2610 if-feature te-rid;
2611 description
2612 "Stable ISIS Router IP Address used for Traffic
2613 Engineering";
2614 leaf ipv4-router-id {
2615 type inet:ipv4-address;
2616 description
2617 "Router ID value that would be used in TLV 134.";
2618 }
2619 leaf ipv6-router-id {
2620 type inet:ipv6-address;
2621 description
2622 "Router ID value that would be used in TLV 140.";
2623 }
2624 }
2625 container ldp {
2626 container igp-sync {
2627 if-feature ldp-igp-sync;
2628 description
2629 "This container may be augmented with global
2630 parameters for igp-ldp-sync.";
2631 }
2632 description "LDP configuration.";
2633 }
2634 description "MPLS configuration";
2636 }
2637 description "Grouping for MPLS global parameters.";
2638 }
2640 grouping lsp-parameters {
2641 leaf lsp-mtu {
2642 type uint16;
2643 units "bytes";
2644 default 1492;
2645 description
2646 "Maximum size of an LSP PDU in bytes.";
2647 }
2648 leaf lsp-lifetime {
2649 type uint16 {
2650 range "1..65535";
2651 }
2652 units "seconds";
2653 description
2654 "Lifetime of the router's LSPs in seconds.";
2655 }
2656 leaf lsp-refresh {
2657 if-feature lsp-refresh;
2658 type rt-types:timer-value-seconds16;
2659 units "seconds";
2660 description
2661 "Refresh interval of the router's LSPs in seconds.";
2662 }
2663 leaf poi-tlv {
2664 if-feature poi-tlv;
2665 type boolean;
2666 default false;
2667 description
2668 "Enable advertisement of IS-IS purge TLV.";
2669 }
2670 description "Grouping for LSP global parameters.";
2671 }
2672 grouping spf-parameters {
2673 container spf-control {
2674 leaf paths {
2675 if-feature max-ecmp;
2676 type uint16 {
2677 range "1..32";
2678 }
2679 description
2680 "Maximum number of Equal-Cost Multi-Path (ECMP) paths.";
2681 }
2682 container ietf-spf-delay {
2683 if-feature ietf-spf-delay;
2684 uses ietf-spf-delay;
2685 description "IETF SPF delay algorithm configuration.";
2686 }
2687 description
2688 "SPF calculation control.";
2689 }
2690 description "Grouping for SPF global parameters.";
2691 }
2692 grouping instance-config {
2693 description "IS-IS global configuration grouping";
2695 uses admin-control;
2697 leaf level-type {
2698 type level;
2699 default "level-all";
2700 description
2701 "Level of an IS-IS node - can be level-1,
2702 level-2 or level-all.";
2703 }
2705 leaf system-id {
2706 type system-id;
2707 description "system-id of the node.";
2708 }
2710 leaf maximum-area-addresses {
2711 if-feature maximum-area-addresses;
2712 type uint8;
2713 default 3;
2714 description "Maximum areas supported.";
2715 }
2717 leaf-list area-address {
2718 type area-address;
2719 description
2720 "List of areas supported by the protocol instance.";
2721 }
2723 uses lsp-parameters;
2724 uses high-availability-parameters;
2725 uses node-tag-config;
2726 uses metric-parameters;
2727 uses authentication-parameters;
2728 uses address-family-parameters;
2729 uses mpls-parameters;
2730 uses spf-parameters;
2731 uses instance-fast-reroute-config;
2732 container preference {
2733 uses route-preference-global-cfg;
2734 description "Router preference configuration for IS-IS
2735 protocol instance route installation";
2736 }
2738 container overload {
2739 uses overload-global-cfg;
2740 description "Router protocol instance overload state
2741 configuration";
2742 }
2744 container overload-max-metric {
2745 if-feature overload-max-metric;
2746 uses overload-max-metric-global-cfg;
2747 description
2748 "Router protocol instance overload maximum
2749 metric advertisement configuration.";
2750 }
2751 }
2753 grouping instance-state {
2754 description
2755 "IS-IS instance operational state.";
2756 uses spf-log;
2757 uses lsp-log;
2758 uses hostname-db;
2759 uses lsdb;
2760 uses local-rib;
2761 uses system-counters;
2762 uses instance-fast-reroute-state;
2763 leaf discontinuity-time {
2764 type yang:date-and-time;
2765 description
2766 "The time on the most recent occasion at which any one
2767 or more of this IS-IS instance's counters suffered a
2768 discontinuity. If no such discontinuities have occurred
2769 since the IS-IS instance was last re-initialized, then
2770 this node contains the time the IS-IS instance was
2771 re-initialized which normally occurs when it was
2772 created.";
2773 }
2774 }
2776 grouping multi-topology-config {
2777 description "Per-topology configuration";
2778 container default-metric {
2779 uses default-metric-global-cfg;
2780 container level-1 {
2781 uses default-metric-global-cfg;
2782 description "level-1 specific configuration";
2783 }
2784 container level-2 {
2785 uses default-metric-global-cfg;
2786 description "level-2 specific configuration";
2787 }
2788 description "Default metric per-topology configuration";
2789 }
2790 uses node-tag-config;
2791 }
2793 grouping interface-config {
2794 description "Interface configuration grouping";
2796 uses admin-control;
2798 leaf level-type {
2799 type level;
2800 default "level-all";
2801 description "IS-IS level of the interface.";
2802 }
2803 leaf lsp-pacing-interval {
2804 type rt-types:timer-value-milliseconds;
2805 units "milliseconds";
2806 default 33;
2807 description
2808 "Interval (in milli-seconds) between LSP
2809 transmissions.";
2810 }
2811 leaf lsp-retransmit-interval {
2812 type rt-types:timer-value-seconds16;
2813 units "seconds";
2814 description
2815 "Interval (in seconds) between LSP
2816 retransmissions.";
2817 }
2818 leaf passive {
2819 type boolean;
2820 default "false";
2821 description
2822 "Indicates whether the interface is in passive mode (IS-IS
2823 not running but network is advertised).";
2824 }
2825 leaf csnp-interval {
2826 type rt-types:timer-value-seconds16;
2827 units "seconds";
2828 default 10;
2829 description
2830 "Interval (in seconds) between CSNP messages.";
2831 }
2832 container hello-padding {
2833 leaf enable {
2834 type boolean;
2835 default "true";
2836 description
2837 "IS-IS Hello-padding activation - enabled by default.";
2838 }
2839 description "IS-IS hello padding configuration.";
2840 }
2841 leaf mesh-group-enable {
2842 type mesh-group-state;
2843 description "IS-IS interface mesh-group state";
2844 }
2845 leaf mesh-group {
2846 when "../mesh-group-enable = 'mesh-set'" {
2847 description
2848 "Only valid when mesh-group-enable equals mesh-set";
2849 }
2850 type uint8;
2851 description "IS-IS interface mesh-group ID.";
2852 }
2853 leaf interface-type {
2854 type interface-type;
2855 default "broadcast";
2856 description
2857 "Type of adjacency to be established on the interface. This
2858 dictates the type of hello messages that are used.";
2859 }
2861 leaf-list tag {
2862 if-feature prefix-tag;
2863 type uint32;
2864 description
2865 "List of tags associated with the interface.";
2866 }
2867 leaf-list tag64 {
2868 if-feature prefix-tag64;
2869 type uint64;
2870 description
2871 "List of 64-bit tags associated with the interface.";
2872 }
2873 leaf node-flag {
2874 if-feature node-flag;
2875 type boolean;
2876 default false;
2877 description
2878 "Set prefix as a node representative prefix.";
2879 }
2880 container hello-authentication {
2881 uses hello-authentication-cfg;
2882 container level-1 {
2883 uses hello-authentication-cfg;
2884 description "level-1 specific configuration";
2885 }
2886 container level-2 {
2887 uses hello-authentication-cfg;
2888 description "level-2 specific configuration";
2889 }
2890 description
2891 "Authentication type to be used in hello messages.";
2892 }
2893 container hello-interval {
2894 uses hello-interval-cfg;
2895 container level-1 {
2896 uses hello-interval-cfg;
2897 description "level-1 specific configuration";
2898 }
2899 container level-2 {
2900 uses hello-interval-cfg;
2901 description "level-2 specific configuration";
2902 }
2903 description "Interval between hello messages.";
2904 }
2905 container hello-multiplier {
2906 uses hello-multiplier-cfg;
2907 container level-1 {
2908 uses hello-multiplier-cfg;
2909 description "level-1 specific configuration";
2910 }
2911 container level-2 {
2912 uses hello-multiplier-cfg;
2913 description "level-2 specific configuration";
2914 }
2915 description "Hello multiplier configuration.";
2916 }
2917 container priority {
2918 must '../interface-type = "broadcast"' {
2919 error-message
2920 "Priority only applies to broadcast interfaces.";
2921 description "Check for broadcast interface.";
2922 }
2923 uses priority-cfg;
2924 container level-1 {
2925 uses priority-cfg;
2926 description "level-1 specific configuration";
2927 }
2928 container level-2 {
2929 uses priority-cfg;
2930 description "level-2 specific configuration";
2931 }
2932 description "Priority for DIS election.";
2933 }
2934 container metric {
2935 uses metric-cfg;
2936 container level-1 {
2937 uses metric-cfg;
2938 description "level-1 specific configuration";
2939 }
2940 container level-2 {
2941 uses metric-cfg;
2942 description "level-2 specific configuration";
2943 }
2944 description "Metric configuration.";
2945 }
2946 container bfd {
2947 if-feature bfd;
2948 description "BFD Client Configuration.";
2949 uses bfd-types:client-cfg-parms;
2951 reference "RFC YYYY - YANG Data Model for Bidirectional
2952 Forwarding Detection (BFD).
2954 -- Note to RFC Editor Please replace YYYY with published FC
2955 number for draft-ietf-bfd-yang.";
2957 }
2958 container address-families {
2959 if-feature nlpid-control;
2960 list address-family-list {
2961 key address-family;
2962 leaf address-family {
2963 type iana-rt-types:address-family;
2964 description "Address-family";
2965 }
2966 description "List of AFs.";
2967 }
2968 description "Interface address-families";
2969 }
2970 container mpls {
2971 container ldp {
2972 leaf igp-sync {
2973 if-feature ldp-igp-sync;
2974 type boolean;
2975 default false;
2976 description "Enables IGP/LDP synchronization";
2977 }
2978 description "LDP protocol related configuration.";
2979 }
2980 description "MPLS configuration for IS-IS interfaces";
2981 }
2982 uses interface-fast-reroute-config;
2983 }
2985 grouping multi-topology-interface-config {
2986 description "IS-IS interface topology configuration.";
2987 container metric {
2988 uses metric-cfg;
2989 container level-1 {
2990 uses metric-cfg;
2991 description "level-1 specific configuration";
2992 }
2993 container level-2 {
2994 uses metric-cfg;
2995 description "level-2 specific configuration";
2996 }
2997 description "Metric IS-IS interface configuration.";
2998 }
2999 }
3000 grouping interface-state {
3001 description
3002 "IS-IS interface operational state.";
3003 uses adjacency-state;
3004 uses event-counters;
3005 uses packet-counters;
3006 leaf discontinuity-time {
3007 type yang:date-and-time;
3008 description
3009 "The time on the most recent occasion at which any one
3010 or more of this IS-IS interfaces's counters suffered a
3011 discontinuity. If no such discontinuities have occurred
3012 since the IS-IS interface was last re-initialized, then
3013 this node contains the time the IS-IS interface was
3014 re-initialized which normally occurs when it was
3015 created.";
3016 }
3017 }
3019 /* Grouping for the hostname database */
3020 grouping hostname-db {
3021 container hostnames {
3022 config false;
3023 list hostname {
3024 key system-id;
3025 leaf system-id {
3026 type system-id;
3027 description
3028 "system-id associated with the hostname.";
3029 }
3030 leaf hostname {
3031 type string {
3032 length "1..255";
3033 }
3034 description
3035 "Hostname associated with the system-id
3036 as defined in RFC5301.";
3037 }
3038 description
3039 "List of system-id/hostname associations.";
3040 }
3041 description
3042 "Hostname to system-id mapping database.";
3043 }
3044 description
3045 "Grouping for hostname to system-id mapping database.";
3046 }
3048 /* Groupings for counters */
3050 grouping system-counters {
3051 container system-counters {
3052 config false;
3053 list level {
3054 key level;
3056 leaf level {
3057 type level-number;
3058 description "IS-IS level.";
3059 }
3060 leaf corrupted-lsps {
3061 type uint32;
3062 description
3063 "Number of corrupted in-memory LSPs detected.
3064 LSPs received from the wire with a bad
3065 checksum are silently dropped and not counted.
3066 LSPs received from the wire with parse errors
3067 are counted by lsp-errors.";
3069 }
3070 leaf authentication-type-fails {
3071 type uint32;
3072 description
3073 "Number of authentication type mismatches.";
3074 }
3075 leaf authentication-fails {
3076 type uint32;
3077 description
3078 "Number of authentication key failures.";
3079 }
3080 leaf database-overload {
3081 type uint32;
3082 description
3083 "Number of times the database has become
3084 overloaded.";
3085 }
3086 leaf own-lsp-purge {
3087 type uint32;
3088 description
3089 "Number of times a zero-aged copy of the system's
3090 own LSP is received from some other IS-IS node.";
3091 }
3092 leaf manual-address-drop-from-area {
3093 type uint32;
3094 description
3095 "Number of times a manual address
3096 has been dropped from the area.";
3097 }
3098 leaf max-sequence {
3099 type uint32;
3100 description
3101 "Number of times the system has attempted
3102 to exceed the maximum sequence number.";
3103 }
3104 leaf sequence-number-skipped {
3105 type uint32;
3106 description
3107 "Number of times a sequence number skip has
3108 occurred.";
3109 }
3110 leaf id-len-mismatch {
3111 type uint32;
3112 description
3113 "Number of times a PDU is received with a
3114 different value for the ID field length
3115 than that of the receiving system.";
3116 }
3117 leaf partition-changes {
3118 type uint32;
3119 description
3120 "Number of partition changes detected.";
3121 }
3122 leaf lsp-errors {
3123 type uint32;
3124 description
3125 "Number of LSPs with errors we have received.";
3126 }
3127 leaf spf-runs {
3128 type uint32;
3129 description
3130 "Number of times we ran SPF at this level.";
3131 }
3132 description
3133 "List of supported levels.";
3134 }
3135 description
3136 "List counters for the IS-IS protocol instance";
3137 }
3138 description
3139 "Grouping for IS-IS system counters";
3140 }
3142 grouping event-counters {
3143 container event-counters {
3144 config false;
3145 leaf adjacency-changes {
3146 type uint32;
3147 description
3148 "The number of times an adjacency state change has
3149 occurred on this interface.";
3150 }
3151 leaf adjacency-number {
3152 type uint32;
3153 description
3154 "The number of adjacencies on this interface.";
3155 }
3156 leaf init-fails {
3157 type uint32;
3158 description
3159 "The number of times initialization of this
3160 interface has failed. This counts events such
3161 as PPP NCP failures. Failures to form an
3162 adjacency are counted by adjacency-rejects.";
3163 }
3164 leaf adjacency-rejects {
3165 type uint32;
3166 description
3167 "The number of times an adjacency has been
3168 rejected on this interface.";
3169 }
3170 leaf id-len-mismatch {
3171 type uint32;
3172 description
3173 "The number of times an IS-IS PDU with an ID
3174 field length different from that for this
3175 system has been received on this interface.";
3176 }
3177 leaf max-area-addresses-mismatch {
3178 type uint32;
3179 description
3180 "The number of times an IS-IS PDU has been
3181 received on this interface with the
3182 max area address field differing from that of
3183 this system.";
3184 }
3185 leaf authentication-type-fails {
3186 type uint32;
3187 description
3188 "Number of authentication type mismatches.";
3189 }
3190 leaf authentication-fails {
3191 type uint32;
3192 description
3193 "Number of authentication key failures.";
3194 }
3195 leaf lan-dis-changes {
3196 type uint32;
3197 description
3198 "The number of times the DIS has changed on this
3199 interface at this level. If the interface type is
3200 point-to-point, the count is zero.";
3201 }
3202 description "IS-IS interface event counters.";
3203 }
3204 description
3205 "Grouping for IS-IS interface event counters";
3206 }
3208 grouping packet-counters {
3209 container packet-counters {
3210 config false;
3211 list level {
3212 key level;
3213 leaf level {
3214 type level-number;
3215 description "IS-IS level.";
3216 }
3217 container iih {
3218 leaf in {
3219 type uint32;
3220 description "Received IIH PDUs.";
3221 }
3222 leaf out {
3223 type uint32;
3224 description "Sent IIH PDUs.";
3225 }
3226 description "Number of IIH PDUs received/sent.";
3227 }
3228 container ish {
3229 leaf in {
3230 type uint32;
3231 description "Received ISH PDUs.";
3232 }
3233 leaf out {
3234 type uint32;
3235 description "Sent ISH PDUs.";
3236 }
3237 description
3238 "ISH PDUs received/sent.";
3239 }
3240 container esh {
3241 leaf in {
3242 type uint32;
3243 description "Received ESH PDUs.";
3244 }
3245 leaf out {
3246 type uint32;
3247 description "Sent ESH PDUs.";
3248 }
3249 description "Number of ESH PDUs received/sent.";
3250 }
3251 container lsp {
3252 leaf in {
3253 type uint32;
3254 description "Received LSP PDUs.";
3255 }
3256 leaf out {
3257 type uint32;
3258 description "Sent LSP PDUs.";
3259 }
3260 description "Number of LSP PDUs received/sent.";
3262 }
3263 container psnp {
3264 leaf in {
3265 type uint32;
3266 description "Received PSNP PDUs.";
3267 }
3268 leaf out {
3269 type uint32;
3270 description "Sent PSNP PDUs.";
3271 }
3272 description "Number of PSNP PDUs received/sent.";
3273 }
3274 container csnp {
3275 leaf in {
3276 type uint32;
3277 description "Received CSNP PDUs.";
3278 }
3279 leaf out {
3280 type uint32;
3281 description "Sent CSNP PDUs.";
3282 }
3283 description "Number of CSNP PDUs received/sent.";
3284 }
3285 container unknown {
3286 leaf in {
3287 type uint32;
3288 description "Received unknown PDUs.";
3289 }
3290 description "Number of unknown PDUs received/sent.";
3291 }
3292 description
3293 "List of packet counter for supported levels.";
3294 }
3295 description "Packet counters per IS-IS level.";
3296 }
3297 description
3298 "Grouping for per IS-IS Level packet counters.";
3299 }
3301 /* Groupings for various log buffers */
3302 grouping spf-log {
3303 container spf-log {
3304 config false;
3305 list event {
3306 key id;
3308 leaf id {
3309 type uint32;
3310 description
3311 "Event identifier - purely internal value.";
3312 }
3313 leaf spf-type {
3314 type enumeration {
3315 enum full {
3316 description "Full SPF computation.";
3317 }
3318 enum route-only {
3319 description
3320 "Route reachability only SPF computation";
3321 }
3322 }
3323 description "Type of SPF computation performed.";
3324 }
3325 leaf level {
3326 type level-number;
3327 description
3328 "IS-IS level number for SPF computation";
3329 }
3330 leaf schedule-timestamp {
3331 type yang:timestamp;
3332 description
3333 "Timestamp of when the SPF computation was
3334 scheduled.";
3335 }
3336 leaf start-timestamp {
3337 type yang:timestamp;
3338 description
3339 "Timestamp of when the SPF computation started.";
3340 }
3341 leaf end-timestamp {
3342 type yang:timestamp;
3343 description
3344 "Timestamp of when the SPF computation ended.";
3345 }
3346 list trigger-lsp {
3347 key "lsp";
3348 leaf lsp {
3349 type lsp-id;
3350 description
3351 "LSP ID of the LSP triggering SPF computation.";
3352 }
3353 leaf sequence {
3354 type uint32;
3355 description
3356 "Sequence number of the LSP triggering SPF
3357 computation";
3359 }
3360 description
3361 "This list includes the LSPs that triggered the
3362 SPF computation.";
3363 }
3364 description
3365 "List of computation events - implemented as a
3366 wrapping buffer.";
3367 }
3369 description
3370 "This container lists the SPF computation events.";
3371 }
3372 description "Grouping for spf-log events.";
3373 }
3375 grouping lsp-log {
3376 container lsp-log {
3377 config false;
3378 list event {
3379 key id;
3381 leaf id {
3382 type uint32;
3383 description
3384 "Event identifier - purely internal value.";
3385 }
3386 leaf level {
3387 type level-number;
3388 description
3389 "IS-IS level number for LSP";
3390 }
3391 container lsp {
3392 leaf lsp {
3393 type lsp-id;
3394 description
3395 "LSP ID of the LSP.";
3396 }
3397 leaf sequence {
3398 type uint32;
3399 description
3400 "Sequence number of the LSP.";
3401 }
3402 description
3403 "LSP identification container - either the received
3404 LSP or the locally generated LSP.";
3405 }
3406 leaf received-timestamp {
3407 type yang:timestamp;
3408 description
3409 "This is the timestamp when the LSA was received.
3410 In case of local LSA update, the timestamp refers
3411 to the LSA origination time.";
3412 }
3414 leaf reason {
3415 type identityref {
3416 base lsp-log-reason;
3417 }
3418 description "Type of LSP change.";
3419 }
3421 description
3422 "List of LSP events - implemented as a
3423 wrapping buffer.";
3424 }
3426 description
3427 "This container lists the LSP log.
3428 Local LSP modifications are also included
3429 in the list.";
3431 } description "Grouping for LSP log.";
3432 }
3434 /* Groupings for the LSDB description */
3436 /* Unknown TLV and sub-TLV description */
3437 grouping tlv {
3438 description
3439 "Type-Length-Value (TLV)";
3440 leaf type {
3441 type uint16;
3442 description "TLV type.";
3443 }
3444 leaf length {
3445 type uint16;
3446 description "TLV length (octets).";
3447 }
3448 leaf value {
3449 type yang:hex-string;
3450 description "TLV value.";
3451 }
3453 }
3455 grouping unknown-tlvs {
3456 description
3457 "Unknown TLVs grouping - Used for unknown TLVs or
3458 unknown sub-TLVs.";
3459 container unknown-tlvs {
3460 description "All unknown TLVs.";
3461 list unknown-tlv {
3462 description "Unknown TLV.";
3463 uses tlv;
3464 }
3465 }
3466 }
3468 /* TLVs and sub-TLVs for prefixes */
3470 grouping prefix-reachability-attributes {
3471 description
3472 "Grouping for extended reachability attributes of an
3473 IPv4 or IPv6 prefix.";
3475 leaf external-prefix-flag {
3476 type boolean;
3477 description "External prefix flag.";
3478 }
3479 leaf readvertisement-flag {
3480 type boolean;
3481 description "Re-advertisement flag.";
3482 }
3483 leaf node-flag {
3484 type boolean;
3485 description "Node flag.";
3486 }
3487 }
3489 grouping prefix-ipv4-source-router-id {
3490 description
3491 "Grouping for the IPv4 source router ID of a prefix
3492 advertisement.";
3494 leaf ipv4-source-router-id {
3495 type inet:ipv4-address;
3496 description "IPv4 Source router ID address.";
3497 }
3498 }
3500 grouping prefix-ipv6-source-router-id {
3501 description
3502 "Grouping for the IPv6 source router ID of a prefix
3503 advertisement.";
3505 leaf ipv6-source-router-id {
3506 type inet:ipv6-address;
3507 description "IPv6 Source router ID address.";
3508 }
3509 }
3511 grouping prefix-attributes-extension {
3512 description "Prefix extended attributes
3513 as defined in RFC7794.";
3515 uses prefix-reachability-attributes;
3516 uses prefix-ipv4-source-router-id;
3517 uses prefix-ipv6-source-router-id;
3518 }
3520 grouping prefix-ipv4-std {
3521 description
3522 "Grouping for attributes of an IPv4 standard prefix
3523 as defined in RFC1195.";
3524 leaf ip-prefix {
3525 type inet:ipv4-address;
3526 description "IPv4 prefix address";
3527 }
3528 leaf prefix-len {
3529 type uint8;
3530 description "IPv4 prefix length (in bits)";
3531 }
3532 leaf i-e {
3533 type boolean;
3534 description "Internal or External (I/E) Metric bit value.";
3535 }
3536 container default-metric {
3537 leaf metric {
3538 type std-metric;
3539 description "Default IS-IS metric for IPv4 prefix";
3540 }
3541 description "IS-IS default metric container.";
3542 }
3543 container delay-metric {
3544 leaf metric {
3545 type std-metric;
3546 description "IS-IS delay metric for IPv4 prefix";
3547 }
3548 leaf supported {
3549 type boolean;
3550 default "false";
3551 description
3552 "Indicates whether IS-IS delay metric is supported.";
3553 }
3554 description "IS-IS delay metric container.";
3555 }
3556 container expense-metric {
3557 leaf metric {
3558 type std-metric;
3559 description "IS-IS expense metric for IPv4 prefix";
3560 }
3561 leaf supported {
3562 type boolean;
3563 default "false";
3564 description
3565 "Indicates whether IS-IS delay metric is supported.";
3566 }
3567 description "IS-IS expense metric container.";
3568 }
3569 container error-metric {
3570 leaf metric {
3571 type std-metric;
3572 description
3573 "This leaf describes the IS-IS error metric value";
3574 }
3575 leaf supported {
3576 type boolean;
3577 default "false";
3578 description "IS-IS error metric for IPv4 prefix";
3579 }
3580 description "IS-IS error metric container.";
3581 }
3582 }
3584 grouping prefix-ipv4-extended {
3585 description
3586 "Grouping for attributes of an IPv4 extended prefix
3587 as defined in RFC5305.";
3588 leaf up-down {
3589 type boolean;
3590 description "Value of up/down bit.";
3591 }
3592 leaf ip-prefix {
3593 type inet:ipv4-address;
3594 description "IPv4 prefix address";
3595 }
3596 leaf prefix-len {
3597 type uint8;
3598 description "IPv4 prefix length (in bits)";
3599 }
3600 leaf metric {
3601 type wide-metric;
3602 description "IS-IS wide metric value";
3603 }
3604 leaf-list tag {
3605 type uint32;
3606 description
3607 "List of 32-bit tags associated with the IPv4 prefix.";
3608 }
3609 leaf-list tag64 {
3610 type uint64;
3611 description
3612 "List of 32-bit tags associated with the IPv4 prefix.";
3613 }
3614 uses prefix-attributes-extension;
3615 }
3617 grouping prefix-ipv6-extended {
3618 description "Grouping for attributes of an IPv6 prefix
3619 as defined in RFC5308.";
3620 leaf up-down {
3621 type boolean;
3622 description "Value of up/down bit.";
3623 }
3624 leaf ip-prefix {
3625 type inet:ipv6-address;
3626 description "IPv6 prefix address";
3627 }
3628 leaf prefix-len {
3629 type uint8;
3630 description "IPv4 prefix length (in bits)";
3631 }
3632 leaf metric {
3633 type wide-metric;
3634 description "IS-IS wide metric value";
3635 }
3636 leaf-list tag {
3637 type uint32;
3638 description
3639 "List of 32-bit tags associated with the IPv4 prefix.";
3640 }
3641 leaf-list tag64 {
3642 type uint64;
3643 description
3644 "List of 32-bit tags associated with the IPv4 prefix.";
3646 }
3647 uses prefix-attributes-extension;
3648 }
3650 /* TLVs and sub-TLVs for neighbors */
3652 grouping neighbor-link-attributes {
3653 description
3654 "Grouping for link attributes as defined
3655 in RFC5029";
3656 leaf link-attributes-flags {
3657 type uint16;
3658 description
3659 "Flags for the link attributes";
3660 }
3661 }
3662 grouping neighbor-gmpls-extensions {
3663 description
3664 "Grouping for GMPLS attributes of a neighbor as defined
3665 in RFC5307";
3666 leaf link-local-id {
3667 type uint32;
3668 description
3669 "Local identifier of the link.";
3670 }
3671 leaf remote-local-id {
3672 type uint32;
3673 description
3674 "Remote identifier of the link.";
3675 }
3676 leaf protection-capability {
3677 type uint8;
3678 description
3679 "Describes the protection capabilities
3680 of the link. This is the value of the
3681 first octet of the sub-TLV type 20 value.";
3682 }
3683 container interface-switching-capability {
3684 description
3685 "Interface switching capabilities of the link.";
3686 leaf switching-capability {
3687 type uint8;
3688 description
3689 "Switching capability of the link.";
3690 }
3691 leaf encoding {
3692 type uint8;
3693 description
3694 "Type of encoding of the LSP being used.";
3695 }
3696 container max-lsp-bandwidths {
3697 description "Per priority max LSP bandwidths.";
3698 list max-lsp-bandwidth {
3699 leaf priority {
3700 type uint8 {
3701 range "0 .. 7";
3702 }
3703 description "Priority from 0 to 7.";
3704 }
3705 leaf bandwidth {
3706 type rt-types:bandwidth-ieee-float32;
3707 description "max LSP bandwidth.";
3708 }
3709 description
3710 "List of max LSP bandwidths for different
3711 priorities.";
3712 }
3713 }
3714 container tdm-specific {
3715 when "../switching-capability = 100";
3716 description
3717 "Switching Capability-specific information applicable
3718 when switching type is TDM.";
3720 leaf minimum-lsp-bandwidth {
3721 type rt-types:bandwidth-ieee-float32;
3722 description "minimum LSP bandwidth.";
3723 }
3724 leaf indication {
3725 type uint8;
3726 description
3727 "The indication whether the interface supports Standard
3728 or Arbitrary SONET/SDH.";
3729 }
3730 }
3731 container psc-specific {
3732 when "../switching-capability >= 1 and
3733 ../switching-capability <= 4";
3734 description
3735 "Switching Capability-specific information applicable
3736 when switching type is PSC1,PSC2,PSC3 or PSC4.";
3738 leaf minimum-lsp-bandwidth {
3739 type rt-types:bandwidth-ieee-float32;
3740 description "minimum LSP bandwidth.";
3741 }
3742 leaf mtu {
3743 type uint16;
3744 units bytes;
3745 description
3746 "Interface MTU";
3747 }
3748 }
3749 }
3750 }
3752 grouping neighbor-extended-te-extensions {
3753 description
3754 "Grouping for TE attributes of a neighbor as defined
3755 in RFC8570";
3757 container unidirectional-link-delay {
3758 description
3759 "Container for the average delay
3760 from the local neighbor to the remote one.";
3761 container flags {
3762 leaf-list unidirectional-link-delay-subtlv-flags {
3763 type identityref {
3764 base unidirectional-link-delay-subtlv-flag;
3765 }
3766 description
3767 "This list contains identities for the bits
3768 which are set.";
3769 }
3770 description
3771 "unidirectional-link-delay subTLV flags.";
3772 }
3773 leaf value {
3774 type uint32;
3775 units usec;
3776 description
3777 "Delay value expressed in microseconds.";
3778 }
3779 }
3780 container min-max-unidirectional-link-delay {
3781 description
3782 "Container for the min and max delay
3783 from the local neighbor to the remote one.";
3784 container flags {
3785 leaf-list min-max-unidirectional-link-delay-subtlv-flags {
3786 type identityref {
3787 base min-max-unidirectional-link-delay-subtlv-flag;
3788 }
3789 description
3790 "This list contains identities for the bits which are
3791 set.";
3792 }
3793 description
3794 "min-max-unidirectional-link-delay subTLV flags.";
3795 }
3796 leaf min-value {
3797 type uint32;
3798 units usec;
3799 description
3800 "Minimum delay value expressed in microseconds.";
3801 }
3802 leaf max-value {
3803 type uint32;
3804 units usec;
3805 description
3806 "Maximum delay value expressed in microseconds.";
3807 }
3808 }
3809 container unidirectional-link-delay-variation {
3810 description
3811 "Container for the average delay variation
3812 from the local neighbor to the remote one.";
3813 leaf value {
3814 type uint32;
3815 units usec;
3816 description
3817 "Delay variation value expressed in microseconds.";
3818 }
3819 }
3820 container unidirectional-link-loss {
3821 description
3822 "Container for the packet loss
3823 from the local neighbor to the remote one.";
3824 container flags {
3825 leaf-list unidirectional-link-loss-subtlv-flags {
3826 type identityref {
3827 base unidirectional-link-loss-subtlv-flag;
3828 }
3829 description
3830 "This list contains identities for the bits which are
3831 set.";
3832 }
3833 description
3834 "unidirectional-link-loss subTLV flags.";
3835 }
3836 leaf value {
3837 type uint32;
3838 units percent;
3839 description
3840 "Link packet loss expressed as a percentage
3841 of the total traffic sent over a configurable interval.";
3842 }
3843 }
3844 container unidirectional-link-residual-bandwidth {
3845 description
3846 "Container for the residual bandwidth
3847 from the local neighbor to the remote one.";
3848 leaf value {
3849 type rt-types:bandwidth-ieee-float32;
3850 units Bps;
3851 description
3852 "Residual bandwidth.";
3853 }
3854 }
3855 container unidirectional-link-available-bandwidth {
3856 description
3857 "Container for the available bandwidth
3858 from the local neighbor to the remote one.";
3859 leaf value {
3860 type rt-types:bandwidth-ieee-float32;
3861 units Bps;
3862 description
3863 "Available bandwidth.";
3864 }
3865 }
3866 container unidirectional-link-utilized-bandwidth {
3867 description
3868 "Container for the utilized bandwidth
3869 from the local neighbor to the remote one.";
3870 leaf value {
3871 type rt-types:bandwidth-ieee-float32;
3872 units Bps;
3873 description
3874 "Utilized bandwidth.";
3875 }
3876 }
3877 }
3879 grouping neighbor-te-extensions {
3880 description
3881 "Grouping for TE attributes of a neighbor as defined
3882 in RFC5305";
3883 leaf admin-group {
3884 type uint32;
3885 description
3886 "Administrative group/Resource Class/Color.";
3887 }
3888 container local-if-ipv4-addrs {
3889 description "All local interface IPv4 addresses.";
3890 leaf-list local-if-ipv4-addr {
3891 type inet:ipv4-address;
3892 description
3893 "List of local interface IPv4 addresses.";
3894 }
3895 }
3896 container remote-if-ipv4-addrs {
3897 description "All remote interface IPv4 addresses.";
3898 leaf-list remote-if-ipv4-addr {
3899 type inet:ipv4-address;
3900 description
3901 "List of remote interface IPv4 addresses.";
3902 }
3903 }
3904 leaf te-metric {
3905 type uint32;
3906 description "TE metric.";
3907 }
3908 leaf max-bandwidth {
3909 type rt-types:bandwidth-ieee-float32;
3910 description "Maximum bandwidth.";
3911 }
3912 leaf max-reservable-bandwidth {
3913 type rt-types:bandwidth-ieee-float32;
3914 description "Maximum reservable bandwidth.";
3915 }
3916 container unreserved-bandwidths {
3917 description "All unreserved bandwidths.";
3918 list unreserved-bandwidth {
3919 leaf priority {
3920 type uint8 {
3921 range "0 .. 7";
3922 }
3923 description "Priority from 0 to 7.";
3924 }
3925 leaf unreserved-bandwidth {
3926 type rt-types:bandwidth-ieee-float32;
3927 description "Unreserved bandwidth.";
3928 }
3929 description
3930 "List of unreserved bandwidths for different
3931 priorities.";
3932 }
3933 }
3935 }
3937 grouping neighbor-extended {
3938 description
3939 "Grouping for attributes of an IS-IS extended neighbor.";
3940 leaf neighbor-id {
3941 type extended-system-id;
3942 description "system-id of the extended neighbor.";
3943 }
3944 container instances {
3945 description "List of all adjacencies between the local
3946 system and the neighbor system-id.";
3947 list instance {
3948 key id;
3950 leaf id {
3951 type uint32;
3952 description "Unique identifier of an instance of a
3953 particular neighbor.";
3954 }
3955 leaf metric {
3956 type wide-metric;
3957 description "IS-IS wide metric for extended neighbor";
3958 }
3959 uses neighbor-gmpls-extensions;
3960 uses neighbor-te-extensions;
3961 uses neighbor-extended-te-extensions;
3962 uses neighbor-link-attributes;
3963 uses unknown-tlvs;
3964 description "Instance of a particular adjacency.";
3965 }
3966 }
3967 }
3969 grouping neighbor {
3970 description "IS-IS standard neighbor grouping.";
3971 leaf neighbor-id {
3972 type extended-system-id;
3973 description "IS-IS neighbor system-id";
3974 }
3975 container instances {
3976 description "List of all adjacencies between the local
3977 system and the neighbor system-id.";
3978 list instance {
3979 key id;
3981 leaf id {
3982 type uint32;
3983 description "Unique identifier of an instance of a
3984 particular neighbor.";
3985 }
3986 leaf i-e {
3987 type boolean;
3988 description
3989 "Internal or External (I/E) Metric bit value";
3990 }
3991 container default-metric {
3992 leaf metric {
3993 type std-metric;
3994 description "IS-IS default metric value";
3995 }
3996 description "IS-IS default metric container";
3997 }
3998 container delay-metric {
3999 leaf metric {
4000 type std-metric;
4001 description "IS-IS delay metric value";
4002 }
4003 leaf supported {
4004 type boolean;
4005 default "false";
4006 description "IS-IS delay metric supported";
4007 }
4008 description "IS-IS delay metric container";
4009 }
4010 container expense-metric {
4011 leaf metric {
4012 type std-metric;
4013 description "IS-IS delay expense metric value";
4014 }
4015 leaf supported {
4016 type boolean;
4017 default "false";
4018 description "IS-IS delay expense metric supported";
4019 }
4020 description "IS-IS delay expense metric container";
4021 }
4022 container error-metric {
4023 leaf metric {
4024 type std-metric;
4025 description "IS-IS error metric value";
4026 }
4027 leaf supported {
4028 type boolean;
4029 default "false";
4030 description "IS-IS error metric supported";
4032 }
4033 description "IS-IS error metric container";
4034 }
4035 description "Instance of a particular adjacency
4036 as defined in ISO10589.";
4037 }
4038 }
4039 }
4041 /* Top-level TLVs */
4043 grouping tlv132-ipv4-addresses {
4044 leaf-list ipv4-addresses {
4045 type inet:ipv4-address;
4046 description
4047 "List of IPv4 addresses of the IS-IS node - IS-IS
4048 reference is TLV 132.";
4049 }
4050 description "Grouping for TLV132.";
4051 }
4052 grouping tlv232-ipv6-addresses {
4053 leaf-list ipv6-addresses {
4054 type inet:ipv6-address;
4055 description
4056 "List of IPv6 addresses of the IS-IS node - IS-IS
4057 reference is TLV 232.";
4058 }
4059 description "Grouping for TLV232.";
4060 }
4061 grouping tlv134-ipv4-te-rid {
4062 leaf ipv4-te-routerid {
4063 type inet:ipv4-address;
4064 description
4065 "IPv4 Traffic Engineering router ID of the IS-IS node -
4066 IS-IS reference is TLV 134.";
4067 }
4068 description "Grouping for TLV134.";
4069 }
4070 grouping tlv140-ipv6-te-rid {
4071 leaf ipv6-te-routerid {
4072 type inet:ipv6-address;
4073 description
4074 "IPv6 Traffic Engineering router ID of the IS-IS node -
4075 IS-IS reference is TLV 140.";
4076 }
4077 description "Grouping for TLV140.";
4078 }
4079 grouping tlv129-protocols {
4080 leaf-list protocol-supported {
4081 type uint8;
4082 description
4083 "List of supported protocols of the IS-IS node -
4084 IS-IS reference is TLV 129.";
4085 }
4086 description "Grouping for TLV129.";
4087 }
4088 grouping tlv137-hostname {
4089 leaf dynamic-hostname {
4090 type string;
4091 description
4092 "Host Name of the IS-IS node - IS-IS reference
4093 is TLV 137.";
4094 }
4095 description "Grouping for TLV137.";
4096 }
4097 grouping tlv10-authentication {
4098 container authentication {
4099 leaf authentication-type {
4100 type identityref {
4101 base key-chain:crypto-algorithm;
4102 }
4103 description
4104 "Authentication type to be used with IS-IS node.";
4105 }
4106 leaf authentication-key {
4107 type string;
4108 description
4109 "Authentication key to be used. For security reasons,
4110 the authentication key MUST NOT be presented in
4111 a clear text format in response to any request
4112 (e.g., via get, get-config).";
4113 }
4114 description
4115 "IS-IS node authentication information container -
4116 IS-IS reference is TLV 10.";
4117 }
4118 description "Grouping for TLV10.";
4119 }
4120 grouping tlv229-mt {
4121 container mt-entries {
4122 list topology {
4123 description
4124 "List of topologies supported";
4126 leaf mt-id {
4127 type uint16 {
4128 range "0 .. 4095";
4129 }
4130 description
4131 "Multi-Topology identifier of topology.";
4132 }
4133 container attributes {
4134 leaf-list flags {
4135 type identityref {
4136 base tlv229-flag;
4137 }
4138 description
4139 "This list contains identities for the bits which are
4140 set.";
4141 }
4142 description
4143 "TLV 229 flags.";
4144 }
4145 }
4146 description
4147 "IS-IS node topology information container -
4148 IS-IS reference is TLV 229.";
4149 }
4150 description "Grouping for TLV229.";
4151 }
4153 grouping tlv242-router-capabilities {
4154 container router-capabilities {
4155 list router-capability {
4156 container flags {
4157 leaf-list router-capability-flags {
4158 type identityref {
4159 base router-capability-flag;
4160 }
4161 description
4162 "This list contains identities for the bits which are
4163 set.";
4164 }
4165 description
4166 "Router capability flags.";
4167 }
4168 container node-tags {
4169 if-feature node-tag;
4170 list node-tag {
4171 leaf tag {
4172 type uint32;
4173 description "Node tag value.";
4174 }
4175 description "List of tags.";
4177 }
4178 description "Container for node admin tags";
4179 }
4181 uses unknown-tlvs;
4183 description
4184 "IS-IS node capabilities. This list element may
4185 be extended with detailed information - IS-IS
4186 reference is TLV 242.";
4187 }
4188 description "List of router capability TLVs.";
4189 }
4190 description "Grouping for TLV242.";
4191 }
4193 grouping tlv138-srlg {
4194 description
4195 "Grouping for TLV138.";
4196 container links-srlgs {
4197 list links {
4198 leaf neighbor-id {
4199 type extended-system-id;
4200 description "system-id of the extended neighbor.";
4201 }
4202 leaf flags {
4203 type uint8;
4204 description
4205 "Flags associated with the link.";
4206 }
4207 leaf link-local-id {
4208 type union {
4209 type inet:ip-address;
4210 type uint32;
4211 }
4212 description
4213 "Local identifier of the link.
4214 It could be an IPv4 address or a local identifier.";
4215 }
4216 leaf link-remote-id {
4217 type union {
4218 type inet:ip-address;
4219 type uint32;
4220 }
4221 description
4222 "Remote identifier of the link.
4223 It could be an IPv4 address or a remotely learned
4224 identifier.";
4226 }
4227 container srlgs {
4228 description "List of SRLGs.";
4229 leaf-list srlg {
4230 type uint32;
4231 description
4232 "SRLG value of the link.";
4233 }
4234 }
4235 description
4236 "SRLG attribute of a link.";
4237 }
4238 description
4239 "List of links with SRLGs";
4240 }
4241 }
4243 /* Grouping for LSDB description */
4245 grouping lsp-entry {
4246 description "IS-IS LSP database entry grouping";
4248 leaf decoded-completed {
4249 type boolean;
4250 description "IS-IS LSP body fully decoded.";
4251 }
4252 leaf raw-data {
4253 type yang:hex-string;
4254 description
4255 "The hexadecimal representation of the complete LSP in
4256 network-byte order (NBO) as received or originated.";
4257 }
4258 leaf lsp-id {
4259 type lsp-id;
4260 description "LSP ID of the LSP";
4261 }
4262 leaf checksum {
4263 type uint16;
4264 description "LSP checksum";
4265 }
4266 leaf remaining-lifetime {
4267 type uint16;
4268 units "seconds";
4269 description
4270 "Remaining lifetime (in seconds) until LSP expiration.";
4271 }
4272 leaf sequence {
4273 type uint32;
4274 description
4275 "This leaf describes the sequence number of the LSP.";
4276 }
4277 container attributes {
4278 leaf-list lsp-flags {
4279 type identityref {
4280 base lsp-flag;
4281 }
4282 description
4283 "This list contains identities for the bits which are
4284 set.";
4285 }
4286 description "LSP attributes.";
4287 }
4289 uses tlv132-ipv4-addresses;
4290 uses tlv232-ipv6-addresses;
4291 uses tlv134-ipv4-te-rid;
4292 uses tlv140-ipv6-te-rid;
4293 uses tlv129-protocols;
4294 uses tlv137-hostname;
4295 uses tlv10-authentication;
4296 uses tlv229-mt;
4297 uses tlv242-router-capabilities;
4298 uses tlv138-srlg;
4299 uses unknown-tlvs;
4301 container is-neighbor {
4302 list neighbor {
4303 key neighbor-id;
4305 uses neighbor;
4306 description "List of neighbors.";
4307 }
4308 description
4309 "Standard IS neighbors container - IS-IS reference is
4310 TLV 2.";
4311 }
4313 container extended-is-neighbor {
4314 list neighbor {
4315 key neighbor-id;
4317 uses neighbor-extended;
4318 description
4319 "List of extended IS neighbors";
4320 }
4321 description
4322 "Standard IS extended neighbors container - IS-IS
4323 reference is TLV 22";
4324 }
4326 container ipv4-internal-reachability {
4327 list prefixes {
4328 uses prefix-ipv4-std;
4329 description "List of prefixes.";
4330 }
4331 description
4332 "IPv4 internal reachability information container - IS-IS
4333 reference is TLV 128.";
4334 }
4336 container ipv4-external-reachability {
4337 list prefixes {
4338 uses prefix-ipv4-std;
4339 description "List of prefixes.";
4340 }
4341 description
4342 "IPv4 external reachability information container -
4343 IS-IS reference is TLV 130.";
4344 }
4346 container extended-ipv4-reachability {
4347 list prefixes {
4348 uses prefix-ipv4-extended;
4349 uses unknown-tlvs;
4350 description "List of prefixes.";
4351 }
4352 description
4353 "IPv4 extended reachability information container -
4354 IS-IS reference is TLV 135.";
4355 }
4357 container mt-is-neighbor {
4358 list neighbor {
4359 leaf mt-id {
4360 type uint16 {
4361 range "0 .. 4095";
4362 }
4363 description "Multi-topology (MT) identifier";
4364 }
4365 uses neighbor-extended;
4366 description "List of neighbors.";
4367 }
4368 description
4369 "IS-IS multi-topology neighbor container - IS-IS
4370 reference is TLV 223.";
4371 }
4373 container mt-extended-ipv4-reachability {
4374 list prefixes {
4375 leaf mt-id {
4376 type uint16 {
4377 range "0 .. 4095";
4378 }
4379 description "Multi-topology (MT) identifier";
4380 }
4381 uses prefix-ipv4-extended;
4382 uses unknown-tlvs;
4383 description "List of extended prefixes.";
4384 }
4385 description
4386 "IPv4 multi-topology (MT) extended reachability
4387 information container - IS-IS reference is TLV 235.";
4388 }
4390 container mt-ipv6-reachability {
4391 list prefixes {
4392 leaf MT-ID {
4393 type uint16 {
4394 range "0 .. 4095";
4395 }
4396 description "Multi-topology (MT) identifier";
4397 }
4398 uses prefix-ipv6-extended;
4399 uses unknown-tlvs;
4400 description "List of IPv6 extended prefixes.";
4401 }
4402 description
4403 "IPv6 multi-topology (MT) extended reachability
4404 information container - IS-IS reference is TLV 237.";
4405 }
4407 container ipv6-reachability {
4408 list prefixes {
4409 uses prefix-ipv6-extended;
4410 uses unknown-tlvs;
4411 description "List of IPv6 prefixes.";
4412 }
4413 description
4414 "IPv6 reachability information container - IS-IS
4415 reference is TLV 236.";
4416 }
4417 }
4418 grouping lsdb {
4419 description "Link State Database (LSDB) grouping";
4420 container database {
4421 config false;
4422 list levels {
4423 key level;
4425 leaf level {
4426 type level-number;
4427 description "LSDB level number (1 or 2)";
4428 }
4429 list lsp {
4430 key lsp-id;
4431 uses lsp-entry;
4432 description "List of LSPs in LSDB";
4433 }
4434 description "List of LSPs for the LSDB level container";
4435 }
4436 description "IS-IS Link State database container";
4437 }
4438 }
4440 /* Augmentations */
4442 augment "/rt:routing/"
4443 +"rt:ribs/rt:rib/rt:routes/rt:route" {
4444 when "rt:source-protocol = 'isis:isis'" {
4445 description "IS-IS-specific route attributes.";
4446 }
4447 uses route-content;
4448 description
4449 "This augments route object in RIB with IS-IS-specific
4450 attributes.";
4451 }
4453 augment "/if:interfaces/if:interface" {
4454 leaf clns-mtu {
4455 if-feature osi-interface;
4456 type uint16;
4457 description "CLNS MTU of the interface";
4458 }
4459 description "ISO specific interface parameters.";
4460 }
4461 augment "/rt:routing/rt:control-plane-protocols/"
4462 +"rt:control-plane-protocol" {
4463 when "rt:type = 'isis:isis'" {
4464 description
4465 "This augment is only valid when routing protocol
4466 instance type is 'isis'";
4467 }
4468 description
4469 "This augments a routing protocol instance with IS-IS
4470 specific parameters.";
4471 container isis {
4472 must "count(area-address) > 0" {
4473 error-message
4474 "At least one area-address must be configured.";
4475 description
4476 "Enforce configuration of at least one area.";
4477 }
4479 uses instance-config;
4480 uses instance-state;
4482 container topologies {
4483 if-feature multi-topology;
4484 list topology {
4485 key "name";
4486 leaf enable {
4487 type boolean;
4488 description "Topology enable configuration";
4489 }
4490 leaf name {
4491 type leafref {
4492 path "../../../../../../rt:ribs/rt:rib/rt:name";
4493 }
4494 description
4495 "Routing Information Base (RIB) corresponding
4496 to topology.";
4497 }
4499 uses multi-topology-config;
4501 description "List of topologies";
4502 }
4503 description "Multi-topology container";
4504 }
4505 container interfaces {
4506 list interface {
4507 key "name";
4508 leaf name {
4509 type if:interface-ref;
4511 description
4512 "Reference to the interface within
4513 the routing-instance.";
4514 }
4515 uses interface-config;
4516 uses interface-state;
4517 container topologies {
4518 if-feature multi-topology;
4519 list topology {
4520 key name;
4522 leaf name {
4523 type leafref {
4524 path "../../../../../../../../"+
4525 "rt:ribs/rt:rib/rt:name";
4526 }
4528 description
4529 "Routing Information Base (RIB) corresponding
4530 to topology.";
4531 }
4532 uses multi-topology-interface-config;
4533 description "List of interface topologies";
4534 }
4535 description "Multi-topology container";
4536 }
4537 description "List of IS-IS interfaces.";
4538 }
4539 description
4540 "IS-IS interface specific configuration container";
4541 }
4543 description
4544 "IS-IS configuration/state top-level container";
4545 }
4546 }
4548 /* RPC methods */
4550 rpc clear-adjacency {
4551 description
4552 "This RPC request clears a particular set of IS-IS
4553 adjacencies. If the operation fails due to an internal
4554 reason, then the error-tag and error-app-tag should be
4555 set indicating the reason for the failure.";
4557 input {
4559 leaf routing-protocol-instance-name {
4560 type leafref {
4561 path "/rt:routing/rt:control-plane-protocols/"
4562 + "rt:control-plane-protocol/rt:name";
4563 }
4564 mandatory "true";
4565 description
4566 "Name of the IS-IS protocol instance whose IS-IS
4567 adjacency is being cleared.
4569 If the corresponding IS-IS instance doesn't exist,
4570 then the operation will fail with an error-tag of
4571 'data-missing' and an error-app-tag of
4572 'routing-protocol-instance-not-found'.";
4573 }
4574 leaf level {
4575 type level;
4576 description
4577 "IS-IS level of the adjacency to be cleared. If the
4578 IS-IS level is level-1-2, both level 1 and level 2
4579 adjacencies would be cleared.
4581 If the value provided is different from the one
4582 authorized in the enum type, then the operation
4583 SHALL fail with an error-tag of 'data-missing' and
4584 an error-app-tag of 'bad-isis-level'.";
4585 }
4586 leaf interface {
4587 type if:interface-ref;
4588 description
4589 "IS-IS interface name.
4591 If the corresponding IS-IS interface doesn't exist,
4592 then the operation SHALL fail with an error-tag of
4593 'data-missing' and an error-app-tag of
4594 'isis-interface-not-found'.";
4595 }
4596 }
4597 }
4599 rpc clear-database {
4600 description
4601 "This RPC request clears a particular IS-IS database. If
4602 the operation fails for an IS-IS internal reason, then
4603 the error-tag and error-app-tag should be set
4604 indicating the reason for the failure.";
4606 input {
4607 leaf routing-protocol-instance-name {
4608 type leafref {
4609 path "/rt:routing/rt:control-plane-protocols/"
4610 + "rt:control-plane-protocol/rt:name";
4611 }
4612 mandatory "true";
4613 description
4614 "Name of the IS-IS protocol instance whose IS-IS
4615 database(s) is/are being cleared.
4617 If the corresponding IS-IS instance doesn't exist,
4618 then the operation will fail with an error-tag of
4619 'data-missing' and an error-app-tag of
4620 'routing-protocol-instance-not-found'.";
4621 }
4622 leaf level {
4623 type level;
4624 description
4625 "IS-IS level of the adjacency to be cleared. If the
4626 IS-IS level is level-1-2, both level 1 and level 2
4627 databases would be cleared.
4629 If the value provided is different from the one
4630 authorized in the enum type, then the operation
4631 SHALL fail with an error-tag of 'data-missing' and
4632 an error-app-tag of 'bad-isis-level'.";
4633 }
4634 }
4635 }
4637 /* Notifications */
4639 notification database-overload {
4640 uses notification-instance-hdr;
4642 leaf overload {
4643 type enumeration {
4644 enum off {
4645 description
4646 "Indicates IS-IS instance has left overload state";
4647 }
4648 enum on {
4649 description
4650 "Indicates IS-IS instance has entered overload state";
4651 }
4653 }
4654 description "New overload state of the IS-IS instance";
4655 }
4656 description
4657 "This notification is sent when an IS-IS instance
4658 overload state changes.";
4659 }
4661 notification lsp-too-large {
4662 uses notification-instance-hdr;
4663 uses notification-interface-hdr;
4665 leaf pdu-size {
4666 type uint32;
4667 description "Size of the LSP PDU";
4668 }
4669 leaf lsp-id {
4670 type lsp-id;
4671 description "LSP ID";
4672 }
4673 description
4674 "This notification is sent when we attempt to propagate
4675 an LSP that is larger than the dataLinkBlockSize (ISO10589)
4676 for the circuit. The notification generation must be
4677 throttled with at least 5 seconds between successive
4678 notifications.";
4679 }
4681 notification if-state-change {
4682 uses notification-instance-hdr;
4683 uses notification-interface-hdr;
4685 leaf state {
4686 type if-state-type;
4687 description "Interface state.";
4688 }
4689 description
4690 "This notification is sent when an interface
4691 state change is detected.";
4692 }
4694 notification corrupted-lsp-detected {
4695 uses notification-instance-hdr;
4696 leaf lsp-id {
4697 type lsp-id;
4698 description "LSP ID";
4699 }
4700 description
4701 "This notification is sent when we find that
4702 an LSP that was stored in memory has become
4703 corrupted.";
4704 }
4706 notification attempt-to-exceed-max-sequence {
4707 uses notification-instance-hdr;
4708 leaf lsp-id {
4709 type lsp-id;
4710 description "LSP ID";
4711 }
4712 description
4713 "This notification is sent when the system
4714 wraps the 32-bit sequence counter of an LSP.";
4715 }
4717 notification id-len-mismatch {
4718 uses notification-instance-hdr;
4719 uses notification-interface-hdr;
4721 leaf pdu-field-len {
4722 type uint8;
4723 description "Size of the ID length in the received PDU";
4724 }
4725 leaf raw-pdu {
4726 type binary;
4727 description "Received raw PDU.";
4728 }
4729 description
4730 "This notification is sent when we receive a PDU
4731 with a different value for the system-id length.
4732 The notification generation must be throttled
4733 with at least 5 seconds between successive
4734 notifications.";
4735 }
4737 notification max-area-addresses-mismatch {
4738 uses notification-instance-hdr;
4739 uses notification-interface-hdr;
4741 leaf max-area-addresses {
4742 type uint8;
4743 description "Received number of supported areas";
4744 }
4745 leaf raw-pdu {
4746 type binary;
4747 description "Received raw PDU.";
4748 }
4749 description
4750 "This notification is sent when we receive a PDU
4751 with a different value for the Maximum Area Addresses.
4752 The notification generation must be throttled
4753 with at least 5 seconds between successive
4754 notifications.";
4755 }
4757 notification own-lsp-purge {
4758 uses notification-instance-hdr;
4759 uses notification-interface-hdr;
4760 leaf lsp-id {
4761 type lsp-id;
4762 description "LSP ID";
4763 }
4764 description
4765 "This notification is sent when the system receives
4766 a PDU with its own system-id and zero age.";
4767 }
4769 notification sequence-number-skipped {
4770 uses notification-instance-hdr;
4771 uses notification-interface-hdr;
4772 leaf lsp-id {
4773 type lsp-id;
4774 description "LSP ID";
4775 }
4776 description
4777 "This notification is sent when the system receives a
4778 PDU with its own system-id and different contents. The
4779 system has to originate the LSP with a higher sequence
4780 number.";
4781 }
4783 notification authentication-type-failure {
4784 uses notification-instance-hdr;
4785 uses notification-interface-hdr;
4786 leaf raw-pdu {
4787 type binary;
4788 description "Received raw PDU.";
4789 }
4790 description
4791 "This notification is sent when the system receives a
4792 PDU with the wrong authentication type field.
4793 The notification generation must be throttled
4794 with at least 5 seconds between successive
4795 notifications.";
4796 }
4797 notification authentication-failure {
4798 uses notification-instance-hdr;
4799 uses notification-interface-hdr;
4800 leaf raw-pdu {
4801 type binary;
4802 description "Received raw PDU.";
4803 }
4804 description
4805 "This notification is sent when the system receives
4806 a PDU with the wrong authentication information.
4807 The notification generation must be throttled
4808 with at least 5 seconds between successive
4809 notifications.";
4810 }
4812 notification version-skew {
4813 uses notification-instance-hdr;
4814 uses notification-interface-hdr;
4815 leaf protocol-version {
4816 type uint8;
4817 description "Protocol version received in the PDU.";
4818 }
4819 leaf raw-pdu {
4820 type binary;
4821 description "Received raw PDU.";
4822 }
4823 description
4824 "This notification is sent when the system receives a
4825 PDU with a different protocol version number.
4826 The notification generation must be throttled
4827 with at least 5 seconds between successive
4828 notifications.";
4829 }
4831 notification area-mismatch {
4832 uses notification-instance-hdr;
4833 uses notification-interface-hdr;
4834 leaf raw-pdu {
4835 type binary;
4836 description "Received raw PDU.";
4837 }
4838 description
4839 "This notification is sent when the system receives a
4840 Hello PDU from an IS that does not share any area
4841 address. The notification generation must be throttled
4842 with at least 5 seconds between successive
4843 notifications.";
4844 }
4845 notification rejected-adjacency {
4846 uses notification-instance-hdr;
4847 uses notification-interface-hdr;
4848 leaf raw-pdu {
4849 type binary;
4850 description
4851 "Received raw PDU.";
4852 }
4853 leaf reason {
4854 type string {
4855 length "1..255";
4856 }
4857 description
4858 "The system may provide a reason to reject the
4859 adjacency. If the reason is not available,
4860 an empty string will be returned.
4861 The expected format is a single line text.";
4862 }
4863 description
4864 "This notification is sent when the system receives a
4865 Hello PDU from an IS but does not establish an adjacency
4866 for some reason. The notification generation must be
4867 throttled with at least 5 seconds between successive
4868 notifications.";
4869 }
4871 notification protocols-supported-mismatch {
4872 uses notification-instance-hdr;
4873 uses notification-interface-hdr;
4874 leaf raw-pdu {
4875 type binary;
4876 description "Received raw PDU.";
4877 }
4878 leaf-list protocols {
4879 type uint8;
4880 description
4881 "List of protocols supported by the remote system.";
4882 }
4883 description
4884 "This notification is sent when the system receives a
4885 non-pseudonode LSP that has no matching protocols
4886 supported. The notification generation must be throttled
4887 with at least 5 seconds between successive
4888 notifications.";
4889 }
4891 notification lsp-error-detected {
4892 uses notification-instance-hdr;
4893 uses notification-interface-hdr;
4894 leaf lsp-id {
4895 type lsp-id;
4896 description "LSP ID.";
4897 }
4898 leaf raw-pdu {
4899 type binary;
4900 description "Received raw PDU.";
4901 }
4902 leaf error-offset {
4903 type uint32;
4904 description
4905 "If the problem is a malformed TLV, the error-offset
4906 points to the start of the TLV. If the problem is with
4907 the LSP header, the error-offset points to the errant
4908 byte";
4909 }
4910 leaf tlv-type {
4911 type uint8;
4912 description
4913 "If the problem is a malformed TLV, the tlv-type is set
4914 to the type value of the suspicious TLV. Otherwise,
4915 this leaf is not present.";
4916 }
4917 description
4918 "This notification is sent when the system receives an
4919 LSP with a parse error. The notification generation must
4920 be throttled with at least 5 seconds between successive
4921 notifications.";
4922 }
4924 notification adjacency-state-change {
4925 uses notification-instance-hdr;
4926 uses notification-interface-hdr;
4927 leaf neighbor {
4928 type string {
4929 length "1..255";
4930 }
4931 description
4932 "Name of the neighbor.
4933 It corresponds to the hostname associated
4934 with the system-id of the neighbor in the
4935 mapping database (RFC5301).
4936 If the name of the neighbor is
4937 not available, it is not returned.";
4938 }
4939 leaf neighbor-system-id {
4940 type system-id;
4941 description "Neighbor system-id";
4942 }
4943 leaf state {
4944 type adj-state-type;
4946 description "New state of the IS-IS adjacency.";
4947 }
4948 leaf reason {
4949 type string {
4950 length "1..255";
4951 }
4952 description
4953 "If the adjacency is going to DOWN, this leaf provides
4954 a reason for the adjacency going down. The reason is
4955 provided as a text. If the adjacency is going to UP, no
4956 reason is provided. The expected format is a single line
4957 text.";
4958 }
4959 description
4960 "This notification is sent when an IS-IS adjacency
4961 moves to Up state or to Down state.";
4962 }
4964 notification lsp-received {
4965 uses notification-instance-hdr;
4966 uses notification-interface-hdr;
4968 leaf lsp-id {
4969 type lsp-id;
4970 description "LSP ID";
4971 }
4972 leaf sequence {
4973 type uint32;
4974 description "Sequence number of the received LSP.";
4975 }
4976 leaf received-timestamp {
4977 type yang:timestamp;
4979 description "Timestamp when the LSP was received.";
4980 }
4981 leaf neighbor-system-id {
4982 type system-id;
4983 description "Neighbor system-id of LSP sender";
4984 }
4985 description
4986 "This notification is sent when an LSP is received.
4987 The notification generation must be throttled with at
4988 least 5 seconds between successive notifications.";
4989 }
4991 notification lsp-generation {
4992 uses notification-instance-hdr;
4994 leaf lsp-id {
4995 type lsp-id;
4996 description "LSP ID";
4997 }
4998 leaf sequence {
4999 type uint32;
5000 description "Sequence number of the received LSP.";
5001 }
5002 leaf send-timestamp {
5003 type yang:timestamp;
5005 description "Timestamp when our LSP was regenerated.";
5006 }
5007 description
5008 "This notification is sent when an LSP is regenerated.
5009 The notification generation must be throttled with at
5010 least 5 seconds between successive notifications.";
5011 }
5012 }
5013
5015 7. Security Considerations
5017 The YANG modules specified in this document define a schema for data
5018 that is designed to be accessed via network management protocols such
5019 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
5020 is the secure transport layer, and the mandatory-to-implement secure
5021 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
5022 is HTTPS, and the mandatory-to-implement secure transport is TLS
5023 [RFC8446].
5025 The NETCONF Access Control Model (NACM) [RFC8341] provides the means
5026 to restrict access for particular NETCONF or RESTCONF users to a pre-
5027 configured subset of all available NETCONF or RESTCONF protocol
5028 operations and content.
5030 There are a number of data nodes defined in ietf-isis.yang module
5031 that are writable/creatable/deletable (i.e., config true, which is
5032 the default). These data nodes may be considered sensitive or
5033 vulnerable in some network environments. Write operations (e.g.,
5034 edit-config) to these data nodes without proper protection can have a
5035 negative effect on network operations. Writable data node represent
5036 configuration of each instance and interface. These correspond to
5037 the following schema nodes:
5039 /isis
5041 /isis/interfaces/interface[name]
5043 For IS-IS, the ability to modify IS-IS configuration will allow the
5044 entire IS-IS domain to be compromised including forming adjacencies
5045 with unauthorized routers to misroute traffic or mount a massive
5046 Denial-of-Service (DoS) attack. For example, adding IS-IS on any
5047 unprotected interface could allow an IS-IS adjacency to be formed
5048 with an unauthorized and malicious neighbor. Once an adjacency is
5049 formed, traffic could be hijacked. As a simpler example, a Denial-
5050 of-Service attack could be mounted by changing the cost of an IS-IS
5051 interface to be asymmetric such that a hard routing loop ensues. In
5052 general, unauthorized modification of most IS-IS features will pose
5053 there own set of security risks and the "Security Considerations" in
5054 the respective reference RFCs should be consulted.
5056 Some of the readable data nodes in the ietf-isi.yang module may be
5057 considered sensitive or vulnerable in some network environments. It
5058 is thus important to control read access (e.g., via get, get-config,
5059 or notification) to these data nodes. The exposure of the Link State
5060 Database (LSDB) will expose the detailed topology of the network.
5061 The Link State Database (LSDB) is represented by the following schema
5062 node:
5064 /isis/database
5066 Exposure of the Link State Database includes information beyond the
5067 scope of the IS-IS router and this may be undesirable since exposure
5068 may facilitate other attacks. Additionally, the complete IP network
5069 topology and, if deployed, the traffic engineering topology of the
5070 IS-IS domain can be reconstucted. Network operators may consider
5071 their topologies to be sensitive confidential data.
5073 For IS-IS authentication, configuration is supported via the
5074 specification of key-chain [RFC8177] or the direction specification
5075 of key and authentication algorithm. Hence, authentification
5076 configuration using the "auth-table-trailer" case in the
5077 "authentication" container inherits the security considerations of
5078 [RFC8177]. This includes the considerations with respect to the
5079 local storage and handling of authentication keys.
5081 Some of the RPC operations in this YANG module may be considered
5082 sensitive or vulnerable in some network environments. It is thus
5083 important to control access to these operations. The IS-IS YANG
5084 module support the "clear-adjacency" and "clear-database" RPCs. If
5085 access too either of these is compromised, they can result in
5086 temporary network outages be employed to mount DoS attacks.
5088 The actual authentication key data (whether locally specified or part
5089 of a key-chain) is sensitive and needs to be kept secret from
5090 unauthorized parties; compromise of the key data would allow an
5091 attacker to forge IS-IS traffic that would be accepted as authentic,
5092 potentially compromising the entirety IS-IS domain.
5094 8. Contributors
5096 Authors would like to thank Kiran Agrahara Sreenivasa, Dean
5097 Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major
5098 contributions to the draft.
5100 9. IANA Considerations
5102 The IANA is requested to assign two new URIs from the IETF XML
5103 registry [RFC3688]. Authors are suggesting the following URI:
5105 URI: urn:ietf:params:xml:ns:yang:ietf-isis
5106 Registrant Contact: The IESG
5107 XML: N/A, the requested URI is an XML namespace
5109 This document also requests one new YANG module name in the YANG
5110 Module Names registry [RFC6020] with the following suggestion:
5112 name: ietf-isis
5113 namespace: urn:ietf:params:xml:ns:yang:ietf-isis
5114 prefix: isis
5115 reference: RFC XXXX
5117 10. References
5119 10.1. Normative References
5121 [I-D.ietf-bfd-yang]
5122 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and
5123 G. Mirsky, "YANG Data Model for Bidirectional Forwarding
5124 Detection (BFD)", draft-ietf-bfd-yang-17 (work in
5125 progress), August 2018.
5127 [ISO-10589]
5128 "Intermediate System to Intermediate System intra- domain
5129 routeing information exchange protocol for use in
5130 conjunction with the protocol for providing the
5131 connectionless-mode network service (ISO 8473)",
5132 International Standard 10589: 2002, Second Edition, 2002.
5134 [RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and
5135 dual environments", RFC 1195, DOI 10.17487/RFC1195,
5136 December 1990, .
5138 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
5139 Requirement Levels", BCP 14, RFC 2119,
5140 DOI 10.17487/RFC2119, March 1997,
5141 .
5143 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
5144 DOI 10.17487/RFC3688, January 2004,
5145 .
5147 [RFC4090] Pan, P., Ed., Swallow, G., Ed., and A. Atlas, Ed., "Fast
5148 Reroute Extensions to RSVP-TE for LSP Tunnels", RFC 4090,
5149 DOI 10.17487/RFC4090, May 2005,
5150 .
5152 [RFC5029] Vasseur, JP. and S. Previdi, "Definition of an IS-IS Link
5153 Attribute Sub-TLV", RFC 5029, DOI 10.17487/RFC5029,
5154 September 2007, .
5156 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi
5157 Topology (MT) Routing in Intermediate System to
5158 Intermediate Systems (IS-ISs)", RFC 5120,
5159 DOI 10.17487/RFC5120, February 2008,
5160 .
5162 [RFC5130] Previdi, S., Shand, M., Ed., and C. Martin, "A Policy
5163 Control Mechanism in IS-IS Using Administrative Tags",
5164 RFC 5130, DOI 10.17487/RFC5130, February 2008,
5165 .
5167 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for
5168 IP Fast Reroute: Loop-Free Alternates", RFC 5286,
5169 DOI 10.17487/RFC5286, September 2008,
5170 .
5172 [RFC5301] McPherson, D. and N. Shen, "Dynamic Hostname Exchange
5173 Mechanism for IS-IS", RFC 5301, DOI 10.17487/RFC5301,
5174 October 2008, .
5176 [RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-wide Prefix
5177 Distribution with Two-Level IS-IS", RFC 5302,
5178 DOI 10.17487/RFC5302, October 2008,
5179 .
5181 [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic
5182 Engineering", RFC 5305, DOI 10.17487/RFC5305, October
5183 2008, .
5185 [RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS",
5186 RFC 5306, DOI 10.17487/RFC5306, October 2008,
5187 .
5189 [RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., "IS-IS Extensions
5190 in Support of Generalized Multi-Protocol Label Switching
5191 (GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008,
5192 .
5194 [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308,
5195 DOI 10.17487/RFC5308, October 2008,
5196 .
5198 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP
5199 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March
5200 2009, .
5202 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection
5203 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010,
5204 .
5206 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection
5207 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881,
5208 DOI 10.17487/RFC5881, June 2010,
5209 .
5211 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
5212 the Network Configuration Protocol (NETCONF)", RFC 6020,
5213 DOI 10.17487/RFC6020, October 2010,
5214 .
5216 [RFC6119] Harrison, J., Berger, J., and M. Bartlett, "IPv6 Traffic
5217 Engineering in IS-IS", RFC 6119, DOI 10.17487/RFC6119,
5218 February 2011, .
5220 [RFC6232] Wei, F., Qin, Y., Li, Z., Li, T., and J. Dong, "Purge
5221 Originator Identification TLV for IS-IS", RFC 6232,
5222 DOI 10.17487/RFC6232, May 2011,
5223 .
5225 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
5226 and A. Bierman, Ed., "Network Configuration Protocol
5227 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
5228 .
5230 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
5231 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
5232 .
5234 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
5235 RFC 6991, DOI 10.17487/RFC6991, July 2013,
5236 .
5238 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N.
5239 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)",
5240 RFC 7490, DOI 10.17487/RFC7490, April 2015,
5241 .
5243 [RFC7794] Ginsberg, L., Ed., Decraene, B., Previdi, S., Xu, X., and
5244 U. Chunduri, "IS-IS Prefix Attributes for Extended IPv4
5245 and IPv6 Reachability", RFC 7794, DOI 10.17487/RFC7794,
5246 March 2016, .
5248 [RFC7917] Sarkar, P., Ed., Gredler, H., Hegde, S., Litkowski, S.,
5249 and B. Decraene, "Advertising Node Administrative Tags in
5250 IS-IS", RFC 7917, DOI 10.17487/RFC7917, July 2016,
5251 .
5253 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
5254 RFC 7950, DOI 10.17487/RFC7950, August 2016,
5255 .
5257 [RFC7981] Ginsberg, L., Previdi, S., and M. Chen, "IS-IS Extensions
5258 for Advertising Router Information", RFC 7981,
5259 DOI 10.17487/RFC7981, October 2016,
5260 .
5262 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
5263 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
5264 .
5266 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
5267 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
5268 May 2017, .
5270 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J.
5271 Zhang, "YANG Data Model for Key Chains", RFC 8177,
5272 DOI 10.17487/RFC8177, June 2017,
5273 .
5275 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
5276 "Common YANG Data Types for the Routing Area", RFC 8294,
5277 DOI 10.17487/RFC8294, December 2017,
5278 .
5280 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
5281 Access Control Model", STD 91, RFC 8341,
5282 DOI 10.17487/RFC8341, March 2018,
5283 .
5285 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
5286 and R. Wilton, "Network Management Datastore Architecture
5287 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
5288 .
5290 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface
5291 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
5292 .
5294 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
5295 Routing Management (NMDA Version)", RFC 8349,
5296 DOI 10.17487/RFC8349, March 2018,
5297 .
5299 [RFC8405] Decraene, B., Litkowski, S., Gredler, H., Lindem, A.,
5300 Francois, P., and C. Bowers, "Shortest Path First (SPF)
5301 Back-Off Delay Algorithm for Link-State IGPs", RFC 8405,
5302 DOI 10.17487/RFC8405, June 2018,
5303 .
5305 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
5306 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
5307 .
5309 [RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward,
5310 D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE)
5311 Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March
5312 2019, .
5314 10.2. Informative References
5316 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
5317 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
5318 .
5320 Appendix A. Example of IS-IS configuration in XML
5322 This section gives an example of configuration of an IS-IS instance
5323 on a device. The example is written in XML.
5325
5326
5327
5328 SLI
5329 1.1.1.1
5330
5331
5332 ISIS-example
5333
5334
5335
5336 isis:isis
5337
5338
5339
5340 true
5341 level-2
5342 87FC.FCDF.4432
5343 49.0001
5344
5345
5346 192.0.2.1
5347
5348
5349 65535
5350 65000
5351
5352 wide-only
5353
5354
5355 111111
5356
5357
5358
5359 ipv4
5360 true
5361
5362
5363 ipv6
5364 true
5365
5366
5367
5368
5369 Loopback0
5370 200
5371
5372 0
5373
5374 true
5375
5376
5377 Eth1
5378 level-2
5379 point-to-point
5380
5381 167890
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391 Loopback0
5392
5393
5394 ianaift:softwareLoopback
5395
5396 enabled
5397
5398
5399 192.0.2.1
5400 32
5401
5402
5403
5404
5405 2001:DB8::1
5406 128
5407
5408
5409
5410
5411 Eth1
5412
5413
5414 ianaift:ethernetCsmacd
5415
5416 enabled
5417
5418
5419 198.51.100.1
5420 30
5421
5422
5423
5424
5425 2001:DB8:0:0:FF::1
5426 64
5427
5428
5429
5430
5431
5433 Authors' Addresses
5435 Stephane Litkowski
5436 Orange
5438 Email: stephane.litkowski@orange.com
5440 Derek Yeung
5441 Arrcus, Inc
5443 Email: derek@arrcus.com
5445 Acee Lindem
5446 Cisco Systems
5448 Email: acee@cisco.com
5450 Jeffrey Zhang
5451 Juniper Networks
5453 Email: zzhang@juniper.net
5454 Ladislav Lhotka
5455 CZ.NIC
5457 Email: lhotka@nic.cz