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