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