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