idnits 2.17.00 (12 Aug 2021) /tmp/idnits44517/draft-ietf-isis-yang-isis-cfg-42.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 15, 2019) is 942 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: draft-ietf-bfd-yang has been published as RFC 9127 -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO-10589' ** Obsolete normative reference: RFC 5306 (Obsoleted by RFC 8706) ** Downref: Normative reference to an Informational RFC: RFC 5443 == Outdated reference: A later version (-08) exists of draft-ietf-rtgwg-segment-routing-ti-lfa-01 Summary: 2 errors (**), 0 flaws (~~), 6 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 17, 2020 Arrcus, Inc 6 A. Lindem 7 Cisco Systems 8 J. Zhang 9 Juniper Networks 10 L. Lhotka 11 CZ.NIC 12 October 15, 2019 14 YANG Data Model for IS-IS Protocol 15 draft-ietf-isis-yang-isis-cfg-42 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 17, 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 Base (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-15.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-15 { 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 3659 "Internal or External (I/E) Metric bit value. 3660 Set to 'false' to indicate an internal metric."; 3661 } 3662 container default-metric { 3663 leaf metric { 3664 type std-metric; 3665 description "Default IS-IS metric for IPv4 prefix"; 3666 } 3667 description "IS-IS default metric container."; 3668 } 3669 container delay-metric { 3670 leaf metric { 3671 type std-metric; 3672 description "IS-IS delay metric for IPv4 prefix"; 3673 } 3674 leaf supported { 3675 type boolean; 3676 default "false"; 3677 description 3678 "Indicates whether IS-IS delay metric is supported."; 3679 } 3680 description "IS-IS delay metric container."; 3681 } 3682 container expense-metric { 3683 leaf metric { 3684 type std-metric; 3685 description "IS-IS expense metric for IPv4 prefix"; 3686 } 3687 leaf supported { 3688 type boolean; 3689 default "false"; 3690 description 3691 "Indicates whether IS-IS expense metric is supported."; 3692 } 3693 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."; 3742 } 3743 uses prefix-attributes-extension; 3744 } 3746 grouping prefix-ipv6-extended { 3747 description "Grouping for attributes of an IPv6 prefix 3748 as defined in RFC5308."; 3749 leaf up-down { 3750 type boolean; 3751 description "Value of up/down bit. 3752 Set to true when the prefix has been advertised down 3753 the hierarchy."; 3754 } 3755 leaf ip-prefix { 3756 type inet:ipv6-address; 3757 description "IPv6 prefix address"; 3758 } 3759 leaf prefix-len { 3760 type uint8; 3761 description "IPv6 prefix length (in bits)"; 3762 } 3763 leaf metric { 3764 type wide-metric; 3765 description "IS-IS wide metric value"; 3766 } 3767 leaf-list tag { 3768 type uint32; 3769 description 3770 "List of 32-bit tags associated with the IPv4 prefix."; 3771 } 3772 leaf-list tag64 { 3773 type uint64; 3774 description 3775 "List of 64-bit tags associated with the IPv4 prefix."; 3776 } 3777 uses prefix-attributes-extension; 3778 } 3780 /* TLVs and sub-TLVs for neighbors */ 3782 grouping neighbor-link-attributes { 3783 description 3784 "Grouping for link attributes as defined 3785 in RFC5029"; 3786 leaf link-attributes-flags { 3787 type uint16; 3788 description 3789 "Flags for the link attributes"; 3790 } 3791 } 3792 grouping neighbor-gmpls-extensions { 3793 description 3794 "Grouping for GMPLS attributes of a neighbor as defined 3795 in RFC5307"; 3796 leaf link-local-id { 3797 type uint32; 3798 description 3799 "Local identifier of the link."; 3800 } 3801 leaf remote-local-id { 3802 type uint32; 3803 description 3804 "Remote identifier of the link."; 3805 } 3806 leaf protection-capability { 3807 type uint8; 3808 description 3809 "Describes the protection capabilities 3810 of the link. This is the value of the 3811 first octet of the sub-TLV type 20 value."; 3812 } 3813 container interface-switching-capability { 3814 description 3815 "Interface switching capabilities of the link."; 3816 leaf switching-capability { 3817 type uint8; 3818 description 3819 "Switching capability of the link."; 3820 } 3821 leaf encoding { 3822 type uint8; 3823 description 3824 "Type of encoding of the LSP being used."; 3825 } 3826 container max-lsp-bandwidths { 3827 description "Per-priority max LSP bandwidths."; 3828 list max-lsp-bandwidth { 3829 leaf priority { 3830 type uint8 { 3831 range "0 .. 7"; 3832 } 3833 description "Priority from 0 to 7."; 3834 } 3835 leaf bandwidth { 3836 type rt-types:bandwidth-ieee-float32; 3837 description "max LSP bandwidth."; 3838 } 3839 description 3840 "List of max LSP bandwidths for different 3841 priorities."; 3842 } 3843 } 3844 container tdm-specific { 3845 when "../switching-capability = 100"; 3846 description 3847 "Switching Capability-specific information applicable 3848 when switching type is TDM."; 3850 leaf minimum-lsp-bandwidth { 3851 type rt-types:bandwidth-ieee-float32; 3852 description "minimum LSP bandwidth."; 3853 } 3854 leaf indication { 3855 type uint8; 3856 description 3857 "The indication whether the interface supports Standard 3858 or Arbitrary SONET/SDH."; 3859 } 3860 } 3861 container psc-specific { 3862 when "../switching-capability >= 1 and 3863 ../switching-capability <= 4"; 3864 description 3865 "Switching Capability-specific information applicable 3866 when switching type is PSC1,PSC2,PSC3 or PSC4."; 3868 leaf minimum-lsp-bandwidth { 3869 type rt-types:bandwidth-ieee-float32; 3870 description "minimum LSP bandwidth."; 3871 } 3872 leaf mtu { 3873 type uint16; 3874 units bytes; 3875 description 3876 "Interface MTU"; 3877 } 3878 } 3879 } 3880 } 3882 grouping neighbor-extended-te-extensions { 3883 description 3884 "Grouping for TE attributes of a neighbor as defined 3885 in RFC8570"; 3887 container unidirectional-link-delay { 3888 description 3889 "Container for the average delay 3890 from the local neighbor to the remote one."; 3891 container flags { 3892 leaf-list unidirectional-link-delay-subtlv-flags { 3893 type identityref { 3894 base unidirectional-link-delay-subtlv-flag; 3895 } 3896 description 3897 "This list contains identities for the bits 3898 which are set."; 3899 } 3900 description 3901 "unidirectional-link-delay subTLV flags."; 3902 } 3903 leaf value { 3904 type uint32; 3905 units usec; 3906 description 3907 "Delay value expressed in microseconds."; 3908 } 3909 } 3910 container min-max-unidirectional-link-delay { 3911 description 3912 "Container for the min and max delay 3913 from the local neighbor to the remote one."; 3914 container flags { 3915 leaf-list min-max-unidirectional-link-delay-subtlv-flags { 3916 type identityref { 3917 base min-max-unidirectional-link-delay-subtlv-flag; 3918 } 3919 description 3920 "This list contains identities for the bits which are 3921 set."; 3922 } 3923 description 3924 "min-max-unidirectional-link-delay subTLV flags."; 3925 } 3926 leaf min-value { 3927 type uint32; 3928 units usec; 3929 description 3930 "Minimum delay value expressed in microseconds."; 3931 } 3932 leaf max-value { 3933 type uint32; 3934 units usec; 3935 description 3936 "Maximum delay value expressed in microseconds."; 3937 } 3938 } 3939 container unidirectional-link-delay-variation { 3940 description 3941 "Container for the average delay variation 3942 from the local neighbor to the remote one."; 3943 leaf value { 3944 type uint32; 3945 units usec; 3946 description 3947 "Delay variation value expressed in microseconds."; 3948 } 3949 } 3950 container unidirectional-link-loss { 3951 description 3952 "Container for the packet loss 3953 from the local neighbor to the remote one."; 3954 container flags { 3955 leaf-list unidirectional-link-loss-subtlv-flags { 3956 type identityref { 3957 base unidirectional-link-loss-subtlv-flag; 3958 } 3959 description 3960 "This list contains identities for the bits which are 3961 set."; 3962 } 3963 description 3964 "unidirectional-link-loss subTLV flags."; 3965 } 3966 leaf value { 3967 type uint32; 3968 units percent; 3969 description 3970 "Link packet loss expressed as a percentage 3971 of the total traffic sent over a configurable interval."; 3972 } 3973 } 3974 container unidirectional-link-residual-bandwidth { 3975 description 3976 "Container for the residual bandwidth 3977 from the local neighbor to the remote one."; 3978 leaf value { 3979 type rt-types:bandwidth-ieee-float32; 3980 units Bps; 3981 description 3982 "Residual bandwidth."; 3983 } 3984 } 3985 container unidirectional-link-available-bandwidth { 3986 description 3987 "Container for the available bandwidth 3988 from the local neighbor to the remote one."; 3989 leaf value { 3990 type rt-types:bandwidth-ieee-float32; 3991 units Bps; 3992 description 3993 "Available bandwidth."; 3994 } 3995 } 3996 container unidirectional-link-utilized-bandwidth { 3997 description 3998 "Container for the utilized bandwidth 3999 from the local neighbor to the remote one."; 4000 leaf value { 4001 type rt-types:bandwidth-ieee-float32; 4002 units Bps; 4003 description 4004 "Utilized bandwidth."; 4005 } 4006 } 4007 } 4009 grouping neighbor-te-extensions { 4010 description 4011 "Grouping for TE attributes of a neighbor as defined 4012 in RFC5305"; 4013 leaf admin-group { 4014 type uint32; 4015 description 4016 "Administrative group/Resource Class/Color."; 4017 } 4018 container local-if-ipv4-addrs { 4019 description "All local interface IPv4 addresses."; 4020 leaf-list local-if-ipv4-addr { 4021 type inet:ipv4-address; 4022 description 4023 "List of local interface IPv4 addresses."; 4024 } 4025 } 4026 container remote-if-ipv4-addrs { 4027 description "All remote interface IPv4 addresses."; 4028 leaf-list remote-if-ipv4-addr { 4029 type inet:ipv4-address; 4030 description 4031 "List of remote interface IPv4 addresses."; 4032 } 4033 } 4034 leaf te-metric { 4035 type uint32; 4036 description "TE metric."; 4037 } 4038 leaf max-bandwidth { 4039 type rt-types:bandwidth-ieee-float32; 4040 description "Maximum bandwidth."; 4041 } 4042 leaf max-reservable-bandwidth { 4043 type rt-types:bandwidth-ieee-float32; 4044 description "Maximum reservable bandwidth."; 4045 } 4046 container unreserved-bandwidths { 4047 description "All unreserved bandwidths."; 4048 list unreserved-bandwidth { 4049 leaf priority { 4050 type uint8 { 4051 range "0 .. 7"; 4052 } 4053 description "Priority from 0 to 7."; 4054 } 4055 leaf unreserved-bandwidth { 4056 type rt-types:bandwidth-ieee-float32; 4057 description "Unreserved bandwidth."; 4058 } 4059 description 4060 "List of unreserved bandwidths for different 4061 priorities."; 4062 } 4063 } 4064 } 4066 grouping neighbor-extended { 4067 description 4068 "Grouping for attributes of an IS-IS extended neighbor."; 4069 leaf neighbor-id { 4070 type extended-system-id; 4071 description "system-id of the extended neighbor."; 4072 } 4073 container instances { 4074 description "List of all adjacencies between the local 4075 system and the neighbor system-id."; 4076 list instance { 4077 key id; 4079 leaf id { 4080 type uint32; 4081 description "Unique identifier of an instance of a 4082 particular neighbor."; 4083 } 4084 leaf metric { 4085 type wide-metric; 4086 description "IS-IS wide metric for extended neighbor"; 4087 } 4088 uses neighbor-gmpls-extensions; 4089 uses neighbor-te-extensions; 4090 uses neighbor-extended-te-extensions; 4091 uses neighbor-link-attributes; 4092 uses unknown-tlvs; 4093 description "Instance of a particular adjacency."; 4094 } 4095 } 4096 } 4098 grouping neighbor { 4099 description "IS-IS standard neighbor grouping."; 4100 leaf neighbor-id { 4101 type extended-system-id; 4102 description "IS-IS neighbor system-id"; 4103 } 4104 container instances { 4105 description "List of all adjacencies between the local 4106 system and the neighbor system-id."; 4107 list instance { 4108 key id; 4110 leaf id { 4111 type uint32; 4112 description "Unique identifier of an instance of a 4113 particular neighbor."; 4114 } 4115 leaf i-e { 4116 type boolean; 4117 description 4118 "Internal or External (I/E) Metric bit value. 4119 Set to 'false' to indicate an internal metric."; 4120 } 4121 container default-metric { 4122 leaf metric { 4123 type std-metric; 4124 description "IS-IS default metric value"; 4126 } 4127 description "IS-IS default metric container"; 4128 } 4129 container delay-metric { 4130 leaf metric { 4131 type std-metric; 4132 description "IS-IS delay metric value"; 4133 } 4134 leaf supported { 4135 type boolean; 4136 default "false"; 4137 description "IS-IS delay metric supported"; 4138 } 4139 description "IS-IS delay metric container"; 4140 } 4141 container expense-metric { 4142 leaf metric { 4143 type std-metric; 4144 description "IS-IS expense metric value"; 4145 } 4146 leaf supported { 4147 type boolean; 4148 default "false"; 4149 description "IS-IS expense metric supported"; 4150 } 4151 description "IS-IS expense metric container"; 4152 } 4153 container error-metric { 4154 leaf metric { 4155 type std-metric; 4156 description "IS-IS error metric value"; 4157 } 4158 leaf supported { 4159 type boolean; 4160 default "false"; 4161 description "IS-IS error metric supported"; 4162 } 4163 description "IS-IS error metric container"; 4164 } 4165 description "Instance of a particular adjacency 4166 as defined in ISO10589."; 4167 } 4168 } 4169 } 4171 /* Top-level TLVs */ 4173 grouping tlv132-ipv4-addresses { 4174 leaf-list ipv4-addresses { 4175 type inet:ipv4-address; 4176 description 4177 "List of IPv4 addresses of the IS-IS node - IS-IS 4178 reference is TLV 132."; 4179 } 4180 description "Grouping for TLV132."; 4181 } 4182 grouping tlv232-ipv6-addresses { 4183 leaf-list ipv6-addresses { 4184 type inet:ipv6-address; 4185 description 4186 "List of IPv6 addresses of the IS-IS node - IS-IS 4187 reference is TLV 232."; 4188 } 4189 description "Grouping for TLV232."; 4190 } 4191 grouping tlv134-ipv4-te-rid { 4192 leaf ipv4-te-routerid { 4193 type inet:ipv4-address; 4194 description 4195 "IPv4 Traffic Engineering router ID of the IS-IS node - 4196 IS-IS reference is TLV 134."; 4197 } 4198 description "Grouping for TLV134."; 4199 } 4200 grouping tlv140-ipv6-te-rid { 4201 leaf ipv6-te-routerid { 4202 type inet:ipv6-address; 4203 description 4204 "IPv6 Traffic Engineering router ID of the IS-IS node - 4205 IS-IS reference is TLV 140."; 4206 } 4207 description "Grouping for TLV140."; 4208 } 4209 grouping tlv129-protocols { 4210 leaf-list protocol-supported { 4211 type uint8; 4212 description 4213 "List of supported protocols of the IS-IS node - 4214 IS-IS reference is TLV 129."; 4215 } 4216 description "Grouping for TLV129."; 4217 } 4218 grouping tlv137-hostname { 4219 leaf dynamic-hostname { 4220 type string; 4221 description 4222 "Host Name of the IS-IS node - IS-IS reference 4223 is TLV 137."; 4224 } 4225 description "Grouping for TLV137."; 4226 } 4227 grouping tlv10-authentication { 4228 container authentication { 4229 leaf authentication-type { 4230 type identityref { 4231 base key-chain:crypto-algorithm; 4232 } 4233 description 4234 "Authentication type to be used with IS-IS node."; 4235 } 4236 leaf authentication-key { 4237 type string; 4238 description 4239 "Authentication key to be used. For security reasons, 4240 the authentication key MUST NOT be presented in 4241 a clear text format in response to any request 4242 (e.g., via get, get-config)."; 4243 } 4244 description 4245 "IS-IS node authentication information container - 4246 IS-IS reference is TLV 10."; 4247 } 4248 description "Grouping for TLV10."; 4249 } 4250 grouping tlv229-mt { 4251 container mt-entries { 4252 list topology { 4253 description 4254 "List of topologies supported"; 4256 leaf mt-id { 4257 type uint16 { 4258 range "0 .. 4095"; 4259 } 4260 description 4261 "Multi-Topology identifier of topology."; 4262 } 4263 container attributes { 4264 leaf-list flags { 4265 type identityref { 4266 base tlv229-flag; 4267 } 4268 description 4269 "This list contains identities for the bits which are 4270 set."; 4271 } 4272 description 4273 "TLV 229 flags."; 4274 } 4275 } 4276 description 4277 "IS-IS node topology information container - 4278 IS-IS reference is TLV 229."; 4279 } 4280 description "Grouping for TLV229."; 4281 } 4283 grouping tlv242-router-capabilities { 4284 container router-capabilities { 4285 list router-capability { 4286 container flags { 4287 leaf-list router-capability-flags { 4288 type identityref { 4289 base router-capability-flag; 4290 } 4291 description 4292 "This list contains identities for the bits which are 4293 set."; 4294 } 4295 description 4296 "Router capability flags."; 4297 } 4298 container node-tags { 4299 if-feature node-tag; 4300 list node-tag { 4301 leaf tag { 4302 type uint32; 4303 description "Node tag value."; 4304 } 4305 description "List of tags."; 4306 } 4307 description "Container for node admin tags"; 4308 } 4310 uses unknown-tlvs; 4312 description 4313 "IS-IS node capabilities. This list element may 4314 be extended with detailed information - IS-IS 4315 reference is TLV 242."; 4316 } 4317 description "List of router capability TLVs."; 4319 } 4320 description "Grouping for TLV242."; 4321 } 4323 grouping tlv138-srlg { 4324 description 4325 "Grouping for TLV138."; 4326 container links-srlgs { 4327 list links { 4328 leaf neighbor-id { 4329 type extended-system-id; 4330 description "system-id of the extended neighbor."; 4331 } 4332 leaf flags { 4333 type uint8; 4334 description 4335 "Flags associated with the link."; 4336 } 4337 leaf link-local-id { 4338 type union { 4339 type inet:ip-address; 4340 type uint32; 4341 } 4342 description 4343 "Local identifier of the link. 4344 It could be an IPv4 address or a local identifier."; 4345 } 4346 leaf link-remote-id { 4347 type union { 4348 type inet:ip-address; 4349 type uint32; 4350 } 4351 description 4352 "Remote identifier of the link. 4353 It could be an IPv4 address or a remotely learned 4354 identifier."; 4355 } 4356 container srlgs { 4357 description "List of SRLGs."; 4358 leaf-list srlg { 4359 type uint32; 4360 description 4361 "SRLG value of the link."; 4362 } 4363 } 4364 description 4365 "SRLG attribute of a link."; 4366 } 4367 description 4368 "List of links with SRLGs"; 4369 } 4370 } 4372 /* Grouping for LSDB description */ 4374 grouping lsp-entry { 4375 description "IS-IS LSP database entry grouping"; 4377 leaf decoded-completed { 4378 type boolean; 4379 description "IS-IS LSP body fully decoded."; 4380 } 4381 leaf raw-data { 4382 type yang:hex-string; 4383 description 4384 "The hexadecimal representation of the complete LSP in 4385 network-byte order (NBO) as received or originated."; 4386 } 4387 leaf lsp-id { 4388 type lsp-id; 4389 description "LSP ID of the LSP"; 4390 } 4391 leaf checksum { 4392 type uint16; 4393 description "LSP checksum"; 4394 } 4395 leaf remaining-lifetime { 4396 type uint16; 4397 units "seconds"; 4398 description 4399 "Remaining lifetime (in seconds) until LSP expiration."; 4400 } 4401 leaf sequence { 4402 type uint32; 4403 description 4404 "This leaf describes the sequence number of the LSP."; 4405 } 4406 container attributes { 4407 leaf-list lsp-flags { 4408 type identityref { 4409 base lsp-flag; 4410 } 4411 description 4412 "This list contains identities for the bits which are 4413 set."; 4414 } 4415 description "LSP attributes."; 4416 } 4418 uses tlv132-ipv4-addresses; 4419 uses tlv232-ipv6-addresses; 4420 uses tlv134-ipv4-te-rid; 4421 uses tlv140-ipv6-te-rid; 4422 uses tlv129-protocols; 4423 uses tlv137-hostname; 4424 uses tlv10-authentication; 4425 uses tlv229-mt; 4426 uses tlv242-router-capabilities; 4427 uses tlv138-srlg; 4428 uses unknown-tlvs; 4430 container is-neighbor { 4431 list neighbor { 4432 key neighbor-id; 4434 uses neighbor; 4435 description "List of neighbors."; 4436 } 4437 description 4438 "Standard IS neighbors container - IS-IS reference is 4439 TLV 2."; 4440 } 4442 container extended-is-neighbor { 4443 list neighbor { 4444 key neighbor-id; 4446 uses neighbor-extended; 4447 description 4448 "List of extended IS neighbors"; 4449 } 4450 description 4451 "Standard IS extended neighbors container - IS-IS 4452 reference is TLV 22"; 4453 } 4455 container ipv4-internal-reachability { 4456 list prefixes { 4457 uses prefix-ipv4-std; 4458 description "List of prefixes."; 4459 } 4460 description 4461 "IPv4 internal reachability information container - IS-IS 4462 reference is TLV 128."; 4464 } 4466 container ipv4-external-reachability { 4467 list prefixes { 4468 uses prefix-ipv4-std; 4469 description "List of prefixes."; 4470 } 4471 description 4472 "IPv4 external reachability information container - 4473 IS-IS reference is TLV 130."; 4474 } 4476 container extended-ipv4-reachability { 4477 list prefixes { 4478 uses prefix-ipv4-extended; 4479 uses unknown-tlvs; 4480 description "List of prefixes."; 4481 } 4482 description 4483 "IPv4 extended reachability information container - 4484 IS-IS reference is TLV 135."; 4485 } 4487 container mt-is-neighbor { 4488 list neighbor { 4489 leaf mt-id { 4490 type uint16 { 4491 range "0 .. 4095"; 4492 } 4493 description "Multi-topology (MT) identifier"; 4494 } 4495 uses neighbor-extended; 4496 description "List of neighbors."; 4497 } 4498 description 4499 "IS-IS multi-topology neighbor container - IS-IS 4500 reference is TLV 223."; 4501 } 4503 container mt-extended-ipv4-reachability { 4504 list prefixes { 4505 leaf mt-id { 4506 type uint16 { 4507 range "0 .. 4095"; 4508 } 4509 description "Multi-topology (MT) identifier"; 4510 } 4511 uses prefix-ipv4-extended; 4512 uses unknown-tlvs; 4513 description "List of extended prefixes."; 4514 } 4515 description 4516 "IPv4 multi-topology (MT) extended reachability 4517 information container - IS-IS reference is TLV 235."; 4518 } 4520 container mt-ipv6-reachability { 4521 list prefixes { 4522 leaf MT-ID { 4523 type uint16 { 4524 range "0 .. 4095"; 4525 } 4526 description "Multi-topology (MT) identifier"; 4527 } 4528 uses prefix-ipv6-extended; 4529 uses unknown-tlvs; 4530 description "List of IPv6 extended prefixes."; 4531 } 4532 description 4533 "IPv6 multi-topology (MT) extended reachability 4534 information container - IS-IS reference is TLV 237."; 4535 } 4537 container ipv6-reachability { 4538 list prefixes { 4539 uses prefix-ipv6-extended; 4540 uses unknown-tlvs; 4541 description "List of IPv6 prefixes."; 4542 } 4543 description 4544 "IPv6 reachability information container - IS-IS 4545 reference is TLV 236."; 4546 } 4547 } 4549 grouping lsdb { 4550 description "Link State Database (LSDB) grouping"; 4551 container database { 4552 config false; 4553 list levels { 4554 key level; 4556 leaf level { 4557 type level-number; 4558 description "LSDB level number (1 or 2)"; 4559 } 4560 list lsp { 4561 key lsp-id; 4562 uses lsp-entry; 4563 description "List of LSPs in LSDB"; 4564 } 4565 description "List of LSPs for the LSDB level container"; 4566 } 4567 description "IS-IS Link State database container"; 4568 } 4569 } 4571 /* Augmentations */ 4573 augment "/rt:routing/" 4574 +"rt:ribs/rt:rib/rt:routes/rt:route" { 4575 when "rt:source-protocol = 'isis:isis'" { 4576 description "IS-IS-specific route attributes."; 4577 } 4578 uses route-content; 4579 description 4580 "This augments route object in RIB with IS-IS-specific 4581 attributes."; 4582 } 4584 augment "/if:interfaces/if:interface" { 4585 leaf clns-mtu { 4586 if-feature osi-interface; 4587 type uint16; 4588 description "CLNS MTU of the interface"; 4589 } 4590 description "ISO specific interface parameters."; 4591 } 4593 augment "/rt:routing/rt:control-plane-protocols/" 4594 +"rt:control-plane-protocol" { 4595 when "rt:type = 'isis:isis'" { 4596 description 4597 "This augment is only valid when routing protocol 4598 instance type is 'isis'"; 4599 } 4600 description 4601 "This augments a routing protocol instance with IS-IS 4602 specific parameters."; 4603 container isis { 4604 must "count(area-address) > 0" { 4605 error-message 4606 "At least one area-address must be configured."; 4607 description 4608 "Enforce configuration of at least one area."; 4609 } 4611 uses instance-config; 4612 uses instance-state; 4614 container topologies { 4615 if-feature multi-topology; 4616 list topology { 4617 key "name"; 4618 leaf enable { 4619 type boolean; 4620 description "Topology enable configuration"; 4621 } 4622 leaf name { 4623 type leafref { 4624 path "../../../../../../rt:ribs/rt:rib/rt:name"; 4625 } 4626 description 4627 "Routing Information Base (RIB) corresponding 4628 to topology."; 4629 } 4631 uses multi-topology-config; 4633 description "List of topologies"; 4634 } 4635 description "Multi-topology container"; 4636 } 4637 container interfaces { 4638 list interface { 4639 key "name"; 4640 leaf name { 4641 type if:interface-ref; 4643 description 4644 "Reference to the interface within 4645 the routing-instance."; 4646 } 4647 uses interface-config; 4648 uses interface-state; 4649 container topologies { 4650 if-feature multi-topology; 4651 list topology { 4652 key name; 4654 leaf name { 4655 type leafref { 4656 path "../../../../../../../../"+ 4657 "rt:ribs/rt:rib/rt:name"; 4658 } 4660 description 4661 "Routing Information Base (RIB) corresponding 4662 to topology."; 4663 } 4664 uses multi-topology-interface-config; 4665 description "List of interface topologies"; 4666 } 4667 description "Multi-topology container"; 4668 } 4669 description "List of IS-IS interfaces."; 4670 } 4671 description 4672 "IS-IS interface specific configuration container"; 4673 } 4675 description 4676 "IS-IS configuration/state top-level container"; 4677 } 4678 } 4680 /* RPC methods */ 4682 rpc clear-adjacency { 4683 description 4684 "This RPC request clears a particular set of IS-IS 4685 adjacencies. If the operation fails due to an internal 4686 reason, then the error-tag and error-app-tag should be 4687 set indicating the reason for the failure."; 4688 input { 4690 leaf routing-protocol-instance-name { 4691 type leafref { 4692 path "/rt:routing/rt:control-plane-protocols/" 4693 + "rt:control-plane-protocol/rt:name"; 4694 } 4695 mandatory "true"; 4696 description 4697 "Name of the IS-IS protocol instance whose IS-IS 4698 adjacency is being cleared. 4700 If the corresponding IS-IS instance doesn't exist, 4701 then the operation will fail with an error-tag of 4702 'data-missing' and an error-app-tag of 4703 'routing-protocol-instance-not-found'."; 4704 } 4705 leaf level { 4706 type level; 4707 description 4708 "IS-IS level of the adjacency to be cleared. If the 4709 IS-IS level is level-1-2, both level 1 and level 2 4710 adjacencies would be cleared. 4712 If the value provided is different from the one 4713 authorized in the enum type, then the operation 4714 SHALL fail with an error-tag of 'data-missing' and 4715 an error-app-tag of 'bad-isis-level'."; 4716 } 4717 leaf interface { 4718 type if:interface-ref; 4719 description 4720 "IS-IS interface name. 4722 If the corresponding IS-IS interface doesn't exist, 4723 then the operation SHALL fail with an error-tag of 4724 'data-missing' and an error-app-tag of 4725 'isis-interface-not-found'."; 4726 } 4727 } 4728 } 4730 rpc clear-database { 4731 description 4732 "This RPC request clears a particular IS-IS database. If 4733 the operation fails for an IS-IS internal reason, then 4734 the error-tag and error-app-tag should be set 4735 indicating the reason for the failure."; 4736 input { 4737 leaf routing-protocol-instance-name { 4738 type leafref { 4739 path "/rt:routing/rt:control-plane-protocols/" 4740 + "rt:control-plane-protocol/rt:name"; 4741 } 4742 mandatory "true"; 4743 description 4744 "Name of the IS-IS protocol instance whose IS-IS 4745 database(s) is/are being cleared. 4747 If the corresponding IS-IS instance doesn't exist, 4748 then the operation will fail with an error-tag of 4749 'data-missing' and an error-app-tag of 4750 'routing-protocol-instance-not-found'."; 4751 } 4752 leaf level { 4753 type level; 4754 description 4755 "IS-IS level of the adjacency to be cleared. If the 4756 IS-IS level is level-1-2, both level 1 and level 2 4757 databases would be cleared. 4759 If the value provided is different from the one 4760 authorized in the enum type, then the operation 4761 SHALL fail with an error-tag of 'data-missing' and 4762 an error-app-tag of 'bad-isis-level'."; 4763 } 4764 } 4765 } 4767 /* Notifications */ 4769 notification database-overload { 4770 uses notification-instance-hdr; 4772 leaf overload { 4773 type enumeration { 4774 enum off { 4775 description 4776 "Indicates IS-IS instance has left overload state"; 4777 } 4778 enum on { 4779 description 4780 "Indicates IS-IS instance has entered overload state"; 4781 } 4783 } 4784 description "New overload state of the IS-IS instance"; 4785 } 4786 description 4787 "This notification is sent when an IS-IS instance 4788 overload state changes."; 4789 } 4791 notification lsp-too-large { 4792 uses notification-instance-hdr; 4793 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 } 4846 notification id-len-mismatch { 4847 uses notification-instance-hdr; 4848 uses notification-interface-hdr; 4850 leaf pdu-field-len { 4851 type uint8; 4852 description "Size of the ID length in the received PDU"; 4853 } 4854 leaf raw-pdu { 4855 type binary; 4856 description "Received raw PDU."; 4857 } 4858 description 4859 "This notification is sent when we receive a PDU 4860 with a different value for the system-id length. 4861 The notification generation must be throttled 4862 with at least 5 seconds between successive 4863 notifications."; 4864 } 4866 notification max-area-addresses-mismatch { 4867 uses notification-instance-hdr; 4868 uses notification-interface-hdr; 4870 leaf max-area-addresses { 4871 type uint8; 4872 description "Received number of supported areas"; 4873 } 4874 leaf raw-pdu { 4875 type binary; 4876 description "Received raw PDU."; 4877 } 4878 description 4879 "This notification is sent when we receive a PDU 4880 with a different value for the Maximum Area Addresses. 4881 The notification generation must be throttled 4882 with at least 5 seconds between successive 4883 notifications."; 4884 } 4886 notification own-lsp-purge { 4887 uses notification-instance-hdr; 4888 uses notification-interface-hdr; 4889 leaf lsp-id { 4890 type lsp-id; 4891 description "LSP ID"; 4892 } 4893 description 4894 "This notification is sent when the system receives 4895 a PDU with its own system-id and zero age."; 4896 } 4898 notification sequence-number-skipped { 4899 uses notification-instance-hdr; 4900 uses notification-interface-hdr; 4901 leaf lsp-id { 4902 type lsp-id; 4903 description "LSP ID"; 4904 } 4905 description 4906 "This notification is sent when the system receives a 4907 PDU with its own system-id and different contents. The 4908 system has to originate the LSP with a higher sequence 4909 number."; 4910 } 4912 notification authentication-type-failure { 4913 uses notification-instance-hdr; 4914 uses notification-interface-hdr; 4915 leaf raw-pdu { 4916 type binary; 4917 description "Received raw PDU."; 4918 } 4919 description 4920 "This notification is sent when the system receives a 4921 PDU with the wrong authentication type field. 4922 The notification generation must be throttled 4923 with at least 5 seconds between successive 4924 notifications."; 4925 } 4927 notification authentication-failure { 4928 uses notification-instance-hdr; 4929 uses notification-interface-hdr; 4930 leaf raw-pdu { 4931 type binary; 4932 description "Received raw PDU."; 4933 } 4934 description 4935 "This notification is sent when the system receives 4936 a PDU with the wrong authentication information. 4937 The notification generation must be throttled 4938 with at least 5 seconds between successive 4939 notifications."; 4940 } 4942 notification version-skew { 4943 uses notification-instance-hdr; 4944 uses notification-interface-hdr; 4945 leaf protocol-version { 4946 type uint8; 4947 description "Protocol version received in the PDU."; 4948 } 4949 leaf raw-pdu { 4950 type binary; 4951 description "Received raw PDU."; 4952 } 4953 description 4954 "This notification is sent when the system receives a 4955 PDU with a different protocol version number. 4956 The notification generation must be throttled 4957 with at least 5 seconds between successive 4958 notifications."; 4959 } 4961 notification area-mismatch { 4962 uses notification-instance-hdr; 4963 uses notification-interface-hdr; 4964 leaf raw-pdu { 4965 type binary; 4966 description "Received raw PDU."; 4967 } 4968 description 4969 "This notification is sent when the system receives a 4970 Hello PDU from an IS that does not share any area 4971 address. The notification generation must be throttled 4972 with at least 5 seconds between successive 4973 notifications."; 4974 } 4976 notification rejected-adjacency { 4977 uses notification-instance-hdr; 4978 uses notification-interface-hdr; 4979 leaf raw-pdu { 4980 type binary; 4981 description 4982 "Received raw PDU."; 4983 } 4984 leaf reason { 4985 type string { 4986 length "0..255"; 4987 } 4988 description 4989 "The system may provide a reason to reject the 4990 adjacency. If the reason is not available, 4991 the reason string will not be returned. 4992 The expected format is a single line text."; 4993 } 4994 description 4995 "This notification is sent when the system receives a 4996 Hello PDU from an IS but does not establish an adjacency 4997 for some reason. The notification generation must be 4998 throttled with at least 5 seconds between successive 4999 notifications."; 5000 } 5002 notification protocols-supported-mismatch { 5003 uses notification-instance-hdr; 5004 uses notification-interface-hdr; 5005 leaf raw-pdu { 5006 type binary; 5007 description "Received raw PDU."; 5008 } 5009 leaf-list protocols { 5010 type uint8; 5011 description 5012 "List of protocols supported by the remote system."; 5013 } 5014 description 5015 "This notification is sent when the system receives a 5016 non-pseudonode LSP that has no matching protocols 5017 supported. The notification generation must be throttled 5018 with at least 5 seconds between successive 5019 notifications."; 5020 } 5022 notification lsp-error-detected { 5023 uses notification-instance-hdr; 5024 uses notification-interface-hdr; 5025 leaf lsp-id { 5026 type lsp-id; 5027 description "LSP ID."; 5028 } 5029 leaf raw-pdu { 5030 type binary; 5031 description "Received raw PDU."; 5032 } 5033 leaf error-offset { 5034 type uint32; 5035 description 5036 "If the problem is a malformed TLV, the error-offset 5037 points to the start of the TLV. If the problem is with 5038 the LSP header, the error-offset points to the errant 5039 byte"; 5040 } 5041 leaf tlv-type { 5042 type uint8; 5043 description 5044 "If the problem is a malformed TLV, the tlv-type is set 5045 to the type value of the suspicious TLV. Otherwise, 5046 this leaf is not present."; 5047 } 5048 description 5049 "This notification is sent when the system receives an 5050 LSP with a parse error. The notification generation must 5051 be throttled with at least 5 seconds between successive 5052 notifications."; 5053 } 5055 notification adjacency-state-change { 5056 uses notification-instance-hdr; 5057 uses notification-interface-hdr; 5058 leaf neighbor { 5059 type string { 5060 length "1..255"; 5061 } 5062 description 5063 "Name of the neighbor. 5064 It corresponds to the hostname associated 5065 with the system-id of the neighbor in the 5066 mapping database (RFC5301). 5067 If the name of the neighbor is 5068 not available, it is not returned."; 5069 } 5070 leaf neighbor-system-id { 5071 type system-id; 5072 description "Neighbor system-id"; 5073 } 5074 leaf state { 5075 type adj-state-type; 5077 description "New state of the IS-IS adjacency."; 5078 } 5079 leaf reason { 5080 type string { 5081 length "1..255"; 5082 } 5083 description 5084 "If the adjacency is going to DOWN, this leaf provides 5085 a reason for the adjacency going down. The reason is 5086 provided as a text. If the adjacency is going to UP, no 5087 reason is provided. The expected format is a single line 5088 text."; 5089 } 5090 description 5091 "This notification is sent when an IS-IS adjacency 5092 moves to Up state or to Down state."; 5093 } 5095 notification lsp-received { 5096 uses notification-instance-hdr; 5097 uses notification-interface-hdr; 5099 leaf lsp-id { 5100 type lsp-id; 5101 description "LSP ID"; 5102 } 5103 leaf sequence { 5104 type uint32; 5105 description "Sequence number of the received LSP."; 5106 } 5107 leaf received-timestamp { 5108 type yang:timestamp; 5110 description "Timestamp when the LSP was received."; 5111 } 5112 leaf neighbor-system-id { 5113 type system-id; 5114 description "Neighbor system-id of LSP sender"; 5115 } 5116 description 5117 "This notification is sent when an LSP is received. 5118 The notification generation must be throttled with at 5119 least 5 seconds between successive notifications."; 5120 } 5122 notification lsp-generation { 5123 uses notification-instance-hdr; 5125 leaf lsp-id { 5126 type lsp-id; 5127 description "LSP ID"; 5128 } 5129 leaf sequence { 5130 type uint32; 5131 description "Sequence number of the received LSP."; 5132 } 5133 leaf send-timestamp { 5134 type yang:timestamp; 5136 description "Timestamp when our LSP was regenerated."; 5137 } 5138 description 5139 "This notification is sent when an LSP is regenerated. 5140 The notification generation must be throttled with at 5141 least 5 seconds between successive notifications."; 5142 } 5143 } 5144 5146 7. Security Considerations 5148 The YANG modules specified in this document define a schema for data 5149 that is designed to be accessed via network management protocols such 5150 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 5151 is the secure transport layer, and the mandatory-to-implement secure 5152 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 5153 is HTTPS, and the mandatory-to-implement secure transport is TLS 5154 [RFC8446]. 5156 The NETCONF Access Control Model (NACM) [RFC8341] provides the means 5157 to restrict access for particular NETCONF or RESTCONF users to a pre- 5158 configured subset of all available NETCONF or RESTCONF protocol 5159 operations and content. 5161 There are a number of data nodes defined in ietf-isis.yang module 5162 that are writable/creatable/deletable (i.e., config true, which is 5163 the default). These data nodes may be considered sensitive or 5164 vulnerable in some network environments. Write operations (e.g., 5165 edit-config) to these data nodes without proper protection can have a 5166 negative effect on network operations. Writable data node represent 5167 configuration of each instance and interface. These correspond to 5168 the following schema nodes: 5170 /isis 5172 /isis/interfaces/interface[name] 5174 For IS-IS, the ability to modify IS-IS configuration will allow the 5175 entire IS-IS domain to be compromised including forming adjacencies 5176 with unauthorized routers to misroute traffic or mount a massive 5177 Denial-of-Service (DoS) attack. For example, adding IS-IS on any 5178 unprotected interface could allow an IS-IS adjacency to be formed 5179 with an unauthorized and malicious neighbor. Once an adjacency is 5180 formed, traffic could be hijacked. As a simpler example, a Denial- 5181 Of-Service attack could be mounted by changing the cost of an IS-IS 5182 interface to be asymmetric such that a hard routing loop ensues. In 5183 general, unauthorized modification of most IS-IS features will pose 5184 their own set of security risks and the "Security Considerations" in 5185 the respective reference RFCs should be consulted. 5187 Some of the readable data nodes in the ietf-isis.yang module may be 5188 considered sensitive or vulnerable in some network environments. It 5189 is thus important to control read access (e.g., via get, get-config, 5190 or notification) to these data nodes. The exposure of the Link State 5191 Database (LSDB) will expose the detailed topology of the network. 5192 Similarly, the IS-IS local RIB exposes the reachable prefixes in the 5193 IS-IS routing domain. The Link State Database (LSDB) and local RIB 5194 are represented by the following schema nodes: 5196 /isis/database 5198 /isis/local-rib 5200 Exposure of the Link State Database and local RIB include information 5201 beyond the scope of the IS-IS router and this may be undesirable 5202 since exposure may facilitate other attacks. Additionally, the 5203 complete IP network topology and, if deployed, the traffic 5204 engineering topology of the IS-IS domain can be reconstructed from 5205 the Link State Database. Though not as straightforward, the IS-IS 5206 local RIB can also be discover topological information. Network 5207 operators may consider their topologies to be sensitive confidential 5208 data. 5210 For IS-IS authentication, configuration is supported via the 5211 specification of key-chain [RFC8177] or the direct specification of 5212 key and authentication algorithm. Hence, authentication 5213 configuration using the "auth-table-trailer" case in the 5214 "authentication" container inherits the security considerations of 5215 [RFC8177]. This includes the considerations with respect to the 5216 local storage and handling of authentication keys. 5218 Some of the RPC operations in this YANG module may be considered 5219 sensitive or vulnerable in some network environments. It is thus 5220 important to control access to these operations. The IS-IS YANG 5221 module support the "clear-adjacency" and "clear-database" RPCs. If 5222 access to either of these is compromised, they can result in 5223 temporary network outages be employed to mount DoS attacks. 5225 The actual authentication key data (whether locally specified or part 5226 of a key-chain) is sensitive and needs to be kept secret from 5227 unauthorized parties; compromise of the key data would allow an 5228 attacker to forge IS-IS traffic that would be accepted as authentic, 5229 potentially compromising the entirety IS-IS domain. 5231 The model describes several notifications, implementations must rate- 5232 limit the generation of these notifications to avoid creating 5233 significant notification load. Otherwise, this notification load may 5234 have some side effects on the system stability and may be exploited 5235 as an attack vector. 5237 8. Contributors 5239 The authors would like to thank Kiran Agrahara Sreenivasa, Dean 5240 Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major 5241 contributions to the draft. 5243 9. Acknowledgements 5245 The authors would like to thank Tom Petch, Alvaro Retana, Stewart 5246 Bryant, Barry Leiba, Benjamin Kaduk and Adam Roach, and Roman Danyliw 5247 for their review and comments. 5249 10. IANA Considerations 5251 The IANA is requested to assign two new URIs from the IETF XML 5252 registry [RFC3688]. Authors are suggesting the following URI: 5254 URI: urn:ietf:params:xml:ns:yang:ietf-isis 5255 Registrant Contact: The IESG 5256 XML: N/A, the requested URI is an XML namespace 5258 This document also requests one new YANG module name in the YANG 5259 Module Names registry [RFC6020] with the following suggestion: 5261 name: ietf-isis 5262 namespace: urn:ietf:params:xml:ns:yang:ietf-isis 5263 prefix: isis 5264 reference: RFC XXXX 5266 11. References 5268 11.1. Normative References 5270 [I-D.ietf-bfd-yang] 5271 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 5272 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 5273 Detection (BFD)", draft-ietf-bfd-yang-17 (work in 5274 progress), August 2018. 5276 [ISO-10589] 5277 "Intermediate System to Intermediate System intra- domain 5278 routeing information exchange protocol for use in 5279 conjunction with the protocol for providing the 5280 connectionless-mode network service (ISO 8473)", 5281 International Standard 10589: 2002, Second Edition, 2002. 5283 [RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and 5284 dual environments", RFC 1195, DOI 10.17487/RFC1195, 5285 December 1990, . 5287 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 5288 Requirement Levels", BCP 14, RFC 2119, 5289 DOI 10.17487/RFC2119, March 1997, 5290 . 5292 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 5293 DOI 10.17487/RFC3688, January 2004, 5294 . 5296 [RFC4090] Pan, P., Ed., Swallow, G., Ed., and A. Atlas, Ed., "Fast 5297 Reroute Extensions to RSVP-TE for LSP Tunnels", RFC 4090, 5298 DOI 10.17487/RFC4090, May 2005, 5299 . 5301 [RFC5029] Vasseur, JP. and S. Previdi, "Definition of an IS-IS Link 5302 Attribute Sub-TLV", RFC 5029, DOI 10.17487/RFC5029, 5303 September 2007, . 5305 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi 5306 Topology (MT) Routing in Intermediate System to 5307 Intermediate Systems (IS-ISs)", RFC 5120, 5308 DOI 10.17487/RFC5120, February 2008, 5309 . 5311 [RFC5130] Previdi, S., Shand, M., Ed., and C. Martin, "A Policy 5312 Control Mechanism in IS-IS Using Administrative Tags", 5313 RFC 5130, DOI 10.17487/RFC5130, February 2008, 5314 . 5316 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for 5317 IP Fast Reroute: Loop-Free Alternates", RFC 5286, 5318 DOI 10.17487/RFC5286, September 2008, 5319 . 5321 [RFC5301] McPherson, D. and N. Shen, "Dynamic Hostname Exchange 5322 Mechanism for IS-IS", RFC 5301, DOI 10.17487/RFC5301, 5323 October 2008, . 5325 [RFC5302] Li, T., Smit, H., and T. Przygienda, "Domain-Wide Prefix 5326 Distribution with Two-Level IS-IS", RFC 5302, 5327 DOI 10.17487/RFC5302, October 2008, 5328 . 5330 [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic 5331 Engineering", RFC 5305, DOI 10.17487/RFC5305, October 5332 2008, . 5334 [RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS", 5335 RFC 5306, DOI 10.17487/RFC5306, October 2008, 5336 . 5338 [RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., "IS-IS Extensions 5339 in Support of Generalized Multi-Protocol Label Switching 5340 (GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008, 5341 . 5343 [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308, 5344 DOI 10.17487/RFC5308, October 2008, 5345 . 5347 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP 5348 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March 5349 2009, . 5351 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5352 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 5353 . 5355 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5356 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 5357 DOI 10.17487/RFC5881, June 2010, 5358 . 5360 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 5361 the Network Configuration Protocol (NETCONF)", RFC 6020, 5362 DOI 10.17487/RFC6020, October 2010, 5363 . 5365 [RFC6119] Harrison, J., Berger, J., and M. Bartlett, "IPv6 Traffic 5366 Engineering in IS-IS", RFC 6119, DOI 10.17487/RFC6119, 5367 February 2011, . 5369 [RFC6232] Wei, F., Qin, Y., Li, Z., Li, T., and J. Dong, "Purge 5370 Originator Identification TLV for IS-IS", RFC 6232, 5371 DOI 10.17487/RFC6232, May 2011, 5372 . 5374 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 5375 and A. Bierman, Ed., "Network Configuration Protocol 5376 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 5377 . 5379 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 5380 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 5381 . 5383 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 5384 RFC 6991, DOI 10.17487/RFC6991, July 2013, 5385 . 5387 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. 5388 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", 5389 RFC 7490, DOI 10.17487/RFC7490, April 2015, 5390 . 5392 [RFC7794] Ginsberg, L., Ed., Decraene, B., Previdi, S., Xu, X., and 5393 U. Chunduri, "IS-IS Prefix Attributes for Extended IPv4 5394 and IPv6 Reachability", RFC 7794, DOI 10.17487/RFC7794, 5395 March 2016, . 5397 [RFC7917] Sarkar, P., Ed., Gredler, H., Hegde, S., Litkowski, S., 5398 and B. Decraene, "Advertising Node Administrative Tags in 5399 IS-IS", RFC 7917, DOI 10.17487/RFC7917, July 2016, 5400 . 5402 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 5403 RFC 7950, DOI 10.17487/RFC7950, August 2016, 5404 . 5406 [RFC7981] Ginsberg, L., Previdi, S., and M. Chen, "IS-IS Extensions 5407 for Advertising Router Information", RFC 7981, 5408 DOI 10.17487/RFC7981, October 2016, 5409 . 5411 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 5412 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 5413 . 5415 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 5416 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 5417 May 2017, . 5419 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 5420 Zhang, "YANG Data Model for Key Chains", RFC 8177, 5421 DOI 10.17487/RFC8177, June 2017, 5422 . 5424 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 5425 "Common YANG Data Types for the Routing Area", RFC 8294, 5426 DOI 10.17487/RFC8294, December 2017, 5427 . 5429 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 5430 Access Control Model", STD 91, RFC 8341, 5431 DOI 10.17487/RFC8341, March 2018, 5432 . 5434 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 5435 and R. Wilton, "Network Management Datastore Architecture 5436 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 5437 . 5439 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 5440 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 5441 . 5443 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 5444 Routing Management (NMDA Version)", RFC 8349, 5445 DOI 10.17487/RFC8349, March 2018, 5446 . 5448 [RFC8405] Decraene, B., Litkowski, S., Gredler, H., Lindem, A., 5449 Francois, P., and C. Bowers, "Shortest Path First (SPF) 5450 Back-Off Delay Algorithm for Link-State IGPs", RFC 8405, 5451 DOI 10.17487/RFC8405, June 2018, 5452 . 5454 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 5455 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 5456 . 5458 [RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward, 5459 D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE) 5460 Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March 5461 2019, . 5463 11.2. Informative References 5465 [I-D.ietf-rtgwg-segment-routing-ti-lfa] 5466 Litkowski, S., Bashandy, A., Filsfils, C., Decraene, B., 5467 Francois, P., daniel.voyer@bell.ca, d., Clad, F., and P. 5468 Camarillo, "Topology Independent Fast Reroute using 5469 Segment Routing", draft-ietf-rtgwg-segment-routing-ti- 5470 lfa-01 (work in progress), March 2019. 5472 [RFC7812] Atlas, A., Bowers, C., and G. Enyedi, "An Architecture for 5473 IP/LDP Fast Reroute Using Maximally Redundant Trees (MRT- 5474 FRR)", RFC 7812, DOI 10.17487/RFC7812, June 2016, 5475 . 5477 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 5478 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 5479 . 5481 Appendix A. Example of IS-IS configuration in XML 5483 This section gives an example of configuration of an IS-IS instance 5484 on a device. The example is written in XML. 5486 5487 5488 5489 SLI 5490 192.0.2.1 5491 5492 5493 ISIS-example 5494 5495 5496 5497 isis:isis 5498 5499 5500 5501 true 5502 level-2 5503 87FC.FCDF.4432 5504 49.0001 5505 5506 5507 192.0.2.1 5508 5509 5510 65535 5511 65000 5512 5513 wide-only 5514 5515 5516 111111 5517 5518 5519 5520 ipv4 5521 true 5522 5523 5524 ipv6 5525 true 5526 5527 5528 5529 5530 Loopback0 5531 200 5532 5533 0 5534 5535 true 5536 5537 5538 Eth1 5539 level-2 5540 point-to-point 5541 5542 167890 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 Loopback0 5553 5554 5555 ianaift:softwareLoopback 5556 5557 enabled 5558 5559
5560 192.0.2.1 5561 32 5562
5563
5564 5565
5566 2001:DB8::1 5567 128 5568
5569
5570
5571 5572 Eth1 5573 5574 5575 ianaift:ethernetCsmacd 5576 5577 enabled 5578 5579
5580 198.51.100.1 5581 30 5582
5583
5584 5585
5586 2001:DB8:0:0:FF::1 5587 64 5588
5589
5590
5591
5592
5594 Authors' Addresses 5596 Stephane Litkowski 5597 Cisco Systems 5599 Email: slitkows.ietf@gmail.com 5600 Derek Yeung 5601 Arrcus, Inc 5603 Email: derek@arrcus.com 5605 Acee Lindem 5606 Cisco Systems 5608 Email: acee@cisco.com 5610 Jeffrey Zhang 5611 Juniper Networks 5613 Email: zzhang@juniper.net 5615 Ladislav Lhotka 5616 CZ.NIC 5618 Email: lhotka@nic.cz