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