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