idnits 2.17.1
draft-ietf-isis-yang-isis-cfg-41.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 08, 2019) is 1662 days in the past. Is this
intentional?
Checking references for intended status: Proposed Standard
----------------------------------------------------------------------------
(See RFCs 3967 and 4897 for information about using normative references
to lower-maturity documents in RFCs)
-- Possible downref: Non-RFC (?) normative reference: ref. 'ISO-10589'
** Obsolete normative reference: RFC 5306 (Obsoleted by RFC 8706)
** Downref: Normative reference to an Informational RFC: RFC 5443
== Outdated reference: A later version (-13) exists of
draft-ietf-rtgwg-segment-routing-ti-lfa-01
Summary: 2 errors (**), 0 flaws (~~), 5 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 10, 2020 Arrcus, Inc
6 A. Lindem
7 Cisco Systems
8 J. Zhang
9 Juniper Networks
10 L. Lhotka
11 CZ.NIC
12 October 08, 2019
14 YANG Data Model for IS-IS Protocol
15 draft-ietf-isis-yang-isis-cfg-41
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 10, 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 Based (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-08.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-08 {
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 "Internal or External (I/E) Metric bit value.
3659 Set to false to indicate an internal metric.";
3660 }
3661 container default-metric {
3662 leaf metric {
3663 type std-metric;
3664 description "Default IS-IS metric for IPv4 prefix";
3665 }
3666 description "IS-IS default metric container.";
3667 }
3668 container delay-metric {
3669 leaf metric {
3670 type std-metric;
3671 description "IS-IS delay metric for IPv4 prefix";
3672 }
3673 leaf supported {
3674 type boolean;
3675 default "false";
3676 description
3677 "Indicates whether IS-IS delay metric is supported.";
3678 }
3679 description "IS-IS delay metric container.";
3680 }
3681 container expense-metric {
3682 leaf metric {
3683 type std-metric;
3684 description "IS-IS expense metric for IPv4 prefix";
3685 }
3686 leaf supported {
3687 type boolean;
3688 default "false";
3689 description
3690 "Indicates whether IS-IS expense metric is supported.";
3691 }
3692 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.";
3743 }
3744 uses prefix-attributes-extension;
3745 }
3747 grouping prefix-ipv6-extended {
3748 description "Grouping for attributes of an IPv6 prefix
3749 as defined in RFC5308.";
3750 leaf up-down {
3751 type boolean;
3752 description "Value of up/down bit.
3753 Set to true when the prefix has been advertised down
3754 the hierarchy.";
3755 }
3756 leaf ip-prefix {
3757 type inet:ipv6-address;
3758 description "IPv6 prefix address";
3759 }
3760 leaf prefix-len {
3761 type uint8;
3762 description "IPv6 prefix length (in bits)";
3763 }
3764 leaf metric {
3765 type wide-metric;
3766 description "IS-IS wide metric value";
3767 }
3768 leaf-list tag {
3769 type uint32;
3770 description
3771 "List of 32-bit tags associated with the IPv4 prefix.";
3772 }
3773 leaf-list tag64 {
3774 type uint64;
3775 description
3776 "List of 64-bit tags associated with the IPv4 prefix.";
3777 }
3778 uses prefix-attributes-extension;
3779 }
3781 /* TLVs and sub-TLVs for neighbors */
3783 grouping neighbor-link-attributes {
3784 description
3785 "Grouping for link attributes as defined
3786 in RFC5029";
3787 leaf link-attributes-flags {
3788 type uint16;
3789 description
3790 "Flags for the link attributes";
3792 }
3793 }
3794 grouping neighbor-gmpls-extensions {
3795 description
3796 "Grouping for GMPLS attributes of a neighbor as defined
3797 in RFC5307";
3798 leaf link-local-id {
3799 type uint32;
3800 description
3801 "Local identifier of the link.";
3802 }
3803 leaf remote-local-id {
3804 type uint32;
3805 description
3806 "Remote identifier of the link.";
3807 }
3808 leaf protection-capability {
3809 type uint8;
3810 description
3811 "Describes the protection capabilities
3812 of the link. This is the value of the
3813 first octet of the sub-TLV type 20 value.";
3814 }
3815 container interface-switching-capability {
3816 description
3817 "Interface switching capabilities of the link.";
3818 leaf switching-capability {
3819 type uint8;
3820 description
3821 "Switching capability of the link.";
3822 }
3823 leaf encoding {
3824 type uint8;
3825 description
3826 "Type of encoding of the LSP being used.";
3827 }
3828 container max-lsp-bandwidths {
3829 description "Per-priority max LSP bandwidths.";
3830 list max-lsp-bandwidth {
3831 leaf priority {
3832 type uint8 {
3833 range "0 .. 7";
3834 }
3835 description "Priority from 0 to 7.";
3836 }
3837 leaf bandwidth {
3838 type rt-types:bandwidth-ieee-float32;
3839 description "max LSP bandwidth.";
3841 }
3842 description
3843 "List of max LSP bandwidths for different
3844 priorities.";
3845 }
3846 }
3847 container tdm-specific {
3848 when "../switching-capability = 100";
3849 description
3850 "Switching Capability-specific information applicable
3851 when switching type is TDM.";
3853 leaf minimum-lsp-bandwidth {
3854 type rt-types:bandwidth-ieee-float32;
3855 description "minimum LSP bandwidth.";
3856 }
3857 leaf indication {
3858 type uint8;
3859 description
3860 "The indication whether the interface supports Standard
3861 or Arbitrary SONET/SDH.";
3862 }
3863 }
3864 container psc-specific {
3865 when "../switching-capability >= 1 and
3866 ../switching-capability <= 4";
3867 description
3868 "Switching Capability-specific information applicable
3869 when switching type is PSC1,PSC2,PSC3 or PSC4.";
3871 leaf minimum-lsp-bandwidth {
3872 type rt-types:bandwidth-ieee-float32;
3873 description "minimum LSP bandwidth.";
3874 }
3875 leaf mtu {
3876 type uint16;
3877 units bytes;
3878 description
3879 "Interface MTU";
3880 }
3881 }
3882 }
3883 }
3885 grouping neighbor-extended-te-extensions {
3886 description
3887 "Grouping for TE attributes of a neighbor as defined
3888 in RFC8570";
3890 container unidirectional-link-delay {
3891 description
3892 "Container for the average delay
3893 from the local neighbor to the remote one.";
3894 container flags {
3895 leaf-list unidirectional-link-delay-subtlv-flags {
3896 type identityref {
3897 base unidirectional-link-delay-subtlv-flag;
3898 }
3899 description
3900 "This list contains identities for the bits
3901 which are set.";
3902 }
3903 description
3904 "unidirectional-link-delay subTLV flags.";
3905 }
3906 leaf value {
3907 type uint32;
3908 units usec;
3909 description
3910 "Delay value expressed in microseconds.";
3911 }
3912 }
3913 container min-max-unidirectional-link-delay {
3914 description
3915 "Container for the min and max delay
3916 from the local neighbor to the remote one.";
3917 container flags {
3918 leaf-list min-max-unidirectional-link-delay-subtlv-flags {
3919 type identityref {
3920 base min-max-unidirectional-link-delay-subtlv-flag;
3921 }
3922 description
3923 "This list contains identities for the bits which are
3924 set.";
3925 }
3926 description
3927 "min-max-unidirectional-link-delay subTLV flags.";
3928 }
3929 leaf min-value {
3930 type uint32;
3931 units usec;
3932 description
3933 "Minimum delay value expressed in microseconds.";
3934 }
3935 leaf max-value {
3936 type uint32;
3937 units usec;
3938 description
3939 "Maximum delay value expressed in microseconds.";
3940 }
3941 }
3942 container unidirectional-link-delay-variation {
3943 description
3944 "Container for the average delay variation
3945 from the local neighbor to the remote one.";
3946 leaf value {
3947 type uint32;
3948 units usec;
3949 description
3950 "Delay variation value expressed in microseconds.";
3951 }
3952 }
3953 container unidirectional-link-loss {
3954 description
3955 "Container for the packet loss
3956 from the local neighbor to the remote one.";
3957 container flags {
3958 leaf-list unidirectional-link-loss-subtlv-flags {
3959 type identityref {
3960 base unidirectional-link-loss-subtlv-flag;
3961 }
3962 description
3963 "This list contains identities for the bits which are
3964 set.";
3965 }
3966 description
3967 "unidirectional-link-loss subTLV flags.";
3968 }
3969 leaf value {
3970 type uint32;
3971 units percent;
3972 description
3973 "Link packet loss expressed as a percentage
3974 of the total traffic sent over a configurable interval.";
3975 }
3976 }
3977 container unidirectional-link-residual-bandwidth {
3978 description
3979 "Container for the residual bandwidth
3980 from the local neighbor to the remote one.";
3981 leaf value {
3982 type rt-types:bandwidth-ieee-float32;
3983 units Bps;
3984 description
3985 "Residual bandwidth.";
3987 }
3988 }
3989 container unidirectional-link-available-bandwidth {
3990 description
3991 "Container for the available bandwidth
3992 from the local neighbor to the remote one.";
3993 leaf value {
3994 type rt-types:bandwidth-ieee-float32;
3995 units Bps;
3996 description
3997 "Available bandwidth.";
3998 }
3999 }
4000 container unidirectional-link-utilized-bandwidth {
4001 description
4002 "Container for the utilized bandwidth
4003 from the local neighbor to the remote one.";
4004 leaf value {
4005 type rt-types:bandwidth-ieee-float32;
4006 units Bps;
4007 description
4008 "Utilized bandwidth.";
4009 }
4010 }
4011 }
4013 grouping neighbor-te-extensions {
4014 description
4015 "Grouping for TE attributes of a neighbor as defined
4016 in RFC5305";
4017 leaf admin-group {
4018 type uint32;
4019 description
4020 "Administrative group/Resource Class/Color.";
4021 }
4022 container local-if-ipv4-addrs {
4023 description "All local interface IPv4 addresses.";
4024 leaf-list local-if-ipv4-addr {
4025 type inet:ipv4-address;
4026 description
4027 "List of local interface IPv4 addresses.";
4028 }
4029 }
4030 container remote-if-ipv4-addrs {
4031 description "All remote interface IPv4 addresses.";
4032 leaf-list remote-if-ipv4-addr {
4033 type inet:ipv4-address;
4034 description
4035 "List of remote interface IPv4 addresses.";
4036 }
4037 }
4038 leaf te-metric {
4039 type uint32;
4040 description "TE metric.";
4041 }
4042 leaf max-bandwidth {
4043 type rt-types:bandwidth-ieee-float32;
4044 description "Maximum bandwidth.";
4045 }
4046 leaf max-reservable-bandwidth {
4047 type rt-types:bandwidth-ieee-float32;
4048 description "Maximum reservable bandwidth.";
4049 }
4050 container unreserved-bandwidths {
4051 description "All unreserved bandwidths.";
4052 list unreserved-bandwidth {
4053 leaf priority {
4054 type uint8 {
4055 range "0 .. 7";
4056 }
4057 description "Priority from 0 to 7.";
4058 }
4059 leaf unreserved-bandwidth {
4060 type rt-types:bandwidth-ieee-float32;
4061 description "Unreserved bandwidth.";
4062 }
4063 description
4064 "List of unreserved bandwidths for different
4065 priorities.";
4066 }
4067 }
4068 }
4070 grouping neighbor-extended {
4071 description
4072 "Grouping for attributes of an IS-IS extended neighbor.";
4073 leaf neighbor-id {
4074 type extended-system-id;
4075 description "system-id of the extended neighbor.";
4076 }
4077 container instances {
4078 description "List of all adjacencies between the local
4079 system and the neighbor system-id.";
4080 list instance {
4081 key id;
4082 leaf id {
4083 type uint32;
4084 description "Unique identifier of an instance of a
4085 particular neighbor.";
4086 }
4087 leaf metric {
4088 type wide-metric;
4089 description "IS-IS wide metric for extended neighbor";
4090 }
4091 uses neighbor-gmpls-extensions;
4092 uses neighbor-te-extensions;
4093 uses neighbor-extended-te-extensions;
4094 uses neighbor-link-attributes;
4095 uses unknown-tlvs;
4096 description "Instance of a particular adjacency.";
4097 }
4098 }
4099 }
4101 grouping neighbor {
4102 description "IS-IS standard neighbor grouping.";
4103 leaf neighbor-id {
4104 type extended-system-id;
4105 description "IS-IS neighbor system-id";
4106 }
4107 container instances {
4108 description "List of all adjacencies between the local
4109 system and the neighbor system-id.";
4110 list instance {
4111 key id;
4113 leaf id {
4114 type uint32;
4115 description "Unique identifier of an instance of a
4116 particular neighbor.";
4117 }
4118 leaf i-e {
4119 type boolean;
4120 description
4121 "Internal or External (I/E) Metric bit value";
4122 }
4123 container default-metric {
4124 leaf metric {
4125 type std-metric;
4126 description "IS-IS default metric value";
4127 }
4128 description "IS-IS default metric container";
4129 }
4130 container delay-metric {
4131 leaf metric {
4132 type std-metric;
4133 description "IS-IS delay metric value";
4134 }
4135 leaf supported {
4136 type boolean;
4137 default "false";
4138 description "IS-IS delay metric supported";
4139 }
4140 description "IS-IS delay metric container";
4141 }
4142 container expense-metric {
4143 leaf metric {
4144 type std-metric;
4145 description "IS-IS expense metric value";
4146 }
4147 leaf supported {
4148 type boolean;
4149 default "false";
4150 description "IS-IS expense metric supported";
4151 }
4152 description "IS-IS expense metric container";
4153 }
4154 container error-metric {
4155 leaf metric {
4156 type std-metric;
4157 description "IS-IS error metric value";
4158 }
4159 leaf supported {
4160 type boolean;
4161 default "false";
4162 description "IS-IS error metric supported";
4163 }
4164 description "IS-IS error metric container";
4165 }
4166 description "Instance of a particular adjacency
4167 as defined in ISO10589.";
4168 }
4169 }
4170 }
4172 /* Top-level TLVs */
4174 grouping tlv132-ipv4-addresses {
4175 leaf-list ipv4-addresses {
4176 type inet:ipv4-address;
4177 description
4178 "List of IPv4 addresses of the IS-IS node - IS-IS
4179 reference is TLV 132.";
4180 }
4181 description "Grouping for TLV132.";
4182 }
4183 grouping tlv232-ipv6-addresses {
4184 leaf-list ipv6-addresses {
4185 type inet:ipv6-address;
4186 description
4187 "List of IPv6 addresses of the IS-IS node - IS-IS
4188 reference is TLV 232.";
4189 }
4190 description "Grouping for TLV232.";
4191 }
4192 grouping tlv134-ipv4-te-rid {
4193 leaf ipv4-te-routerid {
4194 type inet:ipv4-address;
4195 description
4196 "IPv4 Traffic Engineering router ID of the IS-IS node -
4197 IS-IS reference is TLV 134.";
4198 }
4199 description "Grouping for TLV134.";
4200 }
4201 grouping tlv140-ipv6-te-rid {
4202 leaf ipv6-te-routerid {
4203 type inet:ipv6-address;
4204 description
4205 "IPv6 Traffic Engineering router ID of the IS-IS node -
4206 IS-IS reference is TLV 140.";
4207 }
4208 description "Grouping for TLV140.";
4209 }
4210 grouping tlv129-protocols {
4211 leaf-list protocol-supported {
4212 type uint8;
4213 description
4214 "List of supported protocols of the IS-IS node -
4215 IS-IS reference is TLV 129.";
4216 }
4217 description "Grouping for TLV129.";
4218 }
4219 grouping tlv137-hostname {
4220 leaf dynamic-hostname {
4221 type string;
4222 description
4223 "Host Name of the IS-IS node - IS-IS reference
4224 is TLV 137.";
4225 }
4226 description "Grouping for TLV137.";
4227 }
4228 grouping tlv10-authentication {
4229 container authentication {
4230 leaf authentication-type {
4231 type identityref {
4232 base key-chain:crypto-algorithm;
4233 }
4234 description
4235 "Authentication type to be used with IS-IS node.";
4236 }
4237 leaf authentication-key {
4238 type string;
4239 description
4240 "Authentication key to be used. For security reasons,
4241 the authentication key MUST NOT be presented in
4242 a clear text format in response to any request
4243 (e.g., via get, get-config).";
4244 }
4245 description
4246 "IS-IS node authentication information container -
4247 IS-IS reference is TLV 10.";
4248 }
4249 description "Grouping for TLV10.";
4250 }
4251 grouping tlv229-mt {
4252 container mt-entries {
4253 list topology {
4254 description
4255 "List of topologies supported";
4257 leaf mt-id {
4258 type uint16 {
4259 range "0 .. 4095";
4260 }
4261 description
4262 "Multi-Topology identifier of topology.";
4263 }
4264 container attributes {
4265 leaf-list flags {
4266 type identityref {
4267 base tlv229-flag;
4268 }
4269 description
4270 "This list contains identities for the bits which are
4271 set.";
4272 }
4273 description
4274 "TLV 229 flags.";
4275 }
4276 }
4277 description
4278 "IS-IS node topology information container -
4279 IS-IS reference is TLV 229.";
4280 }
4281 description "Grouping for TLV229.";
4282 }
4284 grouping tlv242-router-capabilities {
4285 container router-capabilities {
4286 list router-capability {
4287 container flags {
4288 leaf-list router-capability-flags {
4289 type identityref {
4290 base router-capability-flag;
4291 }
4292 description
4293 "This list contains identities for the bits which are
4294 set.";
4295 }
4296 description
4297 "Router capability flags.";
4298 }
4299 container node-tags {
4300 if-feature node-tag;
4301 list node-tag {
4302 leaf tag {
4303 type uint32;
4304 description "Node tag value.";
4305 }
4306 description "List of tags.";
4307 }
4308 description "Container for node admin tags";
4309 }
4311 uses unknown-tlvs;
4313 description
4314 "IS-IS node capabilities. This list element may
4315 be extended with detailed information - IS-IS
4316 reference is TLV 242.";
4317 }
4318 description "List of router capability TLVs.";
4319 }
4320 description "Grouping for TLV242.";
4321 }
4322 grouping tlv138-srlg {
4323 description
4324 "Grouping for TLV138.";
4325 container links-srlgs {
4326 list links {
4327 leaf neighbor-id {
4328 type extended-system-id;
4329 description "system-id of the extended neighbor.";
4330 }
4331 leaf flags {
4332 type uint8;
4333 description
4334 "Flags associated with the link.";
4335 }
4336 leaf link-local-id {
4337 type union {
4338 type inet:ip-address;
4339 type uint32;
4340 }
4341 description
4342 "Local identifier of the link.
4343 It could be an IPv4 address or a local identifier.";
4344 }
4345 leaf link-remote-id {
4346 type union {
4347 type inet:ip-address;
4348 type uint32;
4349 }
4350 description
4351 "Remote identifier of the link.
4352 It could be an IPv4 address or a remotely learned
4353 identifier.";
4354 }
4355 container srlgs {
4356 description "List of SRLGs.";
4357 leaf-list srlg {
4358 type uint32;
4359 description
4360 "SRLG value of the link.";
4361 }
4362 }
4363 description
4364 "SRLG attribute of a link.";
4365 }
4366 description
4367 "List of links with SRLGs";
4368 }
4369 }
4370 /* Grouping for LSDB description */
4372 grouping lsp-entry {
4373 description "IS-IS LSP database entry grouping";
4375 leaf decoded-completed {
4376 type boolean;
4377 description "IS-IS LSP body fully decoded.";
4378 }
4379 leaf raw-data {
4380 type yang:hex-string;
4381 description
4382 "The hexadecimal representation of the complete LSP in
4383 network-byte order (NBO) as received or originated.";
4384 }
4385 leaf lsp-id {
4386 type lsp-id;
4387 description "LSP ID of the LSP";
4388 }
4389 leaf checksum {
4390 type uint16;
4391 description "LSP checksum";
4392 }
4393 leaf remaining-lifetime {
4394 type uint16;
4395 units "seconds";
4396 description
4397 "Remaining lifetime (in seconds) until LSP expiration.";
4398 }
4399 leaf sequence {
4400 type uint32;
4401 description
4402 "This leaf describes the sequence number of the LSP.";
4403 }
4404 container attributes {
4405 leaf-list lsp-flags {
4406 type identityref {
4407 base lsp-flag;
4408 }
4409 description
4410 "This list contains identities for the bits which are
4411 set.";
4412 }
4413 description "LSP attributes.";
4414 }
4416 uses tlv132-ipv4-addresses;
4417 uses tlv232-ipv6-addresses;
4418 uses tlv134-ipv4-te-rid;
4419 uses tlv140-ipv6-te-rid;
4420 uses tlv129-protocols;
4421 uses tlv137-hostname;
4422 uses tlv10-authentication;
4423 uses tlv229-mt;
4424 uses tlv242-router-capabilities;
4425 uses tlv138-srlg;
4426 uses unknown-tlvs;
4428 container is-neighbor {
4429 list neighbor {
4430 key neighbor-id;
4432 uses neighbor;
4433 description "List of neighbors.";
4434 }
4435 description
4436 "Standard IS neighbors container - IS-IS reference is
4437 TLV 2.";
4438 }
4440 container extended-is-neighbor {
4441 list neighbor {
4442 key neighbor-id;
4444 uses neighbor-extended;
4445 description
4446 "List of extended IS neighbors";
4447 }
4448 description
4449 "Standard IS extended neighbors container - IS-IS
4450 reference is TLV 22";
4451 }
4453 container ipv4-internal-reachability {
4454 list prefixes {
4455 uses prefix-ipv4-std;
4456 description "List of prefixes.";
4457 }
4458 description
4459 "IPv4 internal reachability information container - IS-IS
4460 reference is TLV 128.";
4461 }
4463 container ipv4-external-reachability {
4464 list prefixes {
4465 uses prefix-ipv4-std;
4466 description "List of prefixes.";
4467 }
4468 description
4469 "IPv4 external reachability information container -
4470 IS-IS reference is TLV 130.";
4471 }
4473 container extended-ipv4-reachability {
4474 list prefixes {
4475 uses prefix-ipv4-extended;
4476 uses unknown-tlvs;
4477 description "List of prefixes.";
4478 }
4479 description
4480 "IPv4 extended reachability information container -
4481 IS-IS reference is TLV 135.";
4482 }
4484 container mt-is-neighbor {
4485 list neighbor {
4486 leaf mt-id {
4487 type uint16 {
4488 range "0 .. 4095";
4489 }
4490 description "Multi-topology (MT) identifier";
4491 }
4492 uses neighbor-extended;
4493 description "List of neighbors.";
4494 }
4495 description
4496 "IS-IS multi-topology neighbor container - IS-IS
4497 reference is TLV 223.";
4498 }
4500 container mt-extended-ipv4-reachability {
4501 list prefixes {
4502 leaf mt-id {
4503 type uint16 {
4504 range "0 .. 4095";
4505 }
4506 description "Multi-topology (MT) identifier";
4507 }
4508 uses prefix-ipv4-extended;
4509 uses unknown-tlvs;
4510 description "List of extended prefixes.";
4511 }
4512 description
4513 "IPv4 multi-topology (MT) extended reachability
4514 information container - IS-IS reference is TLV 235.";
4515 }
4517 container mt-ipv6-reachability {
4518 list prefixes {
4519 leaf MT-ID {
4520 type uint16 {
4521 range "0 .. 4095";
4522 }
4523 description "Multi-topology (MT) identifier";
4524 }
4525 uses prefix-ipv6-extended;
4526 uses unknown-tlvs;
4527 description "List of IPv6 extended prefixes.";
4528 }
4529 description
4530 "IPv6 multi-topology (MT) extended reachability
4531 information container - IS-IS reference is TLV 237.";
4532 }
4534 container ipv6-reachability {
4535 list prefixes {
4536 uses prefix-ipv6-extended;
4537 uses unknown-tlvs;
4538 description "List of IPv6 prefixes.";
4539 }
4540 description
4541 "IPv6 reachability information container - IS-IS
4542 reference is TLV 236.";
4543 }
4544 }
4546 grouping lsdb {
4547 description "Link State Database (LSDB) grouping";
4548 container database {
4549 config false;
4550 list levels {
4551 key level;
4553 leaf level {
4554 type level-number;
4555 description "LSDB level number (1 or 2)";
4556 }
4557 list lsp {
4558 key lsp-id;
4559 uses lsp-entry;
4560 description "List of LSPs in LSDB";
4561 }
4562 description "List of LSPs for the LSDB level container";
4563 }
4564 description "IS-IS Link State database container";
4565 }
4566 }
4568 /* Augmentations */
4570 augment "/rt:routing/"
4571 +"rt:ribs/rt:rib/rt:routes/rt:route" {
4572 when "rt:source-protocol = 'isis:isis'" {
4573 description "IS-IS-specific route attributes.";
4574 }
4575 uses route-content;
4576 description
4577 "This augments route object in RIB with IS-IS-specific
4578 attributes.";
4579 }
4581 augment "/if:interfaces/if:interface" {
4582 leaf clns-mtu {
4583 if-feature osi-interface;
4584 type uint16;
4585 description "CLNS MTU of the interface";
4586 }
4587 description "ISO specific interface parameters.";
4588 }
4590 augment "/rt:routing/rt:control-plane-protocols/"
4591 +"rt:control-plane-protocol" {
4592 when "rt:type = 'isis:isis'" {
4593 description
4594 "This augment is only valid when routing protocol
4595 instance type is 'isis'";
4596 }
4597 description
4598 "This augments a routing protocol instance with IS-IS
4599 specific parameters.";
4600 container isis {
4601 must "count(area-address) > 0" {
4602 error-message
4603 "At least one area-address must be configured.";
4604 description
4605 "Enforce configuration of at least one area.";
4607 }
4609 uses instance-config;
4610 uses instance-state;
4612 container topologies {
4613 if-feature multi-topology;
4614 list topology {
4615 key "name";
4616 leaf enable {
4617 type boolean;
4618 description "Topology enable configuration";
4619 }
4620 leaf name {
4621 type leafref {
4622 path "../../../../../../rt:ribs/rt:rib/rt:name";
4623 }
4624 description
4625 "Routing Information Base (RIB) corresponding
4626 to topology.";
4627 }
4629 uses multi-topology-config;
4631 description "List of topologies";
4632 }
4633 description "Multi-topology container";
4634 }
4635 container interfaces {
4636 list interface {
4637 key "name";
4638 leaf name {
4639 type if:interface-ref;
4641 description
4642 "Reference to the interface within
4643 the routing-instance.";
4644 }
4645 uses interface-config;
4646 uses interface-state;
4647 container topologies {
4648 if-feature multi-topology;
4649 list topology {
4650 key name;
4652 leaf name {
4653 type leafref {
4654 path "../../../../../../../../"+
4655 "rt:ribs/rt:rib/rt:name";
4656 }
4658 description
4659 "Routing Information Base (RIB) corresponding
4660 to topology.";
4661 }
4662 uses multi-topology-interface-config;
4663 description "List of interface topologies";
4664 }
4665 description "Multi-topology container";
4666 }
4667 description "List of IS-IS interfaces.";
4668 }
4669 description
4670 "IS-IS interface specific configuration container";
4671 }
4673 description
4674 "IS-IS configuration/state top-level container";
4675 }
4676 }
4678 /* RPC methods */
4680 rpc clear-adjacency {
4681 description
4682 "This RPC request clears a particular set of IS-IS
4683 adjacencies. If the operation fails due to an internal
4684 reason, then the error-tag and error-app-tag should be
4685 set indicating the reason for the failure.";
4686 input {
4688 leaf routing-protocol-instance-name {
4689 type leafref {
4690 path "/rt:routing/rt:control-plane-protocols/"
4691 + "rt:control-plane-protocol/rt:name";
4692 }
4693 mandatory "true";
4694 description
4695 "Name of the IS-IS protocol instance whose IS-IS
4696 adjacency is being cleared.
4698 If the corresponding IS-IS instance doesn't exist,
4699 then the operation will fail with an error-tag of
4700 'data-missing' and an error-app-tag of
4701 'routing-protocol-instance-not-found'.";
4703 }
4704 leaf level {
4705 type level;
4706 description
4707 "IS-IS level of the adjacency to be cleared. If the
4708 IS-IS level is level-1-2, both level 1 and level 2
4709 adjacencies would be cleared.
4711 If the value provided is different from the one
4712 authorized in the enum type, then the operation
4713 SHALL fail with an error-tag of 'data-missing' and
4714 an error-app-tag of 'bad-isis-level'.";
4715 }
4716 leaf interface {
4717 type if:interface-ref;
4718 description
4719 "IS-IS interface name.
4721 If the corresponding IS-IS interface doesn't exist,
4722 then the operation SHALL fail with an error-tag of
4723 'data-missing' and an error-app-tag of
4724 'isis-interface-not-found'.";
4725 }
4726 }
4727 }
4729 rpc clear-database {
4730 description
4731 "This RPC request clears a particular IS-IS database. If
4732 the operation fails for an IS-IS internal reason, then
4733 the error-tag and error-app-tag should be set
4734 indicating the reason for the failure.";
4735 input {
4736 leaf routing-protocol-instance-name {
4737 type leafref {
4738 path "/rt:routing/rt:control-plane-protocols/"
4739 + "rt:control-plane-protocol/rt:name";
4740 }
4741 mandatory "true";
4742 description
4743 "Name of the IS-IS protocol instance whose IS-IS
4744 database(s) is/are being cleared.
4746 If the corresponding IS-IS instance doesn't exist,
4747 then the operation will fail with an error-tag of
4748 'data-missing' and an error-app-tag of
4749 'routing-protocol-instance-not-found'.";
4750 }
4751 leaf level {
4752 type level;
4753 description
4754 "IS-IS level of the adjacency to be cleared. If the
4755 IS-IS level is level-1-2, both level 1 and level 2
4756 databases would be cleared.
4758 If the value provided is different from the one
4759 authorized in the enum type, then the operation
4760 SHALL fail with an error-tag of 'data-missing' and
4761 an error-app-tag of 'bad-isis-level'.";
4762 }
4763 }
4764 }
4766 /* Notifications */
4768 notification database-overload {
4769 uses notification-instance-hdr;
4771 leaf overload {
4772 type enumeration {
4773 enum off {
4774 description
4775 "Indicates IS-IS instance has left overload state";
4776 }
4777 enum on {
4778 description
4779 "Indicates IS-IS instance has entered overload state";
4780 }
4782 }
4783 description "New overload state of the IS-IS instance";
4784 }
4785 description
4786 "This notification is sent when an IS-IS instance
4787 overload state changes.";
4788 }
4790 notification lsp-too-large {
4791 uses notification-instance-hdr;
4792 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 }
4845 notification id-len-mismatch {
4846 uses notification-instance-hdr;
4847 uses notification-interface-hdr;
4849 leaf pdu-field-len {
4850 type uint8;
4851 description "Size of the ID length in the received PDU";
4852 }
4853 leaf raw-pdu {
4854 type binary;
4855 description "Received raw PDU.";
4856 }
4857 description
4858 "This notification is sent when we receive a PDU
4859 with a different value for the system-id length.
4860 The notification generation must be throttled
4861 with at least 5 seconds between successive
4862 notifications.";
4863 }
4865 notification max-area-addresses-mismatch {
4866 uses notification-instance-hdr;
4867 uses notification-interface-hdr;
4869 leaf max-area-addresses {
4870 type uint8;
4871 description "Received number of supported areas";
4872 }
4873 leaf raw-pdu {
4874 type binary;
4875 description "Received raw PDU.";
4876 }
4877 description
4878 "This notification is sent when we receive a PDU
4879 with a different value for the Maximum Area Addresses.
4880 The notification generation must be throttled
4881 with at least 5 seconds between successive
4882 notifications.";
4883 }
4885 notification own-lsp-purge {
4886 uses notification-instance-hdr;
4887 uses notification-interface-hdr;
4888 leaf lsp-id {
4889 type lsp-id;
4890 description "LSP ID";
4891 }
4892 description
4893 "This notification is sent when the system receives
4894 a PDU with its own system-id and zero age.";
4895 }
4897 notification sequence-number-skipped {
4898 uses notification-instance-hdr;
4899 uses notification-interface-hdr;
4900 leaf lsp-id {
4901 type lsp-id;
4902 description "LSP ID";
4903 }
4904 description
4905 "This notification is sent when the system receives a
4906 PDU with its own system-id and different contents. The
4907 system has to originate the LSP with a higher sequence
4908 number.";
4909 }
4911 notification authentication-type-failure {
4912 uses notification-instance-hdr;
4913 uses notification-interface-hdr;
4914 leaf raw-pdu {
4915 type binary;
4916 description "Received raw PDU.";
4917 }
4918 description
4919 "This notification is sent when the system receives a
4920 PDU with the wrong authentication type field.
4921 The notification generation must be throttled
4922 with at least 5 seconds between successive
4923 notifications.";
4924 }
4926 notification authentication-failure {
4927 uses notification-instance-hdr;
4928 uses notification-interface-hdr;
4929 leaf raw-pdu {
4930 type binary;
4931 description "Received raw PDU.";
4932 }
4933 description
4934 "This notification is sent when the system receives
4935 a PDU with the wrong authentication information.
4936 The notification generation must be throttled
4937 with at least 5 seconds between successive
4938 notifications.";
4939 }
4940 notification version-skew {
4941 uses notification-instance-hdr;
4942 uses notification-interface-hdr;
4943 leaf protocol-version {
4944 type uint8;
4945 description "Protocol version received in the PDU.";
4946 }
4947 leaf raw-pdu {
4948 type binary;
4949 description "Received raw PDU.";
4950 }
4951 description
4952 "This notification is sent when the system receives a
4953 PDU with a different protocol version number.
4954 The notification generation must be throttled
4955 with at least 5 seconds between successive
4956 notifications.";
4957 }
4959 notification area-mismatch {
4960 uses notification-instance-hdr;
4961 uses notification-interface-hdr;
4962 leaf raw-pdu {
4963 type binary;
4964 description "Received raw PDU.";
4965 }
4966 description
4967 "This notification is sent when the system receives a
4968 Hello PDU from an IS that does not share any area
4969 address. The notification generation must be throttled
4970 with at least 5 seconds between successive
4971 notifications.";
4972 }
4974 notification rejected-adjacency {
4975 uses notification-instance-hdr;
4976 uses notification-interface-hdr;
4977 leaf raw-pdu {
4978 type binary;
4979 description
4980 "Received raw PDU.";
4981 }
4982 leaf reason {
4983 type string {
4984 length "0..255";
4985 }
4986 description
4987 "The system may provide a reason to reject the
4988 adjacency. If the reason is not available,
4989 the reason string will not be returned.
4990 The expected format is a single line text.";
4991 }
4992 description
4993 "This notification is sent when the system receives a
4994 Hello PDU from an IS but does not establish an adjacency
4995 for some reason. The notification generation must be
4996 throttled with at least 5 seconds between successive
4997 notifications.";
4998 }
5000 notification protocols-supported-mismatch {
5001 uses notification-instance-hdr;
5002 uses notification-interface-hdr;
5003 leaf raw-pdu {
5004 type binary;
5005 description "Received raw PDU.";
5006 }
5007 leaf-list protocols {
5008 type uint8;
5009 description
5010 "List of protocols supported by the remote system.";
5011 }
5012 description
5013 "This notification is sent when the system receives a
5014 non-pseudonode LSP that has no matching protocols
5015 supported. The notification generation must be throttled
5016 with at least 5 seconds between successive
5017 notifications.";
5018 }
5020 notification lsp-error-detected {
5021 uses notification-instance-hdr;
5022 uses notification-interface-hdr;
5023 leaf lsp-id {
5024 type lsp-id;
5025 description "LSP ID.";
5026 }
5027 leaf raw-pdu {
5028 type binary;
5029 description "Received raw PDU.";
5030 }
5031 leaf error-offset {
5032 type uint32;
5033 description
5034 "If the problem is a malformed TLV, the error-offset
5035 points to the start of the TLV. If the problem is with
5036 the LSP header, the error-offset points to the errant
5037 byte";
5038 }
5039 leaf tlv-type {
5040 type uint8;
5041 description
5042 "If the problem is a malformed TLV, the tlv-type is set
5043 to the type value of the suspicious TLV. Otherwise,
5044 this leaf is not present.";
5045 }
5046 description
5047 "This notification is sent when the system receives an
5048 LSP with a parse error. The notification generation must
5049 be throttled with at least 5 seconds between successive
5050 notifications.";
5051 }
5053 notification adjacency-state-change {
5054 uses notification-instance-hdr;
5055 uses notification-interface-hdr;
5056 leaf neighbor {
5057 type string {
5058 length "1..255";
5059 }
5060 description
5061 "Name of the neighbor.
5062 It corresponds to the hostname associated
5063 with the system-id of the neighbor in the
5064 mapping database (RFC5301).
5065 If the name of the neighbor is
5066 not available, it is not returned.";
5067 }
5068 leaf neighbor-system-id {
5069 type system-id;
5070 description "Neighbor system-id";
5071 }
5072 leaf state {
5073 type adj-state-type;
5075 description "New state of the IS-IS adjacency.";
5076 }
5077 leaf reason {
5078 type string {
5079 length "1..255";
5080 }
5081 description
5082 "If the adjacency is going to DOWN, this leaf provides
5083 a reason for the adjacency going down. The reason is
5084 provided as a text. If the adjacency is going to UP, no
5085 reason is provided. The expected format is a single line
5086 text.";
5087 }
5088 description
5089 "This notification is sent when an IS-IS adjacency
5090 moves to Up state or to Down state.";
5091 }
5093 notification lsp-received {
5094 uses notification-instance-hdr;
5095 uses notification-interface-hdr;
5097 leaf lsp-id {
5098 type lsp-id;
5099 description "LSP ID";
5100 }
5101 leaf sequence {
5102 type uint32;
5103 description "Sequence number of the received LSP.";
5104 }
5105 leaf received-timestamp {
5106 type yang:timestamp;
5108 description "Timestamp when the LSP was received.";
5109 }
5110 leaf neighbor-system-id {
5111 type system-id;
5112 description "Neighbor system-id of LSP sender";
5113 }
5114 description
5115 "This notification is sent when an LSP is received.
5116 The notification generation must be throttled with at
5117 least 5 seconds between successive notifications.";
5118 }
5120 notification lsp-generation {
5121 uses notification-instance-hdr;
5123 leaf lsp-id {
5124 type lsp-id;
5125 description "LSP ID";
5126 }
5127 leaf sequence {
5128 type uint32;
5129 description "Sequence number of the received LSP.";
5130 }
5131 leaf send-timestamp {
5132 type yang:timestamp;
5134 description "Timestamp when our LSP was regenerated.";
5135 }
5136 description
5137 "This notification is sent when an LSP is regenerated.
5138 The notification generation must be throttled with at
5139 least 5 seconds between successive notifications.";
5140 }
5141 }
5143
5145 7. Security Considerations
5147 The YANG modules specified in this document define a schema for data
5148 that is designed to be accessed via network management protocols such
5149 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
5150 is the secure transport layer, and the mandatory-to-implement secure
5151 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
5152 is HTTPS, and the mandatory-to-implement secure transport is TLS
5153 [RFC8446].
5155 The NETCONF Access Control Model (NACM) [RFC8341] provides the means
5156 to restrict access for particular NETCONF or RESTCONF users to a pre-
5157 configured subset of all available NETCONF or RESTCONF protocol
5158 operations and content.
5160 There are a number of data nodes defined in ietf-isis.yang module
5161 that are writable/creatable/deletable (i.e., config true, which is
5162 the default). These data nodes may be considered sensitive or
5163 vulnerable in some network environments. Write operations (e.g.,
5164 edit-config) to these data nodes without proper protection can have a
5165 negative effect on network operations. Writable data node represent
5166 configuration of each instance and interface. These correspond to
5167 the following schema nodes:
5169 /isis
5171 /isis/interfaces/interface[name]
5173 For IS-IS, the ability to modify IS-IS configuration will allow the
5174 entire IS-IS domain to be compromised including forming adjacencies
5175 with unauthorized routers to misroute traffic or mount a massive
5176 Denial-of-Service (DoS) attack. For example, adding IS-IS on any
5177 unprotected interface could allow an IS-IS adjacency to be formed
5178 with an unauthorized and malicious neighbor. Once an adjacency is
5179 formed, traffic could be hijacked. As a simpler example, a Denial-
5180 Of-Service attack could be mounted by changing the cost of an IS-IS
5181 interface to be asymmetric such that a hard routing loop ensues. In
5182 general, unauthorized modification of most IS-IS features will pose
5183 their own set of security risks and the "Security Considerations" in
5184 the respective reference RFCs should be consulted.
5186 Some of the readable data nodes in the ietf-isis.yang module may be
5187 considered sensitive or vulnerable in some network environments. It
5188 is thus important to control read access (e.g., via get, get-config,
5189 or notification) to these data nodes. The exposure of the Link State
5190 Database (LSDB) will expose the detailed topology of the network.
5191 Similarly, the IS-IS local RIB exposes the reachable prefixes in the
5192 IS-IS routing domain. The Link State Database (LSDB) and local RIB
5193 are represented by the following schema nodes:
5195 /isis/database
5197 /isis/local-rib
5199 Exposure of the Link State Database and local RIB include information
5200 beyond the scope of the IS-IS router and this may be undesirable
5201 since exposure may facilitate other attacks. Additionally, the
5202 complete IP network topology and, if deployed, the traffic
5203 engineering topology of the IS-IS domain can be reconstructed from
5204 the Link State Database. Though not as straightforward, the IS-IS
5205 local RIB can also be discover topological information. Network
5206 operators may consider their topologies to be sensitive confidential
5207 data.
5209 For IS-IS authentication, configuration is supported via the
5210 specification of key-chain [RFC8177] or the direct specification of
5211 key and authentication algorithm. Hence, authentication
5212 configuration using the "auth-table-trailer" case in the
5213 "authentication" container inherits the security considerations of
5214 [RFC8177]. This includes the considerations with respect to the
5215 local storage and handling of authentication keys.
5217 Some of the RPC operations in this YANG module may be considered
5218 sensitive or vulnerable in some network environments. It is thus
5219 important to control access to these operations. The IS-IS YANG
5220 module support the "clear-adjacency" and "clear-database" RPCs. If
5221 access to either of these is compromised, they can result in
5222 temporary network outages be employed to mount DoS attacks.
5224 The actual authentication key data (whether locally specified or part
5225 of a key-chain) is sensitive and needs to be kept secret from
5226 unauthorized parties; compromise of the key data would allow an
5227 attacker to forge IS-IS traffic that would be accepted as authentic,
5228 potentially compromising the entirety IS-IS domain.
5230 The model describes several notifications, implementations must rate-
5231 limit the generation of these notifications to avoid creating
5232 significant notification load. Otherwise, this notification load may
5233 have some side effects on the system stability and may be exploited
5234 as an attack vector.
5236 8. Contributors
5238 The authors would like to thank Kiran Agrahara Sreenivasa, Dean
5239 Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major
5240 contributions to the draft.
5242 9. Acknowledgements
5244 The authors would like to thank Tom Petch, Alvaro Retana, Stewart
5245 Bryant, Barry Leiba, Benjamin Kaduk and Adam Roach, and Roman Danyliw
5246 for their review and comments.
5248 10. IANA Considerations
5250 The IANA is requested to assign two new URIs from the IETF XML
5251 registry [RFC3688]. Authors are suggesting the following URI:
5253 URI: urn:ietf:params:xml:ns:yang:ietf-isis
5254 Registrant Contact: The IESG
5255 XML: N/A, the requested URI is an XML namespace
5257 This document also requests one new YANG module name in the YANG
5258 Module Names registry [RFC6020] with the following suggestion:
5260 name: ietf-isis
5261 namespace: urn:ietf:params:xml:ns:yang:ietf-isis
5262 prefix: isis
5263 reference: RFC XXXX
5265 11. References
5267 11.1. Normative References
5269 [I-D.ietf-bfd-yang]
5270 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and
5271 G. Mirsky, "YANG Data Model for Bidirectional Forwarding
5272 Detection (BFD)", draft-ietf-bfd-yang-17 (work in
5273 progress), August 2018.
5275 [ISO-10589]
5276 "Intermediate System to Intermediate System intra- domain
5277 routeing information exchange protocol for use in
5278 conjunction with the protocol for providing the
5279 connectionless-mode network service (ISO 8473)",
5280 International Standard 10589: 2002, Second Edition, 2002.
5282 [RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and
5283 dual environments", RFC 1195, DOI 10.17487/RFC1195,
5284 December 1990, .
5286 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
5287 Requirement Levels", BCP 14, RFC 2119,
5288 DOI 10.17487/RFC2119, March 1997,
5289 .
5291 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
5292 DOI 10.17487/RFC3688, January 2004,
5293 .
5295 [RFC4090] Pan, P., Ed., Swallow, G., Ed., and A. Atlas, Ed., "Fast
5296 Reroute Extensions to RSVP-TE for LSP Tunnels", RFC 4090,
5297 DOI 10.17487/RFC4090, May 2005,
5298 .
5300 [RFC5029] Vasseur, JP. and S. Previdi, "Definition of an IS-IS Link
5301 Attribute Sub-TLV", RFC 5029, DOI 10.17487/RFC5029,
5302 September 2007, .
5304 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi
5305 Topology (MT) Routing in Intermediate System to
5306 Intermediate Systems (IS-ISs)", RFC 5120,
5307 DOI 10.17487/RFC5120, February 2008,
5308 .
5310 [RFC5130] Previdi, S., Shand, M., Ed., and C. Martin, "A Policy
5311 Control Mechanism in IS-IS Using Administrative Tags",
5312 RFC 5130, DOI 10.17487/RFC5130, February 2008,
5313 .
5315 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for
5316 IP Fast Reroute: Loop-Free Alternates", RFC 5286,
5317 DOI 10.17487/RFC5286, September 2008,
5318 .
5320 [RFC5301] McPherson, D. and N. Shen, "Dynamic Hostname Exchange
5321 Mechanism for IS-IS", RFC 5301, DOI 10.17487/RFC5301,
5322 October 2008, .
5324 [RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-Wide Prefix
5325 Distribution with Two-Level IS-IS", RFC 5302,
5326 DOI 10.17487/RFC5302, October 2008,
5327 .
5329 [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic
5330 Engineering", RFC 5305, DOI 10.17487/RFC5305, October
5331 2008, .
5333 [RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS",
5334 RFC 5306, DOI 10.17487/RFC5306, October 2008,
5335 .
5337 [RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., "IS-IS Extensions
5338 in Support of Generalized Multi-Protocol Label Switching
5339 (GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008,
5340 .
5342 [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308,
5343 DOI 10.17487/RFC5308, October 2008,
5344 .
5346 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP
5347 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March
5348 2009, .
5350 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection
5351 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010,
5352 .
5354 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection
5355 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881,
5356 DOI 10.17487/RFC5881, June 2010,
5357 .
5359 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
5360 the Network Configuration Protocol (NETCONF)", RFC 6020,
5361 DOI 10.17487/RFC6020, October 2010,
5362 .
5364 [RFC6119] Harrison, J., Berger, J., and M. Bartlett, "IPv6 Traffic
5365 Engineering in IS-IS", RFC 6119, DOI 10.17487/RFC6119,
5366 February 2011, .
5368 [RFC6232] Wei, F., Qin, Y., Li, Z., Li, T., and J. Dong, "Purge
5369 Originator Identification TLV for IS-IS", RFC 6232,
5370 DOI 10.17487/RFC6232, May 2011,
5371 .
5373 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
5374 and A. Bierman, Ed., "Network Configuration Protocol
5375 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
5376 .
5378 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
5379 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
5380 .
5382 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
5383 RFC 6991, DOI 10.17487/RFC6991, July 2013,
5384 .
5386 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N.
5387 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)",
5388 RFC 7490, DOI 10.17487/RFC7490, April 2015,
5389 .
5391 [RFC7794] Ginsberg, L., Ed., Decraene, B., Previdi, S., Xu, X., and
5392 U. Chunduri, "IS-IS Prefix Attributes for Extended IPv4
5393 and IPv6 Reachability", RFC 7794, DOI 10.17487/RFC7794,
5394 March 2016, .
5396 [RFC7917] Sarkar, P., Ed., Gredler, H., Hegde, S., Litkowski, S.,
5397 and B. Decraene, "Advertising Node Administrative Tags in
5398 IS-IS", RFC 7917, DOI 10.17487/RFC7917, July 2016,
5399 .
5401 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
5402 RFC 7950, DOI 10.17487/RFC7950, August 2016,
5403 .
5405 [RFC7981] Ginsberg, L., Previdi, S., and M. Chen, "IS-IS Extensions
5406 for Advertising Router Information", RFC 7981,
5407 DOI 10.17487/RFC7981, October 2016,
5408 .
5410 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
5411 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
5412 .
5414 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
5415 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
5416 May 2017, .
5418 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J.
5419 Zhang, "YANG Data Model for Key Chains", RFC 8177,
5420 DOI 10.17487/RFC8177, June 2017,
5421 .
5423 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
5424 "Common YANG Data Types for the Routing Area", RFC 8294,
5425 DOI 10.17487/RFC8294, December 2017,
5426 .
5428 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
5429 Access Control Model", STD 91, RFC 8341,
5430 DOI 10.17487/RFC8341, March 2018,
5431 .
5433 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
5434 and R. Wilton, "Network Management Datastore Architecture
5435 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
5436 .
5438 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface
5439 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
5440 .
5442 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
5443 Routing Management (NMDA Version)", RFC 8349,
5444 DOI 10.17487/RFC8349, March 2018,
5445 .
5447 [RFC8405] Decraene, B., Litkowski, S., Gredler, H., Lindem, A.,
5448 Francois, P., and C. Bowers, "Shortest Path First (SPF)
5449 Back-Off Delay Algorithm for Link-State IGPs", RFC 8405,
5450 DOI 10.17487/RFC8405, June 2018,
5451 .
5453 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
5454 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
5455 .
5457 [RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward,
5458 D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE)
5459 Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March
5460 2019, .
5462 11.2. Informative References
5464 [I-D.ietf-rtgwg-segment-routing-ti-lfa]
5465 Litkowski, S., Bashandy, A., Filsfils, C., Decraene, B.,
5466 Francois, P., daniel.voyer@bell.ca, d., Clad, F., and P.
5467 Camarillo, "Topology Independent Fast Reroute using
5468 Segment Routing", draft-ietf-rtgwg-segment-routing-ti-
5469 lfa-01 (work in progress), March 2019.
5471 [RFC7812] Atlas, A., Bowers, C., and G. Enyedi, "An Architecture for
5472 IP/LDP Fast Reroute Using Maximally Redundant Trees (MRT-
5473 FRR)", RFC 7812, DOI 10.17487/RFC7812, June 2016,
5474 .
5476 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
5477 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
5478 .
5480 Appendix A. Example of IS-IS configuration in XML
5482 This section gives an example of configuration of an IS-IS instance
5483 on a device. The example is written in XML.
5485
5486
5487
5488 SLI
5489 192.0.2.1
5490
5491
5492 ISIS-example
5493
5494
5495
5496 isis:isis
5497
5498
5499
5500 true
5501 level-2
5502 87FC.FCDF.4432
5503 49.0001
5504
5505
5506 192.0.2.1
5507
5508
5509 65535
5510 65000
5511
5512 wide-only
5513
5514
5515 111111
5516
5517
5518
5519 ipv4
5520 true
5521
5522
5523 ipv6
5524 true
5525
5526
5527
5528
5529 Loopback0
5530 200
5531
5532 0
5533
5534 true
5535
5536
5537 Eth1
5538 level-2
5539 point-to-point
5540
5541 167890
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551 Loopback0
5552
5553
5554 ianaift:softwareLoopback
5555
5556 enabled
5557
5558
5559 192.0.2.1
5560 32
5561
5562
5563
5564
5565 2001:DB8::1
5566 128
5567
5568
5569
5570
5571 Eth1
5572
5573
5574 ianaift:ethernetCsmacd
5575
5576 enabled
5577
5578
5579 198.51.100.1
5580 30
5581
5582
5583
5584
5585 2001:DB8:0:0:FF::1
5586 64
5587
5588
5589
5590
5591
5593 Authors' Addresses
5595 Stephane Litkowski
5596 Cisco Systems
5598 Email: slitkows.ietf@gmail.com
5600 Derek Yeung
5601 Arrcus, Inc
5603 Email: derek@arrcus.com
5604 Acee Lindem
5605 Cisco Systems
5607 Email: acee@cisco.com
5609 Jeffrey Zhang
5610 Juniper Networks
5612 Email: zzhang@juniper.net
5614 Ladislav Lhotka
5615 CZ.NIC
5617 Email: lhotka@nic.cz