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