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