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