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