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