idnits 2.17.1 draft-ietf-isis-yang-isis-cfg-11.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == The page length should not exceed 58 lines per page, but there was 1 longer page, the longest (page 22) being 71 lines Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 282 has weird spacing: '...ce-name ins...' == Line 287 has weird spacing: '...ce-name ins...' == Line 646 has weird spacing: '...--rw af ide...' == Line 757 has weird spacing: '...ce-name ins...' == Line 762 has weird spacing: '...ce-name ins...' == (12 more instances...) -- The document date (September 21, 2016) is 2767 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) == Unused Reference: 'RFC5880' is defined on line 5734, but no explicit reference was found in the text == Outdated reference: A later version (-25) exists of draft-ietf-netmod-routing-cfg-23 == Outdated reference: A later version (-24) exists of draft-ietf-rtgwg-yang-key-chain-09 == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-03 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 1 error (**), 0 flaws (~~), 12 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: March 25, 2017 A. Lindem 6 Cisco Systems 7 J. Zhang 8 Juniper Networks 9 L. Lhotka 10 CZ.NIC 11 September 21, 2016 13 YANG Data Model for IS-IS protocol 14 draft-ietf-isis-yang-isis-cfg-11 16 Abstract 18 This document defines a YANG data model that can be used to configure 19 and manage IS-IS protocol on network elements. It also defined an 20 extension module for segment routing configuration and operation. 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 March 25, 2017. 45 Copyright Notice 47 Copyright (c) 2016 IETF Trust and the persons identified as the 48 document authors. All rights reserved. 50 This document is subject to BCP 78 and the IETF Trust's Legal 51 Provisions Relating to IETF Documents 52 (http://trustee.ietf.org/license-info) in effect on the date of 53 publication of this document. Please review these documents 54 carefully, as they describe your rights and restrictions with respect 55 to this document. Code Components extracted from this document must 56 include Simplified BSD License text as described in Section 4.e of 57 the Trust Legal Provisions and are provided without warranty as 58 described in the Simplified BSD License. 60 Table of Contents 62 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 63 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 64 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 65 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9 66 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10 67 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 68 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12 69 2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 15 70 2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 15 71 2.7. Operational State . . . . . . . . . . . . . . . . . . . . 16 72 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 16 73 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 17 74 5. Segment Routing . . . . . . . . . . . . . . . . . . . . . . . 21 75 5.1. Segment Routing activation . . . . . . . . . . . . . . . 23 76 5.2. Advertising mapping server policy . . . . . . . . . . . . 24 77 5.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 24 78 6. Interaction with Other YANG Modules . . . . . . . . . . . . . 24 79 7. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 24 80 8. IS-IS Segment Routing YANG Module . . . . . . . . . . . . . . 104 81 9. Security Considerations . . . . . . . . . . . . . . . . . . . 119 82 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 120 83 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 120 84 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 120 85 13. Normative References . . . . . . . . . . . . . . . . . . . . 120 86 Appendix A. Example: NETCONF Reply . . . . . . . . . . . . 121 87 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 124 89 1. Introduction 91 This document defines a YANG data model for IS-IS routing protocol. 93 The data model covers configuration of an IS-IS routing protocol 94 instance as well as operational states. 96 1.1. Tree diagram 98 A simplified graphical representation of the data model is presented 99 in Section 2. 101 The meaning of the symbols in these diagrams is as follows: 103 o Brackets "[" and "]" enclose list keys. 105 o Curly braces "{" and "}" contain names of optional features that 106 make the corresponding node conditional. 108 o Abbreviations before data node names: "rw" means configuration 109 (read-write), and "ro" state data (read-only). 111 o Symbols after data node names: "?" means an optional node and "*" 112 denotes a "list" or "leaf-list". 114 o Parentheses enclose choice and case nodes, and case nodes are also 115 marked with a colon (":"). 117 o Ellipsis ("...") stands for contents of subtrees that are not 118 shown. 120 2. Design of the Data Model 122 The IS-IS YANG module is divided in two main "isis" containers that 123 are augmenting the "control-plane-protocol" lists in ietf-routing 124 module with specific IS-IS parameters. 126 One container contains the writable parameters, while the other 127 contains the operational states. 129 The figure below describe the overall structure of the isis YANG 130 module: 132 module: ietf-isis 133 augment /rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route: 134 +--ro metric? uint32 135 +--ro tag* uint64 136 +--ro route-type? enumeration 138 augment /if:interfaces/if:interface: 139 +--rw clns-mtu? uint16 140 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 141 : 142 +--rw isis 143 +--rw enable? boolean {admin-control}? 144 +--rw level-type? level 145 +--rw system-id? system-id 146 +--rw maximum-area-addresses? uint8 {maximum-area-addresses}? 147 +--rw area-address* area-address 148 +--rw mpls 149 | +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}? 150 | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}? 151 | +--rw igp-ldp-sync {igp-ldp-sync}? 152 +--rw reference-bandwidth? uint32 {reference-bandwidth}? 153 +--rw lsp-mtu? uint16 154 +--rw lsp-lifetime? uint16 155 +--rw lsp-refresh? uint16 {lsp-refresh}? 156 +--rw graceful-restart {graceful-restart}? 157 | +--rw enable? boolean 158 +--rw node-tag {node-tag}? 159 | +--rw node-tag* [tag] 160 | ... 161 +--rw authentication 162 | +--rw (authentication-type)? 163 | | ... 164 | +--rw level-1 165 | | ... 166 | +--rw level-2 167 | ... 168 +--rw metric-type 169 | +--rw value? enumeration 170 | +--rw level-1 171 | | ... 172 | +--rw level-2 173 | ... 174 +--rw default-metric 175 | +--rw value? wide-metric 176 | +--rw level-1 177 | | ... 178 | +--rw level-2 179 | ... 180 +--rw afs 181 | +--rw af* [af] {nlpid-control}? 182 | ... 183 +--rw preference 184 | +--rw (granularity)? 185 | ... 186 +--rw overload 187 | +--rw status? boolean 188 +--rw overload-max-metric {overload-max-metric}? 189 | +--rw timeout? uint16 190 +--rw fast-reroute {fast-reroute}? 191 | +--rw lfa {lfa}? 192 +--rw multi-topology {multi-topology}? 193 | +--rw topology* [name] 194 | ... 195 +--rw interfaces 196 +--rw interface* [name] 197 ... 198 augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-pr 199 otocol: 200 +--ro isis 201 +--ro enable? boolean {admin-control}? 202 +--ro level-type? level 203 +--ro system-id? system-id 204 +--ro maximum-area-addresses? uint8 {maximum-area-addresses}? 205 +--ro area-address* area-address 206 +--ro mpls 207 | +--ro ipv4-router-id? inet:ipv4-address {ipv4-router-id}? 208 | +--ro ipv6-router-id? inet:ipv6-address {ipv6-router-id}? 209 | +--ro igp-ldp-sync {igp-ldp-sync}? 210 +--ro reference-bandwidth? uint32 {reference-bandwidth}? 211 +--ro lsp-mtu? uint16 212 +--ro lsp-lifetime? uint16 213 +--ro lsp-refresh? uint16 {lsp-refresh}? 214 +--ro graceful-restart {graceful-restart}? 215 | +--ro enable? boolean 216 +--ro node-tag {node-tag}? 217 | +--ro node-tag* [tag] 218 | ... 219 +--ro authentication 220 | +--ro (authentication-type)? 221 | | ... 222 | +--ro level-1 223 | | ... 224 | +--ro level-2 225 | ... 226 +--ro metric-type 227 | +--ro value? enumeration 228 | +--ro level-1 229 | | ... 230 | +--ro level-2 231 | ... 232 +--ro default-metric 233 | +--ro value? wide-metric 234 | +--ro level-1 235 | | ... 237 | +--ro level-2 238 | ... 239 +--ro afs 240 | +--ro af* [af] {nlpid-control}? 241 | ... 242 +--ro preference 243 | +--ro (granularity)? 244 | ... 245 +--ro overload 246 | +--ro status? boolean 247 +--ro overload-max-metric {overload-max-metric}? 248 | +--ro timeout? uint16 249 +--ro fast-reroute {fast-reroute}? 250 | +--ro lfa {lfa}? 251 | +--ro protected-routes 252 | | ... 253 | +--ro nonprotected-routes 254 | | ... 255 | +--ro protection-statistics* [frr-protection-method] 256 | ... 257 +--ro topologies* [name] 258 | +--ro name leafref 259 | +--ro fast-route {fast-reroute}? 260 | ... 261 +--ro system-counters 262 | +--ro level* [level] 263 | ... 264 +--ro interfaces 265 | +--ro interface* [interface] 266 | ... 267 +--ro spf-log 268 | +--ro event* [id] 269 | ... 270 +--ro lsp-log 271 | +--ro event* [id] 272 | ... 273 +--ro database 274 | +--ro level-db* [level] 275 | ... 276 +--ro hostnames 277 +--ro hostname* [system-id] 278 ... 279 rpcs: 280 +---x clear-adjacency 281 | +--ro input 282 | +--ro routing-protocol-instance-name instance-state-ref 283 | +--ro level? level 284 | +--ro interface? string 285 +---x clear-database 286 +--ro input 287 +--ro routing-protocol-instance-name instance-state-ref 288 +--ro level? level 289 notifications: 290 +---n database-overload 291 | +--ro instance-name? string 292 | +--ro instance-level? level 293 | +--ro overload? enumeration 294 +---n lsp-too-large 295 | +--ro instance-name? string 296 | +--ro instance-level? level 297 | +--ro interface-name? string 298 | +--ro interface-level? level 299 | +--ro extended-circuit-id? extended-circuit-id 300 | +--ro pdu-size? uint32 301 | +--ro lsp-id? lsp-id 302 +---n corrupted-lsp-detected 303 | +--ro instance-name? string 304 | +--ro instance-level? level 305 | +--ro lsp-id? lsp-id 306 +---n attempt-to-exceed-max-sequence 307 | +--ro instance-name? string 308 | +--ro instance-level? level 309 | +--ro lsp-id? lsp-id 310 +---n id-len-mismatch 311 | +--ro instance-name? string 312 | +--ro instance-level? level 313 | +--ro interface-name? string 314 | +--ro interface-level? level 315 | +--ro extended-circuit-id? extended-circuit-id 316 | +--ro pdu-field-len? uint8 317 | +--ro raw-pdu? binary 318 +---n max-area-addresses-mismatch 319 | +--ro instance-name? string 320 | +--ro instance-level? level 321 | +--ro interface-name? string 322 | +--ro interface-level? level 323 | +--ro extended-circuit-id? extended-circuit-id 324 | +--ro max-area-addresses? uint8 325 | +--ro raw-pdu? binary 326 +---n own-lsp-purge 327 | +--ro instance-name? string 328 | +--ro instance-level? level 329 | +--ro interface-name? string 330 | +--ro interface-level? level 331 | +--ro extended-circuit-id? extended-circuit-id 332 | +--ro lsp-id? lsp-id 333 +---n sequence-number-skipped 334 | +--ro instance-name? string 335 | +--ro instance-level? level 336 | +--ro interface-name? string 337 | +--ro interface-level? level 338 | +--ro extended-circuit-id? extended-circuit-id 339 | +--ro lsp-id? lsp-id 340 +---n authentication-type-failure 341 | +--ro instance-name? string 342 | +--ro instance-level? level 343 | +--ro interface-name? string 344 | +--ro interface-level? level 345 | +--ro extended-circuit-id? extended-circuit-id 346 | +--ro raw-pdu? binary 347 +---n authentication-failure 348 | +--ro instance-name? string 349 | +--ro instance-level? level 350 | +--ro interface-name? string 351 | +--ro interface-level? level 352 | +--ro extended-circuit-id? extended-circuit-id 353 | +--ro raw-pdu? binary 354 +---n version-skew 355 | +--ro instance-name? string 356 | +--ro instance-level? level 357 | +--ro interface-name? string 358 | +--ro interface-level? level 359 | +--ro extended-circuit-id? extended-circuit-id 360 | +--ro protocol-version? uint8 361 | +--ro raw-pdu? binary 362 +---n area-mismatch 363 | +--ro instance-name? string 364 | +--ro instance-level? level 365 | +--ro interface-name? string 366 | +--ro interface-level? level 367 | +--ro extended-circuit-id? extended-circuit-id 368 | +--ro raw-pdu? binary 369 +---n rejected-adjacency 370 | +--ro instance-name? string 371 | +--ro instance-level? level 372 | +--ro interface-name? string 373 | +--ro interface-level? level 374 | +--ro extended-circuit-id? extended-circuit-id 375 | +--ro raw-pdu? binary 376 | +--ro reason? string 377 +---n protocols-supported-mismatch 378 | +--ro instance-name? string 379 | +--ro instance-level? level 380 | +--ro interface-name? string 381 | +--ro interface-level? level 382 | +--ro extended-circuit-id? extended-circuit-id 383 | +--ro raw-pdu? binary 384 | +--ro protocols* uint8 385 +---n lsp-error-detected 386 | +--ro instance-name? string 387 | +--ro instance-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 | +--ro raw-pdu? binary 393 | +--ro error-offset? uint32 394 | +--ro tlv-type? uint8 395 +---n adjacency-change 396 | +--ro instance-name? string 397 | +--ro instance-level? level 398 | +--ro interface-name? string 399 | +--ro interface-level? level 400 | +--ro extended-circuit-id? extended-circuit-id 401 | +--ro neighbor? string 402 | +--ro neighbor-system-id? system-id 403 | +--ro level? level 404 | +--ro state? enumeration 405 | +--ro reason? string 406 +---n lsp-received 407 | +--ro instance-name? string 408 | +--ro instance-level? level 409 | +--ro interface-name? string 410 | +--ro interface-level? level 411 | +--ro extended-circuit-id? extended-circuit-id 412 | +--ro lsp-id? lsp-id 413 | +--ro sequence? uint32 414 | +--ro received-timestamp? yang:timestamp 415 | +--ro neighbor-system-id? system-id 416 +---n lsp-generation 417 +--ro instance-name? string 418 +--ro instance-level? level 419 +--ro lsp-id? lsp-id 420 +--ro sequence? uint32 421 +--ro send-timestamp? yang:timestamp 423 2.1. IS-IS Configuration 425 The IS-IS configuration container is divided in: 427 o Global parameters. 429 o Per interface configuration (see Section 2.4). 431 It would to up to extension modules to augment this model to support 432 vendor specific parameters. 434 2.2. Multitopology Parameters 436 The "topologies" list is used to enable support of MT extensions for 437 specific address families. 439 Each topology should refer to an existing RIB. 441 Some specific parameters could be defined for a specific topology at 442 global level and also at interface level. 444 2.3. Per-Level Parameters 446 Some parameters support per level configuration. In this case, the 447 parameter is built as a container with three levels of configuration 448 : 450 o top level : corresponds to level-1-2, so the configuration applies 451 to both levels. 453 o level-1 : corresponds to level-1 specific parameter. 455 o level-2 : corresponds to level-2 specific parameter. 457 +--rw priority 458 | +--rw value? uint8 459 | +--rw level-1 460 | | +--rw value? uint8 461 | +--rw level-2 462 | +--rw value? uint8 464 Example : 466 467 250 468 469 100 470 471 472 200 473 474 476 An implementation SHOULD prefer a level specific parameter over 477 level-all parameter. As example, if priority is 100 for level-1, 200 478 for level-2 and 250 for top level configuration, the implementation 479 should use 100 for level-1 and 200 for level-2. 481 Some parameters like overload bit and route preference are not 482 modelled for per level configuration. If an implementation supports 483 per level configuration for such parameter, the implementation SHOULD 484 augment the current model by adding level-1 and level-2 containers 485 and reusing existing configuration groupings. 487 Example of augmentation : 489 augment "/rt:routing/" + 490 "rt:control-plane-protocols/rt:control-plane-protocol"+ 491 "/isis:isis/isis:overload" { 492 when "rt:type = 'isis:isis'" { 493 description 494 "This augment IS-IS routing protocol when used"; 495 } 496 description 497 "This augments IS-IS overload configuration 498 with per level configuration."; 500 container level-1 { 501 uses isis:overload-global-cfg; 502 description 503 "Level 1 configuration."; 504 } 505 container level-2 { 506 uses isis:overload-global-cfg; 507 description 508 "Level 2 configuration."; 509 } 511 } 513 Moreover, if an implementation does not support per level 514 configuration for a parameter, like priority, which has per level 515 configuration, the implementation SHOULD advertise a deviation to 516 announce the non support of the level-1 and level-2 containers. 518 Finally, if an implementation supports per level configuration but 519 does not support the level-1-2 configuration, it SHOULD also 520 advertise a deviation. 522 2.4. Per-Interface Parameters 524 The per-interface section of the IS-IS instance describes the 525 interface specific parameters. 527 The interface is a reference to an interface in the Interface YANG 528 model. 530 Each interface has interface-specific parameters that may have a 531 different value per level as described in previous section. An 532 interface-specific parameter always override an IS-IS global 533 parameter . 535 Some parameters like hello-padding are defined as containers to 536 permit easy extension by vendor specific modules. 538 +--rw interfaces 539 +--rw interface* [name] 540 +--rw name if:interface-ref 541 +--rw level-type? level 542 +--rw lsp-pacing-interval? uint16 543 +--rw lsp-retransmit-interval? uint16 544 +--rw passive? boolean 545 +--rw csnp-interval? uint16 546 +--rw hello-padding 547 | +--rw enable? boolean 548 +--rw mesh-group-enable? mesh-group-state 549 +--rw mesh-group? uint8 550 +--rw interface-type? interface-type 551 +--rw enable? boolean {admin-control}? 552 +--rw tag* uint32 {prefix-tag}? 553 +--rw tag64* uint64 {prefix-tag64}? 554 +--rw node-flag? boolean {node-flag}? 555 +--rw hello-authentication 556 | +--rw (authentication-type)? 557 | | +--:(key-chain) {key-chain}? 558 | | | +--rw key-chain? key-chain:key-chain-ref 559 | | +--:(password) 560 | | +--rw key? string 561 | | +--rw (algorithm)? 562 | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? 563 | | | +--rw hmac-sha1-12? empty 564 | | +--:(md5) 565 | | | +--rw md5? empty 566 | | +--:(sha-1) 567 | | | +--rw sha-1? empty 568 | | +--:(hmac-sha-1) 569 | | | +--rw hmac-sha-1? empty 570 | | +--:(hmac-sha-256) 571 | | | +--rw hmac-sha-256? empty 572 | | +--:(hmac-sha-384) 573 | | | +--rw hmac-sha-384? empty 574 | | +--:(hmac-sha-512) 575 | | +--rw hmac-sha-512? empty 576 | +--rw level-1 577 | | +--rw (authentication-type)? 578 | | +--:(key-chain) {key-chain}? 579 | | | +--rw key-chain? key-chain:key-chain-ref 580 | | +--:(password) 581 | | +--rw key? string 582 | | +--rw (algorithm)? 583 | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? 584 | | | +--rw hmac-sha1-12? empty 585 | | +--:(md5) 586 | | | +--rw md5? empty 587 | | +--:(sha-1) 588 | | | +--rw sha-1? empty 589 | | +--:(hmac-sha-1) 590 | | | +--rw hmac-sha-1? empty 591 | | +--:(hmac-sha-256) 592 | | | +--rw hmac-sha-256? empty 593 | | +--:(hmac-sha-384) 594 | | | +--rw hmac-sha-384? empty 595 | | +--:(hmac-sha-512) 596 | | +--rw hmac-sha-512? empty 597 | +--rw level-2 598 | +--rw (authentication-type)? 599 | +--:(key-chain) {key-chain}? 600 | | +--rw key-chain? key-chain:key-chain-ref 601 | +--:(password) 602 | +--rw key? string 603 | +--rw (algorithm)? 604 | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? 605 | | +--rw hmac-sha1-12? empty 606 | +--:(md5) 607 | | +--rw md5? empty 608 | +--:(sha-1) 609 | | +--rw sha-1? empty 610 | +--:(hmac-sha-1) 611 | | +--rw hmac-sha-1? empty 612 | +--:(hmac-sha-256) 613 | | +--rw hmac-sha-256? empty 614 | +--:(hmac-sha-384) 615 | | +--rw hmac-sha-384? empty 616 | +--:(hmac-sha-512) 617 | +--rw hmac-sha-512? empty 618 +--rw hello-interval 619 | +--rw value? uint16 620 | +--rw level-1 621 | | +--rw value? uint16 622 | +--rw level-2 623 | +--rw value? uint16 624 +--rw hello-multiplier 625 | +--rw value? uint16 626 | +--rw level-1 627 | | +--rw value? uint16 628 | +--rw level-2 629 | +--rw value? uint16 630 +--rw priority 631 | +--rw value? uint8 632 | +--rw level-1 633 | | +--rw value? uint8 634 | +--rw level-2 635 | +--rw value? uint8 636 +--rw metric 637 | +--rw value? wide-metric 638 | +--rw level-1 639 | | +--rw value? wide-metric 640 | +--rw level-2 641 | +--rw value? wide-metric 642 +--rw bfd {bfd}? 643 | +--rw enabled? boolean 644 +--rw afs 645 | +--rw af* [af] 646 | +--rw af identityref 647 +--rw mpls 648 | +--rw igp-ldp-sync {igp-ldp-sync}? 649 | +--rw enable? boolean 650 +--rw fast-reroute {fast-reroute}? 651 | +--rw lfa {lfa}? 652 | +--rw candidate-disabled? boolean 653 | +--rw enable? boolean 654 | +--rw remote-lfa {remote-lfa}? 655 | | +--rw enable? boolean 656 | +--rw level-1 657 | | +--rw candidate-disabled? boolean 658 | | +--rw enable? boolean 659 | | +--rw remote-lfa {remote-lfa}? 660 | | +--rw enable? boolean 661 | +--rw level-2 662 | +--rw candidate-disabled? boolean 663 | +--rw enable? boolean 664 | +--rw remote-lfa {remote-lfa}? 665 | +--rw enable? boolean 666 +--rw multi-topology {multi-topology}? 667 +--rw topology* [name] 668 +--rw name leafref 669 +--rw fast-reroute {fast-reroute}? 670 | +--rw lfa {lfa}? 671 | +--rw candidate-disabled? boolean 672 | +--rw enable? boolean 673 | +--rw remote-lfa {remote-lfa}? 674 | | +--rw enable? boolean 675 | +--rw level-1 676 | | +--rw candidate-disabled? boolean 677 | | +--rw enable? boolean 678 | | +--rw remote-lfa {remote-lfa}? 679 | | +--rw enable? boolean 680 | +--rw level-2 681 | +--rw candidate-disabled? boolean 682 | +--rw enable? boolean 683 | +--rw remote-lfa {remote-lfa}? 684 | +--rw enable? boolean 685 +--rw metric 686 +--rw value? wide-metric 687 +--rw level-1 688 | +--rw value? wide-metric 689 +--rw level-2 690 +--rw value? wide-metric 692 2.5. ISO parameters 694 Some ISO parameters may be required. 696 This module augments interface configuration model to support ISO 697 configuration parameters. 699 The clns-mtu can be defined under the interface. 701 2.6. IP FRR 703 This YANG model supports LFA and remote LFA as IP FRR techniques. 704 The "fast-reroute" container may be augmented by other models to 705 support other IPFRR flavors (MRT ...). 707 The current version of the model supports activation of LFA and 708 remote LFA at interface only. The global "lfa" container is present 709 but kept empty to permit augmentation with vendor specific properties 710 like policies. 712 Remote LFA is considered as a child of LFA. Remote LFA cannot be 713 enabled if LFA is not enabled. 715 The "candidate-disabled" permit to mark an interface to not be used 716 as a backup. 718 2.7. Operational State 720 "isis" container provides operational states for IS-IS. This 721 container is divided in multiple components: 723 o system-counters : provides statistical informations about the 724 global system. 726 o interface : provides configuration state information for each 727 interface. 729 o adjacencies: provides state information about current IS-IS 730 adjacencies. 732 o spf-log: provides information about SPF events on the node. 734 o lsp-log: provides information about LSP events on the node 735 (reception of an LSP or modification of local LSP). 737 o database: provides details on current LSDB. 739 o hostnames: provides information about system-id to hostname 740 mappings. 742 o fast-reroute: provides information about IP FRR. 744 3. RPC Operations 746 The "ietf-isis" module defines two RPC operations: 748 o clear-isis-database: reset the content of a particular IS-IS 749 database and restart database synchronization with the neighbors. 751 o clear-isis-adjacency: restart a particular set of IS-IS 752 adjacencies. 754 rpcs: 755 +---x clear-adjacency 756 | +--ro input 757 | +--ro routing-protocol-instance-name instance-state-ref 758 | +--ro level? level 759 | +--ro interface? string 760 +---x clear-database 761 +--ro input 762 +--ro routing-protocol-instance-name instance-state-ref 763 +--ro level? level 765 4. Notifications 767 The "ietf-isis" module introduces some notifications : 769 database-overload : raised when overload condition is changed. 771 lsp-too-large : raised when the system tries to propagate a too 772 large PDU. 774 corrupted-lsp-detected : raised when the system find that an LSP 775 that was stored in memory has become corrupted. 777 attempt-to-exceed-max-sequence : This notification is sent when 778 the system wraps the 32-bit sequence counter of an LSP. 780 id-len-mismatch : This notification is sent when we receive a PDU 781 with a different value for the System ID length. 783 max-area-addresses-mismatch : This notification is sent when we 784 receive a PDU with a different value for the Maximum Area 785 Addresses. 787 own-lsp-purge : This notification is sent when the system receives 788 a PDU with its own system ID and zero age. 790 sequence-number-skipped : This notification is sent when the 791 system receives a PDU with its own system ID and different 792 contents. The system has to reissue the LSP with a higher 793 sequence number. 795 authentication-type-failure : This notification is sent when the 796 system receives a PDU with the wrong authentication type field. 798 authentication-failure : This notification is sent when the system 799 receives a PDU with the wrong authentication information. 801 version-skew : This notification is sent when the system receives 802 a PDU with a different protocol version number. 804 area-mismatch : This notification is sent when the system receives 805 a Hello PDU from an IS that does not share any area address. 807 rejected-adjacency : This notification is sent when the system 808 receives a Hello PDU from an IS but does not establish an 809 adjacency for some reason. 811 protocols-supported-mismatch : This notification is sent when the 812 system receives a non pseudonode LSP that has no matching protocol 813 supported. 815 lsp-error-detected : This notification is sent when the system 816 receives a LSP with a parse error. 818 adjacency-change : This notification is sent when an IS-IS 819 adjacency moves to Up state or to Down state. 821 lsp-received : This notification is sent when a LSP is received. 823 lsp-generation : This notification is sent when a LSP is 824 regenerated. 826 notifications: 827 +---n database-overload 828 | +--ro instance-name? string 829 | +--ro instance-level? level 830 | +--ro overload? enumeration 831 +---n lsp-too-large 832 | +--ro instance-name? string 833 | +--ro instance-level? level 834 | +--ro interface-name? string 835 | +--ro interface-level? level 836 | +--ro extended-circuit-id? extended-circuit-id 837 | +--ro pdu-size? uint32 838 | +--ro lsp-id? lsp-id 839 +---n corrupted-lsp-detected 840 | +--ro instance-name? string 841 | +--ro instance-level? level 842 | +--ro lsp-id? lsp-id 843 +---n attempt-to-exceed-max-sequence 844 | +--ro instance-name? string 845 | +--ro instance-level? level 846 | +--ro lsp-id? lsp-id 847 +---n id-len-mismatch 848 | +--ro instance-name? string 849 | +--ro instance-level? level 850 | +--ro interface-name? string 851 | +--ro interface-level? level 852 | +--ro extended-circuit-id? extended-circuit-id 853 | +--ro pdu-field-len? uint8 854 | +--ro raw-pdu? binary 855 +---n max-area-addresses-mismatch 856 | +--ro instance-name? string 857 | +--ro instance-level? level 858 | +--ro interface-name? string 859 | +--ro interface-level? level 860 | +--ro extended-circuit-id? extended-circuit-id 861 | +--ro max-area-addresses? uint8 862 | +--ro raw-pdu? binary 863 +---n own-lsp-purge 864 | +--ro instance-name? string 865 | +--ro instance-level? level 866 | +--ro interface-name? string 867 | +--ro interface-level? level 868 | +--ro extended-circuit-id? extended-circuit-id 869 | +--ro lsp-id? lsp-id 870 +---n sequence-number-skipped 871 | +--ro instance-name? string 872 | +--ro instance-level? level 873 | +--ro interface-name? string 874 | +--ro interface-level? level 875 | +--ro extended-circuit-id? extended-circuit-id 876 | +--ro lsp-id? lsp-id 877 +---n authentication-type-failure 878 | +--ro instance-name? string 879 | +--ro instance-level? level 880 | +--ro interface-name? string 881 | +--ro interface-level? level 882 | +--ro extended-circuit-id? extended-circuit-id 883 | +--ro raw-pdu? binary 884 +---n authentication-failure 885 | +--ro instance-name? string 886 | +--ro instance-level? level 887 | +--ro interface-name? string 888 | +--ro interface-level? level 889 | +--ro extended-circuit-id? extended-circuit-id 890 | +--ro raw-pdu? binary 891 +---n version-skew 892 | +--ro instance-name? string 893 | +--ro instance-level? level 894 | +--ro interface-name? string 895 | +--ro interface-level? level 896 | +--ro extended-circuit-id? extended-circuit-id 897 | +--ro protocol-version? uint8 898 | +--ro raw-pdu? binary 899 +---n area-mismatch 900 | +--ro instance-name? string 901 | +--ro instance-level? level 902 | +--ro interface-name? string 903 | +--ro interface-level? level 904 | +--ro extended-circuit-id? extended-circuit-id 905 | +--ro raw-pdu? binary 906 +---n rejected-adjacency 907 | +--ro instance-name? string 908 | +--ro instance-level? level 909 | +--ro interface-name? string 910 | +--ro interface-level? level 911 | +--ro extended-circuit-id? extended-circuit-id 912 | +--ro raw-pdu? binary 913 | +--ro reason? string 914 +---n protocols-supported-mismatch 915 | +--ro instance-name? string 916 | +--ro instance-level? level 917 | +--ro interface-name? string 918 | +--ro interface-level? level 919 | +--ro extended-circuit-id? extended-circuit-id 920 | +--ro raw-pdu? binary 921 | +--ro protocols* uint8 922 +---n lsp-error-detected 923 | +--ro instance-name? string 924 | +--ro instance-level? level 925 | +--ro interface-name? string 926 | +--ro interface-level? level 927 | +--ro extended-circuit-id? extended-circuit-id 928 | +--ro lsp-id? lsp-id 929 | +--ro raw-pdu? binary 930 | +--ro error-offset? uint32 931 | +--ro tlv-type? uint8 932 +---n adjacency-change 933 | +--ro instance-name? string 934 | +--ro instance-level? level 935 | +--ro interface-name? string 936 | +--ro interface-level? level 937 | +--ro extended-circuit-id? extended-circuit-id 938 | +--ro neighbor? string 939 | +--ro neighbor-system-id? system-id 940 | +--ro level? level 941 | +--ro state? enumeration 942 | +--ro reason? string 943 +---n lsp-received 944 | +--ro instance-name? string 945 | +--ro instance-level? level 946 | +--ro interface-name? string 947 | +--ro interface-level? level 948 | +--ro extended-circuit-id? extended-circuit-id 949 | +--ro lsp-id? lsp-id 950 | +--ro sequence? uint32 951 | +--ro received-timestamp? yang:timestamp 952 | +--ro neighbor-system-id? system-id 953 +---n lsp-generation 954 +--ro instance-name? string 955 +--ro instance-level? level 956 +--ro lsp-id? lsp-id 957 +--ro sequence? uint32 958 +--ro send-timestamp? yang:timestamp 960 5. Segment Routing 962 The IS-IS SR YANG module is augmenting IS-IS module for both 963 configuration and operational states. 965 The IS-IS SR YANG module requires the base segment routing module 966 ([I-D.ietf-spring-sr-yang]) to be supported as there is a strong 967 relationship between those modules. 969 The figure below describe the overall structure of the isis-sr YANG 970 module: 972 module: ietf-isis-sr 973 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 974 /isis:isis: 975 +--rw segment-routing 976 | +--rw enabled? boolean 977 | +--rw bindings 978 | +--rw advertise 979 | | +--rw policies* string 980 | +--rw receive? boolean 981 +--rw protocol-srgb {sr:protocol-srgb}? 982 +--rw srgb* [lower-bound upper-bound] 983 +--rw lower-bound uint32 984 +--rw upper-bound uint32 985 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 986 /isis:isis/isis:interfaces/isis:interface: 987 +--rw segment-routing 988 +--rw adjacency-sid 989 +--rw advertise-adj-group-sid* [group-id] 990 | +--rw group-id uint32 991 +--rw advertise-protection? enumeration 992 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 993 /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute: 994 +--rw ti-lfa {ti-lfa}? 995 +--rw enable? boolean 997 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 998 /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute/isis:lfa/isi 999 s:remote-lfa: 1000 +--rw use-segment-routing-path? boolean {remote-lfa-sr}? 1001 augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-pr 1002 otocol/isis:isis: 1003 +--ro segment-routing 1004 | +--ro enabled? boolean 1005 | +--ro bindings 1006 | +--ro advertise 1007 | | +--ro policies* string 1008 | +--ro receive? boolean 1009 +--ro protocol-srgb {sr:protocol-srgb}? 1010 +--ro srgb* [lower-bound upper-bound] 1011 +--ro lower-bound uint32 1012 +--ro upper-bound uint32 1013 augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-pr 1014 otocol/isis:isis/isis:interfaces/isis:interface: 1015 +--ro segment-routing 1016 +--ro adjacency-sid 1017 +--ro advertise-adj-group-sid* [group-id] 1018 | +--ro group-id uint32 1019 +--ro advertise-protection? enumeration 1020 augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-pr 1021 otocol/isis:isis/isis:interfaces/isis:interface/isis:adjacencies/isis:ad 1022 jacency: 1023 +--ro adjacency-sid* [value] 1024 +--ro af? identityref 1025 +--ro value uint32 1026 +--ro weight? uint8 1027 +--ro protection-requested? boolean 1028 augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-pr 1029 otocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:extended-is-n 1030 eighbor/isis:neighbor: 1031 +--ro sid-list* [value] 1032 +--ro flags? bits 1033 +--ro weight? uint8 1034 +--ro neighbor-id? isis:system-id 1035 +--ro value uint32 1036 augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-pr 1037 otocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-is-neighbo 1038 r/isis:neighbor: 1039 +--ro sid-list* [value] 1040 +--ro flags? bits 1041 +--ro weight? uint8 1042 +--ro neighbor-id? isis:system-id 1043 +--ro value uint32 1044 augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-pr 1045 otocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:extended-ipv4 1046 -reachability/isis:prefixes: 1047 +--ro sid-list* [value] 1048 +--ro flags? bits 1049 +--ro algorithm? uint8 1050 +--ro value uint32 1051 augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-pr 1052 otocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-extended-i 1053 pv4-reachability/isis:prefixes: 1054 +--ro sid-list* [value] 1055 +--ro flags? bits 1056 +--ro algorithm? uint8 1057 +--ro value uint32 1058 augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-pr 1059 otocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:ipv6-reachabi 1060 lity/isis:prefixes: 1062 +--ro sid-list* [value] 1063 +--ro flags? bits 1064 +--ro algorithm? uint8 1065 +--ro value uint32 1066 augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-pr 1067 otocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-ipv6-reach 1068 ability/isis:prefixes: 1069 +--ro sid-list* [value] 1070 +--ro flags? bits 1071 +--ro algorithm? uint8 1072 +--ro value uint32 1073 augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-pr 1074 otocol/isis:isis/isis:database/isis:level-db/isis:lsp: 1075 +--ro segment-routing-bindings* [fec range] 1076 +--ro fec string 1077 +--ro range uint16 1078 +--ro flags? bits 1079 +--ro weight? uint8 1080 +--ro binding 1081 +--ro prefix-sid 1082 | +--ro sid-list* [value] 1083 | +--ro flags? bits 1084 | +--ro algorithm? uint8 1085 | +--ro value uint32 1086 +--ro ero-metric? uint32 1087 +--ro ero 1088 | +--ro address-family? identityref 1089 | +--ro loose? boolean 1090 | +--ro address? string 1091 +--ro backup-ero 1092 | +--ro address-family? identityref 1093 | +--ro loose? boolean 1094 | +--ro address? string 1095 +--ro unnumbered-interface-id-ero 1096 | +--ro router-id? string 1097 | +--ro interface-id? uint32 1098 +--ro backup-unnumbered-interface-id-ero 1099 +--ro router-id? string 1100 +--ro interface-id? uint32 1102 5.1. Segment Routing activation 1104 Activation of segment-routing IS-IS is done by setting the "enabled" 1105 leaf to true. This triggers advertisement of segment-routing 1106 extensions based on the configuration parameters that have been setup 1107 using the base segment routing module. 1109 5.2. Advertising mapping server policy 1111 The base segment routing module defines mapping server policies. By 1112 default, IS-IS will not advertise nor receive any mapping server 1113 entry. The IS-IS segment-routing module permits to advertise one or 1114 multiple mapping server policies through the "bindings/advertise/ 1115 policies" leaf-list. The "bindings/receive" leaf permits to enable 1116 the reception of mapping server entries. 1118 5.3. IP Fast reroute 1120 IS-IS SR model augments the fast-reroute container under interface. 1121 It brings the ability to activate TI-LFA (topology independent LFA) 1122 and also enhances remote LFA to use segment-routing tunneling instead 1123 of LDP. 1125 6. Interaction with Other YANG Modules 1127 The "isis" configuration container augments the "/rt:routing/ 1128 rt:control-plane-protocols/control-plane-protocol" container of the 1129 ietf-routing [I-D.ietf-netmod-routing-cfg] module by defining IS-IS 1130 specific parameters. 1132 The "isis" module augments "/if:interfaces/if:interface" with ISO 1133 specific parameters. 1135 The "isis" operational state container augments the "/rt:routing- 1136 state/rt:control-plane-protocols/control-plane-protocol" container of 1137 the ietf-routing module by defining IS-IS specific operational 1138 states. 1140 Some IS-IS specific routes attributes are added to route objects of 1141 the ietf-routing module by augmenting "/rt:routing- 1142 state/rt:ribs/rt:rib/rt:routes/rt:route". 1144 The modules defined in this document use some groupings from ietf- 1145 keychain [I-D.ietf-rtgwg-yang-key-chain] and ietf-segment routing 1146 [I-D.ietf-spring-sr-yang]. 1148 7. IS-IS YANG Module 1150 file "ietf-isis@2016-09-21.yang" 1152 module ietf-isis { 1153 namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; 1155 prefix isis; 1156 import ietf-routing { 1157 prefix "rt"; 1158 } 1160 import ietf-inet-types { 1161 prefix inet; 1162 } 1164 import ietf-yang-types { 1165 prefix yang; 1166 } 1168 import ietf-interfaces { 1169 prefix "if"; 1170 } 1172 import ietf-key-chain { 1173 prefix "key-chain"; 1174 } 1176 organization 1177 "IETF ISIS Working Group"; 1179 contact 1180 "WG List: <mailto:isis-wg@ietf.org> 1182 Editor: Stephane Litkowski 1183 <mailto:stephane.litkowski@orange.com> 1185 Derek Yeung 1186 <mailto:myeung@cisco.com> 1187 Acee Lindem 1188 <mailto:acee@cisco.com> 1189 Jeffrey Zhang 1190 <mailto:zzhang@juniper.net> 1191 Ladislav Lhotka 1192 <mailto:llhotka@nic.cz> 1193 Yi Yang 1194 <mailto:yiya@cisco.com> 1195 Dean Bogdanovic 1196 <mailto:deanb@juniper.net> 1197 Kiran Agrahara Sreenivasa 1198 <mailto:kkoushik@brocade.com> 1199 Yingzhen Qu 1200 <mailto:yiqu@cisco.com> 1201 Jeff Tantsura 1202 <mailto:jeff.tantsura@ericsson.com> 1204 "; 1206 description 1207 "The YANG module defines a generic configuration model for 1208 ISIS common across all of the vendor implementations."; 1210 revision 2016-09-21 { 1211 description 1212 " 1213 Draft refresh 1214 "; 1215 reference "draft-ietf-isis-yang-isis-cfg-11"; 1216 } 1217 revision 2016-09-20 { 1218 description 1219 " 1220 Align to draft-ietf-netmod-routing-cfg-23. 1221 "; 1222 reference "draft-ietf-isis-yang-isis-cfg-09"; 1223 } 1225 revision 2016-05-30 { 1226 description 1227 " 1228 Added container before af list 1229 Added container before topology list 1230 Aligned LFA if per level cfg 1231 "; 1232 reference ""; 1233 } 1234 revision 2016-03-21 { 1235 description 1236 " 1237 - remove routing-instance as per core routing model v21 1238 - added BFD leaf (no more BFD protocol model) 1239 - changed keychain module reference 1240 "; 1241 reference "draft-ietf-isis-yang-isis-cfg-08"; 1242 } 1244 revision 2015-12-17 { 1245 description 1246 "Moved lists to containers+groupings for per level 1247 configuration."; 1248 reference ""; 1249 } 1250 revision 2015-11-25 { 1251 description 1252 " 1253 * Remove selector from system-id type 1254 * Added some defaults 1255 "; 1256 reference ""; 1257 } 1258 revision 2015-11-18 { 1259 description 1260 " 1261 * Move Overload config from list to container 1262 * Move Overload-max-metric config from list to container 1263 * Move preference config from list to container 1264 * Add Node flag in config 1265 * Removed BFD config => moved to isis-bfd module 1266 * Remove call to routing policy model 1267 (waiting stabilization to add it) 1268 "; 1269 reference "draft-ietf-isis-yang-isis-cfg-07"; 1270 } 1271 revision 2015-09-10 { 1272 description 1273 " * Correct invalid references to previous 1274 versions core routing model. 1275 * Moved BFD config to usage of ietf-bfd yang grouping 1276 * Adding routing-policy support through routing-policy model 1277 "; 1278 reference "draft-ietf-isis-yang-isis-05"; 1279 } 1280 revision 2015-06-22 { 1281 description 1282 " * Segment routing is part os a separate module."; 1283 reference "draft-ietf-isis-yang-isis-03"; 1284 } 1285 revision 2015-03-03 { 1286 description 1287 " * Reviewed config and op state groupings. 1288 * Add default value to lfa candidate-disabled 1289 * Add enable leaf to isis container to reflect admin state 1290 * Move to VRF centric only 1291 "; 1292 reference ""; 1293 } 1294 revision 2015-03-03 { 1295 description 1296 " 1297 * Defining hierarchy for operational states 1298 * Adding CLNS MTU 1299 * Adding Keychain 1301 "; 1302 reference "draft-ietf-isis-yang-isis-02"; 1303 } 1304 revision 2015-02-20 { 1305 description 1306 " 1307 * Removing igp-ldp-sync timer in IS-IS 1309 "; 1310 reference ""; 1311 } 1312 revision 2014-12-15 { 1313 description 1314 " 1315 * Adding IPFRR 1316 * Adding igp-ldp sync 1317 * Adding segment routing 1318 * Adding instance reference to operational states. 1319 * Move AF type from string to identity 1320 * Updated router-capability in LSDB description. 1321 * packet counters moved to interface-packet-counters. 1322 * Added modification information in lsp-log 1323 "; 1324 reference ""; 1325 } 1326 revision 2014-10-24 { 1327 description 1328 " 1329 * Change hello-padding to container 1330 * Change bfd to container 1331 * Make BFD a feature 1332 * Creates mpls-te container and put router-id 1333 inside 1334 * Remove GR helper disable and timers 1335 "; 1336 reference "draft-ietf-isis-yang-isis-cfg-01"; 1337 } 1338 revision 2014-10-21 { 1339 description 1340 " 1341 * Interface metric move from af container to interface 1342 container 1343 * Hello-padding on interface moved to hello-padding-disable 1344 with empty type 1345 * three-way-handshake removed 1346 * route preference changed to a choice 1347 * csnp-authentication/psnp-authentication merged 1348 to authentication container 1349 * lsp-gen-interval-exp-delay removed 1350 * Added overload-max-metric feature 1351 * overload-max-metric is in a separate container 1352 "; 1353 reference ""; 1354 } 1356 revision 2014-10-07 { 1357 description 1358 " 1359 * Removed spf parameters (should be part of 1360 vendor specific extensions. 1361 * Removed hello parameters at global level. 1362 * Interface configuration uses a string rather 1363 than a reference. This permits to map to some 1364 vendor specific configuration. 1365 "; 1366 reference "draft-ietf-isis-yang-isis-00"; 1367 } 1368 revision 2014-09-26 { 1369 description 1370 " 1371 * Add BFD support 1372 * remove max-elements to max-area-addresses 1373 "; 1374 reference ""; 1375 } 1376 revision 2014-09-11 { 1377 description 1378 " 1379 * Add level parameter to ispf and spf delay 1380 * Add LSP generation as a feature 1381 * Make lsp-refresh a feature 1382 * Change parameter container to list 1383 "; 1384 reference ""; 1385 } 1386 revision 2014-09-05 { 1387 description 1388 " Rewrite of the global hierarchy."; 1389 reference ""; 1390 } 1391 revision 2014-08-06 { 1392 description 1393 " 1394 * isis-state renamed to isis. 1395 * Add GR support 1396 * Add meshgroup support 1397 * Add CLNS support 1398 * Add 64bits tags 1399 * Add notifications to be aligned with MIB4444 1400 * Add packet-counters, interface-counters, system-counters 1401 states 1402 * Add 3-way handshake support 1403 * Rename isis-adjacency-updown to adjacency-change 1404 * Add notification for LSP reception 1405 * Use feature for reference BW 1406 * Add lsp-retransmit-interval on interfaces 1407 * Rename lsp-interval to lsp-pacing-interval 1408 * Add ispf support as feature 1409 * Add spf delay support as feature (2step & exp backoff) 1410 * Add maximum-area-addresses 1411 * Add default-metric 1412 "; 1413 reference "RFC XXXX: YANG Data Model for ISIS Protocol"; 1414 } 1415 revision 2014-06-25 { 1416 description " 1417 * isis-cfg renamed to isis. 1418 * Add precisions on authentication-keys in description 1419 "; 1420 reference "draft-litkowski-isis-yang-isis-01"; 1421 } 1423 revision 2014-06-20 { 1424 description " 1425 * isis-op renamed to isis-state. 1426 * Multiple instances under ISIS are removed. 1427 * interface-cfg grouping removed and content 1428 is directly included in container isis. 1429 * TLVxx renamed with human-readable name in isis-database. 1430 TLV reference are putted in description. 1431 * Reference to core routing module were fixed. 1432 * Namespace fixed. 1433 * Add simple-iso-address type. 1434 * area-id and system-id in ISIS container are merged to 1435 nsap-address. 1436 * Add isis-system-id type. 1437 * Add isis-lsp-id type. 1438 * Add remaining-lifetime leaf in isis-database. 1439 * Add TLV2 (is-neighbor) in isis-database. 1440 * Renamed some container name for consistency 1441 reason ('isis-' prefixed). 1442 * Add new identities isis-cfg and isis-state. 1443 * Add descriptions. 1444 * Add notification isis-adjacency-updown. 1446 * Add RPC clear-isis-adjacency and clear-isis-database. 1447 "; 1448 reference "draft-litkowski-isis-yang-isis-00"; 1449 } 1451 revision 2014-06-11 { 1452 description "Initial revision."; 1453 reference "draft-litkowski-netmod-isis-cfg-00"; 1454 } 1455 identity isis { 1456 base rt:routing-protocol; 1457 description "Identity for the ISIS routing protocol."; 1458 } 1460 identity isis-adjacency-change { 1461 description "Identity for the ISIS routing protocol 1462 adjacency state."; 1463 } 1465 identity clear-isis-database { 1466 description "Identity for the ISIS routing protocol 1467 database reset action."; 1468 } 1470 identity clear-isis-adjacency { 1471 description "Identity for the ISIS routing protocol 1472 adjacency reset action."; 1473 } 1475 /* Feature definitions */ 1477 feature bfd { 1478 description 1479 "Support of BFD for IS-IS links."; 1480 } 1481 feature key-chain { 1482 description 1483 "Support of keychain for authentication."; 1484 } 1485 feature segment-routing { 1486 description 1487 "Support of segment-routing."; 1488 } 1489 feature node-flag { 1490 description 1491 "Support of node-flag advertisement 1492 as prefix attribute"; 1494 } 1495 feature node-tag { 1496 description 1497 "Support of node tag."; 1498 } 1499 feature igp-ldp-sync { 1500 description 1501 "Support of RFC5443."; 1502 } 1503 feature fast-reroute { 1504 description 1505 "Support of IPFRR."; 1506 } 1507 feature lfa { 1508 description 1509 "Support of Loop Free Alternates."; 1510 } 1511 feature remote-lfa { 1512 description 1513 "Support of remote Loop Free Alternates."; 1514 } 1516 feature overload-max-metric { 1517 description 1518 "Support of overload by setting 1519 all links to max metric."; 1520 } 1521 feature prefix-tag { 1522 description 1523 "Add 32bit tag to prefixes"; 1524 } 1525 feature prefix-tag64 { 1526 description 1527 "Add 64bit tag to prefixes"; 1528 } 1529 feature reference-bandwidth { 1530 description 1531 "Use a reference bandwidth to compute metric."; 1532 } 1533 feature ipv4-router-id { 1534 description 1535 "Support of IPv4 router ID configuration under ISIS."; 1536 } 1538 feature ipv6-router-id { 1539 description 1540 "Support of IPv6 router ID configuration under ISIS."; 1541 } 1542 feature multi-topology { 1543 description 1544 "Multitopology routing support."; 1545 } 1546 feature nlpid-control { 1547 description 1548 "This feature controls the advertisement 1549 of support NLPID within ISIS configuration."; 1550 } 1551 feature graceful-restart { 1552 description 1553 "Graceful restart support as per RFC5306."; 1554 } 1556 feature lsp-refresh { 1557 description 1558 "Configuration of LSP refresh interval."; 1559 } 1561 feature maximum-area-addresses { 1562 description 1563 "Support of maximum-area-addresses config."; 1564 } 1566 feature admin-control { 1567 description 1568 "Control administrative state of ISIS."; 1569 } 1571 /* Type definitions */ 1573 typedef instance-state-ref { 1574 type leafref { 1575 path "/rt:routing-state/" 1576 +"rt:control-plane-protocols/rt:control-plane-protocol/rt:name"; 1577 } 1578 description 1579 "This type is used for leaves that reference state data of 1580 an ISIS protocol instance."; 1581 } 1583 typedef admin-state { 1584 type enumeration { 1585 enum "up" { 1586 description 1587 "Up state"; 1589 } 1590 enum "down" { 1591 description 1592 "Down state"; 1593 } 1594 } 1595 description 1596 "Administrative state of a component."; 1597 } 1598 typedef oper-state { 1599 type enumeration { 1600 enum "up" { 1601 description 1602 "Up state"; 1603 } 1604 enum "down" { 1605 description 1606 "Down state"; 1607 } 1608 } 1609 description 1610 "Operational state of a component."; 1611 } 1612 typedef circuit-id { 1613 type uint8; 1614 description 1615 "This type defines the circuit ID 1616 associated with an interface."; 1617 } 1619 typedef extended-circuit-id { 1620 type uint32; 1621 description 1622 "This type defines the extended circuit ID 1623 associated with an interface."; 1624 } 1626 typedef interface-type { 1627 type enumeration { 1628 enum broadcast { 1629 description "Broadcast interface type. 1630 Would result in DIS election."; 1631 } 1632 enum point-to-point { 1633 description 1634 "Point to point interface type."; 1635 } 1636 } 1637 description 1638 "This type defines the type of adjacency 1639 to be established on the interface. 1640 This is affecting the type of hello 1641 message that would be used."; 1643 } 1645 typedef level { 1646 type enumeration { 1647 enum "level-1" { 1648 description 1649 "This enum describes L1 only capability."; 1650 } 1651 enum "level-2" { 1652 description 1653 "This enum describes L2 only capability."; 1654 } 1655 enum "level-all" { 1656 description 1657 "This enum describes both levels capability."; 1658 } 1659 } 1660 default "level-all"; 1661 description 1662 "This type defines ISIS level of an object."; 1664 } 1666 typedef level-number { 1667 type uint8 { 1668 range "1 .. 2"; 1669 } 1670 description 1671 "This type defines a current ISIS level."; 1672 } 1674 typedef lsp-id { 1675 type string { 1676 pattern 1677 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' 1678 +'{4}\.[0-9][0-9]-[0-9][0-9]'; 1679 } 1680 description 1681 "This type defines ISIS LSP ID using pattern, 1682 system id looks like : 0143.0438.AeF0.02-01"; 1683 } 1684 typedef area-address { 1685 type string { 1686 pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; 1687 } 1688 description 1689 "This type defines the area address."; 1690 } 1692 typedef snpa { 1693 type string { 1694 length "0 .. 20"; 1695 } 1696 description 1697 "This type defines Subnetwork Point of Attachement format."; 1699 } 1701 typedef system-id { 1702 type string { 1703 pattern 1704 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; 1705 } 1706 description 1707 "This type defines ISIS system id using pattern, 1708 system id looks like : 0143.0438.AeF0"; 1709 } 1711 typedef wide-metric { 1712 type uint32 { 1713 range "0 .. 16777215"; 1714 } 1715 description 1716 "This type defines wide style format 1717 of ISIS metric."; 1718 } 1720 typedef std-metric { 1721 type uint8 { 1722 range "0 .. 63"; 1723 } 1724 description 1725 "This type defines old style format 1726 of ISIS metric."; 1727 } 1729 typedef mesh-group-state { 1730 type enumeration { 1731 enum "meshInactive" { 1732 description 1733 "Interface is not part of a mesh group."; 1734 } 1735 enum "meshSet" { 1736 description 1737 "Interface is part of a mesh group."; 1738 } 1739 enum "meshBlocked" { 1740 description 1741 "LSPs must not be flooded over that interface."; 1742 } 1743 } 1744 description 1745 "This type describes meshgroup state of an interface"; 1746 } 1748 /* Grouping definitions */ 1750 grouping admin-control { 1752 leaf enable { 1753 if-feature admin-control; 1754 type boolean; 1755 default true; 1756 description 1757 "Control the administrative 1758 state."; 1759 } 1761 description 1762 "Grouping for admin control."; 1763 } 1765 grouping adjacency-state { 1766 container adjacencies { 1767 list adjacency { 1768 leaf neighbor-systype { 1769 type level; 1770 description 1771 "Type of neighboring system"; 1773 } 1774 leaf neighbor-sysid { 1775 type system-id; 1776 description 1777 "The system-id of the neighbor"; 1779 } 1780 leaf neighbor-extended-circuit-id { 1781 type extended-circuit-id; 1782 description 1783 "Circuit ID of the neighbor"; 1784 } 1785 leaf neighbor-snpa { 1786 type snpa; 1787 description 1788 "SNPA of the neighbor"; 1789 } 1790 leaf usage { 1791 type level; 1792 description 1793 "How is the adjacency used ? 1794 On a p2p link this might be level 1 and 2, 1795 but on a LAN, the usage will be level 1 1796 between peers at L1 or level 2 between 1797 peers at L2."; 1798 } 1799 leaf hold-timer { 1800 type uint16; 1801 description 1802 "The holding time in seconds for this 1803 adjacency. This value is based on 1804 received hello PDUs and the elapsed 1805 time since receipt."; 1806 } 1807 leaf neighbor-priority { 1808 type uint8 { 1809 range "0 .. 127"; 1810 } 1811 description 1812 "Priority of the neighboring IS for becoming 1813 the DIS."; 1814 } 1815 leaf lastuptime { 1816 type yang:timestamp; 1817 description 1818 "When the adjacency most recently entered 1819 state 'up', measured in hundredths of a 1820 second since the last reinitialization of 1821 the network management subsystem. 1822 The value is 0 if the adjacency has never 1823 been in state 'up'."; 1825 } 1826 leaf state { 1827 type enumeration { 1828 enum "Up" { 1829 description 1830 "This state describes that 1831 adjacency is established."; 1832 } 1833 enum "Down" { 1834 description 1835 "This state describes that 1836 adjacency is NOT established."; 1837 } 1838 enum "Init" { 1839 description 1840 "This state describes that 1841 adjacency is establishing."; 1842 } 1843 enum "Failed" { 1844 description 1845 "This state describes that 1846 adjacency is failed."; 1847 } 1848 } 1849 description 1850 "This leaf describes the state of the 1851 interface."; 1852 } 1854 description 1855 "List of operational adjacencies."; 1856 } 1857 description 1858 "This container lists the adjacencies of 1859 the local node."; 1860 } 1861 description 1862 "Adjacency state"; 1863 } 1865 grouping fast-reroute-global-state { 1866 container protected-routes { 1867 list af-stats { 1868 key "af prefix alternate"; 1869 leaf af { 1870 type identityref { 1871 base rt:address-family; 1872 } 1873 description 1874 "Address-family"; 1875 } 1876 leaf prefix { 1877 type string; 1878 description 1879 "Protected prefix."; 1880 } 1881 leaf alternate { 1882 type string; 1883 description 1884 "Alternate nexthop for the prefix."; 1885 } 1886 leaf alternate-type { 1887 type enumeration { 1888 enum equalcost { 1889 description 1890 "ECMP alternate."; 1891 } 1892 enum lfa { 1893 description 1894 "LFA alternate."; 1895 } 1896 enum remote-lfa { 1897 description 1898 "Remote LFA alternate."; 1899 } 1900 enum tunnel { 1901 description 1902 "Tunnel based alternate 1903 (like RSVP-TE or GRE)."; 1904 } 1905 enum ti-lfa { 1906 description 1907 "TI LFA alternate."; 1908 } 1909 enum mrt { 1910 description 1911 "MRT alternate."; 1912 } 1913 enum other { 1914 description 1915 "Unknown alternate type."; 1916 } 1918 } 1919 description 1920 "Type of alternate."; 1921 } 1922 leaf best { 1923 type boolean; 1924 description 1925 "describes if the alternate is the best one."; 1926 } 1927 leaf non-best-reason { 1928 type string; 1929 description 1930 "Information field to describe why the alternate 1931 is not best."; 1932 } 1933 leaf protection-available { 1934 type bits { 1935 bit nodeprotect { 1936 position 0; 1937 description 1938 "Node protection available."; 1939 } 1940 bit linkprotect { 1941 position 1; 1942 description 1943 "Link protection available."; 1944 } 1945 bit srlgprotect { 1946 position 2; 1947 description 1948 "SRLG protection available."; 1949 } 1950 bit downstreamprotect { 1951 position 3; 1952 description 1953 "Downstream protection available."; 1954 } 1955 bit other { 1956 position 4; 1957 description 1958 "Other protection available."; 1959 } 1960 } 1961 description 1962 "Describes protection provided by the alternate."; 1963 } 1964 leaf alternate-metric1 { 1965 type uint32; 1966 description 1967 "Metric from PLR to destination 1968 through the alternate path."; 1969 } 1970 leaf alternate-metric2 { 1971 type uint32; 1972 description 1973 "Metric from PLR to the alternate node"; 1974 } 1975 leaf alternate-metric3 { 1976 type uint32; 1977 description 1978 "Metric from alternate node to the destination"; 1979 } 1981 description 1982 "Per AF statistics."; 1983 } 1984 description 1985 "List of prefixes that are protected."; 1986 } 1988 container nonprotected-routes { 1989 list af-stats { 1990 key "af prefix"; 1992 leaf af { 1993 type identityref { 1994 base rt:address-family; 1995 } 1996 description 1997 "Address-family"; 1998 } 1999 leaf prefix { 2000 type string; 2001 description 2002 "Protected prefix."; 2003 } 2004 description 2005 "Per AF statistics."; 2006 } 2007 description 2008 "List of prefixes that are not protected."; 2009 } 2011 list protection-statistics { 2012 key frr-protection-method; 2013 leaf frr-protection-method { 2014 type string; 2015 description 2016 "Protection method used."; 2017 } 2018 list af-stats { 2019 key af; 2021 leaf af { 2022 type identityref { 2023 base rt:address-family; 2024 } 2025 description 2026 "Address-family"; 2027 } 2028 leaf total-routes { 2029 type uint32; 2030 description 2031 "Total prefixes."; 2032 } 2033 leaf unprotected-routes { 2034 type uint32; 2035 description 2036 "Total of prefixes who are 2037 not protected."; 2038 } 2039 leaf protected-routes { 2040 type uint32; 2041 description 2042 "Total of prefixes who are 2043 protected."; 2044 } 2045 leaf linkprotected-routes { 2046 type uint32; 2047 description 2048 "Total of prefixes who are 2049 link protected."; 2050 } 2051 leaf nodeprotected-routes { 2052 type uint32; 2053 description 2054 "Total of prefixes who are 2055 node protected."; 2056 } 2057 description 2058 "Per AF statistics."; 2059 } 2060 description 2061 "Global protection statistics."; 2062 } 2063 description 2064 "IPFRR states."; 2065 } 2067 grouping notification-instance-hdr { 2068 description 2069 "This group describes common instance specific 2070 data for notifications."; 2071 leaf instance-name { 2072 type string; 2073 description 2074 "Describes the name of the ISIS instance."; 2075 } 2076 leaf instance-level { 2077 type level; 2078 description 2079 "Describes the ISIS level of the instance."; 2080 } 2081 } 2083 grouping notification-interface-hdr { 2084 description 2085 "This group describes common interface specific 2086 data for notifications."; 2087 leaf interface-name { 2088 type string; 2089 description 2090 "Describes the name of the ISIS interface."; 2091 } 2092 leaf interface-level { 2093 type level; 2094 description 2095 "Describes the ISIS level of the interface."; 2096 } 2097 leaf extended-circuit-id { 2098 type extended-circuit-id; 2099 description 2100 "Describes the extended circuit-id of the interface."; 2101 } 2102 } 2104 grouping route-content { 2105 description 2106 "This group add isis-specific route properties."; 2107 leaf metric { 2108 type uint32; 2109 description 2110 "This leaf describes ISIS metric of a route."; 2111 } 2112 leaf-list tag { 2113 type uint64; 2114 description 2115 "This leaf describes list of tags associated 2116 with the route. The leaf describes both 2117 32bits and 64bits tags."; 2118 } 2119 leaf route-type { 2120 type enumeration { 2121 enum l2-up-internal { 2122 description "Level 2 internal route 2123 and not leaked to a lower level"; 2124 } 2125 enum l1-up-internal { 2126 description "Level 1 internal route 2127 and not leaked to a lower level"; 2128 } 2129 enum l2-up-external { 2130 description "Level 2 external route 2131 and not leaked to a lower level"; 2132 } 2133 enum l1-up-external { 2134 description "Level 1 external route 2135 and not leaked to a lower level"; 2136 } 2137 enum l2-down-internal { 2138 description "Level 2 internal route 2139 and leaked to a lower level"; 2140 } 2141 enum l1-down-internal { 2142 description "Level 1 internal route 2143 and leaked to a lower level"; 2144 } 2145 enum l2-down-external { 2146 description "Level 2 external route 2147 and leaked to a lower level"; 2148 } 2149 enum l1-down-external { 2150 description "Level 1 external route 2151 and leaked to a lower level"; 2152 } 2153 } 2154 description 2155 "This leaf describes the type of ISIS route."; 2157 } 2158 } 2160 grouping fast-reroute-global-cfg { 2161 description 2162 "This group defines global 2163 configuration of IPFRR."; 2165 container lfa { 2166 if-feature lfa; 2167 description 2168 "This container may be 2169 augmented with global parameters 2170 for LFA. 2171 Creating the container has no effect on 2172 LFA activation."; 2173 } 2175 } 2177 grouping fast-reroute-if-cfg { 2178 description 2179 "This group defines interface 2180 configuration of IPFRR."; 2182 container lfa { 2183 if-feature lfa; 2184 uses lfa-if-cfg; 2185 container level-1 { 2186 uses lfa-if-cfg; 2187 description 2188 "LFA level 21 config"; 2189 } 2190 container level-2 { 2191 uses lfa-if-cfg; 2192 description 2193 "LFA level 2 config"; 2194 } 2195 description 2196 "LFA config"; 2197 } 2199 } 2200 grouping prefix-reachability-attributes { 2201 description 2202 "This group defines extended reachability attributes of an 2203 IPv4 or IPv6 prefix."; 2205 leaf external-prefix-flag { 2206 type boolean; 2207 description 2208 "External prefix flag."; 2209 } 2210 leaf readvertisement-flag { 2211 type boolean; 2212 description 2213 "Readvertisement flag."; 2214 } 2215 leaf node-flag { 2216 type boolean; 2217 description 2218 "Node flag."; 2219 } 2220 } 2222 grouping prefix-ipv4-source-router-id { 2223 description 2224 "This group defines the IPv4 source router ID of 2225 a prefix advertisement."; 2227 leaf ipv4-source-router-id { 2228 type inet:ipv4-address; 2229 description 2230 "IPv4 Source router ID address."; 2231 } 2233 } 2234 grouping prefix-ipv6-source-router-id { 2235 description 2236 "This group defines the IPv6 source router ID of 2237 a prefix advertisement."; 2239 leaf ipv6-source-router-id { 2240 type inet:ipv6-address; 2241 description 2242 "IPv6 Source router ID address."; 2243 } 2245 } 2247 grouping prefix-attributes-extension { 2248 description 2249 "Prefix extended attributes."; 2251 uses prefix-reachability-attributes; 2252 uses prefix-ipv4-source-router-id; 2253 uses prefix-ipv6-source-router-id; 2254 } 2256 grouping prefix-ipv4-std { 2257 description 2258 "This group defines attributes of an 2259 IPv4 standard prefix."; 2260 leaf up-down { 2261 type boolean; 2262 description 2263 "This leaf expresses the value of up/down bit."; 2264 } 2265 leaf i-e { 2266 type boolean; 2267 description 2268 "This leaf expresses the value of I/E bit."; 2269 } 2270 leaf ip-prefix { 2271 type inet:ipv4-address; 2272 description 2273 "This leaf describes the IPv4 prefix"; 2274 } 2275 leaf prefix-len { 2276 type uint8; 2277 description 2278 "This leaf describes the IPv4 prefix len in bits"; 2279 } 2280 leaf default-metric { 2281 type std-metric; 2282 description 2283 "This leaf describes the ISIS default metric value"; 2284 } 2285 container delay-metric { 2286 leaf metric { 2287 type std-metric; 2288 description 2289 "This leaf describes the ISIS delay metric value"; 2290 } 2291 leaf supported { 2292 type boolean; 2293 default "false"; 2294 description 2295 "This leaf describes if the metric is supported."; 2297 } 2299 description 2300 "This container defines the ISIS delay metric."; 2301 } 2302 container expense-metric { 2303 leaf metric { 2304 type std-metric; 2305 description 2306 "This leaf describes the ISIS expense metric value"; 2307 } 2308 leaf supported { 2309 type boolean; 2310 default "false"; 2311 description 2312 "This leaf describes if the metric is supported."; 2313 } 2314 description 2315 "This container defines the ISIS expense metric."; 2316 } 2317 container error-metric { 2318 leaf metric { 2319 type std-metric; 2320 description 2321 "This leaf describes the ISIS error metric value"; 2322 } 2323 leaf supported { 2324 type boolean; 2325 default "false"; 2326 description 2327 "This leaf describes if the metric is supported."; 2328 } 2330 description 2331 "This container defines the ISIS error metric."; 2332 } 2333 } 2335 grouping prefix-ipv4-extended { 2336 description 2337 "This group defines attributes of an 2338 IPv4 extended prefix."; 2339 leaf up-down { 2340 type boolean; 2341 description 2342 "This leaf expresses the value of up/down bit."; 2343 } 2344 leaf ip-prefix { 2345 type inet:ipv4-address; 2346 description 2347 "This leaf describes the IPv4 prefix"; 2348 } 2349 leaf prefix-len { 2350 type uint8; 2351 description 2352 "This leaf describes the IPv4 prefix len in bits"; 2353 } 2355 leaf metric { 2356 type wide-metric; 2357 description 2358 "This leaf describes the ISIS metric value"; 2359 } 2360 leaf-list tag { 2361 type uint32; 2362 description 2363 "This leaf describes a list of tags associated with 2364 the prefix."; 2365 } 2366 leaf-list tag64 { 2367 type uint64; 2368 description 2369 "This leaf describes a list of 64-bit tags associated with 2370 the prefix."; 2371 } 2373 uses prefix-attributes-extension; 2375 } 2377 grouping prefix-ipv6-extended { 2378 description 2379 "This group defines attributes of an 2380 IPv6 prefix."; 2381 leaf up-down { 2382 type boolean; 2383 description 2384 "This leaf expresses the value of up/down bit."; 2385 } 2386 leaf ip-prefix { 2387 type inet:ipv6-address; 2388 description 2389 "This leaf describes the IPv6 prefix"; 2390 } 2391 leaf prefix-len { 2392 type uint8; 2393 description 2394 "This leaf describes the IPv4 prefix len in bits"; 2395 } 2397 leaf metric { 2398 type wide-metric; 2399 description 2400 "This leaf describes the ISIS metric value"; 2401 } 2402 leaf-list tag { 2403 type uint32; 2404 description 2405 "This leaf describes a list of tags associated with 2406 the prefix."; 2407 } 2408 leaf-list tag64 { 2409 type uint64; 2410 description 2411 "This leaf describes a list of 64-bit tags associated with 2412 the prefix."; 2413 } 2415 uses prefix-attributes-extension; 2416 } 2418 grouping neighbor-extended { 2419 description 2420 "This group defines attributes of an 2421 ISIS extended neighbor."; 2422 leaf neighbor-id { 2423 type system-id; 2424 description 2425 "This leaf describes the system-id of the neighbor."; 2426 } 2427 leaf metric { 2428 type wide-metric; 2429 description 2430 "This leaf describes the ISIS metric value"; 2431 } 2433 } 2435 grouping neighbor { 2436 description 2437 "This group defines attributes of an 2438 ISIS standard neighbor."; 2440 leaf neighbor-id { 2441 type system-id; 2442 description 2443 "This leaf describes the system-id of the neighbor."; 2444 } 2445 leaf i-e { 2446 type boolean; 2447 description 2448 "This leaf expresses the value of I/E bit."; 2449 } 2450 leaf default-metric { 2451 type std-metric; 2452 description 2453 "This leaf describes the ISIS default metric value"; 2454 } 2455 container delay-metric { 2456 leaf metric { 2457 type std-metric; 2458 description 2459 "This leaf describes the ISIS delay metric value"; 2460 } 2461 leaf supported { 2462 type boolean; 2463 default "false"; 2464 description 2465 "This leaf describes if the metric is supported."; 2466 } 2467 description 2468 "This container defines the ISIS delay metric."; 2469 } 2470 container expense-metric { 2471 leaf metric { 2472 type std-metric; 2473 description 2474 "This leaf describes the ISIS delay expense value"; 2475 } 2476 leaf supported { 2477 type boolean; 2478 default "false"; 2479 description 2480 "This leaf describes if the metric is supported."; 2481 } 2482 description 2483 "This container defines the ISIS expense metric."; 2484 } 2485 container error-metric { 2486 leaf metric { 2487 type std-metric; 2488 description 2489 "This leaf describes the ISIS error metric value"; 2490 } 2491 leaf supported { 2492 type boolean; 2493 default "false"; 2494 description 2495 "This leaf describes if the metric is supported."; 2496 } 2497 description 2498 "This container defines the ISIS error metric."; 2499 } 2500 } 2502 grouping database { 2503 description 2504 "This group defines attributes of an 2505 ISIS database (Link State DB)."; 2506 leaf lsp-id { 2507 type lsp-id; 2508 description 2509 "This leaf describes the LSP ID of the LSP."; 2510 } 2511 leaf checksum { 2512 type uint16; 2513 description 2514 "This leaf describes the checksum of the LSP."; 2515 } 2516 leaf remaining-lifetime { 2517 type uint16; 2518 units "seconds"; 2519 description 2520 "This leaf describes the remaining lifetime 2521 in seconds before the LSP expiration."; 2522 } 2523 leaf sequence { 2524 type uint32; 2525 description 2526 "This leaf describes the sequence number of the LSP."; 2527 } 2528 leaf attributes { 2529 type bits { 2530 bit PARTITIONNED { 2531 description 2532 "If set, the originator supports partition 2533 repair."; 2534 } 2535 bit ATTACHED-ERROR { 2536 description 2537 "If set, the originator is attached to 2538 another area using the referred metric."; 2539 } 2540 bit ATTACHED-EXPENSE { 2541 description 2542 "If set, the originator is attached to 2543 another area using the referred metric."; 2544 } 2545 bit ATTACHED-DELAY { 2546 description 2547 "If set, the originator is attached to 2548 another area using the referred metric."; 2549 } 2550 bit ATTACHED-DEFAULT { 2551 description 2552 "If set, the originator is attached to 2553 another area using the referred metric."; 2554 } 2555 bit OVERLOAD { 2556 description 2557 "If set, the originator is overloaded, 2558 and must be avoided in path calculation."; 2559 } 2560 } 2561 description 2562 "This leaf describes attributes of the LSP."; 2563 } 2565 container is-neighbor { 2566 list neighbor { 2567 uses neighbor; 2568 description 2569 "List of neighbors."; 2570 } 2571 description 2572 "This leaf describes list of ISIS neighbors. 2573 ISIS reference is TLV 2."; 2574 } 2576 container authentication { 2577 leaf authentication-type { 2578 type string; 2579 description 2580 "This leaf describes the authentication type 2581 to be used."; 2582 } 2583 leaf authentication-key { 2584 type string; 2585 description 2586 "This leaf describes the authentication key 2587 to be used. For security reason, the 2588 authentication key MUST NOT be presented 2589 in plaintext format. Authors recommends 2590 to use MD5 hash to present the authentication-key."; 2591 } 2592 description "This container describes authentication 2593 information of the node. ISIS reference is TLV 10."; 2594 } 2596 container extended-is-neighbor { 2597 list neighbor { 2598 uses neighbor-extended; 2599 description 2600 "List of neighbors."; 2601 } 2602 description 2603 "This container describes list of ISIS extended 2604 neighbors. 2605 ISIS reference is TLV 22."; 2606 } 2608 container ipv4-internal-reachability { 2609 list prefixes { 2610 uses prefix-ipv4-std; 2611 description 2612 "List of prefixes."; 2613 } 2614 description 2615 "This container describes list of IPv4 internal 2616 reachability information. 2617 ISIS reference is TLV 128."; 2618 } 2620 leaf-list protocol-supported { 2621 type uint8; 2622 description 2623 "This leaf describes the list of 2624 supported protocols. 2625 ISIS reference is TLV 129."; 2626 } 2628 container ipv4-external-reachability { 2629 list prefixes { 2630 uses prefix-ipv4-std; 2631 description 2632 "List of prefixes."; 2633 } 2634 description 2635 "This container describes list of IPv4 external 2636 reachability information. 2637 ISIS reference is TLV 130."; 2638 } 2640 leaf-list ipv4-addresses { 2641 type inet:ipv4-address; 2642 description 2643 "This leaf describes the IPv4 addresses of the node. 2644 ISIS reference is TLV 132."; 2645 } 2647 leaf ipv4-te-routerid { 2649 type inet:ipv4-address; 2650 description 2651 "This leaf describes the IPv4 Traffic Engineering 2652 router ID of the node. 2653 ISIS reference is TLV 134."; 2654 } 2656 container extended-ipv4-reachability { 2658 list prefixes { 2659 uses prefix-ipv4-extended; 2660 description 2661 "List of prefixes."; 2662 } 2663 description 2664 "This container describes list of IPv4 extended 2665 reachability information. 2666 ISIS reference is TLV 135."; 2667 } 2669 leaf dynamic-hostname { 2670 type string; 2672 description 2673 "This leaf describes the name of the node. 2674 ISIS reference is TLV 137."; 2675 } 2677 leaf ipv6-te-routerid { 2678 type inet:ipv6-address; 2679 description 2680 "This leaf describes the IPv6 Traffic Engineering 2681 router ID of the node. 2682 ISIS reference is TLV 140."; 2683 } 2685 container mt-is-neighbor { 2686 list neighbor { 2687 leaf MT-ID { 2688 type uint16 { 2689 range "0 .. 4095"; 2690 } 2691 description 2692 "This leaf defines the identifier 2693 of a topology."; 2694 } 2695 uses neighbor-extended; 2696 description 2697 "List of neighbors."; 2698 } 2699 description 2700 "This container describes list of ISIS multi-topology 2701 neighbors. 2702 ISIS reference is TLV 223."; 2703 } 2705 container mt-entries { 2706 list topology { 2708 leaf MT-ID { 2709 type uint16 { 2710 range "0 .. 4095"; 2711 } 2712 description 2713 "This leaf defines the identifier 2714 of a topology."; 2715 } 2717 leaf attributes { 2718 type bits { 2719 bit OVERLOAD { 2720 description 2721 "If set, the originator is overloaded, 2722 and must be avoided in path 2723 calculation."; 2724 } 2725 bit ATTACHED { 2726 description 2727 "If set, the originator is attached to 2728 another area using the referred metric."; 2729 } 2730 } 2731 description 2732 "This leaf describes attributes of the LSP 2733 for the associated topology."; 2734 } 2735 description 2736 "List of topologies supported."; 2737 } 2738 description 2739 "This container describes the topology supported. 2740 ISIS reference is TLV 229."; 2741 } 2743 leaf-list ipv6-addresses { 2744 type inet:ipv6-address; 2745 description 2746 "This leaf describes the IPv6 interface 2747 addresses of the node. 2748 ISIS reference is TLV 232."; 2749 } 2751 container mt-extended-ipv4-reachability { 2752 list prefixes { 2753 leaf MT-ID { 2754 type uint16 { 2755 range "0 .. 4095"; 2756 } 2757 description 2758 "This leaf defines the identifier 2759 of a topology."; 2760 } 2761 uses prefix-ipv4-extended; 2762 description 2763 "List of prefixes."; 2765 } 2766 description 2767 "This container describes list of IPv4 2768 reachability information in multi-topology 2769 environment. 2770 ISIS reference is TLV 235."; 2772 } 2774 container mt-ipv6-reachability { 2775 list prefixes { 2776 leaf MT-ID { 2777 type uint16 { 2778 range "0 .. 4095"; 2779 } 2780 description 2781 "This leaf defines the identifier 2782 of a topology."; 2783 } 2784 uses prefix-ipv6-extended; 2785 description 2786 "List of prefixes."; 2787 } 2788 description 2789 "This container describes list of IPv6 2790 reachability information in multi-topology 2791 environment. 2792 ISIS reference is TLV 237."; 2793 } 2795 container ipv6-reachability { 2796 list prefixes { 2797 uses prefix-ipv6-extended; 2798 description 2799 "List of prefixes."; 2800 } 2801 description 2802 "This container describes list of IPv6 2803 reachability information. 2804 ISIS reference is TLV 236."; 2805 } 2807 list router-capabilities { 2808 leaf flags { 2809 type bits { 2810 bit flooding { 2811 position 0; 2812 description 2813 "If the S bit is set(1), 2814 the IS-IS Router CAPABILITY TLV 2815 MUST be flooded across the entire routing domain. 2816 If the S bit is 2817 not set(0), the TLV MUST NOT be leaked between levels. 2819 This bit MUST NOT be altered during the TLV leaking."; 2820 } 2821 bit down { 2822 position 1; 2823 description 2824 "When the IS-IS Router CAPABILITY TLV is 2825 leaked from level-2 to level-1, the D bit 2826 MUST be set. Otherwise, this bit MUST 2827 be clear. IS-IS Router capability TLVs 2828 with the D bit set MUST NOT 2829 be leaked from level-1 to level-2. 2830 This is to prevent TLV looping. 2831 "; 2832 } 2833 } 2834 description 2835 "Flags associated with router capability."; 2836 } 2837 container node-tags { 2838 if-feature node-tag; 2839 list node-tag { 2840 leaf tag { 2841 type uint32; 2842 description 2843 "Node tag value."; 2844 } 2845 description 2846 "List of tags."; 2847 } 2848 description 2849 "Container for node tags."; 2850 } 2852 leaf binary { 2853 type binary; 2854 description 2855 "This leaf describes the capability of the node. 2856 Format is binary according to the protocol encoding."; 2857 } 2858 description 2859 "This container describes the capabilities of the node. 2860 This container may be extended with detailed 2861 information. 2862 ISIS reference is TLV 242."; 2863 } 2864 } 2866 grouping isis-node-tag-cfg { 2867 description 2868 "ISIS node tag config."; 2869 container node-tag { 2870 if-feature node-tag; 2871 list node-tag { 2872 key tag; 2873 leaf tag { 2874 type uint32; 2875 description 2876 "Node tag value."; 2877 } 2878 description 2879 "List of tags."; 2880 } 2881 description 2882 "Container for node tags."; 2883 } 2884 } 2886 grouping authentication-global-cfg { 2887 choice authentication-type { 2888 case key-chain { 2889 if-feature key-chain; 2890 leaf key-chain { 2891 type key-chain:key-chain-ref; 2892 description 2893 "Reference to a key-chain."; 2894 } 2895 } 2896 case password { 2897 leaf key { 2898 type string; 2899 description 2900 "This leaf describes the 2901 authentication key."; 2902 } 2903 uses key-chain:crypto-algorithm-types; 2904 } 2905 description 2906 "Choice of authentication."; 2907 } 2908 description 2909 "Grouping for global auth config."; 2910 } 2912 grouping metric-type-global-cfg { 2913 leaf value { 2914 type enumeration { 2915 enum wide-only { 2916 description 2917 "Advertise new metric style only 2918 (RFC5305)"; 2919 } 2920 enum old-only { 2921 description 2922 "Advertise old metric style only 2923 (RFC1195)"; 2924 } 2925 enum both { 2926 description "Advertise both metric 2927 styles"; 2928 } 2929 } 2930 description 2931 "This leaf describes the type of metric 2932 to be generated. 2933 Wide-only means only new metric style 2934 is generated, 2935 old-only means that only old style metric 2936 is generated, 2937 and both means that both are advertised. 2938 This leaf is only affecting IPv4 metrics."; 2939 } 2940 description 2941 "Grouping for global metric style config."; 2942 } 2944 grouping default-metric-global-cfg { 2945 leaf value { 2946 type wide-metric; 2947 default "10"; 2948 description 2949 "Value of the metric"; 2950 } 2951 description 2952 "Grouping for global default metric config."; 2953 } 2955 grouping overload-global-cfg { 2956 leaf status { 2957 type boolean; 2958 description 2959 "This leaf defines the overload status."; 2960 } 2961 description 2963 "Grouping for overload bit config."; 2964 } 2965 grouping overload-max-metric-global-cfg { 2966 leaf timeout { 2967 type uint16; 2968 units "seconds"; 2969 description 2970 "This leaf defines the timeout in seconds 2971 of the overload condition."; 2972 } 2973 description 2974 "Grouping for overload-max-metric config."; 2975 } 2977 grouping route-preference-global-cfg { 2978 choice granularity { 2979 case detail { 2980 leaf internal { 2981 type uint8; 2982 description 2983 "This leaf defines the protocol 2984 preference for internal routes."; 2985 } 2986 leaf external { 2987 type uint8; 2988 description 2989 "This leaf defines the protocol 2990 preference for external routes."; 2991 } 2992 } 2993 case coarse { 2994 leaf default { 2995 type uint8; 2996 description 2997 "This leaf defines the protocol 2998 preference for all ISIS routes."; 2999 } 3000 } 3001 description 3002 "Choice for implementation of route preference."; 3003 } 3004 description 3005 "This grouping defines how route preference is configured."; 3006 } 3008 grouping hello-authentication-cfg { 3009 choice authentication-type { 3010 case key-chain { 3011 if-feature key-chain; 3012 leaf key-chain { 3013 type key-chain:key-chain-ref; 3014 description 3015 "Reference to a key-chain."; 3016 } 3017 } 3018 case password { 3019 leaf key { 3020 type string; 3021 description 3022 "This leaf describes the 3023 authentication key."; 3024 } 3025 uses key-chain:crypto-algorithm-types; 3026 } 3027 description 3028 "Choice of authentication."; 3029 } 3030 description 3031 "Grouping for hello authentication."; 3032 } 3034 grouping hello-interval-cfg { 3035 leaf value { 3036 type uint16 { 3037 range "1..65535"; 3038 } 3039 units "seconds"; 3040 default 10; 3041 description 3042 "This leaf defines the interval of 3043 hello messages."; 3044 } 3046 description 3047 "Interval between 3048 hello messages."; 3049 } 3051 grouping hello-multiplier-cfg { 3052 leaf value { 3053 type uint16; 3054 description 3055 "This leaf defines the number of 3056 hello failed to be received before 3057 declaring the adjacency down."; 3058 } 3059 description 3060 "This grouping defines the number of 3061 hello failed to be received before 3062 declaring the adjacency down."; 3063 } 3065 grouping priority-cfg { 3067 leaf value { 3068 type uint8 { 3069 range "0 .. 127"; 3070 } 3071 default 64; 3072 description 3073 "This leaf describes the priority of 3074 the interface 3075 for DIS election."; 3076 } 3078 description 3079 "This grouping leaf describes the 3080 priority of 3081 the interface 3082 for DIS election."; 3083 } 3085 grouping metric-cfg { 3086 leaf value { 3087 type wide-metric; 3088 description 3089 "Metric value."; 3090 } 3091 description 3092 "Grouping for interface metric"; 3093 } 3094 grouping lfa-if-cfg { 3095 leaf candidate-disabled { 3096 type boolean; 3097 default false; 3098 description 3099 "Prevent the interface to be used as backup."; 3100 } 3101 leaf enable { 3102 type boolean; 3103 description 3104 "Activates LFA. 3105 This model assumes activation 3106 of per-prefix LFA."; 3107 } 3109 container remote-lfa { 3110 if-feature remote-lfa; 3111 leaf enable { 3112 type boolean; 3113 description 3114 "Activates rLFA."; 3115 } 3116 description 3117 "remote LFA configuration."; 3118 } 3119 description 3120 "Grouping for LFA 3121 interface configuration"; 3122 } 3123 grouping isis-global-cfg { 3124 description 3125 "Defines the ISIS global configuration."; 3127 uses admin-control; 3129 leaf level-type { 3130 type level; 3131 default "level-all"; 3132 description 3133 "This leaf describes the type of ISIS node. 3134 A node can be level-1-only, level-2-only 3135 or level-1-2. 3136 "; 3137 } 3139 leaf system-id { 3140 type system-id; 3141 description 3142 "This leaf defines the system-id of the node."; 3143 } 3145 leaf maximum-area-addresses { 3146 if-feature maximum-area-addresses; 3147 type uint8; 3148 default 3; 3149 description 3150 "Defines the maximum areas supported."; 3151 } 3153 leaf-list area-address { 3154 type area-address; 3155 description 3156 "List of areas supported by the 3157 protocol instance."; 3158 } 3160 container mpls { 3161 leaf ipv4-router-id { 3162 if-feature ipv4-router-id; 3163 type inet:ipv4-address; 3164 description 3165 "Router ID value that would be used in 3166 TLV 134."; 3167 } 3168 leaf ipv6-router-id { 3169 if-feature ipv6-router-id; 3170 type inet:ipv6-address; 3171 description 3172 "Router ID value that would be used in 3173 TLV 140."; 3174 } 3175 container igp-ldp-sync { 3176 if-feature igp-ldp-sync; 3177 description 3178 "This container may be augmented 3179 with global parameters for igp-ldp-sync."; 3180 } 3181 description 3182 "This container handles mpls config."; 3183 } 3184 leaf reference-bandwidth { 3185 if-feature reference-bandwidth; 3186 type uint32; 3187 units "bps"; 3188 description 3189 "This leaf defines the bandwidth for calculating 3190 metric."; 3191 } 3193 leaf lsp-mtu { 3194 type uint16; 3195 units "bytes"; 3196 default 1492; 3197 description 3198 "This leaf describes the maximum size of a 3199 LSP PDU in bytes."; 3200 } 3201 leaf lsp-lifetime { 3202 type uint16 { 3203 range "1..65535"; 3204 } 3205 units "seconds"; 3206 description 3207 "This leaf describes the lifetime of the router 3208 LSP in seconds."; 3209 } 3210 leaf lsp-refresh { 3211 if-feature lsp-refresh; 3212 type uint16 { 3213 range "1..65535"; 3214 } 3215 units "seconds"; 3216 description 3217 "This leaf describes the refresh interval of the 3218 router LSP in seconds."; 3219 } 3221 container graceful-restart { 3222 if-feature graceful-restart; 3223 leaf enable { 3224 type boolean; 3225 description 3226 "Control enabling the feature."; 3227 } 3228 description 3229 "This container activates graceful restart."; 3230 } 3232 uses isis-node-tag-cfg; 3234 container authentication { 3235 uses authentication-global-cfg; 3237 container level-1 { 3238 uses authentication-global-cfg; 3239 description "level-1 specific cfg"; 3240 } 3241 container level-2 { 3242 uses authentication-global-cfg; 3243 description "level-2 specific cfg"; 3244 } 3245 description "authentication global cfg. 3246 It covers both LSPs and SNPs."; 3247 } 3249 container metric-type { 3250 uses metric-type-global-cfg; 3252 container level-1 { 3253 uses metric-type-global-cfg; 3254 description "level-1 specific cfg"; 3255 } 3256 container level-2 { 3257 uses metric-type-global-cfg; 3258 description "level-2 specific cfg"; 3259 } 3260 description "Metric style global cfg."; 3261 } 3263 container default-metric { 3264 uses default-metric-global-cfg; 3266 container level-1 { 3267 uses default-metric-global-cfg; 3268 description "level-1 specific cfg"; 3269 } 3270 container level-2 { 3271 uses default-metric-global-cfg; 3272 description "level-2 specific cfg"; 3273 } 3274 description "Default metric global cfg."; 3275 } 3277 container afs { 3278 list af { 3279 if-feature nlpid-control; 3280 key af; 3281 leaf af { 3282 type identityref { 3283 base rt:address-family; 3284 } 3285 description 3286 "Address-family"; 3287 } 3289 leaf enable { 3290 type boolean; 3291 description 3292 "Describes the activation state of the 3293 AF."; 3294 } 3295 description 3296 "This list permits activation 3297 of new address families."; 3299 } 3300 description 3301 "Container for address-families"; 3302 } 3304 container preference { 3305 uses route-preference-global-cfg; 3306 description 3307 "This container defines the protocol preference."; 3308 } 3310 container overload { 3312 uses overload-global-cfg; 3313 description 3314 "This container describes if the router is 3315 set to overload state."; 3316 } 3318 container overload-max-metric { 3319 if-feature overload-max-metric; 3320 uses overload-max-metric-global-cfg; 3322 description 3323 "This container describes if the router is 3324 set to overload state using max-metric 3325 advertisement."; 3326 } 3328 } 3330 grouping isis-global-topologies-cfg { 3331 description 3332 "Per topology config."; 3334 container default-metric { 3335 uses default-metric-global-cfg; 3337 container level-1 { 3338 uses default-metric-global-cfg; 3339 description "level-1 specific cfg"; 3340 } 3341 container level-2 { 3342 uses default-metric-global-cfg; 3343 description "level-2 specific cfg"; 3344 } 3345 description "Default metric per 3346 topology cfg."; 3347 } 3349 uses isis-node-tag-cfg; 3350 } 3352 grouping isis-if-cfg { 3353 description 3354 "Grouping for interface cfg."; 3356 leaf level-type { 3357 type level; 3358 default "level-all"; 3359 description 3360 "This leaf defines the associated ISIS 3361 level of the interface."; 3362 } 3363 leaf lsp-pacing-interval { 3364 type uint16; 3365 units "milliseconds"; 3366 default 33; 3367 description 3368 "This leaf defines the interval between 3369 LSP transmissions in milli-seconds"; 3370 } 3371 leaf lsp-retransmit-interval { 3372 type uint16; 3373 units "seconds"; 3374 description 3375 "This leaf defines the interval between 3376 retransmission of LSP"; 3377 } 3378 leaf passive { 3379 type boolean; 3380 default "false"; 3381 description 3382 "This leaf defines if interface is in 3383 passive mode (ISIS not running, 3384 but network is advertised)."; 3386 } 3387 leaf csnp-interval { 3388 type uint16 { 3389 range "1..65535"; 3390 } 3391 units "seconds"; 3392 default 10; 3393 description 3394 "This leaf defines the interval of CSNP 3395 messages."; 3396 } 3398 container hello-padding { 3399 leaf enable { 3400 type boolean; 3401 default "true"; 3402 description 3403 "Status of Hello-padding activation. 3404 By default, the implementation shall 3405 pad HELLOs."; 3406 } 3408 description 3409 "This container handles ISIS hello padding 3410 configuration."; 3411 } 3413 leaf mesh-group-enable { 3414 type mesh-group-state; 3415 description 3416 "Describes the mesh group state of 3417 the interface."; 3418 } 3420 leaf mesh-group { 3421 when "../mesh-group-enable = 'meshSet'" { 3422 description 3423 "Only valid when mesh-group-enable 3424 equals meshSet"; 3425 } 3426 type uint8; 3427 description 3428 "Describes the mesh group ID of 3429 the interface."; 3430 } 3432 leaf interface-type { 3433 type interface-type; 3434 description 3435 "This leaf defines the type of adjacency 3436 to be established on the interface. 3437 This is affecting the type of hello 3438 message that would be used."; 3439 } 3441 uses admin-control; 3443 leaf-list tag { 3444 if-feature prefix-tag; 3446 type uint32; 3447 description 3448 "This leaf defines list of tags associated 3449 with the interface."; 3450 } 3452 leaf-list tag64 { 3453 if-feature prefix-tag64; 3455 type uint64; 3456 description 3457 "This leaf defines list of 64bits tags 3458 associated with the interface."; 3459 } 3461 leaf node-flag { 3462 if-feature node-flag; 3463 type boolean; 3464 default false; 3465 description 3466 "Set prefix as a node 3467 representative prefix."; 3469 } 3471 container hello-authentication { 3472 uses hello-authentication-cfg; 3474 container level-1 { 3475 uses hello-authentication-cfg; 3476 description "level-1 specific cfg"; 3477 } 3478 container level-2 { 3479 uses hello-authentication-cfg; 3480 description "level-2 specific cfg"; 3481 } 3482 description "Authentication type 3483 to be used in hello messages."; 3484 } 3486 container hello-interval { 3487 uses hello-interval-cfg; 3489 container level-1 { 3490 uses hello-interval-cfg; 3491 description "level-1 specific cfg"; 3492 } 3493 container level-2 { 3494 uses hello-interval-cfg; 3495 description "level-2 specific cfg"; 3496 } 3497 description "Interval between 3498 hello messages."; 3499 } 3501 container hello-multiplier { 3502 uses hello-multiplier-cfg; 3504 container level-1 { 3505 uses hello-multiplier-cfg; 3506 description "level-1 specific cfg"; 3507 } 3508 container level-2 { 3509 uses hello-multiplier-cfg; 3510 description "level-2 specific cfg"; 3511 } 3512 description "Hello multiplier 3513 configuration."; 3514 } 3516 container priority { 3517 must '../interface-type = "broadcast"' { 3518 error-message 3519 "Priority only applies to broadcast 3520 interfaces."; 3521 description 3522 "Check for broadcast interface."; 3523 } 3524 uses priority-cfg; 3526 container level-1 { 3527 uses priority-cfg; 3528 description "level-1 specific cfg"; 3529 } 3530 container level-2 { 3531 uses priority-cfg; 3532 description "level-2 specific cfg"; 3533 } 3534 description "Priority for DIS election."; 3535 } 3537 container metric { 3538 uses metric-cfg; 3540 container level-1 { 3541 uses metric-cfg; 3542 description "level-1 specific cfg"; 3543 } 3544 container level-2 { 3545 uses metric-cfg; 3546 description "level-2 specific cfg"; 3547 } 3548 description "Metric configuration."; 3549 } 3551 container bfd { 3552 if-feature bfd; 3553 leaf enabled { 3554 type boolean; 3555 default false; 3556 description " 3557 Enables BFD on the interface 3558 "; 3559 } 3560 description 3561 "BFD configuration."; 3562 } 3564 container afs { 3565 list af { 3566 key af; 3568 leaf af { 3569 type identityref { 3570 base rt:address-family; 3571 } 3572 description 3573 "Address-family"; 3574 } 3575 description 3576 "List of AFs."; 3577 } 3578 description 3579 "Container for address-families"; 3580 } 3582 container mpls { 3583 container igp-ldp-sync { 3584 if-feature igp-ldp-sync; 3585 leaf enable { 3586 type boolean; 3587 description 3588 "Enable/disable IGP LDP sync."; 3589 } 3590 description 3591 "IGP-LDP sync configuration."; 3592 } 3593 description 3594 "Container for MPLS specific configuration 3595 for ISIS."; 3596 } 3598 } 3600 grouping isis-if-topologies-cfg { 3601 description 3602 "ISIS interface topology cfg."; 3603 container metric { 3604 uses metric-cfg; 3606 container level-1 { 3607 uses metric-cfg; 3608 description "level-1 specific cfg"; 3609 } 3610 container level-2 { 3611 uses metric-cfg; 3612 description "level-2 specific cfg"; 3613 } 3614 description "Metric configuration."; 3615 } 3616 } 3618 /* */ 3619 augment "/rt:routing-state/" 3620 +"rt:ribs/rt:rib/rt:routes/rt:route" { 3621 when "rt:source-protocol = 'isis:isis'" { 3622 description "ISIS-specific route attributes."; 3623 } 3624 uses route-content; 3625 description 3626 "This augments route object in RIB with ISIS-specific 3627 attributes."; 3628 } 3630 augment "/if:interfaces/if:interface" 3631 { 3632 leaf clns-mtu { 3633 type uint16; 3634 description 3635 "Defines CLNS MTU of the interface."; 3636 } 3637 description "ISO interface config."; 3638 } 3640 augment "/rt:routing/rt:control-plane-protocols/" 3641 +"rt:control-plane-protocol" { 3642 when "rt:type = 'isis:isis'" { 3643 description 3644 "This augment is only valid when routing protocol 3645 instance type is isis."; 3646 } 3647 description 3648 "This augments a routing protocol instance with ISIS 3649 specific parameters."; 3650 container isis { 3652 must "count(area-address) > 0" { 3653 error-message "At least one area-address 3654 must be configured."; 3655 description 3656 "Enforce configuration of at least one area."; 3657 } 3659 uses isis-global-cfg; 3661 container fast-reroute { 3662 if-feature fast-reroute; 3663 uses fast-reroute-global-cfg; 3664 description 3665 "IPFRR."; 3666 } 3667 container multi-topology { 3668 if-feature multi-topology; 3669 list topology { 3671 key "name"; 3673 leaf enable { 3674 type boolean; 3675 description 3676 "Control enabling of topologies"; 3677 } 3679 leaf name { 3680 type leafref { 3681 path "../../../../../../rt:ribs/rt:rib/rt:name"; 3682 } 3684 description "RIB"; 3685 } 3687 uses isis-global-topologies-cfg; 3688 container fast-reroute { 3689 if-feature fast-reroute; 3690 uses fast-reroute-global-cfg; 3691 description 3692 "IPFRR."; 3693 } 3695 description 3696 "List of topologies"; 3697 } 3698 description 3699 "Container for multi-topology"; 3700 } 3702 container interfaces { 3703 list interface { 3704 key "name"; 3705 leaf name { 3706 type if:interface-ref; 3708 description 3709 "Reference to the interface within 3710 the routing-instance."; 3711 } 3713 uses isis-if-cfg; 3714 container fast-reroute { 3715 if-feature fast-reroute; 3716 uses fast-reroute-if-cfg; 3717 description 3718 "IPFRR."; 3719 } 3720 container multi-topology { 3721 if-feature multi-topology; 3722 list topology { 3723 key name; 3725 leaf name { 3726 type leafref { 3727 path "../../../../../../../../"+ 3728 "rt:ribs/rt:rib/rt:name"; 3729 } 3731 description 3732 "Name of RIB."; 3733 } 3734 container fast-reroute { 3735 if-feature fast-reroute; 3736 uses fast-reroute-if-cfg; 3737 description 3738 "IPFRR."; 3739 } 3740 uses isis-if-topologies-cfg; 3741 description 3742 "List of topologies."; 3743 } 3744 description 3745 "Container for multi-topology"; 3746 } 3748 description 3749 "List of ISIS interfaces."; 3750 } 3751 description 3752 "This container defines ISIS interface specific 3753 configuration objects."; 3754 } 3756 description 3757 "This container defines ISIS specific configuration 3758 objects."; 3759 } 3760 } 3761 augment "/rt:routing-state/" 3762 +"rt:control-plane-protocols/rt:control-plane-protocol" { 3763 when "rt:type = 'isis:isis'" { 3764 description 3765 "This augment is only valid when routing protocol 3766 instance type is isis."; 3767 } 3768 description 3769 "This augments routing protocol instance states with ISIS 3770 specific parameters."; 3772 container isis { 3773 config false; 3774 uses isis-global-cfg; 3775 container fast-reroute { 3776 if-feature fast-reroute; 3777 uses fast-reroute-global-cfg; 3778 uses fast-reroute-global-state; 3779 description 3780 "IPFRR states."; 3781 } 3783 list topologies { 3784 key name; 3786 leaf name { 3787 type leafref { 3788 path "../../../../../" 3789 +"rt:ribs/rt:rib/rt:name"; 3790 } 3792 description 3793 "Name of RIB."; 3794 } 3795 container fast-route { 3796 if-feature fast-reroute; 3797 uses fast-reroute-global-cfg; 3798 uses fast-reroute-global-state; 3799 description 3800 "IPFRR states."; 3801 } 3802 description 3803 "List of topologies."; 3804 } 3806 container system-counters { 3807 list level { 3808 key level; 3809 leaf level { 3810 type level-number; 3811 description 3812 "This leaf describes the ISIS level."; 3813 } 3814 leaf corrupted-lsps { 3815 type uint32; 3816 description 3817 "Number of corrupted in-memory LSPs detected. 3818 LSPs received from the wire with a bad 3819 checksum are silently dropped and not counted. 3820 LSPs received from the wire with parse errors 3821 are counted by lsp-errors."; 3822 } 3823 leaf authentication-type-fails { 3824 type uint32; 3825 description 3826 "Number of authentication type mismatches."; 3827 } 3828 leaf authentication-fails { 3829 type uint32; 3830 description 3831 "Number of authentication key failures."; 3832 } 3833 leaf database-overload { 3834 type uint32; 3835 description 3836 "Number of times the database has become 3837 overloaded."; 3838 } 3839 leaf own-lsp-purge { 3840 type uint32; 3841 description 3842 "Number of times a zero-aged copy of the 3843 system's own LSP is received from some 3844 other node."; 3845 } 3846 leaf manual-address-drop-from-area { 3847 type uint32; 3848 description 3849 "Number of times a manual address 3850 has been dropped from the area."; 3851 } 3852 leaf max-sequence { 3853 type uint32; 3854 description 3855 "Number of times the system has attempted 3856 to exceed the maximum sequence number."; 3858 } 3859 leaf sequence-number-skipped { 3860 type uint32; 3861 description 3862 "Number of times a sequence number skip has 3863 occured."; 3864 } 3865 leaf id-len-mismatch { 3866 type uint32; 3867 description 3868 "Number of times a PDU is received with 3869 a different value for ID field length 3870 from that of the receiving system."; 3871 } 3872 leaf partition-changes { 3873 type uint32; 3874 description 3875 "Number of partition changes detected."; 3876 } 3877 leaf lsp-errors { 3878 type uint32; 3879 description 3880 "Number of LSPs with errors we have 3881 received."; 3882 } 3883 leaf spf-runs { 3884 type uint32; 3885 description 3886 "Number of times we ran SPF at this level."; 3887 } 3888 description 3889 "List of supported levels."; 3890 } 3891 description 3892 "The container defines a list of counters 3893 for the IS."; 3894 } 3896 container interfaces { 3897 list interface { 3898 key interface; 3900 leaf interface { 3901 type string; 3902 description 3903 "This leaf describes the name 3904 of the interface."; 3905 } 3906 uses isis-if-cfg; 3907 container fast-reroute { 3908 if-feature fast-reroute; 3909 uses fast-reroute-if-cfg; 3910 description 3911 "IPFRR."; 3912 } 3913 uses adjacency-state; 3915 list topologies { 3916 key name; 3918 leaf name { 3919 type leafref { 3920 path "../../../../../" 3921 +"../../rt:ribs/rt:rib/rt:name"; 3922 } 3924 description 3925 "Name of RIB."; 3926 } 3927 uses isis-if-topologies-cfg; 3928 container fast-reroute { 3929 if-feature fast-reroute; 3930 uses fast-reroute-if-cfg; 3931 description 3932 "IPFRR."; 3933 } 3934 uses adjacency-state; 3936 description 3937 "List of topologies."; 3938 } 3940 container event-counters { 3941 leaf adjacency-changes { 3942 type uint32; 3943 description 3944 "The number of times an adjacency state 3945 change has occured on this interface."; 3946 } 3947 leaf adjacency-number { 3948 type uint32; 3949 description 3950 "The number of adjacencies on this 3951 interface."; 3952 } 3953 leaf init-fails { 3954 type uint32; 3955 description 3956 "The number of times initialization of 3957 this interface has failed. This counts 3958 events such as PPP NCP failures. 3959 Failures to form an adjacency are counted 3960 by adjacency-rejects."; 3961 } 3962 leaf adjacency-rejects { 3963 type uint32; 3964 description 3965 "The number of times an adjacency has been 3966 rejected on this interface."; 3967 } 3968 leaf id-len-mismatch { 3969 type uint32; 3970 description 3971 "The number of times an IS-IS PDU with an ID 3972 field length different from that for this 3973 system has been received on this interface."; 3974 } 3975 leaf max-area-addresses-mismatch { 3976 type uint32; 3977 description 3978 "The number of times an IS-IS PDU with 3979 according max area address field 3980 differs from that for 3981 this system has been received on this 3982 interface."; 3983 } 3984 leaf authentication-type-fails { 3985 type uint32; 3986 description 3987 "Number of authentication type mismatches."; 3988 } 3989 leaf authentication-fails { 3990 type uint32; 3991 description 3992 "Number of authentication key failures."; 3993 } 3994 leaf lan-dis-changes { 3995 type uint32; 3996 description 3997 "The number of times the DIS has changed 3998 on this interface at this level. 3999 If the interface type is point to point, 4000 the count is zero."; 4001 } 4002 description 4003 "Provides protocol event counters."; 4004 } 4005 container packet-counters { 4006 list level { 4007 key level; 4009 leaf level { 4010 type level-number; 4011 description 4012 "This leaf describes the ISIS level."; 4013 } 4015 container iih { 4016 leaf in { 4017 type uint32; 4018 description 4019 "Received PDUs."; 4020 } 4021 leaf out { 4022 type uint32; 4023 description 4024 "Sent PDUs."; 4025 } 4026 description 4027 "The number of IIH PDUs received/sent."; 4028 } 4029 container ish { 4030 leaf in { 4031 type uint32; 4032 description 4033 "Received PDUs."; 4034 } 4035 leaf out { 4036 type uint32; 4037 description 4038 "Sent PDUs."; 4039 } 4040 description 4041 "The number of ISH PDUs received/sent."; 4042 } 4043 container esh { 4044 leaf in { 4045 type uint32; 4046 description 4047 "Received PDUs."; 4048 } 4049 leaf out { 4050 type uint32; 4051 description 4052 "Sent PDUs."; 4053 } 4054 description 4055 "The number of ESH PDUs received/sent."; 4056 } 4057 container lsp { 4058 leaf in { 4059 type uint32; 4060 description 4061 "Received PDUs."; 4062 } 4063 leaf out { 4064 type uint32; 4065 description 4066 "Sent PDUs."; 4067 } 4068 description 4069 "The number of LSP PDUs received/sent."; 4070 } 4071 container psnp { 4072 leaf in { 4073 type uint32; 4074 description 4075 "Received PDUs."; 4076 } 4077 leaf out { 4078 type uint32; 4079 description 4080 "Sent PDUs."; 4081 } 4082 description 4083 "The number of PSNP PDUs received/sent."; 4084 } 4085 container csnp { 4086 leaf in { 4087 type uint32; 4088 description 4089 "Received PDUs."; 4090 } 4091 leaf out { 4092 type uint32; 4093 description 4094 "Sent PDUs."; 4095 } 4096 description 4097 "The number of CSNP PDUs received/sent."; 4098 } 4099 container unknown { 4100 leaf in { 4101 type uint32; 4102 description 4103 "Received PDUs."; 4104 } 4105 leaf out { 4106 type uint32; 4107 description 4108 "Sent PDUs."; 4109 } 4110 description 4111 "The number of unknown PDUs received/sent."; 4112 } 4113 description 4114 "List of supported levels."; 4115 } 4116 description 4117 "Provides packet counters per level."; 4118 } 4119 description 4120 "List of interfaces."; 4121 } 4122 description 4123 "The container defines operational parameters 4124 of interfaces."; 4125 } 4127 container spf-log { 4128 list event { 4129 key id; 4131 leaf id { 4132 type uint32; 4133 description 4134 "This leaf defines the event identifier. 4135 This is a purely internal value."; 4136 } 4137 leaf spf-type { 4138 type enumeration { 4139 enum full { 4140 description 4141 "Computation done is a Full SPF."; 4143 } 4144 enum incremental { 4145 description 4146 "Computation done is an 4147 incremental SPF."; 4148 } 4149 enum route-only { 4150 description 4151 "Computation done is a 4152 reachability computation 4153 only."; 4154 } 4155 } 4156 description 4157 "This leaf describes the type of computation 4158 used."; 4159 } 4160 leaf level { 4161 type level-number; 4162 description 4163 "This leaf describes the level affected by the 4164 the computation."; 4165 } 4166 leaf spf-delay { 4167 type uint32; 4168 units "milliseconds"; 4169 description 4170 "This leaf describes the SPF delay that 4171 was used for this event."; 4172 } 4173 leaf schedule-timestamp { 4174 type yang:timestamp; 4175 description 4176 "This leaf describes the timestamp 4177 when the computation was scheduled."; 4178 } 4179 leaf start-timestamp { 4180 type yang:timestamp; 4181 description 4182 "This leaf describes the timestamp 4183 when the computation was started."; 4184 } 4185 leaf end-timestamp { 4186 type yang:timestamp; 4187 description 4188 "This leaf describes the timestamp 4189 when the computation was ended."; 4190 } 4191 list trigger-lsp { 4192 key "lsp"; 4193 leaf lsp { 4194 type lsp-id; 4195 description 4196 "This leaf describes the LSPID 4197 of the LSP."; 4198 } 4199 leaf sequence { 4200 type uint32; 4201 description 4202 "This leaf describes the sequence 4203 number of the LSP."; 4204 } 4205 description 4206 "This leaf describes list of LSPs 4207 that triggered the computation."; 4208 } 4209 description 4210 "List of computation events."; 4211 } 4213 description 4214 "This container lists the SPF computation events."; 4215 } 4216 container lsp-log { 4217 list event { 4218 key id; 4220 leaf id { 4221 type uint32; 4222 description 4223 "This leaf defines the event identifier. 4224 This is a purely internal value."; 4225 } 4226 leaf level { 4227 type level-number; 4228 description 4229 "This leaf describes the level affected by the 4230 the computation."; 4231 } 4232 container lsp { 4233 leaf lsp { 4235 type lsp-id; 4236 description 4237 "This leaf describes the LSPID 4238 of the LSP."; 4240 } 4241 leaf sequence { 4242 type uint32; 4243 description 4244 "This leaf describes the sequence 4245 number of the LSP."; 4246 } 4247 description 4248 "This container describes the received LSP 4249 , in case of local LSP update the local 4250 LSP ID is referenced."; 4251 } 4253 leaf received-timestamp { 4254 type yang:timestamp; 4256 description 4257 "This leaf describes the timestamp 4258 when the LSP was received. In case of 4259 local LSP update, the timestamp refers 4260 to the local LSP update time."; 4261 } 4263 leaf change { 4264 type bits { 4265 bit refresh { 4266 position 0; 4267 description 4268 "Refresh LSP, nothing has changed."; 4269 } 4270 bit link-down { 4271 position 1; 4272 description 4273 "One or more links are down."; 4274 } 4275 bit link-up { 4276 position 2; 4277 description 4278 "One or more links are up."; 4279 } 4280 bit link-metric-change { 4281 position 3; 4282 description 4283 "One or more links experienced 4284 a metric change."; 4285 } 4286 bit link-other-change { 4287 position 4; 4288 description 4289 "One or more links experienced 4290 a change that does not affect state 4291 or metric."; 4292 } 4293 bit prefix-down { 4294 position 5; 4295 description 4296 "One or more links are down."; 4297 } 4298 bit prefix-up { 4299 position 6; 4300 description 4301 "One or more prefixes are up."; 4302 } 4303 bit prefix-metric-change { 4304 position 7; 4305 description 4306 "One or more prefixes experienced 4307 a metric change."; 4308 } 4309 bit prefix-other-change { 4310 position 8; 4311 description 4312 "One or more prefixes experienced 4313 a change that does not affect state 4314 or metric."; 4315 } 4316 bit other-change { 4317 position 9; 4318 description 4319 "One or more component changed that 4320 is not a prefix or link."; 4321 } 4322 } 4323 description 4324 "This leaf describes the type of change 4325 in the LSP."; 4326 } 4328 description 4329 "List of LSP events."; 4330 } 4332 description 4333 "This container lists the LSP reception events. 4334 Local LSP modification are also contained in the 4335 list."; 4337 } 4338 container database { 4339 list level-db { 4340 key level; 4342 leaf level { 4343 type level-number; 4344 description 4345 "Current level number"; 4346 } 4347 list lsp { 4348 key lsp-id; 4350 uses database; 4351 description 4352 "List of LSPs in LSDB."; 4353 } 4355 description 4356 "This container describes the list of LSPs 4357 in the level x database."; 4358 } 4360 description 4361 "This container describes ISIS Link State 4362 databases."; 4363 } 4364 container hostnames { 4366 list hostname { 4367 key system-id; 4368 leaf system-id { 4369 type system-id; 4370 description 4371 "This leaf describes the system-id 4372 associated with the hostname."; 4373 } 4374 leaf hostname { 4376 type string; 4377 description 4378 "This leaf describes the hostname 4379 associated with the system ID."; 4380 } 4381 description 4382 "List of system-id/hostname associations"; 4383 } 4384 description 4385 "This container describes the list 4386 of binding between system-id and 4387 hostnames."; 4388 } 4390 description 4391 "This container defines various ISIS states objects."; 4392 } 4393 } 4395 /* RPC methods */ 4397 rpc clear-adjacency { 4398 description 4399 "This RPC request clears a particular 4400 set of ISIS adjacencies. If the operation 4401 fails for ISIS internal reason, then 4402 error-tag and error-app-tag should be set 4403 to a meaningful value."; 4404 input { 4406 leaf routing-protocol-instance-name { 4407 type instance-state-ref; 4408 mandatory "true"; 4409 description 4410 "Name of the ISIS protocol instance whose ISIS 4411 information is being queried. 4413 If the ISIS instance with name equal to the 4414 value of this parameter doesn't exist, then this 4415 operation SHALL fail with error-tag 'data-missing' 4416 and error-app-tag 4417 'routing-protocol-instance-not-found'."; 4418 } 4419 leaf level { 4420 type level; 4421 description 4422 "ISIS level of the adjacency to be cleared. 4423 If ISIS level is level-1-2, both level 1 and level 2 4424 adjacencies would be cleared. 4426 If the value provided is different from the one 4427 authorized in the enum type, then this 4428 operation SHALL fail with error-tag 'data-missing' 4429 and error-app-tag 4430 'bad-isis-level'. 4431 "; 4433 } 4434 leaf interface { 4435 type string; 4436 description 4437 "Name of the ISIS interface. 4439 If the ISIS interface with name equal to the 4440 value of this parameter doesn't exist, then this 4441 operation SHALL fail with error-tag 'data-missing' 4442 and error-app-tag 4443 'isis-interface-not-found'."; 4444 } 4445 } 4446 } 4448 rpc clear-database { 4449 description 4450 "This RPC request clears a particular 4451 ISIS database. If the operation 4452 fails for ISIS internal reason, then 4453 error-tag and error-app-tag should be set 4454 to a meaningful value."; 4455 input { 4457 leaf routing-protocol-instance-name { 4458 type instance-state-ref; 4459 mandatory "true"; 4460 description 4461 "Name of the ISIS protocol instance whose ISIS 4462 information is being queried. 4464 If the ISIS instance with name equal to the 4465 value of this parameter doesn't exist, then this 4466 operation SHALL fail with error-tag 'data-missing' 4467 and error-app-tag 4468 'routing-protocol-instance-not-found'."; 4469 } 4470 leaf level { 4471 type level; 4472 description 4473 "ISIS level of the adjacency to be cleared. 4474 If ISIS level is level-1-2, both level 1 and level 2 4475 adjacencies would be cleared. 4477 If the value provided is different from the one 4478 authorized in the enum type, then this 4479 operation SHALL fail with error-tag 'data-missing' 4480 and error-app-tag 4481 'bad-isis-level'. 4482 "; 4483 } 4484 } 4486 } 4488 /* Notifications */ 4490 notification database-overload { 4491 uses notification-instance-hdr; 4493 leaf overload { 4494 type enumeration { 4495 enum "off" { 4496 description 4497 "The system has left overload condition."; 4498 } 4499 enum "on" { 4500 description 4501 "The system is in overload condition."; 4502 } 4504 } 4505 description 4506 "Describes the new overload state of the instance."; 4507 } 4508 description 4509 "This notification is sent when an ISIS instance 4510 overload condition changes."; 4511 } 4513 notification lsp-too-large { 4514 uses notification-instance-hdr; 4515 uses notification-interface-hdr; 4517 leaf pdu-size { 4518 type uint32; 4519 description 4520 "Size of the PDU"; 4521 } 4522 leaf lsp-id { 4523 type lsp-id; 4524 description 4525 "LSP ID."; 4526 } 4527 description 4528 "This notification is sent when we attempt 4529 to propagate an LSP that is larger than the 4530 dataLinkBlockSize for the circuit. 4531 The notification generation must be throttled 4532 with at least a 5 second gap. 4533 "; 4534 } 4536 notification corrupted-lsp-detected { 4537 uses notification-instance-hdr; 4538 leaf lsp-id { 4539 type lsp-id; 4540 description 4541 "LSP ID."; 4542 } 4543 description 4544 "This notification is sent when we find 4545 that an LSP that was stored in memory has 4546 become corrupted. 4547 "; 4548 } 4550 notification attempt-to-exceed-max-sequence { 4551 uses notification-instance-hdr; 4552 leaf lsp-id { 4553 type lsp-id; 4554 description 4555 "LSP ID."; 4556 } 4557 description 4558 "This notification is sent when the system 4559 wraps the 32-bit sequence counter of an LSP. 4560 "; 4561 } 4563 notification id-len-mismatch { 4564 uses notification-instance-hdr; 4565 uses notification-interface-hdr; 4567 leaf pdu-field-len { 4568 type uint8; 4569 description 4570 "Size of the ID length in the received PDU"; 4571 } 4572 leaf raw-pdu { 4573 type binary; 4574 description 4575 "Received raw PDU."; 4576 } 4577 description 4578 "This notification is sent when we receive a PDU 4579 with a different value for the System ID length. 4580 The notification generation must be throttled 4581 with at least a 5 second gap. 4582 "; 4583 } 4585 notification max-area-addresses-mismatch { 4586 uses notification-instance-hdr; 4587 uses notification-interface-hdr; 4589 leaf max-area-addresses { 4590 type uint8; 4591 description 4592 "Received number of supported areas"; 4593 } 4594 leaf raw-pdu { 4595 type binary; 4596 description 4597 "Received raw PDU."; 4598 } 4599 description 4600 "This notification is sent when we receive a PDU 4601 with a different value for the Maximum Area Addresses. 4602 The notification generation must be throttled 4603 with at least a 5 second gap. 4604 "; 4605 } 4607 notification own-lsp-purge { 4608 uses notification-instance-hdr; 4609 uses notification-interface-hdr; 4610 leaf lsp-id { 4611 type lsp-id; 4612 description 4613 "LSP ID."; 4614 } 4615 description 4616 "This notification is sent when the system 4617 receives a PDU with its own system ID and zero age. 4618 "; 4619 } 4621 notification sequence-number-skipped { 4622 uses notification-instance-hdr; 4623 uses notification-interface-hdr; 4624 leaf lsp-id { 4625 type lsp-id; 4626 description 4627 "LSP ID."; 4628 } 4629 description 4630 "This notification is sent when the system 4631 receives a PDU with its own system ID and 4632 different contents. The system has to reissue 4633 the LSP with a higher sequence number. 4634 "; 4635 } 4637 notification authentication-type-failure { 4638 uses notification-instance-hdr; 4639 uses notification-interface-hdr; 4640 leaf raw-pdu { 4641 type binary; 4642 description 4643 "Received raw PDU."; 4644 } 4645 description 4646 "This notification is sent when the system 4647 receives a PDU with the wrong authentication type 4648 field. 4649 The notification generation must be throttled with 4650 at least a 5 second gap. 4651 "; 4652 } 4654 notification authentication-failure { 4655 uses notification-instance-hdr; 4656 uses notification-interface-hdr; 4657 leaf raw-pdu { 4658 type binary; 4659 description 4660 "Received raw PDU."; 4661 } 4662 description 4663 "This notification is sent when the system 4664 receives a PDU with the wrong authentication 4665 information. 4666 The notification generation must be throttled with 4667 at least a 5 second gap. 4668 "; 4669 } 4670 notification version-skew { 4671 uses notification-instance-hdr; 4672 uses notification-interface-hdr; 4673 leaf protocol-version { 4674 type uint8; 4675 description 4676 "Protocol version received in the PDU."; 4677 } 4678 leaf raw-pdu { 4679 type binary; 4680 description 4681 "Received raw PDU."; 4682 } 4683 description 4684 "This notification is sent when the system 4685 receives a PDU with a different protocol version 4686 number. 4687 The notification generation must be throttled with at least 4688 a 5 second gap. 4689 "; 4690 } 4692 notification area-mismatch { 4693 uses notification-instance-hdr; 4694 uses notification-interface-hdr; 4695 leaf raw-pdu { 4696 type binary; 4697 description 4698 "Received raw PDU."; 4699 } 4700 description 4701 "This notification is sent when the system 4702 receives a Hello PDU from an IS that does 4703 not share any area address. 4704 The notification generation must be throttled with at least 4705 a 5 second gap. 4706 "; 4707 } 4709 notification rejected-adjacency { 4710 uses notification-instance-hdr; 4711 uses notification-interface-hdr; 4712 leaf raw-pdu { 4713 type binary; 4714 description 4715 "Received raw PDU."; 4716 } 4717 leaf reason { 4718 type string; 4719 description 4720 "The system may provide a reason to reject the 4721 adjacency. If the reason is not available, 4722 the system use an empty string."; 4723 } 4724 description 4725 "This notification is sent when the system 4726 receives a Hello PDU from an IS but does not 4727 establish an adjacency for some reason. 4728 The notification generation must be throttled with at least 4729 a 5 second gap. 4730 "; 4731 } 4733 notification protocols-supported-mismatch { 4734 uses notification-instance-hdr; 4735 uses notification-interface-hdr; 4736 leaf raw-pdu { 4737 type binary; 4738 description 4739 "Received raw PDU."; 4740 } 4741 leaf-list protocols { 4742 type uint8; 4743 description 4744 "The list of protocols supported by the 4745 remote system."; 4746 } 4747 description 4748 "This notification is sent when the system 4749 receives a non pseudonode LSP that has no matching 4750 protocol supported. 4751 The notification generation must be throttled with at least 4752 a 5 second gap. 4753 "; 4754 } 4756 notification lsp-error-detected { 4757 uses notification-instance-hdr; 4758 uses notification-interface-hdr; 4759 leaf lsp-id { 4760 type lsp-id; 4761 description 4762 "LSP ID."; 4763 } 4764 leaf raw-pdu { 4765 type binary; 4766 description 4767 "Received raw PDU."; 4768 } 4769 leaf error-offset { 4770 type uint32; 4771 description 4772 "If the problem is a malformed TLV, 4773 the error-offset points to the start of the TLV. 4774 If the problem is with the LSP header, 4775 the error-offset points to the suspicious byte"; 4776 } 4777 leaf tlv-type { 4778 type uint8; 4779 description 4780 "if the problem is a malformed TLV, the tlv-type is set 4781 to the type value of the suspicious TLV. 4782 Otherwise this leaf is not present."; 4783 } 4784 description 4785 "This notification is sent when the system 4786 receives a LSP with a parse error. 4787 The notification generation must be throttled with at least 4788 a 5 second gap. 4789 "; 4790 } 4792 notification adjacency-change { 4793 uses notification-instance-hdr; 4794 uses notification-interface-hdr; 4795 leaf neighbor { 4796 type string; 4797 description 4798 "Describes the name of the neighbor. If the 4799 name of the neighbor is not available, the 4800 field would be empty."; 4801 } 4802 leaf neighbor-system-id { 4803 type system-id; 4804 description 4805 "Describes the system-id of the neighbor."; 4806 } 4807 leaf level { 4808 type level; 4809 description 4810 "Describes the ISIS level of the adjacency."; 4811 } 4812 leaf state { 4813 type enumeration { 4814 enum "Up" { 4815 description 4816 "This state describes that 4817 adjacency is established."; 4818 } 4819 enum "Down" { 4820 description 4821 "This state describes that 4822 adjacency is no more established."; 4823 } 4824 } 4825 description 4826 "This leaf describes the new state of the 4827 ISIS adjacency."; 4828 } 4829 leaf reason { 4830 type string; 4831 description 4832 "If the adjacency is going to DOWN, 4833 this leaf provides a reason for the adjacency 4834 going down. The reason is provided as a text. 4835 If the adjacency is going to UP, no reason is 4836 provided."; 4837 } 4838 description 4839 "This notification is sent when an ISIS adjacency 4840 moves to Up state or to Down state."; 4841 } 4843 notification lsp-received { 4844 uses notification-instance-hdr; 4845 uses notification-interface-hdr; 4847 leaf lsp-id { 4848 type lsp-id; 4849 description 4850 "LSP ID."; 4851 } 4852 leaf sequence { 4853 type uint32; 4854 description 4855 "Sequence number of the received LSP."; 4856 } 4857 leaf received-timestamp { 4858 type yang:timestamp; 4860 description 4861 "This leaf describes the timestamp 4862 when the LSP was received. "; 4863 } 4864 leaf neighbor-system-id { 4865 type system-id; 4866 description 4867 "Describes the system-id of the neighbor 4868 that sent the LSP."; 4869 } 4870 description 4871 "This notification is sent when a LSP 4872 is received. 4873 The notification generation must be throttled with at least 4874 a 5 second gap. "; 4875 } 4877 notification lsp-generation { 4878 uses notification-instance-hdr; 4880 leaf lsp-id { 4881 type lsp-id; 4882 description 4883 "LSP ID."; 4884 } 4885 leaf sequence { 4886 type uint32; 4887 description 4888 "Sequence number of the received LSP."; 4889 } 4890 leaf send-timestamp { 4891 type yang:timestamp; 4893 description 4894 "This leaf describes the timestamp 4895 when our LSP was regenerated. "; 4896 } 4897 description 4898 "This notification is sent when a LSP 4899 is regenerated. 4900 The notification generation must be throttled with at least 4901 a 5 second gap. "; 4902 } 4904 } 4906 4908 8. IS-IS Segment Routing YANG Module 4910 file "ietf-isis-sr@2016-09-21.yang" 4912 module ietf-isis-sr { 4913 namespace "urn:ietf:params:xml:ns:" 4914 + "yang:ietf-isis-sr"; 4915 prefix isis-sr; 4917 import ietf-routing { 4918 prefix "rt"; 4919 } 4921 import ietf-segment-routing { 4922 prefix "sr"; 4923 } 4925 import ietf-isis { 4926 prefix "isis"; 4927 } 4929 organization 4930 "IETF ISIS Working Group"; 4932 contact 4933 "WG List: <mailto:spring@ietf.org> 4935 Editor: Stephane Litkowski 4936 <mailto:stephane.litkowski@orange.com> 4938 Acee Lindem 4939 <mailto:acee@cisco.com> 4940 Yingzhen Qu 4941 <mailto:yiqu@cisco.com> 4942 Pushpasis Sarkar 4943 <mailto:psarkar@juniper.net> 4944 Ing-Wher Chen 4945 <mailto:ing-wher.chen@ericsson.com> 4946 Jeff Tantsura 4947 <mailto:jeff.tantsura@ericsson.com> 4949 "; 4951 description 4952 "The YANG module defines a generic configuration model for 4953 Segment routing ISIS extensions common across all of the vendor 4954 implementations."; 4956 revision 2016-09-21 { 4957 description 4958 "Fixed XPATH in 'when' expression"; 4959 reference "draft-ietf-isis-yang-isis-cfg-11"; 4960 } 4961 revision 2016-09-20 { 4962 description 4963 " 4964 Align to draft-ietf-netmod-routing-cfg-23. 4965 "; 4966 reference "draft-ietf-isis-yang-isis-cfg-09"; 4967 } 4969 revision 2016-03-21 { 4970 description " 4971 * Removed routing-instance in path as per 4972 core routing model v21 4973 "; 4974 reference ""; 4975 } 4976 revision 2015-09-18 { 4977 description "no modif"; 4978 reference ""; 4979 } 4980 revision 2015-07-02 { 4981 description 4982 " 4983 * Add TILFA and rLFA SR 4984 * Add container to SRGB 4985 "; 4986 reference ""; 4987 } 4989 revision 2015-05-27 { 4990 description " 4991 * Initialization 4992 "; 4993 reference ""; 4994 } 4996 /* Identities */ 4998 /* Features */ 5000 feature remote-lfa-sr { 5001 description 5002 "Enhance rLFA to use SR path."; 5003 } 5005 feature ti-lfa { 5006 description 5007 "Enhance IPFRR with ti-lfa 5008 support"; 5009 } 5011 /* Groupings */ 5013 grouping adjacency-state { 5014 description 5015 "This group will extend adjacency state."; 5016 list adjacency-sid { 5017 key value; 5018 leaf af { 5019 type identityref { 5020 base rt:address-family; 5021 } 5022 description 5023 "Address-family associated with the 5024 segment ID"; 5025 } 5026 leaf value { 5027 type uint32; 5028 description 5029 "Value of the Adj-SID."; 5030 } 5031 leaf weight { 5032 type uint8; 5033 description 5034 "Weight associated with 5035 the adjacency SID."; 5036 } 5037 leaf protection-requested { 5038 type boolean; 5039 description 5040 "Describe if the adjacency SID 5041 must be protected."; 5042 } 5043 description 5044 "List of adjacency Segment IDs."; 5045 } 5046 } 5048 grouping prefix-segment-id { 5049 description 5050 "This group defines segment routing extensions 5051 for prefixes."; 5053 list sid-list { 5054 key value; 5056 leaf flags { 5057 type bits { 5058 bit readvertisment { 5059 position 7; 5060 description 5061 "If set, then the prefix to 5062 which this Prefix-SID is attached, 5063 has been propagated by the 5064 router either from another level 5065 or from redistribution."; 5066 } 5068 bit php { 5069 position 5; 5070 description 5071 "If set, then the penultimate hop MUST NOT 5072 pop the Prefix-SID before delivering the packet 5073 to the node 5074 that advertised the Prefix-SID."; 5075 } 5076 bit explicit-null { 5077 position 4; 5078 description 5079 "If set, any upstream neighbor of 5080 the Prefix-SID originator MUST replace 5081 the Prefix-SID with a 5082 Prefix-SID having an 5083 Explicit-NULL value (0 for IPv4 and 2 for 5084 IPv6) before forwarding the packet."; 5085 } 5086 bit value { 5087 position 3; 5088 description 5089 "If set, then the Prefix-SID carries a 5090 value (instead of an index). 5091 By default the flag is UNSET."; 5093 } 5094 bit local { 5095 position 2; 5096 description 5097 "If set, then the value/index carried by 5098 the Prefix-SID has local significance. 5099 By default the flag is UNSET."; 5100 } 5101 } 5102 description 5103 "Describes flags associated with the 5104 segment ID."; 5105 } 5107 leaf algorithm { 5108 type uint8; 5109 description 5110 "Algorithm to be used for path computation."; 5111 } 5112 leaf value { 5113 type uint32; 5114 description 5115 "Value of the prefix-SID."; 5116 } 5117 description 5118 "List of segments."; 5119 } 5120 } 5122 grouping adjacency-segment-id { 5123 description 5124 "This group defines segment routing extensions 5125 for adjacencies."; 5127 list sid-list { 5128 key value; 5130 leaf flags { 5131 type bits { 5132 bit address-family { 5133 position 7; 5134 description 5135 "If unset, then the Adj-SID refers 5136 to an adjacency with outgoing IPv4 encapsulation. 5137 If set then the Adj-SID refers to an adjacency 5138 with outgoing IPv6 encapsulation."; 5139 } 5140 bit backup { 5141 position 6; 5142 description 5143 "If set, the Adj-SID refers to an 5144 adjacency being protected 5145 (e.g.: using IPFRR or MPLS-FRR)"; 5146 } 5147 bit value { 5148 position 5; 5149 description 5150 "If set, then the SID carries a 5151 value (instead of an index). 5152 By default the flag is SET."; 5154 } 5155 bit local { 5156 position 4; 5157 description 5158 "If set, then the value/index carried by 5159 the SID has local significance. 5160 By default the flag is SET."; 5161 } 5162 bit set { 5163 position 3; 5164 description 5165 "When set, the S-Flag indicates that the 5166 Adj-SID refers to a set of adjacencies"; 5167 } 5168 } 5170 description 5171 "Describes flags associated with the 5172 segment ID."; 5173 } 5174 leaf weight { 5175 type uint8; 5176 description 5177 "The value represents the weight of the Adj-SID 5178 for the purpose of load balancing."; 5179 } 5180 leaf neighbor-id { 5181 type isis:system-id; 5182 description 5183 "Describes the system ID of the neighbor 5184 associated with the SID value. This is only 5185 used on LAN adjacencies."; 5186 } 5187 leaf value { 5188 type uint32; 5189 description 5190 "Value of the Adj-SID."; 5191 } 5192 description 5193 "List of segments."; 5194 } 5196 } 5197 grouping segment-routing-binding-tlv { 5198 list segment-routing-bindings { 5200 key "fec range"; 5202 leaf fec { 5203 type string; 5204 description 5205 "IP (v4 or v6) range to be bound to SIDs."; 5206 } 5208 leaf range { 5209 type uint16; 5210 description 5211 "Describes number of elements to assign 5212 a binding to."; 5213 } 5215 leaf flags { 5216 type bits { 5217 bit address-family { 5218 position 7; 5219 description 5220 "If unset, then the Prefix FEC 5221 carries an IPv4 Prefix. 5222 If set then the Prefix FEC carries an 5223 IPv6 Prefix."; 5224 } 5225 bit mirror { 5226 position 6; 5227 description 5228 "Set if the advertised SID/path 5229 corresponds to a mirrored context. 5230 "; 5231 } 5232 bit flooding { 5233 position 5; 5234 description 5235 "If the S bit is set(1), 5236 the IS-IS Router CAPABILITY TLV 5237 MUST be flooded across the entire routing domain. 5238 If the S bit is 5239 not set(0), the TLV MUST NOT be leaked between levels. 5241 This bit MUST NOT be altered during the TLV leaking."; 5242 } 5243 bit down { 5244 position 4; 5245 description 5246 "When the IS-IS Router CAPABILITY TLV is 5247 leaked from level-2 to level-1, the D bit 5248 MUST be set. Otherwise, this bit MUST 5249 be clear. IS-IS Router capability TLVs 5250 with the D bit set MUST NOT 5251 be leaked from level-1 to level-2. 5252 This is to prevent TLV looping. 5253 "; 5254 } 5255 bit attached { 5256 position 3; 5257 description 5258 "The originator of the SID/Label Binding 5259 TLV MAY set the A bit in order to signal 5260 that the prefixes and 5261 SIDs advertised in the SID/Label Binding 5262 TLV are directly 5263 connected to their originators. 5264 "; 5265 } 5267 } 5268 description 5269 "Flags of the binding."; 5270 } 5272 leaf weight { 5273 type uint8; 5274 description 5275 "Weight of the path for loadbalancing purpose."; 5276 } 5278 container binding { 5279 container prefix-sid { 5280 uses prefix-segment-id; 5281 description 5282 "Binding prefix SID to the range."; 5283 } 5284 leaf ero-metric { 5285 type uint32; 5286 description 5287 "Cost of ERO path."; 5288 } 5289 container ero { 5290 leaf address-family { 5291 type identityref { 5292 base rt:address-family; 5293 } 5294 description 5295 "Address-family."; 5296 } 5298 leaf loose { 5299 type boolean; 5300 description 5301 "Set to true, 5302 if hop is a loose hop."; 5303 } 5304 leaf address { 5305 type string; 5306 description 5307 "IP address of a node on the 5308 path."; 5309 } 5311 description 5312 "Binding ERO path to the range."; 5313 } 5314 container backup-ero { 5315 leaf address-family { 5316 type identityref { 5317 base rt:address-family; 5318 } 5319 description 5320 "Address-family."; 5321 } 5323 leaf loose { 5324 type boolean; 5325 description 5326 "Set to true, 5327 if hop is a loose hop."; 5328 } 5329 leaf address { 5330 type string; 5331 description 5332 "IP address of a node on the 5333 path."; 5334 } 5336 description 5337 "Binding backup ERO path to the range."; 5338 } 5339 container unnumbered-interface-id-ero { 5340 leaf router-id { 5341 type string; 5342 description 5343 "Router ID of the node owning the interface."; 5344 } 5345 leaf interface-id { 5346 type uint32; 5347 description 5348 "Interface ID on which the path is built."; 5349 } 5350 description 5351 "Binding a path over unnumbered interface."; 5352 } 5353 container backup-unnumbered-interface-id-ero { 5354 leaf router-id { 5355 type string; 5356 description 5357 "Router ID of the node owning the interface."; 5358 } 5359 leaf interface-id { 5360 type uint32; 5361 description 5362 "Interface ID on which the path is built."; 5363 } 5364 description 5365 "Binding a backup path over unnumbered interface."; 5366 } 5367 description 5368 "Bindings associated with the range."; 5369 } 5371 description 5372 "This container describes list of SID/Label 5373 bindings. 5374 ISIS reference is TLV 149."; 5375 } 5376 description 5377 "Defines binding TLV for database."; 5379 } 5380 /* Cfg */ 5382 augment "/rt:routing/" + 5383 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5384 "/isis:isis" { 5386 when "/rt:routing/rt:control-plane-protocols/"+ 5387 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5388 description 5389 "This augment ISIS routing protocol when used"; 5390 } 5391 description 5392 "This augments ISIS protocol configuration 5393 with segment routing."; 5395 uses sr:controlplane-cfg; 5396 container protocol-srgb { 5397 if-feature sr:protocol-srgb; 5398 uses sr:srgb-cfg; 5399 description 5400 "Per-protocol SRGB."; 5401 } 5403 } 5405 augment "/rt:routing/" + 5406 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5407 "/isis:isis/isis:interfaces/isis:interface" { 5408 when "/rt:routing/rt:control-plane-protocols/"+ 5409 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5410 description 5411 "This augment ISIS routing protocol when used"; 5412 } 5413 description 5414 "This augments ISIS protocol configuration 5415 with segment routing."; 5417 uses sr:igp-interface-cfg; 5418 } 5420 augment "/rt:routing/" + 5421 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5422 "/isis:isis/isis:interfaces/isis:interface"+ 5423 "/isis:fast-reroute" { 5424 when "/rt:routing/rt:control-plane-protocols/"+ 5425 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5426 description 5427 "This augment ISIS routing protocol when used"; 5428 } 5429 description 5430 "This augments ISIS IP FRR with TILFA."; 5432 container ti-lfa { 5433 if-feature ti-lfa; 5434 leaf enable { 5435 type boolean; 5436 description 5437 "Enables TI-LFA computation."; 5438 } 5439 description 5440 "TILFA configuration."; 5441 } 5443 } 5445 augment "/rt:routing/" + 5446 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5447 "/isis:isis/isis:interfaces/isis:interface"+ 5448 "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { 5449 when "/rt:routing/rt:control-plane-protocols/"+ 5450 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5451 description 5452 "This augment ISIS routing protocol when used"; 5453 } 5454 description 5455 "This augments ISIS remoteLFA config with 5456 use of segment-routing path."; 5458 leaf use-segment-routing-path { 5459 if-feature remote-lfa-sr; 5460 type boolean; 5461 description 5462 "force remote LFA to use segment routing 5463 path instead of LDP path."; 5464 } 5466 } 5468 /* Operational states */ 5470 augment "/rt:routing-state/" + 5471 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5472 "/isis:isis" { 5473 when "/rt:routing-state/rt:control-plane-protocols/"+ 5474 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5475 description 5476 "This augment ISIS routing protocol when used"; 5477 } 5478 description 5479 "This augments ISIS protocol configuration 5480 with segment routing."; 5482 uses sr:controlplane-cfg; 5483 container protocol-srgb { 5484 if-feature sr:protocol-srgb; 5485 uses sr:srgb-cfg; 5486 description 5487 "Per-protocol SRGB."; 5488 } 5490 } 5492 augment "/rt:routing-state/" + 5493 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5494 "/isis:isis/isis:interfaces/isis:interface" { 5495 when "/rt:routing-state/rt:control-plane-protocols/"+ 5496 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5497 description 5498 "This augment ISIS routing protocol when used"; 5499 } 5500 description 5501 "This augments ISIS protocol configuration 5502 with segment routing."; 5504 uses sr:igp-interface-cfg; 5505 } 5507 augment "/rt:routing-state/" + 5508 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5509 "/isis:isis/isis:interfaces/isis:interface" + 5510 "/isis:adjacencies/isis:adjacency" { 5511 when "/rt:routing-state/rt:control-plane-protocols/"+ 5512 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5513 description 5514 "This augment ISIS routing protocol when used"; 5515 } 5516 description 5517 "This augments ISIS protocol configuration 5518 with segment routing."; 5520 uses adjacency-state; 5521 } 5523 augment "/rt:routing-state/" + 5524 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5525 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 5526 "/isis:extended-is-neighbor/isis:neighbor" { 5527 when "/rt:routing-state/rt:control-plane-protocols/"+ 5528 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5529 description 5530 "This augment ISIS routing protocol when used"; 5531 } 5532 description 5533 "This augments ISIS protocol LSDB neighbor."; 5534 uses adjacency-segment-id; 5536 } 5537 augment "/rt:routing-state/" + 5538 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5539 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 5540 "/isis:mt-is-neighbor/isis:neighbor" { 5541 when "/rt:routing-state/rt:control-plane-protocols/"+ 5542 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5543 description 5544 "This augment ISIS routing protocol when used"; 5545 } 5546 description 5547 "This augments ISIS protocol LSDB neighbor."; 5548 uses adjacency-segment-id; 5550 } 5551 augment "/rt:routing-state/" + 5552 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5553 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 5554 "/isis:extended-ipv4-reachability/isis:prefixes" { 5555 when "/rt:routing-state/rt:control-plane-protocols/"+ 5556 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5557 description 5558 "This augment ISIS routing protocol when used"; 5559 } 5560 description 5561 "This augments ISIS protocol LSDB prefix."; 5562 uses prefix-segment-id; 5564 } 5565 augment "/rt:routing-state/" + 5566 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5567 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 5568 "/isis:mt-extended-ipv4-reachability/isis:prefixes" { 5569 when "/rt:routing-state/rt:control-plane-protocols/"+ 5570 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5571 description 5572 "This augment ISIS routing protocol when used"; 5573 } 5574 description 5575 "This augments ISIS protocol LSDB prefix."; 5576 uses prefix-segment-id; 5578 } 5579 augment "/rt:routing-state/" + 5580 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5581 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 5582 "/isis:ipv6-reachability/isis:prefixes" { 5583 when "/rt:routing-state/rt:control-plane-protocols/"+ 5584 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5585 description 5586 "This augment ISIS routing protocol when used"; 5587 } 5588 description 5589 "This augments ISIS protocol LSDB prefix."; 5590 uses prefix-segment-id; 5592 } 5593 augment "/rt:routing-state/" + 5594 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5595 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 5596 "/isis:mt-ipv6-reachability/isis:prefixes" { 5597 when "/rt:routing-state/rt:control-plane-protocols/"+ 5598 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5599 description 5600 "This augment ISIS routing protocol when used"; 5601 } 5602 description 5603 "This augments ISIS protocol LSDB prefix."; 5604 uses prefix-segment-id; 5606 } 5607 augment "/rt:routing-state/" + 5608 "rt:control-plane-protocols/rt:control-plane-protocol"+ 5609 "/isis:isis/isis:database/isis:level-db/isis:lsp" { 5610 when "/rt:routing-state/rt:control-plane-protocols/"+ 5611 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 5612 description 5613 "This augment ISIS routing protocol when used"; 5614 } 5615 description 5616 "This augments ISIS protocol LSDB."; 5617 uses segment-routing-binding-tlv; 5619 } 5620 /* Notifications */ 5622 } 5624 5626 9. Security Considerations 5628 Configuration and state data defined in this document are designed to 5629 be accessed via the NETCONF protocol [RFC6241]. 5631 As IS-IS is an IGP protocol (critical piece of the network), ensuring 5632 stability and security of the protocol is mandatory for the network 5633 service. 5635 Authors recommends to implement NETCONF access control model 5636 ([RFC6536]) to restrict access to all or part of the configuration to 5637 specific users. Access control to RPCs is also critical as RPC 5638 permits to clear protocol datastructures that would definitively 5639 impact the network service. This kind of RPC needs only to be used 5640 in specific cases by well-known experienced users. 5642 Authors consider that all the configuration is considered as 5643 sensitive/vulnerable as well as RPCs. But security teams can decide 5644 to open some part of the configuration to less experienced users 5645 depending on the internal organization, for example: 5647 o User FullWrite: would access to the whole data model. This kind 5648 of profile may be restricted to few experienced people. 5650 o User PartialWrite: would only access to configuration part within 5651 /isis/interfaces/interface. So this kind of profile is restricted 5652 to creation/modification/deletion of interfaces. This profile 5653 does not have access to RPC. 5655 o User Read: would only access to state part /isis-state. 5657 Unauthorized access to configuration or RPC may cause high damages to 5658 the network service. 5660 The /isis-state/database may contain authentication information. As 5661 presented in the description of the /isis-state/database/level- 5662 1/lsp/authentication/authentication-key, the authentication MUST 5663 never be presented in plaintext format for security reason. Authors 5664 recommends the usage of MD5 to present the authentication-key. 5666 Some authentication-key may also be present in the /isis 5667 configuration. When configuring IS-IS using the NETCONF protocol, 5668 authors recommends the usage of secure transport of NETCONF using SSH 5669 ([RFC6242]). 5671 10. Contributors 5673 Authors would like to thank Kiran Agrahara Sreenivasa, Dean 5674 Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the 5675 draft. 5677 11. Acknowledgements 5679 TBD. 5681 12. IANA Considerations 5683 The IANA is requested to assign two new URIs from the IETF XML 5684 registry ([RFC3688]). Authors are suggesting the following URIs : 5686 URI: urn:ietf:params:xml:ns:yang:ietf-isis 5687 Registrant Contact: IS-IS WG 5688 XML: N/A, the requested URI is an XML namespace 5690 URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr 5691 Registrant Contact: IS-IS WG 5692 XML: N/A, the requested URI is an XML namespace 5694 This document also requests two new YANG modules name in the YANG 5695 Module Names registry ([RFC6020]) with the following suggestion : 5697 name: ietf-isis 5698 namespace: urn:ietf:params:xml:ns:yang:ietf-isis 5699 prefix: isis 5700 reference: RFC XXXX 5702 name: ietf-isis-sr 5703 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr 5704 prefix: isis-sr 5705 reference: RFC XXXX 5707 13. Normative References 5709 [I-D.ietf-netmod-routing-cfg] 5710 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 5711 Management", draft-ietf-netmod-routing-cfg-23 (work in 5712 progress), August 2016. 5714 [I-D.ietf-rtgwg-yang-key-chain] 5715 Lindem, A., Qu, Y., Yeung, D., Chen, I., Zhang, Z., and Y. 5716 Yang, "Routing Key Chain YANG Data Model", draft-ietf- 5717 rtgwg-yang-key-chain-09 (work in progress), September 5718 2016. 5720 [I-D.ietf-spring-sr-yang] 5721 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 5722 Data Model for Segment Routing", draft-ietf-spring-sr- 5723 yang-03 (work in progress), July 2016. 5725 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 5726 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 5727 RFC2119, March 1997, 5728 . 5730 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 5731 DOI 10.17487/RFC3688, January 2004, 5732 . 5734 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5735 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 5736 . 5738 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 5739 the Network Configuration Protocol (NETCONF)", RFC 6020, 5740 DOI 10.17487/RFC6020, October 2010, 5741 . 5743 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 5744 and A. Bierman, Ed., "Network Configuration Protocol 5745 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 5746 . 5748 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 5749 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 5750 . 5752 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 5753 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 5754 10.17487/RFC6536, March 2012, 5755 . 5757 Appendix A. Example: NETCONF Reply 5759 This section gives an example of a reply to the NETCONF request 5760 for a device that implements the data model defined in this document. 5761 The example is written in XML. 5763 5764 5765 5766 SLI 5767 1.1.1.1 5768 5769 5770 5771 Loopback0 5772 5773 5774 Eth1 5775 5776 5777 5778 5779 ISIS 5780 5781 isis:isis 5782 5783 true 5784 level-2 5785 87FC.FCDF.4432 5786 49.0001 5787 5788 1.1.1.1 5789 5790 65535 5791 65000 5792 5793 wide 5794 5795 5796 111111 5797 5798 5799 5800 ipv4-unicast 5801 true 5802 5803 5804 5805 5806 Loopback0 5807 200 5808 5809 0 5810 5811 true 5812 5813 5814 Eth1 5815 level-2 5816 point-to-point 5817 5818 167890 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 Loopback0 5829 5830 5831 5832 5833 5834
5835 1.1.1.1 5836 32 5837
5838
5840
5841 5842 Eth1 5843 5844 5845 5846 5847 5848
5849 10.0.0.1 5850 30 5851
5852
5854
5855
5856
5858 Authors' Addresses 5860 Stephane Litkowski 5861 Orange 5863 Email: stephane.litkowski@orange.com 5865 Derek Yeung 5866 Cisco Systems 5868 Email: myeung@cisco.com 5870 Acee Lindem 5871 Cisco Systems 5873 Email: acee@cisco.com 5875 Jeffrey Zhang 5876 Juniper Networks 5878 Email: zzhang@juniper.net 5880 Ladislav Lhotka 5881 CZ.NIC 5883 Email: lhotka@nic.cz