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