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