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