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