idnits 2.17.1 draft-ietf-isis-yang-isis-cfg-32.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 1914 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-32 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. Multitopology 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 shutdown 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. Multitopology Parameters 444 The model supports multitopology (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 "afs" 458 container (requiring "nlpid-control" feature to be advertised). 460 2.3. Per-Level Parameters 462 Some parameters allow a per level configuration. In this case, the 463 parameter is modeled as a container with three configuration 464 locations: 466 o a top level container: corresponds to level-1-2, so the 467 configuration applies to both levels. 469 o a level-1 container: corresponds to level-1 specific parameters. 471 o a level-2 container: corresponds to level-2 specific parameters. 473 +--rw priority 474 | +--rw value? uint8 475 | +--rw level-1 476 | | +--rw value? uint8 477 | +--rw level-2 478 | +--rw value? uint8 480 Example: 482 483 250 484 485 100 486 487 488 200 489 490 492 An implementation SHOULD prefer a level specific parameter over a 493 level-all parameter. As example, if the priority is 100 for the 494 level-1, 200 for the level-2 and 250 for the top level configuration, 495 the implementation should use 100 for the level-1 and 200 for the 496 level-2. 498 Some parameters like "overload bit" and "route preference" are not 499 modeled to support a per level configuration. If an implementation 500 supports per level configuration for such parameter, this 501 implementation SHOULD augment the current model by adding both 502 level-1 and level-2 containers and SHOULD reuse existing 503 configuration groupings. 505 Example of augmentation: 507 augment "/rt:routing/" + 508 "rt:control-plane-protocols/rt:control-plane-protocol"+ 509 "/isis:isis/isis:overload" { 510 when "rt:type = 'isis:isis'" { 511 description 512 "This augment IS-IS routing protocol when used"; 513 } 514 description 515 "This augments IS-IS overload configuration 516 with per level configuration."; 518 container level-1 { 519 uses isis:overload-global-cfg; 520 description 521 "Level 1 configuration."; 522 } 523 container level-2 { 524 uses isis:overload-global-cfg; 525 description 526 "Level 2 configuration."; 527 } 528 } 530 If an implementation does not support per level configuration for a 531 parameter modeled with per level configuration, the implementation 532 SHOULD advertise a deviation to announce the non support of the 533 level-1 and level-2 containers. 535 Finally, if an implementation supports per level configuration but 536 does not support the level-1-2 configuration, it SHOULD also 537 advertise a deviation. 539 2.4. Per-Interface Parameters 541 The per-interface section of the IS-IS instance describes the 542 interface specific parameters. 544 The interface is modeled as a reference to an existing interface 545 defined in the "ietf-interfaces" YANG model ([RFC8343]. 547 Each interface has some interface-specific parameters that may have a 548 different per level value as described in previous section. An 549 interface-specific parameter always override an IS-IS global 550 parameter. 552 Some parameters like hello-padding are defined as containers to allow 553 easy extension by vendor specific modules. 555 +--rw interfaces 556 +--rw interface* [name] 557 +--rw name if:interface-ref 558 +--rw level-type? level 559 +--rw lsp-pacing-interval? 560 | rt-types:timer-value-milliseconds 561 +--rw lsp-retransmit-interval? 562 | rt-types:timer-value-seconds16 563 +--rw passive? boolean 564 +--rw csnp-interval? 565 | rt-types:timer-value-seconds16 566 +--rw hello-padding 567 | +--rw enable? boolean 568 +--rw mesh-group-enable? mesh-group-state 569 +--rw mesh-group? uint8 570 +--rw interface-type? interface-type 571 +--rw enable? boolean {admin-control}? 572 +--rw tag* uint32 {prefix-tag}? 573 +--rw tag64* uint64 {prefix-tag64}? 574 +--rw node-flag? boolean {node-flag}? 575 +--rw hello-authentication 576 | +--rw (authentication-type)? 577 | | +--:(key-chain) {key-chain}? 578 | | | +--rw key-chain? 579 | | | key-chain:key-chain-ref 580 | | +--:(password) 581 | | +--rw key? string 582 | | +--rw crypto-algorithm? identityref 583 | +--rw level-1 584 | | +--rw (authentication-type)? 585 | | +--:(key-chain) {key-chain}? 586 | | | +--rw key-chain? 587 | | | key-chain:key-chain-ref 588 | | +--:(password) 589 | | +--rw key? string 590 | | +--rw crypto-algorithm? identityref 591 | +--rw level-2 592 | +--rw (authentication-type)? 593 | +--:(key-chain) {key-chain}? 594 | | +--rw key-chain? 595 | | key-chain:key-chain-ref 596 | +--:(password) 597 | +--rw key? string 598 | +--rw crypto-algorithm? identityref 599 +--rw hello-interval 600 | +--rw value? rt-types:timer-value-seconds16 601 | +--rw level-1 602 | | +--rw value? rt-types:timer-value-seconds16 603 | +--rw level-2 604 | +--rw value? rt-types:timer-value-seconds16 605 +--rw hello-multiplier 606 | +--rw value? uint16 607 | +--rw level-1 608 | | +--rw value? uint16 609 | +--rw level-2 610 | +--rw value? uint16 611 +--rw priority 612 | +--rw value? uint8 613 | +--rw level-1 614 | | +--rw value? uint8 615 | +--rw level-2 616 | +--rw value? uint8 617 +--rw metric 618 | +--rw value? wide-metric 619 | +--rw level-1 620 | | +--rw value? wide-metric 621 | +--rw level-2 622 | +--rw value? wide-metric 623 +--rw bfd {bfd}? 624 | +--rw enable? boolean 625 | +--rw local-multiplier? multiplier 626 | +--rw (interval-config-type)? 627 | +--:(tx-rx-intervals) 628 | | +--rw desired-min-tx-interval? uint32 629 | | +--rw required-min-rx-interval? uint32 630 | +--:(single-interval) {single-minimum-interval}? 631 | +--rw min-interval? uint32 632 +--rw address-families {nlpid-control}? 633 | +--rw address-family-list* [address-family] 634 | +--rw address-family iana-rt-types:address-family 635 +--rw mpls 636 | +--rw ldp 637 | +--rw igp-sync? boolean {ldp-igp-sync}? 638 +--rw fast-reroute {fast-reroute}? 639 | +--rw lfa {lfa}? 640 | +--rw candidate-enable? boolean 641 | +--rw enable? boolean 642 | +--rw remote-lfa {remote-lfa}? 643 | | +--rw enable? boolean 644 | +--rw level-1 645 | | +--rw candidate-enable? boolean 646 | | +--rw enable? boolean 647 | | +--rw remote-lfa {remote-lfa}? 648 | | +--rw enable? boolean 649 | +--rw level-2 650 | +--rw candidate-enable? boolean 651 | +--rw enable? boolean 652 | +--rw remote-lfa {remote-lfa}? 653 | +--rw enable? boolean 654 +--ro adjacencies 655 | +--ro adjacency* [] 656 | +--ro neighbor-sys-type? level 657 | +--ro neighbor-sysid? system-id 658 | +--ro neighbor-extended-circuit-id? 659 | | extended-circuit-id 660 | +--ro neighbor-snpa? snpa 661 | +--ro usage? level 662 | +--ro hold-timer? 663 | | rt-types:timer-value-seconds16 664 | +--ro neighbor-priority? uint8 665 | +--ro lastuptime? yang:timestamp 666 | +--ro state? adj-state-type 667 +--ro event-counters 668 | +--ro adjacency-changes? uint32 669 | +--ro adjacency-number? uint32 670 | +--ro init-fails? uint32 671 | +--ro adjacency-rejects? uint32 672 | +--ro id-len-mismatch? uint32 673 | +--ro max-area-addresses-mismatch? uint32 674 | +--ro authentication-type-fails? uint32 675 | +--ro authentication-fails? uint32 676 | +--ro lan-dis-changes? uint32 677 +--ro packet-counters 678 | +--ro level* [level] 679 | +--ro level level-number 680 | +--ro iih 681 | | +--ro in? uint32 682 | | +--ro out? uint32 683 | +--ro ish 684 | | +--ro in? uint32 685 | | +--ro out? uint32 686 | +--ro esh 687 | | +--ro in? uint32 688 | | +--ro out? uint32 689 | +--ro lsp 690 | | +--ro in? uint32 691 | | +--ro out? uint32 692 | +--ro psnp 693 | | +--ro in? uint32 694 | | +--ro out? uint32 695 | +--ro csnp 696 | | +--ro in? uint32 697 | | +--ro out? uint32 698 | +--ro unknown 699 | +--ro in? uint32 700 | +--ro out? uint32 701 +--rw topologies {multi-topology}? 702 +--rw topology* [name] 703 +--rw name -> 704 ../../../../../../../../rt:ribs/rib/name 705 +--rw metric 706 +--rw value? wide-metric 707 +--rw level-1 708 | +--rw value? wide-metric 709 +--rw level-2 710 +--rw value? wide-metric 712 rpcs: 713 +---x clear-adjacency 714 | +---w input 715 | +---w routing-protocol-instance-name -> 716 /rt:routing/control-plane-protocols/control-plane-protocol/name 717 | +---w level? level 718 | +---w interface? if:interface-ref 719 +---x clear-database 720 +---w input 721 +---w routing-protocol-instance-name -> 722 /rt:routing/control-plane-protocols/control-plane-protocol/name 723 +---w level? level 725 notifications: 726 +---n database-overload 727 | +--ro routing-protocol-name? -> 728 /rt:routing/control-plane-protocols/control-plane-protocol/name 729 | +--ro isis-level? level 730 | +--ro overload? enumeration 731 +---n lsp-too-large 732 | +--ro routing-protocol-name? -> 733 /rt:routing/control-plane-protocols/control-plane-protocol/name 734 | +--ro isis-level? level 735 | +--ro interface-name? if:interface-ref 736 | +--ro interface-level? level 737 | +--ro extended-circuit-id? extended-circuit-id 738 | +--ro pdu-size? uint32 739 | +--ro lsp-id? lsp-id 740 +---n if-state-change 741 | +--ro routing-protocol-name? -> 742 /rt:routing/control-plane-protocols/control-plane-protocol/name 743 | +--ro isis-level? level 744 | +--ro interface-name? if:interface-ref 745 | +--ro interface-level? level 746 | +--ro extended-circuit-id? extended-circuit-id 747 | +--ro state? if-state-type 748 +---n corrupted-lsp-detected 749 | +--ro routing-protocol-name? -> 750 /rt:routing/control-plane-protocols/control-plane-protocol/name 751 | +--ro isis-level? level 752 | +--ro lsp-id? lsp-id 753 +---n attempt-to-exceed-max-sequence 754 | +--ro routing-protocol-name? -> 755 /rt:routing/control-plane-protocols/control-plane-protocol/name 756 | +--ro isis-level? level 757 | +--ro lsp-id? lsp-id 758 +---n id-len-mismatch 759 | +--ro routing-protocol-name? -> 760 /rt:routing/control-plane-protocols/control-plane-protocol/name 761 | +--ro isis-level? level 762 | +--ro interface-name? if:interface-ref 763 | +--ro interface-level? level 764 | +--ro extended-circuit-id? extended-circuit-id 765 | +--ro pdu-field-len? uint8 766 | +--ro raw-pdu? binary 767 +---n max-area-addresses-mismatch 768 | +--ro routing-protocol-name? -> 769 /rt:routing/control-plane-protocols/control-plane-protocol/name 770 | +--ro isis-level? level 771 | +--ro interface-name? if:interface-ref 772 | +--ro interface-level? level 773 | +--ro extended-circuit-id? extended-circuit-id 774 | +--ro max-area-addresses? uint8 775 | +--ro raw-pdu? binary 776 +---n own-lsp-purge 777 | +--ro routing-protocol-name? -> 778 /rt:routing/control-plane-protocols/control-plane-protocol/name 779 | +--ro isis-level? level 780 | +--ro interface-name? if:interface-ref 781 | +--ro interface-level? level 782 | +--ro extended-circuit-id? extended-circuit-id 783 | +--ro lsp-id? lsp-id 784 +---n sequence-number-skipped 785 | +--ro routing-protocol-name? -> 786 /rt:routing/control-plane-protocols/control-plane-protocol/name 787 | +--ro isis-level? level 788 | +--ro interface-name? if:interface-ref 789 | +--ro interface-level? level 790 | +--ro extended-circuit-id? extended-circuit-id 791 | +--ro lsp-id? lsp-id 792 +---n authentication-type-failure 793 | +--ro routing-protocol-name? -> 794 /rt:routing/control-plane-protocols/control-plane-protocol/name 795 | +--ro isis-level? level 796 | +--ro interface-name? if:interface-ref 797 | +--ro interface-level? level 798 | +--ro extended-circuit-id? extended-circuit-id 799 | +--ro raw-pdu? binary 800 +---n authentication-failure 801 | +--ro routing-protocol-name? -> 802 /rt:routing/control-plane-protocols/control-plane-protocol/name 803 | +--ro isis-level? level 804 | +--ro interface-name? if:interface-ref 805 | +--ro interface-level? level 806 | +--ro extended-circuit-id? extended-circuit-id 807 | +--ro raw-pdu? binary 808 +---n version-skew 809 | +--ro routing-protocol-name? -> 810 /rt:routing/control-plane-protocols/control-plane-protocol/name 811 | +--ro isis-level? level 812 | +--ro interface-name? if:interface-ref 813 | +--ro interface-level? level 814 | +--ro extended-circuit-id? extended-circuit-id 815 | +--ro protocol-version? uint8 816 | +--ro raw-pdu? binary 817 +---n area-mismatch 818 | +--ro routing-protocol-name? -> 819 /rt:routing/control-plane-protocols/control-plane-protocol/name 820 | +--ro isis-level? level 821 | +--ro interface-name? if:interface-ref 822 | +--ro interface-level? level 823 | +--ro extended-circuit-id? extended-circuit-id 824 | +--ro raw-pdu? binary 825 +---n rejected-adjacency 826 | +--ro routing-protocol-name? -> 827 /rt:routing/control-plane-protocols/control-plane-protocol/name 828 | +--ro isis-level? level 829 | +--ro interface-name? if:interface-ref 830 | +--ro interface-level? level 831 | +--ro extended-circuit-id? extended-circuit-id 832 | +--ro raw-pdu? binary 833 | +--ro reason? string 834 +---n protocols-supported-mismatch 835 | +--ro routing-protocol-name? -> 836 /rt:routing/control-plane-protocols/control-plane-protocol/name 837 | +--ro isis-level? level 838 | +--ro interface-name? if:interface-ref 839 | +--ro interface-level? level 840 | +--ro extended-circuit-id? extended-circuit-id 841 | +--ro raw-pdu? binary 842 | +--ro protocols* uint8 843 +---n lsp-error-detected 844 | +--ro routing-protocol-name? -> 845 /rt:routing/control-plane-protocols/control-plane-protocol/name 846 | +--ro isis-level? level 847 | +--ro interface-name? if:interface-ref 848 | +--ro interface-level? level 849 | +--ro extended-circuit-id? extended-circuit-id 850 | +--ro lsp-id? lsp-id 851 | +--ro raw-pdu? binary 852 | +--ro error-offset? uint32 853 | +--ro tlv-type? uint8 854 +---n adjacency-state-change 855 | +--ro routing-protocol-name? -> 856 /rt:routing/control-plane-protocols/control-plane-protocol/name 857 | +--ro isis-level? level 858 | +--ro interface-name? if:interface-ref 859 | +--ro interface-level? level 860 | +--ro extended-circuit-id? extended-circuit-id 861 | +--ro neighbor? string 862 | +--ro neighbor-system-id? system-id 863 | +--ro state? adj-state-type 864 | +--ro reason? string 865 +---n lsp-received 866 | +--ro routing-protocol-name? -> 867 /rt:routing/control-plane-protocols/control-plane-protocol/name 868 | +--ro isis-level? level 869 | +--ro interface-name? if:interface-ref 870 | +--ro interface-level? level 871 | +--ro extended-circuit-id? extended-circuit-id 872 | +--ro lsp-id? lsp-id 873 | +--ro sequence? uint32 874 | +--ro received-timestamp? yang:timestamp 875 | +--ro neighbor-system-id? system-id 876 +---n lsp-generation 877 +--ro routing-protocol-name? -> 878 /rt:routing/control-plane-protocols/control-plane-protocol/name 879 +--ro isis-level? level 880 +--ro lsp-id? lsp-id 881 +--ro sequence? uint32 882 +--ro send-timestamp? yang:timestamp 884 2.5. Authentication Parameters 886 The module enables authentication configuration through the IETF key- 887 chain module ([RFC8177]). The IS-IS module imports the "ietf-key- 888 chain" module and reuses some groupings to allow global and per 889 interface configuration of authentication. If a global 890 authentication is configured, an implementation SHOULD authenticate 891 PSNPs (Partial Sequence Number Packets), CSNPs (Complete Sequence 892 Number Packets) and LSPs (Link State Packets) with the authentication 893 parameters supplied. The authentication of HELLO PDUs (Protocol Data 894 Units) can be activated on a per interface basis. 896 2.6. IGP/LDP synchronization 898 [RFC5443] defines a mechanism where IGP (Interior Gateway Protocol) 899 needs to be synchronized with LDP (Label Distribution Protocol). An 900 "ldp-igp-sync" feature has been defined in the model to support this 901 mechanism. The "mpls/ldp/igp-sync" leaf under "interface" allows 902 activation of the mechanism on a per interface basis. The "mpls/ldp/ 903 igp-sync" container in the global configuration is empty on purpose 904 and is not required for the activation. The goal of this empty 905 container is to allow easy augmentation with additional parameters 906 like timers for example. 908 2.7. ISO parameters 910 As IS-IS protocol is based on ISO protocol suite, some ISO parameters 911 may be required. 913 This module augments interface configuration model to support ISO 914 configuration parameters. 916 The clns-mtu can be defined under the interface. 918 2.8. IP FRR 920 This YANG module supports LFA (Loop Free Alternates) ([RFC5286]) and 921 remote LFA ([RFC7490]) as IP FRR techniques. The "fast-reroute" 922 container may be augmented by other models to support other IPFRR 923 flavors (MRT, TILFA ...). 925 The current version of the model supports activation of LFA and 926 remote LFA at interface only. The global "lfa" container is present 927 but kept empty to allow augmentation with vendor specific properties 928 like policies. 930 Remote LFA is considered as a child of LFA. Remote LFA cannot be 931 enabled if LFA is not enabled. 933 The "candidate-disabled" allows to mark an interface to not be used 934 as a backup. 936 2.9. Operational States 938 Operational states are provided in the module in various places: 940 o system-counters: provides statistical informations about the 941 global system. 943 o interface : provides configuration state informations for each 944 interface. 946 o adjacencies: provides state informations about current IS-IS 947 adjacencies. 949 o spf-log: provides informations about SPF events on the node. This 950 SHOULD be implemented as a wrapping buffer. 952 o lsp-log: provides informations about LSP events on the node 953 (reception of an LSP or modification of local LSP). This SHOULD 954 be implemented as a wrapping buffer and an implementation MAY 955 decide to log refresh LSPs or not. 957 o local-rib: provides the IS-IS internal routing table view. 959 o database: provides details on the current LSDB. 961 o hostnames: provides informations about system-id to hostname 962 mappings (as defined in [RFC5301]). 964 o fast-reroute: provides informations about IP FRR. 966 3. RPC Operations 968 The "ietf-isis" module defines two RPC operations: 970 o clear-database: reset the content of a particular IS-IS database 971 and restart database synchronization with the neighbors. 973 o clear-adjacency: restart a particular set of IS-IS adjacencies. 975 4. Notifications 977 The "ietf-isis" module introduces some notifications : 979 database-overload: raised when overload condition is changed. 981 lsp-too-large: raised when the system tries to propagate a too 982 large PDU. 984 if-state-change: raised when the state of an interface changes. 986 corrupted-lsp-detected: raised when the system finds that an LSP 987 that was stored in memory has become corrupted. 989 attempt-to-exceed-max-sequence: This notification is sent when the 990 system wraps the 32-bit sequence counter of an LSP. 992 id-len-mismatch: This notification is sent when we receive a PDU 993 with a different value for the System ID length. 995 max-area-addresses-mismatch: This notification is sent when we 996 receive a PDU with a different value for the Maximum Area 997 Addresses. 999 own-lsp-purge: This notification is sent when the system receives 1000 a PDU with its own system ID and zero age. 1002 sequence-number-skipped: This notification is sent when the system 1003 receives a PDU with its own system ID and different contents. The 1004 system has to reissue the LSP with a higher sequence number. 1006 authentication-type-failure: This notification is sent when the 1007 system receives a PDU with the wrong authentication type field. 1009 authentication-failure: This notification is sent when the system 1010 receives a PDU with the wrong authentication information. 1012 version-skew: This notification is sent when the system receives a 1013 PDU with a different protocol version number. 1015 area-mismatch: This notification is sent when the system receives 1016 a Hello PDU from an IS that does not share any area address. 1018 rejected-adjacency: This notification is sent when the system 1019 receives a Hello PDU from an IS but does not establish an 1020 adjacency for some reason. 1022 protocols-supported-mismatch: This notification is sent when the 1023 system receives a non pseudonode LSP that has no matching protocol 1024 supported. 1026 lsp-error-detected: This notification is sent when the system 1027 receives a LSP with a parse error. 1029 adjacency-state-change: This notification is sent when an IS-IS 1030 adjacency moves to Up state or to Down state. 1032 lsp-received: This notification is sent when a LSP is received. 1034 lsp-generation: This notification is sent when a LSP is 1035 regenerated. 1037 5. Interaction with Other YANG Modules 1039 The "isis" container augments the "/rt:routing/rt:control-plane- 1040 protocols/control-plane-protocol" container of the ietf-routing 1041 [RFC8349] module by defining IS-IS specific parameters. 1043 The "isis" module augments "/if:interfaces/if:interface" defined by 1044 [RFC8343] with ISO specific parameters. 1046 The "isis" operational state container augments the "/rt:routing- 1047 state/rt:control-plane-protocols/control-plane-protocol" container of 1048 the ietf-routing module by defining IS-IS specific operational 1049 states. 1051 Some IS-IS specific routes attributes are added to route objects of 1052 the ietf-routing module by augmenting "/rt:routing- 1053 state/rt:ribs/rt:rib/rt:routes/rt:route". 1055 The modules defined in this document use some groupings from ietf- 1056 keychain [RFC8177]. 1058 The module reuses types from [RFC6991] and [RFC8294]. 1060 To support BFD for fast detection, the module relies on 1061 [I-D.ietf-bfd-yang]. 1063 6. IS-IS YANG Module 1065 The following RFCs, drafts and external standards are not referenced 1066 in the document text but are referenced in the ietf-isis.yang module: 1067 [ISO-10589], [RFC1195], [RFC5029], [RFC5130], [RFC5305], [RFC5306], 1068 [RFC5308], [RFC5880], [RFC5881], [RFC6119], [RFC6232], [RFC7794], 1069 [RFC7810], [RFC7917], [RFC8405]. 1071 file "ietf-isis@2019-01-21.yang" 1073 module ietf-isis { 1074 yang-version 1.1; 1075 namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; 1077 prefix isis; 1078 import ietf-routing { 1079 prefix "rt"; 1080 reference "RFC 8349 - A YANG Data Model for Routing 1081 Management (NMDA Version)"; 1082 } 1084 import ietf-inet-types { 1085 prefix inet; 1086 reference "RFC 6991 - Common YANG Data Types"; 1087 } 1089 import ietf-yang-types { 1090 prefix yang; 1091 reference "RFC 6991 - Common YANG Data Types"; 1092 } 1094 import ietf-interfaces { 1095 prefix "if"; 1096 reference "RFC 8343 - A YANG Data Model for Interface 1097 Management (NDMA Version)"; 1098 } 1100 import ietf-key-chain { 1101 prefix "key-chain"; 1102 reference "RFC 8177 - YANG Data Model for Key Chains"; 1103 } 1105 import ietf-routing-types { 1106 prefix "rt-types"; 1107 reference "RFC 8294 - Common YANG Data Types for the 1108 Routing Area"; 1109 } 1111 import iana-routing-types { 1112 prefix "iana-rt-types"; 1113 reference "RFC 8294 - Common YANG Data Types for the 1114 Routing Area"; 1115 } 1117 import ietf-bfd-types { 1118 prefix "bfd-types"; 1119 reference "RFC YYYY - YANG Data Model for Bidirectional 1120 Forwarding Detection (BFD). 1122 -- Note to RFC Editor Please replace YYYY with published RFC number 1123 for draft-ietf-bfd-yang."; 1125 } 1126 organization 1127 "IETF LSR Working Group"; 1129 contact 1130 "WG List: <mailto:lsr@ietf.org> 1132 Editor: Stephane Litkowski 1133 <mailto:stephane.litkowski@orange.com> 1135 Derek Yeung 1136 <mailto:derek@arrcus.com> 1137 Acee Lindem 1138 <mailto:acee@cisco.com> 1139 Jeffrey Zhang 1140 <mailto:zzhang@juniper.net> 1141 Ladislav Lhotka 1142 <mailto:llhotka@nic.cz> 1143 Yi Yang 1144 <mailto:yiya@cisco.com> 1145 Dean Bogdanovic 1146 <mailto:deanb@juniper.net> 1147 Kiran Agrahara Sreenivasa 1148 <mailto:kkoushik@brocade.com> 1149 Yingzhen Qu 1150 <mailto:yiqu@cisco.com> 1151 Jeff Tantsura 1152 <mailto:jefftant.ietf@gmail.com> 1154 "; 1156 description 1157 "This YANG module defines the generic configuration and 1158 operational state for the IS-IS protocol. 1159 It is intended that the module 1160 will be extended by vendors to define vendor-specific 1161 IS-IS configuration parameters and policies, 1162 for example route maps or route policies. 1164 This YANG module conforms to the Network Management 1165 Datastore Architecture (NDMA) as described in RFC 8242. 1167 Copyright (c) 2018 IETF Trust and the persons identified as 1168 authors of the code. All rights reserved. 1170 Redistribution and use in source and binary forms, with or 1171 without modification, is permitted pursuant to, and subject 1172 to the license terms contained in, the Simplified BSD License 1173 set forth in Section 4.c of the IETF Trust's Legal Provisions 1174 Relating to IETF Documents 1175 (http://trustee.ietf.org/license-info). 1177 This version of this YANG module is part of RFC XXXX; 1178 see the RFC itself for full legal notices. 1180 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 1181 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 1182 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document 1183 are to be interpreted as described in BCP 14 [RFC2119] 1184 [RFC8174] when, and only when, they appear in all capitals, as 1185 shown here. 1186 "; 1188 revision 2019-01-21 { 1189 description 1190 "Initial revision."; 1191 reference "RFC XXXX"; 1192 } 1194 /* Identities */ 1196 identity isis { 1197 base rt:routing-protocol; 1198 description "Identity for the IS-IS routing protocol."; 1199 } 1201 identity lsp-log-reason { 1202 description "Base identity for an LSP change log reason."; 1203 } 1205 identity refresh { 1206 base lsp-log-reason; 1207 description 1208 "Identity used when the LSP log reason is 1209 a refresh LSP received."; 1210 } 1212 identity content-change { 1213 base lsp-log-reason; 1214 description 1215 "Identity used when the LSP log reason is 1216 a change in the content of the LSP."; 1217 } 1219 /* Feature definitions */ 1220 feature poi-tlv { 1221 description "Support of Purge Originator Identification."; 1222 reference "RFC 6232 - Purge Originator Identification TLV 1223 for IS-IS"; 1224 } 1225 feature ietf-spf-delay { 1226 description 1227 "Support for IETF SPF delay algorithm."; 1228 reference "RFC 8405 - SPF Back-off algorithm for link 1229 state IGPs"; 1230 } 1231 feature bfd { 1232 description 1233 "Support for BFD detection of IS-IS neighbor reachability."; 1234 reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) 1235 RFC 5881 - Bidirectional Forwarding Detection 1236 (BFD) for IPv4 and IPv6 (Single Hop)"; 1237 } 1238 feature key-chain { 1239 description 1240 "Support of keychain for authentication."; 1241 reference "RFC8177 - YANG Data Model for Key Chains"; 1242 } 1243 feature node-flag { 1244 description 1245 "Support for node-flag for IS-IS prefixes."; 1246 reference "RFC7794 - IS-IS Prefix Attributes for 1247 Extended IP and IPv6 Reachability"; 1248 } 1249 feature node-tag { 1250 description 1251 "Support for node admin tag for IS-IS routing instances."; 1252 reference "RFC7917 - Advertising Node Administrative Tags 1253 in IS-IS"; 1254 } 1255 feature ldp-igp-sync { 1256 description 1257 "LDP IGP synchronization."; 1258 reference "RFC5443 - LDP IGP Synchronization."; 1259 } 1260 feature fast-reroute { 1261 description 1262 "Support for IP Fast Reroute (IP-FRR)."; 1263 } 1264 feature nsr { 1265 description 1266 "Non-Stop-Routing (NSR) support."; 1267 } 1268 feature lfa { 1269 description 1270 "Support for Loop-Free Alternates (LFAs)."; 1271 reference "RFC5286 - Basic Specification of IP Fast-Reroute: 1272 Loop-free Alternates"; 1273 } 1274 feature remote-lfa { 1275 description 1276 "Support for Remote Loop-Free Alternates (R-LFAs)."; 1277 reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute"; 1278 } 1280 feature overload-max-metric { 1281 description 1282 "Support of overload by setting 1283 all links to max metric."; 1284 } 1285 feature prefix-tag { 1286 description 1287 "Support for 32-bit prefix tags"; 1288 reference "RFC5130 - A Policy Control Mechanism in 1289 IS-IS Using Administrative Tags"; 1290 } 1291 feature prefix-tag64 { 1292 description 1293 "Support for 64-bit prefix tags"; 1294 reference "RFC5130 - A Policy Control Mechanism in 1295 IS-IS Using Administrative Tags"; 1296 } 1297 feature auto-cost { 1298 description 1299 "Calculate IS-IS interface metric according to 1300 reference bandwidth."; 1301 } 1303 feature te-rid { 1304 description 1305 "Traffic-Engineering Router-ID."; 1306 reference "RFC5305 - IS-IS Extensions for Traffic Engineering 1307 RFC6119 - IPv6 Traffic Engineering in IS-IS"; 1308 } 1309 feature max-ecmp { 1310 description 1311 "Setting maximum number of ECMP paths."; 1312 } 1313 feature multi-topology { 1314 description 1315 "Support for Multiple-Topology Routing (MTR)."; 1317 reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS"; 1318 } 1319 feature nlpid-control { 1320 description 1321 "This feature controls the advertisement 1322 of support NLPID within IS-IS configuration."; 1323 } 1324 feature graceful-restart { 1325 description 1326 "IS-IS Graceful restart support."; 1327 reference "RFC5306 - Restart Signaling in IS-IS"; 1328 } 1330 feature lsp-refresh { 1331 description 1332 "Configuration of LSP refresh interval."; 1333 } 1335 feature maximum-area-addresses { 1336 description 1337 "Support of maximum-area-addresses config."; 1338 } 1340 feature admin-control { 1341 description 1342 "Administrative control of the protocol state."; 1343 } 1345 /* Type definitions */ 1347 typedef circuit-id { 1348 type uint8; 1349 description 1350 "This type defines the circuit ID 1351 associated with an interface."; 1352 } 1354 typedef extended-circuit-id { 1355 type uint32; 1356 description 1357 "This type defines the extended circuit ID 1358 associated with an interface."; 1359 } 1361 typedef interface-type { 1362 type enumeration { 1363 enum broadcast { 1364 description 1365 "Broadcast interface type."; 1366 } 1367 enum point-to-point { 1368 description 1369 "Point-to-point interface type."; 1370 } 1371 } 1372 description 1373 "This type defines the type of adjacency 1374 to be established on the interface. 1375 The interface-type determines the type 1376 of hello message that is used."; 1378 } 1380 typedef level { 1381 type enumeration { 1382 enum "level-1" { 1383 description 1384 "This enum indicates L1-only capability."; 1385 } 1386 enum "level-2" { 1387 description 1388 "This enum indicates L2-only capability."; 1389 } 1390 enum "level-all" { 1391 description 1392 "This enum indicates capability for both levels."; 1393 } 1394 } 1395 default "level-all"; 1396 description 1397 "This type defines IS-IS level of an object."; 1399 } 1401 typedef adj-state-type { 1402 type enumeration { 1403 enum "up" { 1404 description 1405 "State indicates the adjacency is established."; 1406 } 1407 enum "down" { 1408 description 1409 "State indicates the adjacency is NOT established."; 1410 } 1411 enum "init" { 1412 description 1413 "State indicates the adjacency is establishing."; 1414 } 1415 enum "failed" { 1416 description 1417 "State indicates the adjacency is failed."; 1418 } 1419 } 1420 description 1421 "This type defines states of an adjacency"; 1422 } 1424 typedef if-state-type { 1425 type enumeration { 1426 enum "up" { 1427 description "Up state."; 1429 } 1430 enum "down" { 1431 description "Down state"; 1432 } 1433 } 1434 description 1435 "This type defines the state of an interface"; 1436 } 1438 typedef level-number { 1439 type uint8 { 1440 range "1 .. 2"; 1441 } 1442 description 1443 "This type defines the current IS-IS level."; 1444 } 1446 typedef lsp-id { 1447 type string { 1448 pattern 1449 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' 1450 +'{4}\.[0-9][0-9]-[0-9][0-9]'; 1451 } 1452 description 1453 "This type defines the IS-IS LSP ID format using a 1454 pattern. An example LSP ID is 0143.0438.AEF0.02-01"; 1455 } 1457 typedef area-address { 1458 type string { 1459 pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}'; 1460 } 1461 description 1462 "This type defines the area address format."; 1463 } 1465 typedef snpa { 1466 type string { 1467 length "0 .. 20"; 1468 } 1469 description 1470 "This type defines the Subnetwork Point 1471 of Attachement (SNPA) format. 1472 The SNPA should be encoded according to the rules 1473 specified for the particular type of subnetwork 1474 being used. As an example, for an ethernet subnetwork, 1475 the SNPA is encoded as a MAC address like 1476 '00aa.bbcc.ddee'."; 1477 } 1479 typedef system-id { 1480 type string { 1481 pattern 1482 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; 1483 } 1484 description 1485 "This type defines IS-IS system-id using pattern, 1486 An example system-id is 0143.0438.AEF0"; 1487 } 1488 typedef extended-system-id { 1489 type string { 1490 pattern 1491 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.' 1492 +'[0-9][0-9]'; 1493 } 1494 description 1495 "This type defines IS-IS system-id using pattern. The extended 1496 system-id contains the pseudonode number in addition to the 1497 system-id. 1498 An example system-id is 0143.0438.AEF0.00"; 1499 } 1501 typedef wide-metric { 1502 type uint32 { 1503 range "0 .. 16777215"; 1504 } 1505 description 1506 "This type defines wide style format of IS-IS metric."; 1507 } 1508 typedef std-metric { 1509 type uint8 { 1510 range "0 .. 63"; 1511 } 1512 description 1513 "This type defines old style format of IS-IS metric."; 1514 } 1516 typedef mesh-group-state { 1517 type enumeration { 1518 enum "mesh-inactive" { 1519 description 1520 "Interface is not part of a mesh group."; 1521 } 1522 enum "mesh-set" { 1523 description 1524 "Interface is part of a mesh group."; 1525 } 1526 enum "mesh-blocked" { 1527 description 1528 "LSPs must not be flooded over this interface."; 1529 } 1530 } 1531 description 1532 "This type describes mesh group state of an interface"; 1533 } 1535 /* Grouping for notifications */ 1537 grouping notification-instance-hdr { 1538 description 1539 "Instance specific IS-IS notification data grouping"; 1540 leaf routing-protocol-name { 1541 type leafref { 1542 path "/rt:routing/rt:control-plane-protocols/" 1543 + "rt:control-plane-protocol/rt:name"; 1544 } 1545 description "Name of the IS-IS instance."; 1546 } 1547 leaf isis-level { 1548 type level; 1549 description "IS-IS level of the instance."; 1550 } 1551 } 1553 grouping notification-interface-hdr { 1554 description 1555 "Interface specific IS-IS notification data grouping"; 1557 leaf interface-name { 1558 type if:interface-ref; 1559 description "IS-IS interface name"; 1560 } 1561 leaf interface-level { 1562 type level; 1563 description "IS-IS level of the interface."; 1564 } 1565 leaf extended-circuit-id { 1566 type extended-circuit-id; 1567 description "Eextended circuit-id of the interface."; 1568 } 1569 } 1571 /* Groupings for IP Fast Reroute */ 1573 grouping instance-fast-reroute-config { 1574 description 1575 "This group defines global configuration of IP 1576 Fast ReRoute (FRR)."; 1577 container fast-reroute { 1578 if-feature fast-reroute; 1579 description 1580 "This container may be augmented with global 1581 parameters for IP-FRR."; 1582 container lfa { 1583 if-feature lfa; 1584 description 1585 "This container may be augmented with 1586 global parameters for Loop-Free Alternatives (LFA). 1587 Container creation has no effect on LFA activation."; 1588 } 1589 } 1590 } 1592 grouping interface-lfa-config { 1593 leaf candidate-enable { 1594 type boolean; 1595 default true; 1596 description 1597 "Enable the interface to be used as backup."; 1598 } 1599 leaf enable { 1600 type boolean; 1601 default false; 1602 description 1603 "Activates LFA - Per-prefix LFA computation 1604 is assumed."; 1605 } 1606 container remote-lfa { 1607 if-feature remote-lfa; 1608 leaf enable { 1609 type boolean; 1610 default false; 1611 description 1612 "Activates Remote LFA (R-LFA)."; 1613 } 1614 description 1615 "Remote LFA configuration."; 1616 } 1617 description "Grouping for LFA interface configuration"; 1618 } 1619 grouping interface-fast-reroute-config { 1620 description 1621 "This group defines interface configuration of IP-FRR."; 1622 container fast-reroute { 1623 if-feature fast-reroute; 1624 container lfa { 1625 if-feature lfa; 1626 uses interface-lfa-config; 1627 container level-1 { 1628 uses interface-lfa-config; 1629 description 1630 "LFA level 1 config"; 1631 } 1632 container level-2 { 1633 uses interface-lfa-config; 1634 description 1635 "LFA level 2 config"; 1636 } 1637 description 1638 "LFA configuration."; 1639 } 1640 description 1641 "Interface IP Fast-reroute configuration."; 1642 } 1643 } 1644 grouping instance-fast-reroute-state { 1645 description "IPFRR state data grouping"; 1646 container protected-routes { 1647 config false; 1648 list address-family-stats { 1649 key "address-family prefix alternate"; 1651 leaf address-family { 1652 type iana-rt-types:address-family; 1653 description 1654 "Address-family"; 1655 } 1656 leaf prefix { 1657 type inet:ip-prefix; 1658 description 1659 "Protected prefix."; 1660 } 1661 leaf alternate { 1662 type inet:ip-address; 1663 description 1664 "Alternate nexthop for the prefix."; 1665 } 1666 leaf alternate-type { 1667 type enumeration { 1668 enum equal-cost { 1669 description 1670 "ECMP alternate."; 1671 } 1672 enum lfa { 1673 description 1674 "LFA alternate."; 1675 } 1676 enum remote-lfa { 1677 description 1678 "Remote LFA alternate."; 1679 } 1680 enum tunnel { 1681 description 1682 "Tunnel based alternate 1683 (like RSVP-TE or GRE)."; 1684 } 1685 enum ti-lfa { 1686 description 1687 "TI-LFA alternate."; 1688 } 1689 enum mrt { 1690 description 1691 "MRT alternate."; 1692 } 1693 enum other { 1694 description 1695 "Unknown alternate type."; 1696 } 1697 } 1698 description 1699 "Type of alternate."; 1701 } 1702 leaf best { 1703 type boolean; 1704 description 1705 "Is set when the alternate is the preferred one, 1706 is unset otherwise."; 1707 } 1708 leaf non-best-reason { 1709 type string { 1710 length "1..255"; 1711 } 1712 description 1713 "Information field to describe why the alternate 1714 is not best. The length should be limited to 255 1715 unicode characters. The expected format is a single 1716 line text."; 1717 } 1718 leaf protection-available { 1719 type bits { 1720 bit node-protect { 1721 position 0; 1722 description 1723 "Node protection available."; 1724 } 1725 bit link-protect { 1726 position 1; 1727 description 1728 "Link protection available."; 1729 } 1730 bit srlg-protect { 1731 position 2; 1732 description 1733 "SRLG protection available."; 1734 } 1735 bit downstream-protect { 1736 position 3; 1737 description 1738 "Downstream protection available."; 1739 } 1740 bit other { 1741 position 4; 1742 description 1743 "Other protection available."; 1744 } 1745 } 1746 description "Protection provided by the alternate."; 1747 } 1748 leaf alternate-metric1 { 1749 type uint32; 1750 description 1751 "Metric from Point of Local Repair (PLR) to 1752 destination through the alternate path."; 1753 } 1754 leaf alternate-metric2 { 1755 type uint32; 1756 description 1757 "Metric from PLR to the alternate node"; 1758 } 1759 leaf alternate-metric3 { 1760 type uint32; 1761 description 1762 "Metric from alternate node to the destination"; 1763 } 1764 description 1765 "Per-AF protected prefix statistics."; 1766 } 1767 description 1768 "List of prefixes that are protected."; 1769 } 1771 container unprotected-routes { 1772 config false; 1773 list address-family-stats { 1774 key "address-family prefix"; 1776 leaf address-family { 1777 type iana-rt-types:address-family; 1779 description "Address-family"; 1780 } 1781 leaf prefix { 1782 type inet:ip-prefix; 1783 description "Unprotected prefix."; 1784 } 1785 description 1786 "Per AF unprotected prefix statistics."; 1787 } 1788 description 1789 "List of prefixes that are not protected."; 1790 } 1792 list protection-statistics { 1793 key frr-protection-method; 1794 config false; 1795 leaf frr-protection-method { 1796 type string; 1797 description "Protection method used. 1798 The expected format is a single word. 1799 As example: LFA,rLFA, MRT, RSVP-TE..."; 1800 } 1801 list address-family-stats { 1802 key address-family; 1804 leaf address-family { 1805 type iana-rt-types:address-family; 1807 description "Address-family"; 1808 } 1809 leaf total-routes { 1810 type uint32; 1811 description "Total prefixes."; 1812 } 1813 leaf unprotected-routes { 1814 type uint32; 1815 description 1816 "Total prefixes that are not protected."; 1817 } 1818 leaf protected-routes { 1819 type uint32; 1820 description 1821 "Total prefixes that are protected."; 1822 } 1823 leaf linkprotected-routes { 1824 type uint32; 1825 description 1826 "Total prefixes that are link protected."; 1827 } 1828 leaf nodeprotected-routes { 1829 type uint32; 1830 description 1831 "Total prefixes that are node protected."; 1832 } 1833 description 1834 "Per AF protected prefix statistics."; 1835 } 1837 description "Global protection statistics."; 1838 } 1839 } 1841 /* Route table and local RIB groupings */ 1843 grouping local-rib { 1844 description "Local-rib - RIB for Routes computed by the local 1845 IS-IS routing instance."; 1846 container local-rib { 1847 config false; 1848 description "Local-rib."; 1849 list route { 1850 key "prefix"; 1851 description "Routes"; 1852 leaf prefix { 1853 type inet:ip-prefix; 1854 description "Destination prefix."; 1855 } 1856 container next-hops { 1857 description "Next hops for the route."; 1858 list next-hop { 1859 key "next-hop"; 1860 description "List of next hops for the route"; 1861 leaf outgoing-interface { 1862 type if:interface-ref; 1863 description 1864 "Name of the outgoing interface."; 1865 } 1866 leaf next-hop { 1867 type inet:ip-address; 1868 description "Nexthop address."; 1869 } 1870 } 1871 } 1872 leaf metric { 1873 type uint32; 1874 description "Metric for this route."; 1875 } 1876 leaf level { 1877 type level-number; 1878 description "Level number for this route."; 1879 } 1880 leaf route-tag { 1881 type uint32; 1882 description "Route tag for this route."; 1883 } 1884 } 1885 } 1886 } 1888 grouping route-content { 1889 description 1890 "IS-IS protocol-specific route properties grouping."; 1891 leaf metric { 1892 type uint32; 1893 description "IS-IS metric of a route."; 1894 } 1895 leaf-list tag { 1896 type uint64; 1897 description 1898 "List of tags associated with the route. The leaf 1899 describes both 32-bit and 64-bit tags."; 1900 } 1901 leaf route-type { 1902 type enumeration { 1903 enum l2-up-internal { 1904 description "Level 2 internal route 1905 and not leaked to a lower level"; 1906 } 1907 enum l1-up-internal { 1908 description "Level 1 internal route 1909 and not leaked to a lower level"; 1910 } 1911 enum l2-up-external { 1912 description "Level 2 external route 1913 and not leaked to a lower level"; 1914 } 1915 enum l1-up-external { 1916 description "Level 1 external route 1917 and not leaked to a lower level"; 1918 } 1919 enum l2-down-internal { 1920 description "Level 2 internal route 1921 and leaked to a lower level"; 1922 } 1923 enum l1-down-internal { 1924 description "Level 1 internal route 1925 and leaked to a lower level"; 1926 } 1927 enum l2-down-external { 1928 description "Level 2 external route 1929 and leaked to a lower level"; 1930 } 1931 enum l1-down-external { 1932 description "Level 1 external route 1933 and leaked to a lower level"; 1934 } 1935 } 1936 description "IS-IS route type."; 1937 } 1938 } 1939 /* Grouping definitions for configuration and ops state */ 1941 grouping adjacency-state { 1942 container adjacencies { 1943 config false; 1944 list adjacency { 1945 leaf neighbor-sys-type { 1946 type level; 1947 description 1948 "Level capability of neighboring system"; 1949 } 1950 leaf neighbor-sysid { 1951 type system-id; 1952 description 1953 "The system-id of the neighbor"; 1954 } 1955 leaf neighbor-extended-circuit-id { 1956 type extended-circuit-id; 1957 description 1958 "Circuit ID of the neighbor"; 1959 } 1960 leaf neighbor-snpa { 1961 type snpa; 1962 description 1963 "SNPA of the neighbor"; 1964 } 1965 leaf usage { 1966 type level; 1967 description 1968 "Define the level(s) activated on the adjacency. 1969 On a p2p link this might be level 1 and 2, 1970 but on a LAN, the usage will be level 1 1971 between peers at level 1 or level 2 between 1972 peers at level 2."; 1973 } 1974 leaf hold-timer { 1975 type rt-types:timer-value-seconds16; 1976 units seconds; 1977 description 1978 "The holding time in seconds for this 1979 adjacency. This value is based on 1980 received hello PDUs and the elapsed 1981 time since receipt."; 1982 } 1983 leaf neighbor-priority { 1984 type uint8 { 1985 range "0 .. 127"; 1987 } 1988 description 1989 "Priority of the neighboring IS for becoming 1990 the DIS."; 1991 } 1992 leaf lastuptime { 1993 type yang:timestamp; 1994 description 1995 "When the adjacency most recently entered 1996 state 'up', measured in hundredths of a 1997 second since the last reinitialization of 1998 the network management subsystem. 1999 The value is 0 if the adjacency has never 2000 been in state 'up'."; 2001 } 2002 leaf state { 2003 type adj-state-type; 2004 description 2005 "This leaf describes the state of the interface."; 2006 } 2008 description 2009 "List of operational adjacencies."; 2010 } 2011 description 2012 "This container lists the adjacencies of 2013 the local node."; 2014 } 2015 description 2016 "Adjacency state"; 2017 } 2019 grouping admin-control { 2020 leaf enable { 2021 if-feature admin-control; 2022 type boolean; 2023 default true; 2024 description 2025 "Enable/Disable the protocol."; 2026 } 2027 description 2028 "Grouping for admin control."; 2029 } 2031 grouping ietf-spf-delay { 2032 leaf initial-delay { 2033 type rt-types:timer-value-milliseconds; 2034 units msec; 2035 description 2036 "Delay used while in QUIET state (milliseconds)."; 2037 } 2038 leaf short-delay { 2039 type rt-types:timer-value-milliseconds; 2040 units msec; 2041 description 2042 "Delay used while in SHORT_WAIT state (milliseconds)."; 2043 } 2044 leaf long-delay { 2045 type rt-types:timer-value-milliseconds; 2046 units msec; 2047 description 2048 "Delay used while in LONG_WAIT state (milliseconds)."; 2049 } 2051 leaf hold-down { 2052 type rt-types:timer-value-milliseconds; 2053 units msec; 2054 description 2055 "Timer used to consider an IGP stability period 2056 (milliseconds)."; 2057 } 2058 leaf time-to-learn { 2059 type rt-types:timer-value-milliseconds; 2060 units msec; 2061 description 2062 "Duration used to learn all the IGP events 2063 related to a single component failure (milliseconds)."; 2064 } 2065 leaf current-state { 2066 type enumeration { 2067 enum "quiet" { 2068 description "QUIET state"; 2069 } 2070 enum "short-wait" { 2071 description "SHORT_WAIT state"; 2072 } 2073 enum "long-wait" { 2074 description "LONG_WAIT state"; 2075 } 2076 } 2077 config false; 2078 description 2079 "Current SPF backoff algorithm state."; 2080 } 2081 leaf remaining-time-to-learn { 2082 type rt-types:timer-value-milliseconds; 2083 units "msec"; 2084 config false; 2085 description 2086 "Remaining time until time-to-learn timer fires."; 2087 } 2088 leaf remaining-hold-down { 2089 type rt-types:timer-value-milliseconds; 2090 units "msec"; 2091 config false; 2092 description 2093 "Remaining time until hold-down timer fires."; 2094 } 2095 leaf last-event-received { 2096 type yang:timestamp; 2097 config false; 2098 description 2099 "Time of last IGP event received"; 2100 } 2101 leaf next-spf-time { 2102 type yang:timestamp; 2103 config false; 2104 description 2105 "Time when next SPF has been scheduled."; 2106 } 2107 leaf last-spf-time { 2108 type yang:timestamp; 2109 config false; 2110 description 2111 "Time of last SPF computation."; 2112 } 2113 description 2114 "Grouping for IETF SPF delay configuration and state."; 2115 } 2117 grouping node-tag-config { 2118 description 2119 "IS-IS node tag config state."; 2120 container node-tags { 2121 if-feature node-tag; 2122 list node-tag { 2123 key tag; 2124 leaf tag { 2125 type uint32; 2126 description 2127 "Node tag value."; 2128 } 2129 description 2130 "List of tags."; 2131 } 2132 description 2133 "Container for node admin tags."; 2134 } 2135 } 2137 grouping authentication-global-cfg { 2138 choice authentication-type { 2139 case key-chain { 2140 if-feature key-chain; 2141 leaf key-chain { 2142 type key-chain:key-chain-ref; 2143 description 2144 "Reference to a key-chain."; 2145 } 2146 } 2147 case password { 2148 leaf key { 2149 type string; 2150 description 2151 "This leaf specifies the authentication key. The 2152 length of the key may be dependent on the 2153 cryptographic algorithm. In cases where it is 2154 not, a key length of at least 32 octets should be 2155 supported to allow for interoperability with 2156 strong keys."; 2157 } 2158 leaf crypto-algorithm { 2159 type identityref { 2160 base key-chain:crypto-algorithm; 2161 } 2162 description 2163 "Cryptographic algorithm associated with key."; 2164 } 2165 } 2166 description "Choice of authentication."; 2167 } 2168 description "Grouping for global authentication config."; 2169 } 2171 grouping metric-type-global-cfg { 2172 leaf value { 2173 type enumeration { 2174 enum wide-only { 2175 description 2176 "Advertise new metric style only (RFC5305)"; 2178 } 2179 enum old-only { 2180 description 2181 "Advertise old metric style only (RFC1195)"; 2182 } 2183 enum both { 2184 description "Advertise both metric styles"; 2185 } 2186 } 2187 default wide-only; 2188 description 2189 "Type of metric to be generated: 2190 - wide-only means only new metric style 2191 is generated, 2192 - old-only means that only old style metric 2193 is generated, 2194 - both means that both are advertised. 2195 This leaf is only affecting IPv4 metrics."; 2196 } 2197 description 2198 "Grouping for global metric style config."; 2199 } 2201 grouping default-metric-global-cfg { 2202 leaf value { 2203 type wide-metric; 2204 default "10"; 2205 description "Value of the metric"; 2206 } 2207 description 2208 "Global default metric config grouping."; 2209 } 2211 grouping overload-global-cfg { 2212 leaf status { 2213 type boolean; 2214 default false; 2215 description 2216 "This leaf specifies the overload status."; 2217 } 2218 description "Grouping for overload bit config."; 2219 } 2221 grouping overload-max-metric-global-cfg { 2222 leaf timeout { 2223 type rt-types:timer-value-seconds16; 2224 units "seconds"; 2225 description 2226 "Timeout (in seconds) of the overload condition."; 2227 } 2228 description 2229 "Overload maximum metric configuration grouping"; 2230 } 2232 grouping route-preference-global-cfg { 2233 choice granularity { 2234 case detail { 2235 leaf internal { 2236 type uint8; 2237 description 2238 "Protocol preference for internal routes."; 2239 } 2240 leaf external { 2241 type uint8; 2242 description 2243 "Protocol preference for external routes."; 2244 } 2245 } 2246 case coarse { 2247 leaf default { 2248 type uint8; 2249 description 2250 "Protocol preference for all IS-IS routes."; 2251 } 2252 } 2253 description 2254 "Choice for implementation of route preference."; 2255 } 2256 description 2257 "Global route preference grouping"; 2258 } 2260 grouping hello-authentication-cfg { 2261 choice authentication-type { 2262 case key-chain { 2263 if-feature key-chain; 2264 leaf key-chain { 2265 type key-chain:key-chain-ref; 2266 description "Reference to a key-chain."; 2267 } 2268 } 2269 case password { 2270 leaf key { 2271 type string; 2272 description "Authentication key specification - The 2273 length of the key may be dependent on the 2274 cryptographic algorithm. In cases where 2275 it is not, a key length of at least 32 octets 2276 should be supported to allow for 2277 interoperability with strong keys."; 2278 } 2279 leaf crypto-algorithm { 2280 type identityref { 2281 base key-chain:crypto-algorithm; 2282 } 2283 description 2284 "Cryptographic algorithm associated with key."; 2285 } 2286 } 2287 description "Choice of authentication."; 2288 } 2289 description "Grouping for hello authentication."; 2290 } 2292 grouping hello-interval-cfg { 2293 leaf value { 2294 type rt-types:timer-value-seconds16; 2295 units "seconds"; 2296 default 10; 2297 description 2298 "Interval (in seconds) between successive hello 2299 messages."; 2300 } 2302 description "Interval between hello messages."; 2303 } 2305 grouping hello-multiplier-cfg { 2306 leaf value { 2307 type uint16; 2308 default 3; 2309 description 2310 "Number of missed hello messages prior to 2311 declaring the adjacency down."; 2312 } 2313 description 2314 "Number of missed hello messages prior to 2315 adjacency down grouping."; 2316 } 2318 grouping priority-cfg { 2319 leaf value { 2320 type uint8 { 2321 range "0 .. 127"; 2322 } 2323 default 64; 2324 description 2325 "Priority of interface for DIS election."; 2326 } 2328 description "Interface DIS election priority grouping"; 2329 } 2331 grouping metric-cfg { 2332 leaf value { 2333 type wide-metric; 2334 default "10"; 2335 description "Metric value."; 2336 } 2337 description "Interface metric grouping"; 2338 } 2340 grouping metric-parameters { 2341 container metric-type { 2342 uses metric-type-global-cfg; 2343 container level-1 { 2344 uses metric-type-global-cfg; 2345 description "level-1 specific configuration"; 2346 } 2347 container level-2 { 2348 uses metric-type-global-cfg; 2349 description "level-2 specific configuration"; 2350 } 2351 description "Metric style global configuration"; 2352 } 2354 container default-metric { 2355 uses default-metric-global-cfg; 2356 container level-1 { 2357 uses default-metric-global-cfg; 2358 description "level-1 specific configuration"; 2359 } 2360 container level-2 { 2361 uses default-metric-global-cfg; 2362 description "level-2 specific configuration"; 2363 } 2364 description "Default metric global configuration"; 2365 } 2366 container auto-cost { 2367 if-feature auto-cost; 2368 description 2369 "Interface Auto-cost configuration state."; 2370 leaf enable { 2371 type boolean; 2372 description 2373 "Enable/Disable interface auto-cost."; 2374 } 2375 leaf reference-bandwidth { 2376 when "../enable = 'true'" { 2377 description "Only when auto cost is enabled"; 2378 } 2379 type uint32 { 2380 range "1..4294967"; 2381 } 2382 units Mbits; 2383 description 2384 "Configure reference bandwidth used to automatically 2385 determine interface cost (Mbits). The cost is the 2386 reference bandwidth divided by the interface speed 2387 with 1 being the minimum cost."; 2388 } 2389 } 2391 description "Grouping for global metric parameters."; 2392 } 2394 grouping high-availability-parameters { 2395 container graceful-restart { 2396 if-feature graceful-restart; 2397 leaf enable { 2398 type boolean; 2399 default false; 2400 description "Enable graceful restart."; 2401 } 2402 leaf restart-interval { 2403 type rt-types:timer-value-seconds16; 2404 units "seconds"; 2405 description 2406 "Interval (in seconds) to attempt graceful restart prior 2407 to failure."; 2408 } 2409 leaf helper-enable { 2410 type boolean; 2411 default true; 2412 description 2413 "Enable local IS-IS router as graceful restart helper."; 2414 } 2415 description "Graceful-Restart Configuration."; 2417 } 2418 container nsr { 2419 if-feature nsr; 2420 description "Non-Stop Routing (NSR) configuration."; 2421 leaf enable { 2422 type boolean; 2423 default false; 2424 description "Enable/Disable Non-Stop Routing (NSR)."; 2425 } 2426 } 2427 description "Grouping for High Availability parameters."; 2428 } 2430 grouping authentication-parameters { 2431 container authentication { 2432 uses authentication-global-cfg; 2434 container level-1 { 2435 uses authentication-global-cfg; 2436 description "level-1 specific configuration"; 2437 } 2438 container level-2 { 2439 uses authentication-global-cfg; 2440 description "level-2 specific configuration"; 2441 } 2442 description "Authentication global configuration for 2443 both LSPs and SNPs."; 2444 } 2445 description "Grouping for authentication parameters"; 2446 } 2447 grouping address-family-parameters { 2448 container address-families { 2449 if-feature nlpid-control; 2450 list address-family-list { 2451 key address-family; 2452 leaf address-family { 2453 type iana-rt-types:address-family; 2454 description "Address-family"; 2455 } 2456 leaf enable { 2457 type boolean; 2458 description "Activate the address family."; 2459 } 2460 description 2461 "List of address families and whether or not they 2462 are activated."; 2463 } 2464 description "Address Family configuration"; 2466 } 2467 description "Grouping for address family parameters."; 2468 } 2470 grouping mpls-parameters { 2471 container mpls { 2472 container te-rid { 2473 if-feature te-rid; 2474 description 2475 "Stable ISIS Router IP Address used for Traffic 2476 Engineering"; 2477 leaf ipv4-router-id { 2478 type inet:ipv4-address; 2479 description 2480 "Router ID value that would be used in TLV 134."; 2481 } 2482 leaf ipv6-router-id { 2483 type inet:ipv6-address; 2484 description 2485 "Router ID value that would be used in TLV 140."; 2486 } 2487 } 2488 container ldp { 2489 container igp-sync { 2490 if-feature ldp-igp-sync; 2491 description 2492 "This container may be augmented with global 2493 parameters for igp-ldp-sync."; 2494 } 2495 description "LDP configuration."; 2496 } 2497 description "MPLS configuration"; 2498 } 2499 description "Grouping for MPLS global parameters."; 2500 } 2502 grouping lsp-parameters { 2503 leaf lsp-mtu { 2504 type uint16; 2505 units "bytes"; 2506 default 1492; 2507 description 2508 "Maximum size of an LSP PDU in bytes."; 2509 } 2510 leaf lsp-lifetime { 2511 type uint16 { 2512 range "1..65535"; 2513 } 2514 units "seconds"; 2515 description 2516 "Lifetime of the router's LSPs in seconds."; 2517 } 2518 leaf lsp-refresh { 2519 if-feature lsp-refresh; 2520 type rt-types:timer-value-seconds16; 2521 units "seconds"; 2522 description 2523 "Refresh interval of the router's LSPs in seconds."; 2524 } 2525 leaf poi-tlv { 2526 if-feature poi-tlv; 2527 type boolean; 2528 default false; 2529 description 2530 "Enable advertisement of IS-IS purge TLV."; 2531 } 2532 description "Grouping for LSP global parameters."; 2533 } 2534 grouping spf-parameters { 2535 container spf-control { 2536 leaf paths { 2537 if-feature max-ecmp; 2538 type uint16 { 2539 range "1..32"; 2540 } 2541 description 2542 "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; 2543 } 2544 container ietf-spf-delay { 2545 if-feature ietf-spf-delay; 2546 uses ietf-spf-delay; 2547 description "IETF SPF delay algorithm configuration."; 2548 } 2549 description 2550 "SPF calculation control."; 2551 } 2552 description "Grouping for SPF global parameters."; 2553 } 2554 grouping instance-config { 2555 description "IS-IS global configuration grouping"; 2557 uses admin-control; 2559 leaf level-type { 2560 type level; 2561 default "level-all"; 2562 description 2563 "Level of an IS-IS node - can be level-1, 2564 level-2 or level-all."; 2565 } 2567 leaf system-id { 2568 type system-id; 2569 description "system-id of the node."; 2570 } 2572 leaf maximum-area-addresses { 2573 if-feature maximum-area-addresses; 2574 type uint8; 2575 default 3; 2576 description "Maximum areas supported."; 2577 } 2579 leaf-list area-address { 2580 type area-address; 2581 description 2582 "List of areas supported by the protocol instance."; 2583 } 2585 uses lsp-parameters; 2586 uses high-availability-parameters; 2587 uses node-tag-config; 2588 uses metric-parameters; 2589 uses authentication-parameters; 2590 uses address-family-parameters; 2591 uses mpls-parameters; 2592 uses spf-parameters; 2593 uses instance-fast-reroute-config; 2595 container preference { 2596 uses route-preference-global-cfg; 2597 description "Router preference configuration for IS-IS 2598 protocol instance route installation"; 2599 } 2601 container overload { 2602 uses overload-global-cfg; 2603 description "Router protocol instance overload state 2604 configuration"; 2605 } 2607 container overload-max-metric { 2608 if-feature overload-max-metric; 2609 uses overload-max-metric-global-cfg; 2610 description 2611 "Router protocol instance overload maximum 2612 metric advertisement configuration."; 2613 } 2614 } 2616 grouping instance-state { 2617 description 2618 "IS-IS instance operational state."; 2619 uses spf-log; 2620 uses lsp-log; 2621 uses hostname-db; 2622 uses lsdb; 2623 uses local-rib; 2624 uses system-counters; 2625 uses instance-fast-reroute-state; 2626 } 2628 grouping multi-topology-config { 2629 description "Per-topology configuration"; 2630 container default-metric { 2631 uses default-metric-global-cfg; 2632 container level-1 { 2633 uses default-metric-global-cfg; 2634 description "level-1 specific configuration"; 2635 } 2636 container level-2 { 2637 uses default-metric-global-cfg; 2638 description "level-2 specific configuration"; 2639 } 2640 description "Default metric per-topology configuration"; 2641 } 2642 uses node-tag-config; 2643 } 2645 grouping interface-config { 2646 description "Interface configuration grouping"; 2647 leaf level-type { 2648 type level; 2649 default "level-all"; 2650 description "IS-IS level of the interface."; 2651 } 2652 leaf lsp-pacing-interval { 2653 type rt-types:timer-value-milliseconds; 2654 units "milliseconds"; 2655 default 33; 2656 description 2657 "Interval (in milli-seconds) between LSP 2658 transmissions."; 2659 } 2660 leaf lsp-retransmit-interval { 2661 type rt-types:timer-value-seconds16; 2662 units "seconds"; 2663 description 2664 "Interval (in seconds) between LSP 2665 retransmissions."; 2666 } 2667 leaf passive { 2668 type boolean; 2669 default "false"; 2670 description 2671 "Indicates whetherthe interface is in passive mode (IS-IS 2672 not running but network is advertised)."; 2673 } 2674 leaf csnp-interval { 2675 type rt-types:timer-value-seconds16; 2676 units "seconds"; 2677 default 10; 2678 description 2679 "Interval (in seconds) between CSNP messages."; 2680 } 2681 container hello-padding { 2682 leaf enable { 2683 type boolean; 2684 default "true"; 2685 description 2686 "IS-IS Hello-padding activation - enabled by default."; 2687 } 2688 description "IS-IS hello padding configuration."; 2689 } 2690 leaf mesh-group-enable { 2691 type mesh-group-state; 2692 description "IS-IS interface mesh-group state"; 2693 } 2694 leaf mesh-group { 2695 when "../mesh-group-enable = 'mesh-set'" { 2696 description 2697 "Only valid when mesh-group-enable equals meshset"; 2698 } 2699 type uint8; 2700 description "IS-IS interface mesh-group ID."; 2701 } 2702 leaf interface-type { 2703 type interface-type; 2704 default "broadcast"; 2705 description 2706 "Type of adjacency to be established on the interface. This 2707 dictates the type of hello messages that are used."; 2708 } 2710 uses admin-control; 2712 leaf-list tag { 2713 if-feature prefix-tag; 2714 type uint32; 2715 description 2716 "List of tags associated with the interface."; 2717 } 2718 leaf-list tag64 { 2719 if-feature prefix-tag64; 2720 type uint64; 2721 description 2722 "List of 64-bit tags associated with the interface."; 2723 } 2724 leaf node-flag { 2725 if-feature node-flag; 2726 type boolean; 2727 default false; 2728 description 2729 "Set prefix as a node representative prefix."; 2730 } 2731 container hello-authentication { 2732 uses hello-authentication-cfg; 2733 container level-1 { 2734 uses hello-authentication-cfg; 2735 description "level-1 specific configuration"; 2736 } 2737 container level-2 { 2738 uses hello-authentication-cfg; 2739 description "level-2 specific configuration"; 2740 } 2741 description 2742 "Authentication type to be used in hello messages."; 2743 } 2744 container hello-interval { 2745 uses hello-interval-cfg; 2746 container level-1 { 2747 uses hello-interval-cfg; 2748 description "level-1 specific configuration"; 2749 } 2750 container level-2 { 2751 uses hello-interval-cfg; 2752 description "level-2 specific configuration"; 2753 } 2754 description "Interval between hello messages."; 2755 } 2756 container hello-multiplier { 2757 uses hello-multiplier-cfg; 2758 container level-1 { 2759 uses hello-multiplier-cfg; 2760 description "level-1 specific configuration"; 2761 } 2762 container level-2 { 2763 uses hello-multiplier-cfg; 2764 description "level-2 specific configuration"; 2765 } 2766 description "Hello multiplier configuration."; 2767 } 2768 container priority { 2769 must '../interface-type = "broadcast"' { 2770 error-message 2771 "Priority only applies to broadcast interfaces."; 2772 description "Check for broadcast interface."; 2773 } 2774 uses priority-cfg; 2775 container level-1 { 2776 uses priority-cfg; 2777 description "level-1 specific configuration"; 2778 } 2779 container level-2 { 2780 uses priority-cfg; 2781 description "level-2 specific configuration"; 2782 } 2783 description "Priority for DIS election."; 2784 } 2785 container metric { 2786 uses metric-cfg; 2787 container level-1 { 2788 uses metric-cfg; 2789 description "level-1 specific configuration"; 2790 } 2791 container level-2 { 2792 uses metric-cfg; 2793 description "level-2 specific configuration"; 2794 } 2795 description "Metric configuration."; 2796 } 2797 container bfd { 2798 if-feature bfd; 2799 description "BFD Client Configuration."; 2800 uses bfd-types:client-cfg-parms; 2801 reference "RFC YYYY - YANG Data Model for Bidirectional 2802 Forwarding Detection (BFD). 2804 -- Note to RFC Editor Please replace YYYY with published RFC number 2805 for draft-ietf-bfd-yang."; 2807 } 2808 container address-families { 2809 if-feature nlpid-control; 2810 list address-family-list { 2811 key address-family; 2812 leaf address-family { 2813 type iana-rt-types:address-family; 2814 description "Address-family"; 2815 } 2816 description "List of AFs."; 2817 } 2818 description "Interface address-families"; 2819 } 2820 container mpls { 2821 container ldp { 2822 leaf igp-sync { 2823 if-feature ldp-igp-sync; 2824 type boolean; 2825 default false; 2826 description "Enables IGP/LDP synchronization"; 2827 } 2828 description "LDP protocol related configuration."; 2829 } 2830 description "MPLS configuration for IS-IS interfaces"; 2831 } 2832 uses interface-fast-reroute-config; 2833 } 2835 grouping multi-topology-interface-config { 2836 description "IS-IS interface topology configuration."; 2837 container metric { 2838 uses metric-cfg; 2839 container level-1 { 2840 uses metric-cfg; 2841 description "level-1 specific configuration"; 2842 } 2843 container level-2 { 2844 uses metric-cfg; 2845 description "level-2 specific configuration"; 2846 } 2847 description "Metric IS-IS interface configuration."; 2848 } 2850 } 2851 grouping interface-state { 2852 description 2853 "IS-IS interface operational state."; 2854 uses adjacency-state; 2855 uses event-counters; 2856 uses packet-counters; 2857 } 2859 /* Grouping for the hostname database */ 2861 grouping hostname-db { 2862 container hostnames { 2863 config false; 2864 list hostname { 2865 key system-id; 2866 leaf system-id { 2867 type system-id; 2868 description 2869 "system-id associated with the hostname."; 2870 } 2871 leaf hostname { 2872 type string { 2873 length "1..255"; 2874 } 2875 description 2876 "Hostname associated with the system-id 2877 as defined in RFC5301."; 2878 } 2879 description 2880 "List of system-id/hostname associations."; 2881 } 2882 description 2883 "Hostname to system-id mapping database."; 2884 } 2885 description 2886 "Grouping for hostname to system-id mapping database."; 2887 } 2889 /* Groupings for counters */ 2891 grouping system-counters { 2892 container system-counters { 2893 config false; 2894 list level { 2895 key level; 2897 leaf level { 2898 type level-number; 2899 description "IS-IS level."; 2900 } 2901 leaf corrupted-lsps { 2902 type uint32; 2903 description 2904 "Number of corrupted in-memory LSPs detected. 2905 LSPs received from the wire with a bad 2906 checksum are silently dropped and not counted. 2907 LSPs received from the wire with parse errors 2908 are counted by lsp-errors."; 2909 } 2910 leaf authentication-type-fails { 2911 type uint32; 2912 description 2913 "Number of authentication type mismatches."; 2914 } 2915 leaf authentication-fails { 2916 type uint32; 2917 description 2918 "Number of authentication key failures."; 2919 } 2920 leaf database-overload { 2921 type uint32; 2922 description 2923 "Number of times the database has become 2924 overloaded."; 2925 } 2926 leaf own-lsp-purge { 2927 type uint32; 2928 description 2929 "Number of times a zero-aged copy of the system's 2930 own LSP is received from some other IS-IS node."; 2931 } 2932 leaf manual-address-drop-from-area { 2933 type uint32; 2934 description 2935 "Number of times a manual address 2936 has been dropped from the area."; 2937 } 2938 leaf max-sequence { 2939 type uint32; 2940 description 2941 "Number of times the system has attempted 2942 to exceed the maximum sequence number."; 2943 } 2944 leaf sequence-number-skipped { 2945 type uint32; 2946 description 2947 "Number of times a sequence number skip has 2948 occured."; 2949 } 2950 leaf id-len-mismatch { 2951 type uint32; 2952 description 2953 "Number of times a PDU is received with a 2954 different value for the ID field length 2955 than that of the receiving system."; 2956 } 2957 leaf partition-changes { 2958 type uint32; 2959 description 2960 "Number of partition changes detected."; 2961 } 2962 leaf lsp-errors { 2963 type uint32; 2964 description 2965 "Number of LSPs with errors we have received."; 2966 } 2967 leaf spf-runs { 2968 type uint32; 2969 description 2970 "Number of times we ran SPF at this level."; 2971 } 2972 description 2973 "List of supported levels."; 2974 } 2975 description 2976 "List counters for the IS-IS protocol instance"; 2977 } 2978 description "System counters grouping."; 2979 } 2981 grouping event-counters { 2982 container event-counters { 2983 config false; 2984 leaf adjacency-changes { 2985 type uint32; 2986 description 2987 "The number of times an adjacency state change has 2988 occured on this interface."; 2989 } 2990 leaf adjacency-number { 2991 type uint32; 2992 description 2993 "The number of adjacencies on this interface."; 2995 } 2996 leaf init-fails { 2997 type uint32; 2998 description 2999 "The number of times initialization of this 3000 interface has failed. This counts events such 3001 as PPP NCP failures. Failures to form an 3002 adjacency are counted by adjacency-rejects."; 3003 } 3004 leaf adjacency-rejects { 3005 type uint32; 3006 description 3007 "The number of times an adjacency has been 3008 rejected on this interface."; 3009 } 3010 leaf id-len-mismatch { 3011 type uint32; 3012 description 3013 "The number of times an IS-IS PDU with an ID 3014 field length different from that for this 3015 system has been received on this interface."; 3016 } 3017 leaf max-area-addresses-mismatch { 3018 type uint32; 3019 description 3020 "The number of times an IS-IS PDU has been 3021 received on this interface with the 3022 max area address field differing from that of 3023 this system."; 3024 } 3025 leaf authentication-type-fails { 3026 type uint32; 3027 description 3028 "Number of authentication type mismatches."; 3029 } 3030 leaf authentication-fails { 3031 type uint32; 3032 description 3033 "Number of authentication key failures."; 3034 } 3035 leaf lan-dis-changes { 3036 type uint32; 3037 description 3038 "The number of times the DIS has changed on this 3039 interface at this level. If the interface type is 3040 point-to-point,the count is zero."; 3041 } 3042 description "IS-IS interface event counters."; 3044 } 3045 description 3046 "Grouping for IS-IS interface event counters"; 3047 } 3049 grouping packet-counters { 3050 container packet-counters { 3051 config false; 3052 list level { 3053 key level; 3055 leaf level { 3056 type level-number; 3057 description "IS-IS level."; 3058 } 3059 container iih { 3060 leaf in { 3061 type uint32; 3062 description "Received IIH PDUs."; 3063 } 3064 leaf out { 3065 type uint32; 3066 description "Sent IIH PDUs."; 3067 } 3068 description "Number of IIH PDUs received/sent."; 3069 } 3070 container ish { 3071 leaf in { 3072 type uint32; 3073 description "Received ISH PDUs."; 3074 } 3075 leaf out { 3076 type uint32; 3077 description "Sent ISH PDUs."; 3078 } 3079 description 3080 "ISH PDUs received/sent."; 3081 } 3082 container esh { 3083 leaf in { 3084 type uint32; 3085 description "Received ESH PDUs."; 3086 } 3087 leaf out { 3088 type uint32; 3089 description "Sent ESH PDUs."; 3090 } 3091 description "Number of ESH PDUs received/sent."; 3093 } 3094 container lsp { 3095 leaf in { 3096 type uint32; 3097 description "Received LSP PDUs."; 3098 } 3099 leaf out { 3100 type uint32; 3101 description "Sent LSP PDUs."; 3102 } 3103 description "Number of LSP PDUs received/sent."; 3104 } 3105 container psnp { 3106 leaf in { 3107 type uint32; 3108 description "Received PSNP PDUs."; 3109 } 3110 leaf out { 3111 type uint32; 3112 description "Sent PSNP PDUs."; 3113 } 3114 description "Number of PSNP PDUs received/sent."; 3115 } 3116 container csnp { 3117 leaf in { 3118 type uint32; 3119 description "Received CSNP PDUs."; 3120 } 3121 leaf out { 3122 type uint32; 3123 description "Sent CSNP PDUs."; 3124 } 3125 description "Number of CSNP PDUs received/sent."; 3126 } 3127 container unknown { 3128 leaf in { 3129 type uint32; 3130 description "Received unknown PDUs."; 3131 } 3132 leaf out { 3133 type uint32; 3134 description "Sent unknown PDUs."; 3135 } 3136 description "Number of unknown PDUs received/sent."; 3137 } 3138 description 3139 "List of packet counter for supported llevels."; 3140 } 3141 description "Packet counters per IS-IS level."; 3142 } 3143 description 3144 "Grouping for per IS-IS Level packet counters."; 3145 } 3147 /* Groupings for various log buffers */ 3148 grouping spf-log { 3149 container spf-log { 3150 config false; 3151 list event { 3152 key id; 3154 leaf id { 3155 type uint32; 3156 description 3157 "Event identifier - purely internal value."; 3158 } 3159 leaf spf-type { 3160 type enumeration { 3161 enum full { 3162 description "Full SPF computation."; 3163 } 3164 enum route-only { 3165 description 3166 "Route reachability only SPF computation"; 3167 } 3168 } 3169 description "Type of SPF computation performed."; 3170 } 3171 leaf level { 3172 type level-number; 3173 description 3174 "IS-IS level number for SPF computation"; 3175 } 3176 leaf schedule-timestamp { 3177 type yang:timestamp; 3178 description 3179 "Timestamp of when the SPF computation was 3180 scheduled."; 3181 } 3182 leaf start-timestamp { 3183 type yang:timestamp; 3184 description 3185 "Timestamp of when the SPF computation started."; 3186 } 3187 leaf end-timestamp { 3188 type yang:timestamp; 3189 description 3190 "Timestamp of when the SPF computation ended."; 3191 } 3192 list trigger-lsp { 3193 key "lsp"; 3194 leaf lsp { 3195 type lsp-id; 3196 description 3197 "LSP ID of the LSP triggering SPF computation."; 3198 } 3199 leaf sequence { 3200 type uint32; 3201 description 3202 "Sequence number of the LSP triggering SPF 3203 computation"; 3204 } 3205 description 3206 "This list includes the LSPs that triggered the 3207 SPF computation."; 3208 } 3209 description 3210 "List of computation events - implemented as a 3211 wrapping buffer."; 3212 } 3214 description 3215 "This container lists the SPF computation events."; 3216 } 3217 description "Grouping for spf-log events."; 3218 } 3220 grouping lsp-log { 3221 container lsp-log { 3222 config false; 3223 list event { 3224 key id; 3226 leaf id { 3227 type uint32; 3228 description 3229 "Event identifier - purely internal value."; 3230 } 3231 leaf level { 3232 type level-number; 3233 description 3234 "IS-IS level number for LSP"; 3235 } 3236 container lsp { 3237 leaf lsp { 3238 type lsp-id; 3239 description 3240 "LSP ID of the LSP."; 3241 } 3242 leaf sequence { 3243 type uint32; 3244 description 3245 "Sequence number of the LSP."; 3246 } 3247 description 3248 "LSP identification container - either the received 3249 LSP or the locally generated LSP."; 3250 } 3252 leaf received-timestamp { 3253 type yang:timestamp; 3254 description 3255 "This is the timestamp when the LSA was received. 3256 In case of local LSA update, the timestamp refers 3257 to the LSA origination time."; 3258 } 3260 leaf reason { 3261 type identityref { 3262 base lsp-log-reason; 3263 } 3264 description "Type of LSP change."; 3265 } 3267 description 3268 "List of LSP events - implemented as a 3269 wrapping buffer."; 3270 } 3272 description 3273 "This container lists the LSP log. 3274 Local LSP modifications are also included 3275 in the list."; 3277 } description "Grouping for LSP log."; 3278 } 3280 /* Groupings for the LSDB description */ 3282 /* Unknown TLV and subTLV description */ 3283 grouping tlv { 3284 description 3285 "Type-Length-Value (TLV)"; 3286 leaf type { 3287 type uint16; 3288 description "TLV type."; 3289 } 3290 leaf length { 3291 type uint16; 3292 description "TLV length (octets)."; 3293 } 3294 leaf value { 3295 type yang:hex-string; 3296 description "TLV value."; 3297 } 3298 } 3300 grouping unknown-tlvs { 3301 description 3302 "Unknown TLVs grouping - Used for unknown TLVs or 3303 unknown sub-TLVs."; 3304 container unknown-tlvs { 3305 description "All unknown TLVs."; 3306 list unknown-tlv { 3307 description "Unknown TLV."; 3308 uses tlv; 3309 } 3310 } 3311 } 3313 /* TLVs and subTLVs for prefixes */ 3315 grouping prefix-reachability-attributes { 3316 description 3317 "Grouping for extended reachability attributes of an 3318 IPv4 or IPv6 prefix."; 3320 leaf external-prefix-flag { 3321 type boolean; 3322 description "External prefix flag."; 3323 } 3324 leaf readvertisement-flag { 3325 type boolean; 3326 description "Readvertisement flag."; 3327 } 3328 leaf node-flag { 3329 type boolean; 3330 description "Node flag."; 3332 } 3333 } 3335 grouping prefix-ipv4-source-router-id { 3336 description 3337 "Grouping for the IPv4 source router ID of a prefix 3338 advertisement."; 3340 leaf ipv4-source-router-id { 3341 type inet:ipv4-address; 3342 description "IPv4 Source router ID address."; 3343 } 3344 } 3346 grouping prefix-ipv6-source-router-id { 3347 description 3348 "Grouping for the IPv6 source router ID of a prefix 3349 advertisement."; 3351 leaf ipv6-source-router-id { 3352 type inet:ipv6-address; 3353 description "IPv6 Source router ID address."; 3354 } 3355 } 3357 grouping prefix-attributes-extension { 3358 description "Prefix extended attributes 3359 as defined in RFC7794."; 3361 uses prefix-reachability-attributes; 3362 uses prefix-ipv4-source-router-id; 3363 uses prefix-ipv6-source-router-id; 3364 } 3366 grouping prefix-ipv4-std { 3367 description 3368 "Grouping for attributes of an IPv4 standard prefix 3369 as defined in RFC1195."; 3370 leaf ip-prefix { 3371 type inet:ipv4-address; 3372 description "IPv4 prefix address"; 3373 } 3374 leaf prefix-len { 3375 type uint8; 3376 description "IPv4 prefix length (in bits)"; 3377 } 3378 leaf i-e { 3379 type boolean; 3380 description "Internal or External (I/E) Metric bit value."; 3381 } 3382 container default-metric { 3383 leaf metric { 3384 type std-metric; 3385 description "Default IS-IS metric for IPv4 prefix"; 3386 } 3387 description "IS-IS default metric container."; 3388 } 3389 container delay-metric { 3390 leaf metric { 3391 type std-metric; 3392 description "IS-IS delay metric for IPv4 prefix"; 3393 } 3394 leaf supported { 3395 type boolean; 3396 default "false"; 3397 description 3398 "Indicates whether IS-IS delay metric is supported."; 3399 } 3400 description "IS-IS delay metric container."; 3401 } 3402 container expense-metric { 3403 leaf metric { 3404 type std-metric; 3405 description "IS-IS expense metric for IPv4 prefix"; 3406 } 3407 leaf supported { 3408 type boolean; 3409 default "false"; 3410 description 3411 "Indicates whether IS-IS delay metric is supported."; 3412 } 3413 description "IS-IS expense metric container."; 3414 } 3415 container error-metric { 3416 leaf metric { 3417 type std-metric; 3418 description 3419 "This leaf describes the IS-IS error metric value"; 3420 } 3421 leaf supported { 3422 type boolean; 3423 default "false"; 3424 description "IS-IS error metric for IPv4 prefix"; 3425 } 3426 description "IS-IS error metric container."; 3427 } 3429 } 3431 grouping prefix-ipv4-extended { 3432 description 3433 "Grouping for attributes of an IPv4 extended prefix 3434 as defined in RFC5305."; 3435 leaf up-down { 3436 type boolean; 3437 description "Value of up/down bit."; 3438 } 3439 leaf ip-prefix { 3440 type inet:ipv4-address; 3441 description "IPv4 prefix address"; 3442 } 3443 leaf prefix-len { 3444 type uint8; 3445 description "IPv4 prefix length (in bits)"; 3446 } 3447 leaf metric { 3448 type wide-metric; 3449 description "IS-IS wide metric value"; 3450 } 3451 leaf-list tag { 3452 type uint32; 3453 description 3454 "List of 32-bit tags associated with the IPv4 prefix."; 3455 } 3456 leaf-list tag64 { 3457 type uint64; 3458 description 3459 "List of 32-bit tags associated with the IPv4 prefix."; 3460 } 3461 uses prefix-attributes-extension; 3462 } 3464 grouping prefix-ipv6-extended { 3465 description "Grouping for attributes of an IPv6 prefix 3466 as defined in RFC5308."; 3467 leaf up-down { 3468 type boolean; 3469 description "Value of up/down bit."; 3470 } 3471 leaf ip-prefix { 3472 type inet:ipv6-address; 3473 description "IPv6 prefix address"; 3474 } 3475 leaf prefix-len { 3476 type uint8; 3477 description "IPv4 prefix length (in bits)"; 3478 } 3479 leaf metric { 3480 type wide-metric; 3481 description "IS-IS wide metric value"; 3482 } 3483 leaf-list tag { 3484 type uint32; 3485 description 3486 "List of 32-bit tags associated with the IPv4 prefix."; 3487 } 3488 leaf-list tag64 { 3489 type uint64; 3490 description 3491 "List of 32-bit tags associated with the IPv4 prefix."; 3492 } 3493 uses prefix-attributes-extension; 3494 } 3496 /* TLVs and subTLVs for neighbors */ 3498 grouping neighbor-link-attributes { 3499 description 3500 "Grouping for link attributes as defined 3501 in RFC5029"; 3502 leaf link-attributes-flags { 3503 type uint16; 3504 description 3505 "Flags for the link attributes"; 3506 } 3507 } 3508 grouping neighbor-gmpls-extensions { 3509 description 3510 "Grouping for GMPLS attributes of a neighbor as defined 3511 in RFC5307"; 3512 leaf link-local-id { 3513 type uint32; 3514 description 3515 "Local identifier of the link."; 3516 } 3517 leaf remote-local-id { 3518 type uint32; 3519 description 3520 "Remote identifier of the link."; 3521 } 3522 leaf protection-capability { 3523 type uint8; 3524 description 3525 "Describes the protection capabilities 3526 of the link. This is the value of the 3527 first octet of the sub-TLV type 20 value."; 3528 } 3529 container interface-switching-capability { 3530 description 3531 "Interface switching capabilities of the link."; 3532 leaf switching-capability { 3533 type uint8; 3534 description 3535 "Switching capability of the link."; 3536 } 3537 leaf encoding { 3538 type uint8; 3539 description 3540 "Type of encoding of the LSP being used."; 3541 } 3542 container max-lsp-bandwidths { 3543 description "Per priority max LSP bandwidths."; 3544 list max-lsp-bandwidth { 3545 leaf priority { 3546 type uint8 { 3547 range "0 .. 7"; 3548 } 3549 description "Priority from 0 to 7."; 3550 } 3551 leaf bandwidth { 3552 type rt-types:bandwidth-ieee-float32; 3553 description "max LSP bandwidth."; 3554 } 3555 description 3556 "List of max LSP bandwidths for different 3557 priorities."; 3558 } 3559 } 3560 container tdm-specific { 3561 when "../switching-capability = 100"; 3562 description 3563 "Switching Capability-specific information applicable 3564 when switching type is TDM."; 3566 leaf minimum-lsp-bandwidth { 3567 type rt-types:bandwidth-ieee-float32; 3568 description "minimum LSP bandwidth."; 3569 } 3570 leaf indication { 3571 type uint8; 3572 description 3573 "The indication whether the interface supports Standard 3574 or Arbitrary SONET/SDH."; 3575 } 3576 } 3577 container psc-specific { 3578 when "../switching-capability >= 1 and 3579 ../switching-capability <= 4"; 3580 description 3581 "Switching Capability-specific information applicable 3582 when switching type is PSC1,PSC2,PSC3 or PSC4."; 3584 leaf minimum-lsp-bandwidth { 3585 type rt-types:bandwidth-ieee-float32; 3586 description "minimum LSP bandwidth."; 3587 } 3588 leaf mtu { 3589 type uint16; 3590 units bytes; 3591 description 3592 "Interface MTU"; 3593 } 3594 } 3595 } 3596 } 3598 grouping neighbor-extended-te-extensions { 3599 description 3600 "Grouping for TE attributes of a neighbor as defined 3601 in RFC7810"; 3603 container unidirectional-link-delay { 3604 description 3605 "Container for the average delay 3606 from the local neighbor to the remote one."; 3607 leaf flags { 3608 type bits { 3609 bit A { 3610 position 7; 3611 description 3612 "The A bit represents the Anomalous (A) bit. 3613 The A bit is set when the measured value of 3614 this parameter exceeds its configured 3615 maximum threshold. 3616 The A bit is cleared when the measured value 3617 falls below its configured reuse threshold. 3618 If the A bit is clear, 3619 the value represents steady-state link performance."; 3620 } 3622 } 3623 description 3624 "Flags."; 3625 } 3626 leaf value { 3627 type uint32; 3628 units usec; 3629 description 3630 "Delay value expressed in microseconds."; 3631 } 3632 } 3633 container min-max-unidirectional-link-delay { 3634 description 3635 "Container for the min and max delay 3636 from the local neighbor to the remote one."; 3637 leaf flags { 3638 type bits { 3639 bit A { 3640 position 7; 3641 description 3642 "The A bit represents the Anomalous (A) bit. 3643 The A bit is set when the measured value of 3644 this parameter exceeds its configured 3645 maximum threshold. 3646 The A bit is cleared when the measured value 3647 falls below its configured reuse threshold. 3648 If the A bit is clear, 3649 the value represents steady-state link performance."; 3650 } 3651 } 3652 description 3653 "Flags."; 3654 } 3655 leaf min-value { 3656 type uint32; 3657 units usec; 3658 description 3659 "Minimum delay value expressed in microseconds."; 3660 } 3661 leaf max-value { 3662 type uint32; 3663 units usec; 3664 description 3665 "Maximum delay value expressed in microseconds."; 3666 } 3667 } 3668 container unidirectional-link-delay-variation { 3669 description 3670 "Container for the average delay variation 3671 from the local neighbor to the remote one."; 3672 leaf value { 3673 type uint32; 3674 units usec; 3675 description 3676 "Delay variation value expressed in microseconds."; 3677 } 3678 } 3679 container unidirectional-link-loss{ 3680 description 3681 "Container for the packet loss 3682 from the local neighbor to the remote one."; 3683 leaf flags { 3684 type bits { 3685 bit A { 3686 position 7; 3687 description 3688 "The A bit represents the Anomalous (A) bit. 3689 The A bit is set when the measured value of 3690 this parameter exceeds its configured 3691 maximum threshold. 3692 The A bit is cleared when the measured value 3693 falls below its configured reuse threshold. 3694 If the A bit is clear, 3695 the value represents steady-state link performance."; 3696 } 3697 } 3698 description 3699 "Flags."; 3700 } 3701 leaf value { 3702 type uint32; 3703 units percent; 3704 description 3705 "Link packet loss expressed as a percentage 3706 of the total traffic sent over a configurable interval."; 3707 } 3708 } 3709 container unidirectional-link-residual-bandwidth { 3710 description 3711 "Container for the residual bandwidth 3712 from the local neighbor to the remote one."; 3713 leaf value { 3714 type rt-types:bandwidth-ieee-float32; 3715 units Bps; 3716 description 3717 "Residual bandwidth."; 3719 } 3720 } 3721 container unidirectional-link-available-bandwidth { 3722 description 3723 "Container for the available bandwidth 3724 from the local neighbor to the remote one."; 3725 leaf value { 3726 type rt-types:bandwidth-ieee-float32; 3727 units Bps; 3728 description 3729 "Available bandwidth."; 3730 } 3731 } 3732 container unidirectional-link-utilized-bandwidth { 3733 description 3734 "Container for the utilized bandwidth 3735 from the local neighbor to the remote one."; 3736 leaf value { 3737 type rt-types:bandwidth-ieee-float32; 3738 units Bps; 3739 description 3740 "Utilized bandwidth."; 3741 } 3742 } 3743 } 3745 grouping neighbor-te-extensions { 3746 description 3747 "Grouping for TE attributes of a neighbor as defined 3748 in RFC5305"; 3749 leaf admin-group { 3750 type uint32; 3751 description 3752 "Administrative group/Resource Class/Color."; 3753 } 3754 container local-if-ipv4-addrs { 3755 description "All local interface IPv4 addresses."; 3756 leaf-list local-if-ipv4-addr { 3757 type inet:ipv4-address; 3758 description 3759 "List of local interface IPv4 addresses."; 3760 } 3761 } 3762 container remote-if-ipv4-addrs { 3763 description "All remote interface IPv4 addresses."; 3764 leaf-list remote-if-ipv4-addr { 3765 type inet:ipv4-address; 3766 description 3767 "List of remote interface IPv4 addresses."; 3768 } 3769 } 3770 leaf te-metric { 3771 type uint32; 3772 description "TE metric."; 3773 } 3774 leaf max-bandwidth { 3775 type rt-types:bandwidth-ieee-float32; 3776 description "Maximum bandwidth."; 3777 } 3778 leaf max-reservable-bandwidth { 3779 type rt-types:bandwidth-ieee-float32; 3780 description "Maximum reservable bandwidth."; 3781 } 3782 container unreserved-bandwidths { 3783 description "All unreserved bandwidths."; 3784 list unreserved-bandwidth { 3785 leaf priority { 3786 type uint8 { 3787 range "0 .. 7"; 3788 } 3789 description "Priority from 0 to 7."; 3790 } 3791 leaf unreserved-bandwidth { 3792 type rt-types:bandwidth-ieee-float32; 3793 description "Unreserved bandwidth."; 3794 } 3795 description 3796 "List of unreserved bandwidths for different 3797 priorities."; 3798 } 3799 } 3800 } 3802 grouping neighbor-extended { 3803 description 3804 "Grouping for attributes of an IS-IS extended neighbor."; 3805 leaf neighbor-id { 3806 type extended-system-id; 3807 description "system-id of the extended neighbor."; 3808 } 3809 container instances { 3810 description "List of all adjacencies between the local 3811 system and the neighbor system-id."; 3812 list instance { 3813 key id; 3814 leaf id { 3815 type uint32; 3816 description "Unique identifier of an instance of a 3817 particular neighbor."; 3818 } 3819 leaf metric { 3820 type wide-metric; 3821 description "IS-IS wide metric for extended neighbor"; 3822 } 3823 uses neighbor-gmpls-extensions; 3824 uses neighbor-te-extensions; 3825 uses neighbor-extended-te-extensions; 3826 uses neighbor-link-attributes; 3827 uses unknown-tlvs; 3828 description "Instance of a particular adjacency."; 3829 } 3830 } 3831 } 3833 grouping neighbor { 3834 description "IS-IS standard neighbor grouping."; 3835 leaf neighbor-id { 3836 type extended-system-id; 3837 description "IS-IS neighbor system-id"; 3838 } 3839 container instances { 3840 description "List of all adjacencies between the local 3841 system and the neighbor system-id."; 3842 list instance { 3843 key id; 3845 leaf id { 3846 type uint32; 3847 description "Unique identifier of an instance of a 3848 particular neighbor."; 3849 } 3850 leaf i-e { 3851 type boolean; 3852 description 3853 "Internal or External (I/E) Metric bit value"; 3854 } 3855 container default-metric { 3856 leaf metric { 3857 type std-metric; 3858 description "IS-IS default metric value"; 3859 } 3860 description "IS-IS default metric container"; 3861 } 3862 container delay-metric { 3863 leaf metric { 3864 type std-metric; 3865 description "IS-IS delay metric value"; 3866 } 3867 leaf supported { 3868 type boolean; 3869 default "false"; 3870 description "IS-IS delay metric supported"; 3871 } 3872 description "IS-IS delay metric container"; 3873 } 3874 container expense-metric { 3875 leaf metric { 3876 type std-metric; 3877 description "IS-IS delay expense metric value"; 3878 } 3879 leaf supported { 3880 type boolean; 3881 default "false"; 3882 description "IS-IS delay expense metric supported"; 3883 } 3884 description "IS-IS delay expense metric container"; 3885 } 3886 container error-metric { 3887 leaf metric { 3888 type std-metric; 3889 description "IS-IS error metric value"; 3890 } 3891 leaf supported { 3892 type boolean; 3893 default "false"; 3894 description "IS-IS error metric supported"; 3895 } 3896 description "IS-IS error metric container"; 3897 } 3898 description "Instance of a particular adjacency 3899 as defined in ISO10589."; 3900 } 3901 } 3902 } 3904 /* Top level TLVs */ 3906 grouping tlv132-ipv4-addresses { 3907 leaf-list ipv4-addresses { 3908 type inet:ipv4-address; 3909 description 3910 "List of IPv4 addresses of the IS-IS node - IS-IS 3911 reference is TLV 132."; 3912 } 3913 description "Grouping for TLV132."; 3914 } 3915 grouping tlv232-ipv6-addresses { 3916 leaf-list ipv6-addresses { 3917 type inet:ipv6-address; 3918 description 3919 "List of IPv6 addresses of the IS-IS node - IS-IS 3920 reference is TLV 232."; 3921 } 3922 description "Grouping for TLV232."; 3923 } 3924 grouping tlv134-ipv4-te-rid { 3925 leaf ipv4-te-routerid { 3926 type inet:ipv4-address; 3927 description 3928 "IPv4 Traffic Engineering router ID of the IS-IS node - 3929 IS-IS reference is TLV 134."; 3930 } 3931 description "Grouping for TLV134."; 3932 } 3933 grouping tlv140-ipv6-te-rid { 3934 leaf ipv6-te-routerid { 3935 type inet:ipv6-address; 3936 description 3937 "IPv6 Traffic Engineering router ID of the IS-IS node - 3938 IS-IS reference is TLV 140."; 3939 } 3940 description "Grouping for TLV140."; 3941 } 3942 grouping tlv129-protocols { 3943 leaf-list protocol-supported { 3944 type uint8; 3945 description 3946 "List of supported protocols of the IS-IS node - 3947 IS-IS reference is TLV 129."; 3948 } 3949 description "Grouping for TLV129."; 3950 } 3951 grouping tlv137-hostname { 3952 leaf dynamic-hostname { 3953 type string; 3954 description 3955 "Host Name of the IS-IS node - IS-IS reference 3956 is TLV 137."; 3957 } 3958 description "Grouping for TLV137."; 3959 } 3960 grouping tlv10-authentication { 3961 container authentication { 3962 leaf authentication-type { 3963 type identityref { 3964 base key-chain:crypto-algorithm; 3965 } 3966 description 3967 "Authentication type to be used with IS-IS node."; 3968 } 3969 leaf authentication-key { 3970 type string; 3971 description 3972 "Authentication key to be used. For security reasons, 3973 the authentication key MUST NOT be presented in 3974 a clear text format in response to any request 3975 (e.g., via get, get-config)."; 3976 } 3977 description 3978 "IS-IS node authentication information container - 3979 IS-IS reference is TLV 10."; 3980 } 3981 description "Grouping for TLV10."; 3982 } 3983 grouping tlv229-mt { 3984 container mt-entries { 3985 list topology { 3986 description 3987 "List of topologies supported"; 3989 leaf mt-id { 3990 type uint16 { 3991 range "0 .. 4095"; 3992 } 3993 description 3994 "Multi-Topology identifier of topology."; 3995 } 3997 leaf attributes { 3998 type bits { 3999 bit overload { 4000 description 4001 "If set, the originator is overloaded, 4002 and must be avoided in path calculation."; 4003 } 4004 bit attached { 4005 description 4006 "If set, the originator is attached to 4007 another area using the referred metric."; 4008 } 4009 } 4010 description 4011 "Attributes of the LSP for the associated 4012 topology."; 4013 } 4014 } 4015 description 4016 "IS-IS node topology information container - 4017 IS-IS reference is TLV 229."; 4018 } 4019 description "Grouping for TLV229."; 4020 } 4022 grouping tlv242-router-capabilities { 4023 container router-capabilities { 4024 list router-capability { 4025 leaf flags { 4026 type bits { 4027 bit flooding { 4028 position 0; 4029 description 4030 "If the S bit is set, the IS-IS Router CAPABILITY 4031 TLV MUST be flooded across the entire routing 4032 domain. If the S bit is clear, the TLV MUST NOT 4033 be leaked between levels. This bit MUST NOT 4034 be altered during the TLV leaking."; 4035 } 4036 bit down { 4037 position 1; 4038 description 4039 "When the IS-IS Router CAPABILITY TLV is leaked 4040 from level-2 to level-1, the D bit MUST be set. 4041 Otherwise, this bit MUST be clear. IS-IS Router 4042 capability TLVs with the D bit set MUST NOT be 4043 leaked from level-1 to level-2 in to prevent 4044 TLV looping."; 4045 } 4046 } 4047 description "Router Capability Flags"; 4048 } 4049 container node-tags { 4050 if-feature node-tag; 4051 list node-tag { 4052 leaf tag { 4053 type uint32; 4054 description "Node tag value."; 4055 } 4056 description "List of tags."; 4057 } 4058 description "Container for node admin tags"; 4059 } 4061 uses unknown-tlvs; 4063 leaf binary { 4064 type binary; 4065 description 4066 "Binary encoding of the IS-IS node capabilities"; 4067 } 4068 description 4069 "IS-IS node capabilities. This list element may 4070 be extended with detailed information - IS-IS 4071 reference is TLV 242."; 4072 } 4073 description "List of router capability TLVs."; 4074 } 4075 description "Grouping for TLV242."; 4076 } 4078 grouping tlv138-srlg { 4079 description 4080 "Grouping for TLV138."; 4081 container links-srlgs { 4082 list links { 4083 leaf neighbor-id { 4084 type extended-system-id; 4085 description "system-id of the extended neighbor."; 4086 } 4087 leaf flags { 4088 type uint8; 4089 description 4090 "Flags associated with the link."; 4091 } 4092 leaf link-local-id { 4093 type union { 4094 type inet:ip-address; 4095 type uint32; 4096 } 4097 description 4098 "Local identifier of the link. 4099 It could be an IPv4 address or a local identifier."; 4100 } 4101 leaf link-remote-id { 4102 type union { 4103 type inet:ip-address; 4104 type uint32; 4105 } 4106 description 4107 "Remote identifier of the link. 4108 It could be an IPv4 address or a remotely learned 4109 identifier."; 4110 } 4111 container srlgs { 4112 description "List of SRLGs."; 4113 leaf-list srlg { 4114 type uint32; 4115 description 4116 "SRLG value of the link."; 4117 } 4118 } 4119 description 4120 "SRLG attribute of a link."; 4121 } 4122 description 4123 "List of links with SRLGs"; 4124 } 4125 } 4127 /* Grouping for LSDB description */ 4129 grouping lsp-entry { 4130 description "IS-IS LSP database entry groupting"; 4132 leaf decoded-completed { 4133 type boolean; 4134 description "IS-IS LSP body fully decoded."; 4135 } 4136 leaf raw-data { 4137 type yang:hex-string; 4138 description 4139 "The hexadecial representation of the complete LSP in 4140 network-byte order (NBO) as received or originated."; 4141 } 4142 leaf lsp-id { 4143 type lsp-id; 4144 description "LSP ID of the LSP"; 4145 } 4146 leaf checksum { 4147 type uint16; 4148 description "LSP checksum"; 4149 } 4150 leaf remaining-lifetime { 4151 type uint16; 4152 units "seconds"; 4153 description 4154 "Remaining lifetime (in seconds) until LSP expiration."; 4155 } 4156 leaf sequence { 4157 type uint32; 4158 description 4159 "This leaf describes the sequence number of the LSP."; 4160 } 4161 leaf attributes { 4162 type bits { 4163 bit partitioned { 4164 description "Originator partition repair supported"; 4165 } 4166 bit attached-error { 4167 description 4168 "If set, the originator is attached to 4169 another area using the referred metric."; 4170 } 4171 bit attached-expense { 4172 description 4173 "If set, the originator is attached to 4174 another area using the referred metric."; 4175 } 4176 bit attached-delay { 4177 description 4178 "If set, the originator is attached to 4179 another area using the referred metric."; 4180 } 4181 bit attached-default { 4182 description 4183 "If set, the originator is attached to 4184 another area using the referred metric."; 4185 } 4186 bit overload { 4187 description 4188 "If set, the originator is overloaded, 4189 and must be avoided in path calculation."; 4190 } 4191 } 4192 description "LSP attributes"; 4193 } 4195 uses tlv132-ipv4-addresses; 4196 uses tlv232-ipv6-addresses; 4197 uses tlv134-ipv4-te-rid; 4198 uses tlv140-ipv6-te-rid; 4199 uses tlv129-protocols; 4200 uses tlv137-hostname; 4201 uses tlv10-authentication; 4202 uses tlv229-mt; 4203 uses tlv242-router-capabilities; 4204 uses tlv138-srlg; 4205 uses unknown-tlvs; 4207 container is-neighbor { 4208 list neighbor { 4209 key neighbor-id; 4211 uses neighbor; 4212 description "List of neighbors."; 4213 } 4214 description 4215 "Standard IS neighbors container - IS-IS reference is 4216 TLV 2."; 4217 } 4219 container extended-is-neighbor { 4220 list neighbor { 4221 key neighbor-id; 4223 uses neighbor-extended; 4224 description 4225 "List of extended IS neighbors"; 4226 } 4227 description 4228 "Standard IS extended neighbors container - IS-IS 4229 reference is TLV 22"; 4230 } 4232 container ipv4-internal-reachability { 4233 list prefixes { 4234 uses prefix-ipv4-std; 4235 description "List of prefixes."; 4236 } 4237 description 4238 "IPv4 internal reachability information container - IS-IS 4239 reference is TLV 128."; 4240 } 4242 container ipv4-external-reachability { 4243 list prefixes { 4244 uses prefix-ipv4-std; 4245 description "List of prefixes."; 4247 } 4248 description 4249 "IPv4 external reachability information container - 4250 IS-IS reference is TLV 130."; 4251 } 4253 container extended-ipv4-reachability { 4254 list prefixes { 4255 uses prefix-ipv4-extended; 4256 uses unknown-tlvs; 4257 description "List of prefixes."; 4258 } 4259 description 4260 "IPv4 extended reachability information container - 4261 IS-IS reference is TLV 135."; 4262 } 4264 container mt-is-neighbor { 4265 list neighbor { 4266 leaf mt-id { 4267 type uint16 { 4268 range "0 .. 4095"; 4269 } 4270 description "Multi-topology (MT) identifier"; 4271 } 4272 uses neighbor-extended; 4273 description "List of neighbors."; 4274 } 4275 description 4276 "IS-IS multi-topology neighbor container - IS-IS 4277 reference is TLV 223."; 4278 } 4280 container mt-extended-ipv4-reachability { 4281 list prefixes { 4282 leaf mt-id { 4283 type uint16 { 4284 range "0 .. 4095"; 4285 } 4286 description "Multi-topology (MT) identifier"; 4287 } 4288 uses prefix-ipv4-extended; 4289 uses unknown-tlvs; 4290 description "List of extended prefixes."; 4291 } 4292 description 4293 "IPv4 multi-topolgy (MT) extended reachability 4294 information container - IS-IS reference is TLV 235."; 4296 } 4298 container mt-ipv6-reachability { 4299 list prefixes { 4300 leaf MT-ID { 4301 type uint16 { 4302 range "0 .. 4095"; 4303 } 4304 description "Multi-topology (MT) identifier"; 4305 } 4306 uses prefix-ipv6-extended; 4307 uses unknown-tlvs; 4308 description "List of IPv6 extended prefixes."; 4309 } 4310 description 4311 "IPv6 multi-topolgy (MT) extended reachability 4312 information container - IS-IS reference is TLV 237."; 4313 } 4315 container ipv6-reachability { 4316 list prefixes { 4317 uses prefix-ipv6-extended; 4318 uses unknown-tlvs; 4319 description "List of IPv6 prefixes."; 4320 } 4321 description 4322 "IPv6 reachability information container - IS-IS 4323 reference is TLV 236."; 4324 } 4325 } 4327 grouping lsdb { 4328 description "Link State Database (LSDB) grouping"; 4329 container database { 4330 config false; 4331 list levels { 4332 key level; 4334 leaf level { 4335 type level-number; 4336 description "LSDB level number (1 or 2)"; 4337 } 4338 list lsp { 4339 key lsp-id; 4340 uses lsp-entry; 4341 description "List of LSPs in LSDB"; 4342 } 4343 description "List of LSPs for the LSDB level container"; 4345 } 4346 description "IS-IS Link State database container"; 4347 } 4348 } 4350 /* Augmentations */ 4352 augment "/rt:routing/" 4353 +"rt:ribs/rt:rib/rt:routes/rt:route" { 4354 when "rt:source-protocol = 'isis:isis'" { 4355 description "IS-IS-specific route attributes."; 4356 } 4357 uses route-content; 4358 description 4359 "This augments route object in RIB with IS-IS-specific 4360 attributes."; 4361 } 4363 augment "/if:interfaces/if:interface" { 4364 leaf clns-mtu { 4365 type uint16; 4366 description "CLNS MTU of the interface"; 4367 } 4368 description "ISO specific interface parameters."; 4369 } 4371 augment "/rt:routing/rt:control-plane-protocols/" 4372 +"rt:control-plane-protocol" { 4373 when "rt:type = 'isis:isis'" { 4374 description 4375 "This augment is only valid when routing protocol 4376 instance type is 'isis'"; 4377 } 4378 description 4379 "This augments a routing protocol instance with IS-IS 4380 specific parameters."; 4381 container isis { 4382 must "count(area-address) > 0" { 4383 error-message 4384 "At least one area-address must be configured."; 4385 description 4386 "Enforce configuration of at least one area."; 4387 } 4388 uses instance-config; 4389 uses instance-state; 4391 container topologies { 4392 if-feature multi-topology; 4393 list topology { 4394 key "name"; 4395 leaf enable { 4396 type boolean; 4397 description "Topology enable configuration"; 4398 } 4399 leaf name { 4400 type leafref { 4401 path "../../../../../../rt:ribs/rt:rib/rt:name"; 4402 } 4403 description 4404 "Routing Information Base (RIB) corresponding 4405 to topology."; 4406 } 4408 uses multi-topology-config; 4410 description "List of topologies"; 4411 } 4412 description "Multi-topology container"; 4413 } 4414 container interfaces { 4415 list interface { 4416 key "name"; 4417 leaf name { 4418 type if:interface-ref; 4420 description 4421 "Reference to the interface within 4422 the routing-instance."; 4423 } 4424 uses interface-config; 4425 uses interface-state; 4426 container topologies { 4427 if-feature multi-topology; 4428 list topology { 4429 key name; 4431 leaf name { 4432 type leafref { 4433 path "../../../../../../../../"+ 4434 "rt:ribs/rt:rib/rt:name"; 4435 } 4436 description 4437 "Routing Information Base (RIB) corresponding 4438 to topology."; 4439 } 4440 uses multi-topology-interface-config; 4441 description "List of interface topologies"; 4442 } 4443 description "Multi-topology container"; 4444 } 4445 description "List of IS-IS interfaces."; 4446 } 4447 description 4448 "IS-IS interface specific configuration container"; 4449 } 4451 description 4452 "IS-IS configuration/state top-level container"; 4453 } 4454 } 4456 /* RPC methods */ 4458 rpc clear-adjacency { 4459 description 4460 "This RPC request clears a particular set of IS-IS 4461 adjacencies. If the operation fails due to an internal 4462 reason, then the error-tag and error-app-tag should be 4463 set indicating the reason for the failure."; 4464 input { 4466 leaf routing-protocol-instance-name { 4467 type leafref { 4468 path "/rt:routing/rt:control-plane-protocols/" 4469 + "rt:control-plane-protocol/rt:name"; 4470 } 4471 mandatory "true"; 4472 description 4473 "Name of the IS-IS protocol instance whose IS-IS 4474 adjacency is being cleared. 4476 If the corresponding IS-IS instance doesn't exist, 4477 then the operation will fail with an error-tag of 4478 'data-missing' and an error-app-tag of 4479 'routing-protocol-instance-not-found'."; 4480 } 4481 leaf level { 4482 type level; 4483 description 4484 "IS-IS level of the adjacency to be cleared. If the 4485 IS-IS level is level-1-2, both level 1 and level 2 4486 adjacencies would be cleared. 4488 If the value provided is different from the one 4489 authorized in the enum type, then the operation 4490 SHALL fail with an error-tag of 'data-missing' and 4491 an error-app-tag of 'bad-isis-level'."; 4492 } 4493 leaf interface { 4494 type if:interface-ref; 4495 description 4496 "IS-IS interface name. 4498 If the corresponding IS-IS interface doesn't exist, 4499 then the operation SHALL fail with an error-tag of 4500 'data-missing' and an error-app-tag of 4501 'isis-interface-not-found'."; 4502 } 4503 } 4504 } 4506 rpc clear-database { 4507 description 4508 "This RPC request clears a particular IS-IS database. If 4509 the operation fails for an IS-IS internal reason, then 4510 the error-tag and error-app-tag should be set 4511 indicating the reason for the failure."; 4512 input { 4513 leaf routing-protocol-instance-name { 4514 type leafref { 4515 path "/rt:routing/rt:control-plane-protocols/" 4516 + "rt:control-plane-protocol/rt:name"; 4517 } 4518 mandatory "true"; 4519 description 4520 "Name of the IS-IS protocol instance whose IS-IS 4521 database(s) is/are being cleared. 4523 If the corresponding IS-IS instance doesn't exist, 4524 then the operation will fail with an error-tag of 4525 'data-missing' and an error-app-tag of 4526 'routing-protocol-instance-not-found'."; 4527 } 4528 leaf level { 4529 type level; 4530 description 4531 "IS-IS level of the adjacency to be cleared. If the 4532 IS-IS level is level-1-2, both level 1 and level 2 4533 databases would be cleared. 4535 If the value provided is different from the one 4536 authorized in the enum type, then the operation 4537 SHALL fail with an error-tag of 'data-missing' and 4538 an error-app-tag of 'bad-isis-level'."; 4539 } 4540 } 4541 } 4543 /* Notifications */ 4545 notification database-overload { 4546 uses notification-instance-hdr; 4548 leaf overload { 4549 type enumeration { 4550 enum off { 4551 description 4552 "Indicates IS-IS instance has left overload state"; 4553 } 4554 enum on { 4555 description 4556 "Indicates IS-IS instance has entered overload state"; 4557 } 4559 } 4560 description "New overload state of the IS-IS instance"; 4561 } 4562 description 4563 "This notification is sent when an IS-IS instance 4564 overload state changes."; 4565 } 4567 notification lsp-too-large { 4568 uses notification-instance-hdr; 4569 uses notification-interface-hdr; 4571 leaf pdu-size { 4572 type uint32; 4573 description "Size of the LSP PDU"; 4574 } 4575 leaf lsp-id { 4576 type lsp-id; 4577 description "LSP ID"; 4579 } 4580 description 4581 "This notification is sent when we attempt to propagate 4582 an LSP that is larger than the dataLinkBlockSize for the 4583 circuit. The notification generation must be throttled 4584 with at least 5 seconds betweeen successive 4585 notifications."; 4586 } 4588 notification if-state-change { 4589 uses notification-instance-hdr; 4590 uses notification-interface-hdr; 4592 leaf state { 4593 type if-state-type; 4594 description "Interface state."; 4595 } 4596 description 4597 "This notification is sent when an interface 4598 state change is detected."; 4599 } 4601 notification corrupted-lsp-detected { 4602 uses notification-instance-hdr; 4603 leaf lsp-id { 4604 type lsp-id; 4605 description "LSP ID"; 4606 } 4607 description 4608 "This notification is sent when we find that 4609 an LSP that was stored in memory has become 4610 corrupted."; 4611 } 4613 notification attempt-to-exceed-max-sequence { 4614 uses notification-instance-hdr; 4615 leaf lsp-id { 4616 type lsp-id; 4617 description "LSP ID"; 4618 } 4619 description 4620 "This notification is sent when the system 4621 wraps the 32-bit sequence counter of an LSP."; 4622 } 4624 notification id-len-mismatch { 4625 uses notification-instance-hdr; 4626 uses notification-interface-hdr; 4627 leaf pdu-field-len { 4628 type uint8; 4629 description "Size of the ID length in the received PDU"; 4630 } 4631 leaf raw-pdu { 4632 type binary; 4633 description "Received raw PDU."; 4634 } 4635 description 4636 "This notification is sent when we receive a PDU 4637 with a different value for the system-id length. 4638 The notification generation must be throttled 4639 with at least 5 seconds betweeen successive 4640 notifications."; 4641 } 4643 notification max-area-addresses-mismatch { 4644 uses notification-instance-hdr; 4645 uses notification-interface-hdr; 4647 leaf max-area-addresses { 4648 type uint8; 4649 description "Received number of supported areas"; 4650 } 4651 leaf raw-pdu { 4652 type binary; 4653 description "Received raw PDU."; 4654 } 4655 description 4656 "This notification is sent when we receive a PDU 4657 with a different value for the Maximum Area Addresses. 4658 The notification generation must be throttled 4659 with at least 5 seconds betweeen successive 4660 notifications."; 4661 } 4663 notification own-lsp-purge { 4664 uses notification-instance-hdr; 4665 uses notification-interface-hdr; 4666 leaf lsp-id { 4667 type lsp-id; 4668 description "LSP ID"; 4669 } 4670 description 4671 "This notification is sent when the system receives 4672 a PDU with its own system-id and zero age."; 4673 } 4674 notification sequence-number-skipped { 4675 uses notification-instance-hdr; 4676 uses notification-interface-hdr; 4677 leaf lsp-id { 4678 type lsp-id; 4679 description "LSP ID"; 4680 } 4681 description 4682 "This notification is sent when the system receives a 4683 PDU with its own system-id and different contents. The 4684 system has to reoriginate the LSP with a higher sequence 4685 number."; 4686 } 4688 notification authentication-type-failure { 4689 uses notification-instance-hdr; 4690 uses notification-interface-hdr; 4691 leaf raw-pdu { 4692 type binary; 4693 description "Received raw PDU."; 4694 } 4695 description 4696 "This notification is sent when the system receives a 4697 PDU with the wrong authentication type field. 4698 The notification generation must be throttled 4699 with at least 5 seconds betweeen successive 4700 notifications."; 4701 } 4703 notification authentication-failure { 4704 uses notification-instance-hdr; 4705 uses notification-interface-hdr; 4706 leaf raw-pdu { 4707 type binary; 4708 description "Received raw PDU."; 4709 } 4710 description 4711 "This notification is sent when the system receives 4712 a PDU with the wrong authentication information. 4713 The notification generation must be throttled with 4714 with at least 5 seconds betweeen successive 4715 notifications."; 4716 } 4718 notification version-skew { 4719 uses notification-instance-hdr; 4720 uses notification-interface-hdr; 4721 leaf protocol-version { 4722 type uint8; 4723 description "Protocol version received in the PDU."; 4724 } 4725 leaf raw-pdu { 4726 type binary; 4727 description "Received raw PDU."; 4728 } 4729 description 4730 "This notification is sent when the system receives a 4731 PDU with a different protocol version number. 4732 The notification generation must be throttled 4733 with at least 5 seconds betweeen successive 4734 notifications."; 4735 } 4737 notification area-mismatch { 4738 uses notification-instance-hdr; 4739 uses notification-interface-hdr; 4740 leaf raw-pdu { 4741 type binary; 4742 description "Received raw PDU."; 4743 } 4744 description 4745 "This notification is sent when the system receives a 4746 Hello PDU from an IS that does not share any area 4747 address. The notification generation must be throttled 4748 with at least 5 seconds betweeen successive 4749 notifications."; 4750 } 4752 notification rejected-adjacency { 4753 uses notification-instance-hdr; 4754 uses notification-interface-hdr; 4755 leaf raw-pdu { 4756 type binary; 4757 description 4758 "Received raw PDU."; 4759 } 4760 leaf reason { 4761 type string { 4762 length "1..255"; 4763 } 4764 description 4765 "The system may provide a reason to reject the 4766 adjacency. If the reason is not available, 4767 an empty string will be returned. 4768 The expected format is a single line text."; 4769 } 4770 description 4771 "This notification is sent when the system receives a 4772 Hello PDU from an IS but does not establish an adjacency 4773 for some reason. The notification generation must be 4774 throttled with at least 5 seconds betweeen successive 4775 notifications."; 4776 } 4778 notification protocols-supported-mismatch { 4779 uses notification-instance-hdr; 4780 uses notification-interface-hdr; 4781 leaf raw-pdu { 4782 type binary; 4783 description "Received raw PDU."; 4784 } 4785 leaf-list protocols { 4786 type uint8; 4787 description 4788 "List of protocols supported by the remote system."; 4789 } 4790 description 4791 "This notification is sent when the system receives a 4792 non-pseudonode LSP that has no matching protocols 4793 supported. The notification generation must be throttled 4794 with at least 5 seconds betweeen successive 4795 notifications."; 4796 } 4798 notification lsp-error-detected { 4799 uses notification-instance-hdr; 4800 uses notification-interface-hdr; 4801 leaf lsp-id { 4802 type lsp-id; 4803 description "LSP ID."; 4804 } 4805 leaf raw-pdu { 4806 type binary; 4807 description "Received raw PDU."; 4808 } 4809 leaf error-offset { 4810 type uint32; 4811 description 4812 "If the problem is a malformed TLV, the error-offset 4813 points to the start of the TLV. If the problem is with 4814 the LSP header, the error-offset points to the errant 4815 byte"; 4816 } 4817 leaf tlv-type { 4818 type uint8; 4819 description 4820 "If the problem is a malformed TLV, the tlv-type is set 4821 to the type value of the suspicious TLV. Otherwise, 4822 this leaf is not present."; 4823 } 4824 description 4825 "This notification is sent when the system receives an 4826 LSP with a parse error. The notification generation must 4827 be throttled with at least 5 seconds betweeen successive 4828 notifications."; 4829 } 4831 notification adjacency-state-change { 4832 uses notification-instance-hdr; 4833 uses notification-interface-hdr; 4834 leaf neighbor { 4835 type string { 4836 length "1..255"; 4837 } 4838 description 4839 "Name of the neighbor. 4840 It corresponds to the hostname associated 4841 with the system-id of the neighbor in the 4842 mapping database (RFC5301). 4843 If the name of the neighbor is 4844 not available, it is not returned."; 4845 } 4846 leaf neighbor-system-id { 4847 type system-id; 4848 description "Neighbor system-id"; 4849 } 4850 leaf state { 4851 type adj-state-type; 4853 description "New state of the IS-IS adjacency."; 4854 } 4855 leaf reason { 4856 type string { 4857 length "1..255"; 4858 } 4859 description 4860 "If the adjacency is going to DOWN, this leaf provides 4861 a reason for the adjacency going down. The reason is 4862 provided as a text. If the adjacency is going to UP, no 4863 reason is provided. The expected format is a single line 4864 text."; 4866 } 4867 description 4868 "This notification is sent when an IS-IS adjacency 4869 moves to Up state or to Down state."; 4870 } 4872 notification lsp-received { 4873 uses notification-instance-hdr; 4874 uses notification-interface-hdr; 4876 leaf lsp-id { 4877 type lsp-id; 4878 description "LSP ID"; 4879 } 4880 leaf sequence { 4881 type uint32; 4882 description "Sequence number of the received LSP."; 4883 } 4884 leaf received-timestamp { 4885 type yang:timestamp; 4887 description "Timestamp when the LSP was received."; 4888 } 4889 leaf neighbor-system-id { 4890 type system-id; 4891 description "Neighbor system-id of LSP sender"; 4892 } 4893 description 4894 "This notification is sent when an LSP is received. 4895 The notification generation must be throttled with at 4896 least 5 seconds betweeen successive notifications."; 4897 } 4899 notification lsp-generation { 4900 uses notification-instance-hdr; 4902 leaf lsp-id { 4903 type lsp-id; 4904 description "LSP ID"; 4905 } 4906 leaf sequence { 4907 type uint32; 4908 description "Sequence number of the received LSP."; 4909 } 4910 leaf send-timestamp { 4911 type yang:timestamp; 4913 description "Timestamp when our LSP was regenerated."; 4915 } 4916 description 4917 "This notification is sent when an LSP is regenerated. 4918 The notification generation must be throttled with at 4919 least 5 seconds betweeen successive notifications."; 4920 } 4921 } 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, authentification 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 too 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 non accurate 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 lsp-log grouping, leaf change is renamed reason to align with 5085 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 systemid 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+groupings for per level configuration. 5214 o remove routing-instance as per core routing model v21. 5216 o added BFD leaf (no more BFD protocol model). 5218 o changed keychain module reference. 5220 10.21. From version -05 to version -07 5222 o Move Overload config from list to container. 5224 o Move Overload-max-metric config from list to container. 5226 o Move preference config from list to container. 5228 o Add Node flag in config. 5230 o Removed BFD config => moved to isis-bfd module. 5232 o Remove call to routing policy model. 5234 10.22. From version -03 to version -05 5236 o Correct invalid references to previous versions of core routing 5237 model. 5239 o Remove BFD config and replace by groupings from ietf-bfd. 5241 o Adding routing-policy support through routing-policy model. 5243 10.23. From version -02 to version -03 5245 o Reviewed config and op state groupings. 5247 o Add default value to lfa candidate-disabled. 5249 o Add enable leaf to isis container to reflect admin state. 5251 o Move to VRF centric only. 5253 o Segment routing is part os a separate module. 5255 10.24. From version -01 to version -02 5257 o Adding IPFRR. 5259 o Adding igp-ldp-sync. 5261 o Adding segment-routing. 5263 o Adding instance reference to operational states. 5265 o Move AF type from string to identity. 5267 o Updated router-capability in LSDB description. 5269 o packet counters moved to interface-packet-counters. 5271 o Added modification information in lsp-log. 5273 o Removing igp-ldp-sync timer in IS-IS. 5275 o Defining hierarchy for operational states. 5277 o Adding clns-mtu. 5279 o Adding key-chain. 5281 10.25. From version -00 to version -01 5283 o Interface metric move from af container to interface container. 5285 o Hello-padding on interface moved to hello-padding-disable with 5286 empty type. 5288 o three-way-handshake removed. 5290 o route preference changed to a choice. 5292 o csnp-authentication/psnp-authentication merged to authentication 5293 container. 5295 o lsp-gen-interval-exp-delay removed. 5297 o Added overload-max-metric feature. 5299 o overload-max-metric is in a separate container. 5301 o Change hello-padding to container. 5303 o Change bfd to container. 5305 o Make BFD a feature. 5307 o Create mpls-te container and put router-id inside. 5309 o Remove GR helper disable and timers. 5311 11. References 5313 11.1. Normative References 5315 [I-D.ietf-bfd-yang] 5316 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 5317 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 5318 Detection (BFD)", draft-ietf-bfd-yang-17 (work in 5319 progress), August 2018. 5321 [ISO-10589] 5322 ISO, , "Intermediate System to Intermediate System intra- 5323 domain routeing information exchange protocol for use in 5324 conjunction with the protocol for providing the 5325 connectionless-mode network service (ISO 8473)", 5326 International Standard 10589: 2002, Second Edition, 2002. 5328 [RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and 5329 dual environments", RFC 1195, DOI 10.17487/RFC1195, 5330 December 1990, . 5332 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 5333 Requirement Levels", BCP 14, RFC 2119, 5334 DOI 10.17487/RFC2119, March 1997, . 5337 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 5338 DOI 10.17487/RFC3688, January 2004, . 5341 [RFC5029] Vasseur, JP. and S. Previdi, "Definition of an IS-IS Link 5342 Attribute Sub-TLV", RFC 5029, DOI 10.17487/RFC5029, 5343 September 2007, . 5345 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi 5346 Topology (MT) Routing in Intermediate System to 5347 Intermediate Systems (IS-ISs)", RFC 5120, 5348 DOI 10.17487/RFC5120, February 2008, . 5351 [RFC5130] Previdi, S., Shand, M., Ed., and C. Martin, "A Policy 5352 Control Mechanism in IS-IS Using Administrative Tags", 5353 RFC 5130, DOI 10.17487/RFC5130, February 2008, 5354 . 5356 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for 5357 IP Fast Reroute: Loop-Free Alternates", RFC 5286, 5358 DOI 10.17487/RFC5286, September 2008, . 5361 [RFC5301] McPherson, D. and N. Shen, "Dynamic Hostname Exchange 5362 Mechanism for IS-IS", RFC 5301, DOI 10.17487/RFC5301, 5363 October 2008, . 5365 [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic 5366 Engineering", RFC 5305, DOI 10.17487/RFC5305, October 5367 2008, . 5369 [RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS", 5370 RFC 5306, DOI 10.17487/RFC5306, October 2008, 5371 . 5373 [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308, 5374 DOI 10.17487/RFC5308, October 2008, . 5377 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5378 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 5379 . 5381 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5382 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 5383 DOI 10.17487/RFC5881, June 2010, . 5386 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 5387 the Network Configuration Protocol (NETCONF)", RFC 6020, 5388 DOI 10.17487/RFC6020, October 2010, . 5391 [RFC6119] Harrison, J., Berger, J., and M. Bartlett, "IPv6 Traffic 5392 Engineering in IS-IS", RFC 6119, DOI 10.17487/RFC6119, 5393 February 2011, . 5395 [RFC6232] Wei, F., Qin, Y., Li, Z., Li, T., and J. Dong, "Purge 5396 Originator Identification TLV for IS-IS", RFC 6232, 5397 DOI 10.17487/RFC6232, May 2011, . 5400 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 5401 and A. Bierman, Ed., "Network Configuration Protocol 5402 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 5403 . 5405 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 5406 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 5407 . 5409 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 5410 RFC 6991, DOI 10.17487/RFC6991, July 2013, 5411 . 5413 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. 5414 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", 5415 RFC 7490, DOI 10.17487/RFC7490, April 2015, 5416 . 5418 [RFC7794] Ginsberg, L., Ed., Decraene, B., Previdi, S., Xu, X., and 5419 U. Chunduri, "IS-IS Prefix Attributes for Extended IPv4 5420 and IPv6 Reachability", RFC 7794, DOI 10.17487/RFC7794, 5421 March 2016, . 5423 [RFC7810] Previdi, S., Ed., Giacalone, S., Ward, D., Drake, J., and 5424 Q. Wu, "IS-IS Traffic Engineering (TE) Metric Extensions", 5425 RFC 7810, DOI 10.17487/RFC7810, May 2016, 5426 . 5428 [RFC7917] Sarkar, P., Ed., Gredler, H., Hegde, S., Litkowski, S., 5429 and B. Decraene, "Advertising Node Administrative Tags in 5430 IS-IS", RFC 7917, DOI 10.17487/RFC7917, July 2016, 5431 . 5433 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 5434 RFC 7950, DOI 10.17487/RFC7950, August 2016, 5435 . 5437 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 5438 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 5439 . 5441 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 5442 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 5443 May 2017, . 5445 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 5446 Zhang, "YANG Data Model for Key Chains", RFC 8177, 5447 DOI 10.17487/RFC8177, June 2017, . 5450 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 5451 "Common YANG Data Types for the Routing Area", RFC 8294, 5452 DOI 10.17487/RFC8294, December 2017, . 5455 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 5456 Access Control Model", STD 91, RFC 8341, 5457 DOI 10.17487/RFC8341, March 2018, . 5460 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 5461 and R. Wilton, "Network Management Datastore Architecture 5462 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 5463 . 5465 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 5466 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 5467 . 5469 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 5470 Routing Management (NMDA Version)", RFC 8349, 5471 DOI 10.17487/RFC8349, March 2018, . 5474 [RFC8405] Decraene, B., Litkowski, S., Gredler, H., Lindem, A., 5475 Francois, P., and C. Bowers, "Shortest Path First (SPF) 5476 Back-Off Delay Algorithm for Link-State IGPs", RFC 8405, 5477 DOI 10.17487/RFC8405, June 2018, . 5480 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 5481 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 5482 . 5484 11.2. Informative References 5486 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP 5487 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March 5488 2009, . 5490 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 5491 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 5492 . 5494 Appendix A. Example of IS-IS configuration in XML 5496 This section gives an example of configuration of an IS-IS instance 5497 on a device. The example is written in XML. 5499 5500 5501 5502 SLI 5503 1.1.1.1 5504 5505 5506 ISIS-example 5507 5508 5509 5511 isis:isis 5512 5513 5514 5515 true 5516 level-2 5517 87FC.FCDF.4432 5518 49.0001 5519 5520 5521 192.0.2.1 5522 5523 5524 65535 5525 65000 5526 5527 wide-only 5529 5530 5531 111111 5532 5533 5534 5535 ipv4 5536 true 5537 5538 5539 ipv6 5540 true 5541 5542 5543 5544 5545 Loopback0 5546 200 5547 5548 0 5549 5550 true 5551 5552 5553 Eth1 5554 level-2 5556 point-to-point 5557 5558 167890 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 Loopback0 5569 5570 5572 ianaift:softwareLoopback 5573 5575 enabled 5576 5577
5578 192.0.2.1 5579 32 5580
5581
5582 5583
5584 2001:DB8::1 5585 128 5586
5587
5588
5589 5590 Eth1 5591 5592 5594 ianaift:ethernetCsmacd 5595 5597 enabled 5598 5599
5600 198.51.100.1 5601 30 5602
5603
5604 5605
5606 2001:DB8:0:0:FF::1 5607 64 5608
5609
5610
5611
5612
5614 Authors' Addresses 5616 Stephane Litkowski 5617 Orange 5619 Email: stephane.litkowski@orange.com 5620 Derek Yeung 5621 Arrcus, Inc 5623 Email: derek@arrcus.com 5625 Acee Lindem 5626 Cisco Systems 5628 Email: acee@cisco.com 5630 Jeffrey Zhang 5631 Juniper Networks 5633 Email: zzhang@juniper.net 5635 Ladislav Lhotka 5636 CZ.NIC 5638 Email: lhotka@nic.cz