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