idnits 2.17.1 draft-ietf-isis-yang-isis-cfg-22.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** 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 (July 16, 2018) is 2108 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) ** Downref: Normative reference to an Informational RFC: RFC 5443 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 3 errors (**), 0 flaws (~~), 7 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: January 17, 2019 Arrcus, Inc 6 A. Lindem 7 Cisco Systems 8 J. Zhang 9 Juniper Networks 10 L. Lhotka 11 CZ.NIC 12 July 16, 2018 14 YANG Data Model for IS-IS protocol 15 draft-ietf-isis-yang-isis-cfg-22 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-07-16.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 2017-07-16 { 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 } description "Grouping for LSP log."; 3278 } 3280 grouping hostname-db { 3281 container hostnames { 3282 config false; 3283 list hostname { 3284 key system-id; 3285 leaf system-id { 3286 type system-id; 3287 description 3288 "System-id associated with the hostname."; 3289 } 3290 leaf hostname { 3291 type string; 3292 description 3293 "Hostname associated with the system ID."; 3295 } 3296 description 3297 "List of system-id/hostname associations."; 3298 } 3299 description 3300 "Hostname to system-id mapping database."; 3301 } 3302 description 3303 "Grouping for hostname to system-id mapping database."; 3304 } 3306 /* Groupings for the LSDB description */ 3308 grouping prefix-reachability-attributes { 3309 description 3310 "Grouping for extended reachability attributes of an 3311 IPv4 or IPv6 prefix."; 3313 leaf external-prefix-flag { 3314 type boolean; 3315 description "External prefix flag."; 3316 } 3317 leaf readvertisement-flag { 3318 type boolean; 3319 description "Readvertisement flag."; 3320 } 3321 leaf node-flag { 3322 type boolean; 3323 description "Node flag."; 3324 } 3325 } 3327 grouping prefix-ipv4-source-router-id { 3328 description 3329 "Grouping for the IPv4 source router ID of a prefix 3330 advertisement."; 3332 leaf ipv4-source-router-id { 3333 type inet:ipv4-address; 3334 description "IPv4 Source router ID address."; 3335 } 3336 } 3338 grouping prefix-ipv6-source-router-id { 3339 description 3340 "Grouping for the IPv6 source router ID of a prefix 3341 advertisement."; 3343 leaf ipv6-source-router-id { 3344 type inet:ipv6-address; 3345 description "IPv6 Source router ID address."; 3346 } 3347 } 3349 grouping prefix-attributes-extension { 3350 description "Prefix extended attributes."; 3352 uses prefix-reachability-attributes; 3353 uses prefix-ipv4-source-router-id; 3354 uses prefix-ipv6-source-router-id; 3355 } 3357 grouping prefix-ipv4-std { 3358 description 3359 "Grouping for attributes of an IPv4 standard prefix."; 3360 leaf up-down { 3361 type boolean; 3362 description "Value of up/down bit."; 3363 } 3364 leaf i-e { 3365 type boolean; 3366 description "Value of I/E bit."; 3367 } 3368 leaf ip-prefix { 3369 type inet:ipv4-address; 3370 description "IPv4 prefix address"; 3371 } 3372 leaf prefix-len { 3373 type uint8; 3374 description "IPv4 prefix length (in bits)"; 3375 } 3376 leaf default-metric { 3377 type std-metric; 3378 description "Default IS-IS metric for IPv4 prefix"; 3379 } 3380 container delay-metric { 3381 leaf metric { 3382 type std-metric; 3383 description "IS-IS delay metric for IPv4 prefix"; 3384 } 3385 leaf supported { 3386 type boolean; 3387 default "false"; 3388 description 3389 "Indicates whether IS-IS delay metric is supported."; 3390 } 3391 description "IS-IS delay metric container."; 3392 } 3393 container expense-metric { 3394 leaf metric { 3395 type std-metric; 3396 description "IS-IS expense metric for IPv4 prefix"; 3397 } 3398 leaf supported { 3399 type boolean; 3400 default "false"; 3401 description 3402 "Indicates whether IS-IS delay metric is supported."; 3403 } 3404 description "IS-IS expense metric container."; 3405 } 3406 container error-metric { 3407 leaf metric { 3408 type std-metric; 3409 description 3410 "This leaf describes the IS-IS error metric value"; 3411 } 3412 leaf supported { 3413 type boolean; 3414 default "false"; 3415 description "IS-IS error metric for IPv4 prefix"; 3416 } 3417 description "IS-IS error metric container."; 3418 } 3419 } 3421 grouping prefix-ipv4-extended { 3422 description 3423 "Grouping for attributes of an IPv4 extended prefix."; 3424 leaf up-down { 3425 type boolean; 3426 description "Value of up/down bit."; 3427 } 3428 leaf ip-prefix { 3429 type inet:ipv4-address; 3430 description "IPv4 prefix address"; 3431 } 3432 leaf prefix-len { 3433 type uint8; 3434 description "IPv4 prefix length (in bits)"; 3435 } 3437 leaf metric { 3438 type wide-metric; 3439 description "IS-IS wide metric value"; 3440 } 3441 leaf-list tag { 3442 type uint32; 3443 description 3444 "List of 32-bit tags associated with the IPv4 prefix."; 3445 } 3446 leaf-list tag64 { 3447 type uint64; 3448 description 3449 "List of 32-bit tags associated with the IPv4 prefix."; 3450 } 3451 uses prefix-attributes-extension; 3452 } 3454 grouping prefix-ipv6-extended { 3455 description "Grouping for attributes of an IPv6 prefix."; 3456 leaf up-down { 3457 type boolean; 3458 description "Value of up/down bit."; 3459 } 3460 leaf ip-prefix { 3461 type inet:ipv6-address; 3462 description "IPv6 prefix address"; 3463 } 3464 leaf prefix-len { 3465 type uint8; 3466 description "IPv4 prefix length (in bits)"; 3467 } 3468 leaf metric { 3469 type wide-metric; 3470 description "IS-IS wide metric value"; 3471 } 3472 leaf-list tag { 3473 type uint32; 3474 description 3475 "List of 32-bit tags associated with the IPv4 prefix."; 3476 } 3477 leaf-list tag64 { 3478 type uint64; 3479 description 3480 "List of 32-bit tags associated with the IPv4 prefix."; 3481 } 3482 uses prefix-attributes-extension; 3483 } 3485 grouping neighbor-extended { 3486 description 3487 "Grouping for attributes of an IS-IS extended neighbor."; 3488 leaf neighbor-id { 3489 type system-id; 3490 description "System-id of the extended neighbor."; 3491 } 3492 leaf metric { 3493 type wide-metric; 3494 description "IS-IS wide metric for extended neighbor"; 3495 } 3496 } 3498 grouping neighbor { 3499 description "IS-IS standard neighbor grouping."; 3500 leaf neighbor-id { 3501 type system-id; 3502 description "IS-IS neighbor system-id"; 3503 } 3504 leaf i-e { 3505 type boolean; 3506 description 3507 "Internal or External (I/E) Metric bit value"; 3508 } 3509 leaf default-metric { 3510 type std-metric; 3511 description "IS-IS default metric value"; 3512 } 3513 container delay-metric { 3514 leaf metric { 3515 type std-metric; 3516 description "IS-IS delay metric value"; 3517 } 3518 leaf supported { 3519 type boolean; 3520 default "false"; 3521 description "IS-IS delay metric supported"; 3522 } 3523 description "IS-IS delay metric container"; 3524 } 3525 container expense-metric { 3526 leaf metric { 3527 type std-metric; 3528 description "IS-IS delay expense metric value"; 3529 } 3530 leaf supported { 3531 type boolean; 3532 default "false"; 3533 description "IS-IS delay expense metric supported"; 3534 } 3535 description "IS-IS delay expense metric container"; 3536 } 3537 container error-metric { 3538 leaf metric { 3539 type std-metric; 3540 description "IS-IS error metric value"; 3541 } 3542 leaf supported { 3543 type boolean; 3544 default "false"; 3545 description "IS-IS error metric supported"; 3546 } 3547 description "IS-IS error metric container"; 3548 } 3549 } 3551 grouping lsp-entry { 3552 description "IS-IS LSP database entry groupting"; 3554 leaf decoded-completed { 3555 type boolean; 3556 description "IS-IS LSP body fully decoded."; 3557 } 3558 leaf raw-data { 3559 type yang:hex-string; 3560 description 3561 "The hexadecial representation of the complete LSP in 3562 network-byte order (NBO) as received or originated."; 3563 } 3564 leaf lsp-id { 3565 type lsp-id; 3566 description "LSP ID of the LSP"; 3567 } 3568 leaf checksum { 3569 type uint16; 3570 description "LSP checksum"; 3571 } 3572 leaf remaining-lifetime { 3573 type uint16; 3574 units "seconds"; 3575 description 3576 "Remaining lifetime (in seconds) until LSP expiration."; 3577 } 3578 leaf sequence { 3579 type uint32; 3580 description 3581 "This leaf describes the sequence number of the LSP."; 3582 } 3583 leaf attributes { 3584 type bits { 3585 bit partitioned { 3586 description "Originator partition repair supported"; 3587 } 3588 bit attached-error { 3589 description 3590 "If set, the originator is attached to 3591 another area using the referred metric."; 3592 } 3593 bit attached-expense { 3594 description 3595 "If set, the originator is attached to 3596 another area using the referred metric."; 3597 } 3598 bit attached-delay { 3599 description 3600 "If set, the originator is attached to 3601 another area using the referred metric."; 3602 } 3603 bit attached-default { 3604 description 3605 "If set, the originator is attached to 3606 another area using the referred metric."; 3607 } 3608 bit overload { 3609 description 3610 "If set, the originator is overloaded, 3611 and must be avoided in path calculation."; 3612 } 3613 } 3614 description "LSP attributes"; 3615 } 3617 leaf-list ipv4-addresses { 3618 type inet:ipv4-address; 3619 description 3620 "List of IPv4 addresses of the IS-IS node - IS-IS 3621 reference is TLV 132."; 3622 } 3624 leaf-list ipv6-addresses { 3625 type inet:ipv6-address; 3626 description 3627 "List of IPv6 addresses of the IS-IS node - IS-IS 3628 reference is TLV 232."; 3629 } 3630 leaf ipv4-te-routerid { 3631 type inet:ipv4-address; 3632 description 3633 "IPv4 Traffic Engineering router ID of the IS-IS node - 3634 IS-IS reference is TLV 134."; 3635 } 3637 leaf ipv6-te-routerid { 3638 type inet:ipv6-address; 3639 description 3640 "IPv6 Traffic Engineering router ID of the IS-IS node - 3641 IS-IS reference is TLV 140."; 3642 } 3644 leaf-list protocol-supported { 3645 type uint8; 3646 description 3647 "List of supported protocols of the IS-IS node - 3648 IS-IS reference is TLV 129."; 3649 } 3651 leaf dynamic-hostname { 3652 type string; 3653 description 3654 "Host Name of the IS-IS node - IS-IS reference 3655 is TLV 137."; 3656 } 3658 container authentication { 3659 leaf authentication-type { 3660 type string; 3661 description 3662 "Authentication type to be used with IS-IS node."; 3663 } 3664 leaf authentication-key { 3665 type string; 3666 description 3667 "Authentication keyto be used. For security reasons, 3668 the authentication key MUST NOT be presented in 3669 plaintext format. It is recommended to use an MD5 3670 hash to present the authentication-key."; 3671 } 3672 description 3673 "IS-IS node authentication information container - 3674 IS-IS reference is TLV 10."; 3675 } 3677 container mt-entries { 3678 list topology { 3679 description 3680 "List of topologies supported"; 3682 leaf MT-ID { 3683 type uint16 { 3684 range "0 .. 4095"; 3685 } 3686 description 3687 "Multi-Topolgoy identifier of topology."; 3688 } 3690 leaf attributes { 3691 type bits { 3692 bit overload { 3693 description 3694 "If set, the originator is overloaded, 3695 and must be avoided in path calculation."; 3696 } 3697 bit attached { 3698 description 3699 "If set, the originator is attached to 3700 another area using the referred metric."; 3701 } 3702 } 3703 description 3704 "Attributes of the LSP for the associated 3705 topology."; 3706 } 3707 } 3708 description 3709 "IS-IS node topology information container - 3710 IS-IS reference is TLV 229."; 3711 } 3713 list router-capabilities { 3714 leaf flags { 3715 type bits { 3716 bit flooding { 3717 position 0; 3718 description 3719 "If the S bit is set, the IS-IS Router CAPABILITY 3720 TLV MUST be flooded across the entire routing 3721 domain. If the S bit is clear, the TLV MUST NOT 3722 be leaked between levels. This bit MUST NOT 3723 be altered during the TLV leaking."; 3724 } 3725 bit down { 3726 position 1; 3727 description 3728 "When the IS-IS Router CAPABILITY TLV is leaked 3729 from level-2 to level-1, the D bit MUST be set. 3730 Otherwise, this bit MUST be clear. IS-IS Router 3731 capability TLVs with the D bit set MUST NOT be 3732 leaked from level-1 to level-2 in to prevent 3733 TLV looping."; 3734 } 3735 } 3736 description "Router Capability Flags"; 3737 } 3738 container node-tags { 3739 if-feature node-tag; 3740 list node-tag { 3741 leaf tag { 3742 type uint32; 3743 description "Node tag value."; 3744 } 3745 description "List of tags."; 3746 } 3747 description "Node Tag container"; 3748 } 3750 leaf binary { 3751 type binary; 3752 description 3753 "Binary encoding of the IS-IS node capabilities"; 3754 } 3755 description 3756 "IS-IS node capabilities container. This container may 3757 be extended with detailed information - IS-IS 3758 reference is TLV 242."; 3759 } 3761 container is-neighbor { 3762 list neighbor { 3763 uses neighbor; 3764 description "List of neighbors."; 3765 } 3766 description 3767 "Standard IS neighbors container - IS-IS reference is 3768 TLV 2."; 3769 } 3771 container extended-is-neighbor { 3772 list neighbor { 3773 uses neighbor-extended; 3774 description 3775 "List of extended IS neighbors"; 3776 } 3777 description 3778 "Standard IS extended neighbors container - IS-IS 3779 reference is TLV 22"; 3780 } 3782 container ipv4-internal-reachability { 3783 list prefixes { 3784 uses prefix-ipv4-std; 3785 description "List of prefixes."; 3786 } 3787 description 3788 "IPv4 internal reachability information container - IS-IS 3789 reference is TLV 128."; 3790 } 3792 container ipv4-external-reachability { 3793 list prefixes { 3794 uses prefix-ipv4-std; 3795 description "List of prefixes."; 3796 } 3797 description 3798 "IPv4 external reachability information container - 3799 IS-IS reference is TLV 130."; 3800 } 3802 container extended-ipv4-reachability { 3803 list prefixes { 3804 uses prefix-ipv4-extended; 3805 description "List of prefixes."; 3806 } 3807 description 3808 "IPv4 extended reachability information container - 3809 IS-IS reference is TLV 135."; 3810 } 3812 container mt-is-neighbor { 3813 list neighbor { 3814 leaf mt-id { 3815 type uint16 { 3816 range "0 .. 4095"; 3817 } 3818 description "Multi-topology (MT) identifier"; 3819 } 3820 uses neighbor-extended; 3821 description "List of neighbors."; 3823 } 3824 description 3825 "IS-IS multi-topology neighbor container - IS-IS 3826 reference is TLV 223."; 3827 } 3829 container mt-extended-ipv4-reachability { 3830 list prefixes { 3831 leaf mt-id { 3832 type uint16 { 3833 range "0 .. 4095"; 3834 } 3835 description "Multi-topology (MT) identifier"; 3836 } 3837 uses prefix-ipv4-extended; 3838 description "List of extended prefixes."; 3839 } 3840 description 3841 "IPv4 multi-topolgy (MT) extended reachability 3842 information container - IS-IS reference is TLV 235."; 3843 } 3845 container mt-ipv6-reachability { 3846 list prefixes { 3847 leaf MT-ID { 3848 type uint16 { 3849 range "0 .. 4095"; 3850 } 3851 description "Multi-topology (MT) identifier"; 3852 } 3853 uses prefix-ipv6-extended; 3854 description "List of IPv6 extended prefixes."; 3855 } 3856 description 3857 "IPv6 multi-topolgy (MT) extended reachability 3858 information container - IS-IS reference is TLV 237."; 3859 } 3861 container ipv6-reachability { 3862 list prefixes { 3863 uses prefix-ipv6-extended; 3864 description "List of IPv6 prefixes."; 3865 } 3866 description 3867 "IPv6 reachability information container - IS-IS 3868 reference is TLV 236."; 3869 } 3870 } 3871 grouping lsdb { 3872 description "Link State Database (LSDB) grouping"; 3873 container database { 3874 config false; 3875 list level-db { 3876 key level; 3878 leaf level { 3879 type level-number; 3880 description "LSDB level number (1 or 2)"; 3881 } 3882 list lsp { 3883 key lsp-id; 3884 uses lsp-entry; 3885 description "List of LSPs in LSDB"; 3886 } 3887 description "LSP list for LSDB level container"; 3888 } 3889 description "IS-IS Link State database container"; 3890 } 3891 } 3893 /* Augmentations */ 3895 augment "/rt:routing/" 3896 +"rt:ribs/rt:rib/rt:routes/rt:route" { 3897 when "rt:source-protocol = 'isis:isis'" { 3898 description "IS-IS-specific route attributes."; 3899 } 3900 uses route-content; 3901 description 3902 "This augments route object in RIB with IS-IS-specific 3903 attributes."; 3904 } 3906 augment "/if:interfaces/if:interface" { 3907 leaf clns-mtu { 3908 type uint16; 3909 description "CLNS MTU of the interface"; 3910 } 3911 description "ISO interface config."; 3912 } 3914 augment "/rt:routing/rt:control-plane-protocols/" 3915 +"rt:control-plane-protocol" { 3916 when "rt:type = 'isis:isis'" { 3917 description 3918 "This augment is only valid when routing protocol 3919 instance type is 'isis'"; 3920 } 3921 description 3922 "This augments a routing protocol instance with IS-IS 3923 specific parameters."; 3924 container isis { 3925 must "count(area-address) > 0" { 3926 error-message 3927 "At least one area-address must be configured."; 3928 description 3929 "Enforce configuration of at least one area."; 3930 } 3932 uses isis-global-cfg; 3933 container fast-reroute { 3934 if-feature fast-reroute; 3935 uses fast-reroute-global-cfg; 3936 uses fast-reroute-global-state; 3937 description 3938 "IP Fast ReRoute (IPFRR) global container"; 3939 } 3940 container spf-control { 3941 leaf paths { 3942 if-feature max-ecmp; 3943 type uint16 { 3944 range "1..32"; 3945 } 3946 description 3947 "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; 3948 } 3949 container ietf-spf-delay { 3950 if-feature ietf-spf-delay; 3951 uses ietf-spf-delay-cfg; 3952 uses ietf-spf-delay-state; 3953 description "IETF SPF delay algorithm container"; 3954 } 3955 description 3956 "SPF computation-related information container"; 3957 } 3958 container topologies { 3959 if-feature multi-topology; 3960 list topology { 3961 key "name"; 3962 leaf enable { 3963 type boolean; 3964 description "Topology enable configuration"; 3965 } 3966 leaf name { 3967 type leafref { 3968 path "../../../../../../rt:ribs/rt:rib/rt:name"; 3969 } 3970 description 3971 "Routing Information Base (RIB) corresponding 3972 to topology."; 3973 } 3975 uses isis-global-topologies-cfg; 3977 description "List of topologies"; 3978 } 3979 description "Multi-topology container"; 3980 } 3981 container interfaces { 3982 list interface { 3983 key "name"; 3984 leaf name { 3985 type if:interface-ref; 3987 description 3988 "Reference to the interface within 3989 the routing-instance."; 3990 } 3991 uses isis-if-cfg; 3992 container fast-reroute { 3993 if-feature fast-reroute; 3994 uses fast-reroute-if-cfg; 3995 description 3996 "IP Fast ReRoute (IPFRR) interface container"; 3997 } 3998 container topologies { 3999 if-feature multi-topology; 4000 list topology { 4001 key name; 4003 leaf name { 4004 type leafref { 4005 path "../../../../../../../../"+ 4006 "rt:ribs/rt:rib/rt:name"; 4007 } 4009 description 4010 "Routing Information Base (RIB) corresponding 4011 to topology."; 4012 } 4013 uses isis-if-topologies-cfg; 4014 description "List of interface topologies"; 4015 } 4016 description "Multi-topology container"; 4017 } 4018 uses adjacency-state; 4019 uses event-counters; 4020 uses packet-counters; 4021 description "List of IS-IS interfaces."; 4022 } 4023 description 4024 "IS-IS interface specific configuration container"; 4025 } 4026 uses spf-log; 4027 uses lsp-log; 4028 uses hostname-db; 4029 uses lsdb; 4030 uses local-rib; 4031 uses system-counters; 4033 description 4034 "IS-IS configuration/state top-level container"; 4035 } 4036 } 4038 /* RPC methods */ 4040 rpc clear-adjacency { 4041 description 4042 "This RPC request clears a particular set of IS-IS 4043 adjacencies. If the operation fails due to an internal 4044 reason, then the error-tag and error-app-tag should be 4045 set indicating the reason for the failure."; 4046 input { 4048 leaf routing-protocol-instance-name { 4049 type instance-state-ref; 4050 mandatory "true"; 4051 description 4052 "Name of the IS-IS protocol instance whose IS-IS 4053 information is being queried. 4055 If the corresponding IS-IS instance doesn't exist, 4056 then the operation will fail with an error-tag of 4057 'data-missing' and an error-app-tag of 4058 'routing-protocol-instance-not-found'."; 4059 } 4060 leaf level { 4061 type level; 4062 description 4063 "IS-IS level of the adjacency to be cleared. If the 4064 IS-IS level is level-1-2, both level 1 and level 2 4065 adjacencies would be cleared. 4067 If the value provided is different from the one 4068 authorized in the enum type, then the operation 4069 SHALL fail with an error-tag of 'data-missing' and 4070 an error-app-tag of 'bad-isis-level'."; 4071 } 4072 leaf interface { 4073 type string; 4074 description 4075 "IS-IS interface name. 4077 If the corresponding IS-IS interface doesn't exist, 4078 then the operation SHALL fail with an error-tag of 4079 'data-missing' and an error-app-tag of 4080 'isis-interface-not-found'."; 4081 } 4082 } 4083 } 4085 rpc clear-database { 4086 description 4087 "This RPC request clears a particular IS-IS database. If 4088 the operation fails for an IS-IS internal reason, then 4089 the error-tag and error-app-tag should be set 4090 indicating the reason for the failure."; 4091 input { 4092 leaf routing-protocol-instance-name { 4093 type instance-state-ref; 4094 mandatory "true"; 4095 description 4096 "Name of the IS-IS protocol instance whose IS-IS 4097 database(s) is/are being cleard. 4099 If the corresponding IS-IS instance doesn't exist, 4100 then the operation will fail with an error-tag of 4101 'data-missing' and an error-app-tag of 4102 'routing-protocol-instance-not-found'."; 4103 } 4104 leaf level { 4105 type level; 4106 description 4107 "IS-IS level of the adjacency to be cleared. If the 4108 IS-IS level is level-1-2, both level 1 and level 2 4109 databases would be cleared. 4111 If the value provided is different from the one 4112 authorized in the enum type, then the operation 4113 SHALL fail with an error-tag of 'data-missing' and 4114 an error-app-tag of 'bad-isis-level'."; 4115 } 4116 } 4117 } 4119 /* Notifications */ 4121 notification database-overload { 4122 uses notification-instance-hdr; 4124 leaf overload { 4125 type enumeration { 4126 enum off { 4127 description 4128 "Indicates IS-IS instance has left overload state"; 4129 } 4130 enum on { 4131 description 4132 "Indicates IS-IS instance has entered overload state"; 4133 } 4135 } 4136 description "New overload state of the IS-IS instance"; 4137 } 4138 description 4139 "This notification is sent when an IS-IS instance 4140 overload state changes."; 4141 } 4143 notification lsp-too-large { 4144 uses notification-instance-hdr; 4145 uses notification-interface-hdr; 4147 leaf pdu-size { 4148 type uint32; 4149 description "Size of the LSP PDU"; 4150 } 4151 leaf lsp-id { 4152 type lsp-id; 4153 description "LSP ID"; 4154 } 4155 description 4156 "This notification is sent when we attempt to propagate 4157 an LSP that is larger than the dataLinkBlockSize for the 4158 circuit. The notification generation must be throttled 4159 with at least 5 seconds betweeen successive 4160 notifications."; 4161 } 4163 notification if-state-change { 4164 uses notification-instance-hdr; 4165 uses notification-interface-hdr; 4167 leaf state { 4168 type if-state-type; 4169 description "Interface state."; 4170 } 4171 description 4172 "This notification is sent when an interface 4173 state change is detected."; 4174 } 4176 notification corrupted-lsp-detected { 4177 uses notification-instance-hdr; 4178 leaf lsp-id { 4179 type lsp-id; 4180 description "LSP ID"; 4181 } 4182 description 4183 "This notification is sent when we find that 4184 an LSP that was stored in memory has become 4185 corrupted."; 4186 } 4188 notification attempt-to-exceed-max-sequence { 4189 uses notification-instance-hdr; 4190 leaf lsp-id { 4191 type lsp-id; 4192 description "LSP ID"; 4193 } 4194 description 4195 "This notification is sent when the system 4196 wraps the 32-bit sequence counter of an LSP."; 4197 } 4199 notification id-len-mismatch { 4200 uses notification-instance-hdr; 4201 uses notification-interface-hdr; 4203 leaf pdu-field-len { 4204 type uint8; 4205 description "Size of the ID length in the received PDU"; 4206 } 4207 leaf raw-pdu { 4208 type binary; 4209 description "Received raw PDU."; 4210 } 4211 description 4212 "This notification is sent when we receive a PDU 4213 with a different value for the System ID length. 4214 The notification generation must be throttled 4215 with at least 5 seconds betweeen successive 4216 notifications."; 4217 } 4219 notification max-area-addresses-mismatch { 4220 uses notification-instance-hdr; 4221 uses notification-interface-hdr; 4223 leaf max-area-addresses { 4224 type uint8; 4225 description "Received number of supported areas"; 4226 } 4227 leaf raw-pdu { 4228 type binary; 4229 description "Received raw PDU."; 4230 } 4231 description 4232 "This notification is sent when we receive a PDU 4233 with a different value for the Maximum Area Addresses. 4234 The notification generation must be throttled 4235 with at least 5 seconds betweeen successive 4236 notifications."; 4237 } 4239 notification own-lsp-purge { 4240 uses notification-instance-hdr; 4241 uses notification-interface-hdr; 4242 leaf lsp-id { 4243 type lsp-id; 4244 description "LSP ID"; 4245 } 4246 description 4247 "This notification is sent when the system receives 4248 a PDU with its own system ID and zero age."; 4250 } 4252 notification sequence-number-skipped { 4253 uses notification-instance-hdr; 4254 uses notification-interface-hdr; 4255 leaf lsp-id { 4256 type lsp-id; 4257 description "LSP ID"; 4258 } 4259 description 4260 "This notification is sent when the system receives a 4261 PDU with its own system ID and different contents. The 4262 system has to reoriginate the LSP with a higher sequence 4263 number."; 4264 } 4266 notification authentication-type-failure { 4267 uses notification-instance-hdr; 4268 uses notification-interface-hdr; 4269 leaf raw-pdu { 4270 type binary; 4271 description "Received raw PDU."; 4272 } 4273 description 4274 "This notification is sent when the system receives a 4275 PDU with the wrong authentication type field. 4276 The notification generation must be throttled 4277 with at least 5 seconds betweeen successive 4278 notifications."; 4279 } 4281 notification authentication-failure { 4282 uses notification-instance-hdr; 4283 uses notification-interface-hdr; 4284 leaf raw-pdu { 4285 type binary; 4286 description "Received raw PDU."; 4287 } 4288 description 4289 "This notification is sent when the system receives 4290 a PDU with the wrong authentication information. 4291 The notification generation must be throttled with 4292 with at least 5 seconds betweeen successive 4293 notifications."; 4294 } 4296 notification version-skew { 4297 uses notification-instance-hdr; 4298 uses notification-interface-hdr; 4299 leaf protocol-version { 4300 type uint8; 4301 description "Protocol version received in the PDU."; 4302 } 4303 leaf raw-pdu { 4304 type binary; 4305 description "Received raw PDU."; 4306 } 4307 description 4308 "This notification is sent when the system receives a 4309 PDU with a different protocol version number. 4310 The notification generation must be throttled 4311 with at least 5 seconds betweeen successive 4312 notifications."; 4313 } 4315 notification area-mismatch { 4316 uses notification-instance-hdr; 4317 uses notification-interface-hdr; 4318 leaf raw-pdu { 4319 type binary; 4320 description "Received raw PDU."; 4321 } 4322 description 4323 "This notification is sent when the system receives a 4324 Hello PDU from an IS that does not share any area 4325 address. The notification generation must be throttled 4326 with at least 5 seconds betweeen successive 4327 notifications."; 4328 } 4330 notification rejected-adjacency { 4331 uses notification-instance-hdr; 4332 uses notification-interface-hdr; 4333 leaf raw-pdu { 4334 type binary; 4335 description 4336 "Received raw PDU."; 4337 } 4338 leaf reason { 4339 type string; 4340 description 4341 "The system may provide a reason to reject the 4342 adjacency. If the reason is not available, 4343 an empty string will be returned."; 4344 } 4345 description 4346 "This notification is sent when the system receives a 4347 Hello PDU from an IS but does not establish an adjacency 4348 for some reason. The notification generation must be 4349 throttled with at least 5 seconds betweeen successive 4350 notifications."; 4351 } 4353 notification protocols-supported-mismatch { 4354 uses notification-instance-hdr; 4355 uses notification-interface-hdr; 4356 leaf raw-pdu { 4357 type binary; 4358 description "Received raw PDU."; 4359 } 4360 leaf-list protocols { 4361 type uint8; 4362 description 4363 "List of protocols supported by the remote system."; 4364 } 4365 description 4366 "This notification is sent when the system receives a 4367 non-pseudonode LSP that has no matching protocols 4368 supported. The notification generation must be throttled 4369 with at least 5 seconds betweeen successive 4370 notifications."; 4371 } 4373 notification lsp-error-detected { 4374 uses notification-instance-hdr; 4375 uses notification-interface-hdr; 4376 leaf lsp-id { 4377 type lsp-id; 4378 description "LSP ID."; 4379 } 4380 leaf raw-pdu { 4381 type binary; 4382 description "Received raw PDU."; 4383 } 4384 leaf error-offset { 4385 type uint32; 4386 description 4387 "If the problem is a malformed TLV, the error-offset 4388 points to the start of the TLV. If the problem is with 4389 the LSP header, the error-offset points to the errant 4390 byte"; 4391 } 4392 leaf tlv-type { 4393 type uint8; 4394 description 4395 "If the problem is a malformed TLV, the tlv-type is set 4396 to the type value of the suspicious TLV. Otherwise, 4397 this leaf is not present."; 4398 } 4399 description 4400 "This notification is sent when the system receives an 4401 ' LSP with a parse error. The notification generation must 4402 be throttled with at least 5 seconds betweeen successive 4403 notifications."; 4404 } 4406 notification adjacency-state-change { 4407 uses notification-instance-hdr; 4408 uses notification-interface-hdr; 4409 leaf neighbor { 4410 type string; 4411 description 4412 "Name of the neighbor. If the name of the neighbor is 4413 not available, it is not returned."; 4414 } 4415 leaf neighbor-system-id { 4416 type system-id; 4417 description "Neighbor system-id"; 4418 } 4419 leaf state { 4420 type adj-state-type; 4422 description "New state of the IS-IS adjacency."; 4423 } 4424 leaf reason { 4425 type string; 4426 description 4427 "If the adjacency is going to DOWN, this leaf provides 4428 a reason for the adjacency going down. The reason is 4429 provided as a text. If the adjacency is going to UP, no 4430 reason is provided."; 4431 } 4432 description 4433 "This notification is sent when an IS-IS adjacency 4434 moves to Up state or to Down state."; 4435 } 4437 notification lsp-received { 4438 uses notification-instance-hdr; 4439 uses notification-interface-hdr; 4440 leaf lsp-id { 4441 type lsp-id; 4442 description "LSP ID"; 4443 } 4444 leaf sequence { 4445 type uint32; 4446 description "Sequence number of the received LSP."; 4447 } 4448 leaf received-timestamp { 4449 type yang:timestamp; 4451 description "Timestamp when the LSP was received."; 4452 } 4453 leaf neighbor-system-id { 4454 type system-id; 4455 description "Neighbor system-id of LSP sender"; 4456 } 4457 description 4458 "This notification is sent when an LSP is received. 4459 The notification generation must be throttled with at 4460 least 5 seconds betweeen successive notifications."; 4461 } 4463 notification lsp-generation { 4464 uses notification-instance-hdr; 4466 leaf lsp-id { 4467 type lsp-id; 4468 description "LSP ID"; 4469 } 4470 leaf sequence { 4471 type uint32; 4472 description "Sequence number of the received LSP."; 4473 } 4474 leaf send-timestamp { 4475 type yang:timestamp; 4477 description "Timestamp when our LSP was regenerated."; 4478 } 4479 description 4480 "This notification is sent when an LSP is regenerated. 4481 The notification generation must be throttled with at 4482 least 5 seconds betweeen successive notifications."; 4483 } 4484 } 4486 4488 7. Security Considerations 4490 Configuration and state data defined in this document are designed to 4491 be accessed via the NETCONF protocol [RFC6241]. 4493 As IS-IS is an IGP protocol (critical piece of the network), ensuring 4494 stability and security of the protocol is mandatory for the network 4495 service. 4497 Authors recommends to implement NETCONF access control model 4498 ([RFC6536]) to restrict access to all or part of the configuration to 4499 specific users. Access control to RPCs is also critical as RPC 4500 allows to clear protocol datastructures that would definitively 4501 impact the network service. This kind of RPC needs only to be used 4502 in specific cases by well-known experienced users. 4504 Authors consider that all the configuration is considered as 4505 sensitive/vulnerable as well as RPCs. But security teams can decide 4506 to open some part of the configuration to less experienced users 4507 depending on the internal organization, for example: 4509 o User FullWrite: would access to the whole data model. This kind 4510 of profile may be restricted to few experienced people. 4512 o User PartialWrite: would only access to configuration part within 4513 /isis/interfaces/interface. So this kind of profile is restricted 4514 to creation/modification/deletion of interfaces. This profile 4515 does not have access to RPC. 4517 o User Read: would only access to the operational states. 4519 Unauthorized access to configuration or RPC may cause high damages to 4520 the network service. 4522 The "isis/database" may contain authentication information. As 4523 presented in the description of the "/isis/database/level- 4524 1/lsp/authentication/authentication-key", the authentication MUST 4525 never be displayed in a plaintext format for security reason. 4526 Authors recommend the usage of MD5 to display or return the 4527 authentication-key. 4529 Some authentication-key may also be required in the "isis" writable 4530 container. When configuring IS-IS using the NETCONF protocol, 4531 authors recommends the usage of secure transport of NETCONF using SSH 4532 ([RFC6242]). 4534 8. Contributors 4536 Authors would like to thank Kiran Agrahara Sreenivasa, Dean 4537 Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the 4538 draft. 4540 9. Acknowledgements 4542 TBD. 4544 10. IANA Considerations 4546 The IANA is requested to assign two new URIs from the IETF XML 4547 registry ([RFC3688]). Authors are suggesting the following URI: 4549 URI: urn:ietf:params:xml:ns:yang:ietf-isis 4550 Registrant Contact: IS-IS WG 4551 XML: N/A, the requested URI is an XML namespace 4553 This document also requests one new YANG module name in the YANG 4554 Module Names registry ([RFC6020]) with the following suggestion: 4556 name: ietf-isis 4557 namespace: urn:ietf:params:xml:ns:yang:ietf-isis 4558 prefix: isis 4559 reference: RFC XXXX 4561 11. Change log for ietf-isis YANG module 4563 11.1. From version -21 to version -22 4565 o TE router-id modeling alignment with OSPF. 4567 o Add max-ecmp + feature in spf-control container (alignment with 4568 OSPF). 4570 11.2. From version -20 to version -21 4572 o Model revision date fix 4574 11.3. From version -19 to version -20 4576 o Moved to Yang 1.1 4578 o Lower case enumerations 4580 o Add RFC references to features 4581 o Remove segment-routing feature 4583 o Modified BFD activation modeling 4585 11.4. From version -18 to version -19 4587 o Align with draft-ietf-netmod-rfc8022bis. 4589 o Modify address family types as per draft-ietf-rtgwg-routing-types- 4590 17. 4592 11.5. From version -17 to version -18 4594 o NMDA compliancy. 4596 o Set some default values. 4598 o Align with iana-rt-types module. 4600 11.6. From version -16 to version -17 4602 o Cosmetic fixes. 4604 o Use of rt-types model. 4606 11.7. From version -15 to version -16 4608 o Alignment with last IETF key chain model. 4610 o lsp-log "change" leaf moved as an identity. 4612 o Incremental SPF removed from spf-log types. 4614 11.8. From version -14 to version -15 4616 o Alignment with OSPF model done: 4618 * Added spf-control container with IETF SPF delay algorithm as a 4619 feature. 4621 * Added graceful-restart options. 4623 * Added nsr as a feature. 4625 * Removed per topology FRR. Need to be augmented if necessary. 4627 * Created an ldp container within mpls. 4629 * Renamed igp-ldp-sync to igp-sync. 4631 * Added auto-cost container. 4633 * Moved reference-bandwidth under auto-cost container. 4635 * Added IS-IS local RIB as operational state. 4637 * Added decode-completed and raw-data leaves in the LSDB model. 4639 * Modified the notification header. 4641 11.9. From version -13 to version -14 4643 o Segment Routing extensions are now in a separate document. 4645 11.10. From version -12 to version -13 4647 o Move feature nlpid-control to container rather than list. 4649 o Rename multi-topology to topologies to align with OSPF. 4651 o Rename bfd/enabled to bfd/enable for consistency reason. 4653 o Add support for NSR with a feature. 4655 11.11. From version -09 to version -12 4657 o Rename node-tag container to node-tags. 4659 11.12. From version -08 to version -09 4661 o Added container before af list. 4663 o Added container before topology list. 4665 o Aligned LFA if per level cfg. 4667 o Align to draft-ietf-netmod-routing-cfg-23. 4669 11.13. From version -07 to version -08 4671 o Remove selector from system-id type. 4673 o Add some default values. 4675 o Moved lists to containers+groupings for per level configuration. 4677 o remove routing-instance as per core routing model v21. 4679 o added BFD leaf (no more BFD protocol model). 4681 o changed keychain module reference. 4683 11.14. From version -05 to version -07 4685 o Move Overload config from list to container. 4687 o Move Overload-max-metric config from list to container. 4689 o Move preference config from list to container. 4691 o Add Node flag in config. 4693 o Removed BFD config => moved to isis-bfd module. 4695 o Remove call to routing policy model. 4697 11.15. From version -03 to version -05 4699 o Correct invalid references to previous versions of core routing 4700 model. 4702 o Remove BFD config and replace by groupings from ietf-bfd. 4704 o Adding routing-policy support through routing-policy model. 4706 11.16. From version -02 to version -03 4708 o Reviewed config and op state groupings. 4710 o Add default value to lfa candidate-disabled. 4712 o Add enable leaf to isis container to reflect admin state. 4714 o Move to VRF centric only. 4716 o Segment routing is part os a separate module. 4718 11.17. From version -01 to version -02 4720 o Adding IPFRR. 4722 o Adding igp-ldp-sync. 4724 o Adding segment-routing. 4726 o Adding instance reference to operational states. 4728 o Move AF type from string to identity. 4730 o Updated router-capability in LSDB description. 4732 o packet counters moved to interface-packet-counters. 4734 o Added modification information in lsp-log. 4736 o Removing igp-ldp-sync timer in IS-IS. 4738 o Defining hierarchy for operational states. 4740 o Adding clns-mtu. 4742 o Adding key-chain. 4744 11.18. From version -00 to version -01 4746 o Interface metric move from af container to interface container. 4748 o Hello-padding on interface moved to hello-padding-disable with 4749 empty type. 4751 o three-way-handshake removed. 4753 o route preference changed to a choice. 4755 o csnp-authentication/psnp-authentication merged to authentication 4756 container. 4758 o lsp-gen-interval-exp-delay removed. 4760 o Added overload-max-metric feature. 4762 o overload-max-metric is in a separate container. 4764 o Change hello-padding to container. 4766 o Change bfd to container. 4768 o Make BFD a feature. 4770 o Create mpls-te container and put router-id inside. 4772 o Remove GR helper disable and timers. 4774 12. Normative References 4776 [I-D.ietf-netmod-routing-cfg] 4777 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 4778 Management", draft-ietf-netmod-routing-cfg-25 (work in 4779 progress), November 2016. 4781 [I-D.ietf-rtgwg-yang-key-chain] 4782 Lindem, A., Qu, Y., Yeung, D., Chen, I., and Z. Zhang, 4783 "Routing Key Chain YANG Data Model", draft-ietf-rtgwg- 4784 yang-key-chain-24 (work in progress), April 2017. 4786 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4787 Requirement Levels", BCP 14, RFC 2119, 4788 DOI 10.17487/RFC2119, March 1997, 4789 . 4791 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 4792 DOI 10.17487/RFC3688, January 2004, 4793 . 4795 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi 4796 Topology (MT) Routing in Intermediate System to 4797 Intermediate Systems (IS-ISs)", RFC 5120, 4798 DOI 10.17487/RFC5120, February 2008, 4799 . 4801 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for 4802 IP Fast Reroute: Loop-Free Alternates", RFC 5286, 4803 DOI 10.17487/RFC5286, September 2008, 4804 . 4806 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP 4807 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March 4808 2009, . 4810 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 4811 the Network Configuration Protocol (NETCONF)", RFC 6020, 4812 DOI 10.17487/RFC6020, October 2010, 4813 . 4815 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 4816 and A. Bierman, Ed., "Network Configuration Protocol 4817 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 4818 . 4820 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 4821 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 4822 . 4824 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 4825 Protocol (NETCONF) Access Control Model", RFC 6536, 4826 DOI 10.17487/RFC6536, March 2012, 4827 . 4829 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. 4830 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", 4831 RFC 7490, DOI 10.17487/RFC7490, April 2015, 4832 . 4834 Appendix A. Example of IS-IS configuration in XML 4836 This section gives an example of configuration of an IS-IS instance 4837 on a device. The example is written in XML. 4839 4840 4841 4842 SLI 4843 1.1.1.1 4844 4845 4846 4847 Loopback0 4848 4849 4850 Eth1 4851 4852 4853 4854 4855 ISIS 4856 4857 isis:isis 4858 4859 true 4860 level-2 4861 87FC.FCDF.4432 4862 49.0001 4863 4864 1.1.1.1 4865 4866 65535 4867 65000 4868 4869 wide 4870 4871 4872 111111 4873 4874 4875 4876 ipv4-unicast 4877 true 4878 4879 4880 4881 4882 Loopback0 4883 200 4884 4885 0 4886 4887 true 4888 4889 4890 Eth1 4891 level-2 4892 point-to-point 4893 4894 167890 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 Loopback0 4905 4906 4907 4908 4909 4910
4911 1.1.1.1 4912 32 4913
4914
4916
4917 4918 Eth1 4919 4920 4921 4922 4923 4924
4925 10.0.0.1 4926 30 4927
4928
4930
4931
4932
4934 Authors' Addresses 4936 Stephane Litkowski 4937 Orange 4939 Email: stephane.litkowski@orange.com 4941 Derek Yeung 4942 Arrcus, Inc 4944 Email: derek@arrcus.com 4946 Acee Lindem 4947 Cisco Systems 4949 Email: acee@cisco.com 4951 Jeffrey Zhang 4952 Juniper Networks 4954 Email: zzhang@juniper.net 4956 Ladislav Lhotka 4957 CZ.NIC 4959 Email: lhotka@nic.cz