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