idnits 2.17.1 draft-ietf-isis-yang-isis-cfg-31.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- == There are 1 instance of lines with non-RFC2606-compliant FQDNs in the document. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 98 has weird spacing: '... -13 to versi...' == Line 99 has weird spacing: '... -12 to versi...' == Line 100 has weird spacing: '... -09 to versi...' == Line 101 has weird spacing: '... -08 to versi...' == Line 102 has weird spacing: '... -07 to versi...' == (8 more instances...) -- The document date (January 21, 2019) is 1921 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 (~~), 8 warnings (==), 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-31 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 https://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 (https://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 . . . . . . . . . . . . 107 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 . . . . . . . . . . . . 108 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 . . . . . . . . . . . . 109 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 . . . . . . . . . . . . 110 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 . . . . . . . . . . . . . . . . . 115 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 {maximum-area-addresses}? 152 +--rw area-address* area-address 153 +--rw lsp-mtu? uint16 154 +--rw lsp-lifetime? uint16 155 +--rw lsp-refresh? rt-types:timer-value-seconds16 156 {lsp-refresh}? 157 +--rw poi-tlv? boolean {poi-tlv}? 158 +--rw graceful-restart {graceful-restart}? 159 | +--rw enable? boolean 160 | +--rw restart-interval? rt-types:timer-value-seconds16 161 | +--rw helper-enable? boolean 162 +--rw nsr {nsr}? 163 | +--rw enable? boolean 164 +--rw node-tags {node-tag}? 165 | +--rw node-tag* [tag] 166 | ... 167 +--rw metric-type 168 | +--rw value? enumeration 169 | +--rw level-1 170 | | ... 171 | +--rw level-2 172 | ... 173 +--rw default-metric 174 | +--rw value? wide-metric 175 | +--rw level-1 176 | | ... 177 | +--rw level-2 178 | ... 179 +--rw auto-cost {auto-cost}? 180 | +--rw enable? boolean 181 | +--rw reference-bandwidth? uint32 182 +--rw authentication 183 | +--rw (authentication-type)? 184 | | ... 185 | +--rw level-1 186 | | ... 187 | +--rw level-2 188 | ... 189 +--rw address-families {nlpid-control}? 190 | +--rw address-family-list* [address-family] 191 | ... 192 +--rw mpls 193 | +--rw te-rid {te-rid}? 194 | | ... 195 | +--rw ldp 196 | ... 197 +--rw spf-control 198 | +--rw paths? uint16 {max-ecmp}? 199 | +--rw ietf-spf-delay {ietf-spf-delay}? 200 | ... 201 +--rw fast-reroute {fast-reroute}? 202 | +--rw lfa {lfa}? 203 +--rw preference 204 | +--rw (granularity)? 205 | ... 206 +--rw overload 207 | +--rw status? boolean 208 +--rw overload-max-metric {overload-max-metric}? 209 | +--rw timeout? rt-types:timer-value-seconds16 210 +--ro spf-log 211 | +--ro event* [id] 212 | ... 213 +--ro lsp-log 214 | +--ro event* [id] 215 | ... 216 +--ro hostnames 217 | +--ro hostname* [system-id] 218 | ... 219 +--ro database 220 | +--ro levels* [level] 221 | ... 222 +--ro local-rib 223 | +--ro route* [prefix] 224 | ... 225 +--ro system-counters 226 | +--ro level* [level] 227 | ... 228 +--ro protected-routes 229 | +--ro address-family-stats* [address-family prefix alternate] 230 | ... 231 +--ro unprotected-routes 232 | +--ro address-family-stats* [address-family prefix] 233 | ... 234 +--ro protection-statistics* [frr-protection-method] 235 | +--ro frr-protection-method string 236 | +--ro address-family-stats* [address-family] 237 | ... 239 +--rw topologies {multi-topology}? 240 | +--rw topology* [name] 241 | ... 242 +--rw interfaces 243 +--rw interface* [name] 244 ... 246 rpcs: 247 +---x clear-adjacency 248 | +---w input 249 | +---w routing-protocol-instance-name -> 250 /rt:routing/control-plane-protocols/control-plane-protocol/name 251 | +---w level? level 252 | +---w interface? if:interface-ref 253 +---x clear-database 254 +---w input 255 +---w routing-protocol-instance-name -> 256 /rt:routing/control-plane-protocols/control-plane-protocol/name 257 +---w level? level 259 notifications: 260 +---n database-overload 261 | +--ro routing-protocol-name? -> 262 /rt:routing/control-plane-protocols/control-plane-protocol/name 263 | +--ro isis-level? level 264 | +--ro overload? enumeration 265 +---n lsp-too-large 266 | +--ro routing-protocol-name? -> 267 /rt:routing/control-plane-protocols/control-plane-protocol/name 268 | +--ro isis-level? level 269 | +--ro interface-name? if:interface-ref 270 | +--ro interface-level? level 271 | +--ro extended-circuit-id? extended-circuit-id 272 | +--ro pdu-size? uint32 273 | +--ro lsp-id? lsp-id 274 +---n if-state-change 275 | +--ro routing-protocol-name? -> 276 /rt:routing/control-plane-protocols/control-plane-protocol/name 277 | +--ro isis-level? level 278 | +--ro interface-name? if:interface-ref 279 | +--ro interface-level? level 280 | +--ro extended-circuit-id? extended-circuit-id 281 | +--ro state? if-state-type 282 +---n corrupted-lsp-detected 283 | +--ro routing-protocol-name? -> 284 /rt:routing/control-plane-protocols/control-plane-protocol/name 285 | +--ro isis-level? level 286 | +--ro lsp-id? lsp-id 287 +---n attempt-to-exceed-max-sequence 288 | +--ro routing-protocol-name? -> 289 /rt:routing/control-plane-protocols/control-plane-protocol/name 290 | +--ro isis-level? level 291 | +--ro lsp-id? lsp-id 292 +---n id-len-mismatch 293 | +--ro routing-protocol-name? -> 294 /rt:routing/control-plane-protocols/control-plane-protocol/name 295 | +--ro isis-level? level 296 | +--ro interface-name? if:interface-ref 297 | +--ro interface-level? level 298 | +--ro extended-circuit-id? extended-circuit-id 299 | +--ro pdu-field-len? uint8 300 | +--ro raw-pdu? binary 301 +---n max-area-addresses-mismatch 302 | +--ro routing-protocol-name? -> 303 /rt:routing/control-plane-protocols/control-plane-protocol/name 304 | +--ro isis-level? level 305 | +--ro interface-name? if:interface-ref 306 | +--ro interface-level? level 307 | +--ro extended-circuit-id? extended-circuit-id 308 | +--ro max-area-addresses? uint8 309 | +--ro raw-pdu? binary 310 +---n own-lsp-purge 311 | +--ro routing-protocol-name? -> 312 /rt:routing/control-plane-protocols/control-plane-protocol/name 313 | +--ro isis-level? level 314 | +--ro interface-name? if:interface-ref 315 | +--ro interface-level? level 316 | +--ro extended-circuit-id? extended-circuit-id 317 | +--ro lsp-id? lsp-id 318 +---n sequence-number-skipped 319 | +--ro routing-protocol-name? -> 320 /rt:routing/control-plane-protocols/control-plane-protocol/name 321 | +--ro isis-level? level 322 | +--ro interface-name? if:interface-ref 323 | +--ro interface-level? level 324 | +--ro extended-circuit-id? extended-circuit-id 325 | +--ro lsp-id? lsp-id 326 +---n authentication-type-failure 327 | +--ro routing-protocol-name? -> 328 /rt:routing/control-plane-protocols/control-plane-protocol/name 329 | +--ro isis-level? level 330 | +--ro interface-name? if:interface-ref 331 | +--ro interface-level? level 332 | +--ro extended-circuit-id? extended-circuit-id 333 | +--ro raw-pdu? binary 334 +---n authentication-failure 335 | +--ro routing-protocol-name? -> 336 /rt:routing/control-plane-protocols/control-plane-protocol/name 337 | +--ro isis-level? level 338 | +--ro interface-name? if:interface-ref 339 | +--ro interface-level? level 340 | +--ro extended-circuit-id? extended-circuit-id 341 | +--ro raw-pdu? binary 342 +---n version-skew 343 | +--ro routing-protocol-name? -> 344 /rt:routing/control-plane-protocols/control-plane-protocol/name 345 | +--ro isis-level? level 346 | +--ro interface-name? if:interface-ref 347 | +--ro interface-level? level 348 | +--ro extended-circuit-id? extended-circuit-id 349 | +--ro protocol-version? uint8 350 | +--ro raw-pdu? binary 351 +---n area-mismatch 352 | +--ro routing-protocol-name? -> 353 /rt:routing/control-plane-protocols/control-plane-protocol/name 354 | +--ro isis-level? level 355 | +--ro interface-name? if:interface-ref 356 | +--ro interface-level? level 357 | +--ro extended-circuit-id? extended-circuit-id 358 | +--ro raw-pdu? binary 359 +---n rejected-adjacency 360 | +--ro routing-protocol-name? -> 361 /rt:routing/control-plane-protocols/control-plane-protocol/name 362 | +--ro isis-level? level 363 | +--ro interface-name? if:interface-ref 364 | +--ro interface-level? level 365 | +--ro extended-circuit-id? extended-circuit-id 366 | +--ro raw-pdu? binary 367 | +--ro reason? string 368 +---n protocols-supported-mismatch 369 | +--ro routing-protocol-name? -> 370 /rt:routing/control-plane-protocols/control-plane-protocol/name 371 | +--ro isis-level? level 372 | +--ro interface-name? if:interface-ref 373 | +--ro interface-level? level 374 | +--ro extended-circuit-id? extended-circuit-id 375 | +--ro raw-pdu? binary 376 | +--ro protocols* uint8 377 +---n lsp-error-detected 378 | +--ro routing-protocol-name? -> 379 /rt:routing/control-plane-protocols/control-plane-protocol/name 380 | +--ro isis-level? level 381 | +--ro interface-name? if:interface-ref 382 | +--ro interface-level? level 383 | +--ro extended-circuit-id? extended-circuit-id 384 | +--ro lsp-id? lsp-id 385 | +--ro raw-pdu? binary 386 | +--ro error-offset? uint32 387 | +--ro tlv-type? uint8 388 +---n adjacency-state-change 389 | +--ro routing-protocol-name? -> 390 /rt:routing/control-plane-protocols/control-plane-protocol/name 391 | +--ro isis-level? level 392 | +--ro interface-name? if:interface-ref 393 | +--ro interface-level? level 394 | +--ro extended-circuit-id? extended-circuit-id 395 | +--ro neighbor? string 396 | +--ro neighbor-system-id? system-id 397 | +--ro state? adj-state-type 398 | +--ro reason? string 399 +---n lsp-received 400 | +--ro routing-protocol-name? -> 401 /rt:routing/control-plane-protocols/control-plane-protocol/name 402 | +--ro isis-level? level 403 | +--ro interface-name? if:interface-ref 404 | +--ro interface-level? level 405 | +--ro extended-circuit-id? extended-circuit-id 406 | +--ro lsp-id? lsp-id 407 | +--ro sequence? uint32 408 | +--ro received-timestamp? yang:timestamp 409 | +--ro neighbor-system-id? system-id 410 +---n lsp-generation 411 +--ro routing-protocol-name? -> 412 /rt:routing/control-plane-protocols/control-plane-protocol/name 413 +--ro isis-level? level 414 +--ro lsp-id? lsp-id 415 +--ro sequence? uint32 416 +--ro send-timestamp? yang:timestamp 418 2.1. IS-IS Configuration 420 The IS-IS configuration is divided in: 422 o Global parameters. 424 o Per interface configuration (see Section 2.4). 426 Additional modules may be created to support any additional 427 parameters. These additional modules MUST augment the ietf-isis 428 module. 430 The model implements features, thus some of the configuration 431 statement becomes optional. As an example, the ability to control 432 the administrative state of a particular IS-IS instance is optional. 433 By advertising the feature "admin-control", a device communicates to 434 the client that it supports the ability to shutdown a particular IS- 435 IS instance. 437 The global configuration contains usual IS-IS parameters such as lsp- 438 mtu, lsp-lifetime, lsp-refresh, default-metric... 440 2.2. Multitopology Parameters 442 The model supports multitopology (MT) IS-IS as defined in [RFC5120]. 444 The "topologies" container is used to enable support of MT 445 extensions. 447 The "name" used in the topology list should refer to an existing RIB 448 of the device. 450 Some specific parameters could be defined on a per topology basis 451 both at global level and at interface level: for example, an 452 interface metric can be defined per topology. 454 Multiple address families (like IPv4 or IPv6) can also be activated 455 within the default topology. This can be achieved using the "afs" 456 container (requiring "nlpid-control" feature to be advertised). 458 2.3. Per-Level Parameters 460 Some parameters allow a per level configuration. In this case, the 461 parameter is modeled as a container with three configuration 462 locations: 464 o a top level container: corresponds to level-1-2, so the 465 configuration applies to both levels. 467 o a level-1 container: corresponds to level-1 specific parameters. 469 o a level-2 container: corresponds to level-2 specific parameters. 471 +--rw priority 472 | +--rw value? uint8 473 | +--rw level-1 474 | | +--rw value? uint8 475 | +--rw level-2 476 | +--rw value? uint8 478 Example: 480 481 250 482 483 100 484 485 486 200 487 488 490 An implementation SHOULD prefer a level specific parameter over a 491 level-all parameter. As example, if the priority is 100 for the 492 level-1, 200 for the level-2 and 250 for the top level configuration, 493 the implementation should use 100 for the level-1 and 200 for the 494 level-2. 496 Some parameters like "overload bit" and "route preference" are not 497 modeled to support a per level configuration. If an implementation 498 supports per level configuration for such parameter, this 499 implementation SHOULD augment the current model by adding both 500 level-1 and level-2 containers and SHOULD reuse existing 501 configuration groupings. 503 Example of augmentation: 505 augment "/rt:routing/" + 506 "rt:control-plane-protocols/rt:control-plane-protocol"+ 507 "/isis:isis/isis:overload" { 508 when "rt:type = 'isis:isis'" { 509 description 510 "This augment IS-IS routing protocol when used"; 511 } 512 description 513 "This augments IS-IS overload configuration 514 with per level configuration."; 516 container level-1 { 517 uses isis:overload-global-cfg; 518 description 519 "Level 1 configuration."; 520 } 521 container level-2 { 522 uses isis:overload-global-cfg; 523 description 524 "Level 2 configuration."; 525 } 526 } 528 If an implementation does not support per level configuration for a 529 parameter modeled with per level configuration, the implementation 530 SHOULD advertise a deviation to announce the non support of the 531 level-1 and level-2 containers. 533 Finally, if an implementation supports per level configuration but 534 does not support the level-1-2 configuration, it SHOULD also 535 advertise a deviation. 537 2.4. Per-Interface Parameters 539 The per-interface section of the IS-IS instance describes the 540 interface specific parameters. 542 The interface is modeled as a reference to an existing interface 543 defined in the "ietf-interfaces" YANG model ([RFC8343]. 545 Each interface has some interface-specific parameters that may have a 546 different per level value as described in previous section. An 547 interface-specific parameter always override an IS-IS global 548 parameter. 550 Some parameters like hello-padding are defined as containers to allow 551 easy extension by vendor specific modules. 553 +--rw interfaces 554 +--rw interface* [name] 555 +--rw name if:interface-ref 556 +--rw level-type? level 557 +--rw lsp-pacing-interval? 558 rt-types:timer-value-milliseconds 559 +--rw lsp-retransmit-interval? 560 rt-types:timer-value-seconds16 561 +--rw passive? boolean 562 +--rw csnp-interval? 563 rt-types:timer-value-seconds16 564 +--rw hello-padding 565 | +--rw enable? boolean 566 +--rw mesh-group-enable? mesh-group-state 567 +--rw mesh-group? uint8 568 +--rw interface-type? interface-type 569 +--rw enable? boolean {admin-control}? 570 +--rw tag* uint32 {prefix-tag}? 571 +--rw tag64* uint64 {prefix-tag64}? 572 +--rw node-flag? boolean {node-flag}? 573 +--rw hello-authentication 574 | +--rw (authentication-type)? 575 | | +--:(key-chain) {key-chain}? 576 | | | +--rw key-chain? key-chain:key-chain-ref 577 | | +--:(password) 578 | | +--rw key? string 579 | | +--rw crypto-algorithm? identityref 580 | +--rw level-1 581 | | +--rw (authentication-type)? 582 | | +--:(key-chain) {key-chain}? 583 | | | +--rw key-chain? 584 key-chain:key-chain-ref 585 | | +--:(password) 586 | | +--rw key? string 587 | | +--rw crypto-algorithm? identityref 588 | +--rw level-2 589 | +--rw (authentication-type)? 590 | +--:(key-chain) {key-chain}? 591 | | +--rw key-chain? 592 key-chain:key-chain-ref 593 | +--:(password) 594 | +--rw key? string 595 | +--rw crypto-algorithm? identityref 596 +--rw hello-interval 597 | +--rw value? rt-types:timer-value-seconds16 598 | +--rw level-1 599 | | +--rw value? rt-types:timer-value-seconds16 600 | +--rw level-2 601 | +--rw value? rt-types:timer-value-seconds16 602 +--rw hello-multiplier 603 | +--rw value? uint16 604 | +--rw level-1 605 | | +--rw value? uint16 606 | +--rw level-2 607 | +--rw value? uint16 608 +--rw priority 609 | +--rw value? uint8 610 | +--rw level-1 611 | | +--rw value? uint8 612 | +--rw level-2 613 | +--rw value? uint8 614 +--rw metric 615 | +--rw value? wide-metric 616 | +--rw level-1 617 | | +--rw value? wide-metric 618 | +--rw level-2 619 | +--rw value? wide-metric 620 +--rw bfd {bfd}? 621 | +--rw enable? boolean 622 | +--rw local-multiplier? multiplier 623 | +--rw (interval-config-type)? 624 | +--:(tx-rx-intervals) 625 | | +--rw desired-min-tx-interval? uint32 626 | | +--rw required-min-rx-interval? uint32 627 | +--:(single-interval) {single-minimum-interval}? 628 | +--rw min-interval? uint32 629 +--rw address-families {nlpid-control}? 630 | +--rw address-family-list* [address-family] 631 | +--rw address-family iana-rt-types:address-family 632 +--rw mpls 633 | +--rw ldp 634 | +--rw igp-sync? boolean {ldp-igp-sync}? 635 +--rw fast-reroute {fast-reroute}? 636 | +--rw lfa {lfa}? 637 | +--rw candidate-enable? boolean 638 | +--rw enable? boolean 639 | +--rw remote-lfa {remote-lfa}? 640 | | +--rw enable? boolean 641 | +--rw level-1 642 | | +--rw candidate-enable? boolean 643 | | +--rw enable? boolean 644 | | +--rw remote-lfa {remote-lfa}? 645 | | +--rw enable? boolean 646 | +--rw level-2 647 | +--rw candidate-enable? boolean 648 | +--rw enable? boolean 649 | +--rw remote-lfa {remote-lfa}? 650 | +--rw enable? boolean 651 +--ro adjacencies 652 | +--ro adjacency* [] 653 | +--ro neighbor-sys-type? level 654 | +--ro neighbor-sysid? system-id 655 | +--ro neighbor-extended-circuit-id? 656 extended-circuit-id 657 | +--ro neighbor-snpa? snpa 658 | +--ro usage? level 659 | +--ro hold-timer? 660 rt-types:timer-value-seconds16 661 | +--ro neighbor-priority? uint8 662 | +--ro lastuptime? yang:timestamp 663 | +--ro state? adj-state-type 664 +--ro event-counters 665 | +--ro adjacency-changes? uint32 666 | +--ro adjacency-number? uint32 667 | +--ro init-fails? uint32 668 | +--ro adjacency-rejects? uint32 669 | +--ro id-len-mismatch? uint32 670 | +--ro max-area-addresses-mismatch? uint32 671 | +--ro authentication-type-fails? uint32 672 | +--ro authentication-fails? uint32 673 | +--ro lan-dis-changes? uint32 674 +--ro packet-counters 675 | +--ro level* [level] 676 | +--ro level level-number 677 | +--ro iih 678 | | +--ro in? uint32 679 | | +--ro out? uint32 680 | +--ro ish 681 | | +--ro in? uint32 682 | | +--ro out? uint32 683 | +--ro esh 684 | | +--ro in? uint32 685 | | +--ro out? uint32 686 | +--ro lsp 687 | | +--ro in? uint32 688 | | +--ro out? uint32 689 | +--ro psnp 690 | | +--ro in? uint32 691 | | +--ro out? uint32 692 | +--ro csnp 693 | | +--ro in? uint32 694 | | +--ro out? uint32 695 | +--ro unknown 696 | +--ro in? uint32 697 | +--ro out? uint32 698 +--rw topologies {multi-topology}? 699 +--rw topology* [name] 700 +--rw name -> 701 ../../../../../../../../rt:ribs/rib/name 702 +--rw metric 703 +--rw value? wide-metric 704 +--rw level-1 705 | +--rw value? wide-metric 706 +--rw level-2 707 +--rw value? wide-metric 709 rpcs: 710 +---x clear-adjacency 711 | +---w input 712 | +---w routing-protocol-instance-name -> 713 /rt:routing/control-plane-protocols/control-plane-protocol/name 714 | +---w level? level 715 | +---w interface? if:interface-ref 716 +---x clear-database 717 +---w input 718 +---w routing-protocol-instance-name -> 719 /rt:routing/control-plane-protocols/control-plane-protocol/name 720 +---w level? level 722 notifications: 723 +---n database-overload 724 | +--ro routing-protocol-name? -> 725 /rt:routing/control-plane-protocols/control-plane-protocol/name 726 | +--ro isis-level? level 727 | +--ro overload? enumeration 728 +---n lsp-too-large 729 | +--ro routing-protocol-name? -> 730 /rt:routing/control-plane-protocols/control-plane-protocol/name 731 | +--ro isis-level? level 732 | +--ro interface-name? if:interface-ref 733 | +--ro interface-level? level 734 | +--ro extended-circuit-id? extended-circuit-id 735 | +--ro pdu-size? uint32 736 | +--ro lsp-id? lsp-id 737 +---n if-state-change 738 | +--ro routing-protocol-name? -> 739 /rt:routing/control-plane-protocols/control-plane-protocol/name 740 | +--ro isis-level? level 741 | +--ro interface-name? if:interface-ref 742 | +--ro interface-level? level 743 | +--ro extended-circuit-id? extended-circuit-id 744 | +--ro state? if-state-type 745 +---n corrupted-lsp-detected 746 | +--ro routing-protocol-name? -> 747 /rt:routing/control-plane-protocols/control-plane-protocol/name 748 | +--ro isis-level? level 749 | +--ro lsp-id? lsp-id 750 +---n attempt-to-exceed-max-sequence 751 | +--ro routing-protocol-name? -> 752 /rt:routing/control-plane-protocols/control-plane-protocol/name 753 | +--ro isis-level? level 754 | +--ro lsp-id? lsp-id 755 +---n id-len-mismatch 756 | +--ro routing-protocol-name? -> 757 /rt:routing/control-plane-protocols/control-plane-protocol/name 758 | +--ro isis-level? level 759 | +--ro interface-name? if:interface-ref 760 | +--ro interface-level? level 761 | +--ro extended-circuit-id? extended-circuit-id 762 | +--ro pdu-field-len? uint8 763 | +--ro raw-pdu? binary 764 +---n max-area-addresses-mismatch 765 | +--ro routing-protocol-name? -> 766 /rt:routing/control-plane-protocols/control-plane-protocol/name 767 | +--ro isis-level? level 768 | +--ro interface-name? if:interface-ref 769 | +--ro interface-level? level 770 | +--ro extended-circuit-id? extended-circuit-id 771 | +--ro max-area-addresses? uint8 772 | +--ro raw-pdu? binary 773 +---n own-lsp-purge 774 | +--ro routing-protocol-name? -> 775 /rt:routing/control-plane-protocols/control-plane-protocol/name 776 | +--ro isis-level? level 777 | +--ro interface-name? if:interface-ref 778 | +--ro interface-level? level 779 | +--ro extended-circuit-id? extended-circuit-id 780 | +--ro lsp-id? lsp-id 781 +---n sequence-number-skipped 782 | +--ro routing-protocol-name? -> 783 /rt:routing/control-plane-protocols/control-plane-protocol/name 784 | +--ro isis-level? level 785 | +--ro interface-name? if:interface-ref 786 | +--ro interface-level? level 787 | +--ro extended-circuit-id? extended-circuit-id 788 | +--ro lsp-id? lsp-id 789 +---n authentication-type-failure 790 | +--ro routing-protocol-name? -> 791 /rt:routing/control-plane-protocols/control-plane-protocol/name 792 | +--ro isis-level? level 793 | +--ro interface-name? if:interface-ref 794 | +--ro interface-level? level 795 | +--ro extended-circuit-id? extended-circuit-id 796 | +--ro raw-pdu? binary 797 +---n authentication-failure 798 | +--ro routing-protocol-name? -> 799 /rt:routing/control-plane-protocols/control-plane-protocol/name 800 | +--ro isis-level? level 801 | +--ro interface-name? if:interface-ref 802 | +--ro interface-level? level 803 | +--ro extended-circuit-id? extended-circuit-id 804 | +--ro raw-pdu? binary 805 +---n version-skew 806 | +--ro routing-protocol-name? -> 807 /rt:routing/control-plane-protocols/control-plane-protocol/name 808 | +--ro isis-level? level 809 | +--ro interface-name? if:interface-ref 810 | +--ro interface-level? level 811 | +--ro extended-circuit-id? extended-circuit-id 812 | +--ro protocol-version? uint8 813 | +--ro raw-pdu? binary 814 +---n area-mismatch 815 | +--ro routing-protocol-name? -> 816 /rt:routing/control-plane-protocols/control-plane-protocol/name 817 | +--ro isis-level? level 818 | +--ro interface-name? if:interface-ref 819 | +--ro interface-level? level 820 | +--ro extended-circuit-id? extended-circuit-id 821 | +--ro raw-pdu? binary 822 +---n rejected-adjacency 823 | +--ro routing-protocol-name? -> 824 /rt:routing/control-plane-protocols/control-plane-protocol/name 825 | +--ro isis-level? level 826 | +--ro interface-name? if:interface-ref 827 | +--ro interface-level? level 828 | +--ro extended-circuit-id? extended-circuit-id 829 | +--ro raw-pdu? binary 830 | +--ro reason? string 831 +---n protocols-supported-mismatch 832 | +--ro routing-protocol-name? -> 833 /rt:routing/control-plane-protocols/control-plane-protocol/name 834 | +--ro isis-level? level 835 | +--ro interface-name? if:interface-ref 836 | +--ro interface-level? level 837 | +--ro extended-circuit-id? extended-circuit-id 838 | +--ro raw-pdu? binary 839 | +--ro protocols* uint8 840 +---n lsp-error-detected 841 | +--ro routing-protocol-name? -> 842 /rt:routing/control-plane-protocols/control-plane-protocol/name 843 | +--ro isis-level? level 844 | +--ro interface-name? if:interface-ref 845 | +--ro interface-level? level 846 | +--ro extended-circuit-id? extended-circuit-id 847 | +--ro lsp-id? lsp-id 848 | +--ro raw-pdu? binary 849 | +--ro error-offset? uint32 850 | +--ro tlv-type? uint8 851 +---n adjacency-state-change 852 | +--ro routing-protocol-name? -> 853 /rt:routing/control-plane-protocols/control-plane-protocol/name 854 | +--ro isis-level? level 855 | +--ro interface-name? if:interface-ref 856 | +--ro interface-level? level 857 | +--ro extended-circuit-id? extended-circuit-id 858 | +--ro neighbor? string 859 | +--ro neighbor-system-id? system-id 860 | +--ro state? adj-state-type 861 | +--ro reason? string 862 +---n lsp-received 863 | +--ro routing-protocol-name? -> 864 /rt:routing/control-plane-protocols/control-plane-protocol/name 865 | +--ro isis-level? level 866 | +--ro interface-name? if:interface-ref 867 | +--ro interface-level? level 868 | +--ro extended-circuit-id? extended-circuit-id 869 | +--ro lsp-id? lsp-id 870 | +--ro sequence? uint32 871 | +--ro received-timestamp? yang:timestamp 872 | +--ro neighbor-system-id? system-id 873 +---n lsp-generation 874 +--ro routing-protocol-name? -> 875 /rt:routing/control-plane-protocols/control-plane-protocol/name 876 +--ro isis-level? level 877 +--ro lsp-id? lsp-id 878 +--ro sequence? uint32 879 +--ro send-timestamp? yang:timestamp 881 2.5. Authentication Parameters 883 The module enables authentication configuration through the IETF key- 884 chain module ([RFC8177]). The IS-IS module imports the "ietf-key- 885 chain" module and reuses some groupings to allow global and per 886 interface configuration of authentication. If a global 887 authentication is configured, an implementation SHOULD authenticate 888 PSNPs (Partial Sequence Number Packets), CSNPs (Complete Sequence 889 Number Packets) and LSPs (Link State Packets) with the authentication 890 parameters supplied. The authentication of HELLO PDUs (Protocol Data 891 Units) can be activated on a per interface basis. 893 2.6. IGP/LDP synchronization 895 [RFC5443] defines a mechanism where IGP (Interior Gateway Protocol) 896 needs to be synchronized with LDP (Label Distribution Protocol). An 897 "ldp-igp-sync" feature has been defined in the model to support this 898 mechanism. The "mpls/ldp/igp-sync" leaf under "interface" allows 899 activation of the mechanism on a per interface basis. The "mpls/ldp/ 900 igp-sync" container in the global configuration is empty on purpose 901 and is not required for the activation. The goal of this empty 902 container is to allow easy augmentation with additional parameters 903 like timers for example. 905 2.7. ISO parameters 907 As IS-IS protocol is based on ISO protocol suite, some ISO parameters 908 may be required. 910 This module augments interface configuration model to support ISO 911 configuration parameters. 913 The clns-mtu can be defined under the interface. 915 2.8. IP FRR 917 This YANG module supports LFA (Loop Free Alternates) ([RFC5286]) and 918 remote LFA ([RFC7490]) as IP FRR techniques. The "fast-reroute" 919 container may be augmented by other models to support other IPFRR 920 flavors (MRT, TILFA ...). 922 The current version of the model supports activation of LFA and 923 remote LFA at interface only. The global "lfa" container is present 924 but kept empty to allow augmentation with vendor specific properties 925 like policies. 927 Remote LFA is considered as a child of LFA. Remote LFA cannot be 928 enabled if LFA is not enabled. 930 The "candidate-disabled" allows to mark an interface to not be used 931 as a backup. 933 2.9. Operational States 935 Operational states are provided in the module in various places: 937 o system-counters: provides statistical informations about the 938 global system. 940 o interface : provides configuration state informations for each 941 interface. 943 o adjacencies: provides state informations about current IS-IS 944 adjacencies. 946 o spf-log: provides informations about SPF events on the node. This 947 SHOULD be implemented as a wrapping buffer. 949 o lsp-log: provides informations about LSP events on the node 950 (reception of an LSP or modification of local LSP). This SHOULD 951 be implemented as a wrapping buffer and an implementation MAY 952 decide to log refresh LSPs or not. 954 o local-rib: provides the IS-IS internal routing table view. 956 o database: provides details on the current LSDB. 958 o hostnames: provides informations about system-id to hostname 959 mappings (as defined in [RFC5301]). 961 o fast-reroute: provides informations about IP FRR. 963 3. RPC Operations 965 The "ietf-isis" module defines two RPC operations: 967 o clear-database: reset the content of a particular IS-IS database 968 and restart database synchronization with the neighbors. 970 o clear-adjacency: restart a particular set of IS-IS adjacencies. 972 4. Notifications 974 The "ietf-isis" module introduces some notifications : 976 database-overload: raised when overload condition is changed. 978 lsp-too-large: raised when the system tries to propagate a too 979 large PDU. 981 if-state-change: raised when the state of an interface changes. 983 corrupted-lsp-detected: raised when the system finds that an LSP 984 that was stored in memory has become corrupted. 986 attempt-to-exceed-max-sequence: This notification is sent when the 987 system wraps the 32-bit sequence counter of an LSP. 989 id-len-mismatch: This notification is sent when we receive a PDU 990 with a different value for the System ID length. 992 max-area-addresses-mismatch: This notification is sent when we 993 receive a PDU with a different value for the Maximum Area 994 Addresses. 996 own-lsp-purge: This notification is sent when the system receives 997 a PDU with its own system ID and zero age. 999 sequence-number-skipped: This notification is sent when the system 1000 receives a PDU with its own system ID and different contents. The 1001 system has to reissue the LSP with a higher sequence number. 1003 authentication-type-failure: This notification is sent when the 1004 system receives a PDU with the wrong authentication type field. 1006 authentication-failure: This notification is sent when the system 1007 receives a PDU with the wrong authentication information. 1009 version-skew: This notification is sent when the system receives a 1010 PDU with a different protocol version number. 1012 area-mismatch: This notification is sent when the system receives 1013 a Hello PDU from an IS that does not share any area address. 1015 rejected-adjacency: This notification is sent when the system 1016 receives a Hello PDU from an IS but does not establish an 1017 adjacency for some reason. 1019 protocols-supported-mismatch: This notification is sent when the 1020 system receives a non pseudonode LSP that has no matching protocol 1021 supported. 1023 lsp-error-detected: This notification is sent when the system 1024 receives a LSP with a parse error. 1026 adjacency-state-change: This notification is sent when an IS-IS 1027 adjacency moves to Up state or to Down state. 1029 lsp-received: This notification is sent when a LSP is received. 1031 lsp-generation: This notification is sent when a LSP is 1032 regenerated. 1034 5. Interaction with Other YANG Modules 1036 The "isis" container augments the "/rt:routing/rt:control-plane- 1037 protocols/control-plane-protocol" container of the ietf-routing 1038 [RFC8349] module by defining IS-IS specific parameters. 1040 The "isis" module augments "/if:interfaces/if:interface" defined by 1041 [RFC8343] with ISO specific parameters. 1043 The "isis" operational state container augments the "/rt:routing- 1044 state/rt:control-plane-protocols/control-plane-protocol" container of 1045 the ietf-routing module by defining IS-IS specific operational 1046 states. 1048 Some IS-IS specific routes attributes are added to route objects of 1049 the ietf-routing module by augmenting "/rt:routing- 1050 state/rt:ribs/rt:rib/rt:routes/rt:route". 1052 The modules defined in this document use some groupings from ietf- 1053 keychain [RFC8177]. 1055 The module reuses types from [RFC6991] and [RFC8294]. 1057 To support BFD for fast detection, the module relies on 1058 [I-D.ietf-bfd-yang]. 1060 6. IS-IS YANG Module 1062 The following RFCs, drafts and external standards are not referenced 1063 in the document text but are referenced in the ietf-isis.yang module: 1064 [ISO-10589], [RFC1195], [RFC5029], [RFC5130], [RFC5305], [RFC5306], 1065 [RFC5308], [RFC5880], [RFC5881], [RFC6119], [RFC6232], [RFC7794], 1066 [RFC7810], [RFC7917], [RFC8405]. 1068 file "ietf-isis@2019-01-21.yang" 1070 module ietf-isis { 1071 yang-version 1.1; 1072 namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; 1074 prefix isis; 1075 import ietf-routing { 1076 prefix "rt"; 1077 reference "RFC 8349 - A YANG Data Model for Routing 1078 Management (NMDA Version)"; 1079 } 1081 import ietf-inet-types { 1082 prefix inet; 1083 reference "RFC 6991 - Common YANG Data Types"; 1084 } 1086 import ietf-yang-types { 1087 prefix yang; 1088 reference "RFC 6991 - Common YANG Data Types"; 1089 } 1091 import ietf-interfaces { 1092 prefix "if"; 1093 reference "RFC 8343 - A YANG Data Model for Interface 1094 Management (NDMA Version)"; 1095 } 1097 import ietf-key-chain { 1098 prefix "key-chain"; 1099 reference "RFC 8177 - YANG Data Model for Key Chains"; 1100 } 1102 import ietf-routing-types { 1103 prefix "rt-types"; 1104 reference "RFC 8294 - Common YANG Data Types for the 1105 Routing Area"; 1106 } 1108 import iana-routing-types { 1109 prefix "iana-rt-types"; 1110 reference "RFC 8294 - Common YANG Data Types for the 1111 Routing Area"; 1112 } 1114 import ietf-bfd-types { 1115 prefix "bfd-types"; 1116 reference "RFC YYYY - YANG Data Model for Bidirectional 1117 Forwarding Detection (BFD). 1119 -- Note to RFC Editor Please replace YYYY with published RFC number for 1120 draft-ietf-bfd-yang."; 1122 } 1123 organization 1124 "IETF LSR Working Group"; 1126 contact 1127 "WG List: <mailto:lsr@ietf.org> 1129 Editor: Stephane Litkowski 1130 <mailto:stephane.litkowski@orange.com> 1132 Derek Yeung 1133 <mailto:derek@arrcus.com> 1134 Acee Lindem 1135 <mailto:acee@cisco.com> 1136 Jeffrey Zhang 1137 <mailto:zzhang@juniper.net> 1138 Ladislav Lhotka 1139 <mailto:llhotka@nic.cz> 1140 Yi Yang 1141 <mailto:yiya@cisco.com> 1142 Dean Bogdanovic 1143 <mailto:deanb@juniper.net> 1144 Kiran Agrahara Sreenivasa 1145 <mailto:kkoushik@brocade.com> 1146 Yingzhen Qu 1147 <mailto:yiqu@cisco.com> 1148 Jeff Tantsura 1149 <mailto:jefftant.ietf@gmail.com> 1151 "; 1153 description 1154 "This YANG module defines the generic configuration and 1155 operational state for the IS-IS protocol. 1156 It is intended that the module 1157 will be extended by vendors to define vendor-specific 1158 IS-IS configuration parameters and policies, 1159 for example route maps or route policies. 1161 This YANG module conforms to the Network Management 1162 Datastore Architecture (NDMA) as described in RFC 8242. 1164 Copyright (c) 2018 IETF Trust and the persons identified as 1165 authors of the code. All rights reserved. 1167 Redistribution and use in source and binary forms, with or 1168 without modification, is permitted pursuant to, and subject 1169 to the license terms contained in, the Simplified BSD License 1170 set forth in Section 4.c of the IETF Trust's Legal Provisions 1171 Relating to IETF Documents 1172 (http://trustee.ietf.org/license-info). 1174 This version of this YANG module is part of RFC XXXX; 1175 see the RFC itself for full legal notices. 1177 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 1178 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 1179 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document 1180 are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] 1181 when, and only when, they appear in all capitals, as shown here. 1182 "; 1184 revision 2019-01-21 { 1185 description 1186 "Initial revision."; 1187 reference "RFC XXXX"; 1188 } 1190 /* Identities */ 1192 identity isis { 1193 base rt:routing-protocol; 1194 description "Identity for the IS-IS routing protocol."; 1195 } 1197 identity lsp-log-reason { 1198 description "Base identity for an LSP change log reason."; 1199 } 1201 identity refresh { 1202 base lsp-log-reason; 1203 description 1204 "Identity used when the LSP log reason is 1205 a refresh LSP received."; 1206 } 1208 identity content-change { 1209 base lsp-log-reason; 1210 description 1211 "Identity used when the LSP log reason is 1212 a change in the content of the LSP."; 1213 } 1215 /* Feature definitions */ 1217 feature poi-tlv { 1218 description "Support of Purge Originator Identification."; 1219 reference "RFC 6232 - Purge Originator Identification TLV 1220 for IS-IS"; 1221 } 1222 feature ietf-spf-delay { 1223 description 1224 "Support for IETF SPF delay algorithm."; 1225 reference "RFC 8405 - SPF Back-off algorithm for link 1226 state IGPs"; 1227 } 1228 feature bfd { 1229 description 1230 "Support for BFD detection of IS-IS neighbor reachability."; 1231 reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) 1232 RFC 5881 - Bidirectional Forwarding Detection 1233 (BFD) for IPv4 and IPv6 (Single Hop)"; 1234 } 1235 feature key-chain { 1236 description 1237 "Support of keychain for authentication."; 1238 reference "RFC8177 - YANG Data Model for Key Chains"; 1239 } 1240 feature node-flag { 1241 description 1242 "Support for node-flag for IS-IS prefixes."; 1243 reference "RFC7794 - IS-IS Prefix Attributes for 1244 Extended IP and IPv6 Reachability"; 1245 } 1246 feature node-tag { 1247 description 1248 "Support for node admin tag for IS-IS routing instances."; 1249 reference "RFC7917 - Advertising Node Administrative Tags 1250 in IS-IS"; 1251 } 1252 feature ldp-igp-sync { 1253 description 1254 "LDP IGP synchronization."; 1255 reference "RFC5443 - LDP IGP Synchronization."; 1256 } 1257 feature fast-reroute { 1258 description 1259 "Support for IP Fast Reroute (IP-FRR)."; 1260 } 1261 feature nsr { 1262 description 1263 "Non-Stop-Routing (NSR) support."; 1264 } 1265 feature lfa { 1266 description 1267 "Support for Loop-Free Alternates (LFAs)."; 1268 reference "RFC5286 - Basic Specification of IP Fast-Reroute: 1269 Loop-free Alternates"; 1270 } 1271 feature remote-lfa { 1272 description 1273 "Support for Remote Loop-Free Alternates (R-LFAs)."; 1274 reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute"; 1275 } 1277 feature overload-max-metric { 1278 description 1279 "Support of overload by setting 1280 all links to max metric."; 1281 } 1282 feature prefix-tag { 1283 description 1284 "Support for 32-bit prefix tags"; 1285 reference "RFC5130 - A Policy Control Mechanism in 1286 IS-IS Using Administrative Tags"; 1287 } 1288 feature prefix-tag64 { 1289 description 1290 "Support for 64-bit prefix tags"; 1291 reference "RFC5130 - A Policy Control Mechanism in 1292 IS-IS Using Administrative Tags"; 1293 } 1294 feature auto-cost { 1295 description 1296 "Calculate IS-IS interface metric according to 1297 reference bandwidth."; 1298 } 1300 feature te-rid { 1301 description 1302 "Traffic-Engineering Router-ID."; 1303 reference "RFC5305 - IS-IS Extensions for Traffic Engineering 1304 RFC6119 - IPv6 Traffic Engineering in IS-IS"; 1305 } 1306 feature max-ecmp { 1307 description 1308 "Setting maximum number of ECMP paths."; 1309 } 1310 feature multi-topology { 1311 description 1312 "Support for Multiple-Topology Routing (MTR)."; 1313 reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS"; 1315 } 1316 feature nlpid-control { 1317 description 1318 "This feature controls the advertisement 1319 of support NLPID within IS-IS configuration."; 1320 } 1321 feature graceful-restart { 1322 description 1323 "IS-IS Graceful restart support."; 1324 reference "RFC5306 - Restart Signaling in IS-IS"; 1325 } 1327 feature lsp-refresh { 1328 description 1329 "Configuration of LSP refresh interval."; 1330 } 1332 feature maximum-area-addresses { 1333 description 1334 "Support of maximum-area-addresses config."; 1335 } 1337 feature admin-control { 1338 description 1339 "Administrative control of the protocol state."; 1340 } 1342 /* Type definitions */ 1344 typedef circuit-id { 1345 type uint8; 1346 description 1347 "This type defines the circuit ID 1348 associated with an interface."; 1349 } 1351 typedef extended-circuit-id { 1352 type uint32; 1353 description 1354 "This type defines the extended circuit ID 1355 associated with an interface."; 1356 } 1358 typedef interface-type { 1359 type enumeration { 1360 enum broadcast { 1361 description 1362 "Broadcast interface type."; 1364 } 1365 enum point-to-point { 1366 description 1367 "Point-to-point interface type."; 1368 } 1369 } 1370 description 1371 "This type defines the type of adjacency 1372 to be established on the interface. 1373 The interface-type determines the type 1374 of hello message that is used."; 1376 } 1378 typedef level { 1379 type enumeration { 1380 enum "level-1" { 1381 description 1382 "This enum indicates L1-only capability."; 1383 } 1384 enum "level-2" { 1385 description 1386 "This enum indicates L2-only capability."; 1387 } 1388 enum "level-all" { 1389 description 1390 "This enum indicates capability for both levels."; 1391 } 1392 } 1393 default "level-all"; 1394 description 1395 "This type defines IS-IS level of an object."; 1397 } 1399 typedef adj-state-type { 1400 type enumeration { 1401 enum "up" { 1402 description 1403 "State indicates the adjacency is established."; 1404 } 1405 enum "down" { 1406 description 1407 "State indicates the adjacency is NOT established."; 1408 } 1409 enum "init" { 1410 description 1411 "State indicates the adjacency is establishing."; 1413 } 1414 enum "failed" { 1415 description 1416 "State indicates the adjacency is failed."; 1417 } 1418 } 1419 description 1420 "This type defines states of an adjacency"; 1421 } 1423 typedef if-state-type { 1424 type enumeration { 1425 enum "up" { 1426 description "Up state."; 1428 } 1429 enum "down" { 1430 description "Down state"; 1431 } 1432 } 1433 description 1434 "This type defines the state of an interface"; 1435 } 1437 typedef level-number { 1438 type uint8 { 1439 range "1 .. 2"; 1440 } 1441 description 1442 "This type defines the current IS-IS level."; 1443 } 1445 typedef lsp-id { 1446 type string { 1447 pattern 1448 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' 1449 +'{4}\.[0-9][0-9]-[0-9][0-9]'; 1450 } 1451 description 1452 "This type defines the IS-IS LSP ID format using a 1453 pattern. An example LSP ID is 0143.0438.AEF0.02-01"; 1454 } 1456 typedef area-address { 1457 type string { 1458 pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}'; 1459 } 1460 description 1461 "This type defines the area address format."; 1462 } 1464 typedef snpa { 1465 type string { 1466 length "0 .. 20"; 1467 } 1468 description 1469 "This type defines the Subnetwork Point 1470 of Attachement (SNPA) format. 1471 The SNPA should be encoded according to the rules 1472 specified for the particular type of subnetwork 1473 being used. As an example, for an ethernet subnetwork, 1474 the SNPA is encoded as a MAC address like 00aa.bbcc.ddee"; 1475 } 1477 typedef system-id { 1478 type string { 1479 pattern 1480 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; 1481 } 1482 description 1483 "This type defines IS-IS system-id using pattern, 1484 An example system-id is 0143.0438.AEF0"; 1485 } 1486 typedef extended-system-id { 1487 type string { 1488 pattern 1489 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9][0-9]'; 1490 } 1491 description 1492 "This type defines IS-IS system-id using pattern. The extended 1493 system-id contains the pseudonode number in addition to the 1494 system-id. 1495 An example system-id is 0143.0438.AEF0.00"; 1496 } 1498 typedef wide-metric { 1499 type uint32 { 1500 range "0 .. 16777215"; 1501 } 1502 description 1503 "This type defines wide style format of IS-IS metric."; 1504 } 1506 typedef std-metric { 1507 type uint8 { 1508 range "0 .. 63"; 1510 } 1511 description 1512 "This type defines old style format of IS-IS metric."; 1513 } 1515 typedef mesh-group-state { 1516 type enumeration { 1517 enum "mesh-inactive" { 1518 description 1519 "Interface is not part of a mesh group."; 1520 } 1521 enum "mesh-set" { 1522 description 1523 "Interface is part of a mesh group."; 1524 } 1525 enum "mesh-blocked" { 1526 description 1527 "LSPs must not be flooded over this interface."; 1528 } 1529 } 1530 description 1531 "This type describes mesh group state of an interface"; 1532 } 1534 /* Grouping for notifications */ 1536 grouping notification-instance-hdr { 1537 description 1538 "Instance specific IS-IS notification data grouping"; 1539 leaf routing-protocol-name { 1540 type leafref { 1541 path "/rt:routing/rt:control-plane-protocols/" 1542 + "rt:control-plane-protocol/rt:name"; 1543 } 1544 description "Name of the IS-IS instance."; 1545 } 1546 leaf isis-level { 1547 type level; 1548 description "IS-IS level of the instance."; 1549 } 1550 } 1552 grouping notification-interface-hdr { 1553 description 1554 "Interface specific IS-IS notification data grouping"; 1555 leaf interface-name { 1556 type if:interface-ref; 1557 description "IS-IS interface name"; 1559 } 1560 leaf interface-level { 1561 type level; 1562 description "IS-IS level of the interface."; 1563 } 1564 leaf extended-circuit-id { 1565 type extended-circuit-id; 1566 description "Eextended circuit-id of the interface."; 1567 } 1568 } 1570 /* Groupings for IP Fast Reroute */ 1572 grouping instance-fast-reroute-config { 1573 description 1574 "This group defines global configuration of IP 1575 Fast ReRoute (FRR)."; 1576 container fast-reroute { 1577 if-feature fast-reroute; 1578 description 1579 "This container may be augmented with global 1580 parameters for IP-FRR."; 1581 container lfa { 1582 if-feature lfa; 1583 description 1584 "This container may be augmented with 1585 global parameters for Loop-Free Alternatives (LFA). 1586 Container creation has no effect on LFA activation."; 1587 } 1588 } 1589 } 1591 grouping interface-lfa-config { 1592 leaf candidate-enable { 1593 type boolean; 1594 default true; 1595 description 1596 "Enable the interface to be used as backup."; 1597 } 1598 leaf enable { 1599 type boolean; 1600 default false; 1601 description 1602 "Activates LFA - Per-prefix LFA computation 1603 is assumed."; 1604 } 1605 container remote-lfa { 1606 if-feature remote-lfa; 1607 leaf enable { 1608 type boolean; 1609 default false; 1610 description 1611 "Activates Remote LFA (R-LFA)."; 1612 } 1613 description 1614 "Remote LFA configuration."; 1615 } 1616 description "Grouping for LFA interface configuration"; 1617 } 1618 grouping interface-fast-reroute-config { 1619 description 1620 "This group defines interface configuration of IP-FRR."; 1621 container fast-reroute { 1622 if-feature fast-reroute; 1623 container lfa { 1624 if-feature lfa; 1625 uses interface-lfa-config; 1626 container level-1 { 1627 uses interface-lfa-config; 1628 description 1629 "LFA level 1 config"; 1630 } 1631 container level-2 { 1632 uses interface-lfa-config; 1633 description 1634 "LFA level 2 config"; 1635 } 1636 description 1637 "LFA configuration."; 1638 } 1639 description 1640 "Interface IP Fast-reroute configuration."; 1641 } 1642 } 1643 grouping instance-fast-reroute-state { 1644 description "IPFRR state data grouping"; 1645 container protected-routes { 1646 config false; 1647 list address-family-stats { 1648 key "address-family prefix alternate"; 1650 leaf address-family { 1651 type iana-rt-types:address-family; 1652 description 1653 "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."; 1700 } 1701 leaf best { 1702 type boolean; 1703 description 1704 "Is set when the alternate is the preferred one, 1705 is unset otherwise."; 1706 } 1707 leaf non-best-reason { 1708 type string { 1709 length "1..255"; 1710 } 1711 description 1712 "Information field to describe why the alternate 1713 is not best. The length should be limited to 255 unicode 1714 characters. The expected format is a single line text."; 1715 } 1716 leaf protection-available { 1717 type bits { 1718 bit node-protect { 1719 position 0; 1720 description 1721 "Node protection available."; 1722 } 1723 bit link-protect { 1724 position 1; 1725 description 1726 "Link protection available."; 1727 } 1728 bit srlg-protect { 1729 position 2; 1730 description 1731 "SRLG protection available."; 1732 } 1733 bit downstream-protect { 1734 position 3; 1735 description 1736 "Downstream protection available."; 1737 } 1738 bit other { 1739 position 4; 1740 description 1741 "Other protection available."; 1742 } 1743 } 1744 description "Protection provided by the alternate."; 1745 } 1746 leaf alternate-metric1 { 1747 type uint32; 1748 description 1749 "Metric from Point of Local Repair (PLR) to 1750 destination through the alternate path."; 1752 } 1753 leaf alternate-metric2 { 1754 type uint32; 1755 description 1756 "Metric from PLR to the alternate node"; 1757 } 1758 leaf alternate-metric3 { 1759 type uint32; 1760 description 1761 "Metric from alternate node to the destination"; 1762 } 1763 description 1764 "Per-AF protected prefix statistics."; 1765 } 1766 description 1767 "List of prefixes that are protected."; 1768 } 1770 container unprotected-routes { 1771 config false; 1772 list address-family-stats { 1773 key "address-family prefix"; 1775 leaf address-family { 1776 type iana-rt-types:address-family; 1778 description "Address-family"; 1779 } 1780 leaf prefix { 1781 type inet:ip-prefix; 1782 description "Unprotected prefix."; 1783 } 1784 description 1785 "Per AF unprotected prefix statistics."; 1786 } 1787 description 1788 "List of prefixes that are not protected."; 1789 } 1791 list protection-statistics { 1792 key frr-protection-method; 1793 config false; 1794 leaf frr-protection-method { 1795 type string; 1796 description "Protection method used. 1797 The expected format is a single word. 1798 As example: LFA,rLFA, MRT, RSVP-TE..."; 1799 } 1800 list address-family-stats { 1801 key address-family; 1803 leaf address-family { 1804 type iana-rt-types:address-family; 1806 description "Address-family"; 1807 } 1808 leaf total-routes { 1809 type uint32; 1810 description "Total prefixes."; 1811 } 1812 leaf unprotected-routes { 1813 type uint32; 1814 description 1815 "Total prefixes that are not protected."; 1816 } 1817 leaf protected-routes { 1818 type uint32; 1819 description 1820 "Total prefixes that are protected."; 1821 } 1822 leaf linkprotected-routes { 1823 type uint32; 1824 description 1825 "Total prefixes that are link protected."; 1826 } 1827 leaf nodeprotected-routes { 1828 type uint32; 1829 description 1830 "Total prefixes that are node protected."; 1831 } 1832 description 1833 "Per AF protected prefix statistics."; 1834 } 1836 description "Global protection statistics."; 1837 } 1838 } 1840 /* Route table and local RIB groupings */ 1842 grouping local-rib { 1843 description "Local-rib - RIB for Routes computed by the local 1844 IS-IS routing instance."; 1845 container local-rib { 1846 config false; 1847 description "Local-rib."; 1848 list route { 1849 key "prefix"; 1850 description "Routes"; 1851 leaf prefix { 1852 type inet:ip-prefix; 1853 description "Destination prefix."; 1854 } 1855 container next-hops { 1856 description "Next hops for the route."; 1857 list next-hop { 1858 key "next-hop"; 1859 description "List of next hops for the route"; 1860 leaf outgoing-interface { 1861 type if:interface-ref; 1862 description 1863 "Name of the outgoing interface."; 1864 } 1865 leaf next-hop { 1866 type inet:ip-address; 1867 description "Nexthop address."; 1868 } 1869 } 1870 } 1871 leaf metric { 1872 type uint32; 1873 description "Metric for this route."; 1874 } 1875 leaf level { 1876 type level-number; 1877 description "Level number for this route."; 1878 } 1879 leaf route-tag { 1880 type uint32; 1881 description "Route tag for this route."; 1882 } 1883 } 1884 } 1885 } 1887 grouping route-content { 1888 description 1889 "IS-IS protocol-specific route properties grouping."; 1890 leaf metric { 1891 type uint32; 1892 description "IS-IS metric of a route."; 1893 } 1894 leaf-list tag { 1895 type uint64; 1896 description 1897 "List of tags associated with the route. The leaf 1898 describes both 32-bit and 64-bit tags."; 1899 } 1900 leaf route-type { 1901 type enumeration { 1902 enum l2-up-internal { 1903 description "Level 2 internal route 1904 and not leaked to a lower level"; 1905 } 1906 enum l1-up-internal { 1907 description "Level 1 internal route 1908 and not leaked to a lower level"; 1909 } 1910 enum l2-up-external { 1911 description "Level 2 external route 1912 and not leaked to a lower level"; 1913 } 1914 enum l1-up-external { 1915 description "Level 1 external route 1916 and not leaked to a lower level"; 1917 } 1918 enum l2-down-internal { 1919 description "Level 2 internal route 1920 and leaked to a lower level"; 1921 } 1922 enum l1-down-internal { 1923 description "Level 1 internal route 1924 and leaked to a lower level"; 1925 } 1926 enum l2-down-external { 1927 description "Level 2 external route 1928 and leaked to a lower level"; 1929 } 1930 enum l1-down-external { 1931 description "Level 1 external route 1932 and leaked to a lower level"; 1933 } 1934 } 1935 description "IS-IS route type."; 1936 } 1937 } 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"; 1986 } 1987 description 1988 "Priority of the neighboring IS for becoming 1989 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."; 2088 } 2089 leaf remaining-hold-down { 2090 type rt-types:timer-value-milliseconds; 2091 units "msec"; 2092 config false; 2093 description 2094 "Remaining time until hold-down timer fires."; 2095 } 2096 leaf last-event-received { 2097 type yang:timestamp; 2098 config false; 2099 description 2100 "Time of last IGP event received"; 2101 } 2102 leaf next-spf-time { 2103 type yang:timestamp; 2104 config false; 2105 description 2106 "Time when next SPF has been scheduled."; 2107 } 2108 leaf last-spf-time { 2109 type yang:timestamp; 2110 config false; 2111 description 2112 "Time of last SPF computation."; 2113 } 2114 description 2115 "Grouping for IETF SPF delay configuration and state."; 2116 } 2118 grouping node-tag-config { 2119 description 2120 "IS-IS node tag config state."; 2121 container node-tags { 2122 if-feature node-tag; 2123 list node-tag { 2124 key tag; 2125 leaf tag { 2126 type uint32; 2127 description 2128 "Node tag value."; 2129 } 2130 description 2131 "List of tags."; 2132 } 2133 description 2134 "Container for node admin tags."; 2135 } 2136 } 2138 grouping authentication-global-cfg { 2139 choice authentication-type { 2140 case key-chain { 2141 if-feature key-chain; 2142 leaf key-chain { 2143 type key-chain:key-chain-ref; 2144 description 2145 "Reference to a key-chain."; 2146 } 2147 } 2148 case password { 2149 leaf key { 2150 type string; 2151 description 2152 "This leaf specifies the authentication key. The 2153 length of the key may be dependent on the 2154 cryptographic algorithm. In cases where it is 2155 not, a key length of at least 32 octets should be 2156 supported to allow for interoperability with 2157 strong keys."; 2158 } 2159 leaf crypto-algorithm { 2160 type identityref { 2161 base key-chain:crypto-algorithm; 2162 } 2163 description 2164 "Cryptographic algorithm associated with key."; 2165 } 2166 } 2167 description "Choice of authentication."; 2168 } 2169 description "Grouping for global authentication config."; 2170 } 2172 grouping metric-type-global-cfg { 2173 leaf value { 2174 type enumeration { 2175 enum wide-only { 2176 description 2177 "Advertise new metric style only (RFC5305)"; 2178 } 2179 enum old-only { 2180 description 2181 "Advertise old metric style only (RFC1195)"; 2183 } 2184 enum both { 2185 description "Advertise both metric styles"; 2186 } 2187 } 2188 default wide-only; 2189 description 2190 "Type of metric to be generated: 2191 - wide-only means only new metric style 2192 is generated, 2193 - old-only means that only old style metric 2194 is generated, 2195 - both means that both are advertised. 2196 This leaf is only affecting IPv4 metrics."; 2197 } 2198 description 2199 "Grouping for global metric style config."; 2200 } 2202 grouping default-metric-global-cfg { 2203 leaf value { 2204 type wide-metric; 2205 default "10"; 2206 description "Value of the metric"; 2207 } 2208 description 2209 "Global default metric config grouping."; 2210 } 2212 grouping overload-global-cfg { 2213 leaf status { 2214 type boolean; 2215 default false; 2216 description 2217 "This leaf specifies the overload status."; 2218 } 2219 description "Grouping for overload bit config."; 2220 } 2222 grouping overload-max-metric-global-cfg { 2223 leaf timeout { 2224 type rt-types:timer-value-seconds16; 2225 units "seconds"; 2226 description 2227 "Timeout (in seconds) of the overload condition."; 2228 } 2229 description 2230 "Overload maximum metric configuration grouping"; 2231 } 2233 grouping route-preference-global-cfg { 2234 choice granularity { 2235 case detail { 2236 leaf internal { 2237 type uint8; 2238 description 2239 "Protocol preference for internal routes."; 2240 } 2241 leaf external { 2242 type uint8; 2243 description 2244 "Protocol preference for external routes."; 2245 } 2246 } 2247 case coarse { 2248 leaf default { 2249 type uint8; 2250 description 2251 "Protocol preference for all IS-IS routes."; 2252 } 2253 } 2254 description 2255 "Choice for implementation of route preference."; 2256 } 2257 description 2258 "Global route preference grouping"; 2259 } 2261 grouping hello-authentication-cfg { 2262 choice authentication-type { 2263 case key-chain { 2264 if-feature key-chain; 2265 leaf key-chain { 2266 type key-chain:key-chain-ref; 2267 description "Reference to a key-chain."; 2268 } 2269 } 2270 case password { 2271 leaf key { 2272 type string; 2273 description "Authentication key specification - The 2274 length of the key may be dependent on the 2275 cryptographic algorithm. In cases where it is 2276 not, a key length of at leawt 32 octets should be 2277 supported to allow for interoperability with 2279 strong 2280 keys."; 2281 } 2282 leaf crypto-algorithm { 2283 type identityref { 2284 base key-chain:crypto-algorithm; 2285 } 2286 description 2287 "Cryptographic algorithm associated with key."; 2288 } 2289 } 2290 description "Choice of authentication."; 2291 } 2292 description "Grouping for hello authentication."; 2293 } 2295 grouping hello-interval-cfg { 2296 leaf value { 2297 type rt-types:timer-value-seconds16; 2298 units "seconds"; 2299 default 10; 2300 description 2301 "Interval (in seconds) between successive hello 2302 messages."; 2303 } 2305 description "Interval between hello messages."; 2306 } 2308 grouping hello-multiplier-cfg { 2309 leaf value { 2310 type uint16; 2311 default 3; 2312 description 2313 "Number of missed hello messages prior to 2314 declaring the adjacency down."; 2315 } 2316 description 2317 "Number of missed hello messages prior to 2318 adjacency down grouping."; 2319 } 2321 grouping priority-cfg { 2322 leaf value { 2323 type uint8 { 2324 range "0 .. 127"; 2325 } 2326 default 64; 2327 description 2328 "Priority of interface for DIS election."; 2329 } 2331 description "Interface DIS election priority grouping"; 2332 } 2334 grouping metric-cfg { 2335 leaf value { 2336 type wide-metric; 2337 default "10"; 2338 description "Metric value."; 2339 } 2340 description "Interface metric grouping"; 2341 } 2343 grouping metric-parameters { 2344 container metric-type { 2345 uses metric-type-global-cfg; 2346 container level-1 { 2347 uses metric-type-global-cfg; 2348 description "level-1 specific configuration"; 2349 } 2350 container level-2 { 2351 uses metric-type-global-cfg; 2352 description "level-2 specific configuration"; 2353 } 2354 description "Metric style global configuration"; 2355 } 2357 container default-metric { 2358 uses default-metric-global-cfg; 2359 container level-1 { 2360 uses default-metric-global-cfg; 2361 description "level-1 specific configuration"; 2362 } 2363 container level-2 { 2364 uses default-metric-global-cfg; 2365 description "level-2 specific configuration"; 2366 } 2367 description "Default metric global configuration"; 2368 } 2369 container auto-cost { 2370 if-feature auto-cost; 2371 description 2372 "Interface Auto-cost configuration state."; 2373 leaf enable { 2374 type boolean; 2375 description 2376 "Enable/Disable interface auto-cost."; 2377 } 2378 leaf reference-bandwidth { 2379 when "../enable = 'true'" { 2380 description "Only when auto cost is enabled"; 2381 } 2382 type uint32 { 2383 range "1..4294967"; 2384 } 2385 units Mbits; 2386 description 2387 "Configure reference bandwidth used to automatically 2388 determine interface cost (Mbits). The cost is the 2389 reference bandwidth divided by the interface speed 2390 with 1 being the minimum cost."; 2391 } 2392 } 2394 description "Grouping for global metric parameters."; 2395 } 2397 grouping high-availability-parameters { 2398 container graceful-restart { 2399 if-feature graceful-restart; 2400 leaf enable { 2401 type boolean; 2402 default false; 2403 description "Enable graceful restart."; 2404 } 2405 leaf restart-interval { 2406 type rt-types:timer-value-seconds16; 2407 units "seconds"; 2408 description 2409 "Interval (in seconds) to attempt graceful restart prior 2410 to failure."; 2411 } 2412 leaf helper-enable { 2413 type boolean; 2414 default true; 2415 description 2416 "Enable local IS-IS router as graceful restart helper."; 2417 } 2418 description "Graceful-Restart Configuration."; 2419 } 2420 container nsr { 2421 if-feature nsr; 2422 description "Non-Stop Routing (NSR) configuration."; 2423 leaf enable { 2424 type boolean; 2425 default false; 2426 description "Enable/Disable Non-Stop Routing (NSR)."; 2427 } 2428 } 2429 description "Grouping for High Availability parameters."; 2430 } 2432 grouping authentication-parameters { 2433 container authentication { 2434 uses authentication-global-cfg; 2436 container level-1 { 2437 uses authentication-global-cfg; 2438 description "level-1 specific configuration"; 2439 } 2440 container level-2 { 2441 uses authentication-global-cfg; 2442 description "level-2 specific configuration"; 2443 } 2444 description "Authentication global configuration for 2445 both LSPs and SNPs."; 2446 } 2447 description "Grouping for authentication parameters"; 2448 } 2449 grouping address-family-parameters { 2450 container address-families { 2451 if-feature nlpid-control; 2452 list address-family-list { 2453 key address-family; 2454 leaf address-family { 2455 type iana-rt-types:address-family; 2456 description "Address-family"; 2457 } 2458 leaf enable { 2459 type boolean; 2460 description "Activate the address family."; 2461 } 2462 description 2463 "List of address families and whether or not they 2464 are activated."; 2465 } 2466 description "Address Family configuration"; 2467 } 2468 description "Grouping for address family parameters."; 2469 } 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 } 2566 leaf system-id { 2567 type system-id; 2568 description "system-id of the node."; 2569 } 2571 leaf maximum-area-addresses { 2572 if-feature maximum-area-addresses; 2573 type uint8; 2574 default 3; 2575 description "Maximum areas supported."; 2576 } 2578 leaf-list area-address { 2579 type area-address; 2580 description 2581 "List of areas supported by the protocol instance."; 2582 } 2584 uses lsp-parameters; 2585 uses high-availability-parameters; 2586 uses node-tag-config; 2587 uses metric-parameters; 2588 uses authentication-parameters; 2589 uses address-family-parameters; 2590 uses mpls-parameters; 2591 uses spf-parameters; 2592 uses instance-fast-reroute-config; 2594 container preference { 2595 uses route-preference-global-cfg; 2596 description "Router preference configuration for IS-IS 2597 protocol instance route installation"; 2598 } 2600 container overload { 2601 uses overload-global-cfg; 2602 description "Router protocol instance overload state 2603 configuration"; 2604 } 2606 container overload-max-metric { 2607 if-feature overload-max-metric; 2608 uses overload-max-metric-global-cfg; 2609 description 2610 "Router protocol instance overload maximum 2611 metric advertisement configuration."; 2612 } 2613 } 2614 grouping instance-state { 2615 description 2616 "IS-IS instance operational state."; 2617 uses spf-log; 2618 uses lsp-log; 2619 uses hostname-db; 2620 uses lsdb; 2621 uses local-rib; 2622 uses system-counters; 2623 uses instance-fast-reroute-state; 2624 } 2626 grouping multi-topology-config { 2627 description "Per-topology configuration"; 2628 container default-metric { 2629 uses default-metric-global-cfg; 2630 container level-1 { 2631 uses default-metric-global-cfg; 2632 description "level-1 specific configuration"; 2633 } 2634 container level-2 { 2635 uses default-metric-global-cfg; 2636 description "level-2 specific configuration"; 2637 } 2638 description "Default metric per-topology configuration"; 2639 } 2640 uses node-tag-config; 2641 } 2643 grouping interface-config { 2644 description "Interface configuration grouping"; 2645 leaf level-type { 2646 type level; 2647 default "level-all"; 2648 description "IS-IS level of the interface."; 2649 } 2650 leaf lsp-pacing-interval { 2651 type rt-types:timer-value-milliseconds; 2652 units "milliseconds"; 2653 default 33; 2654 description 2655 "Interval (in milli-seconds) between LSP 2656 transmissions."; 2657 } 2658 leaf lsp-retransmit-interval { 2659 type rt-types:timer-value-seconds16; 2660 units "seconds"; 2661 description 2662 "Interval (in seconds) between LSP 2663 retransmissions."; 2664 } 2665 leaf passive { 2666 type boolean; 2667 default "false"; 2668 description 2669 "Indicates whetherthe interface is in passive mode (IS-IS 2670 not running but network is advertised)."; 2671 } 2672 leaf csnp-interval { 2673 type rt-types:timer-value-seconds16; 2674 units "seconds"; 2675 default 10; 2676 description 2677 "Interval (in seconds) between CSNP messages."; 2678 } 2679 container hello-padding { 2680 leaf enable { 2681 type boolean; 2682 default "true"; 2683 description 2684 "IS-IS Hello-padding activation - enabled by default."; 2685 } 2686 description "IS-IS hello padding configuration."; 2687 } 2688 leaf mesh-group-enable { 2689 type mesh-group-state; 2690 description "IS-IS interface mesh-group state"; 2691 } 2692 leaf mesh-group { 2693 when "../mesh-group-enable = 'mesh-set'" { 2694 description 2695 "Only valid when mesh-group-enable equals meshset"; 2696 } 2697 type uint8; 2698 description "IS-IS interface mesh-group ID."; 2699 } 2700 leaf interface-type { 2701 type interface-type; 2702 default "broadcast"; 2703 description 2704 "Type of adjacency to be established on the interface. This 2705 dictates the type of hello messages that are used."; 2706 } 2708 uses admin-control; 2709 leaf-list tag { 2710 if-feature prefix-tag; 2711 type uint32; 2712 description 2713 "List of tags associated with the interface."; 2714 } 2715 leaf-list tag64 { 2716 if-feature prefix-tag64; 2717 type uint64; 2718 description 2719 "List of 64-bit tags associated with the interface."; 2720 } 2721 leaf node-flag { 2722 if-feature node-flag; 2723 type boolean; 2724 default false; 2725 description 2726 "Set prefix as a node representative prefix."; 2727 } 2728 container hello-authentication { 2729 uses hello-authentication-cfg; 2730 container level-1 { 2731 uses hello-authentication-cfg; 2732 description "level-1 specific configuration"; 2733 } 2734 container level-2 { 2735 uses hello-authentication-cfg; 2736 description "level-2 specific configuration"; 2737 } 2738 description 2739 "Authentication type to be used in hello messages."; 2740 } 2741 container hello-interval { 2742 uses hello-interval-cfg; 2743 container level-1 { 2744 uses hello-interval-cfg; 2745 description "level-1 specific configuration"; 2746 } 2747 container level-2 { 2748 uses hello-interval-cfg; 2749 description "level-2 specific configuration"; 2750 } 2751 description "Interval between hello messages."; 2752 } 2753 container hello-multiplier { 2754 uses hello-multiplier-cfg; 2755 container level-1 { 2756 uses hello-multiplier-cfg; 2757 description "level-1 specific configuration"; 2758 } 2759 container level-2 { 2760 uses hello-multiplier-cfg; 2761 description "level-2 specific configuration"; 2762 } 2763 description "Hello multiplier configuration."; 2764 } 2765 container priority { 2766 must '../interface-type = "broadcast"' { 2767 error-message 2768 "Priority only applies to broadcast interfaces."; 2769 description "Check for broadcast interface."; 2770 } 2771 uses priority-cfg; 2772 container level-1 { 2773 uses priority-cfg; 2774 description "level-1 specific configuration"; 2775 } 2776 container level-2 { 2777 uses priority-cfg; 2778 description "level-2 specific configuration"; 2779 } 2780 description "Priority for DIS election."; 2781 } 2782 container metric { 2783 uses metric-cfg; 2784 container level-1 { 2785 uses metric-cfg; 2786 description "level-1 specific configuration"; 2787 } 2788 container level-2 { 2789 uses metric-cfg; 2790 description "level-2 specific configuration"; 2791 } 2792 description "Metric configuration."; 2793 } 2794 container bfd { 2795 if-feature bfd; 2796 description "BFD Client Configuration."; 2797 uses bfd-types:client-cfg-parms; 2799 reference "RFC YYYY - YANG Data Model for Bidirectional 2800 Forwarding Detection (BFD). 2802 -- Note to RFC Editor Please replace YYYY with published RFC number for 2803 draft-ietf-bfd-yang."; 2804 } 2805 container address-families { 2806 if-feature nlpid-control; 2807 list address-family-list { 2808 key address-family; 2809 leaf address-family { 2810 type iana-rt-types:address-family; 2811 description "Address-family"; 2812 } 2813 description "List of AFs."; 2814 } 2815 description "Interface address-families"; 2816 } 2817 container mpls { 2818 container ldp { 2819 leaf igp-sync { 2820 if-feature ldp-igp-sync; 2821 type boolean; 2822 default false; 2823 description "Enables IGP/LDP synchronization"; 2824 } 2825 description "LDP protocol related configuration."; 2826 } 2827 description "MPLS configuration for IS-IS interfaces"; 2828 } 2829 uses interface-fast-reroute-config; 2830 } 2832 grouping multi-topology-interface-config { 2833 description "IS-IS interface topology configuration."; 2834 container metric { 2835 uses metric-cfg; 2836 container level-1 { 2837 uses metric-cfg; 2838 description "level-1 specific configuration"; 2839 } 2840 container level-2 { 2841 uses metric-cfg; 2842 description "level-2 specific configuration"; 2843 } 2844 description "Metric IS-IS interface configuration."; 2845 } 2846 } 2847 grouping interface-state { 2848 description 2849 "IS-IS interface operational state."; 2850 uses adjacency-state; 2851 uses event-counters; 2852 uses packet-counters; 2853 } 2855 /* Grouping for the hostname database */ 2857 grouping hostname-db { 2858 container hostnames { 2859 config false; 2860 list hostname { 2861 key system-id; 2862 leaf system-id { 2863 type system-id; 2864 description 2865 "system-id associated with the hostname."; 2866 } 2867 leaf hostname { 2868 type string { 2869 length "1..255"; 2870 } 2871 description 2872 "Hostname associated with the system-id 2873 as defined in RFC5301."; 2874 } 2875 description 2876 "List of system-id/hostname associations."; 2877 } 2878 description 2879 "Hostname to system-id mapping database."; 2880 } 2881 description 2882 "Grouping for hostname to system-id mapping database."; 2883 } 2885 /* Groupings for counters */ 2887 grouping system-counters { 2888 container system-counters { 2889 config false; 2890 list level { 2891 key level; 2893 leaf level { 2894 type level-number; 2895 description "IS-IS level."; 2896 } 2897 leaf corrupted-lsps { 2898 type uint32; 2899 description 2900 "Number of corrupted in-memory LSPs detected. 2901 LSPs received from the wire with a bad 2902 checksum are silently dropped and not counted. 2903 LSPs received from the wire with parse errors 2904 are counted by lsp-errors."; 2905 } 2906 leaf authentication-type-fails { 2907 type uint32; 2908 description 2909 "Number of authentication type mismatches."; 2910 } 2911 leaf authentication-fails { 2912 type uint32; 2913 description 2914 "Number of authentication key failures."; 2915 } 2916 leaf database-overload { 2917 type uint32; 2918 description 2919 "Number of times the database has become 2920 overloaded."; 2921 } 2922 leaf own-lsp-purge { 2923 type uint32; 2924 description 2925 "Number of times a zero-aged copy of the system's 2926 own LSP is received from some other IS-IS node."; 2927 } 2928 leaf manual-address-drop-from-area { 2929 type uint32; 2930 description 2931 "Number of times a manual address 2932 has been dropped from the area."; 2933 } 2934 leaf max-sequence { 2935 type uint32; 2936 description 2937 "Number of times the system has attempted 2938 to exceed the maximum sequence number."; 2939 } 2940 leaf sequence-number-skipped { 2941 type uint32; 2942 description 2943 "Number of times a sequence number skip has 2944 occured."; 2945 } 2946 leaf id-len-mismatch { 2947 type uint32; 2948 description 2949 "Number of times a PDU is received with a 2950 different value for the ID field length 2951 than that of the receiving system."; 2952 } 2953 leaf partition-changes { 2954 type uint32; 2955 description 2956 "Number of partition changes detected."; 2957 } 2958 leaf lsp-errors { 2959 type uint32; 2960 description 2961 "Number of LSPs with errors we have received."; 2962 } 2963 leaf spf-runs { 2964 type uint32; 2965 description 2966 "Number of times we ran SPF at this level."; 2967 } 2968 description 2969 "List of supported levels."; 2970 } 2971 description 2972 "List counters for the IS-IS protocol instance"; 2973 } 2974 description "System counters grouping."; 2975 } 2977 grouping event-counters { 2978 container event-counters { 2979 config false; 2980 leaf adjacency-changes { 2981 type uint32; 2982 description 2983 "The number of times an adjacency state change has 2984 occured on this interface."; 2985 } 2986 leaf adjacency-number { 2987 type uint32; 2988 description 2989 "The number of adjacencies on this interface."; 2990 } 2991 leaf init-fails { 2992 type uint32; 2993 description 2994 "The number of times initialization of this 2995 interface has failed. This counts events such 2996 as PPP NCP failures. Failures to form an 2997 adjacency are counted by adjacency-rejects."; 2998 } 2999 leaf adjacency-rejects { 3000 type uint32; 3001 description 3002 "The number of times an adjacency has been 3003 rejected on this interface."; 3004 } 3005 leaf id-len-mismatch { 3006 type uint32; 3007 description 3008 "The number of times an IS-IS PDU with an ID 3009 field length different from that for this 3010 system has been received on this interface."; 3011 } 3012 leaf max-area-addresses-mismatch { 3013 type uint32; 3014 description 3015 "The number of times an IS-IS PDU has been 3016 received on this interface with the 3017 max area address field differing from that of 3018 this system."; 3019 } 3020 leaf authentication-type-fails { 3021 type uint32; 3022 description 3023 "Number of authentication type mismatches."; 3024 } 3025 leaf authentication-fails { 3026 type uint32; 3027 description 3028 "Number of authentication key failures."; 3029 } 3030 leaf lan-dis-changes { 3031 type uint32; 3032 description 3033 "The number of times the DIS has changed on this 3034 interface at this level. If the interface type is 3035 point-to-point,the count is zero."; 3036 } 3037 description "IS-IS interface event counters."; 3038 } 3039 description 3040 "Grouping for IS-IS interface event counters"; 3041 } 3043 grouping packet-counters { 3044 container packet-counters { 3045 config false; 3046 list level { 3047 key level; 3049 leaf level { 3050 type level-number; 3051 description "IS-IS level."; 3052 } 3053 container iih { 3054 leaf in { 3055 type uint32; 3056 description "Received IIH PDUs."; 3057 } 3058 leaf out { 3059 type uint32; 3060 description "Sent IIH PDUs."; 3061 } 3062 description "Number of IIH PDUs received/sent."; 3063 } 3064 container ish { 3065 leaf in { 3066 type uint32; 3067 description "Received ISH PDUs."; 3068 } 3069 leaf out { 3070 type uint32; 3071 description "Sent ISH PDUs."; 3072 } 3073 description 3074 "ISH PDUs received/sent."; 3075 } 3076 container esh { 3077 leaf in { 3078 type uint32; 3079 description "Received ESH PDUs."; 3080 } 3081 leaf out { 3082 type uint32; 3083 description "Sent ESH PDUs."; 3084 } 3085 description "Number of ESH PDUs received/sent."; 3086 } 3087 container lsp { 3088 leaf in { 3089 type uint32; 3090 description "Received LSP PDUs."; 3091 } 3092 leaf out { 3093 type uint32; 3094 description "Sent LSP PDUs."; 3095 } 3096 description "Number of LSP PDUs received/sent."; 3097 } 3098 container psnp { 3099 leaf in { 3100 type uint32; 3101 description "Received PSNP PDUs."; 3102 } 3103 leaf out { 3104 type uint32; 3105 description "Sent PSNP PDUs."; 3106 } 3107 description "Number of PSNP PDUs received/sent."; 3108 } 3109 container csnp { 3110 leaf in { 3111 type uint32; 3112 description "Received CSNP PDUs."; 3113 } 3114 leaf out { 3115 type uint32; 3116 description "Sent CSNP PDUs."; 3117 } 3118 description "Number of CSNP PDUs received/sent."; 3119 } 3120 container unknown { 3121 leaf in { 3122 type uint32; 3123 description "Received unknown PDUs."; 3124 } 3125 leaf out { 3126 type uint32; 3127 description "Sent unknown PDUs."; 3128 } 3129 description "Number of unknown PDUs received/sent."; 3130 } 3131 description 3132 "List of packet counter for supported llevels."; 3133 } 3134 description "Packet counters per IS-IS level."; 3135 } 3136 description 3137 "Grouping for per IS-IS Level packet counters."; 3138 } 3139 /* Groupings for various log buffers */ 3140 grouping spf-log { 3141 container spf-log { 3142 config false; 3143 list event { 3144 key id; 3146 leaf id { 3147 type uint32; 3148 description 3149 "Event identifier - purely internal value."; 3150 } 3151 leaf spf-type { 3152 type enumeration { 3153 enum full { 3154 description "Full SPF computation."; 3155 } 3156 enum route-only { 3157 description 3158 "Route reachability only SPF computation"; 3159 } 3160 } 3161 description "Type of SPF computation performed."; 3162 } 3163 leaf level { 3164 type level-number; 3165 description 3166 "IS-IS level number for SPF computation"; 3167 } 3168 leaf schedule-timestamp { 3169 type yang:timestamp; 3170 description 3171 "Timestamp of when the SPF computation was 3172 scheduled."; 3173 } 3174 leaf start-timestamp { 3175 type yang:timestamp; 3176 description 3177 "Timestamp of when the SPF computation started."; 3178 } 3179 leaf end-timestamp { 3180 type yang:timestamp; 3181 description 3182 "Timestamp of when the SPF computation ended."; 3183 } 3184 list trigger-lsp { 3185 key "lsp"; 3186 leaf lsp { 3187 type lsp-id; 3188 description 3189 "LSP ID of the LSP triggering SPF computation."; 3190 } 3191 leaf sequence { 3192 type uint32; 3193 description 3194 "Sequence number of the LSP triggering SPF 3195 computation"; 3196 } 3197 description 3198 "This list includes the LSPs that triggered the 3199 SPF computation."; 3200 } 3201 description 3202 "List of computation events - implemented as a 3203 wrapping buffer."; 3204 } 3206 description 3207 "This container lists the SPF computation events."; 3208 } 3209 description "Grouping for spf-log events."; 3210 } 3212 grouping lsp-log { 3213 container lsp-log { 3214 config false; 3215 list event { 3216 key id; 3218 leaf id { 3219 type uint32; 3220 description 3221 "Event identifier - purely internal value."; 3222 } 3223 leaf level { 3224 type level-number; 3225 description 3226 "IS-IS level number for LSP"; 3227 } 3228 container lsp { 3229 leaf lsp { 3230 type lsp-id; 3231 description 3232 "LSP ID of the LSP."; 3233 } 3234 leaf sequence { 3235 type uint32; 3236 description 3237 "Sequence number of the LSP."; 3238 } 3239 description 3240 "LSP identification container - either the received 3241 LSP or the locally generated LSP."; 3242 } 3244 leaf received-timestamp { 3245 type yang:timestamp; 3246 description 3247 "This is the timestamp when the LSA was received. 3248 In case of local LSA update, the timestamp refers 3249 to the LSA origination time."; 3250 } 3252 leaf reason { 3253 type identityref { 3254 base lsp-log-reason; 3255 } 3256 description "Type of LSP change."; 3257 } 3259 description 3260 "List of LSP events - implemented as a 3261 wrapping buffer."; 3262 } 3264 description 3265 "This container lists the LSP log. 3266 Local LSP modifications are also included 3267 in the list."; 3269 } description "Grouping for LSP log."; 3270 } 3272 /* Groupings for the LSDB description */ 3274 /* Unknown TLV and subTLV description */ 3275 grouping tlv { 3276 description 3277 "Type-Length-Value (TLV)"; 3278 leaf type { 3279 type uint16; 3280 description "TLV type."; 3282 } 3283 leaf length { 3284 type uint16; 3285 description "TLV length (octets)."; 3286 } 3287 leaf value { 3288 type yang:hex-string; 3289 description "TLV value."; 3290 } 3291 } 3293 grouping unknown-tlvs { 3294 description 3295 "Unknown TLVs grouping - Used for unknown TLVs or 3296 unknown sub-TLVs."; 3297 container unknown-tlvs { 3298 description "All unknown TLVs."; 3299 list unknown-tlv { 3300 description "Unknown TLV."; 3301 uses tlv; 3302 } 3303 } 3304 } 3306 /* TLVs and subTLVs for prefixes */ 3308 grouping prefix-reachability-attributes { 3309 description 3310 "Grouping for extended reachability attributes of an 3311 IPv4 or IPv6 prefix."; 3313 leaf external-prefix-flag { 3314 type boolean; 3315 description "External prefix flag."; 3316 } 3317 leaf readvertisement-flag { 3318 type boolean; 3319 description "Readvertisement flag."; 3320 } 3321 leaf node-flag { 3322 type boolean; 3323 description "Node flag."; 3324 } 3325 } 3327 grouping prefix-ipv4-source-router-id { 3328 description 3329 "Grouping for the IPv4 source router ID of a prefix 3330 advertisement."; 3332 leaf ipv4-source-router-id { 3333 type inet:ipv4-address; 3334 description "IPv4 Source router ID address."; 3335 } 3336 } 3338 grouping prefix-ipv6-source-router-id { 3339 description 3340 "Grouping for the IPv6 source router ID of a prefix 3341 advertisement."; 3343 leaf ipv6-source-router-id { 3344 type inet:ipv6-address; 3345 description "IPv6 Source router ID address."; 3346 } 3347 } 3349 grouping prefix-attributes-extension { 3350 description "Prefix extended attributes 3351 as defined in RFC7794."; 3353 uses prefix-reachability-attributes; 3354 uses prefix-ipv4-source-router-id; 3355 uses prefix-ipv6-source-router-id; 3356 } 3358 grouping prefix-ipv4-std { 3359 description 3360 "Grouping for attributes of an IPv4 standard prefix 3361 as defined in RFC1195."; 3362 leaf ip-prefix { 3363 type inet:ipv4-address; 3364 description "IPv4 prefix address"; 3365 } 3366 leaf prefix-len { 3367 type uint8; 3368 description "IPv4 prefix length (in bits)"; 3369 } 3370 leaf i-e { 3371 type boolean; 3372 description "Internal or External (I/E) Metric bit value."; 3373 } 3374 container default-metric { 3375 leaf metric { 3376 type std-metric; 3377 description "Default IS-IS metric for IPv4 prefix"; 3379 } 3380 description "IS-IS default metric container."; 3381 } 3382 container delay-metric { 3383 leaf metric { 3384 type std-metric; 3385 description "IS-IS delay metric for IPv4 prefix"; 3386 } 3387 leaf supported { 3388 type boolean; 3389 default "false"; 3390 description 3391 "Indicates whether IS-IS delay metric is supported."; 3392 } 3393 description "IS-IS delay metric container."; 3394 } 3395 container expense-metric { 3396 leaf metric { 3397 type std-metric; 3398 description "IS-IS expense metric for IPv4 prefix"; 3399 } 3400 leaf supported { 3401 type boolean; 3402 default "false"; 3403 description 3404 "Indicates whether IS-IS delay metric is supported."; 3405 } 3406 description "IS-IS expense metric container."; 3407 } 3408 container error-metric { 3409 leaf metric { 3410 type std-metric; 3411 description 3412 "This leaf describes the IS-IS error metric value"; 3413 } 3414 leaf supported { 3415 type boolean; 3416 default "false"; 3417 description "IS-IS error metric for IPv4 prefix"; 3418 } 3419 description "IS-IS error metric container."; 3420 } 3421 } 3423 grouping prefix-ipv4-extended { 3424 description 3425 "Grouping for attributes of an IPv4 extended prefix 3426 as defined in RFC5305."; 3428 leaf up-down { 3429 type boolean; 3430 description "Value of up/down bit."; 3431 } 3432 leaf ip-prefix { 3433 type inet:ipv4-address; 3434 description "IPv4 prefix address"; 3435 } 3436 leaf prefix-len { 3437 type uint8; 3438 description "IPv4 prefix length (in bits)"; 3439 } 3440 leaf metric { 3441 type wide-metric; 3442 description "IS-IS wide metric value"; 3443 } 3444 leaf-list tag { 3445 type uint32; 3446 description 3447 "List of 32-bit tags associated with the IPv4 prefix."; 3448 } 3449 leaf-list tag64 { 3450 type uint64; 3451 description 3452 "List of 32-bit tags associated with the IPv4 prefix."; 3453 } 3454 uses prefix-attributes-extension; 3455 } 3457 grouping prefix-ipv6-extended { 3458 description "Grouping for attributes of an IPv6 prefix 3459 as defined in RFC5308."; 3460 leaf up-down { 3461 type boolean; 3462 description "Value of up/down bit."; 3463 } 3464 leaf ip-prefix { 3465 type inet:ipv6-address; 3466 description "IPv6 prefix address"; 3467 } 3468 leaf prefix-len { 3469 type uint8; 3470 description "IPv4 prefix length (in bits)"; 3471 } 3472 leaf metric { 3473 type wide-metric; 3474 description "IS-IS wide metric value"; 3475 } 3476 leaf-list tag { 3477 type uint32; 3478 description 3479 "List of 32-bit tags associated with the IPv4 prefix."; 3480 } 3481 leaf-list tag64 { 3482 type uint64; 3483 description 3484 "List of 32-bit tags associated with the IPv4 prefix."; 3485 } 3486 uses prefix-attributes-extension; 3487 } 3489 /* TLVs and subTLVs for neighbors */ 3491 grouping neighbor-link-attributes { 3492 description 3493 "Grouping for link attributes as defined 3494 in RFC5029"; 3495 leaf link-attributes-flags { 3496 type uint16; 3497 description 3498 "Flags for the link attributes"; 3499 } 3500 } 3501 grouping neighbor-gmpls-extensions { 3502 description 3503 "Grouping for GMPLS attributes of a neighbor as defined 3504 in RFC5307"; 3505 leaf link-local-id { 3506 type uint32; 3507 description 3508 "Local identifier of the link."; 3509 } 3510 leaf remote-local-id { 3511 type uint32; 3512 description 3513 "Remote identifier of the link."; 3514 } 3515 leaf protection-capability { 3516 type uint8; 3517 description 3518 "Describes the protection capabilities 3519 of the link. This is the value of the 3520 first octet of the sub-TLV type 20 value."; 3521 } 3522 container interface-switching-capability { 3523 description 3524 "Interface switching capabilities of the link."; 3525 leaf switching-capability { 3526 type uint8; 3527 description 3528 "Switching capability of the link."; 3529 } 3530 leaf encoding { 3531 type uint8; 3532 description 3533 "Type of encoding of the LSP being used."; 3534 } 3535 container max-lsp-bandwidths { 3536 description "Per priority max LSP bandwidths."; 3537 list max-lsp-bandwidth { 3538 leaf priority { 3539 type uint8 { 3540 range "0 .. 7"; 3541 } 3542 description "Priority from 0 to 7."; 3543 } 3544 leaf bandwidth { 3545 type rt-types:bandwidth-ieee-float32; 3546 description "max LSP bandwidth."; 3547 } 3548 description 3549 "List of max LSP bandwidths for different 3550 priorities."; 3551 } 3552 } 3553 container tdm-specific { 3554 when "../switching-capability = 100"; 3555 description 3556 "Switching Capability-specific information applicable 3557 when switching type is TDM."; 3559 leaf minimum-lsp-bandwidth { 3560 type rt-types:bandwidth-ieee-float32; 3561 description "minimum LSP bandwidth."; 3562 } 3563 leaf indication { 3564 type uint8; 3565 description 3566 "The indication whether the interface supports Standard 3567 or Arbitrary SONET/SDH."; 3568 } 3569 } 3570 container psc-specific { 3571 when "../switching-capability >= 1 and 3573 ../switching-capability <= 4"; 3574 description 3575 "Switching Capability-specific information applicable 3576 when switching type is PSC1,PSC2,PSC3 or PSC4."; 3578 leaf minimum-lsp-bandwidth { 3579 type rt-types:bandwidth-ieee-float32; 3580 description "minimum LSP bandwidth."; 3581 } 3582 leaf mtu { 3583 type uint16; 3584 units bytes; 3585 description 3586 "Interface MTU"; 3587 } 3588 } 3589 } 3590 } 3592 grouping neighbor-extended-te-extensions { 3593 description 3594 "Grouping for TE attributes of a neighbor as defined 3595 in RFC7810"; 3597 container unidirectional-link-delay { 3598 description 3599 "Container for the average delay 3600 from the local neighbor to the remote one."; 3601 leaf flags { 3602 type bits { 3603 bit A { 3604 position 7; 3605 description 3606 "The A bit represents the Anomalous (A) bit. 3607 The A bit is set when the measured value of 3608 this parameter exceeds its configured 3609 maximum threshold. 3610 The A bit is cleared when the measured value 3611 falls below its configured reuse threshold. 3612 If the A bit is clear, 3613 the value represents steady-state link performance."; 3614 } 3615 } 3616 description 3617 "Flags."; 3618 } 3619 leaf value { 3620 type uint32; 3621 units usec; 3622 description 3623 "Delay value expressed in microseconds."; 3624 } 3625 } 3626 container min-max-unidirectional-link-delay { 3627 description 3628 "Container for the min and max delay 3629 from the local neighbor to the remote one."; 3630 leaf flags { 3631 type bits { 3632 bit A { 3633 position 7; 3634 description 3635 "The A bit represents the Anomalous (A) bit. 3636 The A bit is set when the measured value of 3637 this parameter exceeds its configured 3638 maximum threshold. 3639 The A bit is cleared when the measured value 3640 falls below its configured reuse threshold. 3641 If the A bit is clear, 3642 the value represents steady-state link performance."; 3643 } 3644 } 3645 description 3646 "Flags."; 3647 } 3648 leaf min-value { 3649 type uint32; 3650 units usec; 3651 description 3652 "Minimum delay value expressed in microseconds."; 3653 } 3654 leaf max-value { 3655 type uint32; 3656 units usec; 3657 description 3658 "Maximum delay value expressed in microseconds."; 3659 } 3660 } 3661 container unidirectional-link-delay-variation { 3662 description 3663 "Container for the average delay variation 3664 from the local neighbor to the remote one."; 3665 leaf value { 3666 type uint32; 3667 units usec; 3668 description 3669 "Delay variation value expressed in microseconds."; 3670 } 3671 } 3672 container unidirectional-link-loss{ 3673 description 3674 "Container for the packet loss 3675 from the local neighbor to the remote one."; 3676 leaf flags { 3677 type bits { 3678 bit A { 3679 position 7; 3680 description 3681 "The A bit represents the Anomalous (A) bit. 3682 The A bit is set when the measured value of 3683 this parameter exceeds its configured 3684 maximum threshold. 3685 The A bit is cleared when the measured value 3686 falls below its configured reuse threshold. 3687 If the A bit is clear, 3688 the value represents steady-state link performance."; 3689 } 3690 } 3691 description 3692 "Flags."; 3693 } 3694 leaf value { 3695 type uint32; 3696 units percent; 3697 description 3698 "Link packet loss expressed as a percentage 3699 of the total traffic sent over a configurable interval."; 3700 } 3701 } 3702 container unidirectional-link-residual-bandwidth { 3703 description 3704 "Container for the residual bandwidth 3705 from the local neighbor to the remote one."; 3706 leaf value { 3707 type rt-types:bandwidth-ieee-float32; 3708 units Bps; 3709 description 3710 "Residual bandwidth."; 3711 } 3712 } 3713 container unidirectional-link-available-bandwidth { 3714 description 3715 "Container for the available bandwidth 3716 from the local neighbor to the remote one."; 3718 leaf value { 3719 type rt-types:bandwidth-ieee-float32; 3720 units Bps; 3721 description 3722 "Available bandwidth."; 3723 } 3724 } 3725 container unidirectional-link-utilized-bandwidth { 3726 description 3727 "Container for the utilized bandwidth 3728 from the local neighbor to the remote one."; 3729 leaf value { 3730 type rt-types:bandwidth-ieee-float32; 3731 units Bps; 3732 description 3733 "Utilized bandwidth."; 3734 } 3735 } 3736 } 3738 grouping neighbor-te-extensions { 3739 description 3740 "Grouping for TE attributes of a neighbor as defined 3741 in RFC5305"; 3742 leaf admin-group { 3743 type uint32; 3744 description 3745 "Administrative group/Resource Class/Color."; 3746 } 3747 container local-if-ipv4-addrs { 3748 description "All local interface IPv4 addresses."; 3749 leaf-list local-if-ipv4-addr { 3750 type inet:ipv4-address; 3751 description 3752 "List of local interface IPv4 addresses."; 3753 } 3754 } 3755 container remote-if-ipv4-addrs { 3756 description "All remote interface IPv4 addresses."; 3757 leaf-list remote-if-ipv4-addr { 3758 type inet:ipv4-address; 3759 description 3760 "List of remote interface IPv4 addresses."; 3761 } 3762 } 3763 leaf te-metric { 3764 type uint32; 3765 description "TE metric."; 3767 } 3768 leaf max-bandwidth { 3769 type rt-types:bandwidth-ieee-float32; 3770 description "Maximum bandwidth."; 3771 } 3772 leaf max-reservable-bandwidth { 3773 type rt-types:bandwidth-ieee-float32; 3774 description "Maximum reservable bandwidth."; 3775 } 3776 container unreserved-bandwidths { 3777 description "All unreserved bandwidths."; 3778 list unreserved-bandwidth { 3779 leaf priority { 3780 type uint8 { 3781 range "0 .. 7"; 3782 } 3783 description "Priority from 0 to 7."; 3784 } 3785 leaf unreserved-bandwidth { 3786 type rt-types:bandwidth-ieee-float32; 3787 description "Unreserved bandwidth."; 3788 } 3789 description 3790 "List of unreserved bandwidths for different 3791 priorities."; 3792 } 3793 } 3794 } 3796 grouping neighbor-extended { 3797 description 3798 "Grouping for attributes of an IS-IS extended neighbor."; 3799 leaf neighbor-id { 3800 type extended-system-id; 3801 description "system-id of the extended neighbor."; 3802 } 3803 container instances { 3804 description "List of all adjacencies between the local 3805 system and the neighbor system-id."; 3806 list instance { 3807 key id; 3809 leaf id { 3810 type uint32; 3811 description "Unique identifier of an instance of a 3812 particular neighbor."; 3813 } 3814 leaf metric { 3815 type wide-metric; 3816 description "IS-IS wide metric for extended neighbor"; 3817 } 3818 uses neighbor-gmpls-extensions; 3819 uses neighbor-te-extensions; 3820 uses neighbor-extended-te-extensions; 3821 uses neighbor-link-attributes; 3822 uses unknown-tlvs; 3823 description "Instance of a particular adjacency."; 3824 } 3825 } 3826 } 3828 grouping neighbor { 3829 description "IS-IS standard neighbor grouping."; 3830 leaf neighbor-id { 3831 type extended-system-id; 3832 description "IS-IS neighbor system-id"; 3833 } 3834 container instances { 3835 description "List of all adjacencies between the local 3836 system and the neighbor system-id."; 3837 list instance { 3838 key id; 3840 leaf id { 3841 type uint32; 3842 description "Unique identifier of an instance of a 3843 particular neighbor."; 3844 } 3845 leaf i-e { 3846 type boolean; 3847 description 3848 "Internal or External (I/E) Metric bit value"; 3849 } 3850 container default-metric { 3851 leaf metric { 3852 type std-metric; 3853 description "IS-IS default metric value"; 3854 } 3855 description "IS-IS default metric container"; 3856 } 3857 container delay-metric { 3858 leaf metric { 3859 type std-metric; 3860 description "IS-IS delay metric value"; 3861 } 3862 leaf supported { 3863 type boolean; 3864 default "false"; 3865 description "IS-IS delay metric supported"; 3866 } 3867 description "IS-IS delay metric container"; 3868 } 3869 container expense-metric { 3870 leaf metric { 3871 type std-metric; 3872 description "IS-IS delay expense metric value"; 3873 } 3874 leaf supported { 3875 type boolean; 3876 default "false"; 3877 description "IS-IS delay expense metric supported"; 3878 } 3879 description "IS-IS delay expense metric container"; 3880 } 3881 container error-metric { 3882 leaf metric { 3883 type std-metric; 3884 description "IS-IS error metric value"; 3885 } 3886 leaf supported { 3887 type boolean; 3888 default "false"; 3889 description "IS-IS error metric supported"; 3890 } 3891 description "IS-IS error metric container"; 3892 } 3893 description "Instance of a particular adjacency 3894 as defined in ISO10589."; 3895 } 3896 } 3897 } 3899 /* Top level TLVs */ 3901 grouping tlv132-ipv4-addresses { 3902 leaf-list ipv4-addresses { 3903 type inet:ipv4-address; 3904 description 3905 "List of IPv4 addresses of the IS-IS node - IS-IS 3906 reference is TLV 132."; 3907 } 3908 description "Grouping for TLV132."; 3909 } 3910 grouping tlv232-ipv6-addresses { 3911 leaf-list ipv6-addresses { 3912 type inet:ipv6-address; 3913 description 3914 "List of IPv6 addresses of the IS-IS node - IS-IS 3915 reference is TLV 232."; 3916 } 3917 description "Grouping for TLV232."; 3918 } 3919 grouping tlv134-ipv4-te-rid { 3920 leaf ipv4-te-routerid { 3921 type inet:ipv4-address; 3922 description 3923 "IPv4 Traffic Engineering router ID of the IS-IS node - 3924 IS-IS reference is TLV 134."; 3925 } 3926 description "Grouping for TLV134."; 3927 } 3928 grouping tlv140-ipv6-te-rid { 3929 leaf ipv6-te-routerid { 3930 type inet:ipv6-address; 3931 description 3932 "IPv6 Traffic Engineering router ID of the IS-IS node - 3933 IS-IS reference is TLV 140."; 3934 } 3935 description "Grouping for TLV140."; 3936 } 3937 grouping tlv129-protocols { 3938 leaf-list protocol-supported { 3939 type uint8; 3940 description 3941 "List of supported protocols of the IS-IS node - 3942 IS-IS reference is TLV 129."; 3943 } 3944 description "Grouping for TLV129."; 3945 } 3946 grouping tlv137-hostname { 3947 leaf dynamic-hostname { 3948 type string; 3949 description 3950 "Host Name of the IS-IS node - IS-IS reference 3951 is TLV 137."; 3952 } 3953 description "Grouping for TLV137."; 3954 } 3955 grouping tlv10-authentication { 3956 container authentication { 3957 leaf authentication-type { 3958 type identityref { 3959 base key-chain:crypto-algorithm; 3960 } 3961 description 3962 "Authentication type to be used with IS-IS node."; 3963 } 3964 leaf authentication-key { 3965 type string; 3966 description 3967 "Authentication key to be used. For security reasons, 3968 the authentication key MUST NOT be presented in 3969 a clear text format in response to any request 3970 (e.g., via get, get-config)."; 3971 } 3972 description 3973 "IS-IS node authentication information container - 3974 IS-IS reference is TLV 10."; 3975 } 3976 description "Grouping for TLV10."; 3977 } 3978 grouping tlv229-mt { 3979 container mt-entries { 3980 list topology { 3981 description 3982 "List of topologies supported"; 3984 leaf mt-id { 3985 type uint16 { 3986 range "0 .. 4095"; 3987 } 3988 description 3989 "Multi-Topology identifier of topology."; 3990 } 3992 leaf attributes { 3993 type bits { 3994 bit overload { 3995 description 3996 "If set, the originator is overloaded, 3997 and must be avoided in path calculation."; 3998 } 3999 bit attached { 4000 description 4001 "If set, the originator is attached to 4002 another area using the referred metric."; 4003 } 4004 } 4005 description 4006 "Attributes of the LSP for the associated 4007 topology."; 4008 } 4009 } 4010 description 4011 "IS-IS node topology information container - 4012 IS-IS reference is TLV 229."; 4013 } 4014 description "Grouping for TLV229."; 4015 } 4017 grouping tlv242-router-capabilities { 4018 container router-capabilities { 4019 list router-capability { 4020 leaf flags { 4021 type bits { 4022 bit flooding { 4023 position 0; 4024 description 4025 "If the S bit is set, the IS-IS Router CAPABILITY 4026 TLV MUST be flooded across the entire routing 4027 domain. If the S bit is clear, the TLV MUST NOT 4028 be leaked between levels. This bit MUST NOT 4029 be altered during the TLV leaking."; 4030 } 4031 bit down { 4032 position 1; 4033 description 4034 "When the IS-IS Router CAPABILITY TLV is leaked 4035 from level-2 to level-1, the D bit MUST be set. 4036 Otherwise, this bit MUST be clear. IS-IS Router 4037 capability TLVs with the D bit set MUST NOT be 4038 leaked from level-1 to level-2 in to prevent 4039 TLV looping."; 4040 } 4041 } 4042 description "Router Capability Flags"; 4043 } 4044 container node-tags { 4045 if-feature node-tag; 4046 list node-tag { 4047 leaf tag { 4048 type uint32; 4049 description "Node tag value."; 4050 } 4051 description "List of tags."; 4052 } 4053 description "Container for node admin tags"; 4054 } 4055 uses unknown-tlvs; 4057 leaf binary { 4058 type binary; 4059 description 4060 "Binary encoding of the IS-IS node capabilities"; 4061 } 4062 description 4063 "IS-IS node capabilities. This list element may 4064 be extended with detailed information - IS-IS 4065 reference is TLV 242."; 4066 } 4067 description "List of router capability TLVs."; 4068 } 4069 description "Grouping for TLV242."; 4070 } 4072 grouping tlv138-srlg { 4073 description 4074 "Grouping for TLV138."; 4075 container links-srlgs { 4076 list links { 4077 leaf neighbor-id { 4078 type extended-system-id; 4079 description "system-id of the extended neighbor."; 4080 } 4081 leaf flags { 4082 type uint8; 4083 description 4084 "Flags associated with the link."; 4085 } 4086 leaf link-local-id { 4087 type union { 4088 type inet:ip-address; 4089 type uint32; 4090 } 4091 description 4092 "Local identifier of the link. 4093 It could be an IPv4 address or a local identifier."; 4094 } 4095 leaf link-remote-id { 4096 type union { 4097 type inet:ip-address; 4098 type uint32; 4099 } 4100 description 4101 "Remote identifier of the link. 4102 It could be an IPv4 address or a remotely learned 4103 identifier."; 4104 } 4105 container srlgs { 4106 description "List of SRLGs."; 4107 leaf-list srlg { 4108 type uint32; 4109 description 4110 "SRLG value of the link."; 4111 } 4112 } 4113 description 4114 "SRLG attribute of a link."; 4115 } 4116 description 4117 "List of links with SRLGs"; 4118 } 4119 } 4121 /* Grouping for LSDB description */ 4123 grouping lsp-entry { 4124 description "IS-IS LSP database entry groupting"; 4126 leaf decoded-completed { 4127 type boolean; 4128 description "IS-IS LSP body fully decoded."; 4129 } 4130 leaf raw-data { 4131 type yang:hex-string; 4132 description 4133 "The hexadecial representation of the complete LSP in 4134 network-byte order (NBO) as received or originated."; 4135 } 4136 leaf lsp-id { 4137 type lsp-id; 4138 description "LSP ID of the LSP"; 4139 } 4140 leaf checksum { 4141 type uint16; 4142 description "LSP checksum"; 4143 } 4144 leaf remaining-lifetime { 4145 type uint16; 4146 units "seconds"; 4147 description 4148 "Remaining lifetime (in seconds) until LSP expiration."; 4149 } 4150 leaf sequence { 4151 type uint32; 4152 description 4153 "This leaf describes the sequence number of the LSP."; 4154 } 4155 leaf attributes { 4156 type bits { 4157 bit partitioned { 4158 description "Originator partition repair supported"; 4159 } 4160 bit attached-error { 4161 description 4162 "If set, the originator is attached to 4163 another area using the referred metric."; 4164 } 4165 bit attached-expense { 4166 description 4167 "If set, the originator is attached to 4168 another area using the referred metric."; 4169 } 4170 bit attached-delay { 4171 description 4172 "If set, the originator is attached to 4173 another area using the referred metric."; 4174 } 4175 bit attached-default { 4176 description 4177 "If set, the originator is attached to 4178 another area using the referred metric."; 4179 } 4180 bit overload { 4181 description 4182 "If set, the originator is overloaded, 4183 and must be avoided in path calculation."; 4184 } 4185 } 4186 description "LSP attributes"; 4187 } 4189 uses tlv132-ipv4-addresses; 4190 uses tlv232-ipv6-addresses; 4191 uses tlv134-ipv4-te-rid; 4192 uses tlv140-ipv6-te-rid; 4193 uses tlv129-protocols; 4194 uses tlv137-hostname; 4195 uses tlv10-authentication; 4196 uses tlv229-mt; 4197 uses tlv242-router-capabilities; 4198 uses tlv138-srlg; 4199 uses unknown-tlvs; 4201 container is-neighbor { 4202 list neighbor { 4203 key neighbor-id; 4205 uses neighbor; 4206 description "List of neighbors."; 4207 } 4208 description 4209 "Standard IS neighbors container - IS-IS reference is 4210 TLV 2."; 4211 } 4213 container extended-is-neighbor { 4214 list neighbor { 4215 key neighbor-id; 4217 uses neighbor-extended; 4218 description 4219 "List of extended IS neighbors"; 4220 } 4221 description 4222 "Standard IS extended neighbors container - IS-IS 4223 reference is TLV 22"; 4224 } 4226 container ipv4-internal-reachability { 4227 list prefixes { 4228 uses prefix-ipv4-std; 4229 description "List of prefixes."; 4230 } 4231 description 4232 "IPv4 internal reachability information container - IS-IS 4233 reference is TLV 128."; 4234 } 4236 container ipv4-external-reachability { 4237 list prefixes { 4238 uses prefix-ipv4-std; 4239 description "List of prefixes."; 4240 } 4241 description 4242 "IPv4 external reachability information container - 4243 IS-IS reference is TLV 130."; 4244 } 4246 container extended-ipv4-reachability { 4247 list prefixes { 4248 uses prefix-ipv4-extended; 4249 uses unknown-tlvs; 4250 description "List of prefixes."; 4251 } 4252 description 4253 "IPv4 extended reachability information container - 4254 IS-IS reference is TLV 135."; 4255 } 4257 container mt-is-neighbor { 4258 list neighbor { 4259 leaf mt-id { 4260 type uint16 { 4261 range "0 .. 4095"; 4262 } 4263 description "Multi-topology (MT) identifier"; 4264 } 4265 uses neighbor-extended; 4266 description "List of neighbors."; 4267 } 4268 description 4269 "IS-IS multi-topology neighbor container - IS-IS 4270 reference is TLV 223."; 4271 } 4273 container mt-extended-ipv4-reachability { 4274 list prefixes { 4275 leaf mt-id { 4276 type uint16 { 4277 range "0 .. 4095"; 4278 } 4279 description "Multi-topology (MT) identifier"; 4280 } 4281 uses prefix-ipv4-extended; 4282 uses unknown-tlvs; 4283 description "List of extended prefixes."; 4284 } 4285 description 4286 "IPv4 multi-topolgy (MT) extended reachability 4287 information container - IS-IS reference is TLV 235."; 4288 } 4290 container mt-ipv6-reachability { 4291 list prefixes { 4292 leaf MT-ID { 4293 type uint16 { 4294 range "0 .. 4095"; 4296 } 4297 description "Multi-topology (MT) identifier"; 4298 } 4299 uses prefix-ipv6-extended; 4300 uses unknown-tlvs; 4301 description "List of IPv6 extended prefixes."; 4302 } 4303 description 4304 "IPv6 multi-topolgy (MT) extended reachability 4305 information container - IS-IS reference is TLV 237."; 4306 } 4308 container ipv6-reachability { 4309 list prefixes { 4310 uses prefix-ipv6-extended; 4311 uses unknown-tlvs; 4312 description "List of IPv6 prefixes."; 4313 } 4314 description 4315 "IPv6 reachability information container - IS-IS 4316 reference is TLV 236."; 4317 } 4318 } 4320 grouping lsdb { 4321 description "Link State Database (LSDB) grouping"; 4322 container database { 4323 config false; 4324 list levels { 4325 key level; 4327 leaf level { 4328 type level-number; 4329 description "LSDB level number (1 or 2)"; 4330 } 4331 list lsp { 4332 key lsp-id; 4333 uses lsp-entry; 4334 description "List of LSPs in LSDB"; 4335 } 4336 description "List of LSPs for the LSDB level container"; 4337 } 4338 description "IS-IS Link State database container"; 4339 } 4340 } 4341 /* Augmentations */ 4343 augment "/rt:routing/" 4344 +"rt:ribs/rt:rib/rt:routes/rt:route" { 4345 when "rt:source-protocol = 'isis:isis'" { 4346 description "IS-IS-specific route attributes."; 4347 } 4348 uses route-content; 4349 description 4350 "This augments route object in RIB with IS-IS-specific 4351 attributes."; 4352 } 4354 augment "/if:interfaces/if:interface" { 4355 leaf clns-mtu { 4356 type uint16; 4357 description "CLNS MTU of the interface"; 4358 } 4359 description "ISO specific interface parameters."; 4360 } 4362 augment "/rt:routing/rt:control-plane-protocols/" 4363 +"rt:control-plane-protocol" { 4364 when "rt:type = 'isis:isis'" { 4365 description 4366 "This augment is only valid when routing protocol 4367 instance type is 'isis'"; 4368 } 4369 description 4370 "This augments a routing protocol instance with IS-IS 4371 specific parameters."; 4372 container isis { 4373 must "count(area-address) > 0" { 4374 error-message 4375 "At least one area-address must be configured."; 4376 description 4377 "Enforce configuration of at least one area."; 4378 } 4380 uses instance-config; 4381 uses instance-state; 4383 container topologies { 4384 if-feature multi-topology; 4385 list topology { 4386 key "name"; 4387 leaf enable { 4388 type boolean; 4389 description "Topology enable configuration"; 4390 } 4391 leaf name { 4392 type leafref { 4393 path "../../../../../../rt:ribs/rt:rib/rt:name"; 4394 } 4395 description 4396 "Routing Information Base (RIB) corresponding 4397 to topology."; 4398 } 4400 uses multi-topology-config; 4402 description "List of topologies"; 4403 } 4404 description "Multi-topology container"; 4405 } 4406 container interfaces { 4407 list interface { 4408 key "name"; 4409 leaf name { 4410 type if:interface-ref; 4412 description 4413 "Reference to the interface within 4414 the routing-instance."; 4415 } 4416 uses interface-config; 4417 uses interface-state; 4418 container topologies { 4419 if-feature multi-topology; 4420 list topology { 4421 key name; 4423 leaf name { 4424 type leafref { 4425 path "../../../../../../../../"+ 4426 "rt:ribs/rt:rib/rt:name"; 4427 } 4429 description 4430 "Routing Information Base (RIB) corresponding 4431 to topology."; 4432 } 4433 uses multi-topology-interface-config; 4434 description "List of interface topologies"; 4435 } 4436 description "Multi-topology container"; 4437 } 4438 description "List of IS-IS interfaces."; 4439 } 4440 description 4441 "IS-IS interface specific configuration container"; 4442 } 4444 description 4445 "IS-IS configuration/state top-level container"; 4446 } 4447 } 4449 /* RPC methods */ 4451 rpc clear-adjacency { 4452 description 4453 "This RPC request clears a particular set of IS-IS 4454 adjacencies. If the operation fails due to an internal 4455 reason, then the error-tag and error-app-tag should be 4456 set indicating the reason for the failure."; 4457 input { 4459 leaf routing-protocol-instance-name { 4460 type leafref { 4461 path "/rt:routing/rt:control-plane-protocols/" 4462 + "rt:control-plane-protocol/rt:name"; 4463 } 4464 mandatory "true"; 4465 description 4466 "Name of the IS-IS protocol instance whose IS-IS 4467 adjacency is being cleared. 4469 If the corresponding IS-IS instance doesn't exist, 4470 then the operation will fail with an error-tag of 4471 'data-missing' and an error-app-tag of 4472 'routing-protocol-instance-not-found'."; 4473 } 4474 leaf level { 4475 type level; 4476 description 4477 "IS-IS level of the adjacency to be cleared. If the 4478 IS-IS level is level-1-2, both level 1 and level 2 4479 adjacencies would be cleared. 4481 If the value provided is different from the one 4482 authorized in the enum type, then the operation 4483 SHALL fail with an error-tag of 'data-missing' and 4484 an error-app-tag of 'bad-isis-level'."; 4485 } 4486 leaf interface { 4487 type if:interface-ref; 4488 description 4489 "IS-IS interface name. 4491 If the corresponding IS-IS interface doesn't exist, 4492 then the operation SHALL fail with an error-tag of 4493 'data-missing' and an error-app-tag of 4494 'isis-interface-not-found'."; 4495 } 4496 } 4497 } 4499 rpc clear-database { 4500 description 4501 "This RPC request clears a particular IS-IS database. If 4502 the operation fails for an IS-IS internal reason, then 4503 the error-tag and error-app-tag should be set 4504 indicating the reason for the failure."; 4505 input { 4506 leaf routing-protocol-instance-name { 4507 type leafref { 4508 path "/rt:routing/rt:control-plane-protocols/" 4509 + "rt:control-plane-protocol/rt:name"; 4510 } 4511 mandatory "true"; 4512 description 4513 "Name of the IS-IS protocol instance whose IS-IS 4514 database(s) is/are being cleared. 4516 If the corresponding IS-IS instance doesn't exist, 4517 then the operation will fail with an error-tag of 4518 'data-missing' and an error-app-tag of 4519 'routing-protocol-instance-not-found'."; 4520 } 4521 leaf level { 4522 type level; 4523 description 4524 "IS-IS level of the adjacency to be cleared. If the 4525 IS-IS level is level-1-2, both level 1 and level 2 4526 databases would be cleared. 4528 If the value provided is different from the one 4529 authorized in the enum type, then the operation 4530 SHALL fail with an error-tag of 'data-missing' and 4531 an error-app-tag of 'bad-isis-level'."; 4532 } 4533 } 4534 } 4536 /* Notifications */ 4538 notification database-overload { 4539 uses notification-instance-hdr; 4541 leaf overload { 4542 type enumeration { 4543 enum off { 4544 description 4545 "Indicates IS-IS instance has left overload state"; 4546 } 4547 enum on { 4548 description 4549 "Indicates IS-IS instance has entered overload state"; 4550 } 4552 } 4553 description "New overload state of the IS-IS instance"; 4554 } 4555 description 4556 "This notification is sent when an IS-IS instance 4557 overload state changes."; 4558 } 4560 notification lsp-too-large { 4561 uses notification-instance-hdr; 4562 uses notification-interface-hdr; 4564 leaf pdu-size { 4565 type uint32; 4566 description "Size of the LSP PDU"; 4567 } 4568 leaf lsp-id { 4569 type lsp-id; 4570 description "LSP ID"; 4571 } 4572 description 4573 "This notification is sent when we attempt to propagate 4574 an LSP that is larger than the dataLinkBlockSize for the 4575 circuit. The notification generation must be throttled 4576 with at least 5 seconds betweeen successive 4577 notifications."; 4579 } 4581 notification if-state-change { 4582 uses notification-instance-hdr; 4583 uses notification-interface-hdr; 4585 leaf state { 4586 type if-state-type; 4587 description "Interface state."; 4588 } 4589 description 4590 "This notification is sent when an interface 4591 state change is detected."; 4592 } 4594 notification corrupted-lsp-detected { 4595 uses notification-instance-hdr; 4596 leaf lsp-id { 4597 type lsp-id; 4598 description "LSP ID"; 4599 } 4600 description 4601 "This notification is sent when we find that 4602 an LSP that was stored in memory has become 4603 corrupted."; 4604 } 4606 notification attempt-to-exceed-max-sequence { 4607 uses notification-instance-hdr; 4608 leaf lsp-id { 4609 type lsp-id; 4610 description "LSP ID"; 4611 } 4612 description 4613 "This notification is sent when the system 4614 wraps the 32-bit sequence counter of an LSP."; 4615 } 4617 notification id-len-mismatch { 4618 uses notification-instance-hdr; 4619 uses notification-interface-hdr; 4621 leaf pdu-field-len { 4622 type uint8; 4623 description "Size of the ID length in the received PDU"; 4624 } 4625 leaf raw-pdu { 4626 type binary; 4627 description "Received raw PDU."; 4628 } 4629 description 4630 "This notification is sent when we receive a PDU 4631 with a different value for the system-id length. 4632 The notification generation must be throttled 4633 with at least 5 seconds betweeen successive 4634 notifications."; 4635 } 4637 notification max-area-addresses-mismatch { 4638 uses notification-instance-hdr; 4639 uses notification-interface-hdr; 4641 leaf max-area-addresses { 4642 type uint8; 4643 description "Received number of supported areas"; 4644 } 4645 leaf raw-pdu { 4646 type binary; 4647 description "Received raw PDU."; 4648 } 4649 description 4650 "This notification is sent when we receive a PDU 4651 with a different value for the Maximum Area Addresses. 4652 The notification generation must be throttled 4653 with at least 5 seconds betweeen successive 4654 notifications."; 4655 } 4657 notification own-lsp-purge { 4658 uses notification-instance-hdr; 4659 uses notification-interface-hdr; 4660 leaf lsp-id { 4661 type lsp-id; 4662 description "LSP ID"; 4663 } 4664 description 4665 "This notification is sent when the system receives 4666 a PDU with its own system-id and zero age."; 4667 } 4669 notification sequence-number-skipped { 4670 uses notification-instance-hdr; 4671 uses notification-interface-hdr; 4672 leaf lsp-id { 4673 type lsp-id; 4674 description "LSP ID"; 4676 } 4677 description 4678 "This notification is sent when the system receives a 4679 PDU with its own system-id and different contents. The 4680 system has to reoriginate the LSP with a higher sequence 4681 number."; 4682 } 4684 notification authentication-type-failure { 4685 uses notification-instance-hdr; 4686 uses notification-interface-hdr; 4687 leaf raw-pdu { 4688 type binary; 4689 description "Received raw PDU."; 4690 } 4691 description 4692 "This notification is sent when the system receives a 4693 PDU with the wrong authentication type field. 4694 The notification generation must be throttled 4695 with at least 5 seconds betweeen successive 4696 notifications."; 4697 } 4699 notification authentication-failure { 4700 uses notification-instance-hdr; 4701 uses notification-interface-hdr; 4702 leaf raw-pdu { 4703 type binary; 4704 description "Received raw PDU."; 4705 } 4706 description 4707 "This notification is sent when the system receives 4708 a PDU with the wrong authentication information. 4709 The notification generation must be throttled with 4710 with at least 5 seconds betweeen successive 4711 notifications."; 4712 } 4714 notification version-skew { 4715 uses notification-instance-hdr; 4716 uses notification-interface-hdr; 4717 leaf protocol-version { 4718 type uint8; 4719 description "Protocol version received in the PDU."; 4720 } 4721 leaf raw-pdu { 4722 type binary; 4723 description "Received raw PDU."; 4725 } 4726 description 4727 "This notification is sent when the system receives a 4728 PDU with a different protocol version number. 4729 The notification generation must be throttled 4730 with at least 5 seconds betweeen successive 4731 notifications."; 4732 } 4734 notification area-mismatch { 4735 uses notification-instance-hdr; 4736 uses notification-interface-hdr; 4737 leaf raw-pdu { 4738 type binary; 4739 description "Received raw PDU."; 4740 } 4741 description 4742 "This notification is sent when the system receives a 4743 Hello PDU from an IS that does not share any area 4744 address. The notification generation must be throttled 4745 with at least 5 seconds betweeen successive 4746 notifications."; 4747 } 4749 notification rejected-adjacency { 4750 uses notification-instance-hdr; 4751 uses notification-interface-hdr; 4752 leaf raw-pdu { 4753 type binary; 4754 description 4755 "Received raw PDU."; 4756 } 4757 leaf reason { 4758 type string { 4759 length "1..255"; 4760 } 4761 description 4762 "The system may provide a reason to reject the 4763 adjacency. If the reason is not available, 4764 an empty string will be returned. 4765 The expected format is a single line text."; 4766 } 4767 description 4768 "This notification is sent when the system receives a 4769 Hello PDU from an IS but does not establish an adjacency 4770 for some reason. The notification generation must be 4771 throttled with at least 5 seconds betweeen successive 4772 notifications."; 4774 } 4776 notification protocols-supported-mismatch { 4777 uses notification-instance-hdr; 4778 uses notification-interface-hdr; 4779 leaf raw-pdu { 4780 type binary; 4781 description "Received raw PDU."; 4782 } 4783 leaf-list protocols { 4784 type uint8; 4785 description 4786 "List of protocols supported by the remote system."; 4787 } 4788 description 4789 "This notification is sent when the system receives a 4790 non-pseudonode LSP that has no matching protocols 4791 supported. The notification generation must be throttled 4792 with at least 5 seconds betweeen successive 4793 notifications."; 4794 } 4796 notification lsp-error-detected { 4797 uses notification-instance-hdr; 4798 uses notification-interface-hdr; 4799 leaf lsp-id { 4800 type lsp-id; 4801 description "LSP ID."; 4802 } 4803 leaf raw-pdu { 4804 type binary; 4805 description "Received raw PDU."; 4806 } 4807 leaf error-offset { 4808 type uint32; 4809 description 4810 "If the problem is a malformed TLV, the error-offset 4811 points to the start of the TLV. If the problem is with 4812 the LSP header, the error-offset points to the errant 4813 byte"; 4814 } 4815 leaf tlv-type { 4816 type uint8; 4817 description 4818 "If the problem is a malformed TLV, the tlv-type is set 4819 to the type value of the suspicious TLV. Otherwise, 4820 this leaf is not present."; 4822 } 4823 description 4824 "This notification is sent when the system receives an 4825 LSP with a parse error. The notification generation must 4826 be throttled with at least 5 seconds betweeen successive 4827 notifications."; 4828 } 4830 notification adjacency-state-change { 4831 uses notification-instance-hdr; 4832 uses notification-interface-hdr; 4833 leaf neighbor { 4834 type string { 4835 length "1..255"; 4836 } 4837 description 4838 "Name of the neighbor. 4839 It corresponds to the hostname associated 4840 with the system-id of the neighbor in the 4841 mapping database (RFC5301). 4842 If the name of the neighbor is 4843 not available, it is not returned."; 4844 } 4845 leaf neighbor-system-id { 4846 type system-id; 4847 description "Neighbor system-id"; 4848 } 4849 leaf state { 4850 type adj-state-type; 4852 description "New state of the IS-IS adjacency."; 4853 } 4854 leaf reason { 4855 type string { 4856 length "1..255"; 4857 } 4858 description 4859 "If the adjacency is going to DOWN, this leaf provides 4860 a reason for the adjacency going down. The reason is 4861 provided as a text. If the adjacency is going to UP, no 4862 reason is provided. The expected format is a single line 4863 text."; 4864 } 4865 description 4866 "This notification is sent when an IS-IS adjacency 4867 moves to Up state or to Down state."; 4868 } 4869 notification lsp-received { 4870 uses notification-instance-hdr; 4871 uses notification-interface-hdr; 4873 leaf lsp-id { 4874 type lsp-id; 4875 description "LSP ID"; 4876 } 4877 leaf sequence { 4878 type uint32; 4879 description "Sequence number of the received LSP."; 4880 } 4881 leaf received-timestamp { 4882 type yang:timestamp; 4884 description "Timestamp when the LSP was received."; 4885 } 4886 leaf neighbor-system-id { 4887 type system-id; 4888 description "Neighbor system-id of LSP sender"; 4889 } 4890 description 4891 "This notification is sent when an LSP is received. 4892 The notification generation must be throttled with at 4893 least 5 seconds betweeen successive notifications."; 4894 } 4896 notification lsp-generation { 4897 uses notification-instance-hdr; 4899 leaf lsp-id { 4900 type lsp-id; 4901 description "LSP ID"; 4902 } 4903 leaf sequence { 4904 type uint32; 4905 description "Sequence number of the received LSP."; 4906 } 4907 leaf send-timestamp { 4908 type yang:timestamp; 4910 description "Timestamp when our LSP was regenerated."; 4911 } 4912 description 4913 "This notification is sent when an LSP is regenerated. 4914 The notification generation must be throttled with at 4915 least 5 seconds betweeen successive notifications."; 4916 } 4918 } 4920 4922 7. Security Considerations 4924 The YANG module specified in this document defines a schema for data 4925 that is designed to be accessed via network management protocols such 4926 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 4927 is the secure transport layer, and the mandatory-to-implement secure 4928 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 4929 is HTTPS, and the mandatory-to-implement secure transport is TLS 4930 [RFC8446] 4932 The Network Configuration Access Control Model (NACM) [RFC8341] 4933 provides the means to restrict access for particular NETCONF or 4934 RESTCONF users to a preconfigured subset of all available NETCONF or 4935 RESTCONF protocol operations and content. 4937 There are a number of data nodes defined in this YANG module that are 4938 writable/creatable/deletable (i.e., config true, which is the 4939 default). These data nodes may be considered sensitive or vulnerable 4940 in some network environments. Write operations (e.g., edit-config) 4941 to these data nodes without proper protection can have a negative 4942 effect on network operations. For IS-IS, the ability to modify IS-IS 4943 configuration will allow the entire IS-IS domain to be compromised 4944 including creating adjacencies with unauthorized routers to misroute 4945 traffic, isolate routers, or mount a massive Denial-of-Service (DoS) 4946 attack. A user should consider all the configuration nodes are 4947 sensible. 4949 Some of the readable data nodes in this YANG module may be considered 4950 sensitive or vulnerable in some network environments. It is thus 4951 important to control read access (e.g., via get, get-config, or 4952 notification) to these data nodes. The exposure of the Link State 4953 Database (LSDB) will expose the detailed topology of the network 4954 including authentication parameters. Implementations MUST NOT 4955 provide a configured authentication key in a clear text format in 4956 response to any request (e.g., via get, get-config). 4958 For IS-IS authentication, configuration is supported via the 4959 specification of key-chain [RFC8177] or the direction specification 4960 of key and authentication algorithm. Hence, authentification 4961 configuration using the "auth-table-trailer" case in the 4962 "authentication" container inherits the security considerations of 4963 [RFC8177]. This includes the considerations with respect to the 4964 local storage and handling of authentication keys. 4966 Some of the RPC operations in this YANG module may be considered 4967 sensitive or vulnerable in some network environments. It is thus 4968 important to control access to these operations. The OSPF YANG 4969 module support the "clear-adjacency" and "clear-database" RPCs. If 4970 access too either of these is compromised, they can result in 4971 temporary network outages be employed to mount DoS attacks. 4973 8. Contributors 4975 Authors would like to thank Kiran Agrahara Sreenivasa, Dean 4976 Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major 4977 contributions to the draft. 4979 9. IANA Considerations 4981 The IANA is requested to assign two new URIs from the IETF XML 4982 registry ([RFC3688]). Authors are suggesting the following URI: 4984 URI: urn:ietf:params:xml:ns:yang:ietf-isis 4985 Registrant Contact: The IESG 4986 XML: N/A, the requested URI is an XML namespace 4988 This document also requests one new YANG module name in the YANG 4989 Module Names registry ([RFC6020]) with the following suggestion: 4991 name: ietf-isis 4992 namespace: urn:ietf:params:xml:ns:yang:ietf-isis 4993 prefix: isis 4994 reference: RFC XXXX 4996 10. Change log for ietf-isis YANG module 4998 10.1. From version -29 to version -30 5000 o Set a maximum-length of 255 for the non-best-reason leaf. 5002 o Updated some descriptions. 5004 o Renamed "level-db" container to "levels" for consistency reasons. 5006 o Added some RFC references in the YANG model. 5008 o Leaf default-metric of container prefix-ipv4-std is now a 5009 container. 5011 o Changed the description of the authentication and removed the 5012 reference to MD5 as a possible way to hide the password. 5014 o Changed leaf type for authentication type within 5015 tlv10-authentication container.Moved from string to 5016 keychain:crypto-algorithm identity. 5018 o Some admin strings are now limited to a range of 1..255. 5020 o Hostname string in hostname DB is limited to 255 as per RFC5301. 5022 o In FRR stats, "prefix" is now encoded as inet:ip-prefix rather 5023 than a string. "alternate" is now encoded as ip-address. 5025 10.2. From version -28 to version -29 5027 o Fixed area-address type pattern. The authorized number of bytes 5028 was wrong. 5030 10.3. From version -27 to version -28 5032 o Fixed non accurate description of level-type leaf. 5034 10.4. From version -26 to version -27 5036 o Fixed XPATH to switching-capability leaf in "when" statement of 5037 psc-specific and tdm-specific containers. 5039 10.5. From version -25 to version -26 5041 o Modify BFD reference descriptions. 5043 o Fix indentation. 5045 o "uses interface-state" was missing. 5047 10.6. From version -24 to version -25 5049 o RPC clear-adjacency uses now an interface reference instead of a 5050 string. 5052 o Use expanded "address-family" rather than "af" in the model. 5054 o Fix pattern for area-address. 5056 o Removed unnecessary identities. 5058 o Added an instances container and list in the modeling of neighbors 5059 in the LSDB. This is to manage the case where there are parallel 5060 links between two neighbors. 5062 o Notification instance header: removed routing-instance leaf 5063 (alignment with OSPF). 5065 o Notification instance header: changed routing-protocol-name to a 5066 reference. 5068 o Notification interface header: changed interface to a reference. 5070 o RPCs: changed instance-state-ref typedef to a leafref. Removed 5071 associated typedef. 5073 o Revised some groupings and their names (alignment with OSPF). 5075 o Some description alignment with OSPF. 5077 o auto-cost container alignment with OSPF. 5079 o MT-ID leaf in database description renamed (lower-case) mt-id. 5081 o In lsp-log grouping, leaf change is renamed reason to align with 5082 OSPF. 5084 o Added some link attributes (GMPLS, TE, extended TE, SRLGs) in the 5085 LSDB. 5087 o Added extended-system-id typedef which contains the systemid plus 5088 the pseudonode number. 5090 o Add support of POI Purge Originator Identification. 5092 10.7. From version -22 to version -24 5094 o Fix revision date of the module. 5096 10.8. From version -21 to version -22 5098 o TE router-id modeling alignment with OSPF. 5100 o Add max-ecmp + feature in spf-control container (alignment with 5101 OSPF). 5103 10.9. From version -20 to version -21 5105 o Model revision date fix 5107 10.10. From version -19 to version -20 5109 o Moved to Yang 1.1 5111 o Lower case enumerations 5113 o Add RFC references to features 5115 o Remove segment-routing feature 5117 o Modified BFD activation modeling 5119 10.11. From version -18 to version -19 5121 o Align with draft-ietf-netmod-rfc8022bis. 5123 o Modify address family types as per draft-ietf-rtgwg-routing-types- 5124 17. 5126 10.12. From version -17 to version -18 5128 o NMDA compliancy. 5130 o Set some default values. 5132 o Align with iana-rt-types module. 5134 10.13. From version -16 to version -17 5136 o Cosmetic fixes. 5138 o Use of rt-types model. 5140 10.14. From version -15 to version -16 5142 o Alignment with last IETF key chain model. 5144 o lsp-log "change" leaf moved as an identity. 5146 o Incremental SPF removed from spf-log types. 5148 10.15. From version -14 to version -15 5150 o Alignment with OSPF model done: 5152 * Added spf-control container with IETF SPF delay algorithm as a 5153 feature. 5155 * Added graceful-restart options. 5157 * Added nsr as a feature. 5159 * Removed per topology FRR. Need to be augmented if necessary. 5161 * Created an ldp container within mpls. 5163 * Renamed igp-ldp-sync to igp-sync. 5165 * Added auto-cost container. 5167 * Moved reference-bandwidth under auto-cost container. 5169 * Added IS-IS local RIB as operational state. 5171 * Added decode-completed and raw-data leaves in the LSDB model. 5173 * Modified the notification header. 5175 10.16. From version -13 to version -14 5177 o Segment Routing extensions are now in a separate document. 5179 10.17. From version -12 to version -13 5181 o Move feature nlpid-control to container rather than list. 5183 o Rename multi-topology to topologies to align with OSPF. 5185 o Rename bfd/enabled to bfd/enable for consistency reason. 5187 o Add support for NSR with a feature. 5189 10.18. From version -09 to version -12 5191 o Rename node-tag container to node-tags. 5193 10.19. From version -08 to version -09 5195 o Added container before af list. 5197 o Added container before topology list. 5199 o Aligned LFA if per level cfg. 5201 o Align to draft-ietf-netmod-routing-cfg-23. 5203 10.20. From version -07 to version -08 5205 o Remove selector from system-id type. 5207 o Add some default values. 5209 o Moved lists to containers+groupings for per level configuration. 5211 o remove routing-instance as per core routing model v21. 5213 o added BFD leaf (no more BFD protocol model). 5215 o changed keychain module reference. 5217 10.21. From version -05 to version -07 5219 o Move Overload config from list to container. 5221 o Move Overload-max-metric config from list to container. 5223 o Move preference config from list to container. 5225 o Add Node flag in config. 5227 o Removed BFD config => moved to isis-bfd module. 5229 o Remove call to routing policy model. 5231 10.22. From version -03 to version -05 5233 o Correct invalid references to previous versions of core routing 5234 model. 5236 o Remove BFD config and replace by groupings from ietf-bfd. 5238 o Adding routing-policy support through routing-policy model. 5240 10.23. From version -02 to version -03 5242 o Reviewed config and op state groupings. 5244 o Add default value to lfa candidate-disabled. 5246 o Add enable leaf to isis container to reflect admin state. 5248 o Move to VRF centric only. 5250 o Segment routing is part os a separate module. 5252 10.24. From version -01 to version -02 5254 o Adding IPFRR. 5256 o Adding igp-ldp-sync. 5258 o Adding segment-routing. 5260 o Adding instance reference to operational states. 5262 o Move AF type from string to identity. 5264 o Updated router-capability in LSDB description. 5266 o packet counters moved to interface-packet-counters. 5268 o Added modification information in lsp-log. 5270 o Removing igp-ldp-sync timer in IS-IS. 5272 o Defining hierarchy for operational states. 5274 o Adding clns-mtu. 5276 o Adding key-chain. 5278 10.25. From version -00 to version -01 5280 o Interface metric move from af container to interface container. 5282 o Hello-padding on interface moved to hello-padding-disable with 5283 empty type. 5285 o three-way-handshake removed. 5287 o route preference changed to a choice. 5289 o csnp-authentication/psnp-authentication merged to authentication 5290 container. 5292 o lsp-gen-interval-exp-delay removed. 5294 o Added overload-max-metric feature. 5296 o overload-max-metric is in a separate container. 5298 o Change hello-padding to container. 5300 o Change bfd to container. 5302 o Make BFD a feature. 5304 o Create mpls-te container and put router-id inside. 5306 o Remove GR helper disable and timers. 5308 11. References 5310 11.1. Normative References 5312 [I-D.ietf-bfd-yang] 5313 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 5314 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 5315 Detection (BFD)", draft-ietf-bfd-yang-17 (work in 5316 progress), August 2018. 5318 [ISO-10589] 5319 ISO, "Intermediate System to Intermediate System intra- 5320 domain routeing information exchange protocol for use in 5321 conjunction with the protocol for providing the 5322 connectionless-mode network service (ISO 8473)", 5323 International Standard 10589: 2002, Second Edition, 2002. 5325 [RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and 5326 dual environments", RFC 1195, DOI 10.17487/RFC1195, 5327 December 1990, . 5329 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 5330 Requirement Levels", BCP 14, RFC 2119, 5331 DOI 10.17487/RFC2119, March 1997, 5332 . 5334 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 5335 DOI 10.17487/RFC3688, January 2004, 5336 . 5338 [RFC5029] Vasseur, JP. and S. Previdi, "Definition of an IS-IS Link 5339 Attribute Sub-TLV", RFC 5029, DOI 10.17487/RFC5029, 5340 September 2007, . 5342 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi 5343 Topology (MT) Routing in Intermediate System to 5344 Intermediate Systems (IS-ISs)", RFC 5120, 5345 DOI 10.17487/RFC5120, February 2008, 5346 . 5348 [RFC5130] Previdi, S., Shand, M., Ed., and C. Martin, "A Policy 5349 Control Mechanism in IS-IS Using Administrative Tags", 5350 RFC 5130, DOI 10.17487/RFC5130, February 2008, 5351 . 5353 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for 5354 IP Fast Reroute: Loop-Free Alternates", RFC 5286, 5355 DOI 10.17487/RFC5286, September 2008, 5356 . 5358 [RFC5301] McPherson, D. and N. Shen, "Dynamic Hostname Exchange 5359 Mechanism for IS-IS", RFC 5301, DOI 10.17487/RFC5301, 5360 October 2008, . 5362 [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic 5363 Engineering", RFC 5305, DOI 10.17487/RFC5305, October 5364 2008, . 5366 [RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS", 5367 RFC 5306, DOI 10.17487/RFC5306, October 2008, 5368 . 5370 [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308, 5371 DOI 10.17487/RFC5308, October 2008, 5372 . 5374 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5375 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 5376 . 5378 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5379 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 5380 DOI 10.17487/RFC5881, June 2010, 5381 . 5383 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 5384 the Network Configuration Protocol (NETCONF)", RFC 6020, 5385 DOI 10.17487/RFC6020, October 2010, 5386 . 5388 [RFC6119] Harrison, J., Berger, J., and M. Bartlett, "IPv6 Traffic 5389 Engineering in IS-IS", RFC 6119, DOI 10.17487/RFC6119, 5390 February 2011, . 5392 [RFC6232] Wei, F., Qin, Y., Li, Z., Li, T., and J. Dong, "Purge 5393 Originator Identification TLV for IS-IS", RFC 6232, 5394 DOI 10.17487/RFC6232, May 2011, 5395 . 5397 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 5398 and A. Bierman, Ed., "Network Configuration Protocol 5399 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 5400 . 5402 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 5403 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 5404 . 5406 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 5407 RFC 6991, DOI 10.17487/RFC6991, July 2013, 5408 . 5410 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. 5411 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", 5412 RFC 7490, DOI 10.17487/RFC7490, April 2015, 5413 . 5415 [RFC7794] Ginsberg, L., Ed., Decraene, B., Previdi, S., Xu, X., and 5416 U. Chunduri, "IS-IS Prefix Attributes for Extended IPv4 5417 and IPv6 Reachability", RFC 7794, DOI 10.17487/RFC7794, 5418 March 2016, . 5420 [RFC7810] Previdi, S., Ed., Giacalone, S., Ward, D., Drake, J., and 5421 Q. Wu, "IS-IS Traffic Engineering (TE) Metric Extensions", 5422 RFC 7810, DOI 10.17487/RFC7810, May 2016, 5423 . 5425 [RFC7917] Sarkar, P., Ed., Gredler, H., Hegde, S., Litkowski, S., 5426 and B. Decraene, "Advertising Node Administrative Tags in 5427 IS-IS", RFC 7917, DOI 10.17487/RFC7917, July 2016, 5428 . 5430 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 5431 RFC 7950, DOI 10.17487/RFC7950, August 2016, 5432 . 5434 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 5435 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 5436 . 5438 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 5439 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 5440 May 2017, . 5442 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 5443 Zhang, "YANG Data Model for Key Chains", RFC 8177, 5444 DOI 10.17487/RFC8177, June 2017, 5445 . 5447 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 5448 "Common YANG Data Types for the Routing Area", RFC 8294, 5449 DOI 10.17487/RFC8294, December 2017, 5450 . 5452 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 5453 Access Control Model", STD 91, RFC 8341, 5454 DOI 10.17487/RFC8341, March 2018, 5455 . 5457 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 5458 and R. Wilton, "Network Management Datastore Architecture 5459 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 5460 . 5462 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 5463 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 5464 . 5466 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 5467 Routing Management (NMDA Version)", RFC 8349, 5468 DOI 10.17487/RFC8349, March 2018, 5469 . 5471 [RFC8405] Decraene, B., Litkowski, S., Gredler, H., Lindem, A., 5472 Francois, P., and C. Bowers, "Shortest Path First (SPF) 5473 Back-Off Delay Algorithm for Link-State IGPs", RFC 8405, 5474 DOI 10.17487/RFC8405, June 2018, 5475 . 5477 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 5478 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 5479 . 5481 11.2. Informative References 5483 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP 5484 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March 5485 2009, . 5487 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 5488 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 5489 . 5491 Appendix A. Example of IS-IS configuration in XML 5493 This section gives an example of configuration of an IS-IS instance 5494 on a device. The example is written in XML. 5496 5497 5498 5499 SLI 5500 1.1.1.1 5501 5502 5503 ISIS-example 5504 5505 5506 5508 isis:isis 5509 5510 5511 5512 true 5513 level-2 5514 87FC.FCDF.4432 5515 49.0001 5516 5517 5518 192.0.2.1 5519 5520 5521 65535 5522 65000 5523 5524 wide-only 5525 5526 5527 111111 5528 5529 5530 5531 ipv4 5532 true 5533 5534 5535 ipv6 5536 true 5537 5538 5539 5540 5541 Loopback0 5542 200 5543 5544 0 5545 5546 true 5547 5548 5549 Eth1 5550 level-2 5552 point-to-point 5553 5554 167890 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 Loopback0 5565 5566 5568 ianaift:softwareLoopback 5569 5571 enabled 5572 5573
5574 192.0.2.1 5575 32 5576
5577
5578 5579
5580 2001:DB8::1 5581 128 5582
5583
5584
5585 5586 Eth1 5587 5588 5590 ianaift:ethernetCsmacd 5591 5593 enabled 5594 5595
5596 198.51.100.1 5597 30 5598
5599
5600 5601
5602 2001:DB8:0:0:FF::1 5603 64 5604
5605
5606
5607
5608
5610 Authors' Addresses 5612 Stephane Litkowski 5613 Orange 5615 Email: stephane.litkowski@orange.com 5617 Derek Yeung 5618 Arrcus, Inc 5620 Email: derek@arrcus.com 5622 Acee Lindem 5623 Cisco Systems 5625 Email: acee@cisco.com 5627 Jeffrey Zhang 5628 Juniper Networks 5630 Email: zzhang@juniper.net 5631 Ladislav Lhotka 5632 CZ.NIC 5634 Email: lhotka@nic.cz