idnits 2.17.00 (12 Aug 2021) /tmp/idnits46470/draft-ietf-isis-yang-isis-cfg-27.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 4765 has weird spacing: '... system recei...' -- The document date (December 11, 2018) is 1257 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 5231, but no explicit reference was found in the text == Unused Reference: 'RFC5305' is defined on line 5241, but no explicit reference was found in the text == Unused Reference: 'RFC5306' is defined on line 5245, but no explicit reference was found in the text == Unused Reference: 'RFC5880' is defined on line 5253, but no explicit reference was found in the text == Unused Reference: 'RFC5881' is defined on line 5257, but no explicit reference was found in the text == Unused Reference: 'RFC6119' is defined on line 5267, but no explicit reference was found in the text == Unused Reference: 'RFC6232' is defined on line 5271, but no explicit reference was found in the text == Unused Reference: 'RFC7794' is defined on line 5294, but no explicit reference was found in the text == Unused Reference: 'RFC7810' is defined on line 5299, but no explicit reference was found in the text == Unused Reference: 'RFC7917' is defined on line 5304, but no explicit reference was found in the text == Unused Reference: 'RFC8405' is defined on line 5350, but no explicit reference was found in the text == Outdated reference: draft-ietf-bfd-yang has been published as RFC 9127 ** Obsolete normative reference: RFC 5306 (Obsoleted by RFC 8706) ** Downref: Normative reference to an Informational RFC: RFC 5443 ** Obsolete normative reference: RFC 7810 (Obsoleted by RFC 8570) Summary: 3 errors (**), 0 flaws (~~), 17 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 IS-IS Working Group S. Litkowski 3 Internet-Draft Orange 4 Intended status: Standards Track D. Yeung 5 Expires: June 14, 2019 Arrcus, Inc 6 A. Lindem 7 Cisco Systems 8 J. Zhang 9 Juniper Networks 10 L. Lhotka 11 CZ.NIC 12 December 11, 2018 14 YANG Data Model for IS-IS protocol 15 draft-ietf-isis-yang-isis-cfg-27 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 14, 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 . . . . . . . . . . . . . . . . . . . . . . . . . 18 74 2.9. Operational States . . . . . . . . . . . . . . . . . . . 19 75 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 19 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 -26 to version -27 . . . . . . . . . . . . 102 84 10.2. From version -25 to version -26 . . . . . . . . . . . . 102 85 10.3. From version -24 to version -25 . . . . . . . . . . . . 103 86 10.4. From version -22 to version -24 . . . . . . . . . . . . 104 87 10.5. From version -21 to version -22 . . . . . . . . . . . . 104 88 10.6. From version -20 to version -21 . . . . . . . . . . . . 104 89 10.7. From version -19 to version -20 . . . . . . . . . . . . 104 90 10.8. From version -18 to version -19 . . . . . . . . . . . . 104 91 10.9. From version -17 to version -18 . . . . . . . . . . . . 104 92 10.10. From version -16 to version -17 . . . . . . . . . . . . 104 93 10.11. From version -15 to version -16 . . . . . . . . . . . . 105 94 10.12. From version -14 to version -15 . . . . . . . . . . . . 105 95 10.13. From version -13 to version -14 . . . . . . . . . . . . 105 96 10.14. From version -12 to version -13 . . . . . . . . . . . . 105 97 10.15. From version -09 to version -12 . . . . . . . . . . . . 106 98 10.16. From version -08 to version -09 . . . . . . . . . . . . 106 99 10.17. From version -07 to version -08 . . . . . . . . . . . . 106 100 10.18. From version -05 to version -07 . . . . . . . . . . . . 106 101 10.19. From version -03 to version -05 . . . . . . . . . . . . 106 102 10.20. From version -02 to version -03 . . . . . . . . . . . . 107 103 10.21. From version -01 to version -02 . . . . . . . . . . . . 107 104 10.22. From version -00 to version -01 . . . . . . . . . . . . 107 105 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 108 106 11.1. Normative References . . . . . . . . . . . . . . . . . . 108 107 11.2. Informative References . . . . . . . . . . . . . . . . . 111 108 Appendix A. Example of IS-IS configuration in XML . . . . . . . 112 109 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 114 111 1. Introduction 113 This document defines a YANG ([RFC7950]) data model for IS-IS routing 114 protocol. 116 The data model covers configuration of an IS-IS routing protocol 117 instance as well as operational states. 119 A simplified tree representation of the data model is presented in 120 Section 2. Tree diagrams used in this document follow the notation 121 defined in [RFC8340]. 123 The module is designed as per NMDA (Network Management Datastore 124 Architecture) [RFC8342]. 126 2. Design of the Data Model 128 The IS-IS YANG module augments the "control-plane-protocol" list in 129 ietf-routing module (defined in [RFC8349]) with specific IS-IS 130 parameters. 132 The figure below describes the overall structure of the isis YANG 133 module: 135 module: ietf-isis 136 augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: 137 +--ro metric? uint32 138 +--ro tag* uint64 139 +--ro route-type? enumeration 140 augment /if:interfaces/if:interface: 141 +--rw clns-mtu? uint16 143 augment 144 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: 145 +--rw isis 146 +--rw enable? boolean {admin-control}? 147 +--rw level-type? level 148 +--rw system-id? system-id 149 +--rw maximum-area-addresses? uint8 {maximum-area-addresses}? 150 +--rw area-address* area-address 151 +--rw lsp-mtu? uint16 152 +--rw lsp-lifetime? uint16 153 +--rw lsp-refresh? rt-types:timer-value-seconds16 154 {lsp-refresh}? 155 +--rw poi-tlv? boolean {poi-tlv}? 156 +--rw graceful-restart {graceful-restart}? 157 | +--rw enable? boolean 158 | +--rw restart-interval? rt-types:timer-value-seconds16 159 | +--rw helper-enable? boolean 160 +--rw nsr {nsr}? 161 | +--rw enable? boolean 162 +--rw node-tags {node-tag}? 163 | +--rw node-tag* [tag] 164 | ... 165 +--rw metric-type 166 | +--rw value? enumeration 167 | +--rw level-1 168 | | ... 169 | +--rw level-2 170 | ... 171 +--rw default-metric 172 | +--rw value? wide-metric 173 | +--rw level-1 174 | | ... 175 | +--rw level-2 176 | ... 177 +--rw auto-cost {auto-cost}? 178 | +--rw enable? boolean 179 | +--rw reference-bandwidth? uint32 180 +--rw authentication 181 | +--rw (authentication-type)? 182 | | ... 183 | +--rw level-1 184 | | ... 185 | +--rw level-2 186 | ... 187 +--rw address-families {nlpid-control}? 188 | +--rw address-family-list* [address-family] 189 | ... 190 +--rw mpls 191 | +--rw te-rid {te-rid}? 192 | | ... 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-11.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 } 1103 import ietf-bfd-types { 1104 prefix "bfd-types"; 1105 reference "RFC YYYY - YANG Data Model for Bidirectional 1106 Forwarding Detection (BFD). 1108 -- Note to RFC Editor Please replace YYYY with published RFC number for 1109 draft-ietf-bfd-yang."; 1111 } 1113 organization 1114 "IETF LSR Working Group"; 1116 contact 1117 "WG List: <mailto:lsr@ietf.org> 1119 Editor: Stephane Litkowski 1120 <mailto:stephane.litkowski@orange.com> 1122 Derek Yeung 1123 <mailto:derek@arrcus.com> 1124 Acee Lindem 1125 <mailto:acee@cisco.com> 1126 Jeffrey Zhang 1127 <mailto:zzhang@juniper.net> 1128 Ladislav Lhotka 1129 <mailto:llhotka@nic.cz> 1130 Yi Yang 1131 <mailto:yiya@cisco.com> 1132 Dean Bogdanovic 1133 <mailto:deanb@juniper.net> 1134 Kiran Agrahara Sreenivasa 1135 <mailto:kkoushik@brocade.com> 1136 Yingzhen Qu 1137 <mailto:yiqu@cisco.com> 1138 Jeff Tantsura 1139 <mailto:jefftant.ietf@gmail.com> 1141 "; 1143 description 1144 "This YANG module defines the generic configuration and 1145 operational state for the IS-IS protocol. 1146 It is intended that the module 1147 will be extended by vendors to define vendor-specific 1148 IS-IS configuration parameters and policies, 1149 for example route maps or route policies. 1151 This YANG model conforms to the Network Management 1152 Datastore Architecture (NDMA) as described in RFC 8242. 1154 Copyright (c) 2018 IETF Trust and the persons identified as 1155 authors of the code. All rights reserved. 1157 Redistribution and use in source and binary forms, with or 1158 without modification, is permitted pursuant to, and subject 1159 to the license terms contained in, the Simplified BSD License 1160 set forth in Section 4.c of the IETF Trust's Legal Provisions 1161 Relating to IETF Documents 1162 (http://trustee.ietf.org/license-info). 1164 This version of this YANG module is part of RFC XXXX; 1165 see the RFC itself for full legal notices."; 1167 revision 2018-12-11 { 1168 description 1169 "Initial revision."; 1170 reference "RFC XXXX"; 1171 } 1173 /* Identities */ 1175 identity isis { 1176 base rt:routing-protocol; 1177 description "Identity for the IS-IS routing protocol."; 1178 } 1180 identity lsp-log-reason { 1181 description "Base identity for an LSP change log reason."; 1182 } 1184 identity refresh { 1185 base lsp-log-reason; 1186 description 1187 "Identity used when the LSP log reason is 1188 a refresh LSP received."; 1189 } 1191 identity content-change { 1192 base lsp-log-reason; 1193 description 1194 "Identity used when the LSP log reason is 1195 a change in the content of the LSP."; 1196 } 1198 /* Feature definitions */ 1199 feature poi-tlv { 1200 description "Support of Purge Originator Identification."; 1201 reference "RFC 6232 - Purge Originator Identification TLV 1202 for IS-IS"; 1203 } 1204 feature ietf-spf-delay { 1205 description 1206 "Support for IETF SPF delay algorithm."; 1207 reference "RFC 8405 - SPF Back-off algorithm for link 1208 state IGPs"; 1209 } 1210 feature bfd { 1211 description 1212 "Support for BFD detection of IS-IS neighbor reachability."; 1213 reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) 1214 RFC 5881 - Bidirectional Forwarding Detection 1215 (BFD) for IPv4 and IPv6 (Single Hop)"; 1216 } 1217 feature key-chain { 1218 description 1219 "Support of keychain for authentication."; 1220 reference "RFC8177 - YANG Data Model for Key Chains"; 1221 } 1222 feature node-flag { 1223 description 1224 "Support for node-flag for IS-IS prefixes."; 1225 reference "RFC7794 - IS-IS Prefix Attributes for 1226 Extended IP and IPv6 Reachability"; 1227 } 1228 feature node-tag { 1229 description 1230 "Support for node admin tag for IS-IS routing instances."; 1231 reference "RFC7917 - Advertising Node Administrative Tags 1232 in IS-IS"; 1233 } 1234 feature ldp-igp-sync { 1235 description 1236 "LDP IGP synchronization."; 1237 reference "RFC5443 - LDP IGP Synchronization."; 1238 } 1239 feature fast-reroute { 1240 description 1241 "Support for IP Fast Reroute (IP-FRR)."; 1242 } 1243 feature nsr { 1244 description 1245 "Non-Stop-Routing (NSR) support."; 1246 } 1247 feature lfa { 1248 description 1249 "Support for Loop-Free Alternates (LFAs)."; 1250 reference "RFC5286 - Basic Specification of IP Fast-Reroute: 1251 Loop-free Alternates"; 1252 } 1253 feature remote-lfa { 1254 description 1255 "Support for Remote Loop-Free Alternates (R-LFAs)."; 1256 reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute"; 1257 } 1259 feature overload-max-metric { 1260 description 1261 "Support of overload by setting 1262 all links to max metric."; 1263 } 1264 feature prefix-tag { 1265 description 1266 "Support for 32-bit prefix tags"; 1267 reference "RFC5130 - A Policy Control Mechanism in 1268 IS-IS Using Administrative Tags"; 1269 } 1270 feature prefix-tag64 { 1271 description 1272 "Support for 64-bit prefix tags"; 1273 reference "RFC5130 - A Policy Control Mechanism in 1274 IS-IS Using Administrative Tags"; 1275 } 1276 feature auto-cost { 1277 description 1278 "Calculate IS-IS interface metric according to 1279 reference bandwidth."; 1280 } 1282 feature te-rid { 1283 description 1284 "Traffic-Engineering Router-ID."; 1285 reference "RFC5305 - IS-IS Extensions for Traffic Engineering 1286 RFC6119 - IPv6 Traffic Engineering in IS-IS"; 1287 } 1288 feature max-ecmp { 1289 description 1290 "Setting maximum number of ECMP paths."; 1291 } 1292 feature multi-topology { 1293 description 1294 "Support for Multiple-Topology Routing (MTR)."; 1296 reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS"; 1297 } 1298 feature nlpid-control { 1299 description 1300 "This feature controls the advertisement 1301 of support NLPID within IS-IS configuration."; 1302 } 1303 feature graceful-restart { 1304 description 1305 "IS-IS Graceful restart support."; 1306 reference "RFC5306 - Restart Signaling in IS-IS"; 1307 } 1309 feature lsp-refresh { 1310 description 1311 "Configuration of LSP refresh interval."; 1312 } 1314 feature maximum-area-addresses { 1315 description 1316 "Support of maximum-area-addresses config."; 1317 } 1319 feature admin-control { 1320 description 1321 "Administrative control of the protocol state."; 1322 } 1324 /* Type definitions */ 1326 typedef circuit-id { 1327 type uint8; 1328 description 1329 "This type defines the circuit ID 1330 associated with an interface."; 1331 } 1333 typedef extended-circuit-id { 1334 type uint32; 1335 description 1336 "This type defines the extended circuit ID 1337 associated with an interface."; 1338 } 1340 typedef interface-type { 1341 type enumeration { 1342 enum broadcast { 1343 description 1344 "Broadcast interface type."; 1345 } 1346 enum point-to-point { 1347 description 1348 "Point-to-point interface type."; 1349 } 1350 } 1351 description 1352 "This type defines the type of adjacency 1353 to be established on the interface. 1354 The interface-type determines the type 1355 of hello message that is used."; 1357 } 1359 typedef level { 1360 type enumeration { 1361 enum "level-1" { 1362 description 1363 "This enum indicates L1-only capability."; 1364 } 1365 enum "level-2" { 1366 description 1367 "This enum indicates L2-only capability."; 1368 } 1369 enum "level-all" { 1370 description 1371 "This enum indicates capability for both levels."; 1372 } 1373 } 1374 default "level-all"; 1375 description 1376 "This type defines IS-IS level of an object."; 1378 } 1380 typedef adj-state-type { 1381 type enumeration { 1382 enum "up" { 1383 description 1384 "State indicates the adjacency is established."; 1385 } 1386 enum "down" { 1387 description 1388 "State indicates the adjacency is NOT established."; 1389 } 1390 enum "init" { 1391 description 1392 "State indicates the adjacency is establishing."; 1393 } 1394 enum "failed" { 1395 description 1396 "State indicates the adjacency is failed."; 1397 } 1398 } 1399 description 1400 "This type defines states of an adjacency"; 1401 } 1403 typedef if-state-type { 1404 type enumeration { 1405 enum "up" { 1406 description "Up state."; 1408 } 1409 enum "down" { 1410 description "Down state"; 1411 } 1412 } 1413 description 1414 "This type defines the state of an interface"; 1415 } 1417 typedef level-number { 1418 type uint8 { 1419 range "1 .. 2"; 1420 } 1421 description 1422 "This type defines the current IS-IS level."; 1423 } 1425 typedef lsp-id { 1426 type string { 1427 pattern 1428 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' 1429 +'{4}\.[0-9][0-9]-[0-9][0-9]'; 1430 } 1431 description 1432 "This type defines the IS-IS LSP ID format using a 1433 pattern, An example LSP ID is 0143.0438.AEF0.02-01"; 1434 } 1436 typedef area-address { 1437 type string { 1438 pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,3}'; 1439 } 1440 description 1441 "This type defines the area address format."; 1442 } 1444 typedef snpa { 1445 type string { 1446 length "0 .. 20"; 1447 } 1448 description 1449 "This type defines the Subnetwork Point 1450 of Attachement (SNPA) format."; 1451 } 1453 typedef system-id { 1454 type string { 1455 pattern 1456 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; 1457 } 1458 description 1459 "This type defines IS-IS system-id using pattern, 1460 An example system-id is 0143.0438.AEF0"; 1461 } 1462 typedef extended-system-id { 1463 type string { 1464 pattern 1465 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9][0-9]'; 1466 } 1467 description 1468 "This type defines IS-IS system-id using pattern. The extended 1469 system id contains the pseudonode number in addition to the 1470 system id. 1471 An example system-id is 0143.0438.AEF0.00"; 1472 } 1474 typedef wide-metric { 1475 type uint32 { 1476 range "0 .. 16777215"; 1477 } 1478 description 1479 "This type defines wide style format of IS-IS metric."; 1480 } 1482 typedef std-metric { 1483 type uint8 { 1484 range "0 .. 63"; 1485 } 1486 description 1487 "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."; 1681 } 1682 leaf non-best-reason { 1683 type string; 1684 description 1685 "Information field to describe why the alternate 1686 is not best."; 1687 } 1688 leaf protection-available { 1689 type bits { 1690 bit node-protect { 1691 position 0; 1692 description 1693 "Node protection available."; 1694 } 1695 bit link-protect { 1696 position 1; 1697 description 1698 "Link protection available."; 1699 } 1700 bit srlg-protect { 1701 position 2; 1702 description 1703 "SRLG protection available."; 1704 } 1705 bit downstream-protect { 1706 position 3; 1707 description 1708 "Downstream protection available."; 1709 } 1710 bit other { 1711 position 4; 1712 description 1713 "Other protection available."; 1714 } 1715 } 1716 description "Protection provided by the alternate."; 1717 } 1718 leaf alternate-metric1 { 1719 type uint32; 1720 description 1721 "Metric from Point of Local Repair (PLR) to 1722 destination through the alternate path."; 1723 } 1724 leaf alternate-metric2 { 1725 type uint32; 1726 description 1727 "Metric from PLR to the alternate node"; 1728 } 1729 leaf alternate-metric3 { 1730 type uint32; 1731 description 1732 "Metric from alternate node to the destination"; 1733 } 1734 description 1735 "Per-AF protected prefix statistics."; 1736 } 1737 description 1738 "List of prefixes that are protected."; 1739 } 1741 container unprotected-routes { 1742 config false; 1743 list address-family-stats { 1744 key "address-family prefix"; 1746 leaf address-family { 1747 type iana-rt-types:address-family; 1749 description "Address-family"; 1750 } 1751 leaf prefix { 1752 type string; 1753 description "Unprotected prefix."; 1754 } 1755 description 1756 "Per AF unprotected prefix statistics."; 1757 } 1758 description 1759 "List of prefixes that are not protected."; 1760 } 1762 list protection-statistics { 1763 key frr-protection-method; 1764 config false; 1765 leaf frr-protection-method { 1766 type string; 1767 description "Protection method used."; 1768 } 1769 list address-family-stats { 1770 key address-family; 1772 leaf address-family { 1773 type iana-rt-types:address-family; 1775 description "Address-family"; 1776 } 1777 leaf total-routes { 1778 type uint32; 1779 description "Total prefixes."; 1780 } 1781 leaf unprotected-routes { 1782 type uint32; 1783 description 1784 "Total prefixes that are not protected."; 1785 } 1786 leaf protected-routes { 1787 type uint32; 1788 description 1789 "Total prefixes that are protected."; 1790 } 1791 leaf linkprotected-routes { 1792 type uint32; 1793 description 1794 "Total prefixes that are link protected."; 1795 } 1796 leaf nodeprotected-routes { 1797 type uint32; 1798 description 1799 "Total prefixes that are node protected."; 1800 } 1801 description 1802 "Per AF protected prefix statistics."; 1803 } 1805 description "Global protection statistics."; 1806 } 1807 } 1809 /* Route table and local RIB groupings */ 1811 grouping local-rib { 1812 description "Local-rib - RIB for Routes computed by the local 1813 IS-IS routing instance."; 1814 container local-rib { 1815 config false; 1816 description "Local-rib."; 1817 list route { 1818 key "prefix"; 1819 description "Routes"; 1820 leaf prefix { 1821 type inet:ip-prefix; 1822 description "Destination prefix."; 1823 } 1824 container next-hops { 1825 description "Next hops for the route."; 1826 list next-hop { 1827 key "next-hop"; 1828 description "List of next hops for the route"; 1829 leaf outgoing-interface { 1830 type if:interface-ref; 1831 description 1832 "Name of the outgoing interface."; 1833 } 1834 leaf next-hop { 1835 type inet:ip-address; 1836 description "Nexthop address."; 1837 } 1838 } 1839 } 1840 leaf metric { 1841 type uint32; 1842 description "Metric for this route."; 1843 } 1844 leaf level { 1845 type level-number; 1846 description "Level number for this route."; 1847 } 1848 leaf route-tag { 1849 type uint32; 1850 description "Route tag for this route."; 1851 } 1852 } 1853 } 1854 } 1856 grouping route-content { 1857 description 1858 "IS-IS protocol-specific route properties grouping."; 1859 leaf metric { 1860 type uint32; 1861 description "IS-IS metric of a route."; 1862 } 1863 leaf-list tag { 1864 type uint64; 1865 description 1866 "List of tags associated with the route. The leaf 1867 describes both 32-bit and 64-bit tags."; 1868 } 1869 leaf route-type { 1870 type enumeration { 1871 enum l2-up-internal { 1872 description "Level 2 internal route 1873 and not leaked to a lower level"; 1874 } 1875 enum l1-up-internal { 1876 description "Level 1 internal route 1877 and not leaked to a lower level"; 1878 } 1879 enum l2-up-external { 1880 description "Level 2 external route 1881 and not leaked to a lower level"; 1882 } 1883 enum l1-up-external { 1884 description "Level 1 external route 1885 and not leaked to a lower level"; 1886 } 1887 enum l2-down-internal { 1888 description "Level 2 internal route 1889 and leaked to a lower level"; 1890 } 1891 enum l1-down-internal { 1892 description "Level 1 internal route 1893 and leaked to a lower level"; 1894 } 1895 enum l2-down-external { 1896 description "Level 2 external route 1897 and leaked to a lower level"; 1898 } 1899 enum l1-down-external { 1900 description "Level 1 external route 1901 and leaked to a lower level"; 1902 } 1903 } 1904 description "IS-IS route type."; 1905 } 1906 } 1908 /* Grouping definitions for configuration and ops state */ 1910 grouping adjacency-state { 1911 container adjacencies { 1912 config false; 1913 list adjacency { 1914 leaf neighbor-sys-type { 1915 type level; 1916 description 1917 "Level capability of neighboring system"; 1918 } 1919 leaf neighbor-sysid { 1920 type system-id; 1921 description 1922 "The system-id of the neighbor"; 1923 } 1924 leaf neighbor-extended-circuit-id { 1925 type extended-circuit-id; 1926 description 1927 "Circuit ID of the neighbor"; 1928 } 1929 leaf neighbor-snpa { 1930 type snpa; 1931 description 1932 "SNPA of the neighbor"; 1933 } 1934 leaf usage { 1935 type level; 1936 description 1937 "Define the level(s) activated on the adjacency. 1938 On a p2p link this might be level 1 and 2, 1939 but on a LAN, the usage will be level 1 1940 between peers at level 1 or level 2 between 1941 peers at level 2."; 1942 } 1943 leaf hold-timer { 1944 type rt-types:timer-value-seconds16; 1945 units seconds; 1946 description 1947 "The holding time in seconds for this 1948 adjacency. This value is based on 1949 received hello PDUs and the elapsed 1950 time since receipt."; 1951 } 1952 leaf neighbor-priority { 1953 type uint8 { 1954 range "0 .. 127"; 1955 } 1956 description 1957 "Priority of the neighboring IS for becoming 1958 the DIS."; 1959 } 1960 leaf lastuptime { 1961 type yang:timestamp; 1962 description 1963 "When the adjacency most recently entered 1964 state 'up', measured in hundredths of a 1965 second since the last reinitialization of 1966 the network management subsystem. 1968 The value is 0 if the adjacency has never 1969 been in state 'up'."; 1970 } 1971 leaf state { 1972 type adj-state-type; 1973 description 1974 "This leaf describes the state of the interface."; 1975 } 1977 description 1978 "List of operational adjacencies."; 1979 } 1980 description 1981 "This container lists the adjacencies of 1982 the local node."; 1983 } 1984 description 1985 "Adjacency state"; 1986 } 1988 grouping admin-control { 1989 leaf enable { 1990 if-feature admin-control; 1991 type boolean; 1992 default true; 1993 description 1994 "Enable/Disable the protocol."; 1995 } 1996 description 1997 "Grouping for admin control."; 1998 } 2000 grouping ietf-spf-delay { 2001 leaf initial-delay { 2002 type rt-types:timer-value-milliseconds; 2003 units msec; 2004 description 2005 "Delay used while in QUIET state (milliseconds)."; 2006 } 2007 leaf short-delay { 2008 type rt-types:timer-value-milliseconds; 2009 units msec; 2010 description 2011 "Delay used while in SHORT_WAIT state (milliseconds)."; 2012 } 2013 leaf long-delay { 2014 type rt-types:timer-value-milliseconds; 2015 units msec; 2016 description 2017 "Delay used while in LONG_WAIT state (milliseconds)."; 2018 } 2020 leaf hold-down { 2021 type rt-types:timer-value-milliseconds; 2022 units msec; 2023 description 2024 "Timer used to consider an IGP stability period 2025 (milliseconds)."; 2026 } 2027 leaf time-to-learn { 2028 type rt-types:timer-value-milliseconds; 2029 units msec; 2030 description 2031 "Duration used to learn all the IGP events 2032 related to a single component failure (milliseconds)."; 2033 } 2034 leaf current-state { 2035 type enumeration { 2036 enum "quiet" { 2037 description "QUIET state"; 2038 } 2039 enum "short-wait" { 2040 description "SHORT_WAIT state"; 2041 } 2042 enum "long-wait" { 2043 description "LONG_WAIT state"; 2044 } 2045 } 2046 config false; 2047 description 2048 "Current SPF backoff algorithm state."; 2049 } 2050 leaf remaining-time-to-learn { 2051 type rt-types:timer-value-milliseconds; 2052 units "msec"; 2053 config false; 2054 description 2055 "Remaining time until time-to-learn timer fires."; 2056 } 2057 leaf remaining-hold-down { 2058 type rt-types:timer-value-milliseconds; 2059 units "msec"; 2060 config false; 2061 description 2062 "Remaining time until hold-down timer fires."; 2063 } 2064 leaf last-event-received { 2065 type yang:timestamp; 2066 config false; 2067 description 2068 "Time of last IGP event received"; 2069 } 2070 leaf next-spf-time { 2071 type yang:timestamp; 2072 config false; 2073 description 2074 "Time when next SPF has been scheduled."; 2075 } 2076 leaf last-spf-time { 2077 type yang:timestamp; 2078 config false; 2079 description 2080 "Time of last SPF computation."; 2081 } 2082 description 2083 "Grouping for IETF SPF delay configuration and state."; 2084 } 2086 grouping node-tag-config { 2087 description 2088 "IS-IS node tag config state."; 2089 container node-tags { 2090 if-feature node-tag; 2091 list node-tag { 2092 key tag; 2093 leaf tag { 2094 type uint32; 2095 description 2096 "Node tag value."; 2097 } 2098 description 2099 "List of tags."; 2100 } 2101 description 2102 "Container for node admin tags."; 2103 } 2104 } 2106 grouping authentication-global-cfg { 2107 choice authentication-type { 2108 case key-chain { 2109 if-feature key-chain; 2110 leaf key-chain { 2111 type key-chain:key-chain-ref; 2112 description 2113 "Reference to a key-chain."; 2114 } 2115 } 2116 case password { 2117 leaf key { 2118 type string; 2119 description 2120 "This leaf specifies the authentication key."; 2121 } 2122 leaf crypto-algorithm { 2123 type identityref { 2124 base key-chain:crypto-algorithm; 2125 } 2126 description 2127 "Cryptographic algorithm associated with key."; 2128 } 2129 } 2130 description "Choice of authentication."; 2131 } 2132 description "Grouping for global authentication config."; 2133 } 2135 grouping metric-type-global-cfg { 2136 leaf value { 2137 type enumeration { 2138 enum wide-only { 2139 description 2140 "Advertise new metric style only (RFC5305)"; 2141 } 2142 enum old-only { 2143 description 2144 "Advertise old metric style only (RFC1195)"; 2145 } 2146 enum both { 2147 description "Advertise both metric styles"; 2148 } 2149 } 2150 default wide-only; 2151 description 2152 "Type of metric to be generated: 2153 - wide-only means only new metric style 2154 is generated, 2155 - old-only means that only old style metric 2156 is generated, 2157 - both means that both are advertised. 2159 This leaf is only affecting IPv4 metrics."; 2160 } 2161 description 2162 "Grouping for global metric style config."; 2163 } 2165 grouping default-metric-global-cfg { 2166 leaf value { 2167 type wide-metric; 2168 default "10"; 2169 description "Value of the metric"; 2170 } 2171 description 2172 "Global default metric config grouping."; 2173 } 2175 grouping overload-global-cfg { 2176 leaf status { 2177 type boolean; 2178 default false; 2179 description 2180 "This leaf specifies the overload status."; 2181 } 2182 description "Grouping for overload bit config."; 2183 } 2185 grouping overload-max-metric-global-cfg { 2186 leaf timeout { 2187 type rt-types:timer-value-seconds16; 2188 units "seconds"; 2189 description 2190 "Timeout (in seconds) of the overload condition."; 2191 } 2192 description 2193 "Overload maximum metric configuration grouping"; 2194 } 2196 grouping route-preference-global-cfg { 2197 choice granularity { 2198 case detail { 2199 leaf internal { 2200 type uint8; 2201 description 2202 "Protocol preference for internal routes."; 2203 } 2204 leaf external { 2205 type uint8; 2206 description 2207 "Protocol preference for external routes."; 2208 } 2209 } 2210 case coarse { 2211 leaf default { 2212 type uint8; 2213 description 2214 "Protocol preference for all IS-IS routes."; 2215 } 2216 } 2217 description 2218 "Choice for implementation of route preference."; 2219 } 2220 description 2221 "Global route preference grouping"; 2222 } 2224 grouping hello-authentication-cfg { 2225 choice authentication-type { 2226 case key-chain { 2227 if-feature key-chain; 2228 leaf key-chain { 2229 type key-chain:key-chain-ref; 2230 description "Reference to a key-chain."; 2231 } 2232 } 2233 case password { 2234 leaf key { 2235 type string; 2236 description "Authentication key specification"; 2237 } 2238 leaf crypto-algorithm { 2239 type identityref { 2240 base key-chain:crypto-algorithm; 2241 } 2242 description 2243 "Cryptographic algorithm associated with key."; 2244 } 2245 } 2246 description "Choice of authentication."; 2247 } 2248 description "Grouping for hello authentication."; 2249 } 2251 grouping hello-interval-cfg { 2252 leaf value { 2253 type rt-types:timer-value-seconds16; 2254 units "seconds"; 2255 default 10; 2256 description 2257 "Interval (in seconds) between successive hello 2258 messages."; 2259 } 2261 description "Interval between hello messages."; 2262 } 2264 grouping hello-multiplier-cfg { 2265 leaf value { 2266 type uint16; 2267 default 3; 2268 description 2269 "Number of missed hello messages prior to 2270 declaring the adjacency down."; 2271 } 2272 description 2273 "Number of missed hello messages prior to 2274 adjacency down grouping."; 2275 } 2277 grouping priority-cfg { 2278 leaf value { 2279 type uint8 { 2280 range "0 .. 127"; 2281 } 2282 default 64; 2283 description 2284 "Priority of interface for DIS election."; 2285 } 2287 description "Interface DIS election priority grouping"; 2288 } 2290 grouping metric-cfg { 2291 leaf value { 2292 type wide-metric; 2293 default "10"; 2294 description "Metric value."; 2295 } 2296 description "Interface metric grouping"; 2297 } 2299 grouping metric-parameters { 2300 container metric-type { 2301 uses metric-type-global-cfg; 2302 container level-1 { 2303 uses metric-type-global-cfg; 2304 description "level-1 specific configuration"; 2305 } 2306 container level-2 { 2307 uses metric-type-global-cfg; 2308 description "level-2 specific configuration"; 2309 } 2310 description "Metric style global configuration"; 2311 } 2313 container default-metric { 2314 uses default-metric-global-cfg; 2315 container level-1 { 2316 uses default-metric-global-cfg; 2317 description "level-1 specific configuration"; 2318 } 2319 container level-2 { 2320 uses default-metric-global-cfg; 2321 description "level-2 specific configuration"; 2322 } 2323 description "Default metric global configuration"; 2324 } 2325 container auto-cost { 2326 if-feature auto-cost; 2327 description 2328 "Interface Auto-cost configuration state."; 2329 leaf enable { 2330 type boolean; 2331 description 2332 "Enable/Disable interface auto-cost."; 2333 } 2334 leaf reference-bandwidth { 2335 when "../enable = 'true'" { 2336 description "Only when auto cost is enabled"; 2337 } 2338 type uint32 { 2339 range "1..4294967"; 2340 } 2341 units Mbits; 2342 description 2343 "Configure reference bandwidth used to automatically 2344 determine interface cost (Mbits). The cost is the 2345 reference bandwidth divided by the interface speed 2346 with 1 being the minimum cost."; 2347 } 2348 } 2349 description "Grouping for global metric parameters."; 2350 } 2352 grouping high-availability-parameters { 2353 container graceful-restart { 2354 if-feature graceful-restart; 2355 leaf enable { 2356 type boolean; 2357 default false; 2358 description "Enable graceful restart."; 2359 } 2360 leaf restart-interval { 2361 type rt-types:timer-value-seconds16; 2362 units "seconds"; 2363 description 2364 "Interval (in seconds) to attempt graceful restart prior 2365 to failure."; 2366 } 2367 leaf helper-enable { 2368 type boolean; 2369 default true; 2370 description 2371 "Enable local IS-IS router as graceful restart helper."; 2372 } 2373 description "Graceful-Restart Configuration."; 2374 } 2375 container nsr { 2376 if-feature nsr; 2377 description "Non-Stop Routing (NSR) configuration."; 2378 leaf enable { 2379 type boolean; 2380 default false; 2381 description "Enable/Disable Non-Stop Routing (NSR)."; 2382 } 2383 } 2384 description "Grouping for High Availability parameters."; 2385 } 2387 grouping authentication-parameters { 2388 container authentication { 2389 uses authentication-global-cfg; 2391 container level-1 { 2392 uses authentication-global-cfg; 2393 description "level-1 specific configuration"; 2394 } 2395 container level-2 { 2396 uses authentication-global-cfg; 2397 description "level-2 specific configuration"; 2398 } 2399 description "Authentication global configuration for 2400 both LSPs and SNPs."; 2401 } 2402 description "Grouping for authentication parameters"; 2403 } 2404 grouping address-family-parameters { 2405 container address-families { 2406 if-feature nlpid-control; 2407 list address-family-list { 2408 key address-family; 2409 leaf address-family { 2410 type iana-rt-types:address-family; 2411 description "Address-family"; 2412 } 2413 leaf enable { 2414 type boolean; 2415 description "Activate the address family."; 2416 } 2417 description 2418 "List of address families and whether or not they 2419 are activated."; 2420 } 2421 description "Address Family configuration"; 2422 } 2423 description "Grouping for address family parameters."; 2424 } 2426 grouping mpls-parameters { 2427 container mpls { 2428 container te-rid { 2429 if-feature te-rid; 2430 description 2431 "Stable ISIS Router IP Address used for Traffic 2432 Engineering"; 2433 leaf ipv4-router-id { 2434 type inet:ipv4-address; 2435 description 2436 "Router ID value that would be used in TLV 134."; 2437 } 2438 leaf ipv6-router-id { 2439 type inet:ipv6-address; 2440 description 2441 "Router ID value that would be used in TLV 140."; 2442 } 2443 } 2444 container ldp { 2445 container igp-sync { 2446 if-feature ldp-igp-sync; 2447 description 2448 "This container may be augmented with global 2449 parameters for igp-ldp-sync."; 2450 } 2451 description "LDP configuration."; 2452 } 2453 description "MPLS configuration"; 2454 } 2455 description "Grouping for MPLS global parameters."; 2456 } 2458 grouping lsp-parameters { 2459 leaf lsp-mtu { 2460 type uint16; 2461 units "bytes"; 2462 default 1492; 2463 description 2464 "Maximum size of an LSP PDU in bytes."; 2465 } 2466 leaf lsp-lifetime { 2467 type uint16 { 2468 range "1..65535"; 2469 } 2470 units "seconds"; 2471 description 2472 "Lifetime of the router's LSPs in seconds."; 2473 } 2474 leaf lsp-refresh { 2475 if-feature lsp-refresh; 2476 type rt-types:timer-value-seconds16; 2477 units "seconds"; 2478 description 2479 "Refresh interval of the router's LSPs in seconds."; 2480 } 2481 leaf poi-tlv { 2482 if-feature poi-tlv; 2483 type boolean; 2484 default false; 2485 description 2486 "Enable advertisement of IS-IS purge TLV."; 2487 } 2488 description "Grouping for LSP global parameters."; 2489 } 2490 grouping spf-parameters { 2491 container spf-control { 2492 leaf paths { 2493 if-feature max-ecmp; 2494 type uint16 { 2495 range "1..32"; 2496 } 2497 description 2498 "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; 2499 } 2500 container ietf-spf-delay { 2501 if-feature ietf-spf-delay; 2502 uses ietf-spf-delay; 2503 description "IETF SPF delay algorithm configuration."; 2504 } 2505 description 2506 "SPF calculation control."; 2507 } 2508 description "Grouping for SPF global parameters."; 2509 } 2510 grouping instance-config { 2511 description "IS-IS global configuration grouping"; 2513 uses admin-control; 2515 leaf level-type { 2516 type level; 2517 default "level-all"; 2518 description 2519 "Level of an IS-IS node - can be level-1-only, 2520 level-2-only or level-1-2."; 2521 } 2523 leaf system-id { 2524 type system-id; 2525 description "System-id of the node."; 2526 } 2528 leaf maximum-area-addresses { 2529 if-feature maximum-area-addresses; 2530 type uint8; 2531 default 3; 2532 description "Maximum areas supported."; 2533 } 2535 leaf-list area-address { 2536 type area-address; 2537 description 2538 "List of areas supported by the protocol instance."; 2539 } 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."; 2878 } 2879 leaf own-lsp-purge { 2880 type uint32; 2881 description 2882 "Number of times a zero-aged copy of the system's 2883 own LSP is received from some other IS-IS node."; 2884 } 2885 leaf manual-address-drop-from-area { 2886 type uint32; 2887 description 2888 "Number of times a manual address 2889 has been dropped from the area."; 2890 } 2891 leaf max-sequence { 2892 type uint32; 2893 description 2894 "Number of times the system has attempted 2895 to exceed the maximum sequence number."; 2896 } 2897 leaf sequence-number-skipped { 2898 type uint32; 2899 description 2900 "Number of times a sequence number skip has 2901 occured."; 2902 } 2903 leaf id-len-mismatch { 2904 type uint32; 2905 description 2906 "Number of times a PDU is received with a 2907 different value for the ID field length 2908 than that of the receiving system."; 2909 } 2910 leaf partition-changes { 2911 type uint32; 2912 description 2913 "Number of partition changes detected."; 2914 } 2915 leaf lsp-errors { 2916 type uint32; 2917 description 2918 "Number of LSPs with errors we have received."; 2919 } 2920 leaf spf-runs { 2921 type uint32; 2922 description 2923 "Number of times we ran SPF at this level."; 2924 } 2925 description 2926 "List of supported levels."; 2927 } 2928 description 2929 "List counters for the IS-IS protocol instance"; 2930 } 2931 description "System counters grouping."; 2932 } 2934 grouping event-counters { 2935 container event-counters { 2936 config false; 2937 leaf adjacency-changes { 2938 type uint32; 2939 description 2940 "The number of times an adjacency state change has 2941 occured on this interface."; 2942 } 2943 leaf adjacency-number { 2944 type uint32; 2945 description 2946 "The number of adjacencies on this interface."; 2947 } 2948 leaf init-fails { 2949 type uint32; 2950 description 2951 "The number of times initialization of this 2952 interface has failed. This counts events such 2953 as PPP NCP failures. Failures to form an 2954 adjacency are counted by adjacency-rejects."; 2955 } 2956 leaf adjacency-rejects { 2957 type uint32; 2958 description 2959 "The number of times an adjacency has been 2960 rejected on this interface."; 2961 } 2962 leaf id-len-mismatch { 2963 type uint32; 2964 description 2965 "The number of times an IS-IS PDU with an ID 2966 field length different from that for this 2967 system has been received on this interface."; 2968 } 2969 leaf max-area-addresses-mismatch { 2970 type uint32; 2971 description 2972 "The number of times an IS-IS PDU has been 2973 received on this interface with the 2974 max area address field differing from that of 2975 this system."; 2976 } 2977 leaf authentication-type-fails { 2978 type uint32; 2979 description 2980 "Number of authentication type mismatches."; 2981 } 2982 leaf authentication-fails { 2983 type uint32; 2984 description 2985 "Number of authentication key failures."; 2986 } 2987 leaf lan-dis-changes { 2988 type uint32; 2989 description 2990 "The number of times the DIS has changed on this 2991 interface at this level. If the interface type is 2992 point-to-point,the count is zero."; 2993 } 2994 description "IS-IS interface event counters."; 2995 } 2996 description 2997 "Grouping for IS-IS interface event counters"; 2998 } 3000 grouping packet-counters { 3001 container packet-counters { 3002 config false; 3003 list level { 3004 key level; 3006 leaf level { 3007 type level-number; 3008 description "IS-IS level."; 3009 } 3010 container iih { 3011 leaf in { 3012 type uint32; 3013 description "Received IIH PDUs."; 3014 } 3015 leaf out { 3016 type uint32; 3017 description "Sent IIH PDUs."; 3018 } 3019 description "Number of IIH PDUs received/sent."; 3020 } 3021 container ish { 3022 leaf in { 3023 type uint32; 3024 description "Received ISH PDUs."; 3025 } 3026 leaf out { 3027 type uint32; 3028 description "Sent ISH PDUs."; 3029 } 3030 description 3031 "ISH PDUs received/sent."; 3032 } 3033 container esh { 3034 leaf in { 3035 type uint32; 3036 description "Received ESH PDUs."; 3037 } 3038 leaf out { 3039 type uint32; 3040 description "Sent ESH PDUs."; 3041 } 3042 description "Number of ESH PDUs received/sent."; 3043 } 3044 container lsp { 3045 leaf in { 3046 type uint32; 3047 description "Received LSP PDUs."; 3048 } 3049 leaf out { 3050 type uint32; 3051 description "Sent LSP PDUs."; 3052 } 3053 description "Number of LSP PDUs received/sent."; 3054 } 3055 container psnp { 3056 leaf in { 3057 type uint32; 3058 description "Received PSNP PDUs."; 3059 } 3060 leaf out { 3061 type uint32; 3062 description "Sent PSNP PDUs."; 3063 } 3064 description "Number of PSNP PDUs received/sent."; 3065 } 3066 container csnp { 3067 leaf in { 3068 type uint32; 3069 description "Received CSNP PDUs."; 3071 } 3072 leaf out { 3073 type uint32; 3074 description "Sent CSNP PDUs."; 3075 } 3076 description "Number of CSNP PDUs received/sent."; 3077 } 3078 container unknown { 3079 leaf in { 3080 type uint32; 3081 description "Received unknown PDUs."; 3082 } 3083 leaf out { 3084 type uint32; 3085 description "Sent unknown PDUs."; 3086 } 3087 description "Number of unknown PDUs received/sent."; 3088 } 3089 description 3090 "List of packet counter for supported llevels."; 3091 } 3092 description "Packet counters per IS-IS level."; 3093 } 3094 description 3095 "Grouping for per IS-IS Level packet counters."; 3096 } 3098 /* Groupings for various log buffers */ 3099 grouping spf-log { 3100 container spf-log { 3101 config false; 3102 list event { 3103 key id; 3105 leaf id { 3106 type uint32; 3107 description 3108 "Event identifier - purely internal value."; 3109 } 3110 leaf spf-type { 3111 type enumeration { 3112 enum full { 3113 description "Full SPF computation."; 3114 } 3115 enum route-only { 3116 description 3117 "Route reachability only SPF computation"; 3118 } 3120 } 3121 description "Type of SPF computation performed."; 3122 } 3123 leaf level { 3124 type level-number; 3125 description 3126 "IS-IS level number for SPF computation"; 3127 } 3128 leaf schedule-timestamp { 3129 type yang:timestamp; 3130 description 3131 "Timestamp of when the SPF computation was 3132 scheduled."; 3133 } 3134 leaf start-timestamp { 3135 type yang:timestamp; 3136 description 3137 "Timestamp of when the SPF computation started."; 3138 } 3139 leaf end-timestamp { 3140 type yang:timestamp; 3141 description 3142 "Timestamp of when the SPF computation ended."; 3143 } 3144 list trigger-lsp { 3145 key "lsp"; 3146 leaf lsp { 3147 type lsp-id; 3148 description 3149 "LSPID of the LSP triggering SPF computation."; 3150 } 3151 leaf sequence { 3152 type uint32; 3153 description 3154 "Sequence number of the LSP triggering SPF 3155 computation"; 3156 } 3157 description 3158 "This list includes the LSPs that triggered the 3159 SPF computation."; 3160 } 3161 description 3162 "List of computation events - implemented as a 3163 wrapping buffer."; 3164 } 3166 description 3167 "This container lists the SPF computation events."; 3169 } 3170 description "Grouping for spf-log events."; 3171 } 3173 grouping lsp-log { 3174 container lsp-log { 3175 config false; 3176 list event { 3177 key id; 3179 leaf id { 3180 type uint32; 3181 description 3182 "Event identifier - purely internal value."; 3183 } 3184 leaf level { 3185 type level-number; 3186 description 3187 "IS-IS level number for LSP"; 3188 } 3189 container lsp { 3190 leaf lsp { 3191 type lsp-id; 3192 description 3193 "LSPID of the LSP."; 3194 } 3195 leaf sequence { 3196 type uint32; 3197 description 3198 "Sequence number of the LSP."; 3199 } 3200 description 3201 "LSP identification container - either the received 3202 LSP or the locally generated LSP."; 3203 } 3205 leaf received-timestamp { 3206 type yang:timestamp; 3207 description 3208 "This is the timestamp when the LSA was received. 3209 In case of local LSA update, the timestamp refers 3210 to the LSA origination time."; 3211 } 3213 leaf reason { 3214 type identityref { 3215 base lsp-log-reason; 3216 } 3217 description "Type of LSP change."; 3218 } 3220 description 3221 "List of LSP events - implemented as a 3222 wrapping buffer."; 3223 } 3225 description 3226 "This container lists the LSP log. 3227 Local LSP modifications are also included 3228 in the list."; 3230 } description "Grouping for LSP log."; 3231 } 3233 /* Groupings for the LSDB description */ 3235 /* Unknown TLV and subTLV description */ 3236 grouping tlv { 3237 description 3238 "Type-Length-Value (TLV)"; 3239 leaf type { 3240 type uint16; 3241 description "TLV type."; 3242 } 3243 leaf length { 3244 type uint16; 3245 description "TLV length (octets)."; 3246 } 3247 leaf value { 3248 type yang:hex-string; 3249 description "TLV value."; 3250 } 3251 } 3253 grouping unknown-tlvs { 3254 description 3255 "Unknown TLVs grouping - Used for unknown TLVs or 3256 unknown sub-TLVs."; 3257 container unknown-tlvs { 3258 description "All unknown TLVs."; 3259 list unknown-tlv { 3260 description "Unknown TLV."; 3261 uses tlv; 3262 } 3264 } 3265 } 3267 /* TLVs and subTLVs for prefixes */ 3269 grouping prefix-reachability-attributes { 3270 description 3271 "Grouping for extended reachability attributes of an 3272 IPv4 or IPv6 prefix."; 3274 leaf external-prefix-flag { 3275 type boolean; 3276 description "External prefix flag."; 3277 } 3278 leaf readvertisement-flag { 3279 type boolean; 3280 description "Readvertisement flag."; 3281 } 3282 leaf node-flag { 3283 type boolean; 3284 description "Node flag."; 3285 } 3286 } 3288 grouping prefix-ipv4-source-router-id { 3289 description 3290 "Grouping for the IPv4 source router ID of a prefix 3291 advertisement."; 3293 leaf ipv4-source-router-id { 3294 type inet:ipv4-address; 3295 description "IPv4 Source router ID address."; 3296 } 3297 } 3299 grouping prefix-ipv6-source-router-id { 3300 description 3301 "Grouping for the IPv6 source router ID of a prefix 3302 advertisement."; 3304 leaf ipv6-source-router-id { 3305 type inet:ipv6-address; 3306 description "IPv6 Source router ID address."; 3307 } 3308 } 3310 grouping prefix-attributes-extension { 3311 description "Prefix extended attributes."; 3312 uses prefix-reachability-attributes; 3313 uses prefix-ipv4-source-router-id; 3314 uses prefix-ipv6-source-router-id; 3315 } 3317 grouping prefix-ipv4-std { 3318 description 3319 "Grouping for attributes of an IPv4 standard prefix."; 3320 leaf up-down { 3321 type boolean; 3322 description "Value of up/down bit."; 3323 } 3324 leaf i-e { 3325 type boolean; 3326 description "Value of I/E bit."; 3327 } 3328 leaf ip-prefix { 3329 type inet:ipv4-address; 3330 description "IPv4 prefix address"; 3331 } 3332 leaf prefix-len { 3333 type uint8; 3334 description "IPv4 prefix length (in bits)"; 3335 } 3336 leaf default-metric { 3337 type std-metric; 3338 description "Default IS-IS metric for IPv4 prefix"; 3339 } 3340 container delay-metric { 3341 leaf metric { 3342 type std-metric; 3343 description "IS-IS delay metric for IPv4 prefix"; 3344 } 3345 leaf supported { 3346 type boolean; 3347 default "false"; 3348 description 3349 "Indicates whether IS-IS delay metric is supported."; 3350 } 3351 description "IS-IS delay metric container."; 3352 } 3353 container expense-metric { 3354 leaf metric { 3355 type std-metric; 3356 description "IS-IS expense metric for IPv4 prefix"; 3357 } 3358 leaf supported { 3359 type boolean; 3360 default "false"; 3361 description 3362 "Indicates whether IS-IS delay metric is supported."; 3363 } 3364 description "IS-IS expense metric container."; 3365 } 3366 container error-metric { 3367 leaf metric { 3368 type std-metric; 3369 description 3370 "This leaf describes the IS-IS error metric value"; 3371 } 3372 leaf supported { 3373 type boolean; 3374 default "false"; 3375 description "IS-IS error metric for IPv4 prefix"; 3376 } 3377 description "IS-IS error metric container."; 3378 } 3379 } 3381 grouping prefix-ipv4-extended { 3382 description 3383 "Grouping for attributes of an IPv4 extended prefix."; 3384 leaf up-down { 3385 type boolean; 3386 description "Value of up/down bit."; 3387 } 3388 leaf ip-prefix { 3389 type inet:ipv4-address; 3390 description "IPv4 prefix address"; 3391 } 3392 leaf prefix-len { 3393 type uint8; 3394 description "IPv4 prefix length (in bits)"; 3395 } 3397 leaf metric { 3398 type wide-metric; 3399 description "IS-IS wide metric value"; 3400 } 3401 leaf-list tag { 3402 type uint32; 3403 description 3404 "List of 32-bit tags associated with the IPv4 prefix."; 3405 } 3406 leaf-list tag64 { 3407 type uint64; 3408 description 3409 "List of 32-bit tags associated with the IPv4 prefix."; 3410 } 3411 uses prefix-attributes-extension; 3412 } 3414 grouping prefix-ipv6-extended { 3415 description "Grouping for attributes of an IPv6 prefix."; 3416 leaf up-down { 3417 type boolean; 3418 description "Value of up/down bit."; 3419 } 3420 leaf ip-prefix { 3421 type inet:ipv6-address; 3422 description "IPv6 prefix address"; 3423 } 3424 leaf prefix-len { 3425 type uint8; 3426 description "IPv4 prefix length (in bits)"; 3427 } 3428 leaf metric { 3429 type wide-metric; 3430 description "IS-IS wide metric value"; 3431 } 3432 leaf-list tag { 3433 type uint32; 3434 description 3435 "List of 32-bit tags associated with the IPv4 prefix."; 3436 } 3437 leaf-list tag64 { 3438 type uint64; 3439 description 3440 "List of 32-bit tags associated with the IPv4 prefix."; 3441 } 3442 uses prefix-attributes-extension; 3443 } 3445 /* TLVs and subTLVs for neighbors */ 3447 grouping neighbor-link-attributes { 3448 description 3449 "Grouping for link attributes as defined 3450 in RFC5029"; 3451 leaf link-attributes-flags { 3452 type uint16; 3453 description 3454 "Flags for the link attributes"; 3455 } 3457 } 3458 grouping neighbor-gmpls-extensions { 3459 description 3460 "Grouping for GMPLS attributes of a neighbor as defined 3461 in RFC5307"; 3462 leaf link-local-id { 3463 type uint32; 3464 description 3465 "Local identifier of the link."; 3466 } 3467 leaf remote-local-id { 3468 type uint32; 3469 description 3470 "Remote identifier of the link."; 3471 } 3472 leaf protection-capability { 3473 type uint8; 3474 description 3475 "Describes the protection capabilities 3476 of the link. This is the value of the 3477 first octet of the sub-TLV type 20 value."; 3478 } 3479 container interface-switching-capability { 3480 description 3481 "Interface switching capabilities of the link."; 3482 leaf switching-capability { 3483 type uint8; 3484 description 3485 "Switching capability of the link."; 3486 } 3487 leaf encoding { 3488 type uint8; 3489 description 3490 "Type of encoding of the LSP being used."; 3491 } 3492 container max-lsp-bandwidths { 3493 description "Per priority max LSP bandwidths."; 3494 list max-lsp-bandwidth { 3495 leaf priority { 3496 type uint8 { 3497 range "0 .. 7"; 3498 } 3499 description "Priority from 0 to 7."; 3500 } 3501 leaf bandwidth { 3502 type rt-types:bandwidth-ieee-float32; 3503 description "max LSP bandwidth."; 3504 } 3505 description 3506 "List of max LSP bandwidths for different 3507 priorities."; 3508 } 3509 } 3510 container tdm-specific { 3511 when "../switching-capability = 100"; 3512 description 3513 "Switching Capability-specific information applicable 3514 when switching type is TDM."; 3516 leaf minimum-lsp-bandwidth { 3517 type rt-types:bandwidth-ieee-float32; 3518 description "minimum LSP bandwidth."; 3519 } 3520 leaf indication { 3521 type uint8; 3522 description 3523 "The indication whether the interface supports Standard 3524 or Arbitrary SONET/SDH."; 3525 } 3526 } 3527 container psc-specific { 3528 when "../switching-capability >= 1 and ../switching-capability 3529 <= 4"; 3530 description 3531 "Switching Capability-specific information applicable 3532 when switching type is PSC1,PSC2,PSC3 or PSC4."; 3534 leaf minimum-lsp-bandwidth { 3535 type rt-types:bandwidth-ieee-float32; 3536 description "minimum LSP bandwidth."; 3537 } 3538 leaf mtu { 3539 type uint16; 3540 units bytes; 3541 description 3542 "Interface MTU"; 3543 } 3544 } 3545 } 3546 } 3548 grouping neighbor-extended-te-extensions { 3549 description 3550 "Grouping for TE attributes of a neighbor as defined 3551 in RFC7810"; 3553 container unidirectional-link-delay { 3554 description 3555 "Container for the average delay 3556 from the local neighbor to the remote one."; 3557 leaf flags { 3558 type bits { 3559 bit A { 3560 position 7; 3561 description 3562 "The A bit represents the Anomalous (A) bit. 3563 The A bit is set when the measured value of 3564 this parameter exceeds its configured 3565 maximum threshold. 3566 The A bit is cleared when the measured value 3567 falls below its configured reuse threshold. 3568 If the A bit is clear, 3569 the value represents steady-state link performance."; 3570 } 3571 } 3572 description 3573 "Flags."; 3574 } 3575 leaf value { 3576 type uint32; 3577 units usec; 3578 description 3579 "Delay value expressed in microseconds."; 3580 } 3581 } 3582 container min-max-unidirectional-link-delay { 3583 description 3584 "Container for the min and max delay 3585 from the local neighbor to the remote one."; 3586 leaf flags { 3587 type bits { 3588 bit A { 3589 position 7; 3590 description 3591 "The A bit represents the Anomalous (A) bit. 3592 The A bit is set when the measured value of 3593 this parameter exceeds its configured 3594 maximum threshold. 3595 The A bit is cleared when the measured value 3596 falls below its configured reuse threshold. 3597 If the A bit is clear, 3598 the value represents steady-state link performance."; 3599 } 3600 } 3601 description 3602 "Flags."; 3603 } 3604 leaf min-value { 3605 type uint32; 3606 units usec; 3607 description 3608 "Minimum delay value expressed in microseconds."; 3609 } 3610 leaf max-value { 3611 type uint32; 3612 units usec; 3613 description 3614 "Maximum delay value expressed in microseconds."; 3615 } 3616 } 3617 container unidirectional-link-delay-variation { 3618 description 3619 "Container for the average delay variation 3620 from the local neighbor to the remote one."; 3621 leaf value { 3622 type uint32; 3623 units usec; 3624 description 3625 "Delay variation value expressed in microseconds."; 3626 } 3627 } 3628 container unidirectional-link-loss{ 3629 description 3630 "Container for the packet loss 3631 from the local neighbor to the remote one."; 3632 leaf flags { 3633 type bits { 3634 bit A { 3635 position 7; 3636 description 3637 "The A bit represents the Anomalous (A) bit. 3638 The A bit is set when the measured value of 3639 this parameter exceeds its configured 3640 maximum threshold. 3641 The A bit is cleared when the measured value 3642 falls below its configured reuse threshold. 3643 If the A bit is clear, 3644 the value represents steady-state link performance."; 3645 } 3646 } 3647 description 3648 "Flags."; 3649 } 3650 leaf value { 3651 type uint32; 3652 units percent; 3653 description 3654 "Link packet loss expressed as a percentage 3655 of the total traffic sent over a configurable interval."; 3656 } 3657 } 3658 container unidirectional-link-residual-bandwidth { 3659 description 3660 "Container for the residual bandwidth 3661 from the local neighbor to the remote one."; 3662 leaf value { 3663 type rt-types:bandwidth-ieee-float32; 3664 units Bps; 3665 description 3666 "Residual bandwidth."; 3667 } 3668 } 3669 container unidirectional-link-available-bandwidth { 3670 description 3671 "Container for the available bandwidth 3672 from the local neighbor to the remote one."; 3673 leaf value { 3674 type rt-types:bandwidth-ieee-float32; 3675 units Bps; 3676 description 3677 "Available bandwidth."; 3678 } 3679 } 3680 container unidirectional-link-utilized-bandwidth { 3681 description 3682 "Container for the utilized bandwidth 3683 from the local neighbor to the remote one."; 3684 leaf value { 3685 type rt-types:bandwidth-ieee-float32; 3686 units Bps; 3687 description 3688 "Utilized bandwidth."; 3689 } 3690 } 3691 } 3693 grouping neighbor-te-extensions { 3694 description 3695 "Grouping for TE attributes of a neighbor as defined 3696 in RFC5305"; 3697 leaf admin-group { 3698 type uint32; 3699 description 3700 "Administrative group/Resource Class/Color."; 3701 } 3702 container local-if-ipv4-addrs { 3703 description "All local interface IPv4 addresses."; 3704 leaf-list local-if-ipv4-addr { 3705 type inet:ipv4-address; 3706 description 3707 "List of local interface IPv4 addresses."; 3708 } 3709 } 3710 container remote-if-ipv4-addrs { 3711 description "All remote interface IPv4 addresses."; 3712 leaf-list remote-if-ipv4-addr { 3713 type inet:ipv4-address; 3714 description 3715 "List of remote interface IPv4 addresses."; 3716 } 3717 } 3718 leaf te-metric { 3719 type uint32; 3720 description "TE metric."; 3721 } 3722 leaf max-bandwidth { 3723 type rt-types:bandwidth-ieee-float32; 3724 description "Maximum bandwidth."; 3725 } 3726 leaf max-reservable-bandwidth { 3727 type rt-types:bandwidth-ieee-float32; 3728 description "Maximum reservable bandwidth."; 3729 } 3730 container unreserved-bandwidths { 3731 description "All unreserved bandwidths."; 3732 list unreserved-bandwidth { 3733 leaf priority { 3734 type uint8 { 3735 range "0 .. 7"; 3736 } 3737 description "Priority from 0 to 7."; 3738 } 3739 leaf unreserved-bandwidth { 3740 type rt-types:bandwidth-ieee-float32; 3741 description "Unreserved bandwidth."; 3742 } 3743 description 3744 "List of unreserved bandwidths for different 3745 priorities."; 3747 } 3748 } 3749 } 3751 grouping neighbor-extended { 3752 description 3753 "Grouping for attributes of an IS-IS extended neighbor."; 3754 leaf neighbor-id { 3755 type extended-system-id; 3756 description "System-id of the extended neighbor."; 3757 } 3758 container instances { 3759 description "List of all adjacencies between the local 3760 system and the neighbor system-id."; 3761 list instance { 3762 key id; 3764 leaf id { 3765 type uint32; 3766 description "Unique identifier of an instance of a 3767 particular neighbor."; 3768 } 3769 leaf metric { 3770 type wide-metric; 3771 description "IS-IS wide metric for extended neighbor"; 3772 } 3773 uses neighbor-gmpls-extensions; 3774 uses neighbor-te-extensions; 3775 uses neighbor-extended-te-extensions; 3776 uses neighbor-link-attributes; 3777 uses unknown-tlvs; 3778 description "Instance of a particular adjacency."; 3779 } 3780 } 3781 } 3783 grouping neighbor { 3784 description "IS-IS standard neighbor grouping."; 3785 leaf neighbor-id { 3786 type extended-system-id; 3787 description "IS-IS neighbor system-id"; 3788 } 3789 container instances { 3790 description "List of all adjacencies between the local 3791 system and the neighbor system-id."; 3792 list instance { 3793 key id; 3794 leaf id { 3795 type uint32; 3796 description "Unique identifier of an instance of a 3797 particular neighbor."; 3798 } 3799 leaf i-e { 3800 type boolean; 3801 description 3802 "Internal or External (I/E) Metric bit value"; 3803 } 3804 leaf default-metric { 3805 type std-metric; 3806 description "IS-IS default metric value"; 3807 } 3808 container delay-metric { 3809 leaf metric { 3810 type std-metric; 3811 description "IS-IS delay metric value"; 3812 } 3813 leaf supported { 3814 type boolean; 3815 default "false"; 3816 description "IS-IS delay metric supported"; 3817 } 3818 description "IS-IS delay metric container"; 3819 } 3820 container expense-metric { 3821 leaf metric { 3822 type std-metric; 3823 description "IS-IS delay expense metric value"; 3824 } 3825 leaf supported { 3826 type boolean; 3827 default "false"; 3828 description "IS-IS delay expense metric supported"; 3829 } 3830 description "IS-IS delay expense metric container"; 3831 } 3832 container error-metric { 3833 leaf metric { 3834 type std-metric; 3835 description "IS-IS error metric value"; 3836 } 3837 leaf supported { 3838 type boolean; 3839 default "false"; 3840 description "IS-IS error metric supported"; 3841 } 3842 description "IS-IS error metric container"; 3843 } 3844 description "Instance of a particular adjacency."; 3845 } 3846 } 3847 } 3849 /* Top level TLVs */ 3851 grouping tlv132-ipv4-addresses { 3852 leaf-list ipv4-addresses { 3853 type inet:ipv4-address; 3854 description 3855 "List of IPv4 addresses of the IS-IS node - IS-IS 3856 reference is TLV 132."; 3857 } 3858 description "Grouping for TLV132."; 3859 } 3860 grouping tlv232-ipv6-addresses { 3861 leaf-list ipv6-addresses { 3862 type inet:ipv6-address; 3863 description 3864 "List of IPv6 addresses of the IS-IS node - IS-IS 3865 reference is TLV 232."; 3866 } 3867 description "Grouping for TLV232."; 3868 } 3869 grouping tlv134-ipv4-te-rid { 3870 leaf ipv4-te-routerid { 3871 type inet:ipv4-address; 3872 description 3873 "IPv4 Traffic Engineering router ID of the IS-IS node - 3874 IS-IS reference is TLV 134."; 3875 } 3876 description "Grouping for TLV134."; 3877 } 3878 grouping tlv140-ipv6-te-rid { 3879 leaf ipv6-te-routerid { 3880 type inet:ipv6-address; 3881 description 3882 "IPv6 Traffic Engineering router ID of the IS-IS node - 3883 IS-IS reference is TLV 140."; 3884 } 3885 description "Grouping for TLV140."; 3886 } 3887 grouping tlv129-protocols { 3888 leaf-list protocol-supported { 3889 type uint8; 3890 description 3891 "List of supported protocols of the IS-IS node - 3892 IS-IS reference is TLV 129."; 3893 } 3894 description "Grouping for TLV129."; 3895 } 3896 grouping tlv137-hostname { 3897 leaf dynamic-hostname { 3898 type string; 3899 description 3900 "Host Name of the IS-IS node - IS-IS reference 3901 is TLV 137."; 3902 } 3903 description "Grouping for TLV137."; 3904 } 3905 grouping tlv10-authentication { 3906 container authentication { 3907 leaf authentication-type { 3908 type string; 3909 description 3910 "Authentication type to be used with IS-IS node."; 3911 } 3912 leaf authentication-key { 3913 type string; 3914 description 3915 "Authentication keyto be used. For security reasons, 3916 the authentication key MUST NOT be presented in 3917 plaintext format. It is recommended to use an MD5 3918 hash to present the authentication-key."; 3919 } 3920 description 3921 "IS-IS node authentication information container - 3922 IS-IS reference is TLV 10."; 3923 } 3924 description "Grouping for TLV10."; 3925 } 3926 grouping tlv229-mt { 3927 container mt-entries { 3928 list topology { 3929 description 3930 "List of topologies supported"; 3932 leaf mt-id { 3933 type uint16 { 3934 range "0 .. 4095"; 3935 } 3936 description 3937 "Multi-Topology identifier of topology."; 3939 } 3941 leaf attributes { 3942 type bits { 3943 bit overload { 3944 description 3945 "If set, the originator is overloaded, 3946 and must be avoided in path calculation."; 3947 } 3948 bit attached { 3949 description 3950 "If set, the originator is attached to 3951 another area using the referred metric."; 3952 } 3953 } 3954 description 3955 "Attributes of the LSP for the associated 3956 topology."; 3957 } 3958 } 3959 description 3960 "IS-IS node topology information container - 3961 IS-IS reference is TLV 229."; 3962 } 3963 description "Grouping for TLV229."; 3964 } 3966 grouping tlv242-router-capabilities { 3967 container router-capabilities { 3968 list router-capability { 3969 leaf flags { 3970 type bits { 3971 bit flooding { 3972 position 0; 3973 description 3974 "If the S bit is set, the IS-IS Router CAPABILITY 3975 TLV MUST be flooded across the entire routing 3976 domain. If the S bit is clear, the TLV MUST NOT 3977 be leaked between levels. This bit MUST NOT 3978 be altered during the TLV leaking."; 3979 } 3980 bit down { 3981 position 1; 3982 description 3983 "When the IS-IS Router CAPABILITY TLV is leaked 3984 from level-2 to level-1, the D bit MUST be set. 3985 Otherwise, this bit MUST be clear. IS-IS Router 3986 capability TLVs with the D bit set MUST NOT be 3987 leaked from level-1 to level-2 in to prevent 3988 TLV looping."; 3989 } 3990 } 3991 description "Router Capability Flags"; 3992 } 3993 container node-tags { 3994 if-feature node-tag; 3995 list node-tag { 3996 leaf tag { 3997 type uint32; 3998 description "Node tag value."; 3999 } 4000 description "List of tags."; 4001 } 4002 description "Container for node admin tags"; 4003 } 4005 uses unknown-tlvs; 4007 leaf binary { 4008 type binary; 4009 description 4010 "Binary encoding of the IS-IS node capabilities"; 4011 } 4012 description 4013 "IS-IS node capabilities. This list element may 4014 be extended with detailed information - IS-IS 4015 reference is TLV 242."; 4016 } 4017 description "List of router capability TLVs."; 4018 } 4019 description "Grouping for TLV242."; 4020 } 4022 grouping tlv138-srlg { 4023 description 4024 "Grouping for TLV138."; 4025 container links-srlgs { 4026 list links { 4027 leaf neighbor-id { 4028 type extended-system-id; 4029 description "System-id of the extended neighbor."; 4030 } 4031 leaf flags { 4032 type uint8; 4033 description 4034 "Flags associated with the link."; 4036 } 4037 leaf link-local-id { 4038 type union { 4039 type inet:ip-address; 4040 type uint32; 4041 } 4042 description 4043 "Local identifier of the link. 4044 It could be an IPv4 address or a local identifier."; 4045 } 4046 leaf link-remote-id { 4047 type union { 4048 type inet:ip-address; 4049 type uint32; 4050 } 4051 description 4052 "Remote identifier of the link. 4053 It could be an IPv4 address or a remotely learned 4054 identifier."; 4055 } 4056 container srlgs { 4057 description "List of SRLGs."; 4058 leaf-list srlg { 4059 type uint32; 4060 description 4061 "SRLG value of the link."; 4062 } 4063 } 4064 description 4065 "SRLG attribute of a link."; 4066 } 4067 description 4068 "List of links with SRLGs"; 4069 } 4070 } 4072 /* Grouping for LSDB description */ 4074 grouping lsp-entry { 4075 description "IS-IS LSP database entry groupting"; 4077 leaf decoded-completed { 4078 type boolean; 4079 description "IS-IS LSP body fully decoded."; 4080 } 4081 leaf raw-data { 4082 type yang:hex-string; 4083 description 4084 "The hexadecial representation of the complete LSP in 4085 network-byte order (NBO) as received or originated."; 4086 } 4087 leaf lsp-id { 4088 type lsp-id; 4089 description "LSP ID of the LSP"; 4090 } 4091 leaf checksum { 4092 type uint16; 4093 description "LSP checksum"; 4094 } 4095 leaf remaining-lifetime { 4096 type uint16; 4097 units "seconds"; 4098 description 4099 "Remaining lifetime (in seconds) until LSP expiration."; 4100 } 4101 leaf sequence { 4102 type uint32; 4103 description 4104 "This leaf describes the sequence number of the LSP."; 4105 } 4106 leaf attributes { 4107 type bits { 4108 bit partitioned { 4109 description "Originator partition repair supported"; 4110 } 4111 bit attached-error { 4112 description 4113 "If set, the originator is attached to 4114 another area using the referred metric."; 4115 } 4116 bit attached-expense { 4117 description 4118 "If set, the originator is attached to 4119 another area using the referred metric."; 4120 } 4121 bit attached-delay { 4122 description 4123 "If set, the originator is attached to 4124 another area using the referred metric."; 4125 } 4126 bit attached-default { 4127 description 4128 "If set, the originator is attached to 4129 another area using the referred metric."; 4130 } 4131 bit overload { 4132 description 4133 "If set, the originator is overloaded, 4134 and must be avoided in path calculation."; 4135 } 4136 } 4137 description "LSP attributes"; 4138 } 4140 uses tlv132-ipv4-addresses; 4141 uses tlv232-ipv6-addresses; 4142 uses tlv134-ipv4-te-rid; 4143 uses tlv140-ipv6-te-rid; 4144 uses tlv129-protocols; 4145 uses tlv137-hostname; 4146 uses tlv10-authentication; 4147 uses tlv229-mt; 4148 uses tlv242-router-capabilities; 4149 uses tlv138-srlg; 4150 uses unknown-tlvs; 4152 container is-neighbor { 4153 list neighbor { 4154 key neighbor-id; 4156 uses neighbor; 4157 description "List of neighbors."; 4158 } 4159 description 4160 "Standard IS neighbors container - IS-IS reference is 4161 TLV 2."; 4162 } 4164 container extended-is-neighbor { 4165 list neighbor { 4166 key neighbor-id; 4168 uses neighbor-extended; 4169 description 4170 "List of extended IS neighbors"; 4171 } 4172 description 4173 "Standard IS extended neighbors container - IS-IS 4174 reference is TLV 22"; 4175 } 4177 container ipv4-internal-reachability { 4178 list prefixes { 4179 uses prefix-ipv4-std; 4180 description "List of prefixes."; 4181 } 4182 description 4183 "IPv4 internal reachability information container - IS-IS 4184 reference is TLV 128."; 4185 } 4187 container ipv4-external-reachability { 4188 list prefixes { 4189 uses prefix-ipv4-std; 4190 description "List of prefixes."; 4191 } 4192 description 4193 "IPv4 external reachability information container - 4194 IS-IS reference is TLV 130."; 4195 } 4197 container extended-ipv4-reachability { 4198 list prefixes { 4199 uses prefix-ipv4-extended; 4200 uses unknown-tlvs; 4201 description "List of prefixes."; 4202 } 4203 description 4204 "IPv4 extended reachability information container - 4205 IS-IS reference is TLV 135."; 4206 } 4208 container mt-is-neighbor { 4209 list neighbor { 4210 leaf mt-id { 4211 type uint16 { 4212 range "0 .. 4095"; 4213 } 4214 description "Multi-topology (MT) identifier"; 4215 } 4216 uses neighbor-extended; 4217 description "List of neighbors."; 4218 } 4219 description 4220 "IS-IS multi-topology neighbor container - IS-IS 4221 reference is TLV 223."; 4222 } 4224 container mt-extended-ipv4-reachability { 4225 list prefixes { 4226 leaf mt-id { 4227 type uint16 { 4228 range "0 .. 4095"; 4229 } 4230 description "Multi-topology (MT) identifier"; 4231 } 4232 uses prefix-ipv4-extended; 4233 uses unknown-tlvs; 4234 description "List of extended prefixes."; 4235 } 4236 description 4237 "IPv4 multi-topolgy (MT) extended reachability 4238 information container - IS-IS reference is TLV 235."; 4239 } 4241 container mt-ipv6-reachability { 4242 list prefixes { 4243 leaf MT-ID { 4244 type uint16 { 4245 range "0 .. 4095"; 4246 } 4247 description "Multi-topology (MT) identifier"; 4248 } 4249 uses prefix-ipv6-extended; 4250 uses unknown-tlvs; 4251 description "List of IPv6 extended prefixes."; 4252 } 4253 description 4254 "IPv6 multi-topolgy (MT) extended reachability 4255 information container - IS-IS reference is TLV 237."; 4256 } 4258 container ipv6-reachability { 4259 list prefixes { 4260 uses prefix-ipv6-extended; 4261 uses unknown-tlvs; 4262 description "List of IPv6 prefixes."; 4263 } 4264 description 4265 "IPv6 reachability information container - IS-IS 4266 reference is TLV 236."; 4267 } 4268 } 4270 grouping lsdb { 4271 description "Link State Database (LSDB) grouping"; 4272 container database { 4273 config false; 4274 list level-db { 4275 key level; 4276 leaf level { 4277 type level-number; 4278 description "LSDB level number (1 or 2)"; 4279 } 4280 list lsp { 4281 key lsp-id; 4282 uses lsp-entry; 4283 description "List of LSPs in LSDB"; 4284 } 4285 description "LSP list for LSDB level container"; 4286 } 4287 description "IS-IS Link State database container"; 4288 } 4289 } 4291 /* Augmentations */ 4293 augment "/rt:routing/" 4294 +"rt:ribs/rt:rib/rt:routes/rt:route" { 4295 when "rt:source-protocol = 'isis:isis'" { 4296 description "IS-IS-specific route attributes."; 4297 } 4298 uses route-content; 4299 description 4300 "This augments route object in RIB with IS-IS-specific 4301 attributes."; 4302 } 4304 augment "/if:interfaces/if:interface" { 4305 leaf clns-mtu { 4306 type uint16; 4307 description "CLNS MTU of the interface"; 4308 } 4309 description "ISO specific interface parameters."; 4310 } 4312 augment "/rt:routing/rt:control-plane-protocols/" 4313 +"rt:control-plane-protocol" { 4314 when "rt:type = 'isis:isis'" { 4315 description 4316 "This augment is only valid when routing protocol 4317 instance type is 'isis'"; 4318 } 4319 description 4320 "This augments a routing protocol instance with IS-IS 4321 specific parameters."; 4322 container isis { 4323 must "count(area-address) > 0" { 4324 error-message 4325 "At least one area-address must be configured."; 4326 description 4327 "Enforce configuration of at least one area."; 4328 } 4330 uses instance-config; 4331 uses instance-state; 4333 container topologies { 4334 if-feature multi-topology; 4335 list topology { 4336 key "name"; 4337 leaf enable { 4338 type boolean; 4339 description "Topology enable configuration"; 4340 } 4341 leaf name { 4342 type leafref { 4343 path "../../../../../../rt:ribs/rt:rib/rt:name"; 4344 } 4345 description 4346 "Routing Information Base (RIB) corresponding 4347 to topology."; 4348 } 4350 uses multi-topology-config; 4352 description "List of topologies"; 4353 } 4354 description "Multi-topology container"; 4355 } 4356 container interfaces { 4357 list interface { 4358 key "name"; 4359 leaf name { 4360 type if:interface-ref; 4362 description 4363 "Reference to the interface within 4364 the routing-instance."; 4365 } 4366 uses interface-config; 4367 uses interface-state; 4368 container topologies { 4369 if-feature multi-topology; 4370 list topology { 4371 key name; 4373 leaf name { 4374 type leafref { 4375 path "../../../../../../../../"+ 4376 "rt:ribs/rt:rib/rt:name"; 4377 } 4379 description 4380 "Routing Information Base (RIB) corresponding 4381 to topology."; 4382 } 4383 uses multi-topology-interface-config; 4384 description "List of interface topologies"; 4385 } 4386 description "Multi-topology container"; 4387 } 4388 description "List of IS-IS interfaces."; 4389 } 4390 description 4391 "IS-IS interface specific configuration container"; 4392 } 4394 description 4395 "IS-IS configuration/state top-level container"; 4396 } 4397 } 4399 /* RPC methods */ 4401 rpc clear-adjacency { 4402 description 4403 "This RPC request clears a particular set of IS-IS 4404 adjacencies. If the operation fails due to an internal 4405 reason, then the error-tag and error-app-tag should be 4406 set indicating the reason for the failure."; 4407 input { 4409 leaf routing-protocol-instance-name { 4410 type leafref { 4411 path "/rt:routing/rt:control-plane-protocols/" 4412 + "rt:control-plane-protocol/rt:name"; 4413 } 4414 mandatory "true"; 4415 description 4416 "Name of the IS-IS protocol instance whose IS-IS 4417 information is being queried. 4419 If the corresponding IS-IS instance doesn't exist, 4420 then the operation will fail with an error-tag of 4421 'data-missing' and an error-app-tag of 4422 'routing-protocol-instance-not-found'."; 4423 } 4424 leaf level { 4425 type level; 4426 description 4427 "IS-IS level of the adjacency to be cleared. If the 4428 IS-IS level is level-1-2, both level 1 and level 2 4429 adjacencies would be cleared. 4431 If the value provided is different from the one 4432 authorized in the enum type, then the operation 4433 SHALL fail with an error-tag of 'data-missing' and 4434 an error-app-tag of 'bad-isis-level'."; 4435 } 4436 leaf interface { 4437 type if:interface-ref; 4438 description 4439 "IS-IS interface name. 4441 If the corresponding IS-IS interface doesn't exist, 4442 then the operation SHALL fail with an error-tag of 4443 'data-missing' and an error-app-tag of 4444 'isis-interface-not-found'."; 4445 } 4446 } 4447 } 4449 rpc clear-database { 4450 description 4451 "This RPC request clears a particular IS-IS database. If 4452 the operation fails for an IS-IS internal reason, then 4453 the error-tag and error-app-tag should be set 4454 indicating the reason for the failure."; 4455 input { 4456 leaf routing-protocol-instance-name { 4457 type leafref { 4458 path "/rt:routing/rt:control-plane-protocols/" 4459 + "rt:control-plane-protocol/rt:name"; 4460 } 4461 mandatory "true"; 4462 description 4463 "Name of the IS-IS protocol instance whose IS-IS 4464 database(s) is/are being cleared. 4466 If the corresponding IS-IS instance doesn't exist, 4467 then the operation will fail with an error-tag of 4468 'data-missing' and an error-app-tag of 4469 'routing-protocol-instance-not-found'."; 4470 } 4471 leaf level { 4472 type level; 4473 description 4474 "IS-IS level of the adjacency to be cleared. If the 4475 IS-IS level is level-1-2, both level 1 and level 2 4476 databases would be cleared. 4478 If the value provided is different from the one 4479 authorized in the enum type, then the operation 4480 SHALL fail with an error-tag of 'data-missing' and 4481 an error-app-tag of 'bad-isis-level'."; 4482 } 4483 } 4484 } 4486 /* Notifications */ 4488 notification database-overload { 4489 uses notification-instance-hdr; 4491 leaf overload { 4492 type enumeration { 4493 enum off { 4494 description 4495 "Indicates IS-IS instance has left overload state"; 4496 } 4497 enum on { 4498 description 4499 "Indicates IS-IS instance has entered overload state"; 4500 } 4502 } 4503 description "New overload state of the IS-IS instance"; 4504 } 4505 description 4506 "This notification is sent when an IS-IS instance 4507 overload state changes."; 4508 } 4509 notification lsp-too-large { 4510 uses notification-instance-hdr; 4511 uses notification-interface-hdr; 4513 leaf pdu-size { 4514 type uint32; 4515 description "Size of the LSP PDU"; 4516 } 4517 leaf lsp-id { 4518 type lsp-id; 4519 description "LSP ID"; 4520 } 4521 description 4522 "This notification is sent when we attempt to propagate 4523 an LSP that is larger than the dataLinkBlockSize for the 4524 circuit. The notification generation must be throttled 4525 with at least 5 seconds betweeen successive 4526 notifications."; 4527 } 4529 notification if-state-change { 4530 uses notification-instance-hdr; 4531 uses notification-interface-hdr; 4533 leaf state { 4534 type if-state-type; 4535 description "Interface state."; 4536 } 4537 description 4538 "This notification is sent when an interface 4539 state change is detected."; 4540 } 4542 notification corrupted-lsp-detected { 4543 uses notification-instance-hdr; 4544 leaf lsp-id { 4545 type lsp-id; 4546 description "LSP ID"; 4547 } 4548 description 4549 "This notification is sent when we find that 4550 an LSP that was stored in memory has become 4551 corrupted."; 4552 } 4554 notification attempt-to-exceed-max-sequence { 4555 uses notification-instance-hdr; 4556 leaf lsp-id { 4557 type lsp-id; 4558 description "LSP ID"; 4559 } 4560 description 4561 "This notification is sent when the system 4562 wraps the 32-bit sequence counter of an LSP."; 4563 } 4565 notification id-len-mismatch { 4566 uses notification-instance-hdr; 4567 uses notification-interface-hdr; 4569 leaf pdu-field-len { 4570 type uint8; 4571 description "Size of the ID length in the received PDU"; 4572 } 4573 leaf raw-pdu { 4574 type binary; 4575 description "Received raw PDU."; 4576 } 4577 description 4578 "This notification is sent when we receive a PDU 4579 with a different value for the System ID length. 4580 The notification generation must be throttled 4581 with at least 5 seconds betweeen successive 4582 notifications."; 4583 } 4585 notification max-area-addresses-mismatch { 4586 uses notification-instance-hdr; 4587 uses notification-interface-hdr; 4589 leaf max-area-addresses { 4590 type uint8; 4591 description "Received number of supported areas"; 4592 } 4593 leaf raw-pdu { 4594 type binary; 4595 description "Received raw PDU."; 4596 } 4597 description 4598 "This notification is sent when we receive a PDU 4599 with a different value for the Maximum Area Addresses. 4600 The notification generation must be throttled 4601 with at least 5 seconds betweeen successive 4602 notifications."; 4603 } 4604 notification own-lsp-purge { 4605 uses notification-instance-hdr; 4606 uses notification-interface-hdr; 4607 leaf lsp-id { 4608 type lsp-id; 4609 description "LSP ID"; 4610 } 4611 description 4612 "This notification is sent when the system receives 4613 a PDU with its own system ID and zero age."; 4614 } 4616 notification sequence-number-skipped { 4617 uses notification-instance-hdr; 4618 uses notification-interface-hdr; 4619 leaf lsp-id { 4620 type lsp-id; 4621 description "LSP ID"; 4622 } 4623 description 4624 "This notification is sent when the system receives a 4625 PDU with its own system ID and different contents. The 4626 system has to reoriginate the LSP with a higher sequence 4627 number."; 4628 } 4630 notification authentication-type-failure { 4631 uses notification-instance-hdr; 4632 uses notification-interface-hdr; 4633 leaf raw-pdu { 4634 type binary; 4635 description "Received raw PDU."; 4636 } 4637 description 4638 "This notification is sent when the system receives a 4639 PDU with the wrong authentication type field. 4640 The notification generation must be throttled 4641 with at least 5 seconds betweeen successive 4642 notifications."; 4643 } 4645 notification authentication-failure { 4646 uses notification-instance-hdr; 4647 uses notification-interface-hdr; 4648 leaf raw-pdu { 4649 type binary; 4650 description "Received raw PDU."; 4651 } 4652 description 4653 "This notification is sent when the system receives 4654 a PDU with the wrong authentication information. 4655 The notification generation must be throttled with 4656 with at least 5 seconds betweeen successive 4657 notifications."; 4658 } 4660 notification version-skew { 4661 uses notification-instance-hdr; 4662 uses notification-interface-hdr; 4663 leaf protocol-version { 4664 type uint8; 4665 description "Protocol version received in the PDU."; 4666 } 4667 leaf raw-pdu { 4668 type binary; 4669 description "Received raw PDU."; 4670 } 4671 description 4672 "This notification is sent when the system receives a 4673 PDU with a different protocol version number. 4674 The notification generation must be throttled 4675 with at least 5 seconds betweeen successive 4676 notifications."; 4677 } 4679 notification area-mismatch { 4680 uses notification-instance-hdr; 4681 uses notification-interface-hdr; 4682 leaf raw-pdu { 4683 type binary; 4684 description "Received raw PDU."; 4685 } 4686 description 4687 "This notification is sent when the system receives a 4688 Hello PDU from an IS that does not share any area 4689 address. The notification generation must be throttled 4690 with at least 5 seconds betweeen successive 4691 notifications."; 4692 } 4694 notification rejected-adjacency { 4695 uses notification-instance-hdr; 4696 uses notification-interface-hdr; 4697 leaf raw-pdu { 4698 type binary; 4699 description 4700 "Received raw PDU."; 4701 } 4702 leaf reason { 4703 type string; 4704 description 4705 "The system may provide a reason to reject the 4706 adjacency. If the reason is not available, 4707 an empty string will be returned."; 4708 } 4709 description 4710 "This notification is sent when the system receives a 4711 Hello PDU from an IS but does not establish an adjacency 4712 for some reason. The notification generation must be 4713 throttled with at least 5 seconds betweeen successive 4714 notifications."; 4715 } 4717 notification protocols-supported-mismatch { 4718 uses notification-instance-hdr; 4719 uses notification-interface-hdr; 4720 leaf raw-pdu { 4721 type binary; 4722 description "Received raw PDU."; 4723 } 4724 leaf-list protocols { 4725 type uint8; 4726 description 4727 "List of protocols supported by the remote system."; 4728 } 4729 description 4730 "This notification is sent when the system receives a 4731 non-pseudonode LSP that has no matching protocols 4732 supported. The notification generation must be throttled 4733 with at least 5 seconds betweeen successive 4734 notifications."; 4735 } 4737 notification lsp-error-detected { 4738 uses notification-instance-hdr; 4739 uses notification-interface-hdr; 4740 leaf lsp-id { 4741 type lsp-id; 4742 description "LSP ID."; 4743 } 4744 leaf raw-pdu { 4745 type binary; 4746 description "Received raw PDU."; 4748 } 4749 leaf error-offset { 4750 type uint32; 4751 description 4752 "If the problem is a malformed TLV, the error-offset 4753 points to the start of the TLV. If the problem is with 4754 the LSP header, the error-offset points to the errant 4755 byte"; 4756 } 4757 leaf tlv-type { 4758 type uint8; 4759 description 4760 "If the problem is a malformed TLV, the tlv-type is set 4761 to the type value of the suspicious TLV. Otherwise, 4762 this leaf is not present."; 4763 } 4764 description 4765 "This notification is sent when the system receives an 4766 LSP with a parse error. The notification generation must 4767 be throttled with at least 5 seconds betweeen successive 4768 notifications."; 4769 } 4771 notification adjacency-state-change { 4772 uses notification-instance-hdr; 4773 uses notification-interface-hdr; 4774 leaf neighbor { 4775 type string; 4776 description 4777 "Name of the neighbor. If the name of the neighbor is 4778 not available, it is not returned."; 4779 } 4780 leaf neighbor-system-id { 4781 type system-id; 4782 description "Neighbor system-id"; 4783 } 4784 leaf state { 4785 type adj-state-type; 4787 description "New state of the IS-IS adjacency."; 4788 } 4789 leaf reason { 4790 type string; 4791 description 4792 "If the adjacency is going to DOWN, this leaf provides 4793 a reason for the adjacency going down. The reason is 4794 provided as a text. If the adjacency is going to UP, no 4795 reason is provided."; 4797 } 4798 description 4799 "This notification is sent when an IS-IS adjacency 4800 moves to Up state or to Down state."; 4801 } 4803 notification lsp-received { 4804 uses notification-instance-hdr; 4805 uses notification-interface-hdr; 4807 leaf lsp-id { 4808 type lsp-id; 4809 description "LSP ID"; 4810 } 4811 leaf sequence { 4812 type uint32; 4813 description "Sequence number of the received LSP."; 4814 } 4815 leaf received-timestamp { 4816 type yang:timestamp; 4818 description "Timestamp when the LSP was received."; 4819 } 4820 leaf neighbor-system-id { 4821 type system-id; 4822 description "Neighbor system-id of LSP sender"; 4823 } 4824 description 4825 "This notification is sent when an LSP is received. 4826 The notification generation must be throttled with at 4827 least 5 seconds betweeen successive notifications."; 4828 } 4830 notification lsp-generation { 4831 uses notification-instance-hdr; 4833 leaf lsp-id { 4834 type lsp-id; 4835 description "LSP ID"; 4836 } 4837 leaf sequence { 4838 type uint32; 4839 description "Sequence number of the received LSP."; 4840 } 4841 leaf send-timestamp { 4842 type yang:timestamp; 4844 description "Timestamp when our LSP was regenerated."; 4846 } 4847 description 4848 "This notification is sent when an LSP is regenerated. 4849 The notification generation must be throttled with at 4850 least 5 seconds betweeen successive notifications."; 4851 } 4852 } 4854 4856 7. Security Considerations 4858 The YANG module specified in this document defines a schema for data 4859 that is designed to be accessed via network management protocols such 4860 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 4861 is the secure transport layer, and the mandatory-to-implement secure 4862 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 4863 is HTTPS, and the mandatory-to-implement secure transport is TLS 4864 [RFC8446] 4866 The Network Configuration Access Control Model (NACM) [RFC8341] 4867 provides the means to restrict access for particular NETCONF or 4868 RESTCONF users to a preconfigured subset of all available NETCONF or 4869 RESTCONF protocol operations and content. 4871 There are a number of data nodes defined in this YANG module that are 4872 writable/creatable/deletable (i.e., config true, which is the 4873 default). These data nodes may be considered sensitive or vulnerable 4874 in some network environments. Write operations (e.g., edit-config) 4875 to these data nodes without proper protection can have a negative 4876 effect on network operations. For IS-IS, the ability to modify IS-IS 4877 configuration will allow the entire IS-IS domain to be compromised 4878 including creating adjacencies with unauthorized routers to misroute 4879 traffic, isolate routers, or mount a massive Denial-of-Service (DoS) 4880 attack. A user should consider all the configuration nodes are 4881 sensible. 4883 Some of the readable data nodes in this YANG module may be considered 4884 sensitive or vulnerable in some network environments. It is thus 4885 important to control read access (e.g., via get, get-config, or 4886 notification) to these data nodes. The exposure of the Link State 4887 Database (LSDB) will expose the detailed topology of the network 4888 including authentication parameters. Implementations MUST NOT 4889 provide a configured authentication key in a clear text format in 4890 response to any request (e.g., via get, get-config). 4892 For IS-IS authentication, configuration is supported vua the 4893 specification of key-chain [RFC8177] or the direction specification 4894 of key and authentication algorithm. Hence, authentification 4895 configuration using the "auth-table-trailer" case in the 4896 "authentication" container inherits the security considerations of 4897 [RFC8177]. This includes the considerations with respect to the 4898 local storage and handling of authentication keys. 4900 Some of the RPC operations in this YANG module may be considered 4901 sensitive or vulnerable in some network environments. It is thus 4902 important to control access to these operations. The OSPF YANG 4903 module support the "clear-adjacency" and "clear-database" RPCs. If 4904 access too either of these is compromised, they can result in 4905 temporary network outages be employed to mount DoS attacks. 4907 8. Contributors 4909 Authors would like to thank Kiran Agrahara Sreenivasa, Dean 4910 Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major 4911 contributions to the draft. 4913 9. IANA Considerations 4915 The IANA is requested to assign two new URIs from the IETF XML 4916 registry ([RFC3688]). Authors are suggesting the following URI: 4918 URI: urn:ietf:params:xml:ns:yang:ietf-isis 4919 Registrant Contact: IS-IS WG 4920 XML: N/A, the requested URI is an XML namespace 4922 This document also requests one new YANG module name in the YANG 4923 Module Names registry ([RFC6020]) with the following suggestion: 4925 name: ietf-isis 4926 namespace: urn:ietf:params:xml:ns:yang:ietf-isis 4927 prefix: isis 4928 reference: RFC XXXX 4930 10. Change log for ietf-isis YANG module 4932 10.1. From version -26 to version -27 4934 o Fixed XPATH to switching-capability leaf in "when" statement of 4935 psc-specific and tdm-specific containers. 4937 10.2. From version -25 to version -26 4939 o Modify BFD reference descriptions. 4941 o Fix indentation. 4943 o "uses interface-state" was missing. 4945 10.3. From version -24 to version -25 4947 o RPC clear-adjacency uses now an interface reference instead of a 4948 string. 4950 o Use expanded "address-family" rather than "af" in the model. 4952 o Fix pattern for area-address. 4954 o Removed unnecessary identities. 4956 o Added an instances container and list in the modeling of neighbors 4957 in the LSDB. This is to manage the case where there are parallel 4958 links between two neighbors. 4960 o Notification instance header: removed routing-instance leaf 4961 (alignment with OSPF). 4963 o Notification instance header: changed routing-protocol-name to a 4964 reference. 4966 o Notification interface header: changed interface to a reference. 4968 o RPCs: changed instance-state-ref typedef to a leafref. Removed 4969 associated typedef. 4971 o Revised some groupings and their names (alignment with OSPF). 4973 o Some description alignment with OSPF. 4975 o auto-cost container alignment with OSPF. 4977 o MT-ID leaf in database description renamed (lower-case) mt-id. 4979 o In lsp-log grouping, leaf change is renamed reason to align with 4980 OSPF. 4982 o Added some link attributes (GMPLS, TE, extended TE, SRLGs) in the 4983 LSDB. 4985 o Added extended-system-id typedef which contains the systemid plus 4986 the pseudonode number. 4988 o Add support of POI Purge Originator Identification. 4990 10.4. From version -22 to version -24 4992 o Fix revision date of the module. 4994 10.5. From version -21 to version -22 4996 o TE router-id modeling alignment with OSPF. 4998 o Add max-ecmp + feature in spf-control container (alignment with 4999 OSPF). 5001 10.6. From version -20 to version -21 5003 o Model revision date fix 5005 10.7. From version -19 to version -20 5007 o Moved to Yang 1.1 5009 o Lower case enumerations 5011 o Add RFC references to features 5013 o Remove segment-routing feature 5015 o Modified BFD activation modeling 5017 10.8. From version -18 to version -19 5019 o Align with draft-ietf-netmod-rfc8022bis. 5021 o Modify address family types as per draft-ietf-rtgwg-routing-types- 5022 17. 5024 10.9. From version -17 to version -18 5026 o NMDA compliancy. 5028 o Set some default values. 5030 o Align with iana-rt-types module. 5032 10.10. From version -16 to version -17 5034 o Cosmetic fixes. 5036 o Use of rt-types model. 5038 10.11. From version -15 to version -16 5040 o Alignment with last IETF key chain model. 5042 o lsp-log "change" leaf moved as an identity. 5044 o Incremental SPF removed from spf-log types. 5046 10.12. From version -14 to version -15 5048 o Alignment with OSPF model done: 5050 * Added spf-control container with IETF SPF delay algorithm as a 5051 feature. 5053 * Added graceful-restart options. 5055 * Added nsr as a feature. 5057 * Removed per topology FRR. Need to be augmented if necessary. 5059 * Created an ldp container within mpls. 5061 * Renamed igp-ldp-sync to igp-sync. 5063 * Added auto-cost container. 5065 * Moved reference-bandwidth under auto-cost container. 5067 * Added IS-IS local RIB as operational state. 5069 * Added decode-completed and raw-data leaves in the LSDB model. 5071 * Modified the notification header. 5073 10.13. From version -13 to version -14 5075 o Segment Routing extensions are now in a separate document. 5077 10.14. From version -12 to version -13 5079 o Move feature nlpid-control to container rather than list. 5081 o Rename multi-topology to topologies to align with OSPF. 5083 o Rename bfd/enabled to bfd/enable for consistency reason. 5085 o Add support for NSR with a feature. 5087 10.15. From version -09 to version -12 5089 o Rename node-tag container to node-tags. 5091 10.16. From version -08 to version -09 5093 o Added container before af list. 5095 o Added container before topology list. 5097 o Aligned LFA if per level cfg. 5099 o Align to draft-ietf-netmod-routing-cfg-23. 5101 10.17. From version -07 to version -08 5103 o Remove selector from system-id type. 5105 o Add some default values. 5107 o Moved lists to containers+groupings for per level configuration. 5109 o remove routing-instance as per core routing model v21. 5111 o added BFD leaf (no more BFD protocol model). 5113 o changed keychain module reference. 5115 10.18. From version -05 to version -07 5117 o Move Overload config from list to container. 5119 o Move Overload-max-metric config from list to container. 5121 o Move preference config from list to container. 5123 o Add Node flag in config. 5125 o Removed BFD config => moved to isis-bfd module. 5127 o Remove call to routing policy model. 5129 10.19. From version -03 to version -05 5131 o Correct invalid references to previous versions of core routing 5132 model. 5134 o Remove BFD config and replace by groupings from ietf-bfd. 5136 o Adding routing-policy support through routing-policy model. 5138 10.20. From version -02 to version -03 5140 o Reviewed config and op state groupings. 5142 o Add default value to lfa candidate-disabled. 5144 o Add enable leaf to isis container to reflect admin state. 5146 o Move to VRF centric only. 5148 o Segment routing is part os a separate module. 5150 10.21. From version -01 to version -02 5152 o Adding IPFRR. 5154 o Adding igp-ldp-sync. 5156 o Adding segment-routing. 5158 o Adding instance reference to operational states. 5160 o Move AF type from string to identity. 5162 o Updated router-capability in LSDB description. 5164 o packet counters moved to interface-packet-counters. 5166 o Added modification information in lsp-log. 5168 o Removing igp-ldp-sync timer in IS-IS. 5170 o Defining hierarchy for operational states. 5172 o Adding clns-mtu. 5174 o Adding key-chain. 5176 10.22. From version -00 to version -01 5178 o Interface metric move from af container to interface container. 5180 o Hello-padding on interface moved to hello-padding-disable with 5181 empty type. 5183 o three-way-handshake removed. 5185 o route preference changed to a choice. 5187 o csnp-authentication/psnp-authentication merged to authentication 5188 container. 5190 o lsp-gen-interval-exp-delay removed. 5192 o Added overload-max-metric feature. 5194 o overload-max-metric is in a separate container. 5196 o Change hello-padding to container. 5198 o Change bfd to container. 5200 o Make BFD a feature. 5202 o Create mpls-te container and put router-id inside. 5204 o Remove GR helper disable and timers. 5206 11. References 5208 11.1. Normative References 5210 [I-D.ietf-bfd-yang] 5211 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 5212 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 5213 Detection (BFD)", draft-ietf-bfd-yang-17 (work in 5214 progress), August 2018. 5216 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 5217 Requirement Levels", BCP 14, RFC 2119, 5218 DOI 10.17487/RFC2119, March 1997, 5219 . 5221 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 5222 DOI 10.17487/RFC3688, January 2004, 5223 . 5225 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi 5226 Topology (MT) Routing in Intermediate System to 5227 Intermediate Systems (IS-ISs)", RFC 5120, 5228 DOI 10.17487/RFC5120, February 2008, 5229 . 5231 [RFC5130] Previdi, S., Shand, M., Ed., and C. Martin, "A Policy 5232 Control Mechanism in IS-IS Using Administrative Tags", 5233 RFC 5130, DOI 10.17487/RFC5130, February 2008, 5234 . 5236 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for 5237 IP Fast Reroute: Loop-Free Alternates", RFC 5286, 5238 DOI 10.17487/RFC5286, September 2008, 5239 . 5241 [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic 5242 Engineering", RFC 5305, DOI 10.17487/RFC5305, October 5243 2008, . 5245 [RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS", 5246 RFC 5306, DOI 10.17487/RFC5306, October 2008, 5247 . 5249 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP 5250 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March 5251 2009, . 5253 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5254 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 5255 . 5257 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5258 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 5259 DOI 10.17487/RFC5881, June 2010, 5260 . 5262 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 5263 the Network Configuration Protocol (NETCONF)", RFC 6020, 5264 DOI 10.17487/RFC6020, October 2010, 5265 . 5267 [RFC6119] Harrison, J., Berger, J., and M. Bartlett, "IPv6 Traffic 5268 Engineering in IS-IS", RFC 6119, DOI 10.17487/RFC6119, 5269 February 2011, . 5271 [RFC6232] Wei, F., Qin, Y., Li, Z., Li, T., and J. Dong, "Purge 5272 Originator Identification TLV for IS-IS", RFC 6232, 5273 DOI 10.17487/RFC6232, May 2011, 5274 . 5276 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 5277 and A. Bierman, Ed., "Network Configuration Protocol 5278 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 5279 . 5281 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 5282 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 5283 . 5285 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 5286 RFC 6991, DOI 10.17487/RFC6991, July 2013, 5287 . 5289 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. 5290 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", 5291 RFC 7490, DOI 10.17487/RFC7490, April 2015, 5292 . 5294 [RFC7794] Ginsberg, L., Ed., Decraene, B., Previdi, S., Xu, X., and 5295 U. Chunduri, "IS-IS Prefix Attributes for Extended IPv4 5296 and IPv6 Reachability", RFC 7794, DOI 10.17487/RFC7794, 5297 March 2016, . 5299 [RFC7810] Previdi, S., Ed., Giacalone, S., Ward, D., Drake, J., and 5300 Q. Wu, "IS-IS Traffic Engineering (TE) Metric Extensions", 5301 RFC 7810, DOI 10.17487/RFC7810, May 2016, 5302 . 5304 [RFC7917] Sarkar, P., Ed., Gredler, H., Hegde, S., Litkowski, S., 5305 and B. Decraene, "Advertising Node Administrative Tags in 5306 IS-IS", RFC 7917, DOI 10.17487/RFC7917, July 2016, 5307 . 5309 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 5310 RFC 7950, DOI 10.17487/RFC7950, August 2016, 5311 . 5313 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 5314 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 5315 . 5317 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 5318 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 5319 May 2017, . 5321 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 5322 Zhang, "YANG Data Model for Key Chains", RFC 8177, 5323 DOI 10.17487/RFC8177, June 2017, 5324 . 5326 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 5327 "Common YANG Data Types for the Routing Area", RFC 8294, 5328 DOI 10.17487/RFC8294, December 2017, 5329 . 5331 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 5332 Access Control Model", STD 91, RFC 8341, 5333 DOI 10.17487/RFC8341, March 2018, 5334 . 5336 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 5337 and R. Wilton, "Network Management Datastore Architecture 5338 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 5339 . 5341 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 5342 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 5343 . 5345 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 5346 Routing Management (NMDA Version)", RFC 8349, 5347 DOI 10.17487/RFC8349, March 2018, 5348 . 5350 [RFC8405] Decraene, B., Litkowski, S., Gredler, H., Lindem, A., 5351 Francois, P., and C. Bowers, "Shortest Path First (SPF) 5352 Back-Off Delay Algorithm for Link-State IGPs", RFC 8405, 5353 DOI 10.17487/RFC8405, June 2018, 5354 . 5356 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 5357 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 5358 . 5360 11.2. Informative References 5362 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 5363 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 5364 . 5366 Appendix A. Example of IS-IS configuration in XML 5368 This section gives an example of configuration of an IS-IS instance 5369 on a device. The example is written in XML. 5371 5372 5373 5374 SLI 5375 1.1.1.1 5376 5377 5378 ISIS-example 5379 5380 5381 5382 isis:isis 5383 5384 5385 5386 true 5387 level-2 5388 87FC.FCDF.4432 5389 49.0001 5390 5391 5392 192.0.2.1 5393 5394 5395 65535 5396 65000 5397 5398 wide-only 5399 5400 5401 111111 5402 5403 5404 5405 ipv4 5406 true 5407 5408 5409 ipv6 5410 true 5411 5412 5413 5414 5415 Loopback0 5416 200 5417 5418 0 5419 5420 true 5421 5422 5423 Eth1 5424 level-2 5425 point-to-point 5426 5427 167890 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 Loopback0 5438 5439 5440 ianaift:softwareLoopback 5441 5442 enabled 5443 5444
5445 192.0.2.1 5446 32 5447
5448
5449 5450
5451 2001:DB8::1 5452 128 5453
5454
5455
5456 5457 Eth1 5458 5459 5460 ianaift:ethernetCsmacd 5461 5462 enabled 5463 5464
5465 198.51.100.1 5466 30 5467
5468
5469 5470
5471 2001:DB8:0:0:FF::1 5472 64 5473
5474
5475
5476
5477
5479 Authors' Addresses 5481 Stephane Litkowski 5482 Orange 5484 Email: stephane.litkowski@orange.com 5486 Derek Yeung 5487 Arrcus, Inc 5489 Email: derek@arrcus.com 5491 Acee Lindem 5492 Cisco Systems 5494 Email: acee@cisco.com 5496 Jeffrey Zhang 5497 Juniper Networks 5499 Email: zzhang@juniper.net 5501 Ladislav Lhotka 5502 CZ.NIC 5504 Email: lhotka@nic.cz