idnits 2.17.00 (12 Aug 2021) /tmp/idnits55705/draft-ietf-isis-yang-isis-cfg-21.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: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 252 has weird spacing: '...ce-name ins...' == Line 257 has weird spacing: '...ce-name ins...' == Line 631 has weird spacing: '...--rw af ian...' == Line 730 has weird spacing: '...stem-id sys...' == Line 734 has weird spacing: '...o level lev...' == (3 more instances...) -- The document date (July 2, 2018) is 1419 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) == Outdated reference: draft-ietf-netmod-routing-cfg has been published as RFC 8022 == Outdated reference: draft-ietf-rtgwg-yang-key-chain has been published as RFC 8177 ** Downref: Normative reference to an Informational RFC: RFC 5443 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 2 errors (**), 0 flaws (~~), 9 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 IS-IS Working Group S. Litkowski 3 Internet-Draft Orange 4 Intended status: Standards Track D. Yeung 5 Expires: January 3, 2019 Arrcus, Inc 6 A. Lindem 7 Cisco Systems 8 J. Zhang 9 Juniper Networks 10 L. Lhotka 11 CZ.NIC 12 July 2, 2018 14 YANG Data Model for IS-IS protocol 15 draft-ietf-isis-yang-isis-cfg-21 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", "MAY", and "OPTIONAL" in this 26 document are to be interpreted as described in [RFC2119]. 28 Status of This Memo 30 This Internet-Draft is submitted in full conformance with the 31 provisions of BCP 78 and BCP 79. 33 Internet-Drafts are working documents of the Internet Engineering 34 Task Force (IETF). Note that other groups may also distribute 35 working documents as Internet-Drafts. The list of current Internet- 36 Drafts is at http://datatracker.ietf.org/drafts/current/. 38 Internet-Drafts are draft documents valid for a maximum of six months 39 and may be updated, replaced, or obsoleted by other documents at any 40 time. It is inappropriate to use Internet-Drafts as reference 41 material or to cite them other than as "work in progress." 43 This Internet-Draft will expire on January 3, 2019. 45 Copyright Notice 47 Copyright (c) 2018 IETF Trust and the persons identified as the 48 document authors. All rights reserved. 50 This document is subject to BCP 78 and the IETF Trust's Legal 51 Provisions Relating to IETF Documents 52 (http://trustee.ietf.org/license-info) in effect on the date of 53 publication of this document. Please review these documents 54 carefully, as they describe your rights and restrictions with respect 55 to this document. Code Components extracted from this document must 56 include Simplified BSD License text as described in Section 4.e of 57 the Trust Legal Provisions and are provided without warranty as 58 described in the Simplified BSD License. 60 Table of Contents 62 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 63 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 64 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 65 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9 66 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10 67 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 68 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12 69 2.5. Authentication Parameters . . . . . . . . . . . . . . . . 23 70 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 23 71 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 24 72 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 24 73 2.9. Operational States . . . . . . . . . . . . . . . . . . . 24 74 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 25 75 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 25 76 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 26 77 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 27 78 7. Security Considerations . . . . . . . . . . . . . . . . . . . 94 79 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 95 80 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 95 81 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 95 82 11. Change log for ietf-isis YANG module . . . . . . . . . . . . 96 83 11.1. From version -19 to version -20 . . . . . . . . . . . . 96 84 11.2. From version -18 to version -19 . . . . . . . . . . . . 96 85 11.3. From version -17 to version -18 . . . . . . . . . . . . 96 86 11.4. From version -16 to version -17 . . . . . . . . . . . . 96 87 11.5. From version -15 to version -16 . . . . . . . . . . . . 96 88 11.6. From version -14 to version -15 . . . . . . . . . . . . 97 89 11.7. From version -13 to version -14 . . . . . . . . . . . . 97 90 11.8. From version -12 to version -13 . . . . . . . . . . . . 97 91 11.9. From version -09 to version -12 . . . . . . . . . . . . 97 92 11.10. From version -08 to version -09 . . . . . . . . . . . . 98 93 11.11. From version -07 to version -08 . . . . . . . . . . . . 98 94 11.12. From version -05 to version -07 . . . . . . . . . . . . 98 95 11.13. From version -03 to version -05 . . . . . . . . . . . . 98 96 11.14. From version -02 to version -03 . . . . . . . . . . . . 99 97 11.15. From version -01 to version -02 . . . . . . . . . . . . 99 98 11.16. From version -00 to version -01 . . . . . . . . . . . . 99 99 12. Normative References . . . . . . . . . . . . . . . . . . . . 100 100 Appendix A. Example of IS-IS configuration in XML . . . . . . . 101 101 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 103 103 1. Introduction 105 This document defines a YANG data model for IS-IS routing protocol. 107 The data model covers configuration of an IS-IS routing protocol 108 instance as well as operational states. 110 1.1. Tree diagram 112 A simplified graphical representation of the data model is presented 113 in Section 2. 115 The meaning of the symbols in these diagrams is as follows: 117 o Brackets "[" and "]" enclose list keys. 119 o Curly braces "{" and "}" contain names of optional features that 120 make the corresponding node conditional. 122 o Abbreviations before data node names: "rw" means configuration 123 (read-write), and "ro" state data (read-only). 125 o Symbols after data node names: "?" means an optional node and "*" 126 denotes a "list" or "leaf-list". 128 o Parentheses enclose choice and case nodes, and case nodes are also 129 marked with a colon (":"). 131 o Ellipsis ("...") stands for contents of subtrees that are not 132 shown. 134 2. Design of the Data Model 136 The IS-IS YANG module augments the "control-plane-protocol" list in 137 ietf-routing module with specific IS-IS parameters. 139 The module is designed as per NMDA (Network Management Datastore 140 Architecture). 142 The figure below describes the overall structure of the isis YANG 143 module: 145 module: ietf-isis 146 augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: 147 +--ro metric? uint32 148 +--ro tag* uint64 149 +--ro route-type? enumeration 150 augment /if:interfaces/if:interface: 151 +--rw clns-mtu? uint16 152 augment /rt:routing/rt:control-plane-protocols/ 153 | rt:control-plane-protocol: 154 +--rw isis 155 +--rw enable? boolean {admin-control}? 156 +--rw level-type? level 157 +--rw system-id? system-id 158 +--rw maximum-area-addresses? 159 | uint8 {maximum-area-addresses}? 160 +--rw area-address* area-address 161 +--rw mpls 162 | +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}? 163 | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}? 164 | +--rw ldp 165 | ... 166 +--rw auto-cost {auto-cost}? 167 | +--rw reference-bandwidth? uint32 168 | +--rw enable? boolean 169 +--rw lsp-mtu? uint16 170 +--rw lsp-lifetime? uint16 171 +--rw lsp-refresh? 172 | rt-types:timer-value-seconds16 {lsp-refresh}? 173 +--rw graceful-restart {graceful-restart}? 174 | +--rw enable? boolean 175 | +--rw restart-interval? rt-types:timer-value-seconds16 176 | +--rw helper-enable? boolean 177 +--rw nsr {nsr}? 178 | +--rw enable? boolean 179 +--rw node-tags {node-tag}? 180 | +--rw node-tag* [tag] 181 | ... 182 +--rw authentication 183 | +--rw (authentication-type)? 184 | | ... 185 | +--rw level-1 186 | | ... 187 | +--rw level-2 188 | ... 190 +--rw metric-type 191 | +--rw value? enumeration 192 | +--rw level-1 193 | | ... 194 | +--rw level-2 195 | ... 196 +--rw default-metric 197 | +--rw value? wide-metric 198 | +--rw level-1 199 | | ... 200 | +--rw level-2 201 | ... 202 +--rw afs {nlpid-control}? 203 | +--rw af* [af] 204 | ... 205 +--rw preference 206 | +--rw (granularity)? 207 | ... 208 +--rw overload 209 | +--rw status? boolean 210 +--rw overload-max-metric {overload-max-metric}? 211 | +--rw timeout? rt-types:timer-value-seconds16 212 +--rw fast-reroute {fast-reroute}? 213 | +--rw lfa {lfa}? 214 | +--ro protected-routes 215 | | ... 216 | +--ro nonprotected-routes 217 | | ... 218 | +--ro protection-statistics* [frr-protection-method] 219 | ... 220 +--rw spf-control 221 | +--rw ietf-spf-delay {ietf-spf-delay}? 222 | ... 223 +--rw topologies {multi-topology}? 224 | +--rw topology* [name] 225 | ... 226 +--rw interfaces 227 | +--rw interface* [name] 228 | ... 229 +--ro spf-log 230 | +--ro event* [id] 231 | ... 232 +--ro lsp-log 233 | +--ro event* [id] 234 | ... 235 +--ro hostnames 236 | +--ro hostname* [system-id] 237 | ... 239 +--ro database 240 | +--ro level-db* [level] 241 | ... 242 +--ro local-rib 243 | +--ro route* [prefix] 244 | ... 245 +--ro system-counters 246 +--ro level* [level] 247 ... 249 rpcs: 250 +---x clear-adjacency 251 | +---w input 252 | +---w routing-protocol-instance-name instance-state-ref 253 | +---w level? level 254 | +---w interface? string 255 +---x clear-database 256 +---w input 257 +---w routing-protocol-instance-name instance-state-ref 258 +---w level? level 260 notifications: 261 +---n database-overload 262 | +--ro routing-instance? string 263 | +--ro routing-protocol-name? string 264 | +--ro isis-level? level 265 | +--ro overload? enumeration 266 +---n lsp-too-large 267 | +--ro routing-instance? string 268 | +--ro routing-protocol-name? string 269 | +--ro isis-level? level 270 | +--ro interface-name? string 271 | +--ro interface-level? level 272 | +--ro extended-circuit-id? extended-circuit-id 273 | +--ro pdu-size? uint32 274 | +--ro lsp-id? lsp-id 275 +---n if-state-change 276 | +--ro routing-instance? string 277 | +--ro routing-protocol-name? string 278 | +--ro isis-level? level 279 | +--ro interface-name? string 280 | +--ro interface-level? level 281 | +--ro extended-circuit-id? extended-circuit-id 282 | +--ro state? if-state-type 283 +---n corrupted-lsp-detected 284 | +--ro routing-instance? string 285 | +--ro routing-protocol-name? string 286 | +--ro isis-level? level 287 | +--ro lsp-id? lsp-id 288 +---n attempt-to-exceed-max-sequence 289 | +--ro routing-instance? string 290 | +--ro routing-protocol-name? string 291 | +--ro isis-level? level 292 | +--ro lsp-id? lsp-id 293 +---n id-len-mismatch 294 | +--ro routing-instance? string 295 | +--ro routing-protocol-name? string 296 | +--ro isis-level? level 297 | +--ro interface-name? string 298 | +--ro interface-level? level 299 | +--ro extended-circuit-id? extended-circuit-id 300 | +--ro pdu-field-len? uint8 301 | +--ro raw-pdu? binary 302 +---n max-area-addresses-mismatch 303 | +--ro routing-instance? string 304 | +--ro routing-protocol-name? string 305 | +--ro isis-level? level 306 | +--ro interface-name? string 307 | +--ro interface-level? level 308 | +--ro extended-circuit-id? extended-circuit-id 309 | +--ro max-area-addresses? uint8 310 | +--ro raw-pdu? binary 311 +---n own-lsp-purge 312 | +--ro routing-instance? string 313 | +--ro routing-protocol-name? string 314 | +--ro isis-level? level 315 | +--ro interface-name? string 316 | +--ro interface-level? level 317 | +--ro extended-circuit-id? extended-circuit-id 318 | +--ro lsp-id? lsp-id 319 +---n sequence-number-skipped 320 | +--ro routing-instance? string 321 | +--ro routing-protocol-name? string 322 | +--ro isis-level? level 323 | +--ro interface-name? string 324 | +--ro interface-level? level 325 | +--ro extended-circuit-id? extended-circuit-id 326 | +--ro lsp-id? lsp-id 327 +---n authentication-type-failure 328 | +--ro routing-instance? string 329 | +--ro routing-protocol-name? string 330 | +--ro isis-level? level 331 | +--ro interface-name? string 332 | +--ro interface-level? level 333 | +--ro extended-circuit-id? extended-circuit-id 334 | +--ro raw-pdu? binary 335 +---n authentication-failure 336 | +--ro routing-instance? string 337 | +--ro routing-protocol-name? string 338 | +--ro isis-level? level 339 | +--ro interface-name? string 340 | +--ro interface-level? level 341 | +--ro extended-circuit-id? extended-circuit-id 342 | +--ro raw-pdu? binary 343 +---n version-skew 344 | +--ro routing-instance? string 345 | +--ro routing-protocol-name? string 346 | +--ro isis-level? level 347 | +--ro interface-name? string 348 | +--ro interface-level? level 349 | +--ro extended-circuit-id? extended-circuit-id 350 | +--ro protocol-version? uint8 351 | +--ro raw-pdu? binary 352 +---n area-mismatch 353 | +--ro routing-instance? string 354 | +--ro routing-protocol-name? string 355 | +--ro isis-level? level 356 | +--ro interface-name? string 357 | +--ro interface-level? level 358 | +--ro extended-circuit-id? extended-circuit-id 359 | +--ro raw-pdu? binary 360 +---n rejected-adjacency 361 | +--ro routing-instance? string 362 | +--ro routing-protocol-name? string 363 | +--ro isis-level? level 364 | +--ro interface-name? string 365 | +--ro interface-level? level 366 | +--ro extended-circuit-id? extended-circuit-id 367 | +--ro raw-pdu? binary 368 | +--ro reason? string 369 +---n protocols-supported-mismatch 370 | +--ro routing-instance? string 371 | +--ro routing-protocol-name? string 372 | +--ro isis-level? level 373 | +--ro interface-name? string 374 | +--ro interface-level? level 375 | +--ro extended-circuit-id? extended-circuit-id 376 | +--ro raw-pdu? binary 377 | +--ro protocols* uint8 378 +---n lsp-error-detected 379 | +--ro routing-instance? string 380 | +--ro routing-protocol-name? string 381 | +--ro isis-level? level 382 | +--ro interface-name? string 383 | +--ro interface-level? level 384 | +--ro extended-circuit-id? extended-circuit-id 385 | +--ro lsp-id? lsp-id 386 | +--ro raw-pdu? binary 387 | +--ro error-offset? uint32 388 | +--ro tlv-type? uint8 389 +---n adjacency-state-change 390 | +--ro routing-instance? string 391 | +--ro routing-protocol-name? string 392 | +--ro isis-level? level 393 | +--ro interface-name? string 394 | +--ro interface-level? level 395 | +--ro extended-circuit-id? extended-circuit-id 396 | +--ro neighbor? string 397 | +--ro neighbor-system-id? system-id 398 | +--ro state? adj-state-type 399 | +--ro reason? string 400 +---n lsp-received 401 | +--ro routing-instance? string 402 | +--ro routing-protocol-name? string 403 | +--ro isis-level? level 404 | +--ro interface-name? string 405 | +--ro interface-level? level 406 | +--ro extended-circuit-id? extended-circuit-id 407 | +--ro lsp-id? lsp-id 408 | +--ro sequence? uint32 409 | +--ro received-timestamp? yang:timestamp 410 | +--ro neighbor-system-id? system-id 411 +---n lsp-generation 412 +--ro routing-instance? string 413 +--ro routing-protocol-name? string 414 +--ro isis-level? level 415 +--ro lsp-id? lsp-id 416 +--ro sequence? uint32 417 +--ro send-timestamp? yang:timestamp 419 2.1. IS-IS Configuration 421 The IS-IS configuration container is divided in: 423 o Global parameters. 425 o Per interface configuration (see Section 2.4). 427 Additional modules may be created this to support any additional 428 parameters. These additional modules should augment the ietf-isis 429 module. 431 The model implements features, thus some of the configuration 432 statement becomes optional. As an example, the ability to control 433 the administrative state of a particular IS-IS instance is optional. 434 By advertising the feature "admin-control", a device communicates to 435 the client that it supports the ability to shutdown a particular IS- 436 IS instance. 438 The global configuration contains usual IS-IS parameters such as lsp- 439 mtu, lsp-lifetime, lsp-refresh, default-metric... 441 2.2. Multitopology Parameters 443 The model supports multitopology (MT) IS-IS as defined in [RFC5120]. 445 The "topologies" container is used to enable support of MT 446 extensions. 448 The "name" used in the topology list should refer to an existing RIB 449 of the device. 451 Some specific parameters could be defined on a per topology basis 452 both at global level and at interface level: for example, an 453 interface metric can be defined per topology. 455 Multiple address families (like IPv4 or IPv6) can also be activated 456 within the default topology. This can be achieved using the "afs" 457 container (requiring "nlpid-control" feature to be advertised). 459 2.3. Per-Level Parameters 461 Some parameters allow a per level configuration. In this case, the 462 parameter is modeled as a container with three configuration 463 locations: 465 o a top level container: corresponds to level-1-2, so the 466 configuration applies to both levels. 468 o a level-1 container: corresponds to level-1 specific parameters. 470 o a level-2 container: corresponds to level-2 specific parameters. 472 +--rw priority 473 | +--rw value? uint8 474 | +--rw level-1 475 | | +--rw value? uint8 476 | +--rw level-2 477 | +--rw value? uint8 479 Example: 481 482 250 483 484 100 485 486 487 200 488 489 491 An implementation SHOULD prefer a level specific parameter over a 492 level-all parameter. As example, if the priority is 100 for the 493 level-1, 200 for the level-2 and 250 for the top level configuration, 494 the implementation should use 100 for the level-1 and 200 for the 495 level-2. 497 Some parameters like "overload bit" and "route preference" are not 498 modeled to support a per level configuration. If an implementation 499 supports per level configuration for such parameter, this 500 implementation SHOULD augment the current model by adding both 501 level-1 and level-2 containers and SHOULD reuse existing 502 configuration groupings. 504 Example of augmentation: 506 augment "/rt:routing/" + 507 "rt:control-plane-protocols/rt:control-plane-protocol"+ 508 "/isis:isis/isis:overload" { 509 when "rt:type = 'isis:isis'" { 510 description 511 "This augment IS-IS routing protocol when used"; 512 } 513 description 514 "This augments IS-IS overload configuration 515 with per level configuration."; 517 container level-1 { 518 uses isis:overload-global-cfg; 519 description 520 "Level 1 configuration."; 521 } 522 container level-2 { 523 uses isis:overload-global-cfg; 524 description 525 "Level 2 configuration."; 526 } 528 } 530 If an implementation does not support per level configuration for a 531 parameter modeled with per level configuration, the implementation 532 SHOULD advertise a deviation to announce the non support of the 533 level-1 and level-2 containers. 535 Finally, if an implementation supports per level configuration but 536 does not support the level-1-2 configuration, it SHOULD also 537 advertise a deviation. 539 2.4. Per-Interface Parameters 541 The per-interface section of the IS-IS instance describes the 542 interface specific parameters. 544 The interface is modeled as a reference to an existing interface 545 defined in the "ietf-interfaces" YANG model. 547 Each interface has some interface-specific parameters that may have a 548 different per level value as described in previous section. An 549 interface-specific parameter always override an IS-IS global 550 parameter. 552 Some parameters like hello-padding are defined as containers to allow 553 easy extension by vendor specific modules. 555 +--rw interfaces 556 | +--rw interface* [name] 557 | +--rw name if:interface-ref 558 | +--rw level-type? level 559 | +--rw lsp-pacing-interval? 560 | | rt-types:timer-value-milliseconds 561 | +--rw lsp-retransmit-interval? 562 | | rt-types:timer-value-seconds16 563 | +--rw passive? boolean 564 | +--rw csnp-interval? 565 | | rt-types:timer-value-seconds16 566 | +--rw hello-padding 567 | | +--rw enable? boolean 568 | +--rw mesh-group-enable? mesh-group-state 569 | +--rw mesh-group? uint8 570 | +--rw interface-type? interface-type 571 | +--rw enable? boolean {admin-control}? 572 | +--rw tag* uint32 {prefix-tag}? 573 | +--rw tag64* uint64 {prefix-tag64}? 574 | +--rw node-flag? boolean {node-flag}? 575 | +--rw hello-authentication 576 | | +--rw (authentication-type)? 577 | | | +--:(key-chain) {key-chain}? 578 | | | | +--rw key-chain? key-chain:key-chain-ref 579 | | | +--:(password) 580 | | | +--rw key? string 581 | | | +--rw crypto-algorithm? identityref 582 | | +--rw level-1 583 | | | +--rw (authentication-type)? 584 | | | +--:(key-chain) {key-chain}? 585 | | | | +--rw key-chain? key-chain:key-chain-ref 586 | | | +--:(password) 587 | | | +--rw key? string 588 | | | +--rw crypto-algorithm? identityref 589 | | +--rw level-2 590 | | +--rw (authentication-type)? 591 | | +--:(key-chain) {key-chain}? 592 | | | +--rw key-chain? 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 afs {nlpid-control}? 630 | | +--rw af* [af] 631 | | +--rw af 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-disabled? boolean 638 | | +--rw enable? boolean 639 | | +--rw remote-lfa {remote-lfa}? 640 | | | +--rw enable? boolean 641 | | +--rw level-1 642 | | | +--rw candidate-disabled? boolean 643 | | | +--rw enable? boolean 644 | | | +--rw remote-lfa {remote-lfa}? 645 | | | +--rw enable? boolean 646 | | +--rw level-2 647 | | +--rw candidate-disabled? boolean 648 | | +--rw enable? boolean 649 | | +--rw remote-lfa {remote-lfa}? 650 | | +--rw enable? boolean 651 | +--rw topologies {multi-topology}? 652 | | +--rw topology* [name] 653 | | +--rw name 654 | | | -> ../../../../../../../../rt:ribs/rib/name 655 | | +--rw metric 656 | | +--rw value? wide-metric 657 | | +--rw level-1 658 | | | +--rw value? wide-metric 659 | | +--rw level-2 660 | | +--rw value? wide-metric 661 | +--ro adjacencies 662 | | +--ro adjacency* [] 663 | | +--ro neighbor-systype? level 664 | | +--ro neighbor-sysid? system-id 665 | | +--ro neighbor-extended-circuit-id? 666 | | | extended-circuit-id 667 | | +--ro neighbor-snpa? snpa 668 | | +--ro usage? level 669 | | +--ro hold-timer? 670 | | | rt-types:timer-value-seconds16 671 | | +--ro neighbor-priority? uint8 672 | | +--ro lastuptime? yang:timestamp 673 | | +--ro state? adj-state-type 674 | +--ro event-counters 675 | | +--ro adjacency-changes? uint32 676 | | +--ro adjacency-number? uint32 677 | | +--ro init-fails? uint32 678 | | +--ro adjacency-rejects? uint32 679 | | +--ro id-len-mismatch? uint32 680 | | +--ro max-area-addresses-mismatch? uint32 681 | | +--ro authentication-type-fails? uint32 682 | | +--ro authentication-fails? uint32 683 | | +--ro lan-dis-changes? uint32 684 | +--ro packet-counters 685 | +--ro level* [level] 686 | +--ro level level-number 687 | +--ro iih 688 | | +--ro in? uint32 689 | | +--ro out? uint32 690 | +--ro ish 691 | | +--ro in? uint32 692 | | +--ro out? uint32 693 | +--ro esh 694 | | +--ro in? uint32 695 | | +--ro out? uint32 696 | +--ro lsp 697 | | +--ro in? uint32 698 | | +--ro out? uint32 699 | +--ro psnp 700 | | +--ro in? uint32 701 | | +--ro out? uint32 702 | +--ro csnp 703 | | +--ro in? uint32 704 | | +--ro out? uint32 705 | +--ro unknown 706 | +--ro in? uint32 707 | +--ro out? uint32 708 +--ro spf-log 709 | +--ro event* [id] 710 | +--ro id uint32 711 | +--ro spf-type? enumeration 712 | +--ro level? level-number 713 | +--ro schedule-timestamp? yang:timestamp 714 | +--ro start-timestamp? yang:timestamp 715 | +--ro end-timestamp? yang:timestamp 716 | +--ro trigger-lsp* [lsp] 717 | +--ro lsp lsp-id 718 | +--ro sequence? uint32 719 +--ro lsp-log 720 | +--ro event* [id] 721 | +--ro id uint32 722 | +--ro level? level-number 723 | +--ro lsp 724 | | +--ro lsp? lsp-id 725 | | +--ro sequence? uint32 726 | +--ro received-timestamp? yang:timestamp 727 | +--ro change? identityref 728 +--ro hostnames 729 | +--ro hostname* [system-id] 730 | +--ro system-id system-id 731 | +--ro hostname? string 732 +--ro database 733 | +--ro level-db* [level] 734 | +--ro level level-number 735 | +--ro lsp* [lsp-id] 736 | +--ro decoded-completed? boolean 737 | +--ro raw-data? yang:hex-string 738 | +--ro lsp-id lsp-id 739 | +--ro checksum? uint16 740 | +--ro remaining-lifetime? uint16 741 | +--ro sequence? uint32 742 | +--ro attributes? bits 743 | +--ro ipv4-addresses* inet:ipv4-address 744 | +--ro ipv6-addresses* inet:ipv6-address 745 | +--ro ipv4-te-routerid? inet:ipv4-address 746 | +--ro ipv6-te-routerid? inet:ipv6-address 747 | +--ro protocol-supported* uint8 748 | +--ro dynamic-hostname? string 749 | +--ro authentication 750 | | +--ro authentication-type? string 751 | | +--ro authentication-key? string 752 | +--ro mt-entries 753 | | +--ro topology* [] 754 | | +--ro MT-ID? uint16 755 | | +--ro attributes? bits 756 | +--ro router-capabilities* [] 757 | | +--ro flags? bits 758 | | +--ro node-tags {node-tag}? 759 | | | +--ro node-tag* [] 760 | | | +--ro tag? uint32 761 | | +--ro binary? binary 762 | +--ro is-neighbor 763 | | +--ro neighbor* [] 764 | | +--ro neighbor-id? system-id 765 | | +--ro i-e? boolean 766 | | +--ro default-metric? std-metric 767 | | +--ro delay-metric 768 | | | +--ro metric? std-metric 769 | | | +--ro supported? boolean 770 | | +--ro expense-metric 771 | | | +--ro metric? std-metric 772 | | | +--ro supported? boolean 773 | | +--ro error-metric 774 | | +--ro metric? std-metric 775 | | +--ro supported? boolean 776 | +--ro extended-is-neighbor 777 | | +--ro neighbor* [] 778 | | +--ro neighbor-id? system-id 779 | | +--ro metric? wide-metric 780 | +--ro ipv4-internal-reachability 781 | | +--ro prefixes* [] 782 | | +--ro up-down? boolean 783 | | +--ro i-e? boolean 784 | | +--ro ip-prefix? inet:ipv4-address 785 | | +--ro prefix-len? uint8 786 | | +--ro default-metric? std-metric 787 | | +--ro delay-metric 788 | | | +--ro metric? std-metric 789 | | | +--ro supported? boolean 790 | | +--ro expense-metric 791 | | | +--ro metric? std-metric 792 | | | +--ro supported? boolean 793 | | +--ro error-metric 794 | | +--ro metric? std-metric 795 | | +--ro supported? boolean 796 | +--ro ipv4-external-reachability 797 | | +--ro prefixes* [] 798 | | +--ro up-down? boolean 799 | | +--ro i-e? boolean 800 | | +--ro ip-prefix? inet:ipv4-address 801 | | +--ro prefix-len? uint8 802 | | +--ro default-metric? std-metric 803 | | +--ro delay-metric 804 | | | +--ro metric? std-metric 805 | | | +--ro supported? boolean 806 | | +--ro expense-metric 807 | | | +--ro metric? std-metric 808 | | | +--ro supported? boolean 809 | | +--ro error-metric 810 | | +--ro metric? std-metric 811 | | +--ro supported? boolean 812 | +--ro extended-ipv4-reachability 813 | | +--ro prefixes* [] 814 | | +--ro up-down? boolean 815 | | +--ro ip-prefix? inet:ipv4-address 816 | | +--ro prefix-len? uint8 817 | | +--ro metric? wide-metric 818 | | +--ro tag* uint32 819 | | +--ro tag64* uint64 820 | | +--ro external-prefix-flag? boolean 821 | | +--ro readvertisement-flag? boolean 822 | | +--ro node-flag? boolean 823 | | +--ro ipv4-source-router-id? inet:ipv4-address 824 | | +--ro ipv6-source-router-id? inet:ipv6-address 825 | +--ro mt-is-neighbor 826 | | +--ro neighbor* [] 827 | | +--ro MT-ID? uint16 828 | | +--ro neighbor-id? system-id 829 | | +--ro metric? wide-metric 830 | +--ro mt-extended-ipv4-reachability 831 | | +--ro prefixes* [] 832 | | +--ro MT-ID? uint16 833 | | +--ro up-down? boolean 834 | | +--ro ip-prefix? inet:ipv4-address 835 | | +--ro prefix-len? uint8 836 | | +--ro metric? wide-metric 837 | | +--ro tag* uint32 838 | | +--ro tag64* uint64 839 | | +--ro external-prefix-flag? boolean 840 | | +--ro readvertisement-flag? boolean 841 | | +--ro node-flag? boolean 842 | | +--ro ipv4-source-router-id? inet:ipv4-address 843 | | +--ro ipv6-source-router-id? inet:ipv6-address 844 | +--ro mt-ipv6-reachability 845 | | +--ro prefixes* [] 846 | | +--ro MT-ID? uint16 847 | | +--ro up-down? boolean 848 | | +--ro ip-prefix? inet:ipv6-address 849 | | +--ro prefix-len? uint8 850 | | +--ro metric? wide-metric 851 | | +--ro tag* uint32 852 | | +--ro tag64* uint64 853 | | +--ro external-prefix-flag? boolean 854 | | +--ro readvertisement-flag? boolean 855 | | +--ro node-flag? boolean 856 | | +--ro ipv4-source-router-id? inet:ipv4-address 857 | | +--ro ipv6-source-router-id? inet:ipv6-address 858 | +--ro ipv6-reachability 859 | +--ro prefixes* [] 860 | +--ro up-down? boolean 861 | +--ro ip-prefix? inet:ipv6-address 862 | +--ro prefix-len? uint8 863 | +--ro metric? wide-metric 864 | +--ro tag* uint32 865 | +--ro tag64* uint64 866 | +--ro external-prefix-flag? boolean 867 | +--ro readvertisement-flag? boolean 868 | +--ro node-flag? boolean 869 | +--ro ipv4-source-router-id? inet:ipv4-address 870 | +--ro ipv6-source-router-id? inet:ipv6-address 871 +--ro local-rib 872 | +--ro route* [prefix] 873 | +--ro prefix inet:ip-prefix 874 | +--ro next-hops 875 | | +--ro next-hop* [next-hop] 876 | | +--ro outgoing-interface? if:interface-ref 877 | | +--ro next-hop inet:ip-address 878 | +--ro metric? uint32 879 | +--ro level? level-number 880 | +--ro route-tag? uint32 881 +--ro system-counters 882 +--ro level* [level] 883 +--ro level level-number 884 +--ro corrupted-lsps? uint32 885 +--ro authentication-type-fails? uint32 886 +--ro authentication-fails? uint32 887 +--ro database-overload? uint32 888 +--ro own-lsp-purge? uint32 889 +--ro manual-address-drop-from-area? uint32 890 +--ro max-sequence? uint32 891 +--ro sequence-number-skipped? uint32 892 +--ro id-len-mismatch? uint32 893 +--ro partition-changes? uint32 894 +--ro lsp-errors? uint32 895 +--ro spf-runs? uint32 897 rpcs: 898 +---x clear-adjacency 899 | +---w input 900 | +---w routing-protocol-instance-name instance-state-ref 901 | +---w level? level 902 | +---w interface? string 903 +---x clear-database 904 +---w input 905 +---w routing-protocol-instance-name instance-state-ref 906 +---w level? level 908 notifications: 909 +---n database-overload 910 | +--ro routing-instance? string 911 | +--ro routing-protocol-name? string 912 | +--ro isis-level? level 913 | +--ro overload? enumeration 914 +---n lsp-too-large 915 | +--ro routing-instance? string 916 | +--ro routing-protocol-name? string 917 | +--ro isis-level? level 918 | +--ro interface-name? string 919 | +--ro interface-level? level 920 | +--ro extended-circuit-id? extended-circuit-id 921 | +--ro pdu-size? uint32 922 | +--ro lsp-id? lsp-id 923 +---n if-state-change 924 | +--ro routing-instance? string 925 | +--ro routing-protocol-name? string 926 | +--ro isis-level? level 927 | +--ro interface-name? string 928 | +--ro interface-level? level 929 | +--ro extended-circuit-id? extended-circuit-id 930 | +--ro state? if-state-type 931 +---n corrupted-lsp-detected 932 | +--ro routing-instance? string 933 | +--ro routing-protocol-name? string 934 | +--ro isis-level? level 935 | +--ro lsp-id? lsp-id 936 +---n attempt-to-exceed-max-sequence 937 | +--ro routing-instance? string 938 | +--ro routing-protocol-name? string 939 | +--ro isis-level? level 940 | +--ro lsp-id? lsp-id 941 +---n id-len-mismatch 942 | +--ro routing-instance? string 943 | +--ro routing-protocol-name? string 944 | +--ro isis-level? level 945 | +--ro interface-name? string 946 | +--ro interface-level? level 947 | +--ro extended-circuit-id? extended-circuit-id 948 | +--ro pdu-field-len? uint8 949 | +--ro raw-pdu? binary 950 +---n max-area-addresses-mismatch 951 | +--ro routing-instance? string 952 | +--ro routing-protocol-name? string 953 | +--ro isis-level? level 954 | +--ro interface-name? string 955 | +--ro interface-level? level 956 | +--ro extended-circuit-id? extended-circuit-id 957 | +--ro max-area-addresses? uint8 958 | +--ro raw-pdu? binary 959 +---n own-lsp-purge 960 | +--ro routing-instance? string 961 | +--ro routing-protocol-name? string 962 | +--ro isis-level? level 963 | +--ro interface-name? string 964 | +--ro interface-level? level 965 | +--ro extended-circuit-id? extended-circuit-id 966 | +--ro lsp-id? lsp-id 967 +---n sequence-number-skipped 968 | +--ro routing-instance? string 969 | +--ro routing-protocol-name? string 970 | +--ro isis-level? level 971 | +--ro interface-name? string 972 | +--ro interface-level? level 973 | +--ro extended-circuit-id? extended-circuit-id 974 | +--ro lsp-id? lsp-id 975 +---n authentication-type-failure 976 | +--ro routing-instance? string 977 | +--ro routing-protocol-name? string 978 | +--ro isis-level? level 979 | +--ro interface-name? string 980 | +--ro interface-level? level 981 | +--ro extended-circuit-id? extended-circuit-id 982 | +--ro raw-pdu? binary 983 +---n authentication-failure 984 | +--ro routing-instance? string 985 | +--ro routing-protocol-name? string 986 | +--ro isis-level? level 987 | +--ro interface-name? string 988 | +--ro interface-level? level 989 | +--ro extended-circuit-id? extended-circuit-id 990 | +--ro raw-pdu? binary 991 +---n version-skew 992 | +--ro routing-instance? string 993 | +--ro routing-protocol-name? string 994 | +--ro isis-level? level 995 | +--ro interface-name? string 996 | +--ro interface-level? level 997 | +--ro extended-circuit-id? extended-circuit-id 998 | +--ro protocol-version? uint8 999 | +--ro raw-pdu? binary 1000 +---n area-mismatch 1001 | +--ro routing-instance? string 1002 | +--ro routing-protocol-name? string 1003 | +--ro isis-level? level 1004 | +--ro interface-name? string 1005 | +--ro interface-level? level 1006 | +--ro extended-circuit-id? extended-circuit-id 1007 | +--ro raw-pdu? binary 1008 +---n rejected-adjacency 1009 | +--ro routing-instance? string 1010 | +--ro routing-protocol-name? string 1011 | +--ro isis-level? level 1012 | +--ro interface-name? string 1013 | +--ro interface-level? level 1014 | +--ro extended-circuit-id? extended-circuit-id 1015 | +--ro raw-pdu? binary 1016 | +--ro reason? string 1017 +---n protocols-supported-mismatch 1018 | +--ro routing-instance? string 1019 | +--ro routing-protocol-name? string 1020 | +--ro isis-level? level 1021 | +--ro interface-name? string 1022 | +--ro interface-level? level 1023 | +--ro extended-circuit-id? extended-circuit-id 1024 | +--ro raw-pdu? binary 1025 | +--ro protocols* uint8 1026 +---n lsp-error-detected 1027 | +--ro routing-instance? string 1028 | +--ro routing-protocol-name? string 1029 | +--ro isis-level? level 1030 | +--ro interface-name? string 1031 | +--ro interface-level? level 1032 | +--ro extended-circuit-id? extended-circuit-id 1033 | +--ro lsp-id? lsp-id 1034 | +--ro raw-pdu? binary 1035 | +--ro error-offset? uint32 1036 | +--ro tlv-type? uint8 1037 +---n adjacency-state-change 1038 | +--ro routing-instance? string 1039 | +--ro routing-protocol-name? string 1040 | +--ro isis-level? level 1041 | +--ro interface-name? string 1042 | +--ro interface-level? level 1043 | +--ro extended-circuit-id? extended-circuit-id 1044 | +--ro neighbor? string 1045 | +--ro neighbor-system-id? system-id 1046 | +--ro state? adj-state-type 1047 | +--ro reason? string 1048 +---n lsp-received 1049 | +--ro routing-instance? string 1050 | +--ro routing-protocol-name? string 1051 | +--ro isis-level? level 1052 | +--ro interface-name? string 1053 | +--ro interface-level? level 1054 | +--ro extended-circuit-id? extended-circuit-id 1055 | +--ro lsp-id? lsp-id 1056 | +--ro sequence? uint32 1057 | +--ro received-timestamp? yang:timestamp 1058 | +--ro neighbor-system-id? system-id 1059 +---n lsp-generation 1060 +--ro routing-instance? string 1061 +--ro routing-protocol-name? string 1062 +--ro isis-level? level 1063 +--ro lsp-id? lsp-id 1064 +--ro sequence? uint32 1065 +--ro send-timestamp? yang:timestamp 1067 2.5. Authentication Parameters 1069 The module enables authentication configuration through the IETF key- 1070 chain module ([I-D.ietf-rtgwg-yang-key-chain]). The IS-IS module 1071 imports the "ietf-key-chain" module and reuses some groupings to 1072 allow global and per interface configuration of authentication. If a 1073 global authentication is configured, an implementation SHOULD 1074 authenticate PSNPs, CSNPs and LSPs with the authentication parameters 1075 supplied. The authentication of hello PDUs can be activated on a per 1076 interface basis. 1078 2.6. IGP/LDP synchronization 1080 [RFC5443] defines a mechanism where IGP needs to be synchronized with 1081 LDP. An "ldp-igp-sync" feature has been defined in the model to 1082 support this mechanism. The "mpls/ldp/igp-sync" leaf under 1083 "interface" allows activation of the mechanism on a per interface 1084 basis. The "mpls/ldp/igp-sync" container in the global configuration 1085 is empty on purpose and is not required for the activation. The goal 1086 of this empty container is to allow easy augmentation with additional 1087 parameters like timers for example. 1089 2.7. ISO parameters 1091 As IS-IS protocol is based on ISO protocol suite, some ISO parameters 1092 may be required. 1094 This module augments interface configuration model to support ISO 1095 configuration parameters. 1097 The clns-mtu can be defined under the interface. 1099 2.8. IP FRR 1101 This YANG model supports LFA ([RFC5286]) and remote LFA ([RFC7490]) 1102 as IP FRR techniques. The "fast-reroute" container may be augmented 1103 by other models to support other IPFRR flavors (MRT, TILFA ...). 1105 The current version of the model supports activation of LFA and 1106 remote LFA at interface only. The global "lfa" container is present 1107 but kept empty to allow augmentation with vendor specific properties 1108 like policies. 1110 Remote LFA is considered as a child of LFA. Remote LFA cannot be 1111 enabled if LFA is not enabled. 1113 The "candidate-disabled" allows to mark an interface to not be used 1114 as a backup. 1116 2.9. Operational States 1118 Operational states are provided in the module in various places: 1120 o system-counters: provides statistical informations about the 1121 global system. 1123 o interface : provides configuration state informations for each 1124 interface. 1126 o adjacencies: provides state informations about current IS-IS 1127 adjacencies. 1129 o spf-log: provides informations about SPF events on the node. This 1130 SHOULD be implemented as a wrapping buffer. 1132 o lsp-log: provides informations about LSP events on the node 1133 (reception of an LSP or modification of local LSP). This SHOULD 1134 be implemented as a wrapping buffer and an implementation MAY 1135 decide to log refresh LSPs or not. 1137 o local-rib: provides the IS-IS internal routing table view. 1139 o database: provides details on the current LSDB. 1141 o hostnames: provides informations about system-id to hostname 1142 mappings. 1144 o fast-reroute: provides informations about IP FRR. 1146 3. RPC Operations 1148 The "ietf-isis" module defines two RPC operations: 1150 o clear-isis-database: reset the content of a particular IS-IS 1151 database and restart database synchronization with the neighbors. 1153 o clear-isis-adjacency: restart a particular set of IS-IS 1154 adjacencies. 1156 4. Notifications 1158 The "ietf-isis" module introduces some notifications : 1160 database-overload : raised when overload condition is changed. 1162 lsp-too-large : raised when the system tries to propagate a too 1163 large PDU. 1165 corrupted-lsp-detected : raised when the system find that an LSP 1166 that was stored in memory has become corrupted. 1168 attempt-to-exceed-max-sequence : This notification is sent when 1169 the system wraps the 32-bit sequence counter of an LSP. 1171 id-len-mismatch : This notification is sent when we receive a PDU 1172 with a different value for the System ID length. 1174 max-area-addresses-mismatch : This notification is sent when we 1175 receive a PDU with a different value for the Maximum Area 1176 Addresses. 1178 own-lsp-purge : This notification is sent when the system receives 1179 a PDU with its own system ID and zero age. 1181 sequence-number-skipped : This notification is sent when the 1182 system receives a PDU with its own system ID and different 1183 contents. The system has to reissue the LSP with a higher 1184 sequence number. 1186 authentication-type-failure : This notification is sent when the 1187 system receives a PDU with the wrong authentication type field. 1189 authentication-failure : This notification is sent when the system 1190 receives a PDU with the wrong authentication information. 1192 version-skew : This notification is sent when the system receives 1193 a PDU with a different protocol version number. 1195 area-mismatch : This notification is sent when the system receives 1196 a Hello PDU from an IS that does not share any area address. 1198 rejected-adjacency : This notification is sent when the system 1199 receives a Hello PDU from an IS but does not establish an 1200 adjacency for some reason. 1202 protocols-supported-mismatch : This notification is sent when the 1203 system receives a non pseudonode LSP that has no matching protocol 1204 supported. 1206 lsp-error-detected : This notification is sent when the system 1207 receives a LSP with a parse error. 1209 adjacency-change : This notification is sent when an IS-IS 1210 adjacency moves to Up state or to Down state. 1212 lsp-received : This notification is sent when a LSP is received. 1214 lsp-generation : This notification is sent when a LSP is 1215 regenerated. 1217 5. Interaction with Other YANG Modules 1219 The "isis" configuration container augments the "/rt:routing/ 1220 rt:control-plane-protocols/control-plane-protocol" container of the 1221 ietf-routing [I-D.ietf-netmod-routing-cfg] module by defining IS-IS 1222 specific parameters. 1224 The "isis" module augments "/if:interfaces/if:interface" with ISO 1225 specific parameters. 1227 The "isis" operational state container augments the "/rt:routing- 1228 state/rt:control-plane-protocols/control-plane-protocol" container of 1229 the ietf-routing module by defining IS-IS specific operational 1230 states. 1232 Some IS-IS specific routes attributes are added to route objects of 1233 the ietf-routing module by augmenting "/rt:routing- 1234 state/rt:ribs/rt:rib/rt:routes/rt:route". 1236 The modules defined in this document use some groupings from ietf- 1237 keychain [I-D.ietf-rtgwg-yang-key-chain]. 1239 6. IS-IS YANG Module 1241 file "ietf-yang@2018-07-02.yang" 1242 module ietf-isis { 1243 yang-version 1.1; 1244 namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; 1246 prefix isis; 1248 import ietf-routing { 1249 prefix "rt"; 1250 reference "RFC 8349 - A YANG Data Model for Routing 1251 Management (NMDA Version)"; 1252 } 1254 import ietf-inet-types { 1255 prefix inet; 1256 reference "RFC 6021 - Common YANG Data Types"; 1257 } 1259 import ietf-yang-types { 1260 prefix yang; 1261 reference "RFC 6021 - Common YANG Data Types"; 1262 } 1264 import ietf-interfaces { 1265 prefix "if"; 1266 reference "RFC 8343 - A YANG Data Model for Interface 1267 Management (NDMA Version)"; 1268 } 1270 import ietf-key-chain { 1271 prefix "key-chain"; 1272 reference "RFC 8177 - YANG Data Model for Key Chains"; 1273 } 1275 import ietf-routing-types { 1276 prefix "rt-types"; 1277 reference "RFC 8291 - Common YANG Data Types for the 1278 Routing Area"; 1279 } 1281 import iana-routing-types { 1282 prefix "iana-rt-types"; 1283 reference "RFC 8291 - Common YANG Data Types for the 1284 Routing Area"; 1285 } 1287 import ietf-bfd-types { 1288 prefix "bfd-types"; 1289 reference "RFC XXXX - YANG Data Model for Bidirectional 1290 Forwarding Detection (BFD)"; 1291 } 1293 organization 1294 "IETF IS-IS Working Group"; 1296 contact 1297 "WG List: <mailto:isis-wg@ietf.org> 1299 Editor: Stephane Litkowski 1300 <mailto:stephane.litkowski@orange.com> 1302 Derek Yeung 1303 <mailto:derek@arrcus.com> 1304 Acee Lindem 1305 <mailto:acee@cisco.com> 1306 Jeffrey Zhang 1307 <mailto:zzhang@juniper.net> 1308 Ladislav Lhotka 1309 <mailto:llhotka@nic.cz> 1310 Yi Yang 1311 <mailto:yiya@cisco.com> 1312 Dean Bogdanovic 1313 <mailto:deanb@juniper.net> 1314 Kiran Agrahara Sreenivasa 1315 <mailto:kkoushik@brocade.com> 1316 Yingzhen Qu 1317 <mailto:yiqu@cisco.com> 1318 Jeff Tantsura 1319 <mailto:jefftant.ietf@gmail.com> 1321 "; 1323 description 1324 "The YANG module defines a generic configuration model for 1325 IS-IS common across all of the vendor implementations."; 1327 revision 2018-07-02 { 1328 description 1329 "Initial revision."; 1330 reference "RFC XXXX"; 1331 } 1333 /* Identities */ 1335 identity isis { 1336 base rt:routing-protocol; 1337 description "Identity for the IS-IS routing protocol."; 1338 } 1340 identity isis-adjacency-change { 1341 description "Identity for the IS-IS routing protocol 1342 adjacency state."; 1343 } 1345 identity clear-isis-database { 1346 description "Identity for the IS-IS routing protocol 1347 database reset action."; 1348 } 1350 identity clear-isis-adjacency { 1351 description "Identity for the IS-IS routing protocol 1352 adjacency reset action."; 1353 } 1355 identity lsp-log-reason { 1356 description "Base identity for an LSP change log reason."; 1357 } 1359 identity refresh { 1360 base lsp-log-reason; 1361 description 1362 "Identity used when the LSP log reason is 1363 a refresh LSP received."; 1364 } 1366 identity content-change { 1367 base lsp-log-reason; 1368 description 1369 "Identity used when the LSP log reason is 1370 a change in the content of the LSP."; 1371 } 1373 /* Feature definitions */ 1375 feature ietf-spf-delay { 1376 description 1377 "Support of IETF SPF delay algorithm."; 1378 reference "RFC XXXX - SPF Back-off algorithm for link 1379 state IGPs"; 1380 } 1381 feature bfd { 1382 description 1383 "Support for BFD detection of IS-IS neighbor reachability."; 1384 reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) 1385 RFC 5881 - Bidirectional Forwarding Detection 1386 (BFD) for IPv4 and IPv6 (Single Hop)"; 1387 } 1388 feature key-chain { 1389 description 1390 "Support of keychain for authentication."; 1391 reference "RFC8177 - YANG Data Model for Key Chains"; 1392 } 1393 feature node-flag { 1394 description 1395 "Support of node-flag advertisement 1396 as prefix attribute"; 1397 reference "RFC7794 - IS-IS Prefix Attributes for 1398 Extended IP and IPv6 Reachability"; 1399 } 1400 feature node-tag { 1401 description 1402 "Support of node tag."; 1403 reference "RFC7917 - Advertising Node Administrative Tags 1404 in IS-IS"; 1405 } 1406 feature ldp-igp-sync { 1407 description 1408 "Support of synchronization between IS-IS and LDP."; 1409 reference "RFC5443 - LDP IGP Synchronization"; 1410 } 1411 feature fast-reroute { 1412 description 1413 "Support of IP Fast Reroute."; 1414 } 1415 feature nsr { 1416 description 1417 "Support of Non-Stop Routing."; 1418 } 1419 feature lfa { 1420 description 1421 "Support of Loop-Free Alternates."; 1422 reference "RFC5286 - Basic Specification of IP Fast-Reroute: 1423 Loop-free Alternates"; 1424 } 1425 feature remote-lfa { 1426 description 1427 "Support of remote Loop Free Alternates."; 1428 reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute"; 1429 } 1431 feature overload-max-metric { 1432 description 1433 "Support of overload by setting 1434 all links to max metric."; 1435 } 1436 feature prefix-tag { 1437 description 1438 "Support for 32-bit prefix tags"; 1439 reference "RFC5130 - A Policy Control Mechanism in 1440 IS-IS Using Administrative Tags"; 1441 } 1442 feature prefix-tag64 { 1443 description 1444 "Support for 64-bit prefix tags"; 1445 reference "RFC5130 - A Policy Control Mechanism in 1446 IS-IS Using Administrative Tags"; 1447 } 1448 feature auto-cost { 1449 description 1450 "Use an automated assignment of metrics."; 1451 } 1452 feature ipv4-router-id { 1453 description 1454 "Support of IPv4 router ID configuration under IS-IS."; 1455 } 1457 feature ipv6-router-id { 1458 description 1459 "Support of IPv6 router ID configuration under IS-IS."; 1460 } 1462 feature multi-topology { 1463 description 1464 "Multitopology routing support."; 1465 reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS"; 1466 } 1467 feature nlpid-control { 1468 description 1469 "This feature controls the advertisement 1470 of support NLPID within IS-IS configuration."; 1471 } 1472 feature graceful-restart { 1473 description 1474 "Graceful restart support."; 1475 reference "RFC5306 - Restart Signaling in IS-IS"; 1476 } 1478 feature lsp-refresh { 1479 description 1480 "Configuration of LSP refresh interval."; 1481 } 1483 feature maximum-area-addresses { 1484 description 1485 "Support of maximum-area-addresses config."; 1486 } 1488 feature admin-control { 1489 description 1490 "Control administrative state of IS-IS."; 1491 } 1493 /* Type definitions */ 1495 typedef instance-state-ref { 1496 type leafref { 1497 path "/rt:routing-state/" 1498 +"rt:control-plane-protocols/rt:control-plane-protocol/" 1499 +"rt:name"; 1500 } 1501 description 1502 "This type is used for leaves that reference state data for 1503 an IS-IS protocol instance."; 1504 } 1506 typedef circuit-id { 1507 type uint8; 1508 description 1509 "This type defines the circuit ID 1510 associated with an interface."; 1512 } 1514 typedef extended-circuit-id { 1515 type uint32; 1516 description 1517 "This type defines the extended circuit ID 1518 associated with an interface."; 1519 } 1521 typedef interface-type { 1522 type enumeration { 1523 enum broadcast { 1524 description 1525 "Broadcast interface type."; 1526 } 1527 enum point-to-point { 1528 description 1529 "Point-to-point interface type."; 1530 } 1531 } 1532 description 1533 "This type defines the type of adjacency 1534 to be established on the interface. 1535 The interface-type determines the type 1536 of hello message that is used."; 1538 } 1540 typedef level { 1541 type enumeration { 1542 enum "level-1" { 1543 description 1544 "This enum indicates L1-only capability."; 1545 } 1546 enum "level-2" { 1547 description 1548 "This enum indicates L2-only capability."; 1549 } 1550 enum "level-all" { 1551 description 1552 "This enum indicates capability for both levels."; 1553 } 1554 } 1555 default "level-all"; 1556 description 1557 "This type defines IS-IS level of an object."; 1559 } 1560 typedef adj-state-type { 1561 type enumeration { 1562 enum "up" { 1563 description 1564 "State indicates the adjacency is established."; 1565 } 1566 enum "down" { 1567 description 1568 "State indicates the adjacency is NOT established."; 1569 } 1570 enum "init" { 1571 description 1572 "State indicates the adjacency is establishing."; 1573 } 1574 enum "failed" { 1575 description 1576 "State indicates the adjacency is failed."; 1577 } 1578 } 1579 description 1580 "This type defines states of an adjacency"; 1581 } 1583 typedef if-state-type { 1584 type enumeration { 1585 enum "up" { 1586 description "Up state."; 1588 } 1589 enum "down" { 1590 description "Down state"; 1591 } 1592 } 1593 description 1594 "This type defines the state of an interface"; 1595 } 1597 typedef level-number { 1598 type uint8 { 1599 range "1 .. 2"; 1600 } 1601 description 1602 "This type defines the current IS-IS level."; 1603 } 1605 typedef lsp-id { 1606 type string { 1607 pattern 1608 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' 1609 +'{4}\.[0-9][0-9]-[0-9][0-9]'; 1610 } 1611 description 1612 "This type defines the IS-IS LSP ID format using a 1613 pattern, An example LSP ID is 0143.0438.AeF0.02-01"; 1614 } 1616 typedef area-address { 1617 type string { 1618 pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; 1619 } 1620 description 1621 "This type defines the area address format."; 1622 } 1624 typedef snpa { 1625 type string { 1626 length "0 .. 20"; 1627 } 1628 description 1629 "This type defines the Subnetwork Point 1630 of Attachement (SNPA) format."; 1631 } 1633 typedef system-id { 1634 type string { 1635 pattern 1636 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; 1637 } 1638 description 1639 "This type defines IS-IS system-id using pattern, 1640 An example system-id is 0143.0438.AeF0"; 1641 } 1643 typedef wide-metric { 1644 type uint32 { 1645 range "0 .. 16777215"; 1646 } 1647 description 1648 "This type defines wide style format of IS-IS metric."; 1649 } 1651 typedef std-metric { 1652 type uint8 { 1653 range "0 .. 63"; 1654 } 1655 description 1656 "This type defines old style format of IS-IS metric."; 1657 } 1659 typedef mesh-group-state { 1660 type enumeration { 1661 enum "mesh-inactive" { 1662 description 1663 "Interface is not part of a mesh group."; 1664 } 1665 enum "mesh-set" { 1666 description 1667 "Interface is part of a mesh group."; 1668 } 1669 enum "mesh-blocked" { 1670 description 1671 "LSPs must not be flooded over this interface."; 1672 } 1673 } 1674 description 1675 "This type describes mesh group state of an interface"; 1676 } 1678 /* Grouping definitions for configuration and ops state */ 1680 grouping adjacency-state { 1681 container adjacencies { 1682 config false; 1683 list adjacency { 1684 leaf neighbor-sys-type { 1685 type level; 1686 description 1687 "Level capability of neighboring system"; 1688 } 1689 leaf neighbor-sysid { 1690 type system-id; 1691 description 1692 "The system-id of the neighbor"; 1693 } 1694 leaf neighbor-extended-circuit-id { 1695 type extended-circuit-id; 1696 description 1697 "Circuit ID of the neighbor"; 1698 } 1699 leaf neighbor-snpa { 1700 type snpa; 1701 description 1702 "SNPA of the neighbor"; 1703 } 1704 leaf usage { 1705 type level; 1706 description 1707 "Define the level(s) activated on the adjacency. 1708 On a p2p link this might be level 1 and 2, 1709 but on a LAN, the usage will be level 1 1710 between peers at level 1 or level 2 between 1711 peers at level 2."; 1712 } 1713 leaf hold-timer { 1714 type rt-types:timer-value-seconds16; 1715 units seconds; 1716 description 1717 "The holding time in seconds for this 1718 adjacency. This value is based on 1719 received hello PDUs and the elapsed 1720 time since receipt."; 1721 } 1722 leaf neighbor-priority { 1723 type uint8 { 1724 range "0 .. 127"; 1725 } 1726 description 1727 "Priority of the neighboring IS for becoming 1728 the DIS."; 1729 } 1730 leaf lastuptime { 1731 type yang:timestamp; 1732 description 1733 "When the adjacency most recently entered 1734 state 'up', measured in hundredths of a 1735 second since the last reinitialization of 1736 the network management subsystem. 1737 The value is 0 if the adjacency has never 1738 been in state 'up'."; 1739 } 1740 leaf state { 1741 type adj-state-type; 1742 description 1743 "This leaf describes the state of the interface."; 1744 } 1746 description 1747 "List of operational adjacencies."; 1748 } 1749 description 1750 "This container lists the adjacencies of 1751 the local node."; 1752 } 1753 description 1754 "Adjacency state"; 1755 } 1757 grouping fast-reroute-global-state { 1758 container protected-routes { 1759 config false; 1760 list af-stats { 1761 key "af prefix alternate"; 1763 leaf af { 1764 type iana-rt-types:address-family; 1765 description 1766 "Address-family"; 1767 } 1768 leaf prefix { 1769 type string; 1770 description 1771 "Protected prefix."; 1772 } 1773 leaf alternate { 1774 type string; 1775 description 1776 "Alternate nexthop for the prefix."; 1777 } 1778 leaf alternate-type { 1779 type enumeration { 1780 enum equal-cost { 1781 description 1782 "ECMP alternate."; 1783 } 1784 enum lfa { 1785 description 1786 "LFA alternate."; 1787 } 1788 enum remote-lfa { 1789 description 1790 "Remote LFA alternate."; 1791 } 1792 enum tunnel { 1793 description 1794 "Tunnel based alternate 1795 (like RSVP-TE or GRE)."; 1796 } 1797 enum ti-lfa { 1798 description 1799 "TI-LFA alternate."; 1800 } 1801 enum mrt { 1802 description 1803 "MRT alternate."; 1804 } 1805 enum other { 1806 description 1807 "Unknown alternate type."; 1808 } 1809 } 1810 description 1811 "Type of alternate."; 1812 } 1813 leaf best { 1814 type boolean; 1815 description 1816 "Indicates if the alternate is the preferred."; 1817 } 1818 leaf non-best-reason { 1819 type string; 1820 description 1821 "Information field to describe why the alternate 1822 is not best."; 1823 } 1824 leaf protection-available { 1825 type bits { 1826 bit node-protect { 1827 position 0; 1828 description 1829 "Node protection available."; 1830 } 1831 bit link-protect { 1832 position 1; 1833 description 1834 "Link protection available."; 1835 } 1836 bit srlg-protect { 1837 position 2; 1838 description 1839 "SRLG protection available."; 1840 } 1841 bit downstream-protect { 1842 position 3; 1843 description 1844 "Downstream protection available."; 1845 } 1846 bit other { 1847 position 4; 1848 description 1849 "Other protection available."; 1850 } 1851 } 1852 description "Protection provided by the alternate."; 1853 } 1854 leaf alternate-metric1 { 1855 type uint32; 1856 description 1857 "Metric from Point of Local Repair (PLR) to 1858 destination through the alternate path."; 1859 } 1860 leaf alternate-metric2 { 1861 type uint32; 1862 description 1863 "Metric from PLR to the alternate node"; 1864 } 1865 leaf alternate-metric3 { 1866 type uint32; 1867 description 1868 "Metric from alternate node to the destination"; 1869 } 1870 description 1871 "Per-AF protected prefix statistics."; 1872 } 1873 description 1874 "List of prefixes that are protected."; 1875 } 1877 container unprotected-routes { 1878 config false; 1879 list af-stats { 1880 key "af prefix"; 1882 leaf af { 1883 type iana-rt-types:address-family; 1885 description "Address-family"; 1886 } 1887 leaf prefix { 1888 type string; 1889 description "Unprotected prefix."; 1890 } 1891 description 1892 "Per AF unprotected prefix statistics."; 1893 } 1894 description 1895 "List of prefixes that are not protected."; 1896 } 1898 list protection-statistics { 1899 key frr-protection-method; 1900 config false; 1901 leaf frr-protection-method { 1902 type string; 1903 description "Protection method used."; 1904 } 1905 list af-stats { 1906 key af; 1908 leaf af { 1909 type iana-rt-types:address-family; 1911 description "Address-family"; 1912 } 1913 leaf total-routes { 1914 type uint32; 1915 description "Total prefixes."; 1916 } 1917 leaf unprotected-routes { 1918 type uint32; 1919 description 1920 "Total prefixes that are not protected."; 1921 } 1922 leaf protected-routes { 1923 type uint32; 1924 description 1925 "Total prefixes that are protected."; 1926 } 1927 leaf linkprotected-routes { 1928 type uint32; 1929 description 1930 "Total prefixes that are link protected."; 1931 } 1932 leaf nodeprotected-routes { 1933 type uint32; 1934 description 1935 "Total prefixes that are node protected."; 1936 } 1937 description 1938 "Per AF protected prefix statistics."; 1939 } 1941 description "Global protection statistics."; 1943 } 1944 description "IPFRR states."; 1945 } 1947 grouping notification-instance-hdr { 1948 description 1949 "Instance specific IS-IS notification data grouping"; 1950 leaf routing-instance { 1951 type string; 1952 description "Name of the routing-instance instance."; 1953 } 1954 leaf routing-protocol-name { 1955 type string; 1956 description "Name of the IS-IS instance."; 1957 } 1958 leaf isis-level { 1959 type level; 1960 description "IS-IS level of the instance."; 1961 } 1962 } 1964 grouping notification-interface-hdr { 1965 description 1966 "Interface specific IS-IS notification data grouping"; 1967 leaf interface-name { 1968 type string; 1969 description "IS-IS interface name"; 1970 } 1971 leaf interface-level { 1972 type level; 1973 description "IS-IS level of the interface."; 1974 } 1975 leaf extended-circuit-id { 1976 type extended-circuit-id; 1977 description "Eextended circuit-id of the interface."; 1978 } 1979 } 1981 grouping route-content { 1982 description 1983 "IS-IS protocol-specific route properties grouping."; 1984 leaf metric { 1985 type uint32; 1986 description "IS-IS metric of a route."; 1987 } 1988 leaf-list tag { 1989 type uint64; 1990 description 1991 "List of tags associated with the route. The leaf 1992 describes both 32-bit and 64-bit tags."; 1993 } 1994 leaf route-type { 1995 type enumeration { 1996 enum l2-up-internal { 1997 description "Level 2 internal route 1998 and not leaked to a lower level"; 1999 } 2000 enum l1-up-internal { 2001 description "Level 1 internal route 2002 and not leaked to a lower level"; 2003 } 2004 enum l2-up-external { 2005 description "Level 2 external route 2006 and not leaked to a lower level"; 2007 } 2008 enum l1-up-external { 2009 description "Level 1 external route 2010 and not leaked to a lower level"; 2011 } 2012 enum l2-down-internal { 2013 description "Level 2 internal route 2014 and leaked to a lower level"; 2015 } 2016 enum l1-down-internal { 2017 description "Level 1 internal route 2018 and leaked to a lower level"; 2019 } 2020 enum l2-down-external { 2021 description "Level 2 external route 2022 and leaked to a lower level"; 2023 } 2024 enum l1-down-external { 2025 description "Level 1 external route 2026 and leaked to a lower level"; 2027 } 2028 } 2029 description "IS-IS route type."; 2030 } 2031 } 2033 grouping admin-control { 2034 leaf enable { 2035 if-feature admin-control; 2036 type boolean; 2037 default true; 2038 description 2039 "Control the administrative state."; 2040 } 2041 description 2042 "Grouping for admin control."; 2043 } 2045 grouping fast-reroute-global-cfg { 2046 description 2047 "IPFRR global configuration grouping"; 2048 container lfa { 2049 if-feature lfa; 2050 description 2051 "This container may be augmented with global 2052 parameters for LFA. Creating the container has no 2053 effect on LFA activation."; 2054 } 2055 } 2057 grouping fast-reroute-if-cfg { 2058 description 2059 "IPFRR interface configuration grouping"; 2060 container lfa { 2061 if-feature lfa; 2062 uses lfa-if-cfg; 2063 container level-1 { 2064 uses lfa-if-cfg; 2065 description 2066 "LFA level 1 config"; 2067 } 2068 container level-2 { 2069 uses lfa-if-cfg; 2070 description 2071 "LFA level 2 config"; 2072 } 2073 description 2074 "LFA config"; 2075 } 2076 } 2078 grouping ietf-spf-delay-cfg { 2079 leaf initial-delay { 2080 type rt-types:timer-value-milliseconds; 2081 units msec; 2082 description 2083 "Delay used while in QUIET state."; 2084 } 2085 leaf short-delay { 2086 type rt-types:timer-value-milliseconds; 2087 units msec; 2088 description 2089 "Delay used while in SHORT_WAIT state."; 2090 } 2091 leaf long-delay { 2092 type rt-types:timer-value-milliseconds; 2093 units msec; 2094 description 2095 "Delay used while in LONG_WAIT state."; 2096 } 2098 leaf hold-down { 2099 type rt-types:timer-value-milliseconds; 2100 units msec; 2101 description 2102 "Timer used to consider an IGP stability period."; 2103 } 2104 leaf time-to-learn { 2105 type rt-types:timer-value-milliseconds; 2106 units msec; 2107 description 2108 "Duration used to learn all the IGP events 2109 related to a single component failure."; 2110 } 2112 description 2113 "Grouping for IETF SPF delay configuration."; 2114 } 2116 grouping ietf-spf-delay-state { 2117 leaf current-state { 2118 type enumeration { 2119 enum "quiet" { 2120 description "QUIET state"; 2121 } 2122 enum "short-wait" { 2123 description "SHORT_WAIT state"; 2124 } 2125 enum "long-wait" { 2126 description "LONG_WAIT state"; 2127 } 2128 } 2129 config false; 2130 description 2131 "Current SPF backoff algorithm state."; 2132 } 2133 leaf remaining-time-to-learn { 2134 type rt-types:timer-value-milliseconds; 2135 units "msec"; 2136 config false; 2137 description 2138 "Remaining time until time-to-learn timer fires."; 2139 } 2140 leaf remaining-hold-down { 2141 type rt-types:timer-value-milliseconds; 2142 units "msec"; 2143 config false; 2144 description 2145 "Remaining time until hold-down timer fires."; 2146 } 2147 leaf last-event-received { 2148 type yang:timestamp; 2149 config false; 2150 description 2151 "Time of last IGP event received"; 2152 } 2153 leaf next-spf-time { 2154 type yang:timestamp; 2155 config false; 2156 description 2157 "Time when next SPF has been scheduled."; 2158 } 2159 leaf last-spf-time { 2160 type yang:timestamp; 2161 config false; 2162 description 2163 "Time of last SPF computation."; 2164 } 2165 description 2166 "Grouping for IETF SPF delay operational states."; 2167 } 2169 grouping local-rib { 2170 description "Local-rib grouping."; 2171 container local-rib { 2172 config false; 2173 description "Local-rib."; 2174 list route { 2175 key "prefix"; 2176 description "List of IS-IS local RIB Routes"; 2177 leaf prefix { 2178 type inet:ip-prefix; 2179 description "Destination prefix."; 2180 } 2181 container next-hops { 2182 description "All next hops for the route."; 2183 list next-hop { 2184 key "next-hop"; 2185 description "List of next hop for the route"; 2186 leaf outgoing-interface { 2187 type if:interface-ref; 2188 description 2189 "Name of the outgoing interface."; 2190 } 2191 leaf next-hop { 2192 type inet:ip-address; 2193 description "Nexthop address."; 2194 } 2195 } 2196 } 2197 leaf metric { 2198 type uint32; 2199 description "Metric for this route."; 2200 } 2201 leaf level { 2202 type level-number; 2203 description "Level number for this route."; 2204 } 2205 leaf route-tag { 2206 type uint32; 2207 description "Route tag for this route."; 2208 } 2209 } 2210 } 2211 } 2213 grouping isis-node-tag-cfg { 2214 description "IS-IS node tag config."; 2215 container node-tags { 2216 if-feature node-tag; 2217 list node-tag { 2218 key tag; 2219 leaf tag { 2220 type uint32; 2221 description 2222 "Node tag value."; 2223 } 2224 description 2225 "List of tags."; 2226 } 2227 description 2228 "Container for node tags."; 2229 } 2230 } 2231 grouping authentication-global-cfg { 2232 choice authentication-type { 2233 case key-chain { 2234 if-feature key-chain; 2235 leaf key-chain { 2236 type key-chain:key-chain-ref; 2237 description 2238 "Reference to a key-chain."; 2239 } 2240 } 2241 case password { 2242 leaf key { 2243 type string; 2244 description 2245 "This leaf specifies the authentication key."; 2246 } 2247 leaf crypto-algorithm { 2248 type identityref { 2249 base key-chain:crypto-algorithm; 2250 } 2251 description 2252 "Cryptographic algorithm associated with key."; 2253 } 2254 } 2255 description "Choice of authentication."; 2256 } 2257 description "Grouping for global authentication config."; 2258 } 2260 grouping metric-type-global-cfg { 2261 leaf value { 2262 type enumeration { 2263 enum wide-only { 2264 description 2265 "Advertise new metric style only (RFC5305)"; 2266 } 2267 enum old-only { 2268 description 2269 "Advertise old metric style only (RFC1195)"; 2270 } 2271 enum both { 2272 description "Advertise both metricstyles"; 2273 } 2274 } 2275 default wide-only; 2276 description 2277 "Type of metric to be generated: 2278 - wide-only means only new metric style 2279 is generated, 2280 - old-only means that only old style metric 2281 is generated, 2282 - both means that both are advertised. 2283 This leaf is only affecting IPv4 metrics."; 2284 } 2285 description 2286 "Grouping for global metric style config."; 2287 } 2289 grouping default-metric-global-cfg { 2290 leaf value { 2291 type wide-metric; 2292 default "10"; 2293 description "Value of the metric"; 2294 } 2295 description 2296 "Global default metric config grouping."; 2297 } 2299 grouping overload-global-cfg { 2300 leaf status { 2301 type boolean; 2302 default false; 2303 description 2304 "This leaf specifies the overload status."; 2305 } 2306 description "Grouping for overload bit config."; 2307 } 2309 grouping overload-max-metric-global-cfg { 2310 leaf timeout { 2311 type rt-types:timer-value-seconds16; 2312 units "seconds"; 2313 description 2314 "Timeout (in seconds) of the overload condition."; 2315 } 2316 description 2317 "Overload maximum metric configuration grouping"; 2318 } 2320 grouping route-preference-global-cfg { 2321 choice granularity { 2322 case detail { 2323 leaf internal { 2324 type uint8; 2325 description 2326 "Protocol preference for internal routes."; 2327 } 2328 leaf external { 2329 type uint8; 2330 description 2331 "Protocol preference for external routes."; 2332 } 2333 } 2334 case coarse { 2335 leaf default { 2336 type uint8; 2337 description 2338 "Protocol preference for all IS-IS routes."; 2339 } 2340 } 2341 description 2342 "Choice for implementation of route preference."; 2343 } 2344 description 2345 "Global route preference grouping"; 2346 } 2348 grouping hello-authentication-cfg { 2349 choice authentication-type { 2350 case key-chain { 2351 if-feature key-chain; 2352 leaf key-chain { 2353 type key-chain:key-chain-ref; 2354 description "Reference to a key-chain."; 2355 } 2356 } 2357 case password { 2358 leaf key { 2359 type string; 2360 description "Authentication key specification"; 2361 } 2362 leaf crypto-algorithm { 2363 type identityref { 2364 base key-chain:crypto-algorithm; 2365 } 2366 description 2367 "Cryptographic algorithm associated with key."; 2368 } 2369 } 2370 description "Choice of authentication."; 2371 } 2372 description "Grouping for hello authentication."; 2373 } 2374 grouping hello-interval-cfg { 2375 leaf value { 2376 type rt-types:timer-value-seconds16; 2377 units "seconds"; 2378 default 10; 2379 description 2380 "Interval (in seconds) between successive hello 2381 messages."; 2382 } 2384 description "Interval between hello messages."; 2385 } 2387 grouping hello-multiplier-cfg { 2388 leaf value { 2389 type uint16; 2390 default 3; 2391 description 2392 "Number of missed hello messages prior to 2393 declaring the adjacency down."; 2394 } 2395 description 2396 "Number of missed hello messages prior to 2397 adjacency down grouping."; 2398 } 2400 grouping priority-cfg { 2401 leaf value { 2402 type uint8 { 2403 range "0 .. 127"; 2404 } 2405 default 64; 2406 description 2407 "Priority of interface for DIS election."; 2408 } 2410 description "Interface DIS election priority grouping"; 2411 } 2413 grouping metric-cfg { 2414 leaf value { 2415 type wide-metric; 2416 default "10"; 2417 description "Metric value."; 2418 } 2419 description "Interface metric grouping"; 2420 } 2421 grouping lfa-if-cfg { 2422 leaf candidate-disabled { 2423 type boolean; 2424 default false; 2425 description 2426 "Prevent the interface to be used as backup."; 2427 } 2428 leaf enable { 2429 type boolean; 2430 default false; 2431 description 2432 "LFA Activation - this model assumes activation 2433 of per-prefix LFA."; 2434 } 2436 container remote-lfa { 2437 if-feature remote-lfa; 2438 leaf enable { 2439 type boolean; 2440 default false; 2441 description 2442 "Activates rLFA."; 2443 } 2444 description "Remote LFA configuration."; 2445 } 2446 description "Grouping for LFA interface configuration"; 2447 } 2449 grouping isis-global-cfg { 2450 description "IS-IS global configuration grouping"; 2452 uses admin-control; 2454 leaf level-type { 2455 type level; 2456 default "level-all"; 2457 description 2458 "Level of an IS-IS node - can be level-1-only, 2459 level-2-only or level-1-2."; 2460 } 2462 leaf system-id { 2463 type system-id; 2464 description "System-id of the node."; 2465 } 2467 leaf maximum-area-addresses { 2468 if-feature maximum-area-addresses; 2469 type uint8; 2470 default 3; 2471 description "Maximum areas supported."; 2472 } 2474 leaf-list area-address { 2475 type area-address; 2476 description 2477 "List of areas supported by the protocol instance."; 2478 } 2480 container mpls { 2481 leaf ipv4-router-id { 2482 if-feature ipv4-router-id; 2483 type inet:ipv4-address; 2484 description 2485 "Router ID value that would be used in TLV 134."; 2486 } 2487 leaf ipv6-router-id { 2488 if-feature ipv6-router-id; 2489 type inet:ipv6-address; 2490 description 2491 "Router ID value that would be used in TLV 140."; 2492 } 2493 container ldp { 2494 container igp-sync { 2495 if-feature ldp-igp-sync; 2496 description 2497 "This container may be augmented with global 2498 parameters for igp-ldp-sync."; 2499 } 2500 description "LDP configuration."; 2501 } 2502 description "MPLS configuration"; 2503 } 2504 container auto-cost { 2505 if-feature auto-cost; 2506 leaf reference-bandwidth { 2507 type uint32; 2508 units "bps"; 2509 description "Bandwidth for calculating metric."; 2510 } 2511 leaf enable { 2512 type boolean; 2513 default false; 2514 description "Enable/disable auto-cost."; 2515 } 2516 description "Auto-cost configuration."; 2518 } 2519 leaf lsp-mtu { 2520 type uint16; 2521 units "bytes"; 2522 default 1492; 2523 description 2524 "Maximum size of an LSP PDU in bytes."; 2525 } 2526 leaf lsp-lifetime { 2527 type uint16 { 2528 range "1..65535"; 2529 } 2530 units "seconds"; 2531 description 2532 "Lifetime of the router's LSPs in seconds."; 2533 } 2534 leaf lsp-refresh { 2535 if-feature lsp-refresh; 2536 type rt-types:timer-value-seconds16; 2537 units "seconds"; 2538 description 2539 "Refresh interval of the router's LSPs in seconds."; 2540 } 2541 container graceful-restart { 2542 if-feature graceful-restart; 2543 leaf enable { 2544 type boolean; 2545 default false; 2546 description "Enable graceful restart."; 2547 } 2548 leaf restart-interval { 2549 type rt-types:timer-value-seconds16; 2550 units "seconds"; 2551 description 2552 "Interval (in seconds) to attempt graceful restart prior 2553 to failure."; 2554 } 2555 leaf helper-enable { 2556 type boolean; 2557 default true; 2558 description 2559 "Enable local IS-IS router as graceful restart helper."; 2560 } 2561 description "Graceful-Restart Configuration."; 2562 } 2564 container nsr { 2565 if-feature nsr; 2566 description "Non-Stop Routing (NSR) configuration."; 2567 leaf enable { 2568 type boolean; 2569 default false; 2570 description "Enable/Disable Non-Stop Routing (NSR)."; 2571 } 2572 } 2574 uses isis-node-tag-cfg; 2576 container authentication { 2577 uses authentication-global-cfg; 2579 container level-1 { 2580 uses authentication-global-cfg; 2581 description "level-1 specific configuration"; 2582 } 2583 container level-2 { 2584 uses authentication-global-cfg; 2585 description "level-2 specific configuration"; 2586 } 2587 description "Authentication global configuration for 2588 both LSPs and SNPs."; 2589 } 2591 container metric-type { 2592 uses metric-type-global-cfg; 2593 container level-1 { 2594 uses metric-type-global-cfg; 2595 description "level-1 specific configuration"; 2596 } 2597 container level-2 { 2598 uses metric-type-global-cfg; 2599 description "level-2 specific configuration"; 2600 } 2601 description "Metric style global configuration"; 2602 } 2604 container default-metric { 2605 uses default-metric-global-cfg; 2606 container level-1 { 2607 uses default-metric-global-cfg; 2608 description "level-1 specific configuration"; 2609 } 2610 container level-2 { 2611 uses default-metric-global-cfg; 2612 description "level-2 specific configuration"; 2613 } 2614 description "Default metric global configuration"; 2615 } 2617 container afs { 2618 if-feature nlpid-control; 2619 list af { 2620 key af; 2621 leaf af { 2622 type iana-rt-types:address-family; 2623 description "Address-family"; 2624 } 2625 leaf enable { 2626 type boolean; 2627 description "Activate the address family."; 2628 } 2629 description 2630 "List of address families and whether or not they 2631 are activated."; 2632 } 2633 description "Address Family configuration"; 2634 } 2636 container preference { 2637 uses route-preference-global-cfg; 2638 description "Router preference configuration for IS-IS 2639 protocol instance route installation"; 2640 } 2642 container overload { 2643 uses overload-global-cfg; 2644 description "Router protocol instance overload state 2645 configuration"; 2646 } 2648 container overload-max-metric { 2649 if-feature overload-max-metric; 2650 uses overload-max-metric-global-cfg; 2651 description 2652 "Router protocol instance overload maximum 2653 metric advertisement configuration."; 2654 } 2655 } 2657 grouping isis-global-topologies-cfg { 2658 description "Per-topology configuration"; 2659 container default-metric { 2660 uses default-metric-global-cfg; 2661 container level-1 { 2662 uses default-metric-global-cfg; 2663 description "level-1 specific configuration"; 2664 } 2665 container level-2 { 2666 uses default-metric-global-cfg; 2667 description "level-2 specific configuration"; 2668 } 2669 description "Default metric per-topology configuration"; 2670 } 2671 uses isis-node-tag-cfg; 2672 } 2674 grouping isis-if-cfg { 2675 description "Interface configuration grouping"; 2676 leaf level-type { 2677 type level; 2678 default "level-all"; 2679 description "IS-IS level of the interface."; 2680 } 2681 leaf lsp-pacing-interval { 2682 type rt-types:timer-value-milliseconds; 2683 units "milliseconds"; 2684 default 33; 2685 description 2686 "Interval (in milli-seconds) between LSP 2687 transmissions."; 2688 } 2689 leaf lsp-retransmit-interval { 2690 type rt-types:timer-value-seconds16; 2691 units "seconds"; 2692 description 2693 "Interval (in seconds) between LSP 2694 retransmissions."; 2695 } 2696 leaf passive { 2697 type boolean; 2698 default "false"; 2699 description 2700 "Indicates whetherthe interface is in passive mode (IS-IS 2701 not running but network is advertised)."; 2702 } 2703 leaf csnp-interval { 2704 type rt-types:timer-value-seconds16; 2705 units "seconds"; 2706 default 10; 2707 description 2708 "Interval (in seconds) between CSNP messages."; 2709 } 2710 container hello-padding { 2711 leaf enable { 2712 type boolean; 2713 default "true"; 2714 description 2715 "IS-IS Hello-padding activation - enabled by default."; 2716 } 2717 description "IS-IS hello padding configuration."; 2718 } 2719 leaf mesh-group-enable { 2720 type mesh-group-state; 2721 description "IS-IS interface mesh-group state"; 2722 } 2723 leaf mesh-group { 2724 when "../mesh-group-enable = 'mesh-set'" { 2725 description 2726 "Only valid when mesh-group-enable equals meshset"; 2727 } 2728 type uint8; 2729 description "IS-IS interface mesh-group ID."; 2730 } 2731 leaf interface-type { 2732 type interface-type; 2733 default "broadcast"; 2734 description 2735 "Type of adjacency to be established on the interface. This 2736 dictates the type of hello messages that are used."; 2737 } 2739 uses admin-control; 2741 leaf-list tag { 2742 if-feature prefix-tag; 2743 type uint32; 2744 description 2745 "List of tags associated with the interface."; 2746 } 2747 leaf-list tag64 { 2748 if-feature prefix-tag64; 2749 type uint64; 2750 description 2751 "List of 64-bit tags associated with the interface."; 2752 } 2753 leaf node-flag { 2754 if-feature node-flag; 2755 type boolean; 2756 default false; 2757 description 2758 "Set prefix as a node representative prefix."; 2759 } 2760 container hello-authentication { 2761 uses hello-authentication-cfg; 2762 container level-1 { 2763 uses hello-authentication-cfg; 2764 description "level-1 specific configuration"; 2765 } 2766 container level-2 { 2767 uses hello-authentication-cfg; 2768 description "level-2 specific configuration"; 2769 } 2770 description 2771 "Authentication type to be used in hello messages."; 2772 } 2773 container hello-interval { 2774 uses hello-interval-cfg; 2775 container level-1 { 2776 uses hello-interval-cfg; 2777 description "level-1 specific configuration"; 2778 } 2779 container level-2 { 2780 uses hello-interval-cfg; 2781 description "level-2 specific configuration"; 2782 } 2783 description "Interval between hello messages."; 2784 } 2785 container hello-multiplier { 2786 uses hello-multiplier-cfg; 2787 container level-1 { 2788 uses hello-multiplier-cfg; 2789 description "level-1 specific configuration"; 2790 } 2791 container level-2 { 2792 uses hello-multiplier-cfg; 2793 description "level-2 specific configuration"; 2794 } 2795 description "Hello multiplier configuration."; 2796 } 2797 container priority { 2798 must '../interface-type = "broadcast"' { 2799 error-message 2800 "Priority only applies to broadcast interfaces."; 2801 description "Check for broadcast interface."; 2802 } 2803 uses priority-cfg; 2804 container level-1 { 2805 uses priority-cfg; 2806 description "level-1 specific configuration"; 2807 } 2808 container level-2 { 2809 uses priority-cfg; 2810 description "level-2 specific configuration"; 2811 } 2812 description "Priority for DIS election."; 2813 } 2814 container metric { 2815 uses metric-cfg; 2816 container level-1 { 2817 uses metric-cfg; 2818 description "level-1 specific configuration"; 2819 } 2820 container level-2 { 2821 uses metric-cfg; 2822 description "level-2 specific configuration"; 2823 } 2824 description "Metric configuration."; 2825 } 2826 container bfd { 2827 if-feature bfd; 2828 description "BFD Client Configuration."; 2829 uses bfd-types:client-cfg-parms; 2831 reference "draft-ietf-bfd-yang-xx.txt: 2832 YANG Data Model for Bidirectional Forwarding 2833 Detection (BFD)"; 2834 } 2835 container afs { 2836 if-feature nlpid-control; 2837 list af { 2838 key af; 2839 leaf af { 2840 type iana-rt-types:address-family; 2841 description "Address-family"; 2842 } 2843 description "List of AFs."; 2844 } 2845 description "Interface address-families"; 2846 } 2847 container mpls { 2848 container ldp { 2849 leaf igp-sync { 2850 if-feature ldp-igp-sync; 2851 type boolean; 2852 default false; 2853 description "Enables IGP/LDP synchronization"; 2855 } 2856 description "LDP protocol related configuration."; 2857 } 2858 description "MPLS configuration for IS-IS interfaces"; 2859 } 2860 } 2862 grouping isis-if-topologies-cfg { 2863 description "IS-IS interface topology configuration."; 2864 container metric { 2865 uses metric-cfg; 2866 container level-1 { 2867 uses metric-cfg; 2868 description "level-1 specific configuration"; 2869 } 2870 container level-2 { 2871 uses metric-cfg; 2872 description "level-2 specific configuration"; 2873 } 2874 description "Metric IS-IS interface configuration."; 2875 } 2876 } 2878 grouping system-counters { 2879 container system-counters { 2880 config false; 2881 list level { 2882 key level; 2884 leaf level { 2885 type level-number; 2886 description "IS-IS level."; 2887 } 2888 leaf corrupted-lsps { 2889 type uint32; 2890 description 2891 "Number of corrupted in-memory LSPs detected. 2892 LSPs received from the wire with a bad 2893 checksum are silently dropped and not counted. 2894 LSPs received from the wire with parse errors 2895 are counted by lsp-errors."; 2896 } 2897 leaf authentication-type-fails { 2898 type uint32; 2899 description 2900 "Number of authentication type mismatches."; 2901 } 2902 leaf authentication-fails { 2903 type uint32; 2904 description 2905 "Number of authentication key failures."; 2906 } 2907 leaf database-overload { 2908 type uint32; 2909 description 2910 "Number of times the database has become 2911 overloaded."; 2912 } 2913 leaf own-lsp-purge { 2914 type uint32; 2915 description 2916 "Number of times a zero-aged copy of the system's 2917 own LSP is received from some other IS-IS node."; 2918 } 2919 leaf manual-address-drop-from-area { 2920 type uint32; 2921 description 2922 "Number of times a manual address 2923 has been dropped from the area."; 2924 } 2925 leaf max-sequence { 2926 type uint32; 2927 description 2928 "Number of times the system has attempted 2929 to exceed the maximum sequence number."; 2930 } 2931 leaf sequence-number-skipped { 2932 type uint32; 2933 description 2934 "Number of times a sequence number skip has 2935 occured."; 2936 } 2937 leaf id-len-mismatch { 2938 type uint32; 2939 description 2940 "Number of times a PDU is received with a 2941 different value for the ID field length 2942 than that of the receiving system."; 2943 } 2944 leaf partition-changes { 2945 type uint32; 2946 description 2947 "Number of partition changes detected."; 2948 } 2949 leaf lsp-errors { 2950 type uint32; 2951 description 2952 "Number of LSPs with errors we have received."; 2953 } 2954 leaf spf-runs { 2955 type uint32; 2956 description 2957 "Number of times we ran SPF at this level."; 2958 } 2959 description 2960 "List of supported levels."; 2961 } 2962 description 2963 "List counters for the IS-IS protocol instance"; 2964 } 2965 description "System counters grouping."; 2966 } 2968 grouping event-counters { 2969 container event-counters { 2970 config false; 2971 leaf adjacency-changes { 2972 type uint32; 2973 description 2974 "The number of times an adjacency state change has 2975 occured on this interface."; 2976 } 2977 leaf adjacency-number { 2978 type uint32; 2979 description 2980 "The number of adjacencies on this interface."; 2981 } 2982 leaf init-fails { 2983 type uint32; 2984 description 2985 "The number of times initialization of this 2986 interface has failed. This counts events such 2987 as PPP NCP failures. Failures to form an 2988 adjacency are counted by adjacency-rejects."; 2989 } 2990 leaf adjacency-rejects { 2991 type uint32; 2992 description 2993 "The number of times an adjacency has been 2994 rejected on this interface."; 2995 } 2996 leaf id-len-mismatch { 2997 type uint32; 2998 description 2999 "The number of times an IS-IS PDU with an ID 3000 field length different from that for this 3001 system has been received on this interface."; 3002 } 3003 leaf max-area-addresses-mismatch { 3004 type uint32; 3005 description 3006 "The number of times an IS-IS PDU has been 3007 received on this interface with the 3008 max area address field differing from that of 3009 this system."; 3010 } 3011 leaf authentication-type-fails { 3012 type uint32; 3013 description 3014 "Number of authentication type mismatches."; 3015 } 3016 leaf authentication-fails { 3017 type uint32; 3018 description 3019 "Number of authentication key failures."; 3020 } 3021 leaf lan-dis-changes { 3022 type uint32; 3023 description 3024 "The number of times the DIS has changed on this 3025 interface at this level. If the interface type is 3026 point-to-point,the count is zero."; 3027 } 3028 description "IS-IS interface event counters."; 3029 } 3030 description 3031 "Grouping for IS-IS interface event counters"; 3032 } 3034 grouping packet-counters { 3035 container packet-counters { 3036 config false; 3037 list level { 3038 key level; 3040 leaf level { 3041 type level-number; 3042 description "IS-IS level."; 3043 } 3044 container iih { 3045 leaf in { 3046 type uint32; 3047 description "Received IIH PDUs."; 3048 } 3049 leaf out { 3050 type uint32; 3051 description "Sent IIH PDUs."; 3052 } 3053 description "Number of IIH PDUs received/sent."; 3054 } 3055 container ish { 3056 leaf in { 3057 type uint32; 3058 description "Received ISH PDUs."; 3059 } 3060 leaf out { 3061 type uint32; 3062 description "Sent ISH PDUs."; 3063 } 3064 description 3065 "ISH PDUs received/sent."; 3066 } 3067 container esh { 3068 leaf in { 3069 type uint32; 3070 description "Received ESH PDUs."; 3071 } 3072 leaf out { 3073 type uint32; 3074 description "Sent ESH PDUs."; 3075 } 3076 description "Number of ESH PDUs received/sent."; 3077 } 3078 container lsp { 3079 leaf in { 3080 type uint32; 3081 description "Received LSP PDUs."; 3082 } 3083 leaf out { 3084 type uint32; 3085 description "Sent LSP PDUs."; 3086 } 3087 description "Number of LSP PDUs received/sent."; 3088 } 3089 container psnp { 3090 leaf in { 3091 type uint32; 3092 description "Received PSNP PDUs."; 3093 } 3094 leaf out { 3095 type uint32; 3096 description "Sent PSNP PDUs."; 3097 } 3098 description "Number of PSNP PDUs received/sent."; 3099 } 3100 container csnp { 3101 leaf in { 3102 type uint32; 3103 description "Received CSNP PDUs."; 3104 } 3105 leaf out { 3106 type uint32; 3107 description "Sent CSNP PDUs."; 3108 } 3109 description "Number of CSNP PDUs received/sent."; 3110 } 3111 container unknown { 3112 leaf in { 3113 type uint32; 3114 description "Received unknown PDUs."; 3115 } 3116 leaf out { 3117 type uint32; 3118 description "Sent unknown PDUs."; 3119 } 3120 description "Number of unknown PDUs received/sent."; 3121 } 3122 description 3123 "List of packet counter for supported llevels."; 3124 } 3125 description "Packet counters per IS-IS level."; 3126 } 3127 description 3128 "Grouping for per IS-IS Level packet counters."; 3129 } 3131 grouping spf-log { 3132 container spf-log { 3133 config false; 3134 list event { 3135 key id; 3137 leaf id { 3138 type uint32; 3139 description 3140 "Event identifier - purely internal value."; 3141 } 3142 leaf spf-type { 3143 type enumeration { 3144 enum full { 3145 description "Full SPF computation."; 3146 } 3147 enum route-only { 3148 description 3149 "Route reachability only SPF computation"; 3150 } 3151 } 3152 description "Type of SPF computation performed."; 3153 } 3154 leaf level { 3155 type level-number; 3156 description 3157 "IS-IS level number for SPF computation"; 3158 } 3159 leaf schedule-timestamp { 3160 type yang:timestamp; 3161 description 3162 "Timestamp of when the SPF computation was 3163 scheduled."; 3164 } 3165 leaf start-timestamp { 3166 type yang:timestamp; 3167 description 3168 "Timestamp of when the SPF computation started."; 3169 } 3170 leaf end-timestamp { 3171 type yang:timestamp; 3172 description 3173 "Timestamp of when the SPF computation ended."; 3174 } 3175 list trigger-lsp { 3176 key "lsp"; 3177 leaf lsp { 3178 type lsp-id; 3179 description 3180 "LSPID of the LSP triggering SPF computation."; 3181 } 3182 leaf sequence { 3183 type uint32; 3184 description 3185 "Sequence number of the LSP triggering SPF 3186 computation"; 3187 } 3188 description 3189 "This list includes the LSPs that triggered the 3190 SPF computation."; 3192 } 3193 description 3194 "List of computation events - implemented as a 3195 wrapping buffer."; 3196 } 3198 description 3199 "This container lists the SPF computation events."; 3200 } 3201 description "Grouping for spf-log events."; 3202 } 3204 grouping lsp-log { 3205 container lsp-log { 3206 config false; 3207 list event { 3208 key id; 3210 leaf id { 3211 type uint32; 3212 description 3213 "Event identifier - purely internal value."; 3214 } 3215 leaf level { 3216 type level-number; 3217 description 3218 "IS-IS level number for LSP"; 3219 } 3220 container lsp { 3221 leaf lsp { 3223 type lsp-id; 3224 description 3225 "LSPID of the LSP."; 3226 } 3227 leaf sequence { 3228 type uint32; 3229 description 3230 "Sequence number of the LSP."; 3231 } 3232 description 3233 "LSP identification container - either the received 3234 LSP or the locally generated LSP."; 3235 } 3237 leaf received-timestamp { 3238 type yang:timestamp; 3239 description 3240 "Timestamp of when the LSP was received. In case 3241 of local LSP update, the timestamp refers to the 3242 local LSP update time."; 3243 } 3245 leaf change { 3246 type identityref { 3247 base lsp-log-reason; 3248 } 3249 description "Type of LSP change."; 3250 } 3252 description 3253 "List of LSP events - implemented as a 3254 wrapping buffer."; 3255 } 3257 description 3258 "LSP reception and local LSP origination events 3259 container."; 3261 } description "Grouping for LSP log."; 3262 } 3264 grouping hostname-db { 3265 container hostnames { 3266 config false; 3267 list hostname { 3268 key system-id; 3269 leaf system-id { 3270 type system-id; 3271 description 3272 "System-id associated with the hostname."; 3273 } 3274 leaf hostname { 3275 type string; 3276 description 3277 "Hostname associated with the system ID."; 3278 } 3279 description 3280 "List of system-id/hostname associations."; 3281 } 3282 description 3283 "Hostname to system-id mapping database."; 3284 } 3285 description 3286 "Grouping for hostname to system-id mapping database."; 3288 } 3290 /* Groupings for the LSDB description */ 3292 grouping prefix-reachability-attributes { 3293 description 3294 "Grouping for extended reachability attributes of an 3295 IPv4 or IPv6 prefix."; 3297 leaf external-prefix-flag { 3298 type boolean; 3299 description "External prefix flag."; 3300 } 3301 leaf readvertisement-flag { 3302 type boolean; 3303 description "Readvertisement flag."; 3304 } 3305 leaf node-flag { 3306 type boolean; 3307 description "Node flag."; 3308 } 3309 } 3311 grouping prefix-ipv4-source-router-id { 3312 description 3313 "Grouping for the IPv4 source router ID of a prefix 3314 advertisement."; 3316 leaf ipv4-source-router-id { 3317 type inet:ipv4-address; 3318 description "IPv4 Source router ID address."; 3319 } 3320 } 3322 grouping prefix-ipv6-source-router-id { 3323 description 3324 "Grouping for the IPv6 source router ID of a prefix 3325 advertisement."; 3327 leaf ipv6-source-router-id { 3328 type inet:ipv6-address; 3329 description "IPv6 Source router ID address."; 3330 } 3331 } 3333 grouping prefix-attributes-extension { 3334 description "Prefix extended attributes."; 3335 uses prefix-reachability-attributes; 3336 uses prefix-ipv4-source-router-id; 3337 uses prefix-ipv6-source-router-id; 3338 } 3340 grouping prefix-ipv4-std { 3341 description 3342 "Grouping for attributes of an IPv4 standard prefix."; 3343 leaf up-down { 3344 type boolean; 3345 description "Value of up/down bit."; 3346 } 3347 leaf i-e { 3348 type boolean; 3349 description "Value of I/E bit."; 3350 } 3351 leaf ip-prefix { 3352 type inet:ipv4-address; 3353 description "IPv4 prefix address"; 3354 } 3355 leaf prefix-len { 3356 type uint8; 3357 description "IPv4 prefix length (in bits)"; 3358 } 3359 leaf default-metric { 3360 type std-metric; 3361 description "Default IS-IS metric for IPv4 prefix"; 3362 } 3363 container delay-metric { 3364 leaf metric { 3365 type std-metric; 3366 description "IS-IS delay metric for IPv4 prefix"; 3367 } 3368 leaf supported { 3369 type boolean; 3370 default "false"; 3371 description 3372 "Indicates whether IS-IS delay metric is supported."; 3373 } 3374 description "IS-IS delay metric container."; 3375 } 3376 container expense-metric { 3377 leaf metric { 3378 type std-metric; 3379 description "IS-IS expense metric for IPv4 prefix"; 3380 } 3381 leaf supported { 3382 type boolean; 3383 default "false"; 3384 description 3385 "Indicates whether IS-IS delay metric is supported."; 3386 } 3387 description "IS-IS expense metric container."; 3388 } 3389 container error-metric { 3390 leaf metric { 3391 type std-metric; 3392 description 3393 "This leaf describes the IS-IS error metric value"; 3394 } 3395 leaf supported { 3396 type boolean; 3397 default "false"; 3398 description "IS-IS error metric for IPv4 prefix"; 3399 } 3400 description "IS-IS error metric container."; 3401 } 3402 } 3404 grouping prefix-ipv4-extended { 3405 description 3406 "Grouping for attributes of an IPv4 extended prefix."; 3407 leaf up-down { 3408 type boolean; 3409 description "Value of up/down bit."; 3410 } 3411 leaf ip-prefix { 3412 type inet:ipv4-address; 3413 description "IPv4 prefix address"; 3414 } 3415 leaf prefix-len { 3416 type uint8; 3417 description "IPv4 prefix length (in bits)"; 3418 } 3420 leaf metric { 3421 type wide-metric; 3422 description "IS-IS wide metric value"; 3423 } 3424 leaf-list tag { 3425 type uint32; 3426 description 3427 "List of 32-bit tags associated with the IPv4 prefix."; 3428 } 3429 leaf-list tag64 { 3430 type uint64; 3431 description 3432 "List of 32-bit tags associated with the IPv4 prefix."; 3433 } 3434 uses prefix-attributes-extension; 3435 } 3437 grouping prefix-ipv6-extended { 3438 description "Grouping for attributes of an IPv6 prefix."; 3439 leaf up-down { 3440 type boolean; 3441 description "Value of up/down bit."; 3442 } 3443 leaf ip-prefix { 3444 type inet:ipv6-address; 3445 description "IPv6 prefix address"; 3446 } 3447 leaf prefix-len { 3448 type uint8; 3449 description "IPv4 prefix length (in bits)"; 3450 } 3451 leaf metric { 3452 type wide-metric; 3453 description "IS-IS wide metric value"; 3454 } 3455 leaf-list tag { 3456 type uint32; 3457 description 3458 "List of 32-bit tags associated with the IPv4 prefix."; 3459 } 3460 leaf-list tag64 { 3461 type uint64; 3462 description 3463 "List of 32-bit tags associated with the IPv4 prefix."; 3464 } 3465 uses prefix-attributes-extension; 3466 } 3468 grouping neighbor-extended { 3469 description 3470 "Grouping for attributes of an IS-IS extended neighbor."; 3471 leaf neighbor-id { 3472 type system-id; 3473 description "System-id of the extended neighbor."; 3474 } 3475 leaf metric { 3476 type wide-metric; 3477 description "IS-IS wide metric for extended neighbor"; 3478 } 3480 } 3482 grouping neighbor { 3483 description "IS-IS standard neighbor grouping."; 3484 leaf neighbor-id { 3485 type system-id; 3486 description "IS-IS neighbor system-id"; 3487 } 3488 leaf i-e { 3489 type boolean; 3490 description 3491 "Internal or External (I/E) Metric bit value"; 3492 } 3493 leaf default-metric { 3494 type std-metric; 3495 description "IS-IS default metric value"; 3496 } 3497 container delay-metric { 3498 leaf metric { 3499 type std-metric; 3500 description "IS-IS delay metric value"; 3501 } 3502 leaf supported { 3503 type boolean; 3504 default "false"; 3505 description "IS-IS delay metric supported"; 3506 } 3507 description "IS-IS delay metric container"; 3508 } 3509 container expense-metric { 3510 leaf metric { 3511 type std-metric; 3512 description "IS-IS delay expense metric value"; 3513 } 3514 leaf supported { 3515 type boolean; 3516 default "false"; 3517 description "IS-IS delay expense metric supported"; 3518 } 3519 description "IS-IS delay expense metric container"; 3520 } 3521 container error-metric { 3522 leaf metric { 3523 type std-metric; 3524 description "IS-IS error metric value"; 3525 } 3526 leaf supported { 3527 type boolean; 3528 default "false"; 3529 description "IS-IS error metric supported"; 3530 } 3531 description "IS-IS error metric container"; 3532 } 3533 } 3535 grouping lsp-entry { 3536 description "IS-IS LSP database entry groupting"; 3538 leaf decoded-completed { 3539 type boolean; 3540 description "IS-IS LSP body fully decoded."; 3541 } 3542 leaf raw-data { 3543 type yang:hex-string; 3544 description 3545 "The hexadecial representation of the complete LSP in 3546 network-byte order (NBO) as received or originated."; 3547 } 3548 leaf lsp-id { 3549 type lsp-id; 3550 description "LSP ID of the LSP"; 3551 } 3552 leaf checksum { 3553 type uint16; 3554 description "LSP checksum"; 3555 } 3556 leaf remaining-lifetime { 3557 type uint16; 3558 units "seconds"; 3559 description 3560 "Remaining lifetime (in seconds) until LSP expiration."; 3561 } 3562 leaf sequence { 3563 type uint32; 3564 description 3565 "This leaf describes the sequence number of the LSP."; 3566 } 3567 leaf attributes { 3568 type bits { 3569 bit partitioned { 3570 description "Originator partition repair supported"; 3571 } 3572 bit attached-error { 3573 description 3574 "If set, the originator is attached to 3575 another area using the referred metric."; 3577 } 3578 bit attached-expense { 3579 description 3580 "If set, the originator is attached to 3581 another area using the referred metric."; 3582 } 3583 bit attached-delay { 3584 description 3585 "If set, the originator is attached to 3586 another area using the referred metric."; 3587 } 3588 bit attached-default { 3589 description 3590 "If set, the originator is attached to 3591 another area using the referred metric."; 3592 } 3593 bit overload { 3594 description 3595 "If set, the originator is overloaded, 3596 and must be avoided in path calculation."; 3597 } 3598 } 3599 description "LSP attributes"; 3600 } 3602 leaf-list ipv4-addresses { 3603 type inet:ipv4-address; 3604 description 3605 "List of IPv4 addresses of the IS-IS node - IS-IS 3606 reference is TLV 132."; 3607 } 3609 leaf-list ipv6-addresses { 3610 type inet:ipv6-address; 3611 description 3612 "List of IPv6 addresses of the IS-IS node - IS-IS 3613 reference is TLV 232."; 3614 } 3616 leaf ipv4-te-routerid { 3617 type inet:ipv4-address; 3618 description 3619 "IPv4 Traffic Engineering router ID of the IS-IS node - 3620 IS-IS reference is TLV 134."; 3621 } 3623 leaf ipv6-te-routerid { 3624 type inet:ipv6-address; 3625 description 3626 "IPv6 Traffic Engineering router ID of the IS-IS node - 3627 IS-IS reference is TLV 140."; 3628 } 3630 leaf-list protocol-supported { 3631 type uint8; 3632 description 3633 "List of supported protocols of the IS-IS node - 3634 IS-IS reference is TLV 129."; 3635 } 3637 leaf dynamic-hostname { 3638 type string; 3639 description 3640 "Host Name of the IS-IS node - IS-IS reference 3641 is TLV 137."; 3642 } 3644 container authentication { 3645 leaf authentication-type { 3646 type string; 3647 description 3648 "Authentication type to be used with IS-IS node."; 3649 } 3650 leaf authentication-key { 3651 type string; 3652 description 3653 "Authentication keyto be used. For security reasons, 3654 the authentication key MUST NOT be presented in 3655 plaintext format. It is recommended to use an MD5 3656 hash to present the authentication-key."; 3657 } 3658 description 3659 "IS-IS node authentication information container - 3660 IS-IS reference is TLV 10."; 3661 } 3663 container mt-entries { 3664 list topology { 3665 description 3666 "List of topologies supported"; 3668 leaf MT-ID { 3669 type uint16 { 3670 range "0 .. 4095"; 3671 } 3672 description 3673 "Multi-Topolgoy identifier of topology."; 3674 } 3676 leaf attributes { 3677 type bits { 3678 bit overload { 3679 description 3680 "If set, the originator is overloaded, 3681 and must be avoided in path calculation."; 3682 } 3683 bit attached { 3684 description 3685 "If set, the originator is attached to 3686 another area using the referred metric."; 3687 } 3688 } 3689 description 3690 "Attributes of the LSP for the associated 3691 topology."; 3692 } 3693 } 3694 description 3695 "IS-IS node topology information container - 3696 IS-IS reference is TLV 229."; 3697 } 3699 list router-capabilities { 3700 leaf flags { 3701 type bits { 3702 bit flooding { 3703 position 0; 3704 description 3705 "If the S bit is set, the IS-IS Router CAPABILITY 3706 TLV MUST be flooded across the entire routing 3707 domain. If the S bit is clear, the TLV MUST NOT 3708 be leaked between levels. This bit MUST NOT 3709 be altered during the TLV leaking."; 3710 } 3711 bit down { 3712 position 1; 3713 description 3714 "When the IS-IS Router CAPABILITY TLV is leaked 3715 from level-2 to level-1, the D bit MUST be set. 3716 Otherwise, this bit MUST be clear. IS-IS Router 3717 capability TLVs with the D bit set MUST NOT be 3718 leaked from level-1 to level-2 in to prevent 3719 TLV looping."; 3720 } 3722 } 3723 description "Router Capability Flags"; 3724 } 3725 container node-tags { 3726 if-feature node-tag; 3727 list node-tag { 3728 leaf tag { 3729 type uint32; 3730 description "Node tag value."; 3731 } 3732 description "List of tags."; 3733 } 3734 description "Node Tag container"; 3735 } 3737 leaf binary { 3738 type binary; 3739 description 3740 "Binary encoding of the IS-IS node capabilities"; 3741 } 3742 description 3743 "IS-IS node capabilities container. This container may 3744 be extended with detailed information - IS-IS 3745 reference is TLV 242."; 3746 } 3748 container is-neighbor { 3749 list neighbor { 3750 uses neighbor; 3751 description "List of neighbors."; 3752 } 3753 description 3754 "Standard IS neighbors container - IS-IS reference is 3755 TLV 2."; 3756 } 3758 container extended-is-neighbor { 3759 list neighbor { 3760 uses neighbor-extended; 3761 description 3762 "List of extended IS neighbors"; 3763 } 3764 description 3765 "Standard IS extended neighbors container - IS-IS 3766 reference is TLV 22"; 3767 } 3769 container ipv4-internal-reachability { 3770 list prefixes { 3771 uses prefix-ipv4-std; 3772 description "List of prefixes."; 3773 } 3774 description 3775 "IPv4 internal reachability information container - IS-IS 3776 reference is TLV 128."; 3777 } 3779 container ipv4-external-reachability { 3780 list prefixes { 3781 uses prefix-ipv4-std; 3782 description "List of prefixes."; 3783 } 3784 description 3785 "IPv4 external reachability information container - 3786 IS-IS reference is TLV 130."; 3787 } 3789 container extended-ipv4-reachability { 3790 list prefixes { 3791 uses prefix-ipv4-extended; 3792 description "List of prefixes."; 3793 } 3794 description 3795 "IPv4 extended reachability information container - 3796 IS-IS reference is TLV 135."; 3797 } 3799 container mt-is-neighbor { 3800 list neighbor { 3801 leaf mt-id { 3802 type uint16 { 3803 range "0 .. 4095"; 3804 } 3805 description "Multi-topology (MT) identifier"; 3806 } 3807 uses neighbor-extended; 3808 description "List of neighbors."; 3809 } 3810 description 3811 "IS-IS multi-topology neighbor container - IS-IS 3812 reference is TLV 223."; 3813 } 3815 container mt-extended-ipv4-reachability { 3816 list prefixes { 3817 leaf mt-id { 3818 type uint16 { 3819 range "0 .. 4095"; 3820 } 3821 description "Multi-topology (MT) identifier"; 3822 } 3823 uses prefix-ipv4-extended; 3824 description "List of extended prefixes."; 3825 } 3826 description 3827 "IPv4 multi-topolgy (MT) extended reachability 3828 information container - IS-IS reference is TLV 235."; 3829 } 3831 container mt-ipv6-reachability { 3832 list prefixes { 3833 leaf MT-ID { 3834 type uint16 { 3835 range "0 .. 4095"; 3836 } 3837 description "Multi-topology (MT) identifier"; 3838 } 3839 uses prefix-ipv6-extended; 3840 description "List of IPv6 extended prefixes."; 3841 } 3842 description 3843 "IPv6 multi-topolgy (MT) extended reachability 3844 information container - IS-IS reference is TLV 237."; 3845 } 3847 container ipv6-reachability { 3848 list prefixes { 3849 uses prefix-ipv6-extended; 3850 description "List of IPv6 prefixes."; 3851 } 3852 description 3853 "IPv6 reachability information container - IS-IS 3854 reference is TLV 236."; 3855 } 3856 } 3858 grouping lsdb { 3859 description "Link State Database (LSDB) grouping"; 3860 container database { 3861 config false; 3862 list level-db { 3863 key level; 3865 leaf level { 3866 type level-number; 3867 description "LSDB level number (1 or 2)"; 3868 } 3869 list lsp { 3870 key lsp-id; 3871 uses lsp-entry; 3872 description "List of LSPs in LSDB"; 3873 } 3874 description "LSP list for LSDB level container"; 3875 } 3876 description "IS-IS Link State database container"; 3877 } 3878 } 3880 /* Augmentations */ 3882 augment "/rt:routing/" 3883 +"rt:ribs/rt:rib/rt:routes/rt:route" { 3884 when "rt:source-protocol = 'isis:isis'" { 3885 description "IS-IS-specific route attributes."; 3886 } 3887 uses route-content; 3888 description 3889 "This augments route object in RIB with IS-IS-specific 3890 attributes."; 3891 } 3893 augment "/if:interfaces/if:interface" { 3894 leaf clns-mtu { 3895 type uint16; 3896 description "CLNS MTU of the interface"; 3897 } 3898 description "ISO interface config."; 3899 } 3901 augment "/rt:routing/rt:control-plane-protocols/" 3902 +"rt:control-plane-protocol" { 3903 when "rt:type = 'isis:isis'" { 3904 description 3905 "This augment is only valid when routing protocol 3906 instance type is 'isis'"; 3907 } 3908 description 3909 "This augments a routing protocol instance with IS-IS 3910 specific parameters."; 3911 container isis { 3912 must "count(area-address) > 0" { 3913 error-message 3914 "At least one area-address must be configured."; 3915 description 3916 "Enforce configuration of at least one area."; 3917 } 3919 uses isis-global-cfg; 3920 container fast-reroute { 3921 if-feature fast-reroute; 3922 uses fast-reroute-global-cfg; 3923 uses fast-reroute-global-state; 3924 description 3925 "IP Fast ReRoute (IPFRR) global container"; 3926 } 3927 container spf-control { 3928 container ietf-spf-delay { 3929 if-feature ietf-spf-delay; 3930 uses ietf-spf-delay-cfg; 3931 uses ietf-spf-delay-state; 3932 description "IETF SPF delay algorithm container"; 3933 } 3934 description 3935 "SPF computation-related information container"; 3936 } 3937 container topologies { 3938 if-feature multi-topology; 3939 list topology { 3940 key "name"; 3941 leaf enable { 3942 type boolean; 3943 description "Topology enable configuration"; 3944 } 3945 leaf name { 3946 type leafref { 3947 path "../../../../../../rt:ribs/rt:rib/rt:name"; 3948 } 3949 description 3950 "Routing Information Base (RIB) corresponding 3951 to topology."; 3952 } 3954 uses isis-global-topologies-cfg; 3956 description "List of topologies"; 3957 } 3958 description "Multi-topology container"; 3959 } 3960 container interfaces { 3961 list interface { 3962 key "name"; 3963 leaf name { 3964 type if:interface-ref; 3966 description 3967 "Reference to the interface within 3968 the routing-instance."; 3969 } 3970 uses isis-if-cfg; 3971 container fast-reroute { 3972 if-feature fast-reroute; 3973 uses fast-reroute-if-cfg; 3974 description 3975 "IP Fast ReRoute (IPFRR) interface container"; 3976 } 3977 container topologies { 3978 if-feature multi-topology; 3979 list topology { 3980 key name; 3982 leaf name { 3983 type leafref { 3984 path "../../../../../../../../"+ 3985 "rt:ribs/rt:rib/rt:name"; 3986 } 3988 description 3989 "Routing Information Base (RIB) corresponding 3990 to topology."; 3991 } 3992 uses isis-if-topologies-cfg; 3993 description "List of interface topologies"; 3994 } 3995 description "Multi-topology container"; 3996 } 3997 uses adjacency-state; 3998 uses event-counters; 3999 uses packet-counters; 4000 description "List of IS-IS interfaces."; 4001 } 4002 description 4003 "IS-IS interface specific configuration container"; 4004 } 4005 uses spf-log; 4006 uses lsp-log; 4007 uses hostname-db; 4008 uses lsdb; 4009 uses local-rib; 4010 uses system-counters; 4012 description 4013 "IS-IS configuration/state top-level container"; 4014 } 4015 } 4017 /* RPC methods */ 4019 rpc clear-adjacency { 4020 description 4021 "This RPC request clears a particular set of IS-IS 4022 adjacencies. If the operation fails due to an internal 4023 reason, then the error-tag and error-app-tag should be 4024 set indicating the reason for the failure."; 4025 input { 4027 leaf routing-protocol-instance-name { 4028 type instance-state-ref; 4029 mandatory "true"; 4030 description 4031 "Name of the IS-IS protocol instance whose IS-IS 4032 information is being queried. 4034 If the corresponding IS-IS instance doesn't exist, 4035 then the operation will fail with an error-tag of 4036 'data-missing' and an error-app-tag of 4037 'routing-protocol-instance-not-found'."; 4038 } 4039 leaf level { 4040 type level; 4041 description 4042 "IS-IS level of the adjacency to be cleared. If the 4043 IS-IS level is level-1-2, both level 1 and level 2 4044 adjacencies would be cleared. 4046 If the value provided is different from the one 4047 authorized in the enum type, then the operation 4048 SHALL fail with an error-tag of 'data-missing' and 4049 an error-app-tag of 'bad-isis-level'."; 4050 } 4051 leaf interface { 4052 type string; 4053 description 4054 "IS-IS interface name. 4056 If the corresponding IS-IS interface doesn't exist, 4057 then the operation SHALL fail with an error-tag of 4058 'data-missing' and an error-app-tag of 4059 'isis-interface-not-found'."; 4060 } 4061 } 4062 } 4064 rpc clear-database { 4065 description 4066 "This RPC request clears a particular IS-IS database. If 4067 the operation fails for an IS-IS internal reason, then 4068 the error-tag and error-app-tag should be set 4069 indicating the reason for the failure."; 4070 input { 4071 leaf routing-protocol-instance-name { 4072 type instance-state-ref; 4073 mandatory "true"; 4074 description 4075 "Name of the IS-IS protocol instance whose IS-IS 4076 database(s) is/are being cleard. 4078 If the corresponding IS-IS instance doesn't exist, 4079 then the operation will fail with an error-tag of 4080 'data-missing' and an error-app-tag of 4081 'routing-protocol-instance-not-found'."; 4082 } 4083 leaf level { 4084 type level; 4085 description 4086 "IS-IS level of the adjacency to be cleared. If the 4087 IS-IS level is level-1-2, both level 1 and level 2 4088 databases would be cleared. 4090 If the value provided is different from the one 4091 authorized in the enum type, then the operation 4092 SHALL fail with an error-tag of 'data-missing' and 4093 an error-app-tag of 'bad-isis-level'."; 4094 } 4095 } 4096 } 4098 /* Notifications */ 4099 notification database-overload { 4100 uses notification-instance-hdr; 4102 leaf overload { 4103 type enumeration { 4104 enum off { 4105 description 4106 "Indicates IS-IS instance has left overload state"; 4107 } 4108 enum on { 4109 description 4110 "Indicates IS-IS instance has entered overload state"; 4111 } 4113 } 4114 description "New overload state of the IS-IS instance"; 4115 } 4116 description 4117 "This notification is sent when an IS-IS instance 4118 overload state changes."; 4119 } 4121 notification lsp-too-large { 4122 uses notification-instance-hdr; 4123 uses notification-interface-hdr; 4125 leaf pdu-size { 4126 type uint32; 4127 description "Size of the LSP PDU"; 4128 } 4129 leaf lsp-id { 4130 type lsp-id; 4131 description "LSP ID"; 4132 } 4133 description 4134 "This notification is sent when we attempt to propagate 4135 an LSP that is larger than the dataLinkBlockSize for the 4136 circuit. The notification generation must be throttled 4137 with at least 5 seconds betweeen successive 4138 notifications."; 4139 } 4141 notification if-state-change { 4142 uses notification-instance-hdr; 4143 uses notification-interface-hdr; 4145 leaf state { 4146 type if-state-type; 4147 description "Interface state."; 4148 } 4149 description 4150 "This notification is sent when an interface 4151 state change is detected."; 4152 } 4154 notification corrupted-lsp-detected { 4155 uses notification-instance-hdr; 4156 leaf lsp-id { 4157 type lsp-id; 4158 description "LSP ID"; 4159 } 4160 description 4161 "This notification is sent when we find that 4162 an LSP that was stored in memory has become 4163 corrupted."; 4164 } 4166 notification attempt-to-exceed-max-sequence { 4167 uses notification-instance-hdr; 4168 leaf lsp-id { 4169 type lsp-id; 4170 description "LSP ID"; 4171 } 4172 description 4173 "This notification is sent when the system 4174 wraps the 32-bit sequence counter of an LSP."; 4175 } 4177 notification id-len-mismatch { 4178 uses notification-instance-hdr; 4179 uses notification-interface-hdr; 4181 leaf pdu-field-len { 4182 type uint8; 4183 description "Size of the ID length in the received PDU"; 4184 } 4185 leaf raw-pdu { 4186 type binary; 4187 description "Received raw PDU."; 4188 } 4189 description 4190 "This notification is sent when we receive a PDU 4191 with a different value for the System ID length. 4192 The notification generation must be throttled 4193 with at least 5 seconds betweeen successive 4194 notifications."; 4196 } 4198 notification max-area-addresses-mismatch { 4199 uses notification-instance-hdr; 4200 uses notification-interface-hdr; 4202 leaf max-area-addresses { 4203 type uint8; 4204 description "Received number of supported areas"; 4205 } 4206 leaf raw-pdu { 4207 type binary; 4208 description "Received raw PDU."; 4209 } 4210 description 4211 "This notification is sent when we receive a PDU 4212 with a different value for the Maximum Area Addresses. 4213 The notification generation must be throttled 4214 with at least 5 seconds betweeen successive 4215 notifications."; 4216 } 4218 notification own-lsp-purge { 4219 uses notification-instance-hdr; 4220 uses notification-interface-hdr; 4221 leaf lsp-id { 4222 type lsp-id; 4223 description "LSP ID"; 4224 } 4225 description 4226 "This notification is sent when the system receives 4227 a PDU with its own system ID and zero age."; 4228 } 4230 notification sequence-number-skipped { 4231 uses notification-instance-hdr; 4232 uses notification-interface-hdr; 4233 leaf lsp-id { 4234 type lsp-id; 4235 description "LSP ID"; 4236 } 4237 description 4238 "This notification is sent when the system receives a 4239 PDU with its own system ID and different contents. The 4240 system has to reoriginate the LSP with a higher sequence 4241 number."; 4242 } 4243 notification authentication-type-failure { 4244 uses notification-instance-hdr; 4245 uses notification-interface-hdr; 4246 leaf raw-pdu { 4247 type binary; 4248 description "Received raw PDU."; 4249 } 4250 description 4251 "This notification is sent when the system receives a 4252 PDU with the wrong authentication type field. 4253 The notification generation must be throttled 4254 with at least 5 seconds betweeen successive 4255 notifications."; 4256 } 4258 notification authentication-failure { 4259 uses notification-instance-hdr; 4260 uses notification-interface-hdr; 4261 leaf raw-pdu { 4262 type binary; 4263 description "Received raw PDU."; 4264 } 4265 description 4266 "This notification is sent when the system receives 4267 a PDU with the wrong authentication information. 4268 The notification generation must be throttled with 4269 with at least 5 seconds betweeen successive 4270 notifications."; 4271 } 4273 notification version-skew { 4274 uses notification-instance-hdr; 4275 uses notification-interface-hdr; 4276 leaf protocol-version { 4277 type uint8; 4278 description "Protocol version received in the PDU."; 4279 } 4280 leaf raw-pdu { 4281 type binary; 4282 description "Received raw PDU."; 4283 } 4284 description 4285 "This notification is sent when the system receives a 4286 PDU with a different protocol version number. 4287 The notification generation must be throttled 4288 with at least 5 seconds betweeen successive 4289 notifications."; 4290 } 4291 notification area-mismatch { 4292 uses notification-instance-hdr; 4293 uses notification-interface-hdr; 4294 leaf raw-pdu { 4295 type binary; 4296 description "Received raw PDU."; 4297 } 4298 description 4299 "This notification is sent when the system receives a 4300 Hello PDU from an IS that does not share any area 4301 address. The notification generation must be throttled 4302 with at least 5 seconds betweeen successive 4303 notifications."; 4304 } 4306 notification rejected-adjacency { 4307 uses notification-instance-hdr; 4308 uses notification-interface-hdr; 4309 leaf raw-pdu { 4310 type binary; 4311 description 4312 "Received raw PDU."; 4313 } 4314 leaf reason { 4315 type string; 4316 description 4317 "The system may provide a reason to reject the 4318 adjacency. If the reason is not available, 4319 an empty string will be returned."; 4320 } 4321 description 4322 "This notification is sent when the system receives a 4323 Hello PDU from an IS but does not establish an adjacency 4324 for some reason. The notification generation must be 4325 throttled with at least 5 seconds betweeen successive 4326 notifications."; 4327 } 4329 notification protocols-supported-mismatch { 4330 uses notification-instance-hdr; 4331 uses notification-interface-hdr; 4332 leaf raw-pdu { 4333 type binary; 4334 description "Received raw PDU."; 4335 } 4336 leaf-list protocols { 4337 type uint8; 4338 description 4339 "List of protocols supported by the remote system."; 4340 } 4341 description 4342 "This notification is sent when the system receives a 4343 non-pseudonode LSP that has no matching protocols 4344 supported. The notification generation must be throttled 4345 with at least 5 seconds betweeen successive 4346 notifications."; 4347 } 4349 notification lsp-error-detected { 4350 uses notification-instance-hdr; 4351 uses notification-interface-hdr; 4352 leaf lsp-id { 4353 type lsp-id; 4354 description "LSP ID."; 4355 } 4356 leaf raw-pdu { 4357 type binary; 4358 description "Received raw PDU."; 4359 } 4360 leaf error-offset { 4361 type uint32; 4362 description 4363 "If the problem is a malformed TLV, the error-offset 4364 points to the start of the TLV. If the problem is with 4365 the LSP header, the error-offset points to the errant 4366 byte"; 4367 } 4368 leaf tlv-type { 4369 type uint8; 4370 description 4371 "If the problem is a malformed TLV, the tlv-type is set 4372 to the type value of the suspicious TLV. Otherwise, 4373 this leaf is not present."; 4374 } 4375 description 4376 "This notification is sent when the system receives an 4377 ' LSP with a parse error. The notification generation must 4378 be throttled with at least 5 seconds betweeen successive 4379 notifications."; 4380 } 4382 notification adjacency-state-change { 4383 uses notification-instance-hdr; 4384 uses notification-interface-hdr; 4385 leaf neighbor { 4386 type string; 4387 description 4388 "Name of the neighbor. If the name of the neighbor is 4389 not available, it is not returned."; 4390 } 4391 leaf neighbor-system-id { 4392 type system-id; 4393 description "Neighbor system-id"; 4394 } 4395 leaf state { 4396 type adj-state-type; 4398 description "New state of the IS-IS adjacency."; 4399 } 4400 leaf reason { 4401 type string; 4402 description 4403 "If the adjacency is going to DOWN, this leaf provides 4404 a reason for the adjacency going down. The reason is 4405 provided as a text. If the adjacency is going to UP, no 4406 reason is provided."; 4407 } 4408 description 4409 "This notification is sent when an IS-IS adjacency 4410 moves to Up state or to Down state."; 4411 } 4413 notification lsp-received { 4414 uses notification-instance-hdr; 4415 uses notification-interface-hdr; 4417 leaf lsp-id { 4418 type lsp-id; 4419 description "LSP ID"; 4420 } 4421 leaf sequence { 4422 type uint32; 4423 description "Sequence number of the received LSP."; 4424 } 4425 leaf received-timestamp { 4426 type yang:timestamp; 4428 description "Timestamp when the LSP was received."; 4429 } 4430 leaf neighbor-system-id { 4431 type system-id; 4432 description "Neighbor system-id of LSP sender"; 4433 } 4434 description 4435 "This notification is sent when an LSP is received. 4436 The notification generation must be throttled with at 4437 least 5 seconds betweeen successive notifications."; 4438 } 4440 notification lsp-generation { 4441 uses notification-instance-hdr; 4443 leaf lsp-id { 4444 type lsp-id; 4445 description "LSP ID"; 4446 } 4447 leaf sequence { 4448 type uint32; 4449 description "Sequence number of the received LSP."; 4450 } 4451 leaf send-timestamp { 4452 type yang:timestamp; 4454 description "Timestamp when our LSP was regenerated."; 4455 } 4456 description 4457 "This notification is sent when an LSP is regenerated. 4458 The notification generation must be throttled with at 4459 least 5 seconds betweeen successive notifications."; 4460 } 4461 } 4462 4464 7. Security Considerations 4466 Configuration and state data defined in this document are designed to 4467 be accessed via the NETCONF protocol [RFC6241]. 4469 As IS-IS is an IGP protocol (critical piece of the network), ensuring 4470 stability and security of the protocol is mandatory for the network 4471 service. 4473 Authors recommends to implement NETCONF access control model 4474 ([RFC6536]) to restrict access to all or part of the configuration to 4475 specific users. Access control to RPCs is also critical as RPC 4476 allows to clear protocol datastructures that would definitively 4477 impact the network service. This kind of RPC needs only to be used 4478 in specific cases by well-known experienced users. 4480 Authors consider that all the configuration is considered as 4481 sensitive/vulnerable as well as RPCs. But security teams can decide 4482 to open some part of the configuration to less experienced users 4483 depending on the internal organization, for example: 4485 o User FullWrite: would access to the whole data model. This kind 4486 of profile may be restricted to few experienced people. 4488 o User PartialWrite: would only access to configuration part within 4489 /isis/interfaces/interface. So this kind of profile is restricted 4490 to creation/modification/deletion of interfaces. This profile 4491 does not have access to RPC. 4493 o User Read: would only access to the operational states. 4495 Unauthorized access to configuration or RPC may cause high damages to 4496 the network service. 4498 The "isis/database" may contain authentication information. As 4499 presented in the description of the "/isis/database/level- 4500 1/lsp/authentication/authentication-key", the authentication MUST 4501 never be displayed in a plaintext format for security reason. 4502 Authors recommend the usage of MD5 to display or return the 4503 authentication-key. 4505 Some authentication-key may also be required in the "isis" writable 4506 container. When configuring IS-IS using the NETCONF protocol, 4507 authors recommends the usage of secure transport of NETCONF using SSH 4508 ([RFC6242]). 4510 8. Contributors 4512 Authors would like to thank Kiran Agrahara Sreenivasa, Dean 4513 Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the 4514 draft. 4516 9. Acknowledgements 4518 TBD. 4520 10. IANA Considerations 4522 The IANA is requested to assign two new URIs from the IETF XML 4523 registry ([RFC3688]). Authors are suggesting the following URI: 4525 URI: urn:ietf:params:xml:ns:yang:ietf-isis 4526 Registrant Contact: IS-IS WG 4527 XML: N/A, the requested URI is an XML namespace 4529 This document also requests one new YANG module name in the YANG 4530 Module Names registry ([RFC6020]) with the following suggestion: 4532 name: ietf-isis 4533 namespace: urn:ietf:params:xml:ns:yang:ietf-isis 4534 prefix: isis 4535 reference: RFC XXXX 4537 11. Change log for ietf-isis YANG module 4539 11.1. From version -19 to version -20 4541 o Moved to Yang 1.1 4543 o Lower case enumerations 4545 o Add RFC references to features 4547 o Remove segment-routing feature 4549 o Modified BFD activation modeling 4551 11.2. From version -18 to version -19 4553 o Align with draft-ietf-netmod-rfc8022bis. 4555 o Modify address family types as per draft-ietf-rtgwg-routing-types- 4556 17. 4558 11.3. From version -17 to version -18 4560 o NMDA compliancy. 4562 o Set some default values. 4564 o Align with iana-rt-types module. 4566 11.4. From version -16 to version -17 4568 o Cosmetic fixes. 4570 o Use of rt-types model. 4572 11.5. From version -15 to version -16 4574 o Alignment with last IETF key chain model. 4576 o lsp-log "change" leaf moved as an identity. 4578 o Incremental SPF removed from spf-log types. 4580 11.6. From version -14 to version -15 4582 o Alignment with OSPF model done: 4584 * Added spf-control container with IETF SPF delay algorithm as a 4585 feature. 4587 * Added graceful-restart options. 4589 * Added nsr as a feature. 4591 * Removed per topology FRR. Need to be augmented if necessary. 4593 * Created an ldp container within mpls. 4595 * Renamed igp-ldp-sync to igp-sync. 4597 * Added auto-cost container. 4599 * Moved reference-bandwidth under auto-cost container. 4601 * Added IS-IS local RIB as operational state. 4603 * Added decode-completed and raw-data leaves in the LSDB model. 4605 * Modified the notification header. 4607 11.7. From version -13 to version -14 4609 o Segment Routing extensions are now in a separate document. 4611 11.8. From version -12 to version -13 4613 o Move feature nlpid-control to container rather than list. 4615 o Rename multi-topology to topologies to align with OSPF. 4617 o Rename bfd/enabled to bfd/enable for consistency reason. 4619 o Add support for NSR with a feature. 4621 11.9. From version -09 to version -12 4623 o Rename node-tag container to node-tags. 4625 11.10. From version -08 to version -09 4627 o Added container before af list. 4629 o Added container before topology list. 4631 o Aligned LFA if per level cfg. 4633 o Align to draft-ietf-netmod-routing-cfg-23. 4635 11.11. From version -07 to version -08 4637 o Remove selector from system-id type. 4639 o Add some default values. 4641 o Moved lists to containers+groupings for per level configuration. 4643 o remove routing-instance as per core routing model v21. 4645 o added BFD leaf (no more BFD protocol model). 4647 o changed keychain module reference. 4649 11.12. From version -05 to version -07 4651 o Move Overload config from list to container. 4653 o Move Overload-max-metric config from list to container. 4655 o Move preference config from list to container. 4657 o Add Node flag in config. 4659 o Removed BFD config => moved to isis-bfd module. 4661 o Remove call to routing policy model. 4663 11.13. From version -03 to version -05 4665 o Correct invalid references to previous versions of core routing 4666 model. 4668 o Remove BFD config and replace by groupings from ietf-bfd. 4670 o Adding routing-policy support through routing-policy model. 4672 11.14. From version -02 to version -03 4674 o Reviewed config and op state groupings. 4676 o Add default value to lfa candidate-disabled. 4678 o Add enable leaf to isis container to reflect admin state. 4680 o Move to VRF centric only. 4682 o Segment routing is part os a separate module. 4684 11.15. From version -01 to version -02 4686 o Adding IPFRR. 4688 o Adding igp-ldp-sync. 4690 o Adding segment-routing. 4692 o Adding instance reference to operational states. 4694 o Move AF type from string to identity. 4696 o Updated router-capability in LSDB description. 4698 o packet counters moved to interface-packet-counters. 4700 o Added modification information in lsp-log. 4702 o Removing igp-ldp-sync timer in IS-IS. 4704 o Defining hierarchy for operational states. 4706 o Adding clns-mtu. 4708 o Adding key-chain. 4710 11.16. From version -00 to version -01 4712 o Interface metric move from af container to interface container. 4714 o Hello-padding on interface moved to hello-padding-disable with 4715 empty type. 4717 o three-way-handshake removed. 4719 o route preference changed to a choice. 4721 o csnp-authentication/psnp-authentication merged to authentication 4722 container. 4724 o lsp-gen-interval-exp-delay removed. 4726 o Added overload-max-metric feature. 4728 o overload-max-metric is in a separate container. 4730 o Change hello-padding to container. 4732 o Change bfd to container. 4734 o Make BFD a feature. 4736 o Create mpls-te container and put router-id inside. 4738 o Remove GR helper disable and timers. 4740 12. Normative References 4742 [I-D.ietf-netmod-routing-cfg] 4743 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 4744 Management", draft-ietf-netmod-routing-cfg-25 (work in 4745 progress), November 2016. 4747 [I-D.ietf-rtgwg-yang-key-chain] 4748 Lindem, A., Qu, Y., Yeung, D., Chen, I., and Z. Zhang, 4749 "Routing Key Chain YANG Data Model", draft-ietf-rtgwg- 4750 yang-key-chain-24 (work in progress), April 2017. 4752 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4753 Requirement Levels", BCP 14, RFC 2119, 4754 DOI 10.17487/RFC2119, March 1997, . 4757 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 4758 DOI 10.17487/RFC3688, January 2004, . 4761 [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi 4762 Topology (MT) Routing in Intermediate System to 4763 Intermediate Systems (IS-ISs)", RFC 5120, 4764 DOI 10.17487/RFC5120, February 2008, . 4767 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for 4768 IP Fast Reroute: Loop-Free Alternates", RFC 5286, 4769 DOI 10.17487/RFC5286, September 2008, . 4772 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP 4773 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March 4774 2009, . 4776 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 4777 the Network Configuration Protocol (NETCONF)", RFC 6020, 4778 DOI 10.17487/RFC6020, October 2010, . 4781 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 4782 and A. Bierman, Ed., "Network Configuration Protocol 4783 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 4784 . 4786 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 4787 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 4788 . 4790 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 4791 Protocol (NETCONF) Access Control Model", RFC 6536, 4792 DOI 10.17487/RFC6536, March 2012, . 4795 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. 4796 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", 4797 RFC 7490, DOI 10.17487/RFC7490, April 2015, 4798 . 4800 Appendix A. Example of IS-IS configuration in XML 4802 This section gives an example of configuration of an IS-IS instance 4803 on a device. The example is written in XML. 4805 4806 4807 4808 SLI 4809 1.1.1.1 4810 4811 4812 4813 Loopback0 4814 4815 4816 Eth1 4817 4818 4819 4820 4821 ISIS 4822 4823 isis:isis 4824 4825 true 4826 level-2 4827 87FC.FCDF.4432 4828 49.0001 4829 4830 1.1.1.1 4831 4832 65535 4833 65000 4834 4835 wide 4836 4837 4838 111111 4839 4840 4841 4842 ipv4-unicast 4843 true 4844 4845 4846 4847 4848 Loopback0 4849 200 4850 4851 0 4852 4853 true 4854 4855 4856 Eth1 4857 level-2 4858 point-to-point 4859 4860 4861 167890 4862 4864 4865 4866 4867 4868 4869 4870 4871 4872 Loopback0 4873 4874 4875 4876 4877 4878
4879 1.1.1.1 4880 32 4881
4882
4884
4885 4886 Eth1 4887 4888 4889 4890 4891 4892
4893 10.0.0.1 4894 30 4895
4896
4898
4899
4900
4902 Authors' Addresses 4904 Stephane Litkowski 4905 Orange 4907 Email: stephane.litkowski@orange.com 4908 Derek Yeung 4909 Arrcus, Inc 4911 Email: derek@arrcus.com 4913 Acee Lindem 4914 Cisco Systems 4916 Email: acee@cisco.com 4918 Jeffrey Zhang 4919 Juniper Networks 4921 Email: zzhang@juniper.net 4923 Ladislav Lhotka 4924 CZ.NIC 4926 Email: lhotka@nic.cz