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