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