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