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