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