idnits 2.17.00 (12 Aug 2021) /tmp/idnits30485/draft-ietf-isis-yang-isis-cfg-23.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: ---------------------------------------------------------------------------- == The page length should not exceed 58 lines per page, but there was 1 longer page, the longest (page 96) being 59 lines Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There is 1 instance of too long lines in the document, the longest one being 9 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 254 has weird spacing: '...ce-name ins...' == Line 259 has weird spacing: '...ce-name ins...' == Line 633 has weird spacing: '...--rw af ian...' == Line 732 has weird spacing: '...stem-id sys...' == Line 736 has weird spacing: '...o level lev...' == (3 more instances...) -- The document date (August 09, 2018) is 1381 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: draft-ietf-netmod-routing-cfg has been published as RFC 8022 == Outdated reference: draft-ietf-rtgwg-yang-key-chain has been published as RFC 8177 ** Downref: Normative reference to an Informational RFC: RFC 5443 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 3 errors (**), 0 flaws (~~), 10 warnings (==), 1 comment (--). 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: February 10, 2019 Arrcus, Inc 6 A. Lindem 7 Cisco Systems 8 J. Zhang 9 Juniper Networks 10 L. Lhotka 11 CZ.NIC 12 August 09, 2018 14 YANG Data Model for IS-IS protocol 15 draft-ietf-isis-yang-isis-cfg-23 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", "MAY", and "OPTIONAL" in this 26 document are to be interpreted as described in [RFC2119]. 28 Status of This Memo 30 This Internet-Draft is submitted in full conformance with the 31 provisions of BCP 78 and BCP 79. 33 Internet-Drafts are working documents of the Internet Engineering 34 Task Force (IETF). Note that other groups may also distribute 35 working documents as Internet-Drafts. The list of current Internet- 36 Drafts is at https://datatracker.ietf.org/drafts/current/. 38 Internet-Drafts are draft documents valid for a maximum of six months 39 and may be updated, replaced, or obsoleted by other documents at any 40 time. It is inappropriate to use Internet-Drafts as reference 41 material or to cite them other than as "work in progress." 43 This Internet-Draft will expire on January 17, 2019. 45 Copyright Notice 47 Copyright (c) 2018 IETF Trust and the persons identified as the 48 document authors. All rights reserved. 50 This document is subject to BCP 78 and the IETF Trust's Legal 51 Provisions Relating to IETF Documents 52 (https://trustee.ietf.org/license-info) in effect on the date of 53 publication of this document. Please review these documents 54 carefully, as they describe your rights and restrictions with respect 55 to this document. Code Components extracted from this document must 56 include Simplified BSD License text as described in Section 4.e of 57 the Trust Legal Provisions and are provided without warranty as 58 described in the Simplified BSD License. 60 Table of Contents 62 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 63 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 64 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 65 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9 66 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10 67 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 68 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12 69 2.5. Authentication Parameters . . . . . . . . . . . . . . . . 23 70 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 23 71 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 24 72 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 24 73 2.9. Operational States . . . . . . . . . . . . . . . . . . . 24 74 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 25 75 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 25 76 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 26 77 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 27 78 7. Security Considerations . . . . . . . . . . . . . . . . . . . 95 79 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 96 80 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 96 81 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 96 82 11. Change log for ietf-isis YANG module . . . . . . . . . . . . 96 83 11.1. From version -21 to version -22 . . . . . . . . . . . . 96 84 11.2. From version -20 to version -21 . . . . . . . . . . . . 96 85 11.3. From version -19 to version -20 . . . . . . . . . . . . 96 86 11.4. From version -18 to version -19 . . . . . . . . . . . . 97 87 11.5. From version -17 to version -18 . . . . . . . . . . . . 97 88 11.6. From version -16 to version -17 . . . . . . . . . . . . 97 89 11.7. From version -15 to version -16 . . . . . . . . . . . . 97 90 11.8. From version -14 to version -15 . . . . . . . . . . . . 97 91 11.9. From version -13 to version -14 . . . . . . . . . . . . 98 92 11.10. From version -12 to version -13 . . . . . . . . . . . . 98 93 11.11. From version -09 to version -12 . . . . . . . . . . . . 98 94 11.12. From version -08 to version -09 . . . . . . . . . . . . 98 95 11.13. From version -07 to version -08 . . . . . . . . . . . . 98 96 11.14. From version -05 to version -07 . . . . . . . . . . . . 99 97 11.15. From version -03 to version -05 . . . . . . . . . . . . 99 98 11.16. From version -02 to version -03 . . . . . . . . . . . . 99 99 11.17. From version -01 to version -02 . . . . . . . . . . . . 99 100 11.18. From version -00 to version -01 . . . . . . . . . . . . 100 101 12. Normative References . . . . . . . . . . . . . . . . . . . . 101 102 Appendix A. Example of IS-IS configuration in XML . . . . . . . 102 103 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 104 105 1. Introduction 107 This document defines a YANG data model for IS-IS routing protocol. 109 The data model covers configuration of an IS-IS routing protocol 110 instance as well as operational states. 112 1.1. Tree diagram 114 A simplified graphical representation of the data model is presented 115 in Section 2. 117 The meaning of the symbols in these diagrams is as follows: 119 o Brackets "[" and "]" enclose list keys. 121 o Curly braces "{" and "}" contain names of optional features that 122 make the corresponding node conditional. 124 o Abbreviations before data node names: "rw" means configuration 125 (read-write), and "ro" state data (read-only). 127 o Symbols after data node names: "?" means an optional node and "*" 128 denotes a "list" or "leaf-list". 130 o Parentheses enclose choice and case nodes, and case nodes are also 131 marked with a colon (":"). 133 o Ellipsis ("...") stands for contents of subtrees that are not 134 shown. 136 2. Design of the Data Model 138 The IS-IS YANG module augments the "control-plane-protocol" list in 139 ietf-routing module with specific IS-IS parameters. 141 The module is designed as per NMDA (Network Management Datastore 142 Architecture). 144 The figure below describes the overall structure of the isis YANG 145 module: 147 module: ietf-isis 148 augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: 149 +--ro metric? uint32 150 +--ro tag* uint64 151 +--ro route-type? enumeration 152 augment /if:interfaces/if:interface: 153 +--rw clns-mtu? uint16 154 augment /rt:routing/rt:control-plane-protocols/ 155 | rt:control-plane-protocol: 156 +--rw isis 157 +--rw enable? boolean {admin-control}? 158 +--rw level-type? level 159 +--rw system-id? system-id 160 +--rw maximum-area-addresses? uint8 {maximum-area-addresses}? 161 +--rw area-address* area-address 162 +--rw mpls 163 | +--rw te-rid {te-rid}? 164 | | ... 165 | +--rw ldp 166 | ... 167 +--rw auto-cost {auto-cost}? 168 | +--rw reference-bandwidth? uint32 169 | +--rw enable? boolean 170 +--rw lsp-mtu? uint16 171 +--rw lsp-lifetime? uint16 172 +--rw lsp-refresh? 173 | rt-types:timer-value-seconds16 {lsp-refresh}? 174 +--rw graceful-restart {graceful-restart}? 175 | +--rw enable? boolean 176 | +--rw restart-interval? rt-types:timer-value-seconds16 177 | +--rw helper-enable? boolean 178 +--rw nsr {nsr}? 179 | +--rw enable? boolean 180 +--rw node-tags {node-tag}? 181 | +--rw node-tag* [tag] 182 | ... 183 +--rw authentication 184 | +--rw (authentication-type)? 185 | | ... 186 | +--rw level-1 187 | | ... 189 | +--rw level-2 190 | ... 191 +--rw metric-type 192 | +--rw value? enumeration 193 | +--rw level-1 194 | | ... 195 | +--rw level-2 196 | ... 197 +--rw default-metric 198 | +--rw value? wide-metric 199 | +--rw level-1 200 | | ... 201 | +--rw level-2 202 | ... 203 +--rw afs {nlpid-control}? 204 | +--rw af* [af] 205 | ... 206 +--rw preference 207 | +--rw (granularity)? 208 | ... 209 +--rw overload 210 | +--rw status? boolean 211 +--rw overload-max-metric {overload-max-metric}? 212 | +--rw timeout? rt-types:timer-value-seconds16 213 +--rw fast-reroute {fast-reroute}? 214 | +--rw lfa {lfa}? 215 | +--ro protected-routes 216 | | ... 217 | +--ro unprotected-routes 218 | | ... 219 | +--ro protection-statistics* [frr-protection-method] 220 | ... 221 +--rw spf-control 222 | +--rw paths? uint16 {max-ecmp}? 223 | +--rw ietf-spf-delay {ietf-spf-delay}? 224 | ... 225 +--rw topologies {multi-topology}? 226 | +--rw topology* [name] 227 | ... 228 +--rw interfaces 229 | +--rw interface* [name] 230 | ... 231 +--ro spf-log 232 | +--ro event* [id] 233 | ... 234 +--ro lsp-log 235 | +--ro event* [id] 236 | ... 238 +--ro hostnames 239 | +--ro hostname* [system-id] 240 | ... 241 +--ro database 242 | +--ro level-db* [level] 243 | ... 244 +--ro local-rib 245 | +--ro route* [prefix] 246 | ... 247 +--ro system-counters 248 +--ro level* [level] 249 ... 251 rpcs: 252 +---x clear-adjacency 253 | +---w input 254 | +---w routing-protocol-instance-name instance-state-ref 255 | +---w level? level 256 | +---w interface? string 257 +---x clear-database 258 +---w input 259 +---w routing-protocol-instance-name instance-state-ref 260 +---w level? level 262 notifications: 263 +---n database-overload 264 | +--ro routing-instance? string 265 | +--ro routing-protocol-name? string 266 | +--ro isis-level? level 267 | +--ro overload? enumeration 268 +---n lsp-too-large 269 | +--ro routing-instance? string 270 | +--ro routing-protocol-name? string 271 | +--ro isis-level? level 272 | +--ro interface-name? string 273 | +--ro interface-level? level 274 | +--ro extended-circuit-id? extended-circuit-id 275 | +--ro pdu-size? uint32 276 | +--ro lsp-id? lsp-id 277 +---n if-state-change 278 | +--ro routing-instance? string 279 | +--ro routing-protocol-name? string 280 | +--ro isis-level? level 281 | +--ro interface-name? string 282 | +--ro interface-level? level 283 | +--ro extended-circuit-id? extended-circuit-id 284 | +--ro state? if-state-type 285 +---n corrupted-lsp-detected 286 | +--ro routing-instance? string 287 | +--ro routing-protocol-name? string 288 | +--ro isis-level? level 289 | +--ro lsp-id? lsp-id 290 +---n attempt-to-exceed-max-sequence 291 | +--ro routing-instance? string 292 | +--ro routing-protocol-name? string 293 | +--ro isis-level? level 294 | +--ro lsp-id? lsp-id 295 +---n id-len-mismatch 296 | +--ro routing-instance? string 297 | +--ro routing-protocol-name? string 298 | +--ro isis-level? level 299 | +--ro interface-name? string 300 | +--ro interface-level? level 301 | +--ro extended-circuit-id? extended-circuit-id 302 | +--ro pdu-field-len? uint8 303 | +--ro raw-pdu? binary 304 +---n max-area-addresses-mismatch 305 | +--ro routing-instance? string 306 | +--ro routing-protocol-name? string 307 | +--ro isis-level? level 308 | +--ro interface-name? string 309 | +--ro interface-level? level 310 | +--ro extended-circuit-id? extended-circuit-id 311 | +--ro max-area-addresses? uint8 312 | +--ro raw-pdu? binary 313 +---n own-lsp-purge 314 | +--ro routing-instance? string 315 | +--ro routing-protocol-name? string 316 | +--ro isis-level? level 317 | +--ro interface-name? string 318 | +--ro interface-level? level 319 | +--ro extended-circuit-id? extended-circuit-id 320 | +--ro lsp-id? lsp-id 321 +---n sequence-number-skipped 322 | +--ro routing-instance? string 323 | +--ro routing-protocol-name? string 324 | +--ro isis-level? level 325 | +--ro interface-name? string 326 | +--ro interface-level? level 327 | +--ro extended-circuit-id? extended-circuit-id 328 | +--ro lsp-id? lsp-id 329 +---n authentication-type-failure 330 | +--ro routing-instance? string 331 | +--ro routing-protocol-name? string 332 | +--ro isis-level? level 333 | +--ro interface-name? string 334 | +--ro interface-level? level 335 | +--ro extended-circuit-id? extended-circuit-id 336 | +--ro raw-pdu? binary 337 +---n authentication-failure 338 | +--ro routing-instance? string 339 | +--ro routing-protocol-name? string 340 | +--ro isis-level? level 341 | +--ro interface-name? string 342 | +--ro interface-level? level 343 | +--ro extended-circuit-id? extended-circuit-id 344 | +--ro raw-pdu? binary 345 +---n version-skew 346 | +--ro routing-instance? string 347 | +--ro routing-protocol-name? string 348 | +--ro isis-level? level 349 | +--ro interface-name? string 350 | +--ro interface-level? level 351 | +--ro extended-circuit-id? extended-circuit-id 352 | +--ro protocol-version? uint8 353 | +--ro raw-pdu? binary 354 +---n area-mismatch 355 | +--ro routing-instance? string 356 | +--ro routing-protocol-name? string 357 | +--ro isis-level? level 358 | +--ro interface-name? string 359 | +--ro interface-level? level 360 | +--ro extended-circuit-id? extended-circuit-id 361 | +--ro raw-pdu? binary 362 +---n rejected-adjacency 363 | +--ro routing-instance? string 364 | +--ro routing-protocol-name? string 365 | +--ro isis-level? level 366 | +--ro interface-name? string 367 | +--ro interface-level? level 368 | +--ro extended-circuit-id? extended-circuit-id 369 | +--ro raw-pdu? binary 370 | +--ro reason? string 371 +---n protocols-supported-mismatch 372 | +--ro routing-instance? string 373 | +--ro routing-protocol-name? string 374 | +--ro isis-level? level 375 | +--ro interface-name? string 376 | +--ro interface-level? level 377 | +--ro extended-circuit-id? extended-circuit-id 378 | +--ro raw-pdu? binary 379 | +--ro protocols* uint8 380 +---n lsp-error-detected 381 | +--ro routing-instance? string 382 | +--ro routing-protocol-name? string 383 | +--ro isis-level? level 384 | +--ro interface-name? string 385 | +--ro interface-level? level 386 | +--ro extended-circuit-id? extended-circuit-id 387 | +--ro lsp-id? lsp-id 388 | +--ro raw-pdu? binary 389 | +--ro error-offset? uint32 390 | +--ro tlv-type? uint8 391 +---n adjacency-state-change 392 | +--ro routing-instance? string 393 | +--ro routing-protocol-name? string 394 | +--ro isis-level? level 395 | +--ro interface-name? string 396 | +--ro interface-level? level 397 | +--ro extended-circuit-id? extended-circuit-id 398 | +--ro neighbor? string 399 | +--ro neighbor-system-id? system-id 400 | +--ro state? adj-state-type 401 | +--ro reason? string 402 +---n lsp-received 403 | +--ro routing-instance? string 404 | +--ro routing-protocol-name? string 405 | +--ro isis-level? level 406 | +--ro interface-name? string 407 | +--ro interface-level? level 408 | +--ro extended-circuit-id? extended-circuit-id 409 | +--ro lsp-id? lsp-id 410 | +--ro sequence? uint32 411 | +--ro received-timestamp? yang:timestamp 412 | +--ro neighbor-system-id? system-id 413 +---n lsp-generation 414 +--ro routing-instance? string 415 +--ro routing-protocol-name? string 416 +--ro isis-level? level 417 +--ro lsp-id? lsp-id 418 +--ro sequence? uint32 419 +--ro send-timestamp? yang:timestamp 421 2.1. IS-IS Configuration 423 The IS-IS configuration container is divided in: 425 o Global parameters. 427 o Per interface configuration (see Section 2.4). 429 Additional modules may be created this to support any additional 430 parameters. These additional modules should augment the ietf-isis 431 module. 433 The model implements features, thus some of the configuration 434 statement becomes optional. As an example, the ability to control 435 the administrative state of a particular IS-IS instance is optional. 436 By advertising the feature "admin-control", a device communicates to 437 the client that it supports the ability to shutdown a particular IS- 438 IS instance. 440 The global configuration contains usual IS-IS parameters such as lsp- 441 mtu, lsp-lifetime, lsp-refresh, default-metric... 443 2.2. Multitopology Parameters 445 The model supports multitopology (MT) IS-IS as defined in [RFC5120]. 447 The "topologies" container is used to enable support of MT 448 extensions. 450 The "name" used in the topology list should refer to an existing RIB 451 of the device. 453 Some specific parameters could be defined on a per topology basis 454 both at global level and at interface level: for example, an 455 interface metric can be defined per topology. 457 Multiple address families (like IPv4 or IPv6) can also be activated 458 within the default topology. This can be achieved using the "afs" 459 container (requiring "nlpid-control" feature to be advertised). 461 2.3. Per-Level Parameters 463 Some parameters allow a per level configuration. In this case, the 464 parameter is modeled as a container with three configuration 465 locations: 467 o a top level container: corresponds to level-1-2, so the 468 configuration applies to both levels. 470 o a level-1 container: corresponds to level-1 specific parameters. 472 o a level-2 container: corresponds to level-2 specific parameters. 474 +--rw priority 475 | +--rw value? uint8 476 | +--rw level-1 477 | | +--rw value? uint8 478 | +--rw level-2 479 | +--rw value? uint8 481 Example: 483 484 250 485 486 100 487 488 489 200 490 491 493 An implementation SHOULD prefer a level specific parameter over a 494 level-all parameter. As example, if the priority is 100 for the 495 level-1, 200 for the level-2 and 250 for the top level configuration, 496 the implementation should use 100 for the level-1 and 200 for the 497 level-2. 499 Some parameters like "overload bit" and "route preference" are not 500 modeled to support a per level configuration. If an implementation 501 supports per level configuration for such parameter, this 502 implementation SHOULD augment the current model by adding both 503 level-1 and level-2 containers and SHOULD reuse existing 504 configuration groupings. 506 Example of augmentation: 508 augment "/rt:routing/" + 509 "rt:control-plane-protocols/rt:control-plane-protocol"+ 510 "/isis:isis/isis:overload" { 511 when "rt:type = 'isis:isis'" { 512 description 513 "This augment IS-IS routing protocol when used"; 514 } 515 description 516 "This augments IS-IS overload configuration 517 with per level configuration."; 519 container level-1 { 520 uses isis:overload-global-cfg; 521 description 522 "Level 1 configuration."; 523 } 524 container level-2 { 525 uses isis:overload-global-cfg; 526 description 527 "Level 2 configuration."; 528 } 530 } 532 If an implementation does not support per level configuration for a 533 parameter modeled with per level configuration, the implementation 534 SHOULD advertise a deviation to announce the non support of the 535 level-1 and level-2 containers. 537 Finally, if an implementation supports per level configuration but 538 does not support the level-1-2 configuration, it SHOULD also 539 advertise a deviation. 541 2.4. Per-Interface Parameters 543 The per-interface section of the IS-IS instance describes the 544 interface specific parameters. 546 The interface is modeled as a reference to an existing interface 547 defined in the "ietf-interfaces" YANG model. 549 Each interface has some interface-specific parameters that may have a 550 different per level value as described in previous section. An 551 interface-specific parameter always override an IS-IS global 552 parameter. 554 Some parameters like hello-padding are defined as containers to allow 555 easy extension by vendor specific modules. 557 +--rw interfaces 558 | +--rw interface* [name] 559 | +--rw name if:interface-ref 560 | +--rw level-type? level 561 | +--rw lsp-pacing-interval? 562 | | rt-types:timer-value-milliseconds 563 | +--rw lsp-retransmit-interval? 564 | | rt-types:timer-value-seconds16 565 | +--rw passive? boolean 566 | +--rw csnp-interval? 567 | | rt-types:timer-value-seconds16 568 | +--rw hello-padding 569 | | +--rw enable? boolean 570 | +--rw mesh-group-enable? mesh-group-state 571 | +--rw mesh-group? uint8 572 | +--rw interface-type? interface-type 573 | +--rw enable? boolean {admin-control}? 574 | +--rw tag* uint32 {prefix-tag}? 575 | +--rw tag64* uint64 {prefix-tag64}? 576 | +--rw node-flag? boolean {node-flag}? 577 | +--rw hello-authentication 578 | | +--rw (authentication-type)? 579 | | | +--:(key-chain) {key-chain}? 580 | | | | +--rw key-chain? key-chain:key-chain-ref 581 | | | +--:(password) 582 | | | +--rw key? string 583 | | | +--rw crypto-algorithm? identityref 584 | | +--rw level-1 585 | | | +--rw (authentication-type)? 586 | | | +--:(key-chain) {key-chain}? 587 | | | | +--rw key-chain? key-chain:key-chain-ref 588 | | | +--:(password) 589 | | | +--rw key? string 590 | | | +--rw crypto-algorithm? identityref 591 | | +--rw level-2 592 | | +--rw (authentication-type)? 593 | | +--:(key-chain) {key-chain}? 594 | | | +--rw key-chain? key-chain:key-chain-ref 595 | | +--:(password) 596 | | +--rw key? string 597 | | +--rw crypto-algorithm? identityref 598 | +--rw hello-interval 599 | | +--rw value? rt-types:timer-value-seconds16 600 | | +--rw level-1 601 | | | +--rw value? rt-types:timer-value-seconds16 602 | | +--rw level-2 603 | | +--rw value? rt-types:timer-value-seconds16 604 | +--rw hello-multiplier 605 | | +--rw value? uint16 606 | | +--rw level-1 607 | | | +--rw value? uint16 608 | | +--rw level-2 609 | | +--rw value? uint16 610 | +--rw priority 611 | | +--rw value? uint8 612 | | +--rw level-1 613 | | | +--rw value? uint8 614 | | +--rw level-2 615 | | +--rw value? uint8 616 | +--rw metric 617 | | +--rw value? wide-metric 618 | | +--rw level-1 619 | | | +--rw value? wide-metric 620 | | +--rw level-2 621 | | +--rw value? wide-metric 622 | +--rw bfd {bfd}? 623 | | +--rw enable? boolean 624 | | +--rw local-multiplier? multiplier 625 | | +--rw (interval-config-type)? 626 | | +--:(tx-rx-intervals) 627 | | | +--rw desired-min-tx-interval? uint32 628 | | | +--rw required-min-rx-interval? uint32 629 | | +--:(single-interval) {single-minimum-interval}? 630 | | +--rw min-interval? uint32 631 | +--rw afs {nlpid-control}? 632 | | +--rw af* [af] 633 | | +--rw af iana-rt-types:address-family 634 | +--rw mpls 635 | | +--rw ldp 636 | | +--rw igp-sync? boolean {ldp-igp-sync}? 637 | +--rw fast-reroute {fast-reroute}? 638 | | +--rw lfa {lfa}? 639 | | +--rw candidate-disabled? boolean 640 | | +--rw enable? boolean 641 | | +--rw remote-lfa {remote-lfa}? 642 | | | +--rw enable? boolean 643 | | +--rw level-1 644 | | | +--rw candidate-disabled? boolean 645 | | | +--rw enable? boolean 646 | | | +--rw remote-lfa {remote-lfa}? 647 | | | +--rw enable? boolean 648 | | +--rw level-2 649 | | +--rw candidate-disabled? boolean 650 | | +--rw enable? boolean 651 | | +--rw remote-lfa {remote-lfa}? 652 | | +--rw enable? boolean 653 | +--rw topologies {multi-topology}? 654 | | +--rw topology* [name] 655 | | +--rw name 656 | | -> ../../../../../../../../rt:ribs/rib/name 657 | | +--rw metric 658 | | +--rw value? wide-metric 659 | | +--rw level-1 660 | | | +--rw value? wide-metric 661 | | +--rw level-2 662 | | +--rw value? wide-metric 663 | +--ro adjacencies 664 | | +--ro adjacency* [] 665 | | +--ro neighbor-sys-type? level 666 | | +--ro neighbor-sysid? system-id 667 | | +--ro neighbor-extended-circuit-id? 668 | | extended-circuit-id 669 | | +--ro neighbor-snpa? snpa 670 | | +--ro usage? level 671 | | +--ro hold-timer? 672 | | rt-types:timer-value-seconds16 673 | | +--ro neighbor-priority? uint8 674 | | +--ro lastuptime? yang:timestamp 675 | | +--ro state? adj-state-type 676 | +--ro event-counters 677 | | +--ro adjacency-changes? uint32 678 | | +--ro adjacency-number? uint32 679 | | +--ro init-fails? uint32 680 | | +--ro adjacency-rejects? uint32 681 | | +--ro id-len-mismatch? uint32 682 | | +--ro max-area-addresses-mismatch? uint32 683 | | +--ro authentication-type-fails? uint32 684 | | +--ro authentication-fails? uint32 685 | | +--ro lan-dis-changes? uint32 686 | +--ro packet-counters 687 | +--ro level* [level] 688 | +--ro level level-number 689 | +--ro iih 690 | | +--ro in? uint32 691 | | +--ro out? uint32 692 | +--ro ish 693 | | +--ro in? uint32 694 | | +--ro out? uint32 695 | +--ro esh 696 | | +--ro in? uint32 697 | | +--ro out? uint32 698 | +--ro lsp 699 | | +--ro in? uint32 700 | | +--ro out? uint32 701 | +--ro psnp 702 | | +--ro in? uint32 703 | | +--ro out? uint32 704 | +--ro csnp 705 | | +--ro in? uint32 706 | | +--ro out? uint32 707 | +--ro unknown 708 | +--ro in? uint32 709 | +--ro out? uint32 710 +--ro spf-log 711 | +--ro event* [id] 712 | +--ro id uint32 713 | +--ro spf-type? enumeration 714 | +--ro level? level-number 715 | +--ro schedule-timestamp? yang:timestamp 716 | +--ro start-timestamp? yang:timestamp 717 | +--ro end-timestamp? yang:timestamp 718 | +--ro trigger-lsp* [lsp] 719 | +--ro lsp lsp-id 720 | +--ro sequence? uint32 721 +--ro lsp-log 722 | +--ro event* [id] 723 | +--ro id uint32 724 | +--ro level? level-number 725 | +--ro lsp 726 | | +--ro lsp? lsp-id 727 | | +--ro sequence? uint32 728 | +--ro received-timestamp? yang:timestamp 729 | +--ro change? identityref 730 +--ro hostnames 731 | +--ro hostname* [system-id] 732 | +--ro system-id system-id 733 | +--ro hostname? string 734 +--ro database 735 | +--ro level-db* [level] 736 | +--ro level level-number 737 | +--ro lsp* [lsp-id] 738 | +--ro decoded-completed? boolean 739 | +--ro raw-data? yang:hex-string 740 | +--ro lsp-id lsp-id 741 | +--ro checksum? uint16 742 | +--ro remaining-lifetime? uint16 743 | +--ro sequence? uint32 744 | +--ro attributes? bits 745 | +--ro ipv4-addresses* inet:ipv4-address 746 | +--ro ipv6-addresses* inet:ipv6-address 747 | +--ro ipv4-te-routerid? inet:ipv4-address 748 | +--ro ipv6-te-routerid? inet:ipv6-address 749 | +--ro protocol-supported* uint8 750 | +--ro dynamic-hostname? string 751 | +--ro authentication 752 | | +--ro authentication-type? string 753 | | +--ro authentication-key? string 754 | +--ro mt-entries 755 | | +--ro topology* [] 756 | | +--ro MT-ID? uint16 757 | | +--ro attributes? bits 758 | +--ro router-capabilities* [] 759 | | +--ro flags? bits 760 | | +--ro node-tags {node-tag}? 761 | | | +--ro node-tag* [] 762 | | | +--ro tag? uint32 763 | | +--ro binary? binary 764 | +--ro is-neighbor 765 | | +--ro neighbor* [] 766 | | +--ro neighbor-id? system-id 767 | | +--ro i-e? boolean 768 | | +--ro default-metric? std-metric 769 | | +--ro delay-metric 770 | | | +--ro metric? std-metric 771 | | | +--ro supported? boolean 772 | | +--ro expense-metric 773 | | | +--ro metric? std-metric 774 | | | +--ro supported? boolean 775 | | +--ro error-metric 776 | | +--ro metric? std-metric 777 | | +--ro supported? boolean 778 | +--ro extended-is-neighbor 779 | | +--ro neighbor* [] 780 | | +--ro neighbor-id? system-id 781 | | +--ro metric? wide-metric 782 | +--ro ipv4-internal-reachability 783 | | +--ro prefixes* [] 784 | | +--ro up-down? boolean 785 | | +--ro i-e? boolean 786 | | +--ro ip-prefix? inet:ipv4-address 787 | | +--ro prefix-len? uint8 788 | | +--ro default-metric? std-metric 789 | | +--ro delay-metric 790 | | | +--ro metric? std-metric 791 | | | +--ro supported? boolean 792 | | +--ro expense-metric 793 | | | +--ro metric? std-metric 794 | | | +--ro supported? boolean 795 | | +--ro error-metric 796 | | +--ro metric? std-metric 797 | | +--ro supported? boolean 798 | +--ro ipv4-external-reachability 799 | | +--ro prefixes* [] 800 | | +--ro up-down? boolean 801 | | +--ro i-e? boolean 802 | | +--ro ip-prefix? inet:ipv4-address 803 | | +--ro prefix-len? uint8 804 | | +--ro default-metric? std-metric 805 | | +--ro delay-metric 806 | | | +--ro metric? std-metric 807 | | | +--ro supported? boolean 808 | | +--ro expense-metric 809 | | | +--ro metric? std-metric 810 | | | +--ro supported? boolean 811 | | +--ro error-metric 812 | | +--ro metric? std-metric 813 | | +--ro supported? boolean 814 | +--ro extended-ipv4-reachability 815 | | +--ro prefixes* [] 816 | | +--ro up-down? boolean 817 | | +--ro ip-prefix? inet:ipv4-address 818 | | +--ro prefix-len? uint8 819 | | +--ro metric? wide-metric 820 | | +--ro tag* uint32 821 | | +--ro tag64* uint64 822 | | +--ro external-prefix-flag? boolean 823 | | +--ro readvertisement-flag? boolean 824 | | +--ro node-flag? boolean 825 | | +--ro ipv4-source-router-id? inet:ipv4-address 826 | | +--ro ipv6-source-router-id? inet:ipv6-address 827 | +--ro mt-is-neighbor 828 | | +--ro neighbor* [] 829 | | +--ro mt-id? uint16 830 | | +--ro neighbor-id? system-id 831 | | +--ro metric? wide-metric 832 | +--ro mt-extended-ipv4-reachability 833 | | +--ro prefixes* [] 834 | | +--ro mt-id? uint16 835 | | +--ro up-down? boolean 836 | | +--ro ip-prefix? inet:ipv4-address 837 | | +--ro prefix-len? uint8 838 | | +--ro metric? wide-metric 839 | | +--ro tag* uint32 840 | | +--ro tag64* uint64 841 | | +--ro external-prefix-flag? boolean 842 | | +--ro readvertisement-flag? boolean 843 | | +--ro node-flag? boolean 844 | | +--ro ipv4-source-router-id? inet:ipv4-address 845 | | +--ro ipv6-source-router-id? inet:ipv6-address 846 | +--ro mt-ipv6-reachability 847 | | +--ro prefixes* [] 848 | | +--ro MT-ID? uint16 849 | | +--ro up-down? boolean 850 | | +--ro ip-prefix? inet:ipv6-address 851 | | +--ro prefix-len? uint8 852 | | +--ro metric? wide-metric 853 | | +--ro tag* uint32 854 | | +--ro tag64* uint64 855 | | +--ro external-prefix-flag? boolean 856 | | +--ro readvertisement-flag? boolean 857 | | +--ro node-flag? boolean 858 | | +--ro ipv4-source-router-id? inet:ipv4-address 859 | | +--ro ipv6-source-router-id? inet:ipv6-address 860 | +--ro ipv6-reachability 861 | +--ro prefixes* [] 862 | +--ro up-down? boolean 863 | +--ro ip-prefix? inet:ipv6-address 864 | +--ro prefix-len? uint8 865 | +--ro metric? wide-metric 866 | +--ro tag* uint32 867 | +--ro tag64* uint64 868 | +--ro external-prefix-flag? boolean 869 | +--ro readvertisement-flag? boolean 870 | +--ro node-flag? boolean 871 | +--ro ipv4-source-router-id? inet:ipv4-address 872 | +--ro ipv6-source-router-id? inet:ipv6-address 873 +--ro local-rib 874 | +--ro route* [prefix] 875 | +--ro prefix inet:ip-prefix 876 | +--ro next-hops 877 | | +--ro next-hop* [next-hop] 878 | | +--ro outgoing-interface? if:interface-ref 879 | | +--ro next-hop inet:ip-address 880 | +--ro metric? uint32 881 | +--ro level? level-number 882 | +--ro route-tag? uint32 883 +--ro system-counters 884 +--ro level* [level] 885 +--ro level level-number 886 +--ro corrupted-lsps? uint32 887 +--ro authentication-type-fails? uint32 888 +--ro authentication-fails? uint32 889 +--ro database-overload? uint32 890 +--ro own-lsp-purge? uint32 891 +--ro manual-address-drop-from-area? uint32 892 +--ro max-sequence? uint32 893 +--ro sequence-number-skipped? uint32 894 +--ro id-len-mismatch? uint32 895 +--ro partition-changes? uint32 896 +--ro lsp-errors? uint32 897 +--ro spf-runs? uint32 899 rpcs: 900 +---x clear-adjacency 901 | +---w input 902 | +---w routing-protocol-instance-name instance-state-ref 903 | +---w level? level 904 | +---w interface? string 905 +---x clear-database 906 +---w input 907 +---w routing-protocol-instance-name instance-state-ref 908 +---w level? level 910 notifications: 911 +---n database-overload 912 | +--ro routing-instance? string 913 | +--ro routing-protocol-name? string 914 | +--ro isis-level? level 915 | +--ro overload? enumeration 916 +---n lsp-too-large 917 | +--ro routing-instance? string 918 | +--ro routing-protocol-name? string 919 | +--ro isis-level? level 920 | +--ro interface-name? string 921 | +--ro interface-level? level 922 | +--ro extended-circuit-id? extended-circuit-id 923 | +--ro pdu-size? uint32 924 | +--ro lsp-id? lsp-id 925 +---n if-state-change 926 | +--ro routing-instance? string 927 | +--ro routing-protocol-name? string 928 | +--ro isis-level? level 929 | +--ro interface-name? string 930 | +--ro interface-level? level 931 | +--ro extended-circuit-id? extended-circuit-id 932 | +--ro state? if-state-type 933 +---n corrupted-lsp-detected 934 | +--ro routing-instance? string 935 | +--ro routing-protocol-name? string 936 | +--ro isis-level? level 937 | +--ro lsp-id? lsp-id 938 +---n attempt-to-exceed-max-sequence 939 | +--ro routing-instance? string 940 | +--ro routing-protocol-name? string 941 | +--ro isis-level? level 942 | +--ro lsp-id? lsp-id 943 +---n id-len-mismatch 944 | +--ro routing-instance? string 945 | +--ro routing-protocol-name? string 946 | +--ro isis-level? level 947 | +--ro interface-name? string 948 | +--ro interface-level? level 949 | +--ro extended-circuit-id? extended-circuit-id 950 | +--ro pdu-field-len? uint8 951 | +--ro raw-pdu? binary 952 +---n max-area-addresses-mismatch 953 | +--ro routing-instance? string 954 | +--ro routing-protocol-name? string 955 | +--ro isis-level? level 956 | +--ro interface-name? string 957 | +--ro interface-level? level 958 | +--ro extended-circuit-id? extended-circuit-id 959 | +--ro max-area-addresses? uint8 960 | +--ro raw-pdu? binary 961 +---n own-lsp-purge 962 | +--ro routing-instance? string 963 | +--ro routing-protocol-name? string 964 | +--ro isis-level? level 965 | +--ro interface-name? string 966 | +--ro interface-level? level 967 | +--ro extended-circuit-id? extended-circuit-id 968 | +--ro lsp-id? lsp-id 969 +---n sequence-number-skipped 970 | +--ro routing-instance? string 971 | +--ro routing-protocol-name? string 972 | +--ro isis-level? level 973 | +--ro interface-name? string 974 | +--ro interface-level? level 975 | +--ro extended-circuit-id? extended-circuit-id 976 | +--ro lsp-id? lsp-id 977 +---n authentication-type-failure 978 | +--ro routing-instance? string 979 | +--ro routing-protocol-name? string 980 | +--ro isis-level? level 981 | +--ro interface-name? string 982 | +--ro interface-level? level 983 | +--ro extended-circuit-id? extended-circuit-id 984 | +--ro raw-pdu? binary 985 +---n authentication-failure 986 | +--ro routing-instance? string 987 | +--ro routing-protocol-name? string 988 | +--ro isis-level? level 989 | +--ro interface-name? string 990 | +--ro interface-level? level 991 | +--ro extended-circuit-id? extended-circuit-id 992 | +--ro raw-pdu? binary 993 +---n version-skew 994 | +--ro routing-instance? string 995 | +--ro routing-protocol-name? string 996 | +--ro isis-level? level 997 | +--ro interface-name? string 998 | +--ro interface-level? level 999 | +--ro extended-circuit-id? extended-circuit-id 1000 | +--ro protocol-version? uint8 1001 | +--ro raw-pdu? binary 1002 +---n area-mismatch 1003 | +--ro routing-instance? string 1004 | +--ro routing-protocol-name? string 1005 | +--ro isis-level? level 1006 | +--ro interface-name? string 1007 | +--ro interface-level? level 1008 | +--ro extended-circuit-id? extended-circuit-id 1009 | +--ro raw-pdu? binary 1010 +---n rejected-adjacency 1011 | +--ro routing-instance? string 1012 | +--ro routing-protocol-name? string 1013 | +--ro isis-level? level 1014 | +--ro interface-name? string 1015 | +--ro interface-level? level 1016 | +--ro extended-circuit-id? extended-circuit-id 1017 | +--ro raw-pdu? binary 1018 | +--ro reason? string 1019 +---n protocols-supported-mismatch 1020 | +--ro routing-instance? string 1021 | +--ro routing-protocol-name? string 1022 | +--ro isis-level? level 1023 | +--ro interface-name? string 1024 | +--ro interface-level? level 1025 | +--ro extended-circuit-id? extended-circuit-id 1026 | +--ro raw-pdu? binary 1027 | +--ro protocols* uint8 1028 +---n lsp-error-detected 1029 | +--ro routing-instance? string 1030 | +--ro routing-protocol-name? string 1031 | +--ro isis-level? level 1032 | +--ro interface-name? string 1033 | +--ro interface-level? level 1034 | +--ro extended-circuit-id? extended-circuit-id 1035 | +--ro lsp-id? lsp-id 1036 | +--ro raw-pdu? binary 1037 | +--ro error-offset? uint32 1038 | +--ro tlv-type? uint8 1039 +---n adjacency-state-change 1040 | +--ro routing-instance? string 1041 | +--ro routing-protocol-name? string 1042 | +--ro isis-level? level 1043 | +--ro interface-name? string 1044 | +--ro interface-level? level 1045 | +--ro extended-circuit-id? extended-circuit-id 1046 | +--ro neighbor? string 1047 | +--ro neighbor-system-id? system-id 1048 | +--ro state? adj-state-type 1049 | +--ro reason? string 1050 +---n lsp-received 1051 | +--ro routing-instance? string 1052 | +--ro routing-protocol-name? string 1053 | +--ro isis-level? level 1054 | +--ro interface-name? string 1055 | +--ro interface-level? level 1056 | +--ro extended-circuit-id? extended-circuit-id 1057 | +--ro lsp-id? lsp-id 1058 | +--ro sequence? uint32 1059 | +--ro received-timestamp? yang:timestamp 1060 | +--ro neighbor-system-id? system-id 1061 +---n lsp-generation 1062 +--ro routing-instance? string 1063 +--ro routing-protocol-name? string 1064 +--ro isis-level? level 1065 +--ro lsp-id? lsp-id 1066 +--ro sequence? uint32 1067 +--ro send-timestamp? yang:timestamp 1069 2.5. Authentication Parameters 1071 The module enables authentication configuration through the IETF key- 1072 chain module ([I-D.ietf-rtgwg-yang-key-chain]). The IS-IS module 1073 imports the "ietf-key-chain" module and reuses some groupings to 1074 allow global and per interface configuration of authentication. If a 1075 global authentication is configured, an implementation SHOULD 1076 authenticate PSNPs, CSNPs and LSPs with the authentication parameters 1077 supplied. The authentication of hello PDUs can be activated on a per 1078 interface basis. 1080 2.6. IGP/LDP synchronization 1082 [RFC5443] defines a mechanism where IGP needs to be synchronized with 1083 LDP. An "ldp-igp-sync" feature has been defined in the model to 1084 support this mechanism. The "mpls/ldp/igp-sync" leaf under 1085 "interface" allows activation of the mechanism on a per interface 1086 basis. The "mpls/ldp/igp-sync" container in the global configuration 1087 is empty on purpose and is not required for the activation. The goal 1088 of this empty container is to allow easy augmentation with additional 1089 parameters like timers for example. 1091 2.7. ISO parameters 1093 As IS-IS protocol is based on ISO protocol suite, some ISO parameters 1094 may be required. 1096 This module augments interface configuration model to support ISO 1097 configuration parameters. 1099 The clns-mtu can be defined under the interface. 1101 2.8. IP FRR 1103 This YANG model supports LFA ([RFC5286]) and remote LFA ([RFC7490]) 1104 as IP FRR techniques. The "fast-reroute" container may be augmented 1105 by other models to support other IPFRR flavors (MRT, TILFA ...). 1107 The current version of the model supports activation of LFA and 1108 remote LFA at interface only. The global "lfa" container is present 1109 but kept empty to allow augmentation with vendor specific properties 1110 like policies. 1112 Remote LFA is considered as a child of LFA. Remote LFA cannot be 1113 enabled if LFA is not enabled. 1115 The "candidate-disabled" allows to mark an interface to not be used 1116 as a backup. 1118 2.9. Operational States 1120 Operational states are provided in the module in various places: 1122 o system-counters: provides statistical informations about the 1123 global system. 1125 o interface : provides configuration state informations for each 1126 interface. 1128 o adjacencies: provides state informations about current IS-IS 1129 adjacencies. 1131 o spf-log: provides informations about SPF events on the node. This 1132 SHOULD be implemented as a wrapping buffer. 1134 o lsp-log: provides informations about LSP events on the node 1135 (reception of an LSP or modification of local LSP). This SHOULD 1136 be implemented as a wrapping buffer and an implementation MAY 1137 decide to log refresh LSPs or not. 1139 o local-rib: provides the IS-IS internal routing table view. 1141 o database: provides details on the current LSDB. 1143 o hostnames: provides informations about system-id to hostname 1144 mappings. 1146 o fast-reroute: provides informations about IP FRR. 1148 3. RPC Operations 1150 The "ietf-isis" module defines two RPC operations: 1152 o clear-isis-database: reset the content of a particular IS-IS 1153 database and restart database synchronization with the neighbors. 1155 o clear-isis-adjacency: restart a particular set of IS-IS 1156 adjacencies. 1158 4. Notifications 1160 The "ietf-isis" module introduces some notifications : 1162 database-overload : raised when overload condition is changed. 1164 lsp-too-large : raised when the system tries to propagate a too 1165 large PDU. 1167 corrupted-lsp-detected : raised when the system find that an LSP 1168 that was stored in memory has become corrupted. 1170 attempt-to-exceed-max-sequence : This notification is sent when 1171 the system wraps the 32-bit sequence counter of an LSP. 1173 id-len-mismatch : This notification is sent when we receive a PDU 1174 with a different value for the System ID length. 1176 max-area-addresses-mismatch : This notification is sent when we 1177 receive a PDU with a different value for the Maximum Area 1178 Addresses. 1180 own-lsp-purge : This notification is sent when the system receives 1181 a PDU with its own system ID and zero age. 1183 sequence-number-skipped : This notification is sent when the 1184 system receives a PDU with its own system ID and different 1185 contents. The system has to reissue the LSP with a higher 1186 sequence number. 1188 authentication-type-failure : This notification is sent when the 1189 system receives a PDU with the wrong authentication type field. 1191 authentication-failure : This notification is sent when the system 1192 receives a PDU with the wrong authentication information. 1194 version-skew : This notification is sent when the system receives 1195 a PDU with a different protocol version number. 1197 area-mismatch : This notification is sent when the system receives 1198 a Hello PDU from an IS that does not share any area address. 1200 rejected-adjacency : This notification is sent when the system 1201 receives a Hello PDU from an IS but does not establish an 1202 adjacency for some reason. 1204 protocols-supported-mismatch : This notification is sent when the 1205 system receives a non pseudonode LSP that has no matching protocol 1206 supported. 1208 lsp-error-detected : This notification is sent when the system 1209 receives a LSP with a parse error. 1211 adjacency-change : This notification is sent when an IS-IS 1212 adjacency moves to Up state or to Down state. 1214 lsp-received : This notification is sent when a LSP is received. 1216 lsp-generation : This notification is sent when a LSP is 1217 regenerated. 1219 5. Interaction with Other YANG Modules 1221 The "isis" configuration container augments the "/rt:routing/ 1222 rt:control-plane-protocols/control-plane-protocol" container of the 1223 ietf-routing [I-D.ietf-netmod-routing-cfg] module by defining IS-IS 1224 specific parameters. 1226 The "isis" module augments "/if:interfaces/if:interface" with ISO 1227 specific parameters. 1229 The "isis" operational state container augments the "/rt:routing- 1230 state/rt:control-plane-protocols/control-plane-protocol" container of 1231 the ietf-routing module by defining IS-IS specific operational 1232 states. 1234 Some IS-IS specific routes attributes are added to route objects of 1235 the ietf-routing module by augmenting "/rt:routing- 1236 state/rt:ribs/rt:rib/rt:routes/rt:route". 1238 The modules defined in this document use some groupings from ietf- 1239 keychain [I-D.ietf-rtgwg-yang-key-chain]. 1241 6. IS-IS YANG Module 1243 file "ietf-isis@2018-08-09.yang" 1245 module ietf-isis { 1246 yang-version 1.1; 1247 namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; 1249 prefix isis; 1251 import ietf-routing { 1252 prefix "rt"; 1253 reference "RFC 8349 - A YANG Data Model for Routing 1254 Management (NMDA Version)"; 1255 } 1257 import ietf-inet-types { 1258 prefix inet; 1259 reference "RFC 6021 - Common YANG Data Types"; 1260 } 1262 import ietf-yang-types { 1263 prefix yang; 1264 reference "RFC 6021 - Common YANG Data Types"; 1265 } 1267 import ietf-interfaces { 1268 prefix "if"; 1269 reference "RFC 8343 - A YANG Data Model for Interface 1270 Management (NDMA Version)"; 1271 } 1273 import ietf-key-chain { 1274 prefix "key-chain"; 1275 reference "RFC 8177 - YANG Data Model for Key Chains"; 1276 } 1278 import ietf-routing-types { 1279 prefix "rt-types"; 1280 reference "RFC 8291 - Common YANG Data Types for the 1281 Routing Area"; 1282 } 1284 import iana-routing-types { 1285 prefix "iana-rt-types"; 1286 reference "RFC 8291 - Common YANG Data Types for the 1287 Routing Area"; 1288 } 1290 import ietf-bfd-types { 1291 prefix "bfd-types"; 1292 reference "RFC XXXX - YANG Data Model for Bidirectional 1293 Forwarding Detection (BFD)"; 1294 } 1296 organization 1297 "IETF IS-IS Working Group"; 1299 contact 1300 "WG List: <mailto:isis-wg@ietf.org> 1302 Editor: Stephane Litkowski 1303 <mailto:stephane.litkowski@orange.com> 1305 Derek Yeung 1306 <mailto:derek@arrcus.com> 1307 Acee Lindem 1308 <mailto:acee@cisco.com> 1309 Jeffrey Zhang 1310 <mailto:zzhang@juniper.net> 1311 Ladislav Lhotka 1312 <mailto:llhotka@nic.cz> 1313 Yi Yang 1314 <mailto:yiya@cisco.com> 1315 Dean Bogdanovic 1316 <mailto:deanb@juniper.net> 1317 Kiran Agrahara Sreenivasa 1318 <mailto:kkoushik@brocade.com> 1319 Yingzhen Qu 1320 <mailto:yiqu@cisco.com> 1321 Jeff Tantsura 1322 <mailto:jefftant.ietf@gmail.com> 1324 "; 1326 description 1327 "The YANG module defines a generic configuration model for 1328 IS-IS common across all of the vendor implementations."; 1330 revision 2018-08-09 { 1331 description 1332 "Initial revision."; 1333 reference "RFC XXXX"; 1334 } 1336 /* Identities */ 1338 identity isis { 1339 base rt:routing-protocol; 1340 description "Identity for the IS-IS routing protocol."; 1341 } 1343 identity isis-adjacency-change { 1344 description "Identity for the IS-IS routing protocol 1345 adjacency state."; 1346 } 1348 identity clear-isis-database { 1349 description "Identity for the IS-IS routing protocol 1350 database reset action."; 1351 } 1353 identity clear-isis-adjacency { 1354 description "Identity for the IS-IS routing protocol 1355 adjacency reset action."; 1356 } 1358 identity lsp-log-reason { 1359 description "Base identity for an LSP change log reason."; 1360 } 1362 identity refresh { 1363 base lsp-log-reason; 1364 description 1365 "Identity used when the LSP log reason is 1366 a refresh LSP received."; 1367 } 1369 identity content-change { 1370 base lsp-log-reason; 1371 description 1372 "Identity used when the LSP log reason is 1373 a change in the content of the LSP."; 1374 } 1376 /* Feature definitions */ 1378 feature ietf-spf-delay { 1379 description 1380 "Support of IETF SPF delay algorithm."; 1381 reference "RFC XXXX - SPF Back-off algorithm for link 1382 state IGPs"; 1383 } 1384 feature bfd { 1385 description 1386 "Support for BFD detection of IS-IS neighbor reachability."; 1387 reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) 1388 RFC 5881 - Bidirectional Forwarding Detection 1389 (BFD) for IPv4 and IPv6 (Single Hop)"; 1390 } 1391 feature key-chain { 1392 description 1393 "Support of keychain for authentication."; 1394 reference "RFC8177 - YANG Data Model for Key Chains"; 1395 } 1396 feature node-flag { 1397 description 1398 "Support of node-flag advertisement 1399 as prefix attribute"; 1400 reference "RFC7794 - IS-IS Prefix Attributes for 1401 Extended IP and IPv6 Reachability"; 1402 } 1403 feature node-tag { 1404 description 1405 "Support of node tag."; 1406 reference "RFC7917 - Advertising Node Administrative Tags 1407 in IS-IS"; 1408 } 1409 feature ldp-igp-sync { 1410 description 1411 "Support of synchronization between IS-IS and LDP."; 1412 reference "RFC5443 - LDP IGP Synchronization"; 1413 } 1414 feature fast-reroute { 1415 description 1416 "Support of IP Fast Reroute."; 1418 } 1419 feature nsr { 1420 description 1421 "Support of Non-Stop Routing."; 1422 } 1423 feature lfa { 1424 description 1425 "Support of Loop-Free Alternates."; 1426 reference "RFC5286 - Basic Specification of IP Fast-Reroute: 1427 Loop-free Alternates"; 1428 } 1429 feature remote-lfa { 1430 description 1431 "Support of remote Loop Free Alternates."; 1432 reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute"; 1433 } 1435 feature overload-max-metric { 1436 description 1437 "Support of overload by setting 1438 all links to max metric."; 1439 } 1440 feature prefix-tag { 1441 description 1442 "Support for 32-bit prefix tags"; 1443 reference "RFC5130 - A Policy Control Mechanism in 1444 IS-IS Using Administrative Tags"; 1445 } 1446 feature prefix-tag64 { 1447 description 1448 "Support for 64-bit prefix tags"; 1449 reference "RFC5130 - A Policy Control Mechanism in 1450 IS-IS Using Administrative Tags"; 1451 } 1452 feature auto-cost { 1453 description 1454 "Use an automated assignment of metrics."; 1455 } 1457 feature te-rid { 1458 description 1459 "Traffic-Engineering Router-ID."; 1460 reference "RFC5305 - IS-IS Extensions for Traffic Engineering 1461 RFC6119 - IPv6 Traffic Engineering in IS-IS"; 1462 } 1463 feature max-ecmp { 1464 description 1465 "Setting maximum number of ECMP paths."; 1467 } 1468 feature multi-topology { 1469 description 1470 "Multitopology routing support."; 1471 reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS"; 1472 } 1473 feature nlpid-control { 1474 description 1475 "This feature controls the advertisement 1476 of support NLPID within IS-IS configuration."; 1477 } 1478 feature graceful-restart { 1479 description 1480 "Graceful restart support."; 1481 reference "RFC5306 - Restart Signaling in IS-IS"; 1482 } 1484 feature lsp-refresh { 1485 description 1486 "Configuration of LSP refresh interval."; 1487 } 1489 feature maximum-area-addresses { 1490 description 1491 "Support of maximum-area-addresses config."; 1492 } 1494 feature admin-control { 1495 description 1496 "Control administrative state of IS-IS."; 1497 } 1499 /* Type definitions */ 1501 typedef instance-state-ref { 1502 type leafref { 1503 path "/rt:routing-state/" 1504 +"rt:control-plane-protocols/rt:control-plane-protocol/" 1505 +"rt:name"; 1506 } 1507 description 1508 "This type is used for leaves that reference state data for 1509 an IS-IS protocol instance."; 1510 } 1512 typedef circuit-id { 1513 type uint8; 1514 description 1515 "This type defines the circuit ID 1516 associated with an interface."; 1517 } 1519 typedef extended-circuit-id { 1520 type uint32; 1521 description 1522 "This type defines the extended circuit ID 1523 associated with an interface."; 1524 } 1526 typedef interface-type { 1527 type enumeration { 1528 enum broadcast { 1529 description 1530 "Broadcast interface type."; 1531 } 1532 enum point-to-point { 1533 description 1534 "Point-to-point interface type."; 1535 } 1536 } 1537 description 1538 "This type defines the type of adjacency 1539 to be established on the interface. 1540 The interface-type determines the type 1541 of hello message that is used."; 1543 } 1545 typedef level { 1546 type enumeration { 1547 enum "level-1" { 1548 description 1549 "This enum indicates L1-only capability."; 1550 } 1551 enum "level-2" { 1552 description 1553 "This enum indicates L2-only capability."; 1554 } 1555 enum "level-all" { 1556 description 1557 "This enum indicates capability for both levels."; 1558 } 1559 } 1560 default "level-all"; 1561 description 1562 "This type defines IS-IS level of an object."; 1564 } 1566 typedef adj-state-type { 1567 type enumeration { 1568 enum "up" { 1569 description 1570 "State indicates the adjacency is established."; 1571 } 1572 enum "down" { 1573 description 1574 "State indicates the adjacency is NOT established."; 1575 } 1576 enum "init" { 1577 description 1578 "State indicates the adjacency is establishing."; 1579 } 1580 enum "failed" { 1581 description 1582 "State indicates the adjacency is failed."; 1583 } 1584 } 1585 description 1586 "This type defines states of an adjacency"; 1587 } 1589 typedef if-state-type { 1590 type enumeration { 1591 enum "up" { 1592 description "Up state."; 1594 } 1595 enum "down" { 1596 description "Down state"; 1597 } 1598 } 1599 description 1600 "This type defines the state of an interface"; 1601 } 1603 typedef level-number { 1604 type uint8 { 1605 range "1 .. 2"; 1606 } 1607 description 1608 "This type defines the current IS-IS level."; 1609 } 1610 typedef lsp-id { 1611 type string { 1612 pattern 1613 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' 1614 +'{4}\.[0-9][0-9]-[0-9][0-9]'; 1615 } 1616 description 1617 "This type defines the IS-IS LSP ID format using a 1618 pattern, An example LSP ID is 0143.0438.AeF0.02-01"; 1619 } 1621 typedef area-address { 1622 type string { 1623 pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; 1624 } 1625 description 1626 "This type defines the area address format."; 1627 } 1629 typedef snpa { 1630 type string { 1631 length "0 .. 20"; 1632 } 1633 description 1634 "This type defines the Subnetwork Point 1635 of Attachement (SNPA) format."; 1636 } 1638 typedef system-id { 1639 type string { 1640 pattern 1641 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; 1642 } 1643 description 1644 "This type defines IS-IS system-id using pattern, 1645 An example system-id is 0143.0438.AeF0"; 1646 } 1648 typedef wide-metric { 1649 type uint32 { 1650 range "0 .. 16777215"; 1651 } 1652 description 1653 "This type defines wide style format of IS-IS metric."; 1654 } 1656 typedef std-metric { 1657 type uint8 { 1658 range "0 .. 63"; 1659 } 1660 description 1661 "This type defines old style format of IS-IS metric."; 1662 } 1664 typedef mesh-group-state { 1665 type enumeration { 1666 enum "mesh-inactive" { 1667 description 1668 "Interface is not part of a mesh group."; 1669 } 1670 enum "mesh-set" { 1671 description 1672 "Interface is part of a mesh group."; 1673 } 1674 enum "mesh-blocked" { 1675 description 1676 "LSPs must not be flooded over this interface."; 1677 } 1678 } 1679 description 1680 "This type describes mesh group state of an interface"; 1681 } 1683 /* Grouping definitions for configuration and ops state */ 1685 grouping adjacency-state { 1686 container adjacencies { 1687 config false; 1688 list adjacency { 1689 leaf neighbor-sys-type { 1690 type level; 1691 description 1692 "Level capability of neighboring system"; 1693 } 1694 leaf neighbor-sysid { 1695 type system-id; 1696 description 1697 "The system-id of the neighbor"; 1698 } 1699 leaf neighbor-extended-circuit-id { 1700 type extended-circuit-id; 1701 description 1702 "Circuit ID of the neighbor"; 1703 } 1704 leaf neighbor-snpa { 1705 type snpa; 1706 description 1707 "SNPA of the neighbor"; 1708 } 1709 leaf usage { 1710 type level; 1711 description 1712 "Define the level(s) activated on the adjacency. 1713 On a p2p link this might be level 1 and 2, 1714 but on a LAN, the usage will be level 1 1715 between peers at level 1 or level 2 between 1716 peers at level 2."; 1717 } 1718 leaf hold-timer { 1719 type rt-types:timer-value-seconds16; 1720 units seconds; 1721 description 1722 "The holding time in seconds for this 1723 adjacency. This value is based on 1724 received hello PDUs and the elapsed 1725 time since receipt."; 1726 } 1727 leaf neighbor-priority { 1728 type uint8 { 1729 range "0 .. 127"; 1730 } 1731 description 1732 "Priority of the neighboring IS for becoming 1733 the DIS."; 1734 } 1735 leaf lastuptime { 1736 type yang:timestamp; 1737 description 1738 "When the adjacency most recently entered 1739 state 'up', measured in hundredths of a 1740 second since the last reinitialization of 1741 the network management subsystem. 1742 The value is 0 if the adjacency has never 1743 been in state 'up'."; 1744 } 1745 leaf state { 1746 type adj-state-type; 1747 description 1748 "This leaf describes the state of the interface."; 1749 } 1751 description 1752 "List of operational adjacencies."; 1753 } 1754 description 1755 "This container lists the adjacencies of 1756 the local node."; 1757 } 1758 description 1759 "Adjacency state"; 1760 } 1762 grouping fast-reroute-global-state { 1763 container protected-routes { 1764 config false; 1765 list af-stats { 1766 key "af prefix alternate"; 1768 leaf af { 1769 type iana-rt-types:address-family; 1770 description 1771 "Address-family"; 1772 } 1773 leaf prefix { 1774 type string; 1775 description 1776 "Protected prefix."; 1777 } 1778 leaf alternate { 1779 type string; 1780 description 1781 "Alternate nexthop for the prefix."; 1782 } 1783 leaf alternate-type { 1784 type enumeration { 1785 enum equal-cost { 1786 description 1787 "ECMP alternate."; 1788 } 1789 enum lfa { 1790 description 1791 "LFA alternate."; 1792 } 1793 enum remote-lfa { 1794 description 1795 "Remote LFA alternate."; 1796 } 1797 enum tunnel { 1798 description 1799 "Tunnel based alternate 1800 (like RSVP-TE or GRE)."; 1801 } 1802 enum ti-lfa { 1803 description 1804 "TI-LFA alternate."; 1805 } 1806 enum mrt { 1807 description 1808 "MRT alternate."; 1809 } 1810 enum other { 1811 description 1812 "Unknown alternate type."; 1813 } 1814 } 1815 description 1816 "Type of alternate."; 1817 } 1818 leaf best { 1819 type boolean; 1820 description 1821 "Indicates if the alternate is the preferred."; 1822 } 1823 leaf non-best-reason { 1824 type string; 1825 description 1826 "Information field to describe why the alternate 1827 is not best."; 1828 } 1829 leaf protection-available { 1830 type bits { 1831 bit node-protect { 1832 position 0; 1833 description 1834 "Node protection available."; 1835 } 1836 bit link-protect { 1837 position 1; 1838 description 1839 "Link protection available."; 1840 } 1841 bit srlg-protect { 1842 position 2; 1843 description 1844 "SRLG protection available."; 1845 } 1846 bit downstream-protect { 1847 position 3; 1848 description 1849 "Downstream protection available."; 1850 } 1851 bit other { 1852 position 4; 1853 description 1854 "Other protection available."; 1855 } 1856 } 1857 description "Protection provided by the alternate."; 1858 } 1859 leaf alternate-metric1 { 1860 type uint32; 1861 description 1862 "Metric from Point of Local Repair (PLR) to 1863 destination through the alternate path."; 1864 } 1865 leaf alternate-metric2 { 1866 type uint32; 1867 description 1868 "Metric from PLR to the alternate node"; 1869 } 1870 leaf alternate-metric3 { 1871 type uint32; 1872 description 1873 "Metric from alternate node to the destination"; 1874 } 1875 description 1876 "Per-AF protected prefix statistics."; 1877 } 1878 description 1879 "List of prefixes that are protected."; 1880 } 1882 container unprotected-routes { 1883 config false; 1884 list af-stats { 1885 key "af prefix"; 1887 leaf af { 1888 type iana-rt-types:address-family; 1890 description "Address-family"; 1891 } 1892 leaf prefix { 1893 type string; 1894 description "Unprotected prefix."; 1895 } 1896 description 1897 "Per AF unprotected prefix statistics."; 1898 } 1899 description 1900 "List of prefixes that are not protected."; 1901 } 1903 list protection-statistics { 1904 key frr-protection-method; 1905 config false; 1906 leaf frr-protection-method { 1907 type string; 1908 description "Protection method used."; 1909 } 1910 list af-stats { 1911 key af; 1913 leaf af { 1914 type iana-rt-types:address-family; 1916 description "Address-family"; 1917 } 1918 leaf total-routes { 1919 type uint32; 1920 description "Total prefixes."; 1921 } 1922 leaf unprotected-routes { 1923 type uint32; 1924 description 1925 "Total prefixes that are not protected."; 1926 } 1927 leaf protected-routes { 1928 type uint32; 1929 description 1930 "Total prefixes that are protected."; 1931 } 1932 leaf linkprotected-routes { 1933 type uint32; 1934 description 1935 "Total prefixes that are link protected."; 1936 } 1937 leaf nodeprotected-routes { 1938 type uint32; 1939 description 1940 "Total prefixes that are node protected."; 1941 } 1942 description 1943 "Per AF protected prefix statistics."; 1945 } 1947 description "Global protection statistics."; 1948 } 1949 description "IPFRR states."; 1950 } 1952 grouping notification-instance-hdr { 1953 description 1954 "Instance specific IS-IS notification data grouping"; 1955 leaf routing-instance { 1956 type string; 1957 description "Name of the routing-instance instance."; 1958 } 1959 leaf routing-protocol-name { 1960 type string; 1961 description "Name of the IS-IS instance."; 1962 } 1963 leaf isis-level { 1964 type level; 1965 description "IS-IS level of the instance."; 1966 } 1967 } 1969 grouping notification-interface-hdr { 1970 description 1971 "Interface specific IS-IS notification data grouping"; 1972 leaf interface-name { 1973 type string; 1974 description "IS-IS interface name"; 1975 } 1976 leaf interface-level { 1977 type level; 1978 description "IS-IS level of the interface."; 1979 } 1980 leaf extended-circuit-id { 1981 type extended-circuit-id; 1982 description "Eextended circuit-id of the interface."; 1983 } 1984 } 1986 grouping route-content { 1987 description 1988 "IS-IS protocol-specific route properties grouping."; 1989 leaf metric { 1990 type uint32; 1991 description "IS-IS metric of a route."; 1992 } 1993 leaf-list tag { 1994 type uint64; 1995 description 1996 "List of tags associated with the route. The leaf 1997 describes both 32-bit and 64-bit tags."; 1998 } 1999 leaf route-type { 2000 type enumeration { 2001 enum l2-up-internal { 2002 description "Level 2 internal route 2003 and not leaked to a lower level"; 2004 } 2005 enum l1-up-internal { 2006 description "Level 1 internal route 2007 and not leaked to a lower level"; 2008 } 2009 enum l2-up-external { 2010 description "Level 2 external route 2011 and not leaked to a lower level"; 2012 } 2013 enum l1-up-external { 2014 description "Level 1 external route 2015 and not leaked to a lower level"; 2016 } 2017 enum l2-down-internal { 2018 description "Level 2 internal route 2019 and leaked to a lower level"; 2020 } 2021 enum l1-down-internal { 2022 description "Level 1 internal route 2023 and leaked to a lower level"; 2024 } 2025 enum l2-down-external { 2026 description "Level 2 external route 2027 and leaked to a lower level"; 2028 } 2029 enum l1-down-external { 2030 description "Level 1 external route 2031 and leaked to a lower level"; 2032 } 2033 } 2034 description "IS-IS route type."; 2035 } 2036 } 2038 grouping admin-control { 2039 leaf enable { 2040 if-feature admin-control; 2041 type boolean; 2042 default true; 2043 description 2044 "Control the administrative state."; 2045 } 2046 description 2047 "Grouping for admin control."; 2048 } 2050 grouping fast-reroute-global-cfg { 2051 description 2052 "IPFRR global configuration grouping"; 2053 container lfa { 2054 if-feature lfa; 2055 description 2056 "This container may be augmented with global 2057 parameters for LFA. Creating the container has no 2058 effect on LFA activation."; 2059 } 2060 } 2062 grouping fast-reroute-if-cfg { 2063 description 2064 "IPFRR interface configuration grouping"; 2065 container lfa { 2066 if-feature lfa; 2067 uses lfa-if-cfg; 2068 container level-1 { 2069 uses lfa-if-cfg; 2070 description 2071 "LFA level 1 config"; 2072 } 2073 container level-2 { 2074 uses lfa-if-cfg; 2075 description 2076 "LFA level 2 config"; 2077 } 2078 description 2079 "LFA config"; 2080 } 2081 } 2083 grouping ietf-spf-delay-cfg { 2084 leaf initial-delay { 2085 type rt-types:timer-value-milliseconds; 2086 units msec; 2087 description 2088 "Delay used while in QUIET state."; 2090 } 2091 leaf short-delay { 2092 type rt-types:timer-value-milliseconds; 2093 units msec; 2094 description 2095 "Delay used while in SHORT_WAIT state."; 2096 } 2097 leaf long-delay { 2098 type rt-types:timer-value-milliseconds; 2099 units msec; 2100 description 2101 "Delay used while in LONG_WAIT state."; 2102 } 2104 leaf hold-down { 2105 type rt-types:timer-value-milliseconds; 2106 units msec; 2107 description 2108 "Timer used to consider an IGP stability period."; 2109 } 2110 leaf time-to-learn { 2111 type rt-types:timer-value-milliseconds; 2112 units msec; 2113 description 2114 "Duration used to learn all the IGP events 2115 related to a single component failure."; 2116 } 2118 description 2119 "Grouping for IETF SPF delay configuration."; 2120 } 2122 grouping ietf-spf-delay-state { 2123 leaf current-state { 2124 type enumeration { 2125 enum "quiet" { 2126 description "QUIET state"; 2127 } 2128 enum "short-wait" { 2129 description "SHORT_WAIT state"; 2130 } 2131 enum "long-wait" { 2132 description "LONG_WAIT state"; 2133 } 2134 } 2135 config false; 2136 description 2137 "Current SPF backoff algorithm state."; 2139 } 2140 leaf remaining-time-to-learn { 2141 type rt-types:timer-value-milliseconds; 2142 units "msec"; 2143 config false; 2144 description 2145 "Remaining time until time-to-learn timer fires."; 2146 } 2147 leaf remaining-hold-down { 2148 type rt-types:timer-value-milliseconds; 2149 units "msec"; 2150 config false; 2151 description 2152 "Remaining time until hold-down timer fires."; 2153 } 2154 leaf last-event-received { 2155 type yang:timestamp; 2156 config false; 2157 description 2158 "Time of last IGP event received"; 2159 } 2160 leaf next-spf-time { 2161 type yang:timestamp; 2162 config false; 2163 description 2164 "Time when next SPF has been scheduled."; 2165 } 2166 leaf last-spf-time { 2167 type yang:timestamp; 2168 config false; 2169 description 2170 "Time of last SPF computation."; 2171 } 2172 description 2173 "Grouping for IETF SPF delay operational states."; 2174 } 2176 grouping local-rib { 2177 description "Local-rib grouping."; 2178 container local-rib { 2179 config false; 2180 description "Local-rib."; 2181 list route { 2182 key "prefix"; 2183 description "List of IS-IS local RIB Routes"; 2184 leaf prefix { 2185 type inet:ip-prefix; 2186 description "Destination prefix."; 2188 } 2189 container next-hops { 2190 description "All next hops for the route."; 2191 list next-hop { 2192 key "next-hop"; 2193 description "List of next hop for the route"; 2194 leaf outgoing-interface { 2195 type if:interface-ref; 2196 description 2197 "Name of the outgoing interface."; 2198 } 2199 leaf next-hop { 2200 type inet:ip-address; 2201 description "Nexthop address."; 2202 } 2203 } 2204 } 2205 leaf metric { 2206 type uint32; 2207 description "Metric for this route."; 2208 } 2209 leaf level { 2210 type level-number; 2211 description "Level number for this route."; 2212 } 2213 leaf route-tag { 2214 type uint32; 2215 description "Route tag for this route."; 2216 } 2217 } 2218 } 2219 } 2221 grouping isis-node-tag-cfg { 2222 description "IS-IS node tag config."; 2223 container node-tags { 2224 if-feature node-tag; 2225 list node-tag { 2226 key tag; 2227 leaf tag { 2228 type uint32; 2229 description 2230 "Node tag value."; 2231 } 2232 description 2233 "List of tags."; 2234 } 2235 description 2236 "Container for node tags."; 2237 } 2238 } 2240 grouping authentication-global-cfg { 2241 choice authentication-type { 2242 case key-chain { 2243 if-feature key-chain; 2244 leaf key-chain { 2245 type key-chain:key-chain-ref; 2246 description 2247 "Reference to a key-chain."; 2248 } 2249 } 2250 case password { 2251 leaf key { 2252 type string; 2253 description 2254 "This leaf specifies the authentication key."; 2255 } 2256 leaf crypto-algorithm { 2257 type identityref { 2258 base key-chain:crypto-algorithm; 2259 } 2260 description 2261 "Cryptographic algorithm associated with key."; 2262 } 2263 } 2264 description "Choice of authentication."; 2265 } 2266 description "Grouping for global authentication config."; 2267 } 2269 grouping metric-type-global-cfg { 2270 leaf value { 2271 type enumeration { 2272 enum wide-only { 2273 description 2274 "Advertise new metric style only (RFC5305)"; 2275 } 2276 enum old-only { 2277 description 2278 "Advertise old metric style only (RFC1195)"; 2279 } 2280 enum both { 2281 description "Advertise both metricstyles"; 2282 } 2283 } 2284 default wide-only; 2285 description 2286 "Type of metric to be generated: 2287 - wide-only means only new metric style 2288 is generated, 2289 - old-only means that only old style metric 2290 is generated, 2291 - both means that both are advertised. 2292 This leaf is only affecting IPv4 metrics."; 2293 } 2294 description 2295 "Grouping for global metric style config."; 2296 } 2298 grouping default-metric-global-cfg { 2299 leaf value { 2300 type wide-metric; 2301 default "10"; 2302 description "Value of the metric"; 2303 } 2304 description 2305 "Global default metric config grouping."; 2306 } 2308 grouping overload-global-cfg { 2309 leaf status { 2310 type boolean; 2311 default false; 2312 description 2313 "This leaf specifies the overload status."; 2314 } 2315 description "Grouping for overload bit config."; 2316 } 2318 grouping overload-max-metric-global-cfg { 2319 leaf timeout { 2320 type rt-types:timer-value-seconds16; 2321 units "seconds"; 2322 description 2323 "Timeout (in seconds) of the overload condition."; 2324 } 2325 description 2326 "Overload maximum metric configuration grouping"; 2327 } 2329 grouping route-preference-global-cfg { 2330 choice granularity { 2331 case detail { 2332 leaf internal { 2333 type uint8; 2334 description 2335 "Protocol preference for internal routes."; 2336 } 2337 leaf external { 2338 type uint8; 2339 description 2340 "Protocol preference for external routes."; 2341 } 2342 } 2343 case coarse { 2344 leaf default { 2345 type uint8; 2346 description 2347 "Protocol preference for all IS-IS routes."; 2348 } 2349 } 2350 description 2351 "Choice for implementation of route preference."; 2352 } 2353 description 2354 "Global route preference grouping"; 2355 } 2357 grouping hello-authentication-cfg { 2358 choice authentication-type { 2359 case key-chain { 2360 if-feature key-chain; 2361 leaf key-chain { 2362 type key-chain:key-chain-ref; 2363 description "Reference to a key-chain."; 2364 } 2365 } 2366 case password { 2367 leaf key { 2368 type string; 2369 description "Authentication key specification"; 2370 } 2371 leaf crypto-algorithm { 2372 type identityref { 2373 base key-chain:crypto-algorithm; 2374 } 2375 description 2376 "Cryptographic algorithm associated with key."; 2377 } 2378 } 2379 description "Choice of authentication."; 2380 } 2381 description "Grouping for hello authentication."; 2382 } 2384 grouping hello-interval-cfg { 2385 leaf value { 2386 type rt-types:timer-value-seconds16; 2387 units "seconds"; 2388 default 10; 2389 description 2390 "Interval (in seconds) between successive hello 2391 messages."; 2392 } 2394 description "Interval between hello messages."; 2395 } 2397 grouping hello-multiplier-cfg { 2398 leaf value { 2399 type uint16; 2400 default 3; 2401 description 2402 "Number of missed hello messages prior to 2403 declaring the adjacency down."; 2404 } 2405 description 2406 "Number of missed hello messages prior to 2407 adjacency down grouping."; 2408 } 2410 grouping priority-cfg { 2411 leaf value { 2412 type uint8 { 2413 range "0 .. 127"; 2414 } 2415 default 64; 2416 description 2417 "Priority of interface for DIS election."; 2418 } 2420 description "Interface DIS election priority grouping"; 2421 } 2423 grouping metric-cfg { 2424 leaf value { 2425 type wide-metric; 2426 default "10"; 2427 description "Metric value."; 2428 } 2429 description "Interface metric grouping"; 2430 } 2432 grouping lfa-if-cfg { 2433 leaf candidate-disabled { 2434 type boolean; 2435 default false; 2436 description 2437 "Prevent the interface to be used as backup."; 2438 } 2439 leaf enable { 2440 type boolean; 2441 default false; 2442 description 2443 "LFA Activation - this model assumes activation 2444 of per-prefix LFA."; 2445 } 2447 container remote-lfa { 2448 if-feature remote-lfa; 2449 leaf enable { 2450 type boolean; 2451 default false; 2452 description 2453 "Activates rLFA."; 2454 } 2455 description "Remote LFA configuration."; 2456 } 2457 description "Grouping for LFA interface configuration"; 2458 } 2460 grouping isis-global-cfg { 2461 description "IS-IS global configuration grouping"; 2463 uses admin-control; 2465 leaf level-type { 2466 type level; 2467 default "level-all"; 2468 description 2469 "Level of an IS-IS node - can be level-1-only, 2470 level-2-only or level-1-2."; 2471 } 2473 leaf system-id { 2474 type system-id; 2475 description "System-id of the node."; 2476 } 2478 leaf maximum-area-addresses { 2479 if-feature maximum-area-addresses; 2480 type uint8; 2481 default 3; 2482 description "Maximum areas supported."; 2483 } 2485 leaf-list area-address { 2486 type area-address; 2487 description 2488 "List of areas supported by the protocol instance."; 2489 } 2491 container mpls { 2492 container te-rid { 2493 if-feature te-rid; 2494 description 2495 "Stable ISIS Router IP Address used for Traffic 2496 Engineering"; 2497 leaf ipv4-router-id { 2498 type inet:ipv4-address; 2499 description 2500 "Router ID value that would be used in TLV 134."; 2501 } 2502 leaf ipv6-router-id { 2503 type inet:ipv6-address; 2504 description 2505 "Router ID value that would be used in TLV 140."; 2506 } 2507 } 2508 container ldp { 2509 container igp-sync { 2510 if-feature ldp-igp-sync; 2511 description 2512 "This container may be augmented with global 2513 parameters for igp-ldp-sync."; 2514 } 2515 description "LDP configuration."; 2516 } 2517 description "MPLS configuration"; 2518 } 2519 container auto-cost { 2520 if-feature auto-cost; 2521 leaf reference-bandwidth { 2522 type uint32; 2523 units "bps"; 2524 description "Bandwidth for calculating metric."; 2525 } 2526 leaf enable { 2527 type boolean; 2528 default false; 2529 description "Enable/disable auto-cost."; 2530 } 2531 description "Auto-cost configuration."; 2532 } 2533 leaf lsp-mtu { 2534 type uint16; 2535 units "bytes"; 2536 default 1492; 2537 description 2538 "Maximum size of an LSP PDU in bytes."; 2539 } 2540 leaf lsp-lifetime { 2541 type uint16 { 2542 range "1..65535"; 2543 } 2544 units "seconds"; 2545 description 2546 "Lifetime of the router's LSPs in seconds."; 2547 } 2548 leaf lsp-refresh { 2549 if-feature lsp-refresh; 2550 type rt-types:timer-value-seconds16; 2551 units "seconds"; 2552 description 2553 "Refresh interval of the router's LSPs in seconds."; 2554 } 2555 container graceful-restart { 2556 if-feature graceful-restart; 2557 leaf enable { 2558 type boolean; 2559 default false; 2560 description "Enable graceful restart."; 2561 } 2562 leaf restart-interval { 2563 type rt-types:timer-value-seconds16; 2564 units "seconds"; 2565 description 2566 "Interval (in seconds) to attempt graceful restart prior 2567 to failure."; 2568 } 2569 leaf helper-enable { 2570 type boolean; 2571 default true; 2572 description 2573 "Enable local IS-IS router as graceful restart helper."; 2574 } 2575 description "Graceful-Restart Configuration."; 2576 } 2578 container nsr { 2579 if-feature nsr; 2580 description "Non-Stop Routing (NSR) configuration."; 2581 leaf enable { 2582 type boolean; 2583 default false; 2584 description "Enable/Disable Non-Stop Routing (NSR)."; 2585 } 2586 } 2588 uses isis-node-tag-cfg; 2590 container authentication { 2591 uses authentication-global-cfg; 2593 container level-1 { 2594 uses authentication-global-cfg; 2595 description "level-1 specific configuration"; 2596 } 2597 container level-2 { 2598 uses authentication-global-cfg; 2599 description "level-2 specific configuration"; 2600 } 2601 description "Authentication global configuration for 2602 both LSPs and SNPs."; 2603 } 2605 container metric-type { 2606 uses metric-type-global-cfg; 2607 container level-1 { 2608 uses metric-type-global-cfg; 2609 description "level-1 specific configuration"; 2610 } 2611 container level-2 { 2612 uses metric-type-global-cfg; 2613 description "level-2 specific configuration"; 2614 } 2615 description "Metric style global configuration"; 2616 } 2618 container default-metric { 2619 uses default-metric-global-cfg; 2620 container level-1 { 2621 uses default-metric-global-cfg; 2622 description "level-1 specific configuration"; 2623 } 2624 container level-2 { 2625 uses default-metric-global-cfg; 2626 description "level-2 specific configuration"; 2627 } 2628 description "Default metric global configuration"; 2629 } 2631 container afs { 2632 if-feature nlpid-control; 2633 list af { 2634 key af; 2635 leaf af { 2636 type iana-rt-types:address-family; 2637 description "Address-family"; 2638 } 2639 leaf enable { 2640 type boolean; 2641 description "Activate the address family."; 2642 } 2643 description 2644 "List of address families and whether or not they 2645 are activated."; 2646 } 2647 description "Address Family configuration"; 2648 } 2650 container preference { 2651 uses route-preference-global-cfg; 2652 description "Router preference configuration for IS-IS 2653 protocol instance route installation"; 2654 } 2656 container overload { 2657 uses overload-global-cfg; 2658 description "Router protocol instance overload state 2659 configuration"; 2660 } 2662 container overload-max-metric { 2663 if-feature overload-max-metric; 2664 uses overload-max-metric-global-cfg; 2665 description 2666 "Router protocol instance overload maximum 2667 metric advertisement configuration."; 2668 } 2669 } 2671 grouping isis-global-topologies-cfg { 2672 description "Per-topology configuration"; 2673 container default-metric { 2674 uses default-metric-global-cfg; 2675 container level-1 { 2676 uses default-metric-global-cfg; 2677 description "level-1 specific configuration"; 2678 } 2679 container level-2 { 2680 uses default-metric-global-cfg; 2681 description "level-2 specific configuration"; 2682 } 2683 description "Default metric per-topology configuration"; 2684 } 2685 uses isis-node-tag-cfg; 2686 } 2688 grouping isis-if-cfg { 2689 description "Interface configuration grouping"; 2690 leaf level-type { 2691 type level; 2692 default "level-all"; 2693 description "IS-IS level of the interface."; 2694 } 2695 leaf lsp-pacing-interval { 2696 type rt-types:timer-value-milliseconds; 2697 units "milliseconds"; 2698 default 33; 2699 description 2700 "Interval (in milli-seconds) between LSP 2701 transmissions."; 2702 } 2703 leaf lsp-retransmit-interval { 2704 type rt-types:timer-value-seconds16; 2705 units "seconds"; 2706 description 2707 "Interval (in seconds) between LSP 2708 retransmissions."; 2709 } 2710 leaf passive { 2711 type boolean; 2712 default "false"; 2713 description 2714 "Indicates whetherthe interface is in passive mode (IS-IS 2715 not running but network is advertised)."; 2716 } 2717 leaf csnp-interval { 2718 type rt-types:timer-value-seconds16; 2719 units "seconds"; 2720 default 10; 2721 description 2722 "Interval (in seconds) between CSNP messages."; 2723 } 2724 container hello-padding { 2725 leaf enable { 2726 type boolean; 2727 default "true"; 2728 description 2729 "IS-IS Hello-padding activation - enabled by default."; 2730 } 2731 description "IS-IS hello padding configuration."; 2732 } 2733 leaf mesh-group-enable { 2734 type mesh-group-state; 2735 description "IS-IS interface mesh-group state"; 2736 } 2737 leaf mesh-group { 2738 when "../mesh-group-enable = 'mesh-set'" { 2739 description 2740 "Only valid when mesh-group-enable equals meshset"; 2741 } 2742 type uint8; 2743 description "IS-IS interface mesh-group ID."; 2744 } 2745 leaf interface-type { 2746 type interface-type; 2747 default "broadcast"; 2748 description 2749 "Type of adjacency to be established on the interface. This 2750 dictates the type of hello messages that are used."; 2751 } 2753 uses admin-control; 2755 leaf-list tag { 2756 if-feature prefix-tag; 2757 type uint32; 2758 description 2759 "List of tags associated with the interface."; 2760 } 2761 leaf-list tag64 { 2762 if-feature prefix-tag64; 2763 type uint64; 2764 description 2765 "List of 64-bit tags associated with the interface."; 2766 } 2767 leaf node-flag { 2768 if-feature node-flag; 2769 type boolean; 2770 default false; 2771 description 2772 "Set prefix as a node representative prefix."; 2773 } 2774 container hello-authentication { 2775 uses hello-authentication-cfg; 2776 container level-1 { 2777 uses hello-authentication-cfg; 2778 description "level-1 specific configuration"; 2779 } 2780 container level-2 { 2781 uses hello-authentication-cfg; 2782 description "level-2 specific configuration"; 2783 } 2784 description 2785 "Authentication type to be used in hello messages."; 2786 } 2787 container hello-interval { 2788 uses hello-interval-cfg; 2789 container level-1 { 2790 uses hello-interval-cfg; 2791 description "level-1 specific configuration"; 2792 } 2793 container level-2 { 2794 uses hello-interval-cfg; 2795 description "level-2 specific configuration"; 2796 } 2797 description "Interval between hello messages."; 2798 } 2799 container hello-multiplier { 2800 uses hello-multiplier-cfg; 2801 container level-1 { 2802 uses hello-multiplier-cfg; 2803 description "level-1 specific configuration"; 2804 } 2805 container level-2 { 2806 uses hello-multiplier-cfg; 2807 description "level-2 specific configuration"; 2808 } 2809 description "Hello multiplier configuration."; 2810 } 2811 container priority { 2812 must '../interface-type = "broadcast"' { 2813 error-message 2814 "Priority only applies to broadcast interfaces."; 2815 description "Check for broadcast interface."; 2816 } 2817 uses priority-cfg; 2818 container level-1 { 2819 uses priority-cfg; 2820 description "level-1 specific configuration"; 2821 } 2822 container level-2 { 2823 uses priority-cfg; 2824 description "level-2 specific configuration"; 2825 } 2826 description "Priority for DIS election."; 2827 } 2828 container metric { 2829 uses metric-cfg; 2830 container level-1 { 2831 uses metric-cfg; 2832 description "level-1 specific configuration"; 2833 } 2834 container level-2 { 2835 uses metric-cfg; 2836 description "level-2 specific configuration"; 2837 } 2838 description "Metric configuration."; 2839 } 2840 container bfd { 2841 if-feature bfd; 2842 description "BFD Client Configuration."; 2843 uses bfd-types:client-cfg-parms; 2845 reference "draft-ietf-bfd-yang-xx.txt: 2846 YANG Data Model for Bidirectional Forwarding 2847 Detection (BFD)"; 2848 } 2849 container afs { 2850 if-feature nlpid-control; 2851 list af { 2852 key af; 2853 leaf af { 2854 type iana-rt-types:address-family; 2855 description "Address-family"; 2856 } 2857 description "List of AFs."; 2858 } 2859 description "Interface address-families"; 2860 } 2861 container mpls { 2862 container ldp { 2863 leaf igp-sync { 2864 if-feature ldp-igp-sync; 2865 type boolean; 2866 default false; 2867 description "Enables IGP/LDP synchronization"; 2868 } 2869 description "LDP protocol related configuration."; 2870 } 2871 description "MPLS configuration for IS-IS interfaces"; 2872 } 2873 } 2875 grouping isis-if-topologies-cfg { 2876 description "IS-IS interface topology configuration."; 2877 container metric { 2878 uses metric-cfg; 2879 container level-1 { 2880 uses metric-cfg; 2881 description "level-1 specific configuration"; 2882 } 2883 container level-2 { 2884 uses metric-cfg; 2885 description "level-2 specific configuration"; 2886 } 2887 description "Metric IS-IS interface configuration."; 2888 } 2889 } 2891 grouping system-counters { 2892 container system-counters { 2893 config false; 2894 list level { 2895 key level; 2897 leaf level { 2898 type level-number; 2899 description "IS-IS level."; 2900 } 2901 leaf corrupted-lsps { 2902 type uint32; 2903 description 2904 "Number of corrupted in-memory LSPs detected. 2905 LSPs received from the wire with a bad 2906 checksum are silently dropped and not counted. 2908 LSPs received from the wire with parse errors 2909 are counted by lsp-errors."; 2910 } 2911 leaf authentication-type-fails { 2912 type uint32; 2913 description 2914 "Number of authentication type mismatches."; 2915 } 2916 leaf authentication-fails { 2917 type uint32; 2918 description 2919 "Number of authentication key failures."; 2920 } 2921 leaf database-overload { 2922 type uint32; 2923 description 2924 "Number of times the database has become 2925 overloaded."; 2926 } 2927 leaf own-lsp-purge { 2928 type uint32; 2929 description 2930 "Number of times a zero-aged copy of the system's 2931 own LSP is received from some other IS-IS node."; 2932 } 2933 leaf manual-address-drop-from-area { 2934 type uint32; 2935 description 2936 "Number of times a manual address 2937 has been dropped from the area."; 2938 } 2939 leaf max-sequence { 2940 type uint32; 2941 description 2942 "Number of times the system has attempted 2943 to exceed the maximum sequence number."; 2944 } 2945 leaf sequence-number-skipped { 2946 type uint32; 2947 description 2948 "Number of times a sequence number skip has 2949 occured."; 2950 } 2951 leaf id-len-mismatch { 2952 type uint32; 2953 description 2954 "Number of times a PDU is received with a 2955 different value for the ID field length 2956 than that of the receiving system."; 2957 } 2958 leaf partition-changes { 2959 type uint32; 2960 description 2961 "Number of partition changes detected."; 2962 } 2963 leaf lsp-errors { 2964 type uint32; 2965 description 2966 "Number of LSPs with errors we have received."; 2967 } 2968 leaf spf-runs { 2969 type uint32; 2970 description 2971 "Number of times we ran SPF at this level."; 2972 } 2973 description 2974 "List of supported levels."; 2975 } 2976 description 2977 "List counters for the IS-IS protocol instance"; 2978 } 2979 description "System counters grouping."; 2980 } 2982 grouping event-counters { 2983 container event-counters { 2984 config false; 2985 leaf adjacency-changes { 2986 type uint32; 2987 description 2988 "The number of times an adjacency state change has 2989 occured on this interface."; 2990 } 2991 leaf adjacency-number { 2992 type uint32; 2993 description 2994 "The number of adjacencies on this interface."; 2995 } 2996 leaf init-fails { 2997 type uint32; 2998 description 2999 "The number of times initialization of this 3000 interface has failed. This counts events such 3001 as PPP NCP failures. Failures to form an 3002 adjacency are counted by adjacency-rejects."; 3003 } 3004 leaf adjacency-rejects { 3005 type uint32; 3006 description 3007 "The number of times an adjacency has been 3008 rejected on this interface."; 3009 } 3010 leaf id-len-mismatch { 3011 type uint32; 3012 description 3013 "The number of times an IS-IS PDU with an ID 3014 field length different from that for this 3015 system has been received on this interface."; 3016 } 3017 leaf max-area-addresses-mismatch { 3018 type uint32; 3019 description 3020 "The number of times an IS-IS PDU has been 3021 received on this interface with the 3022 max area address field differing from that of 3023 this system."; 3024 } 3025 leaf authentication-type-fails { 3026 type uint32; 3027 description 3028 "Number of authentication type mismatches."; 3029 } 3030 leaf authentication-fails { 3031 type uint32; 3032 description 3033 "Number of authentication key failures."; 3034 } 3035 leaf lan-dis-changes { 3036 type uint32; 3037 description 3038 "The number of times the DIS has changed on this 3039 interface at this level. If the interface type is 3040 point-to-point,the count is zero."; 3041 } 3042 description "IS-IS interface event counters."; 3043 } 3044 description 3045 "Grouping for IS-IS interface event counters"; 3046 } 3048 grouping packet-counters { 3049 container packet-counters { 3050 config false; 3051 list level { 3052 key level; 3054 leaf level { 3055 type level-number; 3056 description "IS-IS level."; 3057 } 3058 container iih { 3059 leaf in { 3060 type uint32; 3061 description "Received IIH PDUs."; 3062 } 3063 leaf out { 3064 type uint32; 3065 description "Sent IIH PDUs."; 3066 } 3067 description "Number of IIH PDUs received/sent."; 3068 } 3069 container ish { 3070 leaf in { 3071 type uint32; 3072 description "Received ISH PDUs."; 3073 } 3074 leaf out { 3075 type uint32; 3076 description "Sent ISH PDUs."; 3077 } 3078 description 3079 "ISH PDUs received/sent."; 3080 } 3081 container esh { 3082 leaf in { 3083 type uint32; 3084 description "Received ESH PDUs."; 3085 } 3086 leaf out { 3087 type uint32; 3088 description "Sent ESH PDUs."; 3089 } 3090 description "Number of ESH PDUs received/sent."; 3091 } 3092 container lsp { 3093 leaf in { 3094 type uint32; 3095 description "Received LSP PDUs."; 3096 } 3097 leaf out { 3098 type uint32; 3099 description "Sent LSP PDUs."; 3101 } 3102 description "Number of LSP PDUs received/sent."; 3103 } 3104 container psnp { 3105 leaf in { 3106 type uint32; 3107 description "Received PSNP PDUs."; 3108 } 3109 leaf out { 3110 type uint32; 3111 description "Sent PSNP PDUs."; 3112 } 3113 description "Number of PSNP PDUs received/sent."; 3114 } 3115 container csnp { 3116 leaf in { 3117 type uint32; 3118 description "Received CSNP PDUs."; 3119 } 3120 leaf out { 3121 type uint32; 3122 description "Sent CSNP PDUs."; 3123 } 3124 description "Number of CSNP PDUs received/sent."; 3125 } 3126 container unknown { 3127 leaf in { 3128 type uint32; 3129 description "Received unknown PDUs."; 3130 } 3131 leaf out { 3132 type uint32; 3133 description "Sent unknown PDUs."; 3134 } 3135 description "Number of unknown PDUs received/sent."; 3136 } 3137 description 3138 "List of packet counter for supported llevels."; 3139 } 3140 description "Packet counters per IS-IS level."; 3141 } 3142 description 3143 "Grouping for per IS-IS Level packet counters."; 3144 } 3146 grouping spf-log { 3147 container spf-log { 3148 config false; 3149 list event { 3150 key id; 3152 leaf id { 3153 type uint32; 3154 description 3155 "Event identifier - purely internal value."; 3156 } 3157 leaf spf-type { 3158 type enumeration { 3159 enum full { 3160 description "Full SPF computation."; 3161 } 3162 enum route-only { 3163 description 3164 "Route reachability only SPF computation"; 3165 } 3166 } 3167 description "Type of SPF computation performed."; 3168 } 3169 leaf level { 3170 type level-number; 3171 description 3172 "IS-IS level number for SPF computation"; 3173 } 3174 leaf schedule-timestamp { 3175 type yang:timestamp; 3176 description 3177 "Timestamp of when the SPF computation was 3178 scheduled."; 3179 } 3180 leaf start-timestamp { 3181 type yang:timestamp; 3182 description 3183 "Timestamp of when the SPF computation started."; 3184 } 3185 leaf end-timestamp { 3186 type yang:timestamp; 3187 description 3188 "Timestamp of when the SPF computation ended."; 3189 } 3190 list trigger-lsp { 3191 key "lsp"; 3192 leaf lsp { 3193 type lsp-id; 3194 description 3195 "LSPID of the LSP triggering SPF computation."; 3196 } 3197 leaf sequence { 3198 type uint32; 3199 description 3200 "Sequence number of the LSP triggering SPF 3201 computation"; 3202 } 3203 description 3204 "This list includes the LSPs that triggered the 3205 SPF computation."; 3206 } 3207 description 3208 "List of computation events - implemented as a 3209 wrapping buffer."; 3210 } 3212 description 3213 "This container lists the SPF computation events."; 3214 } 3215 description "Grouping for spf-log events."; 3216 } 3218 grouping lsp-log { 3219 container lsp-log { 3220 config false; 3221 list event { 3222 key id; 3224 leaf id { 3225 type uint32; 3226 description 3227 "Event identifier - purely internal value."; 3228 } 3229 leaf level { 3230 type level-number; 3231 description 3232 "IS-IS level number for LSP"; 3233 } 3234 container lsp { 3235 leaf lsp { 3237 type lsp-id; 3238 description 3239 "LSPID of the LSP."; 3240 } 3241 leaf sequence { 3242 type uint32; 3243 description 3244 "Sequence number of the LSP."; 3246 } 3247 description 3248 "LSP identification container - either the received 3249 LSP or the locally generated LSP."; 3250 } 3252 leaf received-timestamp { 3253 type yang:timestamp; 3255 description 3256 "Timestamp of when the LSP was received. In case 3257 of local LSP update, the timestamp refers to the 3258 local LSP update time."; 3259 } 3261 leaf change { 3262 type identityref { 3263 base lsp-log-reason; 3264 } 3265 description "Type of LSP change."; 3266 } 3268 description 3269 "List of LSP events - implemented as a 3270 wrapping buffer."; 3271 } 3273 description 3274 "LSP reception and local LSP origination events 3275 container."; 3277 } 3278 description "Grouping for LSP log."; 3279 } 3281 grouping hostname-db { 3282 container hostnames { 3283 config false; 3284 list hostname { 3285 key system-id; 3286 leaf system-id { 3287 type system-id; 3288 description 3289 "System-id associated with the hostname."; 3290 } 3291 leaf hostname { 3292 type string; 3293 description 3294 "Hostname associated with the system ID."; 3296 } 3297 description 3298 "List of system-id/hostname associations."; 3299 } 3300 description 3301 "Hostname to system-id mapping database."; 3302 } 3303 description 3304 "Grouping for hostname to system-id mapping database."; 3305 } 3307 /* Groupings for the LSDB description */ 3309 grouping prefix-reachability-attributes { 3310 description 3311 "Grouping for extended reachability attributes of an 3312 IPv4 or IPv6 prefix."; 3314 leaf external-prefix-flag { 3315 type boolean; 3316 description "External prefix flag."; 3317 } 3318 leaf readvertisement-flag { 3319 type boolean; 3320 description "Readvertisement flag."; 3321 } 3322 leaf node-flag { 3323 type boolean; 3324 description "Node flag."; 3325 } 3326 } 3328 grouping prefix-ipv4-source-router-id { 3329 description 3330 "Grouping for the IPv4 source router ID of a prefix 3331 advertisement."; 3333 leaf ipv4-source-router-id { 3334 type inet:ipv4-address; 3335 description "IPv4 Source router ID address."; 3336 } 3337 } 3339 grouping prefix-ipv6-source-router-id { 3340 description 3341 "Grouping for the IPv6 source router ID of a prefix 3342 advertisement."; 3344 leaf ipv6-source-router-id { 3345 type inet:ipv6-address; 3346 description "IPv6 Source router ID address."; 3347 } 3348 } 3350 grouping prefix-attributes-extension { 3351 description "Prefix extended attributes."; 3353 uses prefix-reachability-attributes; 3354 uses prefix-ipv4-source-router-id; 3355 uses prefix-ipv6-source-router-id; 3356 } 3358 grouping prefix-ipv4-std { 3359 description 3360 "Grouping for attributes of an IPv4 standard prefix."; 3361 leaf up-down { 3362 type boolean; 3363 description "Value of up/down bit."; 3364 } 3365 leaf i-e { 3366 type boolean; 3367 description "Value of I/E bit."; 3368 } 3369 leaf ip-prefix { 3370 type inet:ipv4-address; 3371 description "IPv4 prefix address"; 3372 } 3373 leaf prefix-len { 3374 type uint8; 3375 description "IPv4 prefix length (in bits)"; 3376 } 3377 leaf default-metric { 3378 type std-metric; 3379 description "Default IS-IS metric for IPv4 prefix"; 3380 } 3381 container delay-metric { 3382 leaf metric { 3383 type std-metric; 3384 description "IS-IS delay metric for IPv4 prefix"; 3385 } 3386 leaf supported { 3387 type boolean; 3388 default "false"; 3389 description 3390 "Indicates whether IS-IS delay metric is supported."; 3391 } 3392 description "IS-IS delay metric container."; 3393 } 3394 container expense-metric { 3395 leaf metric { 3396 type std-metric; 3397 description "IS-IS expense metric for IPv4 prefix"; 3398 } 3399 leaf supported { 3400 type boolean; 3401 default "false"; 3402 description 3403 "Indicates whether IS-IS delay metric is supported."; 3404 } 3405 description "IS-IS expense metric container."; 3406 } 3407 container error-metric { 3408 leaf metric { 3409 type std-metric; 3410 description 3411 "This leaf describes the IS-IS error metric value"; 3412 } 3413 leaf supported { 3414 type boolean; 3415 default "false"; 3416 description "IS-IS error metric for IPv4 prefix"; 3417 } 3418 description "IS-IS error metric container."; 3419 } 3420 } 3422 grouping prefix-ipv4-extended { 3423 description 3424 "Grouping for attributes of an IPv4 extended prefix."; 3425 leaf up-down { 3426 type boolean; 3427 description "Value of up/down bit."; 3428 } 3429 leaf ip-prefix { 3430 type inet:ipv4-address; 3431 description "IPv4 prefix address"; 3432 } 3433 leaf prefix-len { 3434 type uint8; 3435 description "IPv4 prefix length (in bits)"; 3436 } 3438 leaf metric { 3439 type wide-metric; 3440 description "IS-IS wide metric value"; 3441 } 3442 leaf-list tag { 3443 type uint32; 3444 description 3445 "List of 32-bit tags associated with the IPv4 prefix."; 3446 } 3447 leaf-list tag64 { 3448 type uint64; 3449 description 3450 "List of 32-bit tags associated with the IPv4 prefix."; 3451 } 3452 uses prefix-attributes-extension; 3453 } 3455 grouping prefix-ipv6-extended { 3456 description "Grouping for attributes of an IPv6 prefix."; 3457 leaf up-down { 3458 type boolean; 3459 description "Value of up/down bit."; 3460 } 3461 leaf ip-prefix { 3462 type inet:ipv6-address; 3463 description "IPv6 prefix address"; 3464 } 3465 leaf prefix-len { 3466 type uint8; 3467 description "IPv4 prefix length (in bits)"; 3468 } 3469 leaf metric { 3470 type wide-metric; 3471 description "IS-IS wide metric value"; 3472 } 3473 leaf-list tag { 3474 type uint32; 3475 description 3476 "List of 32-bit tags associated with the IPv4 prefix."; 3477 } 3478 leaf-list tag64 { 3479 type uint64; 3480 description 3481 "List of 32-bit tags associated with the IPv4 prefix."; 3482 } 3483 uses prefix-attributes-extension; 3484 } 3486 grouping neighbor-extended { 3487 description 3488 "Grouping for attributes of an IS-IS extended neighbor."; 3489 leaf neighbor-id { 3490 type system-id; 3491 description "System-id of the extended neighbor."; 3492 } 3493 leaf metric { 3494 type wide-metric; 3495 description "IS-IS wide metric for extended neighbor"; 3496 } 3497 } 3499 grouping neighbor { 3500 description "IS-IS standard neighbor grouping."; 3501 leaf neighbor-id { 3502 type system-id; 3503 description "IS-IS neighbor system-id"; 3504 } 3505 leaf i-e { 3506 type boolean; 3507 description 3508 "Internal or External (I/E) Metric bit value"; 3509 } 3510 leaf default-metric { 3511 type std-metric; 3512 description "IS-IS default metric value"; 3513 } 3514 container delay-metric { 3515 leaf metric { 3516 type std-metric; 3517 description "IS-IS delay metric value"; 3518 } 3519 leaf supported { 3520 type boolean; 3521 default "false"; 3522 description "IS-IS delay metric supported"; 3523 } 3524 description "IS-IS delay metric container"; 3525 } 3526 container expense-metric { 3527 leaf metric { 3528 type std-metric; 3529 description "IS-IS delay expense metric value"; 3530 } 3531 leaf supported { 3532 type boolean; 3533 default "false"; 3534 description "IS-IS delay expense metric supported"; 3535 } 3536 description "IS-IS delay expense metric container"; 3537 } 3538 container error-metric { 3539 leaf metric { 3540 type std-metric; 3541 description "IS-IS error metric value"; 3542 } 3543 leaf supported { 3544 type boolean; 3545 default "false"; 3546 description "IS-IS error metric supported"; 3547 } 3548 description "IS-IS error metric container"; 3549 } 3550 } 3552 grouping lsp-entry { 3553 description "IS-IS LSP database entry groupting"; 3555 leaf decoded-completed { 3556 type boolean; 3557 description "IS-IS LSP body fully decoded."; 3558 } 3559 leaf raw-data { 3560 type yang:hex-string; 3561 description 3562 "The hexadecial representation of the complete LSP in 3563 network-byte order (NBO) as received or originated."; 3564 } 3565 leaf lsp-id { 3566 type lsp-id; 3567 description "LSP ID of the LSP"; 3568 } 3569 leaf checksum { 3570 type uint16; 3571 description "LSP checksum"; 3572 } 3573 leaf remaining-lifetime { 3574 type uint16; 3575 units "seconds"; 3576 description 3577 "Remaining lifetime (in seconds) until LSP expiration."; 3578 } 3579 leaf sequence { 3580 type uint32; 3581 description 3582 "This leaf describes the sequence number of the LSP."; 3583 } 3584 leaf attributes { 3585 type bits { 3586 bit partitioned { 3587 description "Originator partition repair supported"; 3588 } 3589 bit attached-error { 3590 description 3591 "If set, the originator is attached to 3592 another area using the referred metric."; 3593 } 3594 bit attached-expense { 3595 description 3596 "If set, the originator is attached to 3597 another area using the referred metric."; 3598 } 3599 bit attached-delay { 3600 description 3601 "If set, the originator is attached to 3602 another area using the referred metric."; 3603 } 3604 bit attached-default { 3605 description 3606 "If set, the originator is attached to 3607 another area using the referred metric."; 3608 } 3609 bit overload { 3610 description 3611 "If set, the originator is overloaded, 3612 and must be avoided in path calculation."; 3613 } 3614 } 3615 description "LSP attributes"; 3616 } 3618 leaf-list ipv4-addresses { 3619 type inet:ipv4-address; 3620 description 3621 "List of IPv4 addresses of the IS-IS node - IS-IS 3622 reference is TLV 132."; 3623 } 3625 leaf-list ipv6-addresses { 3626 type inet:ipv6-address; 3627 description 3628 "List of IPv6 addresses of the IS-IS node - IS-IS 3629 reference is TLV 232."; 3630 } 3631 leaf ipv4-te-routerid { 3632 type inet:ipv4-address; 3633 description 3634 "IPv4 Traffic Engineering router ID of the IS-IS node - 3635 IS-IS reference is TLV 134."; 3636 } 3638 leaf ipv6-te-routerid { 3639 type inet:ipv6-address; 3640 description 3641 "IPv6 Traffic Engineering router ID of the IS-IS node - 3642 IS-IS reference is TLV 140."; 3643 } 3645 leaf-list protocol-supported { 3646 type uint8; 3647 description 3648 "List of supported protocols of the IS-IS node - 3649 IS-IS reference is TLV 129."; 3650 } 3652 leaf dynamic-hostname { 3653 type string; 3654 description 3655 "Host Name of the IS-IS node - IS-IS reference 3656 is TLV 137."; 3657 } 3659 container authentication { 3660 leaf authentication-type { 3661 type string; 3662 description 3663 "Authentication type to be used with IS-IS node."; 3664 } 3665 leaf authentication-key { 3666 type string; 3667 description 3668 "Authentication keyto be used. For security reasons, 3669 the authentication key MUST NOT be presented in 3670 plaintext format. It is recommended to use an MD5 3671 hash to present the authentication-key."; 3672 } 3673 description 3674 "IS-IS node authentication information container - 3675 IS-IS reference is TLV 10."; 3676 } 3678 container mt-entries { 3679 list topology { 3680 description 3681 "List of topologies supported"; 3683 leaf MT-ID { 3684 type uint16 { 3685 range "0 .. 4095"; 3686 } 3687 description 3688 "Multi-Topolgoy identifier of topology."; 3689 } 3691 leaf attributes { 3692 type bits { 3693 bit overload { 3694 description 3695 "If set, the originator is overloaded, 3696 and must be avoided in path calculation."; 3697 } 3698 bit attached { 3699 description 3700 "If set, the originator is attached to 3701 another area using the referred metric."; 3702 } 3703 } 3704 description 3705 "Attributes of the LSP for the associated 3706 topology."; 3707 } 3708 } 3709 description 3710 "IS-IS node topology information container - 3711 IS-IS reference is TLV 229."; 3712 } 3714 list router-capabilities { 3715 leaf flags { 3716 type bits { 3717 bit flooding { 3718 position 0; 3719 description 3720 "If the S bit is set, the IS-IS Router CAPABILITY 3721 TLV MUST be flooded across the entire routing 3722 domain. If the S bit is clear, the TLV MUST NOT 3723 be leaked between levels. This bit MUST NOT 3724 be altered during the TLV leaking."; 3725 } 3726 bit down { 3727 position 1; 3728 description 3729 "When the IS-IS Router CAPABILITY TLV is leaked 3730 from level-2 to level-1, the D bit MUST be set. 3731 Otherwise, this bit MUST be clear. IS-IS Router 3732 capability TLVs with the D bit set MUST NOT be 3733 leaked from level-1 to level-2 in to prevent 3734 TLV looping."; 3735 } 3736 } 3737 description "Router Capability Flags"; 3738 } 3739 container node-tags { 3740 if-feature node-tag; 3741 list node-tag { 3742 leaf tag { 3743 type uint32; 3744 description "Node tag value."; 3745 } 3746 description "List of tags."; 3747 } 3748 description "Node Tag container"; 3749 } 3751 leaf binary { 3752 type binary; 3753 description 3754 "Binary encoding of the IS-IS node capabilities"; 3755 } 3756 description 3757 "IS-IS node capabilities container. This container may 3758 be extended with detailed information - IS-IS 3759 reference is TLV 242."; 3760 } 3762 container is-neighbor { 3763 list neighbor { 3764 uses neighbor; 3765 description "List of neighbors."; 3766 } 3767 description 3768 "Standard IS neighbors container - IS-IS reference is 3769 TLV 2."; 3770 } 3772 container extended-is-neighbor { 3773 list neighbor { 3774 uses neighbor-extended; 3775 description 3776 "List of extended IS neighbors"; 3777 } 3778 description 3779 "Standard IS extended neighbors container - IS-IS 3780 reference is TLV 22"; 3781 } 3783 container ipv4-internal-reachability { 3784 list prefixes { 3785 uses prefix-ipv4-std; 3786 description "List of prefixes."; 3787 } 3788 description 3789 "IPv4 internal reachability information container - IS-IS 3790 reference is TLV 128."; 3791 } 3793 container ipv4-external-reachability { 3794 list prefixes { 3795 uses prefix-ipv4-std; 3796 description "List of prefixes."; 3797 } 3798 description 3799 "IPv4 external reachability information container - 3800 IS-IS reference is TLV 130."; 3801 } 3803 container extended-ipv4-reachability { 3804 list prefixes { 3805 uses prefix-ipv4-extended; 3806 description "List of prefixes."; 3807 } 3808 description 3809 "IPv4 extended reachability information container - 3810 IS-IS reference is TLV 135."; 3811 } 3813 container mt-is-neighbor { 3814 list neighbor { 3815 leaf mt-id { 3816 type uint16 { 3817 range "0 .. 4095"; 3818 } 3819 description "Multi-topology (MT) identifier"; 3820 } 3821 uses neighbor-extended; 3822 description "List of neighbors."; 3824 } 3825 description 3826 "IS-IS multi-topology neighbor container - IS-IS 3827 reference is TLV 223."; 3828 } 3830 container mt-extended-ipv4-reachability { 3831 list prefixes { 3832 leaf mt-id { 3833 type uint16 { 3834 range "0 .. 4095"; 3835 } 3836 description "Multi-topology (MT) identifier"; 3837 } 3838 uses prefix-ipv4-extended; 3839 description "List of extended prefixes."; 3840 } 3841 description 3842 "IPv4 multi-topolgy (MT) extended reachability 3843 information container - IS-IS reference is TLV 235."; 3844 } 3846 container mt-ipv6-reachability { 3847 list prefixes { 3848 leaf MT-ID { 3849 type uint16 { 3850 range "0 .. 4095"; 3851 } 3852 description "Multi-topology (MT) identifier"; 3853 } 3854 uses prefix-ipv6-extended; 3855 description "List of IPv6 extended prefixes."; 3856 } 3857 description 3858 "IPv6 multi-topolgy (MT) extended reachability 3859 information container - IS-IS reference is TLV 237."; 3860 } 3862 container ipv6-reachability { 3863 list prefixes { 3864 uses prefix-ipv6-extended; 3865 description "List of IPv6 prefixes."; 3866 } 3867 description 3868 "IPv6 reachability information container - IS-IS 3869 reference is TLV 236."; 3870 } 3871 } 3872 grouping lsdb { 3873 description "Link State Database (LSDB) grouping"; 3874 container database { 3875 config false; 3876 list level-db { 3877 key level; 3879 leaf level { 3880 type level-number; 3881 description "LSDB level number (1 or 2)"; 3882 } 3883 list lsp { 3884 key lsp-id; 3885 uses lsp-entry; 3886 description "List of LSPs in LSDB"; 3887 } 3888 description "LSP list for LSDB level container"; 3889 } 3890 description "IS-IS Link State database container"; 3891 } 3892 } 3894 /* Augmentations */ 3896 augment "/rt:routing/" 3897 +"rt:ribs/rt:rib/rt:routes/rt:route" { 3898 when "rt:source-protocol = 'isis:isis'" { 3899 description "IS-IS-specific route attributes."; 3900 } 3901 uses route-content; 3902 description 3903 "This augments route object in RIB with IS-IS-specific 3904 attributes."; 3905 } 3907 augment "/if:interfaces/if:interface" { 3908 leaf clns-mtu { 3909 type uint16; 3910 description "CLNS MTU of the interface"; 3911 } 3912 description "ISO interface config."; 3913 } 3915 augment "/rt:routing/rt:control-plane-protocols/" 3916 +"rt:control-plane-protocol" { 3917 when "rt:type = 'isis:isis'" { 3918 description 3919 "This augment is only valid when routing protocol 3920 instance type is 'isis'"; 3921 } 3922 description 3923 "This augments a routing protocol instance with IS-IS 3924 specific parameters."; 3925 container isis { 3926 must "count(area-address) > 0" { 3927 error-message 3928 "At least one area-address must be configured."; 3929 description 3930 "Enforce configuration of at least one area."; 3931 } 3933 uses isis-global-cfg; 3934 container fast-reroute { 3935 if-feature fast-reroute; 3936 uses fast-reroute-global-cfg; 3937 uses fast-reroute-global-state; 3938 description 3939 "IP Fast ReRoute (IPFRR) global container"; 3940 } 3941 container spf-control { 3942 leaf paths { 3943 if-feature max-ecmp; 3944 type uint16 { 3945 range "1..32"; 3946 } 3947 description 3948 "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; 3949 } 3950 container ietf-spf-delay { 3951 if-feature ietf-spf-delay; 3952 uses ietf-spf-delay-cfg; 3953 uses ietf-spf-delay-state; 3954 description "IETF SPF delay algorithm container"; 3955 } 3956 description 3957 "SPF computation-related information container"; 3958 } 3959 container topologies { 3960 if-feature multi-topology; 3961 list topology { 3962 key "name"; 3963 leaf enable { 3964 type boolean; 3965 description "Topology enable configuration"; 3966 } 3967 leaf name { 3968 type leafref { 3969 path "../../../../../../rt:ribs/rt:rib/rt:name"; 3970 } 3971 description 3972 "Routing Information Base (RIB) corresponding 3973 to topology."; 3974 } 3976 uses isis-global-topologies-cfg; 3978 description "List of topologies"; 3979 } 3980 description "Multi-topology container"; 3981 } 3982 container interfaces { 3983 list interface { 3984 key "name"; 3985 leaf name { 3986 type if:interface-ref; 3988 description 3989 "Reference to the interface within 3990 the routing-instance."; 3991 } 3992 uses isis-if-cfg; 3993 container fast-reroute { 3994 if-feature fast-reroute; 3995 uses fast-reroute-if-cfg; 3996 description 3997 "IP Fast ReRoute (IPFRR) interface container"; 3998 } 3999 container topologies { 4000 if-feature multi-topology; 4001 list topology { 4002 key name; 4004 leaf name { 4005 type leafref { 4006 path "../../../../../../../../"+ 4007 "rt:ribs/rt:rib/rt:name"; 4008 } 4010 description 4011 "Routing Information Base (RIB) corresponding 4012 to topology."; 4013 } 4014 uses isis-if-topologies-cfg; 4015 description "List of interface topologies"; 4016 } 4017 description "Multi-topology container"; 4018 } 4019 uses adjacency-state; 4020 uses event-counters; 4021 uses packet-counters; 4022 description "List of IS-IS interfaces."; 4023 } 4024 description 4025 "IS-IS interface specific configuration container"; 4026 } 4027 uses spf-log; 4028 uses lsp-log; 4029 uses hostname-db; 4030 uses lsdb; 4031 uses local-rib; 4032 uses system-counters; 4034 description 4035 "IS-IS configuration/state top-level container"; 4036 } 4037 } 4039 /* RPC methods */ 4041 rpc clear-adjacency { 4042 description 4043 "This RPC request clears a particular set of IS-IS 4044 adjacencies. If the operation fails due to an internal 4045 reason, then the error-tag and error-app-tag should be 4046 set indicating the reason for the failure."; 4047 input { 4049 leaf routing-protocol-instance-name { 4050 type instance-state-ref; 4051 mandatory "true"; 4052 description 4053 "Name of the IS-IS protocol instance whose IS-IS 4054 information is being queried. 4056 If the corresponding IS-IS instance doesn't exist, 4057 then the operation will fail with an error-tag of 4058 'data-missing' and an error-app-tag of 4059 'routing-protocol-instance-not-found'."; 4060 } 4061 leaf level { 4062 type level; 4063 description 4064 "IS-IS level of the adjacency to be cleared. If the 4065 IS-IS level is level-1-2, both level 1 and level 2 4066 adjacencies would be cleared. 4068 If the value provided is different from the one 4069 authorized in the enum type, then the operation 4070 SHALL fail with an error-tag of 'data-missing' and 4071 an error-app-tag of 'bad-isis-level'."; 4072 } 4073 leaf interface { 4074 type string; 4075 description 4076 "IS-IS interface name. 4078 If the corresponding IS-IS interface doesn't exist, 4079 then the operation SHALL fail with an error-tag of 4080 'data-missing' and an error-app-tag of 4081 'isis-interface-not-found'."; 4082 } 4083 } 4084 } 4086 rpc clear-database { 4087 description 4088 "This RPC request clears a particular IS-IS database. If 4089 the operation fails for an IS-IS internal reason, then 4090 the error-tag and error-app-tag should be set 4091 indicating the reason for the failure."; 4092 input { 4093 leaf routing-protocol-instance-name { 4094 type instance-state-ref; 4095 mandatory "true"; 4096 description 4097 "Name of the IS-IS protocol instance whose IS-IS 4098 database(s) is/are being cleard. 4100 If the corresponding IS-IS instance doesn't exist, 4101 then the operation will fail with an error-tag of 4102 'data-missing' and an error-app-tag of 4103 'routing-protocol-instance-not-found'."; 4104 } 4105 leaf level { 4106 type level; 4107 description 4108 "IS-IS level of the adjacency to be cleared. If the 4109 IS-IS level is level-1-2, both level 1 and level 2 4110 databases would be cleared. 4112 If the value provided is different from the one 4113 authorized in the enum type, then the operation 4114 SHALL fail with an error-tag of 'data-missing' and 4115 an error-app-tag of 'bad-isis-level'."; 4116 } 4117 } 4118 } 4120 /* Notifications */ 4122 notification database-overload { 4123 uses notification-instance-hdr; 4125 leaf overload { 4126 type enumeration { 4127 enum off { 4128 description 4129 "Indicates IS-IS instance has left overload state"; 4130 } 4131 enum on { 4132 description 4133 "Indicates IS-IS instance has entered overload state"; 4134 } 4136 } 4137 description "New overload state of the IS-IS instance"; 4138 } 4139 description 4140 "This notification is sent when an IS-IS instance 4141 overload state changes."; 4142 } 4144 notification lsp-too-large { 4145 uses notification-instance-hdr; 4146 uses notification-interface-hdr; 4148 leaf pdu-size { 4149 type uint32; 4150 description "Size of the LSP PDU"; 4151 } 4152 leaf lsp-id { 4153 type lsp-id; 4154 description "LSP ID"; 4155 } 4156 description 4157 "This notification is sent when we attempt to propagate 4158 an LSP that is larger than the dataLinkBlockSize for the 4159 circuit. The notification generation must be throttled 4160 with at least 5 seconds betweeen successive 4161 notifications."; 4162 } 4164 notification if-state-change { 4165 uses notification-instance-hdr; 4166 uses notification-interface-hdr; 4168 leaf state { 4169 type if-state-type; 4170 description "Interface state."; 4171 } 4172 description 4173 "This notification is sent when an interface 4174 state change is detected."; 4175 } 4177 notification corrupted-lsp-detected { 4178 uses notification-instance-hdr; 4179 leaf lsp-id { 4180 type lsp-id; 4181 description "LSP ID"; 4182 } 4183 description 4184 "This notification is sent when we find that 4185 an LSP that was stored in memory has become 4186 corrupted."; 4187 } 4189 notification attempt-to-exceed-max-sequence { 4190 uses notification-instance-hdr; 4191 leaf lsp-id { 4192 type lsp-id; 4193 description "LSP ID"; 4194 } 4195 description 4196 "This notification is sent when the system 4197 wraps the 32-bit sequence counter of an LSP."; 4198 } 4200 notification id-len-mismatch { 4201 uses notification-instance-hdr; 4202 uses notification-interface-hdr; 4204 leaf pdu-field-len { 4205 type uint8; 4206 description "Size of the ID length in the received PDU"; 4207 } 4208 leaf raw-pdu { 4209 type binary; 4210 description "Received raw PDU."; 4211 } 4212 description 4213 "This notification is sent when we receive a PDU 4214 with a different value for the System ID length. 4215 The notification generation must be throttled 4216 with at least 5 seconds betweeen successive 4217 notifications."; 4218 } 4220 notification max-area-addresses-mismatch { 4221 uses notification-instance-hdr; 4222 uses notification-interface-hdr; 4224 leaf max-area-addresses { 4225 type uint8; 4226 description "Received number of supported areas"; 4227 } 4228 leaf raw-pdu { 4229 type binary; 4230 description "Received raw PDU."; 4231 } 4232 description 4233 "This notification is sent when we receive a PDU 4234 with a different value for the Maximum Area Addresses. 4235 The notification generation must be throttled 4236 with at least 5 seconds betweeen successive 4237 notifications."; 4238 } 4240 notification own-lsp-purge { 4241 uses notification-instance-hdr; 4242 uses notification-interface-hdr; 4243 leaf lsp-id { 4244 type lsp-id; 4245 description "LSP ID"; 4246 } 4247 description 4248 "This notification is sent when the system receives 4249 a PDU with its own system ID and zero age."; 4251 } 4253 notification sequence-number-skipped { 4254 uses notification-instance-hdr; 4255 uses notification-interface-hdr; 4256 leaf lsp-id { 4257 type lsp-id; 4258 description "LSP ID"; 4259 } 4260 description 4261 "This notification is sent when the system receives a 4262 PDU with its own system ID and different contents. The 4263 system has to reoriginate the LSP with a higher sequence 4264 number."; 4265 } 4267 notification authentication-type-failure { 4268 uses notification-instance-hdr; 4269 uses notification-interface-hdr; 4270 leaf raw-pdu { 4271 type binary; 4272 description "Received raw PDU."; 4273 } 4274 description 4275 "This notification is sent when the system receives a 4276 PDU with the wrong authentication type field. 4277 The notification generation must be throttled 4278 with at least 5 seconds betweeen successive 4279 notifications."; 4280 } 4282 notification authentication-failure { 4283 uses notification-instance-hdr; 4284 uses notification-interface-hdr; 4285 leaf raw-pdu { 4286 type binary; 4287 description "Received raw PDU."; 4288 } 4289 description 4290 "This notification is sent when the system receives 4291 a PDU with the wrong authentication information. 4292 The notification generation must be throttled with 4293 with at least 5 seconds betweeen successive 4294 notifications."; 4295 } 4297 notification version-skew { 4298 uses notification-instance-hdr; 4299 uses notification-interface-hdr; 4300 leaf protocol-version { 4301 type uint8; 4302 description "Protocol version received in the PDU."; 4303 } 4304 leaf raw-pdu { 4305 type binary; 4306 description "Received raw PDU."; 4307 } 4308 description 4309 "This notification is sent when the system receives a 4310 PDU with a different protocol version number. 4311 The notification generation must be throttled 4312 with at least 5 seconds betweeen successive 4313 notifications."; 4314 } 4316 notification area-mismatch { 4317 uses notification-instance-hdr; 4318 uses notification-interface-hdr; 4319 leaf raw-pdu { 4320 type binary; 4321 description "Received raw PDU."; 4322 } 4323 description 4324 "This notification is sent when the system receives a 4325 Hello PDU from an IS that does not share any area 4326 address. The notification generation must be throttled 4327 with at least 5 seconds betweeen successive 4328 notifications."; 4329 } 4331 notification rejected-adjacency { 4332 uses notification-instance-hdr; 4333 uses notification-interface-hdr; 4334 leaf raw-pdu { 4335 type binary; 4336 description 4337 "Received raw PDU."; 4338 } 4339 leaf reason { 4340 type string; 4341 description 4342 "The system may provide a reason to reject the 4343 adjacency. If the reason is not available, 4344 an empty string will be returned."; 4345 } 4346 description 4347 "This notification is sent when the system receives a 4348 Hello PDU from an IS but does not establish an adjacency 4349 for some reason. The notification generation must be 4350 throttled with at least 5 seconds betweeen successive 4351 notifications."; 4352 } 4354 notification protocols-supported-mismatch { 4355 uses notification-instance-hdr; 4356 uses notification-interface-hdr; 4357 leaf raw-pdu { 4358 type binary; 4359 description "Received raw PDU."; 4360 } 4361 leaf-list protocols { 4362 type uint8; 4363 description 4364 "List of protocols supported by the remote system."; 4365 } 4366 description 4367 "This notification is sent when the system receives a 4368 non-pseudonode LSP that has no matching protocols 4369 supported. The notification generation must be throttled 4370 with at least 5 seconds betweeen successive 4371 notifications."; 4372 } 4374 notification lsp-error-detected { 4375 uses notification-instance-hdr; 4376 uses notification-interface-hdr; 4377 leaf lsp-id { 4378 type lsp-id; 4379 description "LSP ID."; 4380 } 4381 leaf raw-pdu { 4382 type binary; 4383 description "Received raw PDU."; 4384 } 4385 leaf error-offset { 4386 type uint32; 4387 description 4388 "If the problem is a malformed TLV, the error-offset 4389 points to the start of the TLV. If the problem is with 4390 the LSP header, the error-offset points to the errant 4391 byte"; 4392 } 4393 leaf tlv-type { 4394 type uint8; 4395 description 4396 "If the problem is a malformed TLV, the tlv-type is set 4397 to the type value of the suspicious TLV. Otherwise, 4398 this leaf is not present."; 4399 } 4400 description 4401 "This notification is sent when the system receives an 4402 ' LSP with a parse error. The notification generation must 4403 be throttled with at least 5 seconds betweeen successive 4404 notifications."; 4405 } 4407 notification adjacency-state-change { 4408 uses notification-instance-hdr; 4409 uses notification-interface-hdr; 4410 leaf neighbor { 4411 type string; 4412 description 4413 "Name of the neighbor. If the name of the neighbor is 4414 not available, it is not returned."; 4415 } 4416 leaf neighbor-system-id { 4417 type system-id; 4418 description "Neighbor system-id"; 4419 } 4420 leaf state { 4421 type adj-state-type; 4423 description "New state of the IS-IS adjacency."; 4424 } 4425 leaf reason { 4426 type string; 4427 description 4428 "If the adjacency is going to DOWN, this leaf provides 4429 a reason for the adjacency going down. The reason is 4430 provided as a text. If the adjacency is going to UP, no 4431 reason is provided."; 4432 } 4433 description 4434 "This notification is sent when an IS-IS adjacency 4435 moves to Up state or to Down state."; 4436 } 4438 notification lsp-received { 4439 uses notification-instance-hdr; 4440 uses notification-interface-hdr; 4441 leaf lsp-id { 4442 type lsp-id; 4443 description "LSP ID"; 4444 } 4445 leaf sequence { 4446 type uint32; 4447 description "Sequence number of the received LSP."; 4448 } 4449 leaf received-timestamp { 4450 type yang:timestamp; 4452 description "Timestamp when the LSP was received."; 4453 } 4454 leaf neighbor-system-id { 4455 type system-id; 4456 description "Neighbor system-id of LSP sender"; 4457 } 4458 description 4459 "This notification is sent when an LSP is received. 4460 The notification generation must be throttled with at 4461 least 5 seconds betweeen successive notifications."; 4462 } 4464 notification lsp-generation { 4465 uses notification-instance-hdr; 4467 leaf lsp-id { 4468 type lsp-id; 4469 description "LSP ID"; 4470 } 4471 leaf sequence { 4472 type uint32; 4473 description "Sequence number of the received LSP."; 4474 } 4475 leaf send-timestamp { 4476 type yang:timestamp; 4478 description "Timestamp when our LSP was regenerated."; 4479 } 4480 description 4481 "This notification is sent when an LSP is regenerated. 4482 The notification generation must be throttled with at 4483 least 5 seconds betweeen successive notifications."; 4484 } 4485 } 4487 4489 7. Security Considerations 4491 Configuration and state data defined in this document are designed to 4492 be accessed via the NETCONF protocol [RFC6241]. 4494 As IS-IS is an IGP protocol (critical piece of the network), ensuring 4495 stability and security of the protocol is mandatory for the network 4496 service. 4498 Authors recommends to implement NETCONF access control model 4499 ([RFC6536]) to restrict access to all or part of the configuration to 4500 specific users. Access control to RPCs is also critical as RPC 4501 allows to clear protocol datastructures that would definitively 4502 impact the network service. This kind of RPC needs only to be used 4503 in specific cases by well-known experienced users. 4505 Authors consider that all the configuration is considered as 4506 sensitive/vulnerable as well as RPCs. But security teams can decide 4507 to open some part of the configuration to less experienced users 4508 depending on the internal organization, for example: 4510 o User FullWrite: would access to the whole data model. This kind 4511 of profile may be restricted to few experienced people. 4513 o User PartialWrite: would only access to configuration part within 4514 /isis/interfaces/interface. So this kind of profile is restricted 4515 to creation/modification/deletion of interfaces. This profile 4516 does not have access to RPC. 4518 o User Read: would only access to the operational states. 4520 Unauthorized access to configuration or RPC may cause high damages to 4521 the network service. 4523 The "isis/database" may contain authentication information. As 4524 presented in the description of the "/isis/database/level- 4525 1/lsp/authentication/authentication-key", the authentication MUST 4526 never be displayed in a plaintext format for security reason. 4527 Authors recommend the usage of MD5 to display or return the 4528 authentication-key. 4530 Some authentication-key may also be required in the "isis" writable 4531 container. When configuring IS-IS using the NETCONF protocol, 4532 authors recommends the usage of secure transport of NETCONF using SSH 4533 ([RFC6242]). 4535 8. Contributors 4537 Authors would like to thank Kiran Agrahara Sreenivasa, Dean 4538 Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the 4539 draft. 4541 9. Acknowledgements 4543 TBD. 4545 10. IANA Considerations 4547 The IANA is requested to assign two new URIs from the IETF XML 4548 registry ([RFC3688]). Authors are suggesting the following URI: 4550 URI: urn:ietf:params:xml:ns:yang:ietf-isis 4551 Registrant Contact: IS-IS WG 4552 XML: N/A, the requested URI is an XML namespace 4554 This document also requests one new YANG module name in the YANG 4555 Module Names registry ([RFC6020]) with the following suggestion: 4557 name: ietf-isis 4558 namespace: urn:ietf:params:xml:ns:yang:ietf-isis 4559 prefix: isis 4560 reference: RFC XXXX 4562 11. Change log for ietf-isis YANG module 4564 11.1. From version -22 to version -23 4566 o Fix revision date of the module 4568 11.2. From version -21 to version -22 4570 o TE router-id modeling alignment with OSPF. 4572 o Add max-ecmp + feature in spf-control container (alignment with 4573 OSPF). 4575 11.3. From version -20 to version -21 4577 o Model revision date fix 4579 11.4. From version -19 to version -20 4581 o Moved to Yang 1.1 4583 o Lower case enumerations 4585 o Add RFC references to features 4586 o Remove segment-routing feature 4588 o Modified BFD activation modeling 4590 11.5. From version -18 to version -19 4592 o Align with draft-ietf-netmod-rfc8022bis. 4594 o Modify address family types as per draft-ietf-rtgwg-routing-types- 4595 17. 4597 11.6. From version -17 to version -18 4599 o NMDA compliancy. 4601 o Set some default values. 4603 o Align with iana-rt-types module. 4605 11.7. From version -16 to version -17 4607 o Cosmetic fixes. 4609 o Use of rt-types model. 4611 11.8. From version -15 to version -16 4613 o Alignment with last IETF key chain model. 4615 o lsp-log "change" leaf moved as an identity. 4617 o Incremental SPF removed from spf-log types. 4619 11.9. From version -14 to version -15 4621 o Alignment with OSPF model done: 4623 * Added spf-control container with IETF SPF delay algorithm as a 4624 feature. 4626 * Added graceful-restart options. 4628 * Added nsr as a feature. 4630 * Removed per topology FRR. Need to be augmented if necessary. 4632 * Created an ldp container within mpls. 4634 * Renamed igp-ldp-sync to igp-sync. 4636 * Added auto-cost container. 4638 * Moved reference-bandwidth under auto-cost container. 4640 * Added IS-IS local RIB as operational state. 4642 * Added decode-completed and raw-data leaves in the LSDB model. 4644 * Modified the notification header. 4646 11.10. From version -13 to version -14 4648 o Segment Routing extensions are now in a separate document. 4650 11.11. From version -12 to version -13 4652 o Move feature nlpid-control to container rather than list. 4654 o Rename multi-topology to topologies to align with OSPF. 4656 o Rename bfd/enabled to bfd/enable for consistency reason. 4658 o Add support for NSR with a feature. 4660 11.12. From version -09 to version -12 4662 o Rename node-tag container to node-tags. 4664 11.13. From version -08 to version -09 4666 o Added container before af list. 4668 o Added container before topology list. 4670 o Aligned LFA if per level cfg. 4672 o Align to draft-ietf-netmod-routing-cfg-23. 4674 11.14. From version -07 to version -08 4676 o Remove selector from system-id type. 4678 o Add some default values. 4680 o Moved lists to containers+groupings for per level configuration. 4682 o remove routing-instance as per core routing model v21. 4684 o added BFD leaf (no more BFD protocol model). 4686 o changed keychain module reference. 4688 11.15. From version -05 to version -07 4690 o Move Overload config from list to container. 4692 o Move Overload-max-metric config from list to container. 4694 o Move preference config from list to container. 4696 o Add Node flag in config. 4698 o Removed BFD config => moved to isis-bfd module. 4700 o Remove call to routing policy model. 4702 11.16. From version -03 to version -05 4704 o Correct invalid references to previous versions of core routing 4705 model. 4707 o Remove BFD config and replace by groupings from ietf-bfd. 4709 o Adding routing-policy support through routing-policy model. 4711 11.17. From version -02 to version -03 4713 o Reviewed config and op state groupings. 4715 o Add default value to lfa candidate-disabled. 4717 o Add enable leaf to isis container to reflect admin state. 4719 o Move to VRF centric only. 4721 o Segment routing is part os a separate module. 4723 11.18. From version -01 to version -02 4725 o Adding IPFRR. 4727 o Adding igp-ldp-sync. 4729 o Adding segment-routing. 4731 o Adding instance reference to operational states. 4733 o Move AF type from string to identity. 4735 o Updated router-capability in LSDB description. 4737 o packet counters moved to interface-packet-counters. 4739 o Added modification information in lsp-log. 4741 o Removing igp-ldp-sync timer in IS-IS. 4743 o Defining hierarchy for operational states. 4745 o Adding clns-mtu. 4747 o Adding key-chain. 4749 11.19. From version -00 to version -01 4751 o Interface metric move from af container to interface container. 4753 o Hello-padding on interface moved to hello-padding-disable with 4754 empty type. 4756 o three-way-handshake removed. 4758 o route preference changed to a choice. 4760 o csnp-authentication/psnp-authentication merged to authentication 4761 container. 4763 o lsp-gen-interval-exp-delay removed. 4765 o Added overload-max-metric feature. 4767 o overload-max-metric is in a separate container. 4769 o Change hello-padding to container. 4771 o Change bfd to container. 4773 o Make BFD a feature. 4775 o Create mpls-te container and put router-id inside. 4777 o Remove GR helper disable and timers. 4779 12. Normative References 4781 [I-D.ietf-netmod-routing-cfg] 4782 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 4783 Management", draft-ietf-netmod-routing-cfg-25 (work in 4784 progress), November 2016. 4786 [I-D.ietf-rtgwg-yang-key-chain] 4787 Lindem, A., Qu, Y., Yeung, D., Chen, I., and Z. Zhang, 4788 "Routing Key Chain YANG Data Model", draft-ietf-rtgwg- 4789 yang-key-chain-24 (work in progress), April 2017. 4791 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4792 Requirement Levels", BCP 14, RFC 2119, 4793 DOI 10.17487/RFC2119, March 1997, 4794 . 4796 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 4797 DOI 10.17487/RFC3688, January 2004, 4798 . 4800 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi 4801 Topology (MT) Routing in Intermediate System to 4802 Intermediate Systems (IS-ISs)", RFC 5120, 4803 DOI 10.17487/RFC5120, February 2008, 4804 . 4806 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for 4807 IP Fast Reroute: Loop-Free Alternates", RFC 5286, 4808 DOI 10.17487/RFC5286, September 2008, 4809 . 4811 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP 4812 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March 4813 2009, . 4815 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 4816 the Network Configuration Protocol (NETCONF)", RFC 6020, 4817 DOI 10.17487/RFC6020, October 2010, 4818 . 4820 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 4821 and A. Bierman, Ed., "Network Configuration Protocol 4822 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 4823 . 4825 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 4826 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 4827 . 4829 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 4830 Protocol (NETCONF) Access Control Model", RFC 6536, 4831 DOI 10.17487/RFC6536, March 2012, 4832 . 4834 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. 4835 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", 4836 RFC 7490, DOI 10.17487/RFC7490, April 2015, 4837 . 4839 Appendix A. Example of IS-IS configuration in XML 4841 This section gives an example of configuration of an IS-IS instance 4842 on a device. The example is written in XML. 4844 4845 4846 4847 SLI 4848 1.1.1.1 4849 4850 4851 4852 Loopback0 4853 4854 4855 Eth1 4856 4857 4858 4859 4860 ISIS 4861 4862 isis:isis 4863 4864 true 4865 level-2 4866 87FC.FCDF.4432 4867 49.0001 4868 4869 1.1.1.1 4870 4871 65535 4872 65000 4873 4874 wide 4875 4876 4877 111111 4878 4879 4880 4881 ipv4-unicast 4882 true 4883 4884 4885 4886 4887 Loopback0 4888 200 4889 4890 0 4891 4892 true 4893 4894 4895 Eth1 4896 level-2 4897 point-to-point 4898 4899 167890 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 Loopback0 4910 4911 4912 4913 4914 4915
4916 1.1.1.1 4917 32 4918
4919
4921
4922 4923 Eth1 4924 4925 4926 4927 4928 4929
4930 10.0.0.1 4931 30 4932
4933
4935
4936
4937
4939 Authors' Addresses 4941 Stephane Litkowski 4942 Orange 4944 Email: stephane.litkowski@orange.com 4946 Derek Yeung 4947 Arrcus, Inc 4949 Email: derek@arrcus.com 4951 Acee Lindem 4952 Cisco Systems 4954 Email: acee@cisco.com 4956 Jeffrey Zhang 4957 Juniper Networks 4959 Email: zzhang@juniper.net 4961 Ladislav Lhotka 4962 CZ.NIC 4964 Email: lhotka@nic.cz