idnits 2.17.1
draft-ietf-isis-yang-isis-cfg-40.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 1416 has weird spacing: '... allows a rou...'
-- The document date (September 28, 2019) is 1671 days in the past. Is
this intentional?
Checking references for intended status: Proposed Standard
----------------------------------------------------------------------------
(See RFCs 3967 and 4897 for information about using normative references
to lower-maturity documents in RFCs)
-- Possible downref: Non-RFC (?) normative reference: ref. 'ISO-10589'
** Obsolete normative reference: RFC 5306 (Obsoleted by RFC 8706)
** Downref: Normative reference to an Informational RFC: RFC 5443
Summary: 2 errors (**), 0 flaws (~~), 4 warnings (==), 2 comments (--).
Run idnits with the --verbose option for more detailed information about
the items above.
--------------------------------------------------------------------------------
2 IS-IS Working Group S. Litkowski
3 Internet-Draft Cisco Systems
4 Intended status: Standards Track D. Yeung
5 Expires: March 31, 2020 Arrcus, Inc
6 A. Lindem
7 Cisco Systems
8 J. Zhang
9 Juniper Networks
10 L. Lhotka
11 CZ.NIC
12 September 28, 2019
14 YANG Data Model for IS-IS Protocol
15 draft-ietf-isis-yang-isis-cfg-40
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 31, 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 Web:
1105 WG List:
1107 Editor: Stephane Litkowski
1108
1109 Author: Derek Yeung
1110
1111 Author: Acee Lindem
1112
1113 Author: Jeffrey Zhang
1114
1115 Author: Ladislav Lhotka
1116 ";
1118 description
1119 "This YANG module defines the generic configuration and
1120 operational state for the IS-IS protocol common to all
1121 vendor implementations. It is intended that the module
1122 will be extended by vendors to define vendor-specific
1123 IS-IS configuration parameters and policies,
1124 for example, route maps or route policies.
1126 This YANG model conforms to the Network Management
1127 Datastore Architecture (NMDA) as described in RFC 8242.
1129 Copyright (c) 2018 IETF Trust and the persons identified as
1130 authors of the code. All rights reserved.
1132 Redistribution and use in source and binary forms, with or
1133 without modification, is permitted pursuant to, and subject to
1134 the license terms contained in, the Simplified BSD License set
1135 forth in Section 4.c of the IETF Trust's Legal Provisions
1136 Relating to IETF Documents
1137 (https://trustee.ietf.org/license-info).
1139 This version of this YANG module is part of RFC XXXX
1140 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
1141 for full legal notices.
1143 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
1144 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
1145 'MAY', and 'OPTIONAL' in this document are to be interpreted as
1146 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
1147 they appear in all capitals, as shown here.
1149 This version of this YANG module is part of RFC XXXX;
1150 see the RFC itself for full legal notices.";
1152 revision 2019-09-26 {
1153 description
1154 "Initial revision.";
1155 reference "RFC XXXX";
1156 }
1158 /* Identities */
1160 identity isis {
1161 base rt:routing-protocol;
1162 description "Identity for the IS-IS routing protocol.";
1163 }
1165 identity lsp-log-reason {
1166 description "Base identity for an LSP change log reason.";
1167 }
1169 identity refresh {
1170 base lsp-log-reason;
1171 description
1172 "Identity used when the LSP log reason is
1173 a refresh LSP received.";
1174 }
1176 identity content-change {
1177 base lsp-log-reason;
1178 description
1179 "Identity used when the LSP log reason is
1180 a change in the content of the LSP.";
1181 }
1183 identity frr-protection-method {
1184 description
1185 "Base identity for a Fast Reroute protection method.";
1186 }
1187 identity frr-protection-method-lfa {
1188 base frr-protection-method;
1189 description "Loop Free Alternate as defined in RFC5286.";
1190 }
1191 identity frr-protection-method-rlfa {
1192 base frr-protection-method;
1193 description "Remote Loop Free Alternate as defined in RFC7490.";
1194 }
1195 identity frr-protection-method-rsvpte {
1196 base frr-protection-method;
1197 description "RSVP-TE as defined in RFC4090.";
1198 }
1200 identity frr-protection-available-type {
1201 description "Base identity for Fast Reroute protection types
1202 provided by an alternate path.";
1203 }
1204 identity frr-protection-available-node-type {
1205 base frr-protection-available-type;
1206 description "Node protection is provided by the alternate.";
1207 }
1208 identity frr-protection-available-link-type {
1209 base frr-protection-available-type;
1210 description "Link protection is provided by the alternate.";
1211 }
1212 identity frr-protection-available-srlg-type {
1213 base frr-protection-available-type;
1214 description "SRLG protection is provided by the alternate.";
1215 }
1216 identity frr-protection-available-downstream-type {
1217 base frr-protection-available-type;
1218 description "The alternate is downstream of node in the path.";
1219 }
1220 identity frr-protection-available-other-type {
1221 base frr-protection-available-type;
1222 description "The level of protection is unknown.";
1223 }
1225 identity unidirectional-link-delay-subtlv-flag {
1226 description "Base identity for unidirectional-link-delay
1227 subTLV flags. Flags are defined in RFC8570.";
1228 }
1229 identity unidirectional-link-delay-subtlv-a-flag {
1230 base unidirectional-link-delay-subtlv-flag;
1231 description
1232 "The A bit represents the Anomalous (A) bit.
1233 The A bit is set when the measured value of
1234 this parameter exceeds its configured
1235 maximum threshold.
1236 The A bit is cleared when the measured value
1237 falls below its configured reuse threshold.
1239 If the A bit is clear,
1240 the value represents steady-state link performance.";
1241 }
1242 identity min-max-unidirectional-link-delay-subtlv-flag {
1243 description
1244 "Base identity for min-max-unidirectional-link-delay
1245 subTLV flags. Flags are defined in RFC8570.";
1246 }
1247 identity min-max-unidirectional-link-delay-subtlv-a-flag {
1248 base min-max-unidirectional-link-delay-subtlv-flag;
1249 description
1250 "The A bit represents the Anomalous (A) bit.
1251 The A bit is set when the measured value of
1252 this parameter exceeds its configured
1253 maximum threshold.
1254 The A bit is cleared when the measured value
1255 falls below its configured reuse threshold.
1256 If the A bit is clear,
1257 the value represents steady-state link performance.";
1258 }
1259 identity unidirectional-link-loss-subtlv-flag {
1260 description "Base identity for unidirectional-link-loss
1261 subTLV flags. Flags are defined in RFC8570.";
1262 }
1264 identity unidirectional-link-loss-subtlv-a-flag {
1265 base unidirectional-link-loss-subtlv-flag;
1266 description
1267 "The A bit represents the Anomalous (A) bit.
1268 The A bit is set when the measured value of
1269 this parameter exceeds its configured
1270 maximum threshold.
1271 The A bit is cleared when the measured value
1272 falls below its configured reuse threshold.
1273 If the A bit is clear,
1274 the value represents steady-state link performance.";
1275 }
1276 identity tlv229-flag {
1277 description "Base identity for TLV229 flags. Flags are defined
1278 in RFC5120.";
1279 }
1280 identity tlv229-overload-flag {
1281 base tlv229-flag;
1282 description
1283 "If set, the originator is overloaded,
1284 and must be avoided in path calculation.";
1285 }
1286 identity tlv229-attached-flag {
1287 base tlv229-flag;
1288 description
1289 "If set, the originator is attached to
1290 another area using the referred metric.";
1291 }
1292 identity router-capability-flag {
1293 description "Base identity for router capability flags.
1294 Flags are defined in RFC7981.";
1295 }
1296 identity router-capability-flooding-flag {
1297 base router-capability-flag;
1298 description
1299 "Quote from RFC7981: 'If the S bit is set,
1300 the IS-IS Router CAPABILITY
1301 TLV MUST be flooded across the entire routing
1302 domain. If the S bit is clear, the TLV MUST NOT
1303 be leaked between levels. This bit MUST NOT
1304 be altered during the TLV leaking'.";
1305 }
1306 identity router-capability-down-flag {
1307 base router-capability-flag;
1308 description
1309 "Quote from RFC7981: 'When the IS-IS Router CAPABILITY TLV
1310 is leaked from level-2 to level-1, the D bit MUST be set.
1311 Otherwise, this bit MUST be clear. IS-IS Router
1312 capability TLVs with the D bit set MUST NOT be
1313 leaked from level-1 to level-2 in to prevent
1314 TLV looping'.";
1315 }
1317 identity lsp-flag {
1318 description "Base identity for LSP attributes.
1319 Attributes are defined in ISO 10589";
1320 }
1321 identity lsp-partitioned-flag {
1322 base lsp-flag;
1323 description "Originator partition repair supported";
1324 }
1325 identity lsp-attached-error-metric-flag {
1326 base lsp-flag;
1327 description "Set when originator is attached to
1328 another area using the referred metric.";
1329 }
1330 identity lsp-attached-delay-metric-flag {
1331 base lsp-flag;
1332 description "Set when originator is attached to
1333 another area using the referred metric.";
1334 }
1335 identity lsp-attached-expense-metric-flag {
1336 base lsp-flag;
1337 description "Set when originator is attached to
1338 another area using the referred metric.";
1339 }
1340 identity lsp-attached-default-metric-flag {
1341 base lsp-flag;
1342 description "Set when originator is attached to
1343 another area using the referred metric.";
1344 }
1345 identity lsp-overload-flag {
1346 base lsp-flag;
1347 description
1348 "If set, the originator is overloaded,
1349 and must be avoided in path calculation.";
1350 }
1351 identity lsp-l1system-flag {
1352 base lsp-flag;
1353 description
1354 "Set when the Intermediate System has an L1 type.";
1355 }
1356 identity lsp-l2system-flag {
1357 base lsp-flag;
1358 description
1359 "Set when the Intermediate System has an L2 type.";
1360 }
1362 /* Feature definitions */
1364 feature osi-interface {
1365 description "Support of OSI specific parameters on an
1366 interface.";
1367 }
1368 feature poi-tlv {
1369 description "Support of Purge Originator Identification.";
1370 reference "RFC 6232 - Purge Originator Identification TLV
1371 for IS-IS";
1372 }
1373 feature ietf-spf-delay {
1374 description
1375 "Support for IETF SPF delay algorithm.";
1376 reference "RFC 8405 - SPF Back-off algorithm for link
1377 state IGPs";
1378 }
1379 feature bfd {
1380 description
1381 "Support for BFD detection of IS-IS neighbor reachability.";
1383 reference "RFC 5880 - Bidirectional Forwarding Detection (BFD)
1384 RFC 5881 - Bidirectional Forwarding Detection
1385 (BFD) for IPv4 and IPv6 (Single Hop)";
1386 }
1387 feature key-chain {
1388 description
1389 "Support of keychain for authentication.";
1390 reference "RFC8177 - YANG Data Model for Key Chains";
1391 }
1392 feature node-flag {
1393 description
1394 "Support for node-flag for IS-IS prefixes.";
1395 reference "RFC7794 - IS-IS Prefix Attributes for
1396 Extended IP and IPv6 Reachability";
1397 }
1398 feature node-tag {
1399 description
1400 "Support for node admin tag for IS-IS routing instances.";
1401 reference "RFC7917 - Advertising Node Administrative Tags
1402 in IS-IS";
1403 }
1404 feature ldp-igp-sync {
1405 description
1406 "LDP IGP synchronization.";
1407 reference "RFC5443 - LDP IGP Synchronization.";
1408 }
1409 feature fast-reroute {
1410 description
1411 "Support for IP Fast Reroute (IP-FRR).";
1412 }
1413 feature nsr {
1414 description
1415 "Non-Stop-Routing (NSR) support. The IS-IS NSR feature
1416 allows a router with redundant control-plane capability
1417 (e.g., dual Route-Processor (RP) cards) to maintain its
1418 state and adjacencies during planned and unplanned
1419 IS-IS instance restarts. It differs from graceful-restart
1420 or Non-Stop Forwarding (NSF) in that no protocol signaling
1421 or assistance from adjacent IS-IS neighbors is required to
1422 recover control-plane state.";
1423 }
1424 feature lfa {
1425 description
1426 "Support for Loop-Free Alternates (LFAs).";
1427 reference "RFC5286 - Basic Specification of IP Fast-Reroute:
1428 Loop-free Alternates";
1429 }
1430 feature remote-lfa {
1431 description
1432 "Support for Remote Loop-Free Alternates (R-LFAs).";
1433 reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute";
1434 }
1436 feature overload-max-metric {
1437 description
1438 "Support of overload by setting all links to max metric.
1439 In IS-IS, the overload bit is usually used to signal that
1440 a node cannot be used as a transit. The overload-max-metric
1441 feature brings a similar behavior leveraging on setting all
1442 the link metrics to MAX_METRIC.";
1443 }
1444 feature prefix-tag {
1445 description
1446 "Support for 32-bit prefix tags";
1447 reference "RFC5130 - A Policy Control Mechanism in
1448 IS-IS Using Administrative Tags";
1449 }
1450 feature prefix-tag64 {
1451 description
1452 "Support for 64-bit prefix tags";
1453 reference "RFC5130 - A Policy Control Mechanism in
1454 IS-IS Using Administrative Tags";
1455 }
1456 feature auto-cost {
1457 description
1458 "Calculate IS-IS interface metric according to
1459 reference bandwidth.";
1460 }
1462 feature te-rid {
1463 description
1464 "Traffic-Engineering Router-ID.";
1465 reference "RFC5305 - IS-IS Extensions for Traffic Engineering
1466 RFC6119 - IPv6 Traffic Engineering in IS-IS";
1467 }
1468 feature max-ecmp {
1469 description
1470 "Setting maximum number of ECMP paths.";
1471 }
1472 feature multi-topology {
1473 description
1474 "Support for Multiple-Topology Routing (MTR).";
1475 reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS";
1476 }
1477 feature nlpid-control {
1478 description
1479 "This feature controls the advertisement
1480 of support NLPID within IS-IS configuration.";
1481 }
1482 feature graceful-restart {
1483 description
1484 "IS-IS Graceful restart support.";
1485 reference "RFC5306 - Restart Signaling in IS-IS";
1486 }
1488 feature lsp-refresh {
1489 description
1490 "Configuration of LSP refresh interval.";
1491 }
1493 feature maximum-area-addresses {
1494 description
1495 "Support of maximum-area-addresses config.";
1496 }
1498 feature admin-control {
1499 description
1500 "Administrative control of the protocol state.";
1501 }
1503 /* Type definitions */
1505 typedef circuit-id {
1506 type uint8;
1507 description
1508 "This type defines the circuit ID
1509 associated with an interface.";
1510 }
1512 typedef extended-circuit-id {
1513 type uint32;
1514 description
1515 "This type defines the extended circuit ID
1516 associated with an interface.";
1517 }
1519 typedef interface-type {
1520 type enumeration {
1521 enum broadcast {
1522 description
1523 "Broadcast interface type.";
1524 }
1525 enum point-to-point {
1526 description
1527 "Point-to-point interface type.";
1528 }
1529 }
1530 description
1531 "This type defines the type of adjacency
1532 to be established for the interface.
1533 The interface-type determines the type
1534 of hello message that is used.";
1536 }
1538 typedef level {
1539 type enumeration {
1540 enum "level-1" {
1541 description
1542 "This enum indicates L1-only capability.";
1543 }
1544 enum "level-2" {
1545 description
1546 "This enum indicates L2-only capability.";
1547 }
1548 enum "level-all" {
1549 description
1550 "This enum indicates capability for both levels.";
1551 }
1552 }
1553 default "level-all";
1554 description
1555 "This type defines IS-IS level of an object.";
1557 }
1559 typedef adj-state-type {
1560 type enumeration {
1561 enum "up" {
1562 description
1563 "State indicates the adjacency is established.";
1564 }
1565 enum "down" {
1566 description
1567 "State indicates the adjacency is NOT established.";
1568 }
1569 enum "init" {
1570 description
1571 "State indicates the adjacency is establishing.";
1572 }
1573 enum "failed" {
1574 description
1575 "State indicates the adjacency is failed.";
1576 }
1577 }
1578 description
1579 "This type defines states of an adjacency";
1580 }
1582 typedef if-state-type {
1583 type enumeration {
1584 enum "up" {
1585 description "Up state.";
1587 }
1588 enum "down" {
1589 description "Down state";
1590 }
1591 }
1592 description
1593 "This type defines the state of an interface";
1594 }
1596 typedef level-number {
1597 type uint8 {
1598 range "1 .. 2";
1599 }
1600 description
1601 "This type defines the current IS-IS level.";
1602 }
1604 typedef lsp-id {
1605 type string {
1606 pattern
1607 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
1608 +'{4}\.[0-9][0-9]-[0-9][0-9]';
1609 }
1610 description
1611 "This type defines the IS-IS LSP ID format using a
1612 pattern. An example LSP ID is 0143.0438.AEF0.02-01";
1613 }
1615 typedef area-address {
1616 type string {
1617 pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}';
1618 }
1619 description
1620 "This type defines the area address format.";
1621 }
1622 typedef snpa {
1623 type string {
1624 length "0 .. 20";
1625 }
1626 description
1627 "This type defines the Subnetwork Point
1628 of Attachment (SNPA) format.
1629 The SNPA should be encoded according to the rules
1630 specified for the particular type of subnetwork
1631 being used. As an example, for an ethernet subnetwork,
1632 the SNPA is encoded as a MAC address, such as,
1633 '00aa.bbcc.ddee'.";
1634 }
1636 typedef system-id {
1637 type string {
1638 pattern
1639 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}';
1640 }
1641 description
1642 "This type defines IS-IS system-id using pattern,
1643 An example system-id is 0143.0438.AEF0";
1644 }
1645 typedef extended-system-id {
1646 type string {
1647 pattern
1648 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.'
1649 +'[0-9][0-9]';
1650 }
1651 description
1652 "This type defines IS-IS system-id using pattern. The extended
1653 system-id contains the pseudonode number in addition to the
1654 system-id.
1655 An example system-id is 0143.0438.AEF0.00";
1656 }
1658 typedef wide-metric {
1659 type uint32 {
1660 range "0 .. 16777215";
1661 }
1662 description
1663 "This type defines wide style format of IS-IS metric.";
1664 }
1666 typedef std-metric {
1667 type uint8 {
1668 range "0 .. 63";
1669 }
1670 description
1671 "This type defines old style format of IS-IS metric.";
1672 }
1674 typedef mesh-group-state {
1675 type enumeration {
1676 enum "mesh-inactive" {
1677 description
1678 "Interface is not part of a mesh group.";
1679 }
1680 enum "mesh-set" {
1681 description
1682 "Interface is part of a mesh group.";
1683 }
1684 enum "mesh-blocked" {
1685 description
1686 "LSPs must not be flooded over this interface.";
1687 }
1688 }
1689 description
1690 "This type describes mesh group state of an interface";
1691 }
1693 /* Grouping for notifications */
1695 grouping notification-instance-hdr {
1696 description
1697 "Instance specific IS-IS notification data grouping";
1698 leaf routing-protocol-name {
1699 type leafref {
1700 path "/rt:routing/rt:control-plane-protocols/"
1701 + "rt:control-plane-protocol/rt:name";
1702 }
1703 description "Name of the IS-IS instance.";
1704 }
1705 leaf isis-level {
1706 type level;
1707 description "IS-IS level of the instance.";
1708 }
1709 }
1711 grouping notification-interface-hdr {
1712 description
1713 "Interface specific IS-IS notification data grouping";
1714 leaf interface-name {
1715 type if:interface-ref;
1716 description "IS-IS interface name";
1717 }
1718 leaf interface-level {
1719 type level;
1720 description "IS-IS level of the interface.";
1721 }
1722 leaf extended-circuit-id {
1723 type extended-circuit-id;
1724 description "Extended circuit-id of the interface.";
1725 }
1726 }
1728 /* Groupings for IP Fast Reroute */
1730 grouping instance-fast-reroute-config {
1731 description
1732 "This group defines global configuration of IP
1733 Fast ReRoute (FRR).";
1734 container fast-reroute {
1735 if-feature fast-reroute;
1736 description
1737 "This container may be augmented with global
1738 parameters for IP-FRR.";
1739 container lfa {
1740 if-feature lfa;
1741 description
1742 "This container may be augmented with
1743 global parameters for Loop-Free Alternatives (LFA).
1744 Container creation has no effect on LFA activation.";
1745 }
1746 }
1747 }
1749 grouping interface-lfa-config {
1750 leaf candidate-enable {
1751 type boolean;
1752 default "true";
1753 description
1754 "Enable the interface to be used as backup.";
1755 }
1756 leaf enable {
1757 type boolean;
1758 default false;
1759 description
1760 "Activates LFA - Per-prefix LFA computation
1761 is assumed.";
1762 }
1763 container remote-lfa {
1764 if-feature remote-lfa;
1765 leaf enable {
1766 type boolean;
1767 default false;
1768 description
1769 "Activates Remote LFA (R-LFA).";
1770 }
1771 description
1772 "Remote LFA configuration.";
1773 }
1774 description "Grouping for LFA interface configuration";
1775 }
1776 grouping interface-fast-reroute-config {
1777 description
1778 "This group defines interface configuration of IP-FRR.";
1779 container fast-reroute {
1780 if-feature fast-reroute;
1781 container lfa {
1782 if-feature lfa;
1783 uses interface-lfa-config;
1784 container level-1 {
1785 uses interface-lfa-config;
1786 description
1787 "LFA level 1 config";
1788 }
1789 container level-2 {
1790 uses interface-lfa-config;
1791 description
1792 "LFA level 2 config";
1793 }
1794 description
1795 "LFA configuration.";
1796 }
1797 description
1798 "Interface IP Fast-reroute configuration.";
1799 }
1800 }
1801 grouping instance-fast-reroute-state {
1802 description "IPFRR state data grouping";
1803 container protected-routes {
1804 config false;
1805 list address-family-stats {
1806 key "address-family prefix alternate";
1808 leaf address-family {
1809 type iana-rt-types:address-family;
1810 description
1811 "Address-family";
1812 }
1813 leaf prefix {
1814 type inet:ip-prefix;
1815 description
1816 "Protected prefix.";
1817 }
1818 leaf alternate {
1819 type inet:ip-address;
1820 description
1821 "Alternate next hop for the prefix.";
1822 }
1823 leaf alternate-type {
1824 type enumeration {
1825 enum equal-cost {
1826 description
1827 "ECMP alternate.";
1828 }
1829 enum lfa {
1830 description
1831 "LFA alternate.";
1832 }
1833 enum remote-lfa {
1834 description
1835 "Remote LFA alternate.";
1836 }
1837 enum tunnel {
1838 description
1839 "Tunnel based alternate (such as,
1840 RSVP-TE or GRE).";
1841 }
1842 enum ti-lfa {
1843 description
1844 "TI-LFA alternate.";
1845 }
1846 enum mrt {
1847 description
1848 "MRT alternate.";
1849 }
1850 enum other {
1851 description
1852 "Unknown alternate type.";
1853 }
1854 }
1855 description
1856 "Type of alternate.";
1857 }
1858 leaf best {
1859 type boolean;
1860 description
1861 "Is set when the alternate is the preferred one,
1862 is clear otherwise.";
1863 }
1864 leaf non-best-reason {
1865 type string {
1866 length "1..255";
1867 }
1868 description
1869 "Information field to describe why the alternate
1870 is not best. The length should be limited to 255
1871 unicode characters. The expected format is a single
1872 line text.";
1873 }
1874 container protection-available {
1875 leaf-list protection-types {
1876 type identityref {
1877 base frr-protection-available-type;
1878 }
1879 description "This list contains a set of protection
1880 types defined as identities.
1881 An identity must be added for each type of
1882 protection provided by the alternate.
1883 As an example, if an alternate provides
1884 SRLG, node and link protection, three
1885 identities must be added in this list:
1886 one for SRLG protection, one for node
1887 protection, one for link protection.";
1888 }
1889 description "Protection types provided by the alternate.";
1890 }
1891 leaf alternate-metric1 {
1892 type uint32;
1893 description
1894 "Metric from Point of Local Repair (PLR) to
1895 destination through the alternate path.";
1896 }
1897 leaf alternate-metric2 {
1898 type uint32;
1899 description
1900 "Metric from PLR to the alternate node";
1901 }
1902 leaf alternate-metric3 {
1903 type uint32;
1904 description
1905 "Metric from alternate node to the destination";
1906 }
1907 description
1908 "Per-AF protected prefix statistics.";
1910 }
1911 description
1912 "List of prefixes that are protected.";
1913 }
1915 container unprotected-routes {
1916 config false;
1917 list address-family-stats {
1918 key "address-family prefix";
1920 leaf address-family {
1921 type iana-rt-types:address-family;
1923 description "Address-family";
1924 }
1925 leaf prefix {
1926 type inet:ip-prefix;
1927 description "Unprotected prefix.";
1928 }
1929 description
1930 "Per-AF unprotected prefix statistics.";
1931 }
1932 description
1933 "List of prefixes that are not protected.";
1934 }
1936 list protection-statistics {
1937 key frr-protection-method;
1938 config false;
1939 leaf frr-protection-method {
1940 type identityref {
1941 base frr-protection-method;
1942 }
1943 description "Protection method used.";
1944 }
1945 list address-family-stats {
1946 key address-family;
1948 leaf address-family {
1949 type iana-rt-types:address-family;
1951 description "Address-family";
1952 }
1953 leaf total-routes {
1954 type uint32;
1955 description "Total prefixes.";
1956 }
1957 leaf unprotected-routes {
1958 type uint32;
1959 description
1960 "Total prefixes that are not protected.";
1961 }
1962 leaf protected-routes {
1963 type uint32;
1964 description
1965 "Total prefixes that are protected.";
1966 }
1967 leaf link-protected-routes {
1968 type uint32;
1969 description
1970 "Total prefixes that are link protected.";
1971 }
1972 leaf node-protected-routes {
1973 type uint32;
1974 description
1975 "Total prefixes that are node protected.";
1976 }
1977 description
1978 "Per-AF protected prefix statistics.";
1979 }
1981 description "Global protection statistics.";
1982 }
1983 }
1985 /* Route table and local RIB groupings */
1987 grouping local-rib {
1988 description "Local-rib - RIB for Routes computed by the local
1989 IS-IS routing instance.";
1990 container local-rib {
1991 config false;
1992 description "Local-rib.";
1993 list route {
1994 key "prefix";
1995 description "Routes";
1996 leaf prefix {
1997 type inet:ip-prefix;
1998 description "Destination prefix.";
1999 }
2000 container next-hops {
2001 description "Next hops for the route.";
2002 list next-hop {
2003 key "next-hop";
2004 description "List of next hops for the route";
2005 leaf outgoing-interface {
2006 type if:interface-ref;
2007 description
2008 "Name of the outgoing interface.";
2009 }
2010 leaf next-hop {
2011 type inet:ip-address;
2012 description "Next hop address.";
2013 }
2014 }
2015 }
2016 leaf metric {
2017 type uint32;
2018 description "Metric for this route.";
2019 }
2020 leaf level {
2021 type level-number;
2022 description "Level number for this route.";
2023 }
2024 leaf route-tag {
2025 type uint32;
2026 description "Route tag for this route.";
2027 }
2028 }
2029 }
2030 }
2032 grouping route-content {
2033 description
2034 "IS-IS protocol-specific route properties grouping.";
2035 leaf metric {
2036 type uint32;
2037 description "IS-IS metric of a route.";
2038 }
2039 leaf-list tag {
2040 type uint64;
2041 description
2042 "List of tags associated with the route. The leaf
2043 describes both 32-bit and 64-bit tags.";
2044 }
2045 leaf route-type {
2046 type enumeration {
2047 enum l2-intra-area {
2048 description "Level 2 internal route. As per RFC5302,
2049 the prefix is directly connected to the
2050 advertising router. It cannot be
2051 distinguished from an L1->L2 inter-area
2052 route.";
2053 }
2054 enum l1-intra-area {
2055 description "Level 1 internal route. As per RFC5302,
2056 the prefix is directly connected to the
2057 advertising router.";
2058 }
2059 enum l2-external {
2060 description "Level 2 external route. As per RFC5302,
2061 such a route is learned from other IGPs.
2062 It cannot be distinguished from an L1->L2
2063 inter-area external route.";
2064 }
2065 enum l1-external {
2066 description "Level 1 external route. As per RFC5302,
2067 such a route is learned from other IGPs.";
2068 }
2069 enum l1-inter-area {
2070 description "These prefixes are learned via L2 routing.";
2071 }
2072 enum l1-inter-area-external {
2073 description "These prefixes are learned via L2 routing
2074 towards an l2-external route.";
2075 }
2076 }
2077 description "IS-IS route type.";
2078 }
2079 }
2081 /* Grouping definitions for configuration and ops state */
2083 grouping adjacency-state {
2084 container adjacencies {
2085 config false;
2086 list adjacency {
2087 leaf neighbor-sys-type {
2088 type level;
2089 description
2090 "Level capability of neighboring system";
2091 }
2092 leaf neighbor-sysid {
2093 type system-id;
2094 description
2095 "The system-id of the neighbor";
2096 }
2097 leaf neighbor-extended-circuit-id {
2098 type extended-circuit-id;
2099 description
2100 "Circuit ID of the neighbor";
2101 }
2102 leaf neighbor-snpa {
2103 type snpa;
2104 description
2105 "SNPA of the neighbor";
2106 }
2107 leaf usage {
2108 type level;
2109 description
2110 "Define the level(s) activated for the adjacency.
2111 On a p2p link this might be level 1 and 2,
2112 but on a LAN, the usage will be level 1
2113 between neighbors at level 1 or level 2 between
2114 neighbors at level 2.";
2115 }
2116 leaf hold-timer {
2117 type rt-types:timer-value-seconds16;
2118 units seconds;
2119 description
2120 "The holding time in seconds for this
2121 adjacency. This value is based on
2122 received hello PDUs and the elapsed
2123 time since receipt.";
2124 }
2125 leaf neighbor-priority {
2126 type uint8 {
2127 range "0 .. 127";
2128 }
2129 description
2130 "Priority of the neighboring IS for becoming
2131 the DIS.";
2132 }
2133 leaf lastuptime {
2134 type yang:timestamp;
2135 description
2136 "When the adjacency most recently entered
2137 state 'up', measured in hundredths of a
2138 second since the last reinitialization of
2139 the network management subsystem.
2140 The value is 0 if the adjacency has never
2141 been in state 'up'.";
2142 }
2143 leaf state {
2144 type adj-state-type;
2145 description
2146 "This leaf describes the state of the interface.";
2147 }
2148 description
2149 "List of operational adjacencies.";
2150 }
2151 description
2152 "This container lists the adjacencies of
2153 the local node.";
2154 }
2155 description
2156 "Adjacency state";
2157 }
2159 grouping admin-control {
2160 leaf enable {
2161 if-feature admin-control;
2162 type boolean;
2163 default "true";
2164 description
2165 "Enable/Disable the protocol.";
2166 }
2167 description
2168 "Grouping for admin control.";
2169 }
2171 grouping ietf-spf-delay {
2172 leaf initial-delay {
2173 type rt-types:timer-value-milliseconds;
2174 units msec;
2175 description
2176 "Delay used while in QUIET state (milliseconds).";
2177 }
2178 leaf short-delay {
2179 type rt-types:timer-value-milliseconds;
2180 units msec;
2181 description
2182 "Delay used while in SHORT_WAIT state (milliseconds).";
2183 }
2184 leaf long-delay {
2185 type rt-types:timer-value-milliseconds;
2186 units msec;
2187 description
2188 "Delay used while in LONG_WAIT state (milliseconds).";
2189 }
2191 leaf hold-down {
2192 type rt-types:timer-value-milliseconds;
2193 units msec;
2194 description
2195 "Timer used to consider an IGP stability period
2196 (milliseconds).";
2197 }
2198 leaf time-to-learn {
2199 type rt-types:timer-value-milliseconds;
2200 units msec;
2201 description
2202 "Duration used to learn all the IGP events
2203 related to a single component failure (milliseconds).";
2204 }
2205 leaf current-state {
2206 type enumeration {
2207 enum "quiet" {
2208 description "QUIET state";
2209 }
2210 enum "short-wait" {
2211 description "SHORT_WAIT state";
2212 }
2213 enum "long-wait" {
2214 description "LONG_WAIT state";
2215 }
2216 }
2217 config false;
2218 description
2219 "Current SPF back-off algorithm state.";
2220 }
2221 leaf remaining-time-to-learn {
2222 type rt-types:timer-value-milliseconds;
2223 units "msec";
2224 config false;
2225 description
2226 "Remaining time until time-to-learn timer fires.";
2227 }
2228 leaf remaining-hold-down {
2229 type rt-types:timer-value-milliseconds;
2230 units "msec";
2231 config false;
2232 description
2233 "Remaining time until hold-down timer fires.";
2234 }
2235 leaf last-event-received {
2236 type yang:timestamp;
2237 config false;
2238 description
2239 "Time of last IGP event received";
2240 }
2241 leaf next-spf-time {
2242 type yang:timestamp;
2243 config false;
2244 description
2245 "Time when next SPF has been scheduled.";
2246 }
2247 leaf last-spf-time {
2248 type yang:timestamp;
2249 config false;
2250 description
2251 "Time of last SPF computation.";
2252 }
2253 description
2254 "Grouping for IETF SPF delay configuration and state.";
2255 }
2257 grouping node-tag-config {
2258 description
2259 "IS-IS node tag config state.";
2260 container node-tags {
2261 if-feature node-tag;
2262 list node-tag {
2263 key tag;
2264 leaf tag {
2265 type uint32;
2266 description
2267 "Node tag value.";
2268 }
2269 description
2270 "List of tags.";
2271 }
2272 description
2273 "Container for node admin tags.";
2274 }
2275 }
2277 grouping authentication-global-cfg {
2278 choice authentication-type {
2279 case key-chain {
2280 if-feature key-chain;
2281 leaf key-chain {
2282 type key-chain:key-chain-ref;
2283 description
2284 "Reference to a key-chain.";
2285 }
2286 }
2287 case password {
2288 leaf key {
2289 type string;
2290 description
2291 "This leaf specifies the authentication key. The
2292 length of the key may be dependent on the
2293 cryptographic algorithm.";
2294 }
2295 leaf crypto-algorithm {
2296 type identityref {
2297 base key-chain:crypto-algorithm;
2298 }
2299 description
2300 "Cryptographic algorithm associated with key.";
2301 }
2302 }
2303 description "Choice of authentication.";
2304 }
2305 description "Grouping for global authentication config.";
2306 }
2308 grouping metric-type-global-cfg {
2309 leaf value {
2310 type enumeration {
2311 enum wide-only {
2312 description
2313 "Advertise new metric style only (RFC5305)";
2314 }
2315 enum old-only {
2316 description
2317 "Advertise old metric style only (RFC1195)";
2318 }
2319 enum both {
2320 description "Advertise both metric styles";
2321 }
2322 }
2323 default wide-only;
2324 description
2325 "Type of metric to be generated:
2326 - wide-only means only new metric style
2327 is generated,
2328 - old-only means that only old-style metric
2329 is generated,
2330 - both means that both are advertised.
2331 This leaf is only affecting IPv4 metrics.";
2332 }
2333 description
2334 "Grouping for global metric style config.";
2335 }
2337 grouping default-metric-global-cfg {
2338 leaf value {
2339 type wide-metric;
2340 default "10";
2341 description "Value of the metric";
2342 }
2343 description
2344 "Global default metric config grouping.";
2345 }
2347 grouping overload-global-cfg {
2348 leaf status {
2349 type boolean;
2350 default false;
2351 description
2352 "This leaf specifies the overload status.";
2353 }
2354 description "Grouping for overload bit config.";
2355 }
2357 grouping overload-max-metric-global-cfg {
2358 leaf timeout {
2359 type rt-types:timer-value-seconds16;
2360 units "seconds";
2361 description
2362 "Timeout (in seconds) of the overload condition.";
2363 }
2364 description
2365 "Overload maximum metric configuration grouping";
2366 }
2368 grouping route-preference-global-cfg {
2369 choice granularity {
2370 case detail {
2371 leaf internal {
2372 type uint8;
2373 description
2374 "Protocol preference for internal routes.";
2375 }
2376 leaf external {
2377 type uint8;
2378 description
2379 "Protocol preference for external routes.";
2380 }
2381 }
2382 case coarse {
2383 leaf default {
2384 type uint8;
2385 description
2386 "Protocol preference for all IS-IS routes.";
2387 }
2388 }
2389 description
2390 "Choice for implementation of route preference.";
2391 }
2392 description
2393 "Global route preference grouping";
2394 }
2396 grouping hello-authentication-cfg {
2397 choice authentication-type {
2398 case key-chain {
2399 if-feature key-chain;
2400 leaf key-chain {
2401 type key-chain:key-chain-ref;
2402 description "Reference to a key-chain.";
2403 }
2404 }
2405 case password {
2406 leaf key {
2407 type string;
2408 description "Authentication key specification - The
2409 length of the key may be dependent on the
2410 cryptographic algorithm.";
2411 }
2412 leaf crypto-algorithm {
2413 type identityref {
2414 base key-chain:crypto-algorithm;
2415 }
2416 description
2417 "Cryptographic algorithm associated with key.";
2418 }
2419 }
2420 description "Choice of authentication.";
2421 }
2422 description "Grouping for hello authentication.";
2423 }
2425 grouping hello-interval-cfg {
2426 leaf value {
2427 type rt-types:timer-value-seconds16;
2428 units "seconds";
2429 default 10;
2430 description
2431 "Interval (in seconds) between successive hello
2432 messages.";
2434 }
2436 description "Interval between hello messages.";
2437 }
2439 grouping hello-multiplier-cfg {
2440 leaf value {
2441 type uint16;
2442 default 3;
2443 description
2444 "Number of missed hello messages prior to
2445 declaring the adjacency down.";
2446 }
2447 description
2448 "Number of missed hello messages prior to
2449 adjacency down grouping.";
2450 }
2452 grouping priority-cfg {
2453 leaf value {
2454 type uint8 {
2455 range "0 .. 127";
2456 }
2457 default 64;
2458 description
2459 "Priority of interface for DIS election.";
2460 }
2462 description "Interface DIS election priority grouping";
2463 }
2465 grouping metric-cfg {
2466 leaf value {
2467 type wide-metric;
2468 default "10";
2469 description "Metric value.";
2470 }
2471 description "Interface metric grouping";
2472 }
2474 grouping metric-parameters {
2475 container metric-type {
2476 uses metric-type-global-cfg;
2477 container level-1 {
2478 uses metric-type-global-cfg;
2479 description "level-1 specific configuration";
2480 }
2481 container level-2 {
2482 uses metric-type-global-cfg;
2483 description "level-2 specific configuration";
2484 }
2485 description "Metric style global configuration";
2486 }
2488 container default-metric {
2489 uses default-metric-global-cfg;
2490 container level-1 {
2491 uses default-metric-global-cfg;
2492 description "level-1 specific configuration";
2493 }
2494 container level-2 {
2495 uses default-metric-global-cfg;
2496 description "level-2 specific configuration";
2497 }
2498 description "Default metric global configuration";
2499 }
2500 container auto-cost {
2501 if-feature auto-cost;
2502 description
2503 "Interface Auto-cost configuration state.";
2504 leaf enable {
2505 type boolean;
2506 description
2507 "Enable/Disable interface auto-cost.";
2508 }
2509 leaf reference-bandwidth {
2510 when "../enable = 'true'" {
2511 description "Only when auto cost is enabled";
2512 }
2513 type uint32 {
2514 range "1..4294967";
2515 }
2516 units Mbits;
2517 description
2518 "Configure reference bandwidth used to automatically
2519 determine interface cost (Mbits). The cost is the
2520 reference bandwidth divided by the interface speed
2521 with 1 being the minimum cost.";
2522 }
2523 }
2525 description "Grouping for global metric parameters.";
2526 }
2528 grouping high-availability-parameters {
2529 container graceful-restart {
2530 if-feature graceful-restart;
2531 leaf enable {
2532 type boolean;
2533 default false;
2534 description "Enable graceful restart.";
2535 }
2536 leaf restart-interval {
2537 type rt-types:timer-value-seconds16;
2538 units "seconds";
2539 description
2540 "Interval (in seconds) to attempt graceful restart prior
2541 to failure.";
2542 }
2543 leaf helper-enable {
2544 type boolean;
2545 default "true";
2546 description
2547 "Enable local IS-IS router as graceful restart helper.";
2548 }
2549 description "Graceful-Restart Configuration.";
2550 }
2551 container nsr {
2552 if-feature nsr;
2553 description "Non-Stop Routing (NSR) configuration.";
2554 leaf enable {
2555 type boolean;
2556 default false;
2557 description "Enable/Disable Non-Stop Routing (NSR).";
2558 }
2559 }
2560 description "Grouping for High Availability parameters.";
2561 }
2563 grouping authentication-parameters {
2564 container authentication {
2565 uses authentication-global-cfg;
2567 container level-1 {
2568 uses authentication-global-cfg;
2569 description "level-1 specific configuration";
2570 }
2571 container level-2 {
2572 uses authentication-global-cfg;
2573 description "level-2 specific configuration";
2574 }
2575 description "Authentication global configuration for
2576 both LSPs and SNPs.";
2578 }
2579 description "Grouping for authentication parameters";
2580 }
2581 grouping address-family-parameters {
2582 container address-families {
2583 if-feature nlpid-control;
2584 list address-family-list {
2585 key address-family;
2586 leaf address-family {
2587 type iana-rt-types:address-family;
2588 description "Address-family";
2589 }
2590 leaf enable {
2591 type boolean;
2592 description "Activate the address family.";
2593 }
2594 description
2595 "List of address families and whether or not they
2596 are activated.";
2597 }
2598 description "Address Family configuration";
2599 }
2600 description "Grouping for address family parameters.";
2601 }
2603 grouping mpls-parameters {
2604 container mpls {
2605 container te-rid {
2606 if-feature te-rid;
2607 description
2608 "Stable ISIS Router IP Address used for Traffic
2609 Engineering";
2610 leaf ipv4-router-id {
2611 type inet:ipv4-address;
2612 description
2613 "Router ID value that would be used in TLV 134.";
2614 }
2615 leaf ipv6-router-id {
2616 type inet:ipv6-address;
2617 description
2618 "Router ID value that would be used in TLV 140.";
2619 }
2620 }
2621 container ldp {
2622 container igp-sync {
2623 if-feature ldp-igp-sync;
2624 description
2625 "This container may be augmented with global
2626 parameters for igp-ldp-sync.";
2627 }
2628 description "LDP configuration.";
2629 }
2630 description "MPLS configuration";
2631 }
2632 description "Grouping for MPLS global parameters.";
2633 }
2635 grouping lsp-parameters {
2636 leaf lsp-mtu {
2637 type uint16;
2638 units "bytes";
2639 default 1492;
2640 description
2641 "Maximum size of an LSP PDU in bytes.";
2642 }
2643 leaf lsp-lifetime {
2644 type uint16 {
2645 range "1..65535";
2646 }
2647 units "seconds";
2648 description
2649 "Lifetime of the router's LSPs in seconds.";
2650 }
2651 leaf lsp-refresh {
2652 if-feature lsp-refresh;
2653 type rt-types:timer-value-seconds16;
2654 units "seconds";
2655 description
2656 "Refresh interval of the router's LSPs in seconds.";
2657 }
2658 leaf poi-tlv {
2659 if-feature poi-tlv;
2660 type boolean;
2661 default false;
2662 description
2663 "Enable advertisement of IS-IS purge TLV.";
2664 }
2665 description "Grouping for LSP global parameters.";
2666 }
2667 grouping spf-parameters {
2668 container spf-control {
2669 leaf paths {
2670 if-feature max-ecmp;
2671 type uint16 {
2672 range "1..32";
2673 }
2674 description
2675 "Maximum number of Equal-Cost Multi-Path (ECMP) paths.";
2676 }
2677 container ietf-spf-delay {
2678 if-feature ietf-spf-delay;
2679 uses ietf-spf-delay;
2680 description "IETF SPF delay algorithm configuration.";
2681 }
2682 description
2683 "SPF calculation control.";
2684 }
2685 description "Grouping for SPF global parameters.";
2686 }
2687 grouping instance-config {
2688 description "IS-IS global configuration grouping";
2690 uses admin-control;
2692 leaf level-type {
2693 type level;
2694 default "level-all";
2695 description
2696 "Level of an IS-IS node - can be level-1,
2697 level-2 or level-all.";
2698 }
2700 leaf system-id {
2701 type system-id;
2702 description "system-id of the node.";
2703 }
2705 leaf maximum-area-addresses {
2706 if-feature maximum-area-addresses;
2707 type uint8;
2708 default 3;
2709 description "Maximum areas supported.";
2710 }
2712 leaf-list area-address {
2713 type area-address;
2714 description
2715 "List of areas supported by the protocol instance.";
2716 }
2718 uses lsp-parameters;
2719 uses high-availability-parameters;
2720 uses node-tag-config;
2721 uses metric-parameters;
2722 uses authentication-parameters;
2723 uses address-family-parameters;
2724 uses mpls-parameters;
2725 uses spf-parameters;
2726 uses instance-fast-reroute-config;
2728 container preference {
2729 uses route-preference-global-cfg;
2730 description "Router preference configuration for IS-IS
2731 protocol instance route installation";
2732 }
2734 container overload {
2735 uses overload-global-cfg;
2736 description "Router protocol instance overload state
2737 configuration";
2738 }
2740 container overload-max-metric {
2741 if-feature overload-max-metric;
2742 uses overload-max-metric-global-cfg;
2743 description
2744 "Router protocol instance overload maximum
2745 metric advertisement configuration.";
2746 }
2747 }
2749 grouping instance-state {
2750 description
2751 "IS-IS instance operational state.";
2752 uses spf-log;
2753 uses lsp-log;
2754 uses hostname-db;
2755 uses lsdb;
2756 uses local-rib;
2757 uses system-counters;
2758 uses instance-fast-reroute-state;
2759 leaf discontinuity-time {
2760 type yang:date-and-time;
2761 description
2762 "The time of the most recent occasion at which any one
2763 or more of this IS-IS instance's counters suffered a
2764 discontinuity. If no such discontinuities have occurred
2765 since the IS-IS instance was last re-initialized, then
2766 this node contains the time the IS-IS instance was
2767 re-initialized which normally occurs when it was
2768 created.";
2769 }
2771 }
2773 grouping multi-topology-config {
2774 description "Per-topology configuration";
2775 container default-metric {
2776 uses default-metric-global-cfg;
2777 container level-1 {
2778 uses default-metric-global-cfg;
2779 description "level-1 specific configuration";
2780 }
2781 container level-2 {
2782 uses default-metric-global-cfg;
2783 description "level-2 specific configuration";
2784 }
2785 description "Default metric per-topology configuration";
2786 }
2787 uses node-tag-config;
2788 }
2790 grouping interface-config {
2791 description "Interface configuration grouping";
2793 uses admin-control;
2795 leaf level-type {
2796 type level;
2797 default "level-all";
2798 description "IS-IS level of the interface.";
2799 }
2800 leaf lsp-pacing-interval {
2801 type rt-types:timer-value-milliseconds;
2802 units "milliseconds";
2803 default 33;
2804 description
2805 "Interval (in milli-seconds) between LSP
2806 transmissions.";
2807 }
2808 leaf lsp-retransmit-interval {
2809 type rt-types:timer-value-seconds16;
2810 units "seconds";
2811 description
2812 "Interval (in seconds) between LSP
2813 retransmissions.";
2814 }
2815 leaf passive {
2816 type boolean;
2817 default "false";
2818 description
2819 "Indicates whether the interface is in passive mode (IS-IS
2820 not running but network is advertised).";
2821 }
2822 leaf csnp-interval {
2823 type rt-types:timer-value-seconds16;
2824 units "seconds";
2825 default 10;
2826 description
2827 "Interval (in seconds) between CSNP messages.";
2828 }
2829 container hello-padding {
2830 leaf enable {
2831 type boolean;
2832 default "true";
2833 description
2834 "IS-IS Hello-padding activation - enabled by default.";
2835 }
2836 description "IS-IS hello padding configuration.";
2837 }
2838 leaf mesh-group-enable {
2839 type mesh-group-state;
2840 description "IS-IS interface mesh-group state";
2841 }
2842 leaf mesh-group {
2843 when "../mesh-group-enable = 'mesh-set'" {
2844 description
2845 "Only valid when mesh-group-enable equals mesh-set";
2846 }
2847 type uint8;
2848 description "IS-IS interface mesh-group ID.";
2849 }
2850 leaf interface-type {
2851 type interface-type;
2852 default "broadcast";
2853 description
2854 "Type of adjacency to be established for the interface. This
2855 dictates the type of hello messages that are used.";
2856 }
2858 leaf-list tag {
2859 if-feature prefix-tag;
2860 type uint32;
2861 description
2862 "List of tags associated with the interface.";
2863 }
2864 leaf-list tag64 {
2865 if-feature prefix-tag64;
2866 type uint64;
2867 description
2868 "List of 64-bit tags associated with the interface.";
2869 }
2870 leaf node-flag {
2871 if-feature node-flag;
2872 type boolean;
2873 default false;
2874 description
2875 "Set prefix as a node representative prefix.";
2876 }
2877 container hello-authentication {
2878 uses hello-authentication-cfg;
2879 container level-1 {
2880 uses hello-authentication-cfg;
2881 description "level-1 specific configuration";
2882 }
2883 container level-2 {
2884 uses hello-authentication-cfg;
2885 description "level-2 specific configuration";
2886 }
2887 description
2888 "Authentication type to be used in hello messages.";
2889 }
2890 container hello-interval {
2891 uses hello-interval-cfg;
2892 container level-1 {
2893 uses hello-interval-cfg;
2894 description "level-1 specific configuration";
2895 }
2896 container level-2 {
2897 uses hello-interval-cfg;
2898 description "level-2 specific configuration";
2899 }
2900 description "Interval between hello messages.";
2901 }
2902 container hello-multiplier {
2903 uses hello-multiplier-cfg;
2904 container level-1 {
2905 uses hello-multiplier-cfg;
2906 description "level-1 specific configuration";
2907 }
2908 container level-2 {
2909 uses hello-multiplier-cfg;
2910 description "level-2 specific configuration";
2911 }
2912 description "Hello multiplier configuration.";
2913 }
2914 container priority {
2915 must '../interface-type = "broadcast"' {
2916 error-message
2917 "Priority only applies to broadcast interfaces.";
2918 description "Check for broadcast interface.";
2919 }
2920 uses priority-cfg;
2921 container level-1 {
2922 uses priority-cfg;
2923 description "level-1 specific configuration";
2924 }
2925 container level-2 {
2926 uses priority-cfg;
2927 description "level-2 specific configuration";
2928 }
2929 description "Priority for DIS election.";
2930 }
2931 container metric {
2932 uses metric-cfg;
2933 container level-1 {
2934 uses metric-cfg;
2935 description "level-1 specific configuration";
2936 }
2937 container level-2 {
2938 uses metric-cfg;
2939 description "level-2 specific configuration";
2940 }
2941 description "Metric configuration.";
2942 }
2943 container bfd {
2944 if-feature bfd;
2945 description "BFD Client Configuration.";
2946 uses bfd-types:client-cfg-parms;
2948 reference "RFC YYYY - YANG Data Model for Bidirectional
2949 Forwarding Detection (BFD).
2951 -- Note to RFC Editor Please replace YYYY with published FC
2952 number for draft-ietf-bfd-yang.";
2954 }
2955 container address-families {
2956 if-feature nlpid-control;
2957 list address-family-list {
2958 key address-family;
2959 leaf address-family {
2960 type iana-rt-types:address-family;
2961 description "Address-family";
2962 }
2963 description "List of AFs.";
2964 }
2965 description "Interface address-families";
2966 }
2967 container mpls {
2968 container ldp {
2969 leaf igp-sync {
2970 if-feature ldp-igp-sync;
2971 type boolean;
2972 default false;
2973 description "Enables IGP/LDP synchronization";
2974 }
2975 description "LDP protocol related configuration.";
2976 }
2977 description "MPLS configuration for IS-IS interfaces";
2978 }
2979 uses interface-fast-reroute-config;
2980 }
2982 grouping multi-topology-interface-config {
2983 description "IS-IS interface topology configuration.";
2984 container metric {
2985 uses metric-cfg;
2986 container level-1 {
2987 uses metric-cfg;
2988 description "level-1 specific configuration";
2989 }
2990 container level-2 {
2991 uses metric-cfg;
2992 description "level-2 specific configuration";
2993 }
2994 description "Metric IS-IS interface configuration.";
2995 }
2996 }
2997 grouping interface-state {
2998 description
2999 "IS-IS interface operational state.";
3000 uses adjacency-state;
3001 uses event-counters;
3002 uses packet-counters;
3003 leaf discontinuity-time {
3004 type yang:date-and-time;
3005 description
3006 "The time of the most recent occasion at which any one
3007 or more of this IS-IS interface's counters suffered a
3008 discontinuity. If no such discontinuities have occurred
3009 since the IS-IS interface was last re-initialized, then
3010 this node contains the time the IS-IS interface was
3011 re-initialized which normally occurs when it was
3012 created.";
3013 }
3014 }
3016 /* Grouping for the hostname database */
3018 grouping hostname-db {
3019 container hostnames {
3020 config false;
3021 list hostname {
3022 key system-id;
3023 leaf system-id {
3024 type system-id;
3025 description
3026 "system-id associated with the hostname.";
3027 }
3028 leaf hostname {
3029 type string {
3030 length "1..255";
3031 }
3032 description
3033 "Hostname associated with the system-id
3034 as defined in RFC5301.";
3035 }
3036 description
3037 "List of system-id/hostname associations.";
3038 }
3039 description
3040 "Hostname to system-id mapping database.";
3041 }
3042 description
3043 "Grouping for hostname to system-id mapping database.";
3044 }
3046 /* Groupings for counters */
3048 grouping system-counters {
3049 container system-counters {
3050 config false;
3051 list level {
3052 key level;
3054 leaf level {
3055 type level-number;
3056 description "IS-IS level.";
3057 }
3058 leaf corrupted-lsps {
3059 type uint32;
3060 description
3061 "Number of corrupted in-memory LSPs detected.
3062 LSPs received from the wire with a bad
3063 checksum are silently dropped and not counted.
3064 LSPs received from the wire with parse errors
3065 are counted by lsp-errors.";
3066 }
3067 leaf authentication-type-fails {
3068 type uint32;
3069 description
3070 "Number of authentication type mismatches.";
3071 }
3072 leaf authentication-fails {
3073 type uint32;
3074 description
3075 "Number of authentication key failures.";
3076 }
3077 leaf database-overload {
3078 type uint32;
3079 description
3080 "Number of times the database has become
3081 overloaded.";
3082 }
3083 leaf own-lsp-purge {
3084 type uint32;
3085 description
3086 "Number of times a zero-aged copy of the system's
3087 own LSP is received from some other IS-IS node.";
3088 }
3089 leaf manual-address-drop-from-area {
3090 type uint32;
3091 description
3092 "Number of times a manual address
3093 has been dropped from the area.";
3094 }
3095 leaf max-sequence {
3096 type uint32;
3097 description
3098 "Number of times the system has attempted
3099 to exceed the maximum sequence number.";
3100 }
3101 leaf sequence-number-skipped {
3102 type uint32;
3103 description
3104 "Number of times a sequence number skip has
3105 occurred.";
3106 }
3107 leaf id-len-mismatch {
3108 type uint32;
3109 description
3110 "Number of times a PDU is received with a
3111 different value for the ID field length
3112 than that of the receiving system.";
3113 }
3114 leaf partition-changes {
3115 type uint32;
3116 description
3117 "Number of partition changes detected.";
3118 }
3119 leaf lsp-errors {
3120 type uint32;
3121 description
3122 "Number of LSPs with errors we have received.";
3123 }
3124 leaf spf-runs {
3125 type uint32;
3126 description
3127 "Number of times we ran SPF at this level.";
3128 }
3129 description
3130 "List of supported levels.";
3131 }
3132 description
3133 "List counters for the IS-IS protocol instance";
3134 }
3135 description
3136 "Grouping for IS-IS system counters";
3137 }
3139 grouping event-counters {
3140 container event-counters {
3141 config false;
3142 leaf adjacency-changes {
3143 type uint32;
3144 description
3145 "The number of times an adjacency state change has
3146 occurred on this interface.";
3147 }
3148 leaf adjacency-number {
3149 type uint32;
3150 description
3151 "The number of adjacencies on this interface.";
3152 }
3153 leaf init-fails {
3154 type uint32;
3155 description
3156 "The number of times initialization of this
3157 interface has failed. This counts events such
3158 as PPP NCP failures. Failures to form an
3159 adjacency are counted by adjacency-rejects.";
3160 }
3161 leaf adjacency-rejects {
3162 type uint32;
3163 description
3164 "The number of times an adjacency has been
3165 rejected on this interface.";
3166 }
3167 leaf id-len-mismatch {
3168 type uint32;
3169 description
3170 "The number of times an IS-IS PDU with an ID
3171 field length different from that for this
3172 system has been received on this interface.";
3173 }
3174 leaf max-area-addresses-mismatch {
3175 type uint32;
3176 description
3177 "The number of times an IS-IS PDU has been
3178 received on this interface with the
3179 max area address field differing from that of
3180 this system.";
3181 }
3182 leaf authentication-type-fails {
3183 type uint32;
3184 description
3185 "Number of authentication type mismatches.";
3186 }
3187 leaf authentication-fails {
3188 type uint32;
3189 description
3190 "Number of authentication key failures.";
3191 }
3192 leaf lan-dis-changes {
3193 type uint32;
3194 description
3195 "The number of times the DIS has changed on this
3196 interface at this level. If the interface type is
3197 point-to-point, the count is zero.";
3198 }
3199 description "IS-IS interface event counters.";
3200 }
3201 description
3202 "Grouping for IS-IS interface event counters";
3204 }
3206 grouping packet-counters {
3207 container packet-counters {
3208 config false;
3209 list level {
3210 key level;
3212 leaf level {
3213 type level-number;
3214 description "IS-IS level.";
3215 }
3216 container iih {
3217 leaf in {
3218 type uint32;
3219 description "Received IIH PDUs.";
3220 }
3221 leaf out {
3222 type uint32;
3223 description "Sent IIH PDUs.";
3224 }
3225 description "Number of IIH PDUs received/sent.";
3226 }
3227 container ish {
3228 leaf in {
3229 type uint32;
3230 description "Received ISH PDUs.";
3231 }
3232 leaf out {
3233 type uint32;
3234 description "Sent ISH PDUs.";
3235 }
3236 description
3237 "ISH PDUs received/sent.";
3238 }
3239 container esh {
3240 leaf in {
3241 type uint32;
3242 description "Received ESH PDUs.";
3243 }
3244 leaf out {
3245 type uint32;
3246 description "Sent ESH PDUs.";
3247 }
3248 description "Number of ESH PDUs received/sent.";
3249 }
3250 container lsp {
3251 leaf in {
3252 type uint32;
3253 description "Received LSP PDUs.";
3254 }
3255 leaf out {
3256 type uint32;
3257 description "Sent LSP PDUs.";
3258 }
3259 description "Number of LSP PDUs received/sent.";
3260 }
3261 container psnp {
3262 leaf in {
3263 type uint32;
3264 description "Received PSNP PDUs.";
3265 }
3266 leaf out {
3267 type uint32;
3268 description "Sent PSNP PDUs.";
3269 }
3270 description "Number of PSNP PDUs received/sent.";
3271 }
3272 container csnp {
3273 leaf in {
3274 type uint32;
3275 description "Received CSNP PDUs.";
3276 }
3277 leaf out {
3278 type uint32;
3279 description "Sent CSNP PDUs.";
3280 }
3281 description "Number of CSNP PDUs received/sent.";
3282 }
3283 container unknown {
3284 leaf in {
3285 type uint32;
3286 description "Received unknown PDUs.";
3287 }
3288 description "Number of unknown PDUs received/sent.";
3289 }
3290 description
3291 "List of packet counter for supported levels.";
3292 }
3293 description "Packet counters per IS-IS level.";
3294 }
3295 description
3296 "Grouping for per IS-IS Level packet counters.";
3297 }
3299 /* Groupings for various log buffers */
3301 grouping spf-log {
3302 container spf-log {
3303 config false;
3304 list event {
3305 key id;
3307 leaf id {
3308 type uint32;
3309 description
3310 "Event identifier - purely internal value.";
3311 }
3312 leaf spf-type {
3313 type enumeration {
3314 enum full {
3315 description "Full SPF computation.";
3316 }
3317 enum route-only {
3318 description
3319 "Route reachability only SPF computation";
3320 }
3321 }
3322 description "Type of SPF computation performed.";
3323 }
3324 leaf level {
3325 type level-number;
3326 description
3327 "IS-IS level number for SPF computation";
3328 }
3329 leaf schedule-timestamp {
3330 type yang:timestamp;
3331 description
3332 "Timestamp of when the SPF computation was
3333 scheduled.";
3334 }
3335 leaf start-timestamp {
3336 type yang:timestamp;
3337 description
3338 "Timestamp of when the SPF computation started.";
3339 }
3340 leaf end-timestamp {
3341 type yang:timestamp;
3342 description
3343 "Timestamp of when the SPF computation ended.";
3344 }
3345 list trigger-lsp {
3346 key "lsp";
3347 leaf lsp {
3348 type lsp-id;
3349 description
3350 "LSP ID of the LSP triggering SPF computation.";
3351 }
3352 leaf sequence {
3353 type uint32;
3354 description
3355 "Sequence number of the LSP triggering SPF
3356 computation";
3357 }
3358 description
3359 "This list includes the LSPs that triggered the
3360 SPF computation.";
3361 }
3362 description
3363 "List of computation events - implemented as a
3364 wrapping buffer.";
3365 }
3367 description
3368 "This container lists the SPF computation events.";
3369 }
3370 description "Grouping for spf-log events.";
3371 }
3373 grouping lsp-log {
3374 container lsp-log {
3375 config false;
3376 list event {
3377 key id;
3379 leaf id {
3380 type uint32;
3381 description
3382 "Event identifier - purely internal value.";
3383 }
3384 leaf level {
3385 type level-number;
3386 description
3387 "IS-IS level number for LSP";
3388 }
3389 container lsp {
3390 leaf lsp {
3391 type lsp-id;
3392 description
3393 "LSP ID of the LSP.";
3394 }
3395 leaf sequence {
3396 type uint32;
3397 description
3398 "Sequence number of the LSP.";
3399 }
3400 description
3401 "LSP identification container - either the received
3402 LSP or the locally generated LSP.";
3403 }
3405 leaf received-timestamp {
3406 type yang:timestamp;
3407 description
3408 "This is the timestamp when the LSA was received.
3409 In case of local LSA update, the timestamp refers
3410 to the LSA origination time.";
3411 }
3413 leaf reason {
3414 type identityref {
3415 base lsp-log-reason;
3416 }
3417 description "Type of LSP change.";
3418 }
3420 description
3421 "List of LSP events - implemented as a
3422 wrapping buffer.";
3423 }
3425 description
3426 "This container lists the LSP log.
3427 Local LSP modifications are also included
3428 in the list.";
3430 } description "Grouping for LSP log.";
3431 }
3433 /* Groupings for the LSDB description */
3435 /* Unknown TLV and sub-TLV description */
3436 grouping tlv {
3437 description
3438 "Type-Length-Value (TLV)";
3439 leaf type {
3440 type uint16;
3441 description "TLV type.";
3442 }
3443 leaf length {
3444 type uint16;
3445 description "TLV length (octets).";
3446 }
3447 leaf value {
3448 type yang:hex-string;
3449 description "TLV value.";
3450 }
3451 }
3453 grouping unknown-tlvs {
3454 description
3455 "Unknown TLVs grouping - Used for unknown TLVs or
3456 unknown sub-TLVs.";
3457 container unknown-tlvs {
3458 description "All unknown TLVs.";
3459 list unknown-tlv {
3460 description "Unknown TLV.";
3461 uses tlv;
3462 }
3463 }
3464 }
3466 /* TLVs and sub-TLVs for prefixes */
3468 grouping prefix-reachability-attributes {
3469 description
3470 "Grouping for extended reachability attributes of an
3471 IPv4 or IPv6 prefix.";
3473 leaf external-prefix-flag {
3474 type boolean;
3475 description "External prefix flag.";
3476 }
3477 leaf readvertisement-flag {
3478 type boolean;
3479 description "Re-advertisement flag.";
3480 }
3481 leaf node-flag {
3482 type boolean;
3483 description "Node flag.";
3484 }
3485 }
3487 grouping prefix-ipv4-source-router-id {
3488 description
3489 "Grouping for the IPv4 source router ID of a prefix
3490 advertisement.";
3492 leaf ipv4-source-router-id {
3493 type inet:ipv4-address;
3494 description "IPv4 Source router ID address.";
3495 }
3496 }
3498 grouping prefix-ipv6-source-router-id {
3499 description
3500 "Grouping for the IPv6 source router ID of a prefix
3501 advertisement.";
3503 leaf ipv6-source-router-id {
3504 type inet:ipv6-address;
3505 description "IPv6 Source router ID address.";
3506 }
3507 }
3509 grouping prefix-attributes-extension {
3510 description "Prefix extended attributes
3511 as defined in RFC7794.";
3513 uses prefix-reachability-attributes;
3514 uses prefix-ipv4-source-router-id;
3515 uses prefix-ipv6-source-router-id;
3516 }
3518 grouping prefix-ipv4-std {
3519 description
3520 "Grouping for attributes of an IPv4 standard prefix
3521 as defined in RFC1195.";
3522 leaf ip-prefix {
3523 type inet:ipv4-address;
3524 description "IPv4 prefix address";
3525 }
3526 leaf prefix-len {
3527 type uint8;
3528 description "IPv4 prefix length (in bits)";
3529 }
3530 leaf i-e {
3531 type boolean;
3532 description "Internal or External (I/E) Metric bit value.";
3533 }
3534 container default-metric {
3535 leaf metric {
3536 type std-metric;
3537 description "Default IS-IS metric for IPv4 prefix";
3538 }
3539 description "IS-IS default metric container.";
3541 }
3542 container delay-metric {
3543 leaf metric {
3544 type std-metric;
3545 description "IS-IS delay metric for IPv4 prefix";
3546 }
3547 leaf supported {
3548 type boolean;
3549 default "false";
3550 description
3551 "Indicates whether IS-IS delay metric is supported.";
3552 }
3553 description "IS-IS delay metric container.";
3554 }
3555 container expense-metric {
3556 leaf metric {
3557 type std-metric;
3558 description "IS-IS expense metric for IPv4 prefix";
3559 }
3560 leaf supported {
3561 type boolean;
3562 default "false";
3563 description
3564 "Indicates whether IS-IS delay metric is supported.";
3565 }
3566 description "IS-IS expense metric container.";
3567 }
3568 container error-metric {
3569 leaf metric {
3570 type std-metric;
3571 description
3572 "This leaf describes the IS-IS error metric value";
3573 }
3574 leaf supported {
3575 type boolean;
3576 default "false";
3577 description "IS-IS error metric for IPv4 prefix";
3578 }
3579 description "IS-IS error metric container.";
3580 }
3581 }
3583 grouping prefix-ipv4-extended {
3584 description
3585 "Grouping for attributes of an IPv4 extended prefix
3586 as defined in RFC5305.";
3587 leaf up-down {
3588 type boolean;
3589 description "Value of up/down bit.";
3590 }
3591 leaf ip-prefix {
3592 type inet:ipv4-address;
3593 description "IPv4 prefix address";
3594 }
3595 leaf prefix-len {
3596 type uint8;
3597 description "IPv4 prefix length (in bits)";
3598 }
3599 leaf metric {
3600 type wide-metric;
3601 description "IS-IS wide metric value";
3602 }
3603 leaf-list tag {
3604 type uint32;
3605 description
3606 "List of 32-bit tags associated with the IPv4 prefix.";
3607 }
3608 leaf-list tag64 {
3609 type uint64;
3610 description
3611 "List of 32-bit tags associated with the IPv4 prefix.";
3612 }
3613 uses prefix-attributes-extension;
3614 }
3616 grouping prefix-ipv6-extended {
3617 description "Grouping for attributes of an IPv6 prefix
3618 as defined in RFC5308.";
3619 leaf up-down {
3620 type boolean;
3621 description "Value of up/down bit.";
3622 }
3623 leaf ip-prefix {
3624 type inet:ipv6-address;
3625 description "IPv6 prefix address";
3626 }
3627 leaf prefix-len {
3628 type uint8;
3629 description "IPv4 prefix length (in bits)";
3630 }
3631 leaf metric {
3632 type wide-metric;
3633 description "IS-IS wide metric value";
3634 }
3635 leaf-list tag {
3636 type uint32;
3637 description
3638 "List of 32-bit tags associated with the IPv4 prefix.";
3639 }
3640 leaf-list tag64 {
3641 type uint64;
3642 description
3643 "List of 32-bit tags associated with the IPv4 prefix.";
3644 }
3645 uses prefix-attributes-extension;
3646 }
3648 /* TLVs and sub-TLVs for neighbors */
3650 grouping neighbor-link-attributes {
3651 description
3652 "Grouping for link attributes as defined
3653 in RFC5029";
3654 leaf link-attributes-flags {
3655 type uint16;
3656 description
3657 "Flags for the link attributes";
3658 }
3659 }
3660 grouping neighbor-gmpls-extensions {
3661 description
3662 "Grouping for GMPLS attributes of a neighbor as defined
3663 in RFC5307";
3664 leaf link-local-id {
3665 type uint32;
3666 description
3667 "Local identifier of the link.";
3668 }
3669 leaf remote-local-id {
3670 type uint32;
3671 description
3672 "Remote identifier of the link.";
3673 }
3674 leaf protection-capability {
3675 type uint8;
3676 description
3677 "Describes the protection capabilities
3678 of the link. This is the value of the
3679 first octet of the sub-TLV type 20 value.";
3680 }
3681 container interface-switching-capability {
3682 description
3683 "Interface switching capabilities of the link.";
3684 leaf switching-capability {
3685 type uint8;
3686 description
3687 "Switching capability of the link.";
3688 }
3689 leaf encoding {
3690 type uint8;
3691 description
3692 "Type of encoding of the LSP being used.";
3693 }
3694 container max-lsp-bandwidths {
3695 description "Per-priority max LSP bandwidths.";
3696 list max-lsp-bandwidth {
3697 leaf priority {
3698 type uint8 {
3699 range "0 .. 7";
3700 }
3701 description "Priority from 0 to 7.";
3702 }
3703 leaf bandwidth {
3704 type rt-types:bandwidth-ieee-float32;
3705 description "max LSP bandwidth.";
3706 }
3707 description
3708 "List of max LSP bandwidths for different
3709 priorities.";
3710 }
3711 }
3712 container tdm-specific {
3713 when "../switching-capability = 100";
3714 description
3715 "Switching Capability-specific information applicable
3716 when switching type is TDM.";
3718 leaf minimum-lsp-bandwidth {
3719 type rt-types:bandwidth-ieee-float32;
3720 description "minimum LSP bandwidth.";
3721 }
3722 leaf indication {
3723 type uint8;
3724 description
3725 "The indication whether the interface supports Standard
3726 or Arbitrary SONET/SDH.";
3727 }
3728 }
3729 container psc-specific {
3730 when "../switching-capability >= 1 and
3731 ../switching-capability <= 4";
3732 description
3733 "Switching Capability-specific information applicable
3734 when switching type is PSC1,PSC2,PSC3 or PSC4.";
3736 leaf minimum-lsp-bandwidth {
3737 type rt-types:bandwidth-ieee-float32;
3738 description "minimum LSP bandwidth.";
3739 }
3740 leaf mtu {
3741 type uint16;
3742 units bytes;
3743 description
3744 "Interface MTU";
3745 }
3746 }
3747 }
3748 }
3750 grouping neighbor-extended-te-extensions {
3751 description
3752 "Grouping for TE attributes of a neighbor as defined
3753 in RFC8570";
3755 container unidirectional-link-delay {
3756 description
3757 "Container for the average delay
3758 from the local neighbor to the remote one.";
3759 container flags {
3760 leaf-list unidirectional-link-delay-subtlv-flags {
3761 type identityref {
3762 base unidirectional-link-delay-subtlv-flag;
3763 }
3764 description
3765 "This list contains identities for the bits
3766 which are set.";
3767 }
3768 description
3769 "unidirectional-link-delay subTLV flags.";
3770 }
3771 leaf value {
3772 type uint32;
3773 units usec;
3774 description
3775 "Delay value expressed in microseconds.";
3776 }
3777 }
3778 container min-max-unidirectional-link-delay {
3779 description
3780 "Container for the min and max delay
3781 from the local neighbor to the remote one.";
3782 container flags {
3783 leaf-list min-max-unidirectional-link-delay-subtlv-flags {
3784 type identityref {
3785 base min-max-unidirectional-link-delay-subtlv-flag;
3786 }
3787 description
3788 "This list contains identities for the bits which are
3789 set.";
3790 }
3791 description
3792 "min-max-unidirectional-link-delay subTLV flags.";
3793 }
3794 leaf min-value {
3795 type uint32;
3796 units usec;
3797 description
3798 "Minimum delay value expressed in microseconds.";
3799 }
3800 leaf max-value {
3801 type uint32;
3802 units usec;
3803 description
3804 "Maximum delay value expressed in microseconds.";
3805 }
3806 }
3807 container unidirectional-link-delay-variation {
3808 description
3809 "Container for the average delay variation
3810 from the local neighbor to the remote one.";
3811 leaf value {
3812 type uint32;
3813 units usec;
3814 description
3815 "Delay variation value expressed in microseconds.";
3816 }
3817 }
3818 container unidirectional-link-loss {
3819 description
3820 "Container for the packet loss
3821 from the local neighbor to the remote one.";
3822 container flags {
3823 leaf-list unidirectional-link-loss-subtlv-flags {
3824 type identityref {
3825 base unidirectional-link-loss-subtlv-flag;
3826 }
3827 description
3828 "This list contains identities for the bits which are
3829 set.";
3830 }
3831 description
3832 "unidirectional-link-loss subTLV flags.";
3833 }
3834 leaf value {
3835 type uint32;
3836 units percent;
3837 description
3838 "Link packet loss expressed as a percentage
3839 of the total traffic sent over a configurable interval.";
3840 }
3841 }
3842 container unidirectional-link-residual-bandwidth {
3843 description
3844 "Container for the residual bandwidth
3845 from the local neighbor to the remote one.";
3846 leaf value {
3847 type rt-types:bandwidth-ieee-float32;
3848 units Bps;
3849 description
3850 "Residual bandwidth.";
3851 }
3852 }
3853 container unidirectional-link-available-bandwidth {
3854 description
3855 "Container for the available bandwidth
3856 from the local neighbor to the remote one.";
3857 leaf value {
3858 type rt-types:bandwidth-ieee-float32;
3859 units Bps;
3860 description
3861 "Available bandwidth.";
3862 }
3863 }
3864 container unidirectional-link-utilized-bandwidth {
3865 description
3866 "Container for the utilized bandwidth
3867 from the local neighbor to the remote one.";
3868 leaf value {
3869 type rt-types:bandwidth-ieee-float32;
3870 units Bps;
3871 description
3872 "Utilized bandwidth.";
3873 }
3874 }
3875 }
3876 grouping neighbor-te-extensions {
3877 description
3878 "Grouping for TE attributes of a neighbor as defined
3879 in RFC5305";
3880 leaf admin-group {
3881 type uint32;
3882 description
3883 "Administrative group/Resource Class/Color.";
3884 }
3885 container local-if-ipv4-addrs {
3886 description "All local interface IPv4 addresses.";
3887 leaf-list local-if-ipv4-addr {
3888 type inet:ipv4-address;
3889 description
3890 "List of local interface IPv4 addresses.";
3891 }
3892 }
3893 container remote-if-ipv4-addrs {
3894 description "All remote interface IPv4 addresses.";
3895 leaf-list remote-if-ipv4-addr {
3896 type inet:ipv4-address;
3897 description
3898 "List of remote interface IPv4 addresses.";
3899 }
3900 }
3901 leaf te-metric {
3902 type uint32;
3903 description "TE metric.";
3904 }
3905 leaf max-bandwidth {
3906 type rt-types:bandwidth-ieee-float32;
3907 description "Maximum bandwidth.";
3908 }
3909 leaf max-reservable-bandwidth {
3910 type rt-types:bandwidth-ieee-float32;
3911 description "Maximum reservable bandwidth.";
3912 }
3913 container unreserved-bandwidths {
3914 description "All unreserved bandwidths.";
3915 list unreserved-bandwidth {
3916 leaf priority {
3917 type uint8 {
3918 range "0 .. 7";
3919 }
3920 description "Priority from 0 to 7.";
3921 }
3922 leaf unreserved-bandwidth {
3923 type rt-types:bandwidth-ieee-float32;
3924 description "Unreserved bandwidth.";
3925 }
3926 description
3927 "List of unreserved bandwidths for different
3928 priorities.";
3929 }
3930 }
3931 }
3933 grouping neighbor-extended {
3934 description
3935 "Grouping for attributes of an IS-IS extended neighbor.";
3936 leaf neighbor-id {
3937 type extended-system-id;
3938 description "system-id of the extended neighbor.";
3939 }
3940 container instances {
3941 description "List of all adjacencies between the local
3942 system and the neighbor system-id.";
3943 list instance {
3944 key id;
3946 leaf id {
3947 type uint32;
3948 description "Unique identifier of an instance of a
3949 particular neighbor.";
3950 }
3951 leaf metric {
3952 type wide-metric;
3953 description "IS-IS wide metric for extended neighbor";
3954 }
3955 uses neighbor-gmpls-extensions;
3956 uses neighbor-te-extensions;
3957 uses neighbor-extended-te-extensions;
3958 uses neighbor-link-attributes;
3959 uses unknown-tlvs;
3960 description "Instance of a particular adjacency.";
3961 }
3962 }
3963 }
3965 grouping neighbor {
3966 description "IS-IS standard neighbor grouping.";
3967 leaf neighbor-id {
3968 type extended-system-id;
3969 description "IS-IS neighbor system-id";
3970 }
3971 container instances {
3972 description "List of all adjacencies between the local
3973 system and the neighbor system-id.";
3974 list instance {
3975 key id;
3977 leaf id {
3978 type uint32;
3979 description "Unique identifier of an instance of a
3980 particular neighbor.";
3981 }
3982 leaf i-e {
3983 type boolean;
3984 description
3985 "Internal or External (I/E) Metric bit value";
3986 }
3987 container default-metric {
3988 leaf metric {
3989 type std-metric;
3990 description "IS-IS default metric value";
3991 }
3992 description "IS-IS default metric container";
3993 }
3994 container delay-metric {
3995 leaf metric {
3996 type std-metric;
3997 description "IS-IS delay metric value";
3998 }
3999 leaf supported {
4000 type boolean;
4001 default "false";
4002 description "IS-IS delay metric supported";
4003 }
4004 description "IS-IS delay metric container";
4005 }
4006 container expense-metric {
4007 leaf metric {
4008 type std-metric;
4009 description "IS-IS delay expense metric value";
4010 }
4011 leaf supported {
4012 type boolean;
4013 default "false";
4014 description "IS-IS delay expense metric supported";
4015 }
4016 description "IS-IS delay expense metric container";
4017 }
4018 container error-metric {
4019 leaf metric {
4020 type std-metric;
4021 description "IS-IS error metric value";
4022 }
4023 leaf supported {
4024 type boolean;
4025 default "false";
4026 description "IS-IS error metric supported";
4027 }
4028 description "IS-IS error metric container";
4029 }
4030 description "Instance of a particular adjacency
4031 as defined in ISO10589.";
4032 }
4033 }
4034 }
4036 /* Top-level TLVs */
4038 grouping tlv132-ipv4-addresses {
4039 leaf-list ipv4-addresses {
4040 type inet:ipv4-address;
4041 description
4042 "List of IPv4 addresses of the IS-IS node - IS-IS
4043 reference is TLV 132.";
4044 }
4045 description "Grouping for TLV132.";
4046 }
4047 grouping tlv232-ipv6-addresses {
4048 leaf-list ipv6-addresses {
4049 type inet:ipv6-address;
4050 description
4051 "List of IPv6 addresses of the IS-IS node - IS-IS
4052 reference is TLV 232.";
4053 }
4054 description "Grouping for TLV232.";
4055 }
4056 grouping tlv134-ipv4-te-rid {
4057 leaf ipv4-te-routerid {
4058 type inet:ipv4-address;
4059 description
4060 "IPv4 Traffic Engineering router ID of the IS-IS node -
4061 IS-IS reference is TLV 134.";
4062 }
4063 description "Grouping for TLV134.";
4064 }
4065 grouping tlv140-ipv6-te-rid {
4066 leaf ipv6-te-routerid {
4067 type inet:ipv6-address;
4068 description
4069 "IPv6 Traffic Engineering router ID of the IS-IS node -
4070 IS-IS reference is TLV 140.";
4071 }
4072 description "Grouping for TLV140.";
4073 }
4074 grouping tlv129-protocols {
4075 leaf-list protocol-supported {
4076 type uint8;
4077 description
4078 "List of supported protocols of the IS-IS node -
4079 IS-IS reference is TLV 129.";
4080 }
4081 description "Grouping for TLV129.";
4082 }
4083 grouping tlv137-hostname {
4084 leaf dynamic-hostname {
4085 type string;
4086 description
4087 "Host Name of the IS-IS node - IS-IS reference
4088 is TLV 137.";
4089 }
4090 description "Grouping for TLV137.";
4091 }
4092 grouping tlv10-authentication {
4093 container authentication {
4094 leaf authentication-type {
4095 type identityref {
4096 base key-chain:crypto-algorithm;
4097 }
4098 description
4099 "Authentication type to be used with IS-IS node.";
4100 }
4101 leaf authentication-key {
4102 type string;
4103 description
4104 "Authentication key to be used. For security reasons,
4105 the authentication key MUST NOT be presented in
4106 a clear text format in response to any request
4107 (e.g., via get, get-config).";
4108 }
4109 description
4110 "IS-IS node authentication information container -
4111 IS-IS reference is TLV 10.";
4112 }
4113 description "Grouping for TLV10.";
4114 }
4115 grouping tlv229-mt {
4116 container mt-entries {
4117 list topology {
4118 description
4119 "List of topologies supported";
4121 leaf mt-id {
4122 type uint16 {
4123 range "0 .. 4095";
4124 }
4125 description
4126 "Multi-Topology identifier of topology.";
4127 }
4128 container attributes {
4129 leaf-list flags {
4130 type identityref {
4131 base tlv229-flag;
4132 }
4133 description
4134 "This list contains identities for the bits which are
4135 set.";
4136 }
4137 description
4138 "TLV 229 flags.";
4139 }
4140 }
4141 description
4142 "IS-IS node topology information container -
4143 IS-IS reference is TLV 229.";
4144 }
4145 description "Grouping for TLV229.";
4146 }
4148 grouping tlv242-router-capabilities {
4149 container router-capabilities {
4150 list router-capability {
4151 container flags {
4152 leaf-list router-capability-flags {
4153 type identityref {
4154 base router-capability-flag;
4155 }
4156 description
4157 "This list contains identities for the bits which are
4158 set.";
4159 }
4160 description
4161 "Router capability flags.";
4162 }
4163 container node-tags {
4164 if-feature node-tag;
4165 list node-tag {
4166 leaf tag {
4167 type uint32;
4168 description "Node tag value.";
4169 }
4170 description "List of tags.";
4171 }
4172 description "Container for node admin tags";
4173 }
4175 uses unknown-tlvs;
4177 description
4178 "IS-IS node capabilities. This list element may
4179 be extended with detailed information - IS-IS
4180 reference is TLV 242.";
4181 }
4182 description "List of router capability TLVs.";
4183 }
4184 description "Grouping for TLV242.";
4185 }
4187 grouping tlv138-srlg {
4188 description
4189 "Grouping for TLV138.";
4190 container links-srlgs {
4191 list links {
4192 leaf neighbor-id {
4193 type extended-system-id;
4194 description "system-id of the extended neighbor.";
4195 }
4196 leaf flags {
4197 type uint8;
4198 description
4199 "Flags associated with the link.";
4200 }
4201 leaf link-local-id {
4202 type union {
4203 type inet:ip-address;
4204 type uint32;
4205 }
4206 description
4207 "Local identifier of the link.
4208 It could be an IPv4 address or a local identifier.";
4209 }
4210 leaf link-remote-id {
4211 type union {
4212 type inet:ip-address;
4213 type uint32;
4214 }
4215 description
4216 "Remote identifier of the link.
4217 It could be an IPv4 address or a remotely learned
4218 identifier.";
4219 }
4220 container srlgs {
4221 description "List of SRLGs.";
4222 leaf-list srlg {
4223 type uint32;
4224 description
4225 "SRLG value of the link.";
4226 }
4227 }
4228 description
4229 "SRLG attribute of a link.";
4230 }
4231 description
4232 "List of links with SRLGs";
4233 }
4234 }
4236 /* Grouping for LSDB description */
4238 grouping lsp-entry {
4239 description "IS-IS LSP database entry grouping";
4241 leaf decoded-completed {
4242 type boolean;
4243 description "IS-IS LSP body fully decoded.";
4244 }
4245 leaf raw-data {
4246 type yang:hex-string;
4247 description
4248 "The hexadecimal representation of the complete LSP in
4249 network-byte order (NBO) as received or originated.";
4250 }
4251 leaf lsp-id {
4252 type lsp-id;
4253 description "LSP ID of the LSP";
4254 }
4255 leaf checksum {
4256 type uint16;
4257 description "LSP checksum";
4258 }
4259 leaf remaining-lifetime {
4260 type uint16;
4261 units "seconds";
4262 description
4263 "Remaining lifetime (in seconds) until LSP expiration.";
4264 }
4265 leaf sequence {
4266 type uint32;
4267 description
4268 "This leaf describes the sequence number of the LSP.";
4269 }
4270 container attributes {
4271 leaf-list lsp-flags {
4272 type identityref {
4273 base lsp-flag;
4274 }
4275 description
4276 "This list contains identities for the bits which are
4277 set.";
4278 }
4279 description "LSP attributes.";
4280 }
4282 uses tlv132-ipv4-addresses;
4283 uses tlv232-ipv6-addresses;
4284 uses tlv134-ipv4-te-rid;
4285 uses tlv140-ipv6-te-rid;
4286 uses tlv129-protocols;
4287 uses tlv137-hostname;
4288 uses tlv10-authentication;
4289 uses tlv229-mt;
4290 uses tlv242-router-capabilities;
4291 uses tlv138-srlg;
4292 uses unknown-tlvs;
4294 container is-neighbor {
4295 list neighbor {
4296 key neighbor-id;
4298 uses neighbor;
4299 description "List of neighbors.";
4300 }
4301 description
4302 "Standard IS neighbors container - IS-IS reference is
4303 TLV 2.";
4304 }
4306 container extended-is-neighbor {
4307 list neighbor {
4308 key neighbor-id;
4310 uses neighbor-extended;
4311 description
4312 "List of extended IS neighbors";
4313 }
4314 description
4315 "Standard IS extended neighbors container - IS-IS
4316 reference is TLV 22";
4317 }
4319 container ipv4-internal-reachability {
4320 list prefixes {
4321 uses prefix-ipv4-std;
4322 description "List of prefixes.";
4323 }
4324 description
4325 "IPv4 internal reachability information container - IS-IS
4326 reference is TLV 128.";
4327 }
4329 container ipv4-external-reachability {
4330 list prefixes {
4331 uses prefix-ipv4-std;
4332 description "List of prefixes.";
4333 }
4334 description
4335 "IPv4 external reachability information container -
4336 IS-IS reference is TLV 130.";
4337 }
4339 container extended-ipv4-reachability {
4340 list prefixes {
4341 uses prefix-ipv4-extended;
4342 uses unknown-tlvs;
4343 description "List of prefixes.";
4344 }
4345 description
4346 "IPv4 extended reachability information container -
4347 IS-IS reference is TLV 135.";
4348 }
4350 container mt-is-neighbor {
4351 list neighbor {
4352 leaf mt-id {
4353 type uint16 {
4354 range "0 .. 4095";
4355 }
4356 description "Multi-topology (MT) identifier";
4357 }
4358 uses neighbor-extended;
4359 description "List of neighbors.";
4360 }
4361 description
4362 "IS-IS multi-topology neighbor container - IS-IS
4363 reference is TLV 223.";
4364 }
4366 container mt-extended-ipv4-reachability {
4367 list prefixes {
4368 leaf mt-id {
4369 type uint16 {
4370 range "0 .. 4095";
4371 }
4372 description "Multi-topology (MT) identifier";
4373 }
4374 uses prefix-ipv4-extended;
4375 uses unknown-tlvs;
4376 description "List of extended prefixes.";
4377 }
4378 description
4379 "IPv4 multi-topology (MT) extended reachability
4380 information container - IS-IS reference is TLV 235.";
4381 }
4383 container mt-ipv6-reachability {
4384 list prefixes {
4385 leaf MT-ID {
4386 type uint16 {
4387 range "0 .. 4095";
4388 }
4389 description "Multi-topology (MT) identifier";
4390 }
4391 uses prefix-ipv6-extended;
4392 uses unknown-tlvs;
4393 description "List of IPv6 extended prefixes.";
4394 }
4395 description
4396 "IPv6 multi-topology (MT) extended reachability
4397 information container - IS-IS reference is TLV 237.";
4398 }
4400 container ipv6-reachability {
4401 list prefixes {
4402 uses prefix-ipv6-extended;
4403 uses unknown-tlvs;
4404 description "List of IPv6 prefixes.";
4405 }
4406 description
4407 "IPv6 reachability information container - IS-IS
4408 reference is TLV 236.";
4409 }
4410 }
4412 grouping lsdb {
4413 description "Link State Database (LSDB) grouping";
4414 container database {
4415 config false;
4416 list levels {
4417 key level;
4419 leaf level {
4420 type level-number;
4421 description "LSDB level number (1 or 2)";
4422 }
4423 list lsp {
4424 key lsp-id;
4425 uses lsp-entry;
4426 description "List of LSPs in LSDB";
4427 }
4428 description "List of LSPs for the LSDB level container";
4429 }
4430 description "IS-IS Link State database container";
4431 }
4432 }
4434 /* Augmentations */
4436 augment "/rt:routing/"
4437 +"rt:ribs/rt:rib/rt:routes/rt:route" {
4438 when "rt:source-protocol = 'isis:isis'" {
4439 description "IS-IS-specific route attributes.";
4440 }
4441 uses route-content;
4442 description
4443 "This augments route object in RIB with IS-IS-specific
4444 attributes.";
4445 }
4447 augment "/if:interfaces/if:interface" {
4448 leaf clns-mtu {
4449 if-feature osi-interface;
4450 type uint16;
4451 description "CLNS MTU of the interface";
4452 }
4453 description "ISO specific interface parameters.";
4454 }
4456 augment "/rt:routing/rt:control-plane-protocols/"
4457 +"rt:control-plane-protocol" {
4458 when "rt:type = 'isis:isis'" {
4459 description
4460 "This augment is only valid when routing protocol
4461 instance type is 'isis'";
4462 }
4463 description
4464 "This augments a routing protocol instance with IS-IS
4465 specific parameters.";
4466 container isis {
4467 must "count(area-address) > 0" {
4468 error-message
4469 "At least one area-address must be configured.";
4470 description
4471 "Enforce configuration of at least one area.";
4472 }
4474 uses instance-config;
4475 uses instance-state;
4477 container topologies {
4478 if-feature multi-topology;
4479 list topology {
4480 key "name";
4481 leaf enable {
4482 type boolean;
4483 description "Topology enable configuration";
4484 }
4485 leaf name {
4486 type leafref {
4487 path "../../../../../../rt:ribs/rt:rib/rt:name";
4488 }
4489 description
4490 "Routing Information Base (RIB) corresponding
4491 to topology.";
4492 }
4494 uses multi-topology-config;
4495 description "List of topologies";
4496 }
4497 description "Multi-topology container";
4498 }
4499 container interfaces {
4500 list interface {
4501 key "name";
4502 leaf name {
4503 type if:interface-ref;
4505 description
4506 "Reference to the interface within
4507 the routing-instance.";
4508 }
4509 uses interface-config;
4510 uses interface-state;
4511 container topologies {
4512 if-feature multi-topology;
4513 list topology {
4514 key name;
4516 leaf name {
4517 type leafref {
4518 path "../../../../../../../../"+
4519 "rt:ribs/rt:rib/rt:name";
4520 }
4522 description
4523 "Routing Information Base (RIB) corresponding
4524 to topology.";
4525 }
4526 uses multi-topology-interface-config;
4527 description "List of interface topologies";
4528 }
4529 description "Multi-topology container";
4530 }
4531 description "List of IS-IS interfaces.";
4532 }
4533 description
4534 "IS-IS interface specific configuration container";
4535 }
4537 description
4538 "IS-IS configuration/state top-level container";
4539 }
4540 }
4541 /* RPC methods */
4543 rpc clear-adjacency {
4544 description
4545 "This RPC request clears a particular set of IS-IS
4546 adjacencies. If the operation fails due to an internal
4547 reason, then the error-tag and error-app-tag should be
4548 set indicating the reason for the failure.";
4549 input {
4551 leaf routing-protocol-instance-name {
4552 type leafref {
4553 path "/rt:routing/rt:control-plane-protocols/"
4554 + "rt:control-plane-protocol/rt:name";
4555 }
4556 mandatory "true";
4557 description
4558 "Name of the IS-IS protocol instance whose IS-IS
4559 adjacency is being cleared.
4561 If the corresponding IS-IS instance doesn't exist,
4562 then the operation will fail with an error-tag of
4563 'data-missing' and an error-app-tag of
4564 'routing-protocol-instance-not-found'.";
4565 }
4566 leaf level {
4567 type level;
4568 description
4569 "IS-IS level of the adjacency to be cleared. If the
4570 IS-IS level is level-1-2, both level 1 and level 2
4571 adjacencies would be cleared.
4573 If the value provided is different from the one
4574 authorized in the enum type, then the operation
4575 SHALL fail with an error-tag of 'data-missing' and
4576 an error-app-tag of 'bad-isis-level'.";
4577 }
4578 leaf interface {
4579 type if:interface-ref;
4580 description
4581 "IS-IS interface name.
4583 If the corresponding IS-IS interface doesn't exist,
4584 then the operation SHALL fail with an error-tag of
4585 'data-missing' and an error-app-tag of
4586 'isis-interface-not-found'.";
4587 }
4588 }
4590 }
4592 rpc clear-database {
4593 description
4594 "This RPC request clears a particular IS-IS database. If
4595 the operation fails for an IS-IS internal reason, then
4596 the error-tag and error-app-tag should be set
4597 indicating the reason for the failure.";
4598 input {
4599 leaf routing-protocol-instance-name {
4600 type leafref {
4601 path "/rt:routing/rt:control-plane-protocols/"
4602 + "rt:control-plane-protocol/rt:name";
4603 }
4604 mandatory "true";
4605 description
4606 "Name of the IS-IS protocol instance whose IS-IS
4607 database(s) is/are being cleared.
4609 If the corresponding IS-IS instance doesn't exist,
4610 then the operation will fail with an error-tag of
4611 'data-missing' and an error-app-tag of
4612 'routing-protocol-instance-not-found'.";
4613 }
4614 leaf level {
4615 type level;
4616 description
4617 "IS-IS level of the adjacency to be cleared. If the
4618 IS-IS level is level-1-2, both level 1 and level 2
4619 databases would be cleared.
4621 If the value provided is different from the one
4622 authorized in the enum type, then the operation
4623 SHALL fail with an error-tag of 'data-missing' and
4624 an error-app-tag of 'bad-isis-level'.";
4625 }
4626 }
4627 }
4629 /* Notifications */
4631 notification database-overload {
4632 uses notification-instance-hdr;
4634 leaf overload {
4635 type enumeration {
4636 enum off {
4637 description
4638 "Indicates IS-IS instance has left overload state";
4639 }
4640 enum on {
4641 description
4642 "Indicates IS-IS instance has entered overload state";
4643 }
4645 }
4646 description "New overload state of the IS-IS instance";
4647 }
4648 description
4649 "This notification is sent when an IS-IS instance
4650 overload state changes.";
4651 }
4653 notification lsp-too-large {
4654 uses notification-instance-hdr;
4655 uses notification-interface-hdr;
4657 leaf pdu-size {
4658 type uint32;
4659 description "Size of the LSP PDU";
4660 }
4661 leaf lsp-id {
4662 type lsp-id;
4663 description "LSP ID";
4664 }
4665 description
4666 "This notification is sent when we attempt to propagate
4667 an LSP that is larger than the dataLinkBlockSize (ISO10589)
4668 for the circuit. The notification generation must be
4669 throttled with at least 5 seconds between successive
4670 notifications.";
4671 }
4673 notification if-state-change {
4674 uses notification-instance-hdr;
4675 uses notification-interface-hdr;
4677 leaf state {
4678 type if-state-type;
4679 description "Interface state.";
4680 }
4681 description
4682 "This notification is sent when an interface
4683 state change is detected.";
4684 }
4685 notification corrupted-lsp-detected {
4686 uses notification-instance-hdr;
4687 leaf lsp-id {
4688 type lsp-id;
4689 description "LSP ID";
4690 }
4691 description
4692 "This notification is sent when we find that
4693 an LSP that was stored in memory has become
4694 corrupted.";
4695 }
4697 notification attempt-to-exceed-max-sequence {
4698 uses notification-instance-hdr;
4699 leaf lsp-id {
4700 type lsp-id;
4701 description "LSP ID";
4702 }
4703 description
4704 "This notification is sent when the system
4705 wraps the 32-bit sequence counter of an LSP.";
4706 }
4708 notification id-len-mismatch {
4709 uses notification-instance-hdr;
4710 uses notification-interface-hdr;
4712 leaf pdu-field-len {
4713 type uint8;
4714 description "Size of the ID length in the received PDU";
4715 }
4716 leaf raw-pdu {
4717 type binary;
4718 description "Received raw PDU.";
4719 }
4720 description
4721 "This notification is sent when we receive a PDU
4722 with a different value for the system-id length.
4723 The notification generation must be throttled
4724 with at least 5 seconds between successive
4725 notifications.";
4726 }
4728 notification max-area-addresses-mismatch {
4729 uses notification-instance-hdr;
4730 uses notification-interface-hdr;
4732 leaf max-area-addresses {
4733 type uint8;
4734 description "Received number of supported areas";
4735 }
4736 leaf raw-pdu {
4737 type binary;
4738 description "Received raw PDU.";
4739 }
4740 description
4741 "This notification is sent when we receive a PDU
4742 with a different value for the Maximum Area Addresses.
4743 The notification generation must be throttled
4744 with at least 5 seconds between successive
4745 notifications.";
4746 }
4748 notification own-lsp-purge {
4749 uses notification-instance-hdr;
4750 uses notification-interface-hdr;
4751 leaf lsp-id {
4752 type lsp-id;
4753 description "LSP ID";
4754 }
4755 description
4756 "This notification is sent when the system receives
4757 a PDU with its own system-id and zero age.";
4758 }
4760 notification sequence-number-skipped {
4761 uses notification-instance-hdr;
4762 uses notification-interface-hdr;
4763 leaf lsp-id {
4764 type lsp-id;
4765 description "LSP ID";
4766 }
4767 description
4768 "This notification is sent when the system receives a
4769 PDU with its own system-id and different contents. The
4770 system has to originate the LSP with a higher sequence
4771 number.";
4772 }
4774 notification authentication-type-failure {
4775 uses notification-instance-hdr;
4776 uses notification-interface-hdr;
4777 leaf raw-pdu {
4778 type binary;
4779 description "Received raw PDU.";
4780 }
4781 description
4782 "This notification is sent when the system receives a
4783 PDU with the wrong authentication type field.
4784 The notification generation must be throttled
4785 with at least 5 seconds between successive
4786 notifications.";
4787 }
4789 notification authentication-failure {
4790 uses notification-instance-hdr;
4791 uses notification-interface-hdr;
4792 leaf raw-pdu {
4793 type binary;
4794 description "Received raw PDU.";
4795 }
4796 description
4797 "This notification is sent when the system receives
4798 a PDU with the wrong authentication information.
4799 The notification generation must be throttled
4800 with at least 5 seconds between successive
4801 notifications.";
4802 }
4804 notification version-skew {
4805 uses notification-instance-hdr;
4806 uses notification-interface-hdr;
4807 leaf protocol-version {
4808 type uint8;
4809 description "Protocol version received in the PDU.";
4810 }
4811 leaf raw-pdu {
4812 type binary;
4813 description "Received raw PDU.";
4814 }
4815 description
4816 "This notification is sent when the system receives a
4817 PDU with a different protocol version number.
4818 The notification generation must be throttled
4819 with at least 5 seconds between successive
4820 notifications.";
4821 }
4823 notification area-mismatch {
4824 uses notification-instance-hdr;
4825 uses notification-interface-hdr;
4826 leaf raw-pdu {
4827 type binary;
4828 description "Received raw PDU.";
4830 }
4831 description
4832 "This notification is sent when the system receives a
4833 Hello PDU from an IS that does not share any area
4834 address. The notification generation must be throttled
4835 with at least 5 seconds between successive
4836 notifications.";
4837 }
4839 notification rejected-adjacency {
4840 uses notification-instance-hdr;
4841 uses notification-interface-hdr;
4842 leaf raw-pdu {
4843 type binary;
4844 description
4845 "Received raw PDU.";
4846 }
4847 leaf reason {
4848 type string {
4849 length "1..255";
4850 }
4851 description
4852 "The system may provide a reason to reject the
4853 adjacency. If the reason is not available,
4854 an empty string will be returned.
4855 The expected format is a single line text.";
4856 }
4857 description
4858 "This notification is sent when the system receives a
4859 Hello PDU from an IS but does not establish an adjacency
4860 for some reason. The notification generation must be
4861 throttled with at least 5 seconds between successive
4862 notifications.";
4863 }
4865 notification protocols-supported-mismatch {
4866 uses notification-instance-hdr;
4867 uses notification-interface-hdr;
4868 leaf raw-pdu {
4869 type binary;
4870 description "Received raw PDU.";
4871 }
4872 leaf-list protocols {
4873 type uint8;
4874 description
4875 "List of protocols supported by the remote system.";
4876 }
4877 description
4878 "This notification is sent when the system receives a
4879 non-pseudonode LSP that has no matching protocols
4880 supported. The notification generation must be throttled
4881 with at least 5 seconds between successive
4882 notifications.";
4883 }
4885 notification lsp-error-detected {
4886 uses notification-instance-hdr;
4887 uses notification-interface-hdr;
4888 leaf lsp-id {
4889 type lsp-id;
4890 description "LSP ID.";
4891 }
4892 leaf raw-pdu {
4893 type binary;
4894 description "Received raw PDU.";
4895 }
4896 leaf error-offset {
4897 type uint32;
4898 description
4899 "If the problem is a malformed TLV, the error-offset
4900 points to the start of the TLV. If the problem is with
4901 the LSP header, the error-offset points to the errant
4902 byte";
4903 }
4904 leaf tlv-type {
4905 type uint8;
4906 description
4907 "If the problem is a malformed TLV, the tlv-type is set
4908 to the type value of the suspicious TLV. Otherwise,
4909 this leaf is not present.";
4910 }
4911 description
4912 "This notification is sent when the system receives an
4913 LSP with a parse error. The notification generation must
4914 be throttled with at least 5 seconds between successive
4915 notifications.";
4916 }
4918 notification adjacency-state-change {
4919 uses notification-instance-hdr;
4920 uses notification-interface-hdr;
4921 leaf neighbor {
4922 type string {
4923 length "1..255";
4924 }
4925 description
4926 "Name of the neighbor.
4927 It corresponds to the hostname associated
4928 with the system-id of the neighbor in the
4929 mapping database (RFC5301).
4930 If the name of the neighbor is
4931 not available, it is not returned.";
4932 }
4933 leaf neighbor-system-id {
4934 type system-id;
4935 description "Neighbor system-id";
4936 }
4937 leaf state {
4938 type adj-state-type;
4940 description "New state of the IS-IS adjacency.";
4941 }
4942 leaf reason {
4943 type string {
4944 length "1..255";
4945 }
4946 description
4947 "If the adjacency is going to DOWN, this leaf provides
4948 a reason for the adjacency going down. The reason is
4949 provided as a text. If the adjacency is going to UP, no
4950 reason is provided. The expected format is a single line
4951 text.";
4952 }
4953 description
4954 "This notification is sent when an IS-IS adjacency
4955 moves to Up state or to Down state.";
4956 }
4958 notification lsp-received {
4959 uses notification-instance-hdr;
4960 uses notification-interface-hdr;
4962 leaf lsp-id {
4963 type lsp-id;
4964 description "LSP ID";
4965 }
4966 leaf sequence {
4967 type uint32;
4968 description "Sequence number of the received LSP.";
4969 }
4970 leaf received-timestamp {
4971 type yang:timestamp;
4972 description "Timestamp when the LSP was received.";
4973 }
4974 leaf neighbor-system-id {
4975 type system-id;
4976 description "Neighbor system-id of LSP sender";
4977 }
4978 description
4979 "This notification is sent when an LSP is received.
4980 The notification generation must be throttled with at
4981 least 5 seconds between successive notifications.";
4982 }
4984 notification lsp-generation {
4985 uses notification-instance-hdr;
4987 leaf lsp-id {
4988 type lsp-id;
4989 description "LSP ID";
4990 }
4991 leaf sequence {
4992 type uint32;
4993 description "Sequence number of the received LSP.";
4994 }
4995 leaf send-timestamp {
4996 type yang:timestamp;
4998 description "Timestamp when our LSP was regenerated.";
4999 }
5000 description
5001 "This notification is sent when an LSP is regenerated.
5002 The notification generation must be throttled with at
5003 least 5 seconds between successive notifications.";
5004 }
5005 }
5007
5009 7. Security Considerations
5011 The YANG modules specified in this document define a schema for data
5012 that is designed to be accessed via network management protocols such
5013 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
5014 is the secure transport layer, and the mandatory-to-implement secure
5015 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
5016 is HTTPS, and the mandatory-to-implement secure transport is TLS
5017 [RFC8446].
5019 The NETCONF Access Control Model (NACM) [RFC8341] provides the means
5020 to restrict access for particular NETCONF or RESTCONF users to a pre-
5021 configured subset of all available NETCONF or RESTCONF protocol
5022 operations and content.
5024 There are a number of data nodes defined in ietf-isis.yang module
5025 that are writable/creatable/deletable (i.e., config true, which is
5026 the default). These data nodes may be considered sensitive or
5027 vulnerable in some network environments. Write operations (e.g.,
5028 edit-config) to these data nodes without proper protection can have a
5029 negative effect on network operations. Writable data node represent
5030 configuration of each instance and interface. These correspond to
5031 the following schema nodes:
5033 /isis
5035 /isis/interfaces/interface[name]
5037 For IS-IS, the ability to modify IS-IS configuration will allow the
5038 entire IS-IS domain to be compromised including forming adjacencies
5039 with unauthorized routers to misroute traffic or mount a massive
5040 Denial-of-Service (DoS) attack. For example, adding IS-IS on any
5041 unprotected interface could allow an IS-IS adjacency to be formed
5042 with an unauthorized and malicious neighbor. Once an adjacency is
5043 formed, traffic could be hijacked. As a simpler example, a Denial-
5044 of-Service attack could be mounted by changing the cost of an IS-IS
5045 interface to be asymmetric such that a hard routing loop ensues. In
5046 general, unauthorized modification of most IS-IS features will pose
5047 their own set of security risks and the "Security Considerations" in
5048 the respective reference RFCs should be consulted.
5050 Some of the readable data nodes in the ietf-isis.yang module may be
5051 considered sensitive or vulnerable in some network environments. It
5052 is thus important to control read access (e.g., via get, get-config,
5053 or notification) to these data nodes. The exposure of the Link State
5054 Database (LSDB) will expose the detailed topology of the network.
5055 The Link State Database (LSDB) is represented by the following schema
5056 node:
5058 /isis/database
5060 Exposure of the Link State Database includes information beyond the
5061 scope of the IS-IS router and this may be undesirable since exposure
5062 may facilitate other attacks. Additionally, the complete IP network
5063 topology and, if deployed, the traffic engineering topology of the
5064 IS-IS domain can be reconstructed. Network operators may consider
5065 their topologies to be sensitive confidential data.
5067 For IS-IS authentication, configuration is supported via the
5068 specification of key-chain [RFC8177] or the direction specification
5069 of key and authentication algorithm. Hence, authentication
5070 configuration using the "auth-table-trailer" case in the
5071 "authentication" container inherits the security considerations of
5072 [RFC8177]. This includes the considerations with respect to the
5073 local storage and handling of authentication keys.
5075 Some of the RPC operations in this YANG module may be considered
5076 sensitive or vulnerable in some network environments. It is thus
5077 important to control access to these operations. The IS-IS YANG
5078 module support the "clear-adjacency" and "clear-database" RPCs. If
5079 access to either of these is compromised, they can result in
5080 temporary network outages be employed to mount DoS attacks.
5082 The actual authentication key data (whether locally specified or part
5083 of a key-chain) is sensitive and needs to be kept secret from
5084 unauthorized parties; compromise of the key data would allow an
5085 attacker to forge IS-IS traffic that would be accepted as authentic,
5086 potentially compromising the entirety IS-IS domain.
5088 8. Contributors
5090 The authors would like to thank Kiran Agrahara Sreenivasa, Dean
5091 Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major
5092 contributions to the draft.
5094 9. Acknowledgements
5096 The authors would like to thank Tom Petch, Alvaro Retena, Stewart
5097 Bryant, and Barry Leiba for their review and comments.
5099 10. IANA Considerations
5101 The IANA is requested to assign two new URIs from the IETF XML
5102 registry [RFC3688]. Authors are suggesting the following URI:
5104 URI: urn:ietf:params:xml:ns:yang:ietf-isis
5105 Registrant Contact: The IESG
5106 XML: N/A, the requested URI is an XML namespace
5108 This document also requests one new YANG module name in the YANG
5109 Module Names registry [RFC6020] with the following suggestion:
5111 name: ietf-isis
5112 namespace: urn:ietf:params:xml:ns:yang:ietf-isis
5113 prefix: isis
5114 reference: RFC XXXX
5116 11. References
5118 11.1. Normative References
5120 [I-D.ietf-bfd-yang]
5121 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and
5122 G. Mirsky, "YANG Data Model for Bidirectional Forwarding
5123 Detection (BFD)", draft-ietf-bfd-yang-17 (work in
5124 progress), August 2018.
5126 [ISO-10589]
5127 "Intermediate System to Intermediate System intra- domain
5128 routeing information exchange protocol for use in
5129 conjunction with the protocol for providing the
5130 connectionless-mode network service (ISO 8473)",
5131 International Standard 10589: 2002, Second Edition, 2002.
5133 [RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and
5134 dual environments", RFC 1195, DOI 10.17487/RFC1195,
5135 December 1990, .
5137 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
5138 Requirement Levels", BCP 14, RFC 2119,
5139 DOI 10.17487/RFC2119, March 1997,
5140 .
5142 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
5143 DOI 10.17487/RFC3688, January 2004,
5144 .
5146 [RFC4090] Pan, P., Ed., Swallow, G., Ed., and A. Atlas, Ed., "Fast
5147 Reroute Extensions to RSVP-TE for LSP Tunnels", RFC 4090,
5148 DOI 10.17487/RFC4090, May 2005,
5149 .
5151 [RFC5029] Vasseur, JP. and S. Previdi, "Definition of an IS-IS Link
5152 Attribute Sub-TLV", RFC 5029, DOI 10.17487/RFC5029,
5153 September 2007, .
5155 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi
5156 Topology (MT) Routing in Intermediate System to
5157 Intermediate Systems (IS-ISs)", RFC 5120,
5158 DOI 10.17487/RFC5120, February 2008,
5159 .
5161 [RFC5130] Previdi, S., Shand, M., Ed., and C. Martin, "A Policy
5162 Control Mechanism in IS-IS Using Administrative Tags",
5163 RFC 5130, DOI 10.17487/RFC5130, February 2008,
5164 .
5166 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for
5167 IP Fast Reroute: Loop-Free Alternates", RFC 5286,
5168 DOI 10.17487/RFC5286, September 2008,
5169 .
5171 [RFC5301] McPherson, D. and N. Shen, "Dynamic Hostname Exchange
5172 Mechanism for IS-IS", RFC 5301, DOI 10.17487/RFC5301,
5173 October 2008, .
5175 [RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-wide Prefix
5176 Distribution with Two-Level IS-IS", RFC 5302,
5177 DOI 10.17487/RFC5302, October 2008,
5178 .
5180 [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic
5181 Engineering", RFC 5305, DOI 10.17487/RFC5305, October
5182 2008, .
5184 [RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS",
5185 RFC 5306, DOI 10.17487/RFC5306, October 2008,
5186 .
5188 [RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., "IS-IS Extensions
5189 in Support of Generalized Multi-Protocol Label Switching
5190 (GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008,
5191 .
5193 [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308,
5194 DOI 10.17487/RFC5308, October 2008,
5195 .
5197 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP
5198 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March
5199 2009, .
5201 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection
5202 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010,
5203 .
5205 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection
5206 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881,
5207 DOI 10.17487/RFC5881, June 2010,
5208 .
5210 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
5211 the Network Configuration Protocol (NETCONF)", RFC 6020,
5212 DOI 10.17487/RFC6020, October 2010,
5213 .
5215 [RFC6119] Harrison, J., Berger, J., and M. Bartlett, "IPv6 Traffic
5216 Engineering in IS-IS", RFC 6119, DOI 10.17487/RFC6119,
5217 February 2011, .
5219 [RFC6232] Wei, F., Qin, Y., Li, Z., Li, T., and J. Dong, "Purge
5220 Originator Identification TLV for IS-IS", RFC 6232,
5221 DOI 10.17487/RFC6232, May 2011,
5222 .
5224 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
5225 and A. Bierman, Ed., "Network Configuration Protocol
5226 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
5227 .
5229 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
5230 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
5231 .
5233 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
5234 RFC 6991, DOI 10.17487/RFC6991, July 2013,
5235 .
5237 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N.
5238 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)",
5239 RFC 7490, DOI 10.17487/RFC7490, April 2015,
5240 .
5242 [RFC7794] Ginsberg, L., Ed., Decraene, B., Previdi, S., Xu, X., and
5243 U. Chunduri, "IS-IS Prefix Attributes for Extended IPv4
5244 and IPv6 Reachability", RFC 7794, DOI 10.17487/RFC7794,
5245 March 2016, .
5247 [RFC7917] Sarkar, P., Ed., Gredler, H., Hegde, S., Litkowski, S.,
5248 and B. Decraene, "Advertising Node Administrative Tags in
5249 IS-IS", RFC 7917, DOI 10.17487/RFC7917, July 2016,
5250 .
5252 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
5253 RFC 7950, DOI 10.17487/RFC7950, August 2016,
5254 .
5256 [RFC7981] Ginsberg, L., Previdi, S., and M. Chen, "IS-IS Extensions
5257 for Advertising Router Information", RFC 7981,
5258 DOI 10.17487/RFC7981, October 2016,
5259 .
5261 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
5262 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
5263 .
5265 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
5266 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
5267 May 2017, .
5269 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J.
5270 Zhang, "YANG Data Model for Key Chains", RFC 8177,
5271 DOI 10.17487/RFC8177, June 2017,
5272 .
5274 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
5275 "Common YANG Data Types for the Routing Area", RFC 8294,
5276 DOI 10.17487/RFC8294, December 2017,
5277 .
5279 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
5280 Access Control Model", STD 91, RFC 8341,
5281 DOI 10.17487/RFC8341, March 2018,
5282 .
5284 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
5285 and R. Wilton, "Network Management Datastore Architecture
5286 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
5287 .
5289 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface
5290 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
5291 .
5293 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
5294 Routing Management (NMDA Version)", RFC 8349,
5295 DOI 10.17487/RFC8349, March 2018,
5296 .
5298 [RFC8405] Decraene, B., Litkowski, S., Gredler, H., Lindem, A.,
5299 Francois, P., and C. Bowers, "Shortest Path First (SPF)
5300 Back-Off Delay Algorithm for Link-State IGPs", RFC 8405,
5301 DOI 10.17487/RFC8405, June 2018,
5302 .
5304 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
5305 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
5306 .
5308 [RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward,
5309 D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE)
5310 Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March
5311 2019, .
5313 11.2. Informative References
5315 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
5316 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
5317 .
5319 Appendix A. Example of IS-IS configuration in XML
5321 This section gives an example of configuration of an IS-IS instance
5322 on a device. The example is written in XML.
5324
5325
5326
5327 SLI
5328 1.1.1.1
5329
5330
5331 ISIS-example
5332
5333
5334
5335 isis:isis
5336
5337
5338
5339 true
5340 level-2
5341 87FC.FCDF.4432
5342 49.0001
5343
5344
5345 192.0.2.1
5346
5347
5348 65535
5349 65000
5350
5351 wide-only
5353
5354
5355 111111
5356
5357
5358
5359 ipv4
5360 true
5361
5362
5363 ipv6
5364 true
5365
5366
5367
5368
5369 Loopback0
5370 200
5371
5372 0
5373
5374 true
5375
5376
5377 Eth1
5378 level-2
5379 point-to-point
5380
5381 167890
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391 Loopback0
5392
5393
5394 ianaift:softwareLoopback
5395
5396 enabled
5397
5398
5399 192.0.2.1
5400 32
5402
5403
5404
5405
5406 2001:DB8::1
5407 128
5408
5409
5410
5411
5412 Eth1
5413
5414
5415 ianaift:ethernetCsmacd
5416
5417 enabled
5418
5419
5420 198.51.100.1
5421 30
5422
5423
5424
5425
5426 2001:DB8:0:0:FF::1
5427 64
5428
5429
5430
5431
5432
5434 Authors' Addresses
5436 Stephane Litkowski
5437 Cisco Systems
5439 Email: slitkows.ietf@gmail.com
5441 Derek Yeung
5442 Arrcus, Inc
5444 Email: derek@arrcus.com
5445 Acee Lindem
5446 Cisco Systems
5448 Email: acee@cisco.com
5450 Jeffrey Zhang
5451 Juniper Networks
5453 Email: zzhang@juniper.net
5455 Ladislav Lhotka
5456 CZ.NIC
5458 Email: lhotka@nic.cz