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