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