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