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