idnits 2.17.1 draft-ietf-ospf-yang-06.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** There are 3 instances of too long lines in the document, the longest one being 6 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 455 has weird spacing: '...area-id are...' == Line 513 has weird spacing: '...rw name lea...' -- The document date (October 31, 2016) is 2733 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) == Outdated reference: A later version (-17) exists of draft-ietf-bfd-yang-03 == Outdated reference: A later version (-25) exists of draft-ietf-netmod-routing-cfg-24 == Outdated reference: A later version (-24) exists of draft-ietf-rtgwg-yang-key-chain-10 Summary: 3 errors (**), 0 flaws (~~), 6 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet D. Yeung 3 Internet-Draft Arrcus 4 Intended status: Informational Y. Qu 5 Expires: May 4, 2017 Cisco Systems 6 J. Zhang 7 Juniper Networks 8 I. Chen 9 Kuatro Technologies 10 A. Lindem 11 Cisco Systems 12 October 31, 2016 14 Yang Data Model for OSPF Protocol 15 draft-ietf-ospf-yang-06 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage OSPF. 22 Status of This Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at http://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on May 4, 2017. 39 Copyright Notice 41 Copyright (c) 2016 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (http://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with respect 49 to this document. Code Components extracted from this document must 50 include Simplified BSD License text as described in Section 4.e of 51 the Trust Legal Provisions and are provided without warranty as 52 described in the Simplified BSD License. 54 Table of Contents 56 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 57 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 58 2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 59 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 60 2.2. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 61 2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 5 62 2.4. Inheritance . . . . . . . . . . . . . . . . . . . . . . . 5 63 2.5. OSPF Router Configuration . . . . . . . . . . . . . . . . 6 64 2.6. OSPF Instance Configuration . . . . . . . . . . . . . . . 6 65 2.7. OSPF Area Configuration . . . . . . . . . . . . . . . . . 7 66 2.8. OSPF Interface Configuration . . . . . . . . . . . . . . 10 67 2.9. OSPF notification . . . . . . . . . . . . . . . . . . . . 12 68 3. OSPF BFD Yang Module . . . . . . . . . . . . . . . . . . . . 15 69 4. OSPF Yang Module . . . . . . . . . . . . . . . . . . . . . . 15 70 5. OSPF BFD Yang Module . . . . . . . . . . . . . . . . . . . . 91 71 6. Security Considerations . . . . . . . . . . . . . . . . . . . 94 72 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 94 73 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 94 74 8.1. Normative References . . . . . . . . . . . . . . . . . . 94 75 8.2. Informative References . . . . . . . . . . . . . . . . . 96 76 Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 97 77 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 97 79 1. Overview 81 YANG [RFC6020] is a data definition language used to define the 82 contents of a conceptual data store that allows networked devices to 83 be managed using NETCONF [RFC6241]. YANG is proving relevant beyond 84 its initial confines, as bindings to other interfaces (e.g., ReST) 85 and encodings other than XML (e.g., JSON) are being defined. 86 Furthermore, YANG data models can be used as the basis for 87 implementation of other interfaces, such as CLI and programmatic 88 APIs. 90 This document defines a YANG data model that can be used to configure 91 and manage OSPF and it is an augmentation to the core routing data 92 model. A core routing data model is defined in 93 [I-D.ietf-netmod-routing-cfg], and it provides the basis for the 94 development of data models for routing protocols. The interface data 95 model is defined in [RFC7223] and is used for referencing interfaces 96 from the routing protocol. The key-chain data model used for OSPF 97 authentication is defined in [I-D.ietf-rtgwg-yang-key-chain] and 98 provides both a reference to configured key-chains and an enumeration 99 of cryptographic algorithms. 101 Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In 102 addition to the core OSPF protocol, features described in other OSPF 103 RFCs are also supported. These includes demand circuit [RFC1793], 104 traffic engineering [RFC3630], multiple address family [RFC5838], 105 graceful restart [RFC3623] [RFC5187], NSSA [RFC3101], and OSPF(v3) as 106 a PE-CE Protocol [RFC4577], [RFC6565]. These non-core features are 107 optional in the OSPF data model. 109 1.1. Requirements Language 111 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 112 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 113 document are to be interpreted as described in [RFC2119]. 115 2. Design of Data Model 117 Although the basis of OSPF configuration elements like routers, 118 areas, and interfaces remains the same, the detailed configuration 119 model varies among router vendors. Differences are observed in terms 120 of how the protocol engine is tied to the routing domain, how 121 multiple protocol engines are be instantiated, and configuration 122 inheritance, among others. 124 The goal of this document is to define a data model that provides a 125 common user interface to the OSPFv2 and OSPFv3 protocols. There is 126 very little information that is designated as "mandatory", providing 127 freedom for vendors to adapt this data model to their respective 128 product implementations. 130 2.1. Overview 132 The OSPF YANG module defined in this document has all the common 133 building blocks for the OSPF protocol. 135 The OSPF YANG module augments the routing/routing-instance/routing- 136 protocols/routing-protocol path defined in the ietf-routing module. 138 module: ospf 139 +--rw routing 140 +--rw router-id? yang:dotted-quad 141 +--rw control-plane-protocols 142 +--rw control-plane-protocol* [type name] 143 +--rw ospf 144 . 145 . 146 +--rw all-instances-inherit {instance-inheritance}? 147 | . 148 | . 149 +--rw instance* [routing-instance af] 150 . 151 . 152 +--rw areas 153 | +--rw area* [area-id] 154 | . 155 | . 156 | +--rw all-interfaces-inherit {interface-inheritance}? 157 | . 158 | . 159 | +--rw virtual-links 160 | | +--rw virtual-link* [router-id] 161 | | . 162 | | . 163 | +--rw sham-links 164 | | +--rw sham-link* [local-id remote-id] 165 | | . 166 | | . 167 | +--rw interfaces 168 | | +--rw interface* [interface] 169 | | . 170 | | . 171 | . 172 | . 173 +--rw topologies 174 +--rw topology* [name] 176 The ospf module is intended to match to the vendor specific OSPF 177 configuration construct that is identified by the local identifier 178 'name'. The field 'version' allows support for OSPFv2 and OSPFv3. 180 The ospf container includes one or more OSPF protocol engines, each 181 enclosed in a separate instance entity. Each instance includes 182 information for the routing domain based on the [routing-instance af] 183 specification. There is no default routing domain assumed by the 184 data model. For example, to enable OSPF on a vendor's default IPv4 185 routing domain, an explicit instance entity with a specification like 187 ["default" "ipv4-unicast"] is required. The instance also contains 188 OSPF router level configuration 190 The instance/area and instance/area/interface containers respectively 191 define the OSPF configuration for OSPF areas and interfaces. 193 The instance/topology container defines the OSPF configuration for 194 OSPF topologies when the multi-topology feature is supported. 196 2.2. OSPFv2 and OSPFv3 198 The data model defined herein supports both OSPFv2 and OSPFv3. 200 The field 'version' is used to indicate the OSPF version and is 201 mandatory. Based on the configured version, the data model varies to 202 accommodate the differences between OSPFv2 and OSPFv3. 204 2.3. Optional Features 206 Optional features are beyond the basic OSPF configuration and it is 207 the responsibility of each vendor to decide whether to support a 208 given feature on a particular device. 210 This model defines a number of features, such as NSR, max-LSA, etc. 211 It is expected that vendors will support additional features through 212 vendor specific augmentations. 214 2.4. Inheritance 216 This data model supports configuration inheritance at different 217 levels including instance-level, area-level, and interface-level 218 inheritance. 220 The all-instances-inherit, all-areas-inherit, and all-interfaces- 221 inherit containers are defined to provide a consistent way to 222 configure inheritable configuration parameters. For example, 223 parameters defined in the all-instances-inherit container apply to 224 all OSPF instances. However, a particular instance configuration can 225 include leaves that override this inheritance. 227 Inheritance is defined as an optional feature, and vendors are 228 permitted to augment the inheritance containers with their own vendor 229 specific parameters. 231 2.5. OSPF Router Configuration 233 The ospf container is the top level container in this data model. It 234 contains shared information among the OSPF instances configured 235 within the container. 237 module: ospf 238 +--rw ospf 239 +--rw all-instances-inherit {instance-inheritance}? 240 | +--rw area 241 | +--rw interface 242 +--rw operation-mode? identityref 243 +--rw instance* [af] 244 . 245 . 247 2.6. OSPF Instance Configuration 249 The instance container represents an OSPF protocol engine and 250 contains the router level configuration. The routing domain for each 251 instance is dictated through the specification of [routing-instance 252 af]. 254 The all-areas-inherit container contains area configuration that may 255 be inherited by configured OSPF areas in the OSPF instance. 257 module: ospf 258 +--rw ospf 259 . 260 . 261 +--rw instance* [af] 262 +--rw af identityref 263 +--rw all-areas-inherit {area-inheritance}? 264 | +--rw area 265 | +--rw interface 266 +--rw explicit-router-id? yang:dotted-quad {explicit-router-id}? 267 +--rw admin-distance 268 | +--rw (scope)? 269 | +--:(single-value) 270 | | +--rw all? uint8 271 | +--:(multi-values) 272 | +--rw (granularity)? 273 | | +--:(detail) 274 | | | +--rw intra-area? uint8 275 | | | +--rw inter-area? uint8 276 | | +--:(coarse) 277 | | +--rw internal? uint8 278 | +--rw external? uint8 279 +--rw nsr {nsr}? 280 | +--rw enable? boolean 281 +--rw graceful-restart {graceful-restart}? 282 | +--rw enable? boolean 283 | +--rw helper-enable? boolean 284 | +--rw restart-interval? uint16 285 | +--rw helper-strict-lsa-checking? boolean 286 +--rw enable? boolean {admin-control}? 287 +--rw auto-cost {auto-cost}? 288 | +--rw enable? boolean 289 | +--rw reference-bandwidth? uint32 290 +--rw spf-control 291 | +--rw paths? uint16 {max-ecmp}? 292 +--rw database-control 293 | +--rw max-lsa? uint32 {max-lsa}? 294 +--rw stub-router {stub-router}? 295 | +--rw (trigger)? 296 | +--:(always) 297 | +--rw always! 298 +--rw mpls 299 | +--rw te-rid {te-rid}? 300 | | +--rw (source)? 301 | | +--:(interface) 302 | | | +--rw interface? if:interface-ref 303 | | +--:(explicit) 304 | | +--rw router-id? inet:ipv4-address 305 | +--rw ldp 306 | +--rw igp-sync? boolean {ldp-igp-sync}? 307 | +--rw autoconfig? boolean {ldp-igp-autoconfig}? 308 +--rw fast-reroute {fast-reroute}? 309 | +--rw lfa {lfa}? 311 2.7. OSPF Area Configuration 313 The area container contains OSPF area configuration and the list of 314 interface containers representing all the OSPF interfaces in the 315 area. 317 The all-interfaces-inherit contains interface configuration that may 318 be inherited by all OSPF area interfaces. 320 module: ospf 321 +--rw ospf 322 . 323 . 324 +--rw instance* [routing-instance af] 325 . 326 . 328 +--rw areas 329 | +--rw area* [area-id] 330 | +--rw area-id area-id-type 331 | +--rw all-interfaces-inherit {interface-inheritance}? 332 | | +--rw interface 333 | +--rw area-type? identityref 334 | +--rw summary? boolean 335 | +--rw default-cost? uint32 336 | +--rw ranges 337 | | +--rw range* [prefix] 338 | | +--rw prefix inet:ip-prefix 339 | | +--rw advertise? boolean 340 | | +--rw cost? uint24 341 | +--rw virtual-links 342 | | +--rw virtual-link* [router-id] 343 | | +--rw transit-area-id -> ../../../area-id 344 | | +--rw router-id yang:dotted-quad 345 | | +--rw hello-interval? uint16 346 | | +--rw dead-interval? uint32 347 | | +--rw retransmit-interval? uint16 348 | | +--rw transmit-delay? uint16 349 | | +--rw mtu-ignore? boolean {mtu-ignore}? 350 | | +--rw lls? boolean {lls}? 351 | | +--rw prefix-suppression? boolean {prefix-suppression}? 352 | | +--rw ttl-security {ttl-security}? 353 | | | +--rw enable? boolean 354 | | | +--rw hops? uint8 355 | | +--rw enable? boolean {admin-control}? 356 | | +--rw authentication 357 | | +--rw (auth-type-selection)? 358 | | +--:(auth-ipsec) {ospfv3-authentication-ipsec}? 359 | | | +--rw sa? string 360 | | +--:(auth-trailer-key-chain) 361 | | | +--rw key-chain? key-chain:key-chain-ref 362 | | +--:(auth-trailer-key) 363 | | +--rw key? string 364 | | +--rw crypto-algorithm 365 | | +--rw (algorithm)? 366 | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? 367 | | | +--rw hmac-sha1-12? empty 368 | | +--:(md5) 369 | | | +--rw md5? empty 370 | | +--:(sha-1) 371 | | | +--rw sha-1? empty 372 | | +--:(hmac-sha-1) 373 | | | +--rw hmac-sha-1? empty 374 | | +--:(hmac-sha-256) 375 | | | +--rw hmac-sha-256? empty 376 | | +--:(hmac-sha-384) 377 | | | +--rw hmac-sha-384? empty 378 | | +--:(hmac-sha-512) 379 | | | +--rw hmac-sha-512? empty 380 | | +--:(clear-text) {clear-text}? 381 | | +--rw clear-text? empty 382 | | +--:(replay-protection-only) 383 | | {replay-protection-only}? 384 | | +--rw replay-protection-only? empty 385 | +--rw sham-link 386 | | +--rw sham-link* [local-id remote-id] 387 | | +--rw local-id inet:ip-address 388 | | +--rw remote-id inet:ip-address 389 | | +--rw cost? uint16 390 | | +--rw hello-interval? uint16 391 | | +--rw dead-interval? uint16 392 | | +--rw retransmit-interval? uint16 393 | | +--rw transmit-delay? uint16 394 | | +--rw mtu-ignore? boolean {mtu-ignore}? 395 | | +--rw lls? boolean {lls}? 396 | | +--rw prefix-suppression? boolean {prefix-suppression}? 397 | | +--rw bfd? boolean {bfd}? 398 | | +--rw ttl-security {ttl-security}? 399 | | | +--rw enable? boolean 400 | | | +--rw hops? uint8 401 | | +--rw enable? boolean {admin-control}? 402 | | +--rw authentication 403 | | +--rw (auth-type-selection)? 404 | | +--:(auth-ipsec) {ospfv3-authentication-ipsec}? 405 | | | +--rw sa? string 406 | | +--:(auth-trailer-key-chain) 407 | | | +--rw key-chain? key-chain:key-chain-ref 408 | | +--:(auth-trailer-key) 409 | | +--rw key? string 410 | | +--rw crypto-algorithm 411 | | +--rw (algorithm)? 412 | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? 413 | | | +--rw hmac-sha1-12? empty 414 | | +--:(md5) 415 | | | +--rw md5? empty 416 | | +--:(sha-1) 417 | | | +--rw sha-1? empty 418 | | +--:(hmac-sha-1) 419 | | | +--rw hmac-sha-1? empty 420 | | +--:(hmac-sha-256) 421 | | | +--rw hmac-sha-256? empty 422 | | +--:(hmac-sha-384) 423 | | | +--rw hmac-sha-384? empty 424 | | +--:(hmac-sha-512) 425 | | | +--rw hmac-sha-512? empty 426 | | +--:(clear-text) {clear-text}? 427 | | +--rw clear-text? empty 428 | | +--:(replay-protection-only) 429 | | {replay-protection-only}? 430 | | +--rw replay-protection-only? empty 432 2.8. OSPF Interface Configuration 434 The interface container contains OSPF interface configuration. 436 module: ospf 437 +--rw ospf 438 . 439 . 440 +--rw instance* [routing-instance af] 441 . 442 . 443 +--rw areas 444 | +--rw area* [area-id] 445 . 446 . 447 | +--rw interfaces 448 | +--rw interface* [interface] 449 | +--rw name if:interface-ref 450 | +--rw network-type? enumeration 451 | +--rw passive? boolean 452 | +--rw demand-circuit? boolean {demand-circuit}? 453 | +--rw multi-areas 454 | | +--rw multi-area* [multi-area-id] {multi-area-adj}? 455 | | +--rw multi-area-id area-id-type 456 | | +--rw cost? uint16 457 | +--rw static-neighbors 458 | | +--rw neighbor* [address] 459 | | +--rw address inet:ip-address 460 | | +--rw cost? uint16 461 | | +--rw poll-interval? uint16 462 | | +--rw priority? uint8 463 | +--rw node-flag? boolean {node-flag}? 464 | +--rw fast-reroute {fast-reroute}? 465 | | +--rw lfa {lfa}? 466 | | +--rw candidate-disable? boolean 467 | | +--rw enable? boolean 468 | | +--rw remote-lfa {remote-lfa}? 469 | | +--rw enable? boolean 470 | +--rw hello-interval? uint16 471 | +--rw dead-interval? uint16 472 | +--rw retransmit-interval? uint16 473 | +--rw transmit-delay? uint16 474 | +--rw mtu-ignore? boolean {mtu-ignore}? 475 | +--rw lls? boolean {lls}? 476 | +--rw prefix-suppression? boolean {prefix-suppression}? 477 | +--rw ttl-security {ttl-security}? 478 | | +--rw enable? boolean 479 | | +--rw hops? uint8 480 | +--rw enable? boolean {admin-control}? 481 | +--rw authentication 482 | | +--rw (auth-type-selection)? 483 | | +--:(auth-ipsec) {ospfv3-authentication-ipsec}? 484 | | | +--rw sa? string 485 | | +--:(auth-trailer-key-chain) 486 | | | +--rw key-chain? key-chain:key-chain-ref 487 | | +--:(auth-trailer-key) 488 | | +--rw key? string 489 | | +--rw crypto-algorithm 490 | | +--rw (algorithm)? 491 | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? 492 | | | +--rw hmac-sha1-12? empty 493 | | +--:(md5) 494 | | | +--rw md5? empty 495 | | +--:(sha-1) 496 | | | +--rw sha-1? empty 497 | | +--:(hmac-sha-1) 498 | | | +--rw hmac-sha-1? empty 499 | | +--:(hmac-sha-256) 500 | | | +--rw hmac-sha-256? empty 501 | | +--:(hmac-sha-384) 502 | | | +--rw hmac-sha-384? empty 503 | | +--:(hmac-sha-512) 504 | | | +--rw hmac-sha-512? empty 505 | | +--:(clear-text) {clear-text}? 506 | | +--rw clear-text? empty 507 | | +--:(replay-protection-only) 508 | | {replay-protection-only}? 509 | | +--rw replay-protection-only? empty 510 | +--rw cost? uint16 511 | +--rw topologies 512 | | +--rw topology* [name] 513 | | +--rw name leafref 514 | | +--rw cost? uint32 515 | +--rw instance-id? uint8 517 2.9. OSPF notification 519 This YANG model defines a list of notifications that inform YANG 520 clients of important events detected during protocol operation. The 521 defined notifications cover the common set of traps from the OSPFv2 522 MIB [RFC4750] and OSPFv3 MIB [RFC5643]. 524 module: ospf 525 notifications: 526 +---n if-state-change 527 | +--ro routing-instance? string 528 | +--ro routing-protocol-type? -> ... 529 | +--ro routing-protocol-name? -> ... 530 | +--ro af? -> ... 531 | +--ro (if-link-type-selection)? 532 | | +--:(interface) 533 | | | +--ro interface 534 | | | +--ro interface? if:interface-ref 535 | | +--:(virtual-link) 536 | | | +--ro virtual-link 537 | | | +--ro area-id? area-id-type 538 | | | +--ro neighbor-router-id? yang:dotted-quad 539 | | +--:(sham-link) 540 | | +--ro sham-link 541 | | +--ro area-id? area-id-type 542 | | +--ro local-ip-addr? inet:ip-address 543 | | +--ro remote-ip-addr? inet:ip-address 544 | +--ro state? if-state-type 545 +---n if-config-error 546 | +--ro routing-instance? string 547 | +--ro routing-protocol-type? -> ... 548 | +--ro routing-protocol-name? -> ... 549 | +--ro af? -> ... 550 | +--ro (if-link-type-selection)? 551 | | +--:(interface) 552 | | | +--ro interface 553 | | | +--ro interface? if:interface-ref 554 | | +--:(virtual-link) 555 | | | +--ro virtual-link 556 | | | +--ro area-id? area-id-type 557 | | | +--ro neighbor-router-id? yang:dotted-quad 558 | | +--:(sham-link) 559 | | +--ro sham-link 560 | | +--ro area-id? area-id-type 561 | | +--ro local-ip-addr? inet:ip-address 562 | | +--ro remote-ip-addr? inet:ip-address 563 | +--ro packet-source? yang:dotted-quad 564 | +--ro packet-type? packet-type 565 | +--ro error? enumeration 566 +---n nbr-state-change 567 | +--ro routing-instance? string 568 | +--ro routing-protocol-type? -> ... 569 | +--ro routing-protocol-name? -> ... 570 | +--ro af? -> ... 571 | +--ro (if-link-type-selection)? 572 | | +--:(interface) 573 | | | +--ro interface 574 | | | +--ro interface? if:interface-ref 575 | | +--:(virtual-link) 576 | | | +--ro virtual-link 577 | | | +--ro area-id? area-id-type 578 | | | +--ro neighbor-router-id? yang:dotted-quad 579 | | +--:(sham-link) 580 | | +--ro sham-link 581 | | +--ro area-id? area-id-type 582 | | +--ro local-ip-addr? inet:ip-address 583 | | +--ro remote-ip-addr? inet:ip-address 584 | +--ro neighbor-router-id? yang:dotted-quad 585 | +--ro neighbor-ip-addr? yang:dotted-quad 586 | +--ro state? nbr-state-type 587 +---n nbr-restart-helper-status-change 588 | +--ro routing-instance? string 589 | +--ro routing-protocol-type? -> ... 590 | +--ro routing-protocol-name? -> ... 591 | +--ro af? -> ... 592 | +--ro (if-link-type-selection)? 593 | | +--:(interface) 594 | | | +--ro interface 595 | | | +--ro interface? if:interface-ref 596 | | +--:(virtual-link) 597 | | | +--ro virtual-link 598 | | | +--ro area-id? area-id-type 599 | | | +--ro neighbor-router-id? yang:dotted-quad 600 | | +--:(sham-link) 601 | | +--ro sham-link 602 | | +--ro area-id? area-id-type 603 | | +--ro local-ip-addr? inet:ip-address 604 | | +--ro remote-ip-addr? inet:ip-address 605 | +--ro neighbor-router-id? yang:dotted-quad 606 | +--ro neighbor-ip-addr? yang:dotted-quad 607 | +--ro status? restart-helper-status-type 608 | +--ro age? uint32 609 | +--ro exit-reason? restart-exit-reason-type 610 +---n rx-bad-packet 611 | +--ro routing-instance? string 612 | +--ro routing-protocol-type? -> ... 614 | +--ro routing-protocol-name? -> ... 615 | +--ro af? -> ... 616 | +--ro (if-link-type-selection)? 617 | | +--:(interface) 618 | | | +--ro interface 619 | | | +--ro interface? if:interface-ref 620 | | +--:(virtual-link) 621 | | | +--ro virtual-link 622 | | | +--ro area-id? area-id-type 623 | | | +--ro neighbor-router-id? yang:dotted-quad 624 | | +--:(sham-link) 625 | | +--ro sham-link 626 | | +--ro area-id? area-id-type 627 | | +--ro local-ip-addr? inet:ip-address 628 | | +--ro remote-ip-addr? inet:ip-address 629 | +--ro packet-source? yang:dotted-quad 630 | +--ro packet-type? packet-type 631 +---n lsdb-approaching-overflow 632 | +--ro routing-instance? string 633 | +--ro routing-protocol-type? -> ... 634 | +--ro routing-protocol-name? -> ... 635 | +--ro af? -> ... 636 | +--ro ext-lsdb-limit? uint32 637 +---n lsdb-overflow 638 | +--ro routing-instance? string 639 | +--ro routing-protocol-type? -> ... 640 | +--ro routing-protocol-name? -> ... 641 | +--ro af? -> ... 642 | +--ro ext-lsdb-limit? uint32 643 +---n nssa-translator-status-change 644 | +--ro routing-instance? string 645 | +--ro routing-protocol-type? -> ... 646 | +--ro routing-protocol-name? -> ... 647 | +--ro af? -> ... 648 | +--ro area-id? area-id-type 649 | +--ro status? nssa-translator-state-type 650 +---n restart-status-change 651 +--ro routing-instance? string 652 +--ro routing-protocol-type? -> ... 653 +--ro routing-protocol-name? -> ... 654 +--ro af? -> ... 655 +--ro status? restart-status-type 656 +--ro restart-interval? uint16 657 +--ro exit-reason? restart-exit-reason-type 659 3. OSPF BFD Yang Module 661 Additionally, this document defines a module that can be used to 662 configure and monitor the OSPF BFD feature. 664 Bidirectional Forwarding Detection (BFD) [RFC5880] is a network 665 protocol that is used for liveness detection of arbitrary paths 666 between systems. A YANG data model is defined in [I-D.ietf-bfd-yang] 667 that supports BFD configuration and management. 669 As a client of BFD, the OSPF protocol uses the services provided by 670 BFD. The OSPF BFD YANG augments the base OSPF module and is defined 671 as a separate module. Hence, an implementation that does not support 672 BFD can still use the OSPF base model without having to import the 673 BFD module [I-D.ietf-bfd-yang]. 675 module: ietf-ospf-bfd 676 augment /rt:routing/rt:control-plane-protocols 677 /rt:control-plane-protocol/ospf:ospf/ospf:instance 678 /ospf:areas/ospf:area/ospf:interfaces/ospf:interface: 679 +--rw bfd 680 +--rw enable? boolean 681 augment /rt:routing-state/rt:control-plane-protocols 682 /rt:control-plane-protocol/ospf:ospf/ospf:instance 683 /ospf:areas/ospf:area/ospf:interfaces/ospf:interface: 684 +--ro bfd 685 +--ro enable? boolean 687 4. OSPF Yang Module 689 file "ietf-ospf@2016-10-31.yang" 690 module ietf-ospf { 691 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; 693 prefix ospf; 695 import ietf-inet-types { 696 prefix "inet"; 697 } 699 import ietf-yang-types { 700 prefix "yang"; 701 } 703 import ietf-interfaces { 704 prefix "if"; 705 } 706 import ietf-routing { 707 prefix "rt"; 708 } 710 import ietf-key-chain { 711 prefix "key-chain"; 712 } 714 organization 715 "Cisco Systems 716 170 West Tasman Drive 717 San Jose, CA 95134-1706 718 USA"; 720 contact 721 "WG Web: 722 WG List: 724 WG Chair: Acee Lindem 725 727 WG Chair: Abhay Roy 728 730 Editor: Derek Yeung 731 732 Author: Derek Yeung 733 734 Author: Yingzhen Qu 735 736 Author: Jeffrey Zhang 737 738 Author: Ing-Wher Chen 739 740 Author: Dean Bogdanovic 741 742 Author: Kiran Agrahara Sreenivasa 743 "; 745 description 746 "This YANG module defines the generic configuration and 747 operational state for the OSPF protocol common to all 748 vendor implementations. It is intended that the module 749 will be extended by vendors to define vendor-specific 750 OSPF configuration parameters and policies, 751 for example route maps or route policies. 753 Terms and Acronyms 754 OSPF (ospf): Open Shortest Path First 756 IP (ip): Internet Protocol 758 IPv4 (ipv4):Internet Protocol Version 4 760 IPv6 (ipv6): Internet Protocol Version 6 762 MTU (mtu) Maximum Transmission Unit 763 "; 765 revision 2016-10-31 { 766 description 767 "* Update authors information. 768 * Rename candidate-disabled to candidiate-enable 769 and set the default value to TRUE. 770 * Rename node identifiers that end with 771 'enabled' to 'enable'. 772 * Set the default value of 773 ospf/instance/areas/area/interfaces/interface/ 774 fast-reroute/lfa/enable (previously named 'enabled') 775 to FALSE. 776 * Set the default value of 777 ospf/instance/areas/area/interfaces/interface/ 778 fast-reroute/remote-lfa/enable (previously named 'enabled') 779 to FALSE. 780 * Rename 781 ospf/instance/areas/area/interfaces/interface/ 782 static-neighbors/neighbor/address to 'identifier' 783 with type inet:ip-address 784 * Add 'dead-timer' to 785 ospf-state/instance/areas/area/interfaces/interface/ 786 neighbors/neighbor. 787 * Remove 'mtu-ignore' and 'prefix-suppression' from 788 virtual-link configuration. 789 * Adjust range specifications from 'transmit-delay', 790 'dead-interval', and 'retransmit-interval' in 791 ospf/instance/areas/area/interfaces/interface. 792 * Change the type of 793 ospf/instance/areas/area/interface/interface/dead-interval 794 to uint32 to match RFC2328 Appendix A.3.2. 795 * Change hello-timer and wait-timer unit to seconds. 796 * Update hello-timer, dead-timer and wait-timer descriptions. 797 * Add IEEE bandwidth type and update all TE bandwidth fields to use it. 798 * Add Nt-bit to OSPFv2 router LSA. 799 * Remove L-bit from OSPFv2 router LSA. 800 "; 801 reference 802 "RFC XXXX: A YANG Data Model for OSPF."; 803 } 805 revision 2016-07-07 { 806 description 807 "* Add ospfv3 AF bit. 808 * Add ospfv2 MT, L, O, DN bit. 809 * Add interface priority config. 810 * Change bdr-ip-address to type ip-address. 811 * Rename leaf interface to name. 812 * Rename rx-bad-packet to if-rx-bad-packet. 813 * Move virtual link placement to backbone area. 814 * Remove cost configuration from virtual link. 815 * Move if-feature multi-area-adj statement. 816 * Add type checksum16-type. 817 * Change LSA header checksum to use checksum16-type. 818 * Change routing-protocol to control-plane-protocol. 819 * Change import module name to ietf-key-chain."; 820 reference 821 "RFC XXXX: A YANG Data Model for OSPF."; 822 } 824 revision 2016-03-20 { 825 description 826 "* Reorganize *-config and *-operation groupings. 827 * Use *-config under state tree for applied config. 828 * Rename config router-id to explicit-router-id. 829 * Rename feature router-id to explicit-router-id. 830 * Add OSPFv3 instance ID. 831 * Add OSPFv3 interface ID. 832 * Add ip-address for DR and BDR. 833 * Remove routing-instance. 834 * Change import module name to ietf-routing-key-chain."; 835 reference 836 "RFC XXXX: A YANG Data Model for OSPF."; 837 } 839 revision 2015-10-19 { 840 description 841 "* Remove the abstract identity ospf. 842 * Make area-id-type dotted-quad only. 843 * Use area-id-type for all area-id leafs. 844 * Restructure notifications. 845 * Move BFD support to the new ietf-ospf-bfd module. 846 * Update author information. 847 * Editorial changes."; 848 reference 849 "RFC XXXX: A YANG Data Model for OSPF."; 851 } 853 revision 2015-09-02 { 854 description 855 "* Author information update. 856 * Editorial changes"; 857 reference 858 "RFC XXXX: A YANG Data Model for OSPF."; 859 } 861 revision 2015-07-06 { 862 description 863 "* Remove support for protocol-centric config. 864 * Enclose list in container, except for instance. 865 * Replace protocol-shutdown with admin-control. 866 * Add IP-FRR per-interface config. 867 * Reorganize max-path etc node. 868 * Add node-flag. 869 * Align config/operation hierarchy. 870 * Use relative path for reference to rib. 871 * Add ability to set single admin distance. 872 * Make unreserved bandwidth into list. 873 * Add F and T bit to OSPFv3 external LSA. 874 * Remove key statement inside LSA body. 875 * Add stub router support. 876 * Fix usage of af-area-config. 877 * Add statistics to operation data. 878 * Add local rib. 879 * Use dotted-quad for all router-id fields. 880 * Support more than one multi-area per interface. 881 * Use uint16 for LSA type. 882 * Update grouping notification-instance-hdr. 883 * Rework condition for opaque type and id in OSPFv2 LSA. 884 * Rename local-remote-ipv4-addr with remote-if-ipv4-addr. 885 * Add virtual-link/sham-link to operation state. 886 * Allow multiple link TLVs in one LSA. 887 * Fix bug in as-scope-lsas. 888 * Remove OSPFv3 restriction in link-scope-lsas. 889 * Editorial changes."; 890 reference 891 "RFC XXXX: A YANG Data Model for OSPF."; 892 } 894 revision 2015-03-09 { 895 description 896 "Initial revision."; 897 reference 898 "RFC XXXX: A YANG Data Model for OSPF."; 900 } 902 identity ospfv2 { 903 base "rt:routing-protocol"; 904 description "OSPFv2"; 905 } 907 identity ospfv3 { 908 base "rt:routing-protocol"; 909 description "OSPFv3"; 910 } 912 identity operation-mode { 913 description 914 "OSPF operation mode."; 915 } 917 identity ships-in-the-night { 918 base operation-mode; 919 description 920 "Ships-in-the-night operation mode in which 921 each OSPF instance carries only one address family"; 922 } 924 identity area-type { 925 description "Base identity for OSPF area type."; 926 } 928 identity normal { 929 base area-type; 930 description "OSPF normal area."; 931 } 933 identity stub { 934 base area-type; 935 description "OSPF stub area."; 936 } 938 identity nssa { 939 base area-type; 940 description "OSPF NSSA area."; 941 } 943 typedef uint24 { 944 type uint32 { 945 range "0 .. 16777215"; 946 } 947 description 948 "24-bit unsigned integer."; 949 } 951 typedef area-id-type { 952 type yang:dotted-quad; 953 description 954 "Area ID type."; 955 } 957 typedef route-type { 958 type enumeration { 959 enum intra-area { 960 description "OSPF intra-area route."; 961 } 962 enum inter-area { 963 description "OSPF inter-area route."; 964 } 965 enum external-1 { 966 description "OSPF type 1 external route."; 967 } 968 enum external-2 { 969 description "OSPF type 2 external route."; 970 } 971 enum nssa-1 { 972 description "OSPF type 1 NSSA route."; 973 } 974 enum nssa-2 { 975 description "OSPF type 2 NSSA route."; 976 } 977 } 978 description "OSPF route type."; 979 } 981 typedef if-state-type { 982 type enumeration { 983 enum Down { 984 value "1"; 985 description 986 "Interface down state."; 987 } 988 enum Loopback { 989 value "2"; 990 description 991 "Interface loopback state."; 992 } 993 enum Waiting { 994 value "3"; 995 description 996 "Interface waiting state."; 997 } 998 enum Point-to-Point { 999 value "4"; 1000 description 1001 "Interface point-to-point state."; 1002 } 1003 enum DR { 1004 value "5"; 1005 description 1006 "Interface Designated Router (DR) state."; 1007 } 1008 enum BDR { 1009 value "6"; 1010 description 1011 "Interface Backup Designated Router (BDR) state."; 1012 } 1013 enum DR-Other { 1014 value "7"; 1015 description 1016 "Interface Other Designated Router state."; 1017 } 1018 } 1019 description 1020 "OSPF interface state type."; 1021 } 1023 typedef nbr-state-type { 1024 type enumeration { 1025 enum Down { 1026 value "1"; 1027 description 1028 "Neighbor down state."; 1029 } 1030 enum Attempt { 1031 value "2"; 1032 description 1033 "Neighbor attempt state."; 1034 } 1035 enum Init { 1036 value "3"; 1037 description 1038 "Neighbor init state."; 1039 } 1040 enum 2-Way { 1041 value "4"; 1042 description 1043 "Neighbor 2-Way state."; 1045 } 1046 enum ExStart { 1047 value "5"; 1048 description 1049 "Neighbor exchange start state."; 1050 } 1051 enum Exchange { 1052 value "6"; 1053 description 1054 "Neighbor exchange state."; 1055 } 1056 enum Loading { 1057 value "7"; 1058 description 1059 "Neighbor loading state."; 1060 } 1061 enum Full { 1062 value "8"; 1063 description 1064 "Neighbor full state."; 1065 } 1066 } 1067 description 1068 "OSPF neighbor state type."; 1069 } 1071 typedef restart-helper-status-type { 1072 type enumeration { 1073 enum Not-Helping { 1074 value "1"; 1075 description 1076 "Restart helper status not helping."; 1077 } 1078 enum Helping { 1079 value "2"; 1080 description 1081 "Restart helper status helping."; 1082 } 1083 } 1084 description 1085 "Restart helper status type."; 1086 } 1088 typedef restart-exit-reason-type { 1089 type enumeration { 1090 enum None { 1091 value "1"; 1092 description 1093 "Not attempted."; 1094 } 1095 enum InProgress { 1096 value "2"; 1097 description 1098 "Restart in progress."; 1099 } 1100 enum Completed { 1101 value "3"; 1102 description 1103 "Successfully completed."; 1104 } 1105 enum TimedOut { 1106 value "4"; 1107 description 1108 "Timed out."; 1109 } 1110 enum TopologyChanged { 1111 value "5"; 1112 description 1113 "Aborted due to topology change."; 1114 } 1115 } 1116 description 1117 "Describes the outcome of the last attempt at a 1118 graceful restart, either by itself or acting 1119 as a helper."; 1120 } 1121 typedef packet-type { 1122 type enumeration { 1123 enum Hello { 1124 value "1"; 1125 description 1126 "OSPF hello packet."; 1127 } 1128 enum Database-Descripton { 1129 value "2"; 1130 description 1131 "OSPF database description packet."; 1132 } 1133 enum Link-State-Request { 1134 value "3"; 1135 description 1136 "OSPF link state request packet."; 1137 } 1138 enum Link-State-Update { 1139 value "4"; 1140 description 1141 "OSPF link state update packet."; 1142 } 1143 enum Link-State-Ack { 1144 value "5"; 1145 description 1146 "OSPF link state acknowlegement packet."; 1147 } 1148 } 1149 description 1150 "OSPF packet type."; 1151 } 1153 typedef nssa-translator-state-type { 1154 type enumeration { 1155 enum Enabled { 1156 value "1"; 1157 description 1158 "NSSA translator enabled state."; 1159 } 1160 enum Elected { 1161 description 1162 "NSSA translator elected state."; 1163 } 1164 enum Disabled { 1165 value "3"; 1166 description 1167 "NSSA translator disabled state."; 1168 } 1169 } 1170 description 1171 "OSPF NSSA translator state type."; 1172 } 1174 typedef restart-status-type { 1175 type enumeration { 1176 enum Not-Restarting { 1177 value "1"; 1178 description 1179 "Router is not restarting."; 1180 } 1181 enum Planned-Restart { 1182 description 1183 "Router is going through planned restart."; 1184 } 1185 enum Unplanned-Restart { 1186 value "3"; 1187 description 1188 "Router is going through unplanned restart."; 1190 } 1191 } 1192 description 1193 "OSPF graceful restart status type."; 1194 } 1196 typedef checksum16-type { 1197 type string { 1198 pattern '(0x)?[0-9a-fA-F]{4}'; 1199 } 1200 description 1201 "16-bit checksum in hex-string format 0xXXXX."; 1202 } 1204 typedef ieee-bandwidth { 1205 type string { 1206 pattern 1207 '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' 1208 + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' 1209 + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}'; 1210 } 1211 description 1212 "Bandwidth in IEEE 754 floating point 32-bit binary format: 1213 (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), 1214 where Exponent uses 8 bits, and Fraction uses 23 bits. 1215 The units are bytes per second. 1216 The encoding format is the external hexadecimal-significand 1217 character sequences specified in IEEE 754 and C99, 1218 restricted to be normalized, non-negative, and non-fraction: 1219 0x1.hhhhhhp{+}d or 0X1.HHHHHHP{+}D 1220 where 'h' and 'H' are hexadecimal digits, 'd' and 'D' are 1221 integers in the range of [0..127]. 1222 When six hexadecimal digits are used for 'hhhhhh' or 'HHHHHH', 1223 the least significant digit must be an even number. 1224 'x' and 'X' indicate hexadecimal; 'p' and 'P' indicate power 1225 of two. 1226 Some examples are: 0x0p0, 0x1p10, and 0x1.abcde2p+20"; 1227 reference 1228 "IEEE Std 754-2008: IEEE Standard for Floating-Point 1229 Arithmetic."; 1230 } 1232 feature multi-topology { 1233 description 1234 "Support Multiple-Topolgy Routing (MTR)."; 1235 } 1237 feature multi-area-adj { 1238 description 1239 "OSPF multi-area adjacency support as in RFC 5185."; 1240 } 1241 feature explicit-router-id { 1242 description 1243 "Set Router-ID per instance explicitly."; 1244 } 1246 feature demand-circuit { 1247 description 1248 "OSPF demand circuit support as in RFC 1793."; 1249 } 1251 feature mtu-ignore { 1252 description 1253 "Disable OSPF Database Description packet MTU 1254 mismatch checking."; 1255 } 1257 feature lls { 1258 description 1259 "OSPF link-local signaling (LLS) as in RFC 5613."; 1260 } 1262 feature prefix-suppression { 1263 description 1264 "OSPF prefix suppression support as in RFC 6860."; 1265 } 1267 feature ttl-security { 1268 description 1269 "OSPF TTL security check."; 1270 } 1272 feature nsr { 1273 description 1274 "Non-Stop-Routing (NSR)."; 1275 } 1277 feature graceful-restart { 1278 description 1279 "Graceful OSPF Restart as defined in RFC 3623 and 1280 RFC 5187."; 1281 } 1283 feature admin-control { 1284 description 1285 "Administrative control of the protocol state."; 1287 } 1289 feature auto-cost { 1290 description 1291 "Calculate OSPF interface cost according to 1292 reference bandwidth."; 1293 } 1295 feature max-ecmp { 1296 description 1297 "Setting maximum number of ECMP paths."; 1298 } 1300 feature max-lsa { 1301 description 1302 "Setting maximum number of LSAs the OSPF instance 1303 will accept."; 1304 } 1306 feature te-rid { 1307 description 1308 "TE Router-ID."; 1309 } 1311 feature ldp-igp-sync { 1312 description 1313 "LDP IGP synchronization."; 1314 } 1316 feature ldp-igp-autoconfig { 1317 description 1318 "LDP IGP auto-config."; 1319 } 1321 feature ospfv3-authentication-ipsec { 1322 description 1323 "Use IPsec for OSPFv3 authentication."; 1324 } 1326 feature fast-reroute { 1327 description 1328 "Support of IP Fast Reroute (IP-FRR)."; 1329 } 1331 feature node-flag { 1332 description 1333 "Support of node flag."; 1334 } 1335 feature lfa { 1336 description 1337 "Support of Loop Free Alternates (LFAs)."; 1338 } 1340 feature remote-lfa { 1341 description 1342 "Support of Remote Loop Free Alternates (R-LFA)."; 1343 } 1345 feature stub-router { 1346 description 1347 "Support of RFC 6987 OSPF Stub Router Advertisement."; 1348 } 1350 feature instance-inheritance { 1351 description 1352 "Support instance inheritance"; 1353 } 1355 feature area-inheritance { 1356 description 1357 "Support area inheritance"; 1358 } 1360 feature interface-inheritance { 1361 description 1362 "Support interface inheritance"; 1363 } 1365 feature pe-ce-protocol { 1366 description 1367 "Support PE-CE protocol"; 1368 } 1370 grouping tlv { 1371 description 1372 "TLV"; 1373 leaf type { 1374 type uint16; 1375 description "TLV type."; 1376 } 1377 leaf length { 1378 type uint16; 1379 description "TLV length."; 1380 } 1381 leaf value { 1382 type yang:hex-string; 1383 description "TLV value."; 1384 } 1385 } 1387 grouping unknown-tlvs { 1388 description 1389 "Unknown TLVs grouping - Used for unknown TLVs or 1390 unknown sub-TLVs."; 1391 container unknown-tlvs { 1392 description "All unknown TLVs."; 1393 list unknown-tlv { 1394 description "Unknown TLV."; 1395 uses tlv; 1396 } 1397 } 1398 } 1400 grouping ospfv2-router-link { 1401 description "OSPFv2 router link."; 1402 leaf link-id { 1403 type union { 1404 type inet:ipv4-address; 1405 type yang:dotted-quad; 1406 } 1407 description "Link ID."; 1408 } 1409 leaf link-data { 1410 type union { 1411 type inet:ipv4-address; 1412 type uint32; 1413 } 1414 description "Link data."; 1415 } 1416 leaf type { 1417 type uint8; 1418 description "Link type."; 1419 } 1420 } 1422 grouping ospfv2-lsa-body { 1423 description "OSPFv2 LSA body."; 1424 container router { 1425 when "../../header/type = 1" { 1426 description 1427 "Only applies to Router LSAs."; 1428 } 1429 description 1430 "Router LSA."; 1432 leaf flags { 1433 type bits { 1434 bit V { 1435 description 1436 "When set, the router is an endpoint of one or 1437 more virtual links."; 1438 } 1439 bit E { 1440 description 1441 "When set, the router is an AS Boundary Router 1442 (ASBR)."; 1443 } 1444 bit B { 1445 description 1446 "When set, the router is an Area Border 1447 Router (ABR)."; 1448 } 1449 bit Nt { 1450 description 1451 "When set, the router is an NSSA border router 1452 that is unconditionally translating NSSA LSAs 1453 into AS-external LSAs."; 1454 } 1455 } 1456 description "Flags."; 1457 } 1458 leaf num-of-links { 1459 type uint16; 1460 description "Number of links."; 1461 } 1462 container links { 1463 description "All router Links."; 1464 list link { 1465 description "Router LSA link."; 1466 uses ospfv2-router-link; 1467 container topologies { 1468 description "All topologies for the link."; 1469 list topology { 1470 description 1471 "Topology specific information."; 1472 leaf mt-id { 1473 type uint8; 1474 description 1475 "The MT-ID for the topology enabled on 1476 the link."; 1477 } 1478 leaf metric { 1479 type uint16; 1480 description "Metric for the topology."; 1481 } 1482 } 1483 } 1484 } 1485 } 1486 } 1487 container network { 1488 when "../../header/type = 2" { 1489 description 1490 "Only applies to Network LSAs."; 1491 } 1492 description 1493 "Network LSA."; 1494 leaf network-mask { 1495 type inet:ipv4-address; 1496 description 1497 "The IP address mask for the network."; 1498 } 1499 container attached-routers { 1500 description "All attached routers."; 1501 leaf-list attached-router { 1502 type yang:dotted-quad; 1503 description 1504 "List of the routers attached to the network."; 1505 } 1506 } 1507 } 1508 container summary { 1509 when "../../header/type = 3 or " 1510 + "../../header/type = 4" { 1511 description 1512 "Only applies to Summary LSAs."; 1513 } 1514 description 1515 "Summary LSA."; 1516 leaf network-mask { 1517 type inet:ipv4-address; 1518 description 1519 "The IP address mask for the network"; 1520 } 1521 container topologies { 1522 description "All topologies for the summary LSA."; 1523 list topology { 1524 description 1525 "Topology specific information."; 1526 leaf mt-id { 1527 type uint8; 1528 description 1529 "The MT-ID for the topology enabled for 1530 the summary."; 1531 } 1532 leaf metric { 1533 type uint24; 1534 description "Metric for the topology."; 1535 } 1536 } 1537 } 1538 } 1539 container external { 1540 when "../../header/type = 5 or " 1541 + "../../header/type = 7" { 1542 description 1543 "Only applies to AS-external LSAs and NSSA LSAs."; 1544 } 1545 description 1546 "External LSA."; 1547 leaf network-mask { 1548 type inet:ipv4-address; 1549 description 1550 "The IP address mask for the network"; 1551 } 1552 container topologies { 1553 description "All topologies for the external."; 1554 list topology { 1555 description 1556 "Topology specific information."; 1557 leaf mt-id { 1558 type uint8; 1559 description 1560 "The MT-ID for the topology enabled for the 1561 external or NSSA prefix."; 1562 } 1563 leaf flags { 1564 type bits { 1565 bit E { 1566 description 1567 "When set, the metric specified is a Type 2 1568 external metric."; 1569 } 1570 } 1571 description "Flags."; 1572 } 1573 leaf metric { 1574 type uint24; 1575 description "Metric for the topology."; 1577 } 1578 leaf forwarding-address { 1579 type inet:ipv4-address; 1580 description 1581 "Forwarding address."; 1582 } 1583 leaf external-route-tag { 1584 type uint32; 1585 description 1586 "Route tag for the topology."; 1587 } 1588 } 1589 } 1590 } 1591 container opaque { 1592 when "../../header/type = 9 or " 1593 + "../../header/type = 10 or " 1594 + "../../header/type = 11" { 1595 description 1596 "Only applies to Opaque LSAs."; 1597 } 1598 description 1599 "Opaque LSA."; 1601 uses unknown-tlvs; 1603 container router-address-tlv { 1604 description 1605 "Router address TLV."; 1606 leaf router-address { 1607 type inet:ipv4-address; 1608 description 1609 "Router address."; 1610 } 1611 } 1613 container link-tlvs { 1614 description "All link TLVs in the LSA."; 1615 container link-tlv { 1616 description "Link TLV."; 1617 leaf link-type { 1618 type uint8; 1619 mandatory true; 1620 description "Link type."; 1621 } 1622 leaf link-id { 1623 type union { 1624 type inet:ipv4-address; 1625 type yang:dotted-quad; 1626 } 1627 mandatory true; 1628 description "Link ID."; 1629 } 1630 container local-if-ipv4-addrs { 1631 description "All local interface IPv4 addresses."; 1632 leaf-list local-if-ipv4-addr { 1633 type inet:ipv4-address; 1634 description 1635 "List of local interface IPv4 addresses."; 1636 } 1637 } 1638 container remote-if-ipv4-addrs { 1639 description "All remote interface IPv4 addresses."; 1640 leaf-list remote-if-ipv4-addr { 1641 type inet:ipv4-address; 1642 description 1643 "List of remote interface IPv4 addresses."; 1644 } 1645 } 1646 leaf te-metric { 1647 type uint32; 1648 description "TE metric."; 1649 } 1650 leaf max-bandwidth { 1651 type ieee-bandwidth; 1652 description "Maximum bandwidth."; 1653 } 1654 leaf max-reservable-bandwidth { 1655 type ieee-bandwidth; 1656 description "Maximum reservable bandwidth."; 1657 } 1658 container unreserved-bandwidths { 1659 description "All unreserved bandwidths."; 1660 list unreserved-bandwidth { 1661 leaf priority { 1662 type uint8 { 1663 range "0 .. 7"; 1664 } 1665 description "Priority from 0 to 7."; 1666 } 1667 leaf unreserved-bandwidth { 1668 type ieee-bandwidth; 1669 description "Unreserved bandwidth."; 1670 } 1671 description 1672 "List of unreserved bandwidths for different 1673 priorities."; 1674 } 1675 } 1676 leaf admin-group { 1677 type uint32; 1678 description 1679 "Administrative group/Resource Class/Color."; 1680 } 1681 uses unknown-tlvs; 1682 } 1683 } 1685 container extended-prefix-tlvs { 1686 description "All extended prefix TLVs in the LSA."; 1687 list extended-prefix-tlv { 1688 description "Extended prefix TLV."; 1689 leaf route-type { 1690 type enumeration { 1691 enum unspecified { 1692 value "0"; 1693 description "Unspecified."; 1694 } 1695 enum intra-area { 1696 value "1"; 1697 description "OSPF intra-area route."; 1698 } 1699 enum inter-area { 1700 value "3"; 1701 description "OSPF inter-area route."; 1702 } 1703 enum external { 1704 value "5"; 1705 description "OSPF External route."; 1706 } 1707 enum nssa { 1708 value "7"; 1709 description "OSPF NSSA external route."; 1710 } 1711 } 1712 description "Route type."; 1713 } 1714 leaf flags { 1715 type bits { 1716 bit A { 1717 description 1718 "Attach flag."; 1719 } 1720 bit N { 1721 description 1722 "Node flag."; 1723 } 1724 } 1725 description "Flags."; 1726 } 1727 leaf prefix { 1728 type inet:ip-prefix; 1729 description "Address prefix."; 1730 } 1731 uses unknown-tlvs; 1732 } 1733 } 1735 container extended-link-tlvs { 1736 description "All extended link TLVs in the LSA."; 1737 list extended-link-tlv { 1738 description "Extended link TLV."; 1739 uses ospfv2-router-link; 1740 uses unknown-tlvs; 1741 } 1742 } 1743 } 1744 } 1746 grouping ospfv3-lsa-options { 1747 description "OSPFv3 LSA options"; 1748 leaf options { 1749 type bits { 1750 bit AF { 1751 description 1752 "When set, the router supprts OSPFv3 AFs as in RFC5838. "; 1753 } 1754 bit DC { 1755 description 1756 "When set, the router supports demand circuits."; 1757 } 1758 bit R { 1759 description 1760 "When set, the originator is an active router."; 1761 } 1762 bit N { 1763 description 1764 "If set, the router is attached to an NSSA"; 1765 } 1766 bit E { 1767 description 1768 "This bit describes the way AS-external LSAs 1769 are flooded"; 1770 } 1771 bit V6 { 1772 description 1773 "If clear, the router/link should be excluded 1774 from IPv6 routing calculaton"; 1775 } 1776 } 1777 mandatory true; 1778 description "OSPFv3 LSA options."; 1779 } 1780 } 1782 grouping ospfv3-lsa-prefix { 1783 description 1784 "OSPFv3 LSA prefix."; 1786 leaf prefix { 1787 type inet:ip-prefix; 1788 description 1789 "Prefix."; 1790 } 1791 leaf prefix-options { 1792 type bits { 1793 bit NU { 1794 description 1795 "When set, the prefix should be excluded 1796 from IPv6 unicast calculations."; 1797 } 1798 bit LA { 1799 description 1800 "When set, the prefix is actually an IPv6 interface 1801 address of the Advertising Router."; 1802 } 1803 bit P { 1804 description 1805 "When set, the NSSA area prefix should be 1806 translated to an AS External LSA and readvertised 1807 by the translating NSSA Border Router."; 1808 } 1809 bit DN { 1810 description 1811 "When set, the inter-area-prefix LSA or 1812 AS-external LSA prefix has been advertised as an 1813 L3VPN prefix."; 1814 } 1815 } 1816 mandatory true; 1817 description "Prefix options."; 1818 } 1819 } 1821 grouping ospfv3-lsa-external { 1822 description 1823 "AS-External and NSSA LSA."; 1824 leaf metric { 1825 type uint24; 1826 description "Metric"; 1827 } 1829 leaf flags { 1830 type bits { 1831 bit E { 1832 description 1833 "When set, the metric specified is a Type 2 1834 external metric."; 1835 } 1836 bit F { 1837 description 1838 "When set, a Forwarding Address is included 1839 in the LSA."; 1840 } 1841 bit T { 1842 description 1843 "When set, an External Route Tag is included 1844 in the LSA."; 1845 } 1846 } 1847 description "Flags."; 1848 } 1850 leaf referenced-ls-type { 1851 type uint16; 1852 description "Referenced Link State type."; 1853 } 1855 uses ospfv3-lsa-prefix; 1857 leaf forwarding-address { 1858 type inet:ipv6-address; 1859 description 1860 "Forwarding address."; 1861 } 1863 leaf external-route-tag { 1864 type uint32; 1865 description 1866 "Route tag."; 1867 } 1868 leaf referenced-link-state-id { 1869 type uint32; 1870 description 1871 "Referenced Link State ID."; 1872 } 1873 } 1875 grouping ospfv3-lsa-body { 1876 description "OSPFv3 LSA body."; 1877 container router { 1878 when "../../header/type = 8193" { // 0x2001 1879 description 1880 "Only applies to Router LSAs."; 1881 } 1882 description "Router LSA."; 1883 leaf flags { 1884 type bits { 1885 bit V { 1886 description 1887 "When set, the router is an endpoint of one or 1888 more virtual links."; 1889 } 1890 bit E { 1891 description 1892 "When set, the router is an AS Boundary Router 1893 (ASBR)."; 1894 } 1895 bit B { 1896 description 1897 "When set, the router is an Area Border 1898 Router (ABR)."; 1899 } 1900 bit Nt { 1901 description 1902 "When set, the router is an NSSA border router 1903 that is unconditionally translating NSSA LSAs 1904 into AS-external LSAs."; 1905 } 1906 } 1907 mandatory true; 1908 description "Router LSA flags."; 1909 } 1911 uses ospfv3-lsa-options; 1912 container links { 1913 description "All router link."; 1914 list link { 1915 description "Router LSA link."; 1916 leaf interface-id { 1917 type uint32; 1918 description "Interface ID."; 1919 } 1920 leaf neighbor-interface-id { 1921 type uint32; 1922 description "Neighbor Interface ID."; 1923 } 1924 leaf neighbor-router-id { 1925 type yang:dotted-quad; 1926 description "Neighbor Router ID."; 1927 } 1928 leaf type { 1929 type uint8; 1930 description "Link type."; 1931 } 1932 leaf metric { 1933 type uint16; 1934 description "Metric."; 1935 } 1936 } 1937 } 1938 } 1939 container network { 1940 when "../../header/type = 8194" { // 0x2002 1941 description 1942 "Only applies to Network LSA."; 1943 } 1944 description "Network LSA."; 1946 uses ospfv3-lsa-options; 1948 container attached-routers { 1949 description "All attached routers."; 1950 leaf-list attached-router { 1951 type yang:dotted-quad; 1952 description 1953 "List of the routers attached to the network."; 1954 } 1955 } 1956 } 1957 container inter-area-prefix { 1958 when "../../header/type = 8195" { // 0x2003 1959 description 1960 "Only applies to Inter-Area-Prefix LSAs."; 1961 } 1962 leaf metric { 1963 type uint24; 1964 description "Metric"; 1965 } 1966 uses ospfv3-lsa-prefix; 1967 description "Inter-Area-Prefix LSA."; 1968 } 1969 container inter-area-router { 1970 when "../../header/type = 8196" { // 0x2004 1971 description 1972 "Only applies to Inter-Area-Router LSAs."; 1973 } 1974 uses ospfv3-lsa-options; 1975 leaf metric { 1976 type uint24; 1977 description "Metric."; 1978 } 1979 leaf destination-router-id { 1980 type yang:dotted-quad; 1981 description 1982 "The Router ID of the router being described by the LSA."; 1983 } 1984 description "Inter-Area-Router LSA."; 1985 } 1986 container as-external { 1987 when "../../header/type = 16389" { // 0x4005 1988 description 1989 "Only applies to AS-external LSAs."; 1990 } 1992 uses ospfv3-lsa-external; 1994 description "AS-External LSA."; 1995 } 1996 container nssa { 1997 when "../../header/type = 8199" { // 0x2007 1998 description 1999 "Only applies to NSSA LSAs."; 2000 } 2001 uses ospfv3-lsa-external; 2003 description "NSSA LSA."; 2004 } 2005 container link { 2006 when "../../header/type = 8" { // 0x0008 2007 description 2008 "Only applies to Link LSAs."; 2009 } 2010 leaf rtr-priority { 2011 type uint8; 2012 description "Router Priority for the interface."; 2013 } 2014 uses ospfv3-lsa-options; 2016 leaf link-local-interface-address { 2017 type inet:ipv6-address; 2018 description 2019 "The originating router's link-local 2020 interface address for the link."; 2021 } 2023 leaf num-of-prefixes { 2024 type uint32; 2025 description "Number of prefixes."; 2026 } 2028 container prefixes { 2029 description "All prefixes for the link."; 2030 list prefix { 2031 description 2032 "List of prefixes associated with the link."; 2033 uses ospfv3-lsa-prefix; 2034 } 2035 } 2036 description "Link LSA."; 2037 } 2038 container intra-area-prefix { 2039 when "../../header/type = 8201" { // 0x2009 2040 description 2041 "Only applies to Intra-Area-Prefix LSA."; 2042 } 2043 description "Intra-Area-Prefix LSA."; 2045 leaf referenced-ls-type { 2046 type uint16; 2047 description "Referenced Link State type."; 2048 } 2049 leaf referenced-link-state-id { 2050 type uint32; 2051 description 2052 "Referenced Link State ID."; 2053 } 2054 leaf referenced-adv-router { 2055 type inet:ipv4-address; 2056 description 2057 "Referenced Advertising Router."; 2058 } 2060 leaf num-of-prefixes { 2061 type uint16; 2062 description "Number of prefixes."; 2063 } 2064 container prefixes { 2065 description "All prefixes in this LSA."; 2066 list prefix { 2067 description "List of prefixes in this LSA."; 2068 uses ospfv3-lsa-prefix; 2069 leaf metric { 2070 type uint24; 2071 description "Prefix Metric."; 2072 } 2073 } 2074 } 2075 } 2076 } 2078 grouping lsa-header { 2079 description 2080 "Common LSA for OSPFv2 and OSPFv3"; 2081 leaf age { 2082 type uint16; 2083 mandatory true; 2084 description "LSA age."; 2085 } 2086 leaf type { 2087 type uint16; 2088 mandatory true; 2089 description "LSA type."; 2090 } 2091 leaf adv-router { 2092 type yang:dotted-quad; 2093 mandatory true; 2094 description "LSA advertising router."; 2095 } 2096 leaf seq-num { 2097 type uint32; 2098 mandatory true; 2099 description "LSA sequence number."; 2100 } 2101 leaf checksum { 2102 type checksum16-type; 2103 mandatory true; 2104 description "LSA checksum."; 2105 } 2106 leaf length { 2107 type uint16; 2108 mandatory true; 2109 description "LSA length."; 2110 } 2111 } 2113 grouping ospfv2-lsa { 2114 description 2115 "OSPFv2 LSA."; 2116 container header { 2117 must "(type = 9 or type = 10 or type = 11) and " 2118 + "opaque-id and opaque-type " 2119 + "or (type != 9 and type != 10 and type != 11) " 2120 + "and not(opaque-id) and " 2121 + "not(opaque-type)" { 2122 description 2123 "Opaque type and ID only apply to Opaque LSAs."; 2124 } 2125 description 2126 "Decoded OSPFv2 LSA header data."; 2127 leaf option { 2128 type bits { 2129 bit MT { 2130 description 2131 "When set, the router supports multi-topology as in RFC 4915."; 2132 } 2133 bit DC { 2134 description 2135 "When set, the router supports demand circuits."; 2136 } 2137 bit P { 2138 description 2139 "Only used in type-7 LSA. When set, an NSSA 2140 border router should translate the type-7 LSA 2141 to a type-5 LSA."; 2142 } 2143 bit MC { 2144 description 2145 "When set, the router supports MOSPF."; 2146 } 2147 bit E { 2148 description 2149 "This bit describes the way AS-external LSAs 2150 are flooded."; 2151 } 2152 bit O { 2153 description 2154 "When set, the router is opaque-capable as in RFC 5250."; 2155 } 2156 bit DN { 2157 description 2158 "When a type 3, 5 or 7 LSA is sent from a PE to a CE, the DN 2159 bit must be set. See RFC 4576."; 2160 } 2161 } 2162 mandatory true; 2163 description "LSA options."; 2164 } 2165 leaf lsa-id { 2166 type inet:ipv4-address; 2167 mandatory true; 2168 description "LSA ID."; 2169 } 2171 leaf opaque-type { 2172 type uint8; 2173 description "Opaque type."; 2174 } 2176 leaf opaque-id { 2177 type uint24; 2178 description "Opaque ID."; 2179 } 2181 uses lsa-header; 2182 } 2183 container body { 2184 description 2185 "Decoded OSPFv2 LSA body data."; 2186 uses ospfv2-lsa-body; 2187 } 2188 } 2190 grouping ospfv3-lsa { 2191 description 2192 "Decoded OSPFv3 LSA."; 2193 container header { 2194 description 2195 "Decoded OSPFv3 LSA header data."; 2196 leaf lsa-id { 2197 type uint32; 2198 mandatory true; 2199 description "LSA ID."; 2201 } 2202 uses lsa-header; 2203 } 2204 container body { 2205 description 2206 "Decoded OSPF LSA body data."; 2207 uses ospfv3-lsa-body; 2208 } 2209 } 2210 grouping lsa-common { 2211 description 2212 "Common field for OSPF LSA represenation."; 2213 leaf decoded-completed { 2214 type boolean; 2215 description 2216 "The OSPF LSA body is fully decoded."; 2217 } 2218 leaf raw-data { 2219 type yang:hex-string; 2220 description 2221 "The complete LSA in network byte 2222 order hexadecimal as received or originated."; 2223 } 2224 } 2226 grouping lsa { 2227 description 2228 "OSPF LSA."; 2229 uses lsa-common; 2230 choice version { 2231 description 2232 "OSPFv2 or OSPFv3 LSA body."; 2233 container ospfv2 { 2234 description "OSPFv2 LSA"; 2235 uses ospfv2-lsa; 2236 } 2237 container ospfv3 { 2238 description "OSPFv3 LSA"; 2239 uses ospfv3-lsa; 2240 } 2241 } 2242 } 2244 grouping lsa-key { 2245 description 2246 "OSPF LSA key."; 2247 leaf lsa-id { 2248 type union { 2249 type inet:ipv4-address; 2250 type uint32; 2251 } 2252 description 2253 "LSA ID."; 2254 } 2255 leaf adv-router { 2256 type inet:ipv4-address; 2257 description 2258 "Advertising router."; 2259 } 2260 } 2262 grouping instance-stat { 2263 description "Per-instance statistics"; 2264 leaf originate-new-lsa-count { 2265 type yang:counter32; 2266 description "The number of new LSAs originated."; 2267 } 2268 leaf rx-new-lsas-count { 2269 type yang:counter32; 2270 description "The number of LSAs received."; 2271 } 2272 leaf as-scope-lsa-count { 2273 type yang:gauge32; 2274 description "The number of AS Scope LSAs."; 2275 } 2276 leaf as-scope-lsa-chksum-sum { 2277 type uint32; 2278 description 2279 "The sum of the LSA checksums for AS Scope LSAs."; 2280 } 2281 container database { 2282 description "Container for per AS-scope LSA statistics."; 2283 list as-scope-lsa-type { 2284 description "List of AS-scope LSA statistics"; 2285 leaf lsa-type { 2286 type uint16; 2287 description "AS-scope LSA type."; 2288 } 2289 leaf lsa-count { 2290 type yang:gauge32; 2291 description "The number of LSAs of the LSA type."; 2292 } 2293 leaf lsa-cksum-sum { 2294 type int32; 2295 description 2296 "The sum of the LSA checksums of the LSA type."; 2298 } 2299 } 2300 } 2301 } 2303 grouping area-stat { 2304 description "Per-area statistics."; 2305 leaf spf-runs-count { 2306 type yang:counter32; 2307 description 2308 "The number of times the intra-area SPF has run."; 2309 } 2310 leaf abr-count { 2311 type yang:gauge32; 2312 description 2313 "The total number of Area Border Routers (ABRs) 2314 reachable within this area."; 2315 } 2316 leaf asbr-count { 2317 type yang:gauge32; 2318 description 2319 "The total number of AS Border Routers (ASBRs)."; 2320 } 2321 leaf ar-nssa-translator-event-count { 2322 type yang:counter32; 2323 description 2324 "The number of NSSA translator-state changes."; 2325 } 2326 leaf area-scope-lsa-count { 2327 type yang:gauge32; 2328 description 2329 "The number of area scope LSAs in the area."; 2330 } 2331 leaf area-scope-lsa-cksum-sum { 2332 type int32; 2333 description "The sum of the area scope LSAs checksums."; 2334 } 2335 container database { 2336 description "Container for area scope LSA type statistics."; 2337 list area-scope-lsa-type { 2338 description "List of area scope LSA statistics"; 2339 leaf lsa-type { 2340 type uint16; 2341 description "Area scope LSA type."; 2342 } 2343 leaf lsa-count { 2344 type yang:gauge32; 2345 description "The number of LSAs of the LSA type."; 2347 } 2348 leaf lsa-cksum-sum { 2349 type int32; 2350 description 2351 "The sum of the LSA checksums of the LSA type."; 2352 } 2353 } 2354 } 2355 } 2357 grouping interface-stat { 2358 description "Per-interface statistics"; 2359 leaf if-event-count { 2360 type yang:counter32; 2361 description 2362 "The number of times this interface has changed its 2363 state or an error has occurred."; 2364 } 2365 leaf link-scope-lsa-count { 2366 type yang:gauge32; 2367 description "The number of link scope LSAs."; 2368 } 2369 leaf link-scope-lsa-cksum-sum { 2370 type uint32; 2371 description "The sum of link scope LSA checksums."; 2372 } 2373 container database { 2374 description "Container for link scope LSA type statistics."; 2375 list link-scope-lsa-type { 2376 description "List of link scope LSA statistics"; 2377 leaf lsa-type { 2378 type uint16; 2379 description "Link scope LSA type."; 2380 } 2381 leaf lsa-count { 2382 type yang:gauge32; 2383 description "The number of LSAs of the LSA type."; 2384 } 2385 leaf lsa-cksum-sum { 2386 type int32; 2387 description 2388 "The sum of the LSA checksums of the LSA type."; 2389 } 2390 } 2391 } 2392 } 2394 grouping neighbor-stat { 2395 description "Per-neighbor statistics."; 2396 leaf nbr-event-count { 2397 type yang:counter32; 2398 description 2399 "The number of times this neighbor has changed 2400 state or an error has occurred."; 2401 } 2402 leaf nbr-retrans-qlen { 2403 type yang:gauge32; 2404 description 2405 "The current length of the retransmission queue."; 2406 } 2407 } 2409 grouping instance-fast-reroute-config { 2410 description 2411 "This group defines global configuration of IP-FRR."; 2412 container fast-reroute { 2413 if-feature fast-reroute; 2414 description 2415 "This container may be augmented with global 2416 parameters for IP-FRR."; 2417 container lfa { 2418 if-feature lfa; 2419 description 2420 "This container may be augmented with 2421 global parameters for LFA. Container creation 2422 has no effect on LFA activation."; 2423 } 2424 } 2425 } 2427 grouping interface-fast-reroute-config { 2428 description 2429 "This group defines interface configuration of IP-FRR."; 2430 container fast-reroute { 2431 if-feature fast-reroute; 2432 container lfa { 2433 if-feature lfa; 2434 leaf candidate-enable { 2435 type boolean; 2436 default true; 2437 description 2438 "Enable the interface to be used as backup."; 2439 } 2440 leaf enable { 2441 type boolean; 2442 default false; 2443 description 2444 "Activates LFA - Per-prefix LFA computation 2445 is assumed."; 2446 } 2447 container remote-lfa { 2448 if-feature remote-lfa; 2449 leaf enable { 2450 type boolean; 2451 default false; 2452 description 2453 "Activates Remote LFA (R-LFA)."; 2454 } 2455 description 2456 "Remote LFA configuration."; 2457 } 2458 description 2459 "LFA configuration."; 2460 } 2461 description 2462 "IP Fast-reroute configuration."; 2463 } 2464 } 2466 grouping interface-physical-link-config { 2467 description 2468 "Interface cost configuration that only applies to 2469 physical interfaces and sham links."; 2470 leaf cost { 2471 type uint16 { 2472 range "1..65535"; 2473 } 2474 description 2475 "Interface cost."; 2476 } 2477 leaf mtu-ignore { 2478 if-feature mtu-ignore; 2479 type boolean; 2480 description 2481 "Enable/Disable bypassing the MTU mismatch check in 2482 Database Description packets."; 2483 } 2484 leaf prefix-suppression { 2485 if-feature prefix-suppression; 2486 type boolean; 2487 description 2488 "Suppress advertisement of the prefixes associated 2489 with the interface."; 2490 } 2492 } 2494 grouping interface-common-config { 2495 description 2496 "Common configuration for all types of interfaces, 2497 including virtual links and sham links."; 2499 leaf hello-interval { 2500 type uint16 { 2501 range "1..65535"; 2502 } 2503 units seconds; 2504 description 2505 "Interval between hello packets in seconds."; 2506 } 2508 leaf dead-interval { 2509 type uint32 { 2510 range "1..2147483647"; 2511 } 2512 units seconds; 2513 must "../dead-interval > ../hello-interval" { 2514 error-message "The dead interval must be " 2515 + "larger than the hello interval"; 2516 description 2517 "The value MUST be greater than 'hello-internval'."; 2518 } 2519 description 2520 "Interval after which a neighbor is 2521 declared down in seconds."; 2522 } 2524 leaf retransmit-interval { 2525 type uint16 { 2526 range "1..3600"; 2527 } 2528 units seconds; 2529 description 2530 "Interval between retransmitting unacknowledged Link 2531 State Advertisements (LSAs) in seconds."; 2532 } 2534 leaf transmit-delay { 2535 type uint16 { 2536 range "1..3600"; 2537 } 2538 units seconds; 2539 description 2540 "Estimated time needed to transmit Link State Update 2541 packets on the interface in seconds."; 2542 } 2544 leaf lls { 2545 if-feature lls; 2546 type boolean; 2547 description 2548 "Enable/Disable link-local signaling (LLS) support."; 2549 } 2551 container ttl-security { 2552 if-feature ttl-security; 2553 description "TTL security check."; 2554 leaf enable { 2555 type boolean; 2556 description 2557 "Enable/Disable TTL security check."; 2558 } 2559 leaf hops { 2560 type uint8 { 2561 range "1..254"; 2562 } 2563 description 2564 "Maximum number of hops that an OSPF packet may 2565 have traversed before reception."; 2566 } 2567 } 2568 leaf enable { 2569 if-feature admin-control; 2570 type boolean; 2571 default true; 2572 description 2573 "Enable/disable protocol on the interface."; 2574 } 2576 container authentication { 2577 description "Authentication configuration."; 2578 choice auth-type-selection { 2579 description 2580 "Options for expressing authentication setting."; 2581 case auth-ipsec { 2582 when "../../../../../../../rt:type = 'ospf:ospfv3'" { 2583 description "Applied to OSPFv3 only."; 2584 } 2585 if-feature ospfv3-authentication-ipsec; 2586 leaf sa { 2587 type string; 2588 description 2589 "Security Association name."; 2590 } 2591 } 2592 case auth-trailer-key-chain { 2593 leaf key-chain { 2594 type key-chain:key-chain-ref; 2595 description 2596 "key-chain name."; 2597 } 2598 } 2599 case auth-trailer-key { 2600 leaf key { 2601 type string; 2602 description 2603 "Key string in ASCII format."; 2604 } 2605 container crypto-algorithm { 2606 uses key-chain:crypto-algorithm-types; 2607 description 2608 "Cryptographic algorithm associated with key."; 2609 } 2610 } 2611 } 2612 } 2613 } // interface-common-config 2615 grouping interface-config { 2616 description "Configuration for real interfaces."; 2618 leaf network-type { 2619 type enumeration { 2620 enum "broadcast" { 2621 description 2622 "Specify OSPF broadcast multi-access network."; 2623 } 2624 enum "non-broadcast" { 2625 description 2626 "Specify OSPF Non-Broadcast Multi-Access 2627 (NBMA) network."; 2628 } 2629 enum "point-to-multipoint" { 2630 description 2631 "Specify OSPF point-to-multipoint network."; 2632 } 2633 enum "point-to-point" { 2634 description 2635 "Specify OSPF point-to-point network."; 2637 } 2638 } 2639 description 2640 "Network type."; 2641 } 2643 leaf passive { 2644 type boolean; 2645 description 2646 "Enable/Disable passive interface - a passive interface's 2647 prefix will be advertised but no neighbor adjacencies 2648 will be formed on the interface."; 2649 } 2651 leaf demand-circuit { 2652 if-feature demand-circuit; 2653 type boolean; 2654 description 2655 "Enable/Disable demand circuit."; 2656 } 2658 leaf priority { 2659 type uint8; 2660 description 2661 "Configure OSPF router priority."; 2662 } 2664 container multi-areas { 2665 if-feature multi-area-adj; 2666 description "Container for multi-area config."; 2667 list multi-area { 2668 key multi-area-id; 2669 description 2670 "Configure OSPF multi-area adjacency."; 2671 leaf multi-area-id { 2672 type area-id-type; 2673 description 2674 "Multi-area adjacency area ID."; 2675 } 2676 leaf cost { 2677 type uint16; 2678 description 2679 "Interface cost for multi-area adjacency."; 2680 } 2681 } 2682 } 2684 container static-neighbors { 2685 description "Statically configured neighbors."; 2687 list neighbor { 2688 key "identifier"; 2689 description 2690 "Specify a static OSPF neighbor."; 2692 leaf identifier { 2693 type inet:ip-address; 2694 description "Neighbor IPv4 address or router ID."; 2695 } 2697 leaf cost { 2698 type uint16 { 2699 range "1..65535"; 2700 } 2701 description "Neighbor cost."; 2702 } 2703 leaf poll-interval { 2704 type uint16 { 2705 range "1..65535"; 2706 } 2707 units seconds; 2708 description "Neighbor poll interval in seconds."; 2709 } 2710 leaf priority { 2711 type uint8 { 2712 range "1..255"; 2713 } 2714 description "Neighbor priority for DR election."; 2715 } 2716 } 2717 } 2719 leaf node-flag { 2720 if-feature node-flag; 2721 type boolean; 2722 default false; 2723 description 2724 "Set prefix as a node representative prefix."; 2725 } 2726 uses interface-fast-reroute-config; 2727 uses interface-common-config; 2728 uses interface-physical-link-config; 2729 } // grouping interface-config 2731 grouping neighbor-operation { 2732 description 2733 "OSPF neighbor operation data."; 2735 leaf address { 2736 type inet:ip-address; 2737 description 2738 "Neighbor address."; 2739 } 2740 leaf dr-router-id { 2741 type yang:dotted-quad; 2742 description "Neighbor's Designated Router (DR) router ID."; 2743 } 2745 leaf dr-ip-addr { 2746 type inet:ip-address; 2747 description "Neighbor's Designated Router (DR) IP address."; 2748 } 2750 leaf bdr-router-id { 2751 type yang:dotted-quad; 2752 description 2753 "Neighbor's Backup Designated Router (BDR) router ID."; 2754 } 2756 leaf bdr-ip-addr { 2757 type inet:ip-address; 2758 description 2759 "Neighbor's Backup Designated Router (BDR) IP Address."; 2760 } 2761 leaf state { 2762 type nbr-state-type; 2763 description 2764 "OSPF neighbor state."; 2765 } 2766 leaf dead-timer { 2767 type uint32; 2768 units "seconds"; 2769 description "This timer tracks the remaining time before 2770 the neighbor is declared dead."; 2771 } 2772 container statistics { 2773 description "Per neighbor statistics"; 2774 uses neighbor-stat; 2775 } 2776 } 2778 grouping interface-common-operation { 2779 description 2780 "OSPF interface common operation state."; 2782 reference "RFC2328 Section 9"; 2784 leaf state { 2785 type if-state-type; 2786 description "Interface state."; 2787 } 2789 leaf hello-timer { 2790 type uint32; 2791 units "seconds"; 2792 description "This timer tracks the remaining time before 2793 the next hello packet is sent."; 2794 } 2796 leaf wait-timer { 2797 type uint32; 2798 units "seconds"; 2799 description "This timer tracks the remaining time before 2800 the interface exits the Waiting state."; 2801 } 2803 leaf dr-router-id { 2804 type yang:dotted-quad; 2805 description "Designated Router (DR) router ID."; 2806 } 2808 leaf dr-ip-addr { 2809 type inet:ip-address; 2810 description "Designated Router (DR) IP address."; 2811 } 2813 leaf bdr-router-id { 2814 type yang:dotted-quad; 2815 description "Backup Designated Router (BDR) router ID."; 2816 } 2818 leaf bdr-ip-addr { 2819 type inet:ip-address; 2820 description "Backup Designated Router (BDR) IP Address."; 2821 } 2823 container statistics { 2824 description "Per interface statistics"; 2825 uses interface-stat; 2826 } 2828 container neighbors { 2829 description "All neighbors for the interface."; 2830 list neighbor { 2831 key "neighbor-router-id"; 2832 description 2833 "List of OSPF neighbors."; 2834 leaf neighbor-router-id { 2835 type yang:dotted-quad; 2836 description 2837 "Neighbor router ID."; 2838 } 2839 uses neighbor-operation; 2840 } // list of OSPF neighbors 2841 } 2842 } // interface-common-operation 2844 grouping interface-operation { 2845 description 2846 "OSPF interface operation state."; 2847 reference "RFC2328 Section 9"; 2849 uses interface-common-operation; 2851 container database { 2852 description "Link scope LSA database."; 2853 list link-scope-lsa-type { 2854 key "lsa-type"; 2855 description 2856 "List OSPF link scope LSA databases."; 2857 leaf lsa-type { 2858 type uint16; 2859 description "OSPF link scope LSA type."; 2860 } 2861 container link-scope-lsas { 2862 description 2863 "All link scope LSAs of this LSA type."; 2864 list link-scope-lsa { 2865 key "lsa-id adv-router"; 2866 description "List of OSPF link scope LSAs"; 2867 uses lsa-key; 2868 uses lsa { 2869 refine "version/ospfv2/ospfv2" { 2870 must "../../../../../../../../../../../" 2871 + "rt:type = 'ospf:ospfv2'" { 2872 description "OSPFv2 LSA."; 2873 } 2874 } 2875 refine "version/ospfv3/ospfv3" { 2876 must "../../../../../../../../../../../" 2877 + "rt:type = 'ospf:ospfv3'" { 2879 description "OSPFv3 LSA."; 2880 } 2881 } 2882 } 2883 } 2884 } 2885 } // list link-scope-lsas 2886 } 2887 } 2889 grouping virtual-link-config { 2890 description 2891 "OSPF virtual link configuration state."; 2893 uses interface-common-config; 2894 } 2896 grouping virtual-link-operation { 2897 description 2898 "OSPF virtual link operation state."; 2900 leaf cost { 2901 type uint16 { 2902 range "1..65535"; 2903 } 2904 description 2905 "Virtual link interface cost."; 2906 } 2907 uses interface-common-operation; 2908 } 2910 grouping sham-link-config { 2911 description 2912 "OSPF sham link configuration state."; 2914 uses interface-common-config; 2915 uses interface-physical-link-config; 2916 } 2918 grouping sham-link-operation { 2919 description 2920 "OSPF sham link operation state."; 2922 uses interface-common-operation; 2923 } 2925 grouping af-area-config { 2926 description 2927 "OSPF address-family specific area config state."; 2929 container ranges { 2930 description "Container for summary ranges"; 2932 list range { 2933 key "prefix"; 2934 description 2935 "Summarize routes matching address/mask 2936 (Area Border Routers (ABRs) only)"; 2937 leaf prefix { 2938 type inet:ip-prefix; 2939 description 2940 "IPv4 or IPv6 prefix"; 2941 } 2942 leaf advertise { 2943 type boolean; 2944 description 2945 "Advertise or hide."; 2946 } 2947 leaf cost { 2948 type uint24 { 2949 range "0..16777214"; 2950 } 2951 description 2952 "Advertised cost of summary route."; 2953 } 2954 } 2955 } 2956 } 2958 grouping area-common-config { 2959 description 2960 "OSPF area common configuration state."; 2962 leaf summary { 2963 when "../area-type = 'ospf:stub' or " 2964 + "../area-type = 'ospf:nssa'" { 2965 description 2966 "Summary advertisement into the stub/NSSA area."; 2967 } 2968 type boolean; 2969 description 2970 "Enable/Disable summary advertisement into the stub or 2971 NSSA area."; 2972 } 2973 leaf default-cost { 2974 when "../area-type = 'ospf:stub' or " 2975 + "../area-type = 'ospf:nssa'" { 2976 description 2977 "Cost for LSA default route advertised into the 2978 stub or NSSA area."; 2979 } 2980 type uint32 { 2981 range "1..16777215"; 2982 } 2983 description 2984 "Set the summary default route cost for a 2985 stub or NSSA area."; 2986 } 2987 } 2989 grouping area-config { 2990 description 2991 "OSPF area configuration state."; 2993 container all-interfaces-inherit { 2994 if-feature interface-inheritance; 2995 description 2996 "Inheritance for all interfaces"; 2997 container interface { 2998 description 2999 "Interface config to be inherited by all 3000 interfaces in the area."; 3001 } 3002 } 3004 leaf area-type { 3005 type identityref { 3006 base area-type; 3007 } 3008 default normal; 3009 description 3010 "Area type."; 3011 } 3013 uses area-common-config; 3015 uses af-area-config { 3016 when "../../../operation-mode = " 3017 + "'ospf:ships-in-the-night'" { 3018 description 3019 "Ships in the night configuration."; 3020 } 3021 } 3022 } 3023 grouping area-operation { 3024 description 3025 "OSPF area operation state."; 3027 container statistics { 3028 description "Per area statistics"; 3029 uses area-stat; 3030 } 3032 container database { 3033 description "Area scope LSA database."; 3034 list area-scope-lsa-type { 3035 key "lsa-type"; 3036 description "List OSPF area scope LSA databases."; 3037 leaf lsa-type { 3038 type uint16; 3039 description "OSPF area scope LSA type."; 3040 } 3041 container area-scope-lsas { 3042 description 3043 "All area scope LSAs of an area scope 3044 LSA type."; 3045 list area-scope-lsa { 3046 key "lsa-id adv-router"; 3047 description "List of OSPF area scope LSAs"; 3048 uses lsa-key; 3049 uses lsa { 3050 refine "version/ospfv2/ospfv2" { 3051 must "../../../../../../../../../" 3052 + "rt:type = 'ospf:ospfv2'" { 3053 description "OSPFv2 LSA."; 3054 } 3055 } 3056 refine "version/ospfv3/ospfv3" { 3057 must "../../../../../../../../../" 3058 + "rt:type = 'ospf:ospfv3'" { 3059 description "OSPFv3 LSA."; 3060 } 3061 } 3062 } 3063 } 3064 } 3065 } // list area-scope-lsas 3066 } 3067 } 3069 grouping local-rib { 3070 description "Local-rib grouping."; 3071 container local-rib { 3072 description "Local-rib."; 3073 list route { 3074 key "prefix"; 3075 description "Routes"; 3076 leaf prefix { 3077 type inet:ip-prefix; 3078 description "Destination prefix."; 3079 } 3080 container next-hops { 3081 description "All next hops for the route."; 3082 list next-hop { 3083 key "next-hop"; 3084 description "List of next hop for the route"; 3085 leaf outgoing-interface { 3086 type if:interface-ref; 3087 description 3088 "Name of the outgoing interface."; 3089 } 3090 leaf next-hop { 3091 type inet:ip-address; 3092 description "Nexthop address."; 3093 } 3094 } 3095 } 3096 leaf metric { 3097 type uint32; 3098 description "Metric for this route."; 3099 } 3100 leaf route-type { 3101 type route-type; 3102 description "Route type for this route."; 3103 } 3104 leaf route-tag { 3105 type uint32; 3106 description "Route tag for this route."; 3107 } 3108 } 3109 } 3110 } 3112 grouping instance-config { 3113 description 3114 "OSPF instance config state."; 3116 container all-areas-inherit { 3117 if-feature area-inheritance; 3118 description 3119 "Inheritance for all areas."; 3120 container area { 3121 description 3122 "Area config to be inherited by all areas."; 3123 } 3124 container interface { 3125 description 3126 "Interface config to be inherited by all interfaces 3127 in all areas."; 3128 } 3129 } 3131 leaf explicit-router-id { 3132 if-feature explicit-router-id; 3133 type yang:dotted-quad; 3134 description 3135 "Defined in RFC 2328. A 32-bit number 3136 that uniquely identifies the router."; 3137 } 3139 container admin-distance { 3140 description "Admin distance config state."; 3141 choice scope { 3142 description 3143 "Options for expressing admin distance 3144 as single or multiple values."; 3145 case single-value { 3146 leaf all { 3147 type uint8; 3148 description 3149 "Admin distance for intra-area, inter-area and 3150 external routes."; 3151 } 3152 } 3153 case multi-values { 3154 choice granularity { 3155 description 3156 "Options for expressing admin distance 3157 for intra-area and inter-area routes."; 3158 case detail { 3159 leaf intra-area { 3160 type uint8; 3161 description 3162 "Admin distance for intra-area routes."; 3163 } 3164 leaf inter-area { 3165 type uint8; 3166 description 3167 "Admin distance for inter-area routes."; 3168 } 3169 } 3170 case coarse { 3171 leaf internal { 3172 type uint8; 3173 description 3174 "Admin distance for both intra-area and 3175 inter-area routes."; 3176 } 3177 } 3178 } 3179 leaf external { 3180 type uint8; 3181 description 3182 "Admin distance for external routes."; 3183 } 3184 } 3185 } 3186 } 3188 container nsr { 3189 if-feature nsr; 3190 description 3191 "Non-Stop Routing (NSR) config state."; 3192 leaf enable { 3193 type boolean; 3194 description 3195 "Enable/Disable NSR."; 3196 } 3197 } 3199 container graceful-restart { 3200 if-feature graceful-restart; 3201 description 3202 "Graceful restart config state."; 3203 leaf enable { 3204 type boolean; 3205 description 3206 "Enable/Disable graceful restart as defined in RFC 3623 3207 for OSPFv2 and RFC 5187 for OSPFv3."; 3208 } 3209 leaf helper-enable { 3210 type boolean; 3211 description 3212 "Enable graceful restart helper support for restarting 3213 routers (RFC 3623 Section 3)."; 3214 } 3215 leaf restart-interval { 3216 type uint16 { 3217 range "1..1800"; // Range is defined in RFC 3623. 3218 } 3219 units seconds; 3220 default "120"; // Default is defined in RFC 3623. 3221 description 3222 "Interval in seconds to attempt graceful restart prior 3223 to failing (RFC 3623 Section B.1)"; 3224 } 3225 leaf helper-strict-lsa-checking { 3226 type boolean; 3227 description 3228 "Terminate graceful restart when an LSA topology change 3229 is detected (RFC 3623 Section B.2)."; 3230 } 3231 } 3233 leaf enable { 3234 if-feature admin-control; 3235 type boolean; 3236 default true; 3237 description 3238 "Enable/Disable the protocol."; 3239 } 3241 container auto-cost { 3242 if-feature auto-cost; 3243 description 3244 "Interface Auto-cost configuration state."; 3245 leaf enable { 3246 type boolean; 3247 description 3248 "Enable/Disable interface auto-cost."; 3249 } 3250 leaf reference-bandwidth { 3251 when "../enable = 'true'" { 3252 description "Only when auto cost is enabled"; 3253 } 3254 type uint32 { 3255 range "1..4294967"; 3256 } 3257 units Mbits; 3258 description 3259 "Configure reference bandwidth used to automatically 3260 determine interface cost (Mbits). The cost is the 3261 reference bandwidth divided by the interface speed 3262 with 1 being the minimum cost."; 3264 } 3265 } 3267 container spf-control { 3268 leaf paths { 3269 if-feature max-ecmp; 3270 type uint16 { 3271 range "1..32"; 3272 } 3273 description 3274 "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; 3275 } 3276 description "SPF calculation control."; 3277 } 3279 container database-control { 3280 leaf max-lsa { 3281 if-feature max-lsa; 3282 type uint32 { 3283 range "1..4294967294"; 3284 } 3285 description 3286 "Maximum number of LSAs OSPF the router will accept."; 3287 } 3288 description "Database maintenance control."; 3289 } 3291 container stub-router { 3292 if-feature stub-router; 3293 description "Set maximum metric configuration"; 3295 choice trigger { 3296 description 3297 "Specific triggers which will enable stub 3298 router state."; 3299 container always { 3300 presence 3301 "Enables unconditional stub router support"; 3302 description 3303 "Unconditional stub router state (advertise 3304 transit links with max metric"; 3305 } 3306 } 3307 } 3309 container mpls { 3310 description 3311 "OSPF MPLS config state."; 3313 container te-rid { 3314 if-feature te-rid; 3315 description 3316 "Stable OSPF Router IP Address used for Traffic 3317 Engineering (TE)"; 3318 choice source { 3319 description 3320 "Different options for specifying TE router ID."; 3321 case interface { 3322 leaf interface { 3323 type if:interface-ref; 3324 description 3325 "Use the interface's IPv4 address as TE 3326 router ID."; 3327 } 3328 } 3329 case explicit { 3330 leaf router-id { 3331 type inet:ipv4-address; 3332 description 3333 "Explicitly configure the TE router ID."; 3334 } 3335 } 3336 } 3337 } 3338 container ldp { 3339 description 3340 "OSPF MPLS LDP config state."; 3341 leaf igp-sync { 3342 if-feature ldp-igp-sync; 3343 type boolean; 3344 description 3345 "Enable LDP IGP synchronization."; 3346 } 3347 leaf autoconfig { 3348 if-feature ldp-igp-autoconfig; 3349 type boolean; 3350 description 3351 "Enable LDP IGP interface auto-configuration."; 3352 } 3353 } 3354 } 3355 uses instance-fast-reroute-config; 3356 } 3358 grouping instance-operation { 3359 description 3360 "OSPF Address Family operation state."; 3362 leaf router-id { 3363 type yang:dotted-quad; 3364 description 3365 "Defined in RFC 2328. A 32-bit number 3366 that uniquely identifies the router."; 3367 } 3369 uses local-rib; 3371 container statistics { 3372 description "Per instance statistics"; 3373 uses instance-stat; 3374 } 3376 container database { 3377 description "AS scope LSA database."; 3378 list as-scope-lsa-type { 3379 key "lsa-type"; 3380 description "List OSPF AS scope LSA databases."; 3381 leaf lsa-type { 3382 type uint16; 3383 description "OSPF AS scope LSA type."; 3384 } 3385 container as-scope-lsas { 3386 description "All AS scope of LSA of this LSA type."; 3387 list as-scope-lsa { 3388 key "lsa-id adv-router"; 3389 description "List of OSPF area scope LSAs"; 3390 uses lsa-key; 3391 uses lsa { 3392 refine "version/ospfv2/ospfv2" { 3393 must "../../../../../../../rt:type = " 3394 + "'ospf:ospfv2'" { 3395 description "OSPFv2 LSA."; 3396 } 3397 } 3398 refine "version/ospfv3/ospfv3" { 3399 must "../../../../../../../rt:type = " 3400 + "'ospf:ospfv3'" { 3401 description "OSPFv3 LSA."; 3402 } 3403 } 3404 } 3405 } 3406 } 3407 } // list as-scope-lsas 3408 } 3409 } 3410 grouping ospf-config { 3411 description 3412 "OSPF top configuration state."; 3414 container all-instances-inherit { 3415 if-feature instance-inheritance; 3416 description 3417 "Inheritance support to all instances."; 3418 container area { 3419 description 3420 "Area config to be inherited by all areas 3421 in all instances."; 3422 } 3423 container interface { 3424 description 3425 "Interface config to be inherited by all 3426 interfaces in all instances."; 3427 } 3428 } 3430 leaf operation-mode { 3431 type identityref { 3432 base operation-mode; 3433 } 3434 default ospf:ships-in-the-night; 3435 description 3436 "OSPF operation mode."; 3437 } 3438 } 3440 grouping ospf-operation { 3441 description 3442 "OSPF top operation state."; 3443 } 3445 grouping multi-topology-area-common-config { 3446 description 3447 "OSPF multi-topology area common configuration state."; 3448 leaf summary { 3449 when "../../../../../areas/area[area-id=current()/../area-id]/" 3450 + "area-type = 'ospf:stub' or " 3451 + "../../../../../areas/area[area-id=current()/../area-id]/" 3452 + "area-type = 'ospf:nssa'" { 3453 description 3454 "Summary advertisement into the stub/NSSA area."; 3455 } 3456 type boolean; 3457 description 3458 "Enable/Disable summary advertisement into the 3459 topology in the stub or NSSA area."; 3460 } 3461 leaf default-cost { 3462 when "../../../../../areas/area[area-id=current()/../area-id]/" 3463 + "area-type = 'ospf:stub' or " 3464 + "../../../../../areas/area[area-id=current()/../area-id]/" 3465 + "area-type = 'ospf:nssa'" { 3466 description 3467 "Cost for LSA default route advertised into the 3468 topology into the stub or NSSA area."; 3469 } 3470 type uint32 { 3471 range "1..16777215"; 3472 } 3473 description 3474 "Set the summary default route cost for a 3475 stub or NSSA area."; 3476 } 3477 } 3479 grouping multi-topology-area-config { 3480 description 3481 "OSPF multi-topology area configuration state."; 3483 uses multi-topology-area-common-config; 3485 uses af-area-config { 3486 when "../../../../../operation-mode = " 3487 + "'ospf:ships-in-the-night'" { 3488 description 3489 "Ships in the night configuration."; 3490 } 3491 } 3492 } 3494 grouping multi-topology-area-operation { 3495 description 3496 "OSPF multi-topology area operation state."; 3497 } 3499 grouping multi-topology-config { 3500 description 3501 "OSPF multi-topology configuration state."; 3502 } 3504 grouping multi-topology-operation { 3505 description 3506 "OSPF multi-topology operation state."; 3508 uses local-rib; 3509 } 3511 grouping multi-topology-interface-config { 3512 description 3513 "OSPF multi-topology configuration state."; 3515 leaf cost { 3516 type uint32; 3517 description 3518 "Interface cost for this topology."; 3519 } 3520 } 3522 grouping multi-topology-interface-operation { 3523 description 3524 "OSPF multi-topology operation state."; 3525 } 3527 grouping ospfv3-interface-config { 3528 description 3529 "OSPFv3 interface specific configuration state."; 3531 leaf instance-id { 3532 type uint8 { 3533 range "0 .. 31"; 3534 } 3535 description 3536 "OSPFv3 instance ID."; 3537 } 3538 } 3540 grouping ospfv3-interface-operation { 3541 description 3542 "OSPFv3 interface specific operation state."; 3544 leaf interface-id { 3545 type uint16; 3546 description 3547 "OSPFv3 interface ID."; 3548 } 3549 } 3551 augment "/rt:routing/rt:control-plane-protocols/" 3552 + "rt:control-plane-protocol" { 3553 when "rt:type = 'ospf:ospfv2' or rt:type = 'ospf:ospfv3'" { 3554 description 3555 "This augmentation is only valid for a routing protocol 3556 instance of OSPF (type 'ospfv2' or 'ospfv3')."; 3557 } 3558 description "OSPF augmentation."; 3560 container ospf { 3561 description 3562 "OSPF."; 3564 uses ospf-config; 3566 list instance { 3567 key "af"; 3568 description 3569 "An OSPF routing protocol instance."; 3571 leaf af { 3572 type identityref { 3573 base rt:address-family; 3574 } 3575 description 3576 "Address-family of the instance."; 3577 } 3579 uses instance-config; 3581 container areas { 3582 description "All areas."; 3583 list area { 3584 key "area-id"; 3585 description 3586 "List of OSPF areas"; 3587 leaf area-id { 3588 type area-id-type; 3589 description 3590 "Area ID."; 3591 } 3593 uses area-config; 3595 container virtual-links { 3596 when "../area-id = '0' and " 3597 + "../area-type = 'ospf:normal'" { 3598 description 3599 "Virutal links must be in backbone area."; 3600 } 3601 description "All virtual links."; 3602 list virtual-link { 3603 key "transit-area-id router-id"; 3604 description 3605 "OSPF virtual link"; 3606 leaf transit-area-id { 3607 type leafref { 3608 path "../../../area-id"; 3609 } 3610 must ".!='0.0.0.0'" { 3611 error-message "Virtual link transit area must " 3612 + "be non-zero."; 3613 description 3614 "Virtual-link trasit area must be non-zero area."; 3615 } 3616 description 3617 "Virtual link tranist area ID."; 3618 } 3619 leaf router-id { 3620 type yang:dotted-quad; 3621 description 3622 "Virtual Link remote endpoint router ID."; 3623 } 3625 uses virtual-link-config; 3626 } 3627 } 3628 container sham-links { 3629 if-feature pe-ce-protocol; 3630 description "All sham links."; 3631 list sham-link { 3632 key "local-id remote-id"; 3633 description 3634 "OSPF sham link"; 3635 leaf local-id { 3636 type inet:ip-address; 3637 description 3638 "Address of the local Sham Link endpoint."; 3639 } 3640 leaf remote-id { 3641 type inet:ip-address; 3642 description 3643 "Address of the remote Sham Link endpoint."; 3644 } 3645 uses sham-link-config; 3646 } 3647 } 3648 container interfaces { 3649 description "All interfaces."; 3650 list interface { 3651 key "name"; 3652 description 3653 "List of OSPF interfaces."; 3654 leaf name { 3655 type if:interface-ref; 3656 description 3657 "Interface name."; 3658 } 3659 uses interface-config; 3660 } // list of interfaces 3661 } 3662 } // list of areas 3663 } 3664 } // list of instance 3665 } // container ospf 3666 } 3668 augment "/rt:routing/rt:control-plane-protocols/" 3669 + "rt:control-plane-protocol/ospf:ospf/ospf:instance" { 3670 when "../../rt:type = 'ospf:ospfv2' or 3671 ../../rt:type = 'ospf:ospfv3'" { 3672 description 3673 "This augmentation is only valid for OSPF 3674 (type 'ospfv2' or 'ospfv3')."; 3675 } 3676 if-feature multi-topology; 3677 description 3678 "OSPF multi-topology instance configuration 3679 state augmentation."; 3680 container topologies { 3681 description "All topologies."; 3682 list topology { 3683 // Topology must be in the same routing-instance 3684 // and of same AF as the container. 3685 key "name"; 3686 description "OSPF topology."; 3687 leaf name { 3688 type leafref { 3689 path "../../../../../../../rt:ribs/rt:rib/rt:name"; 3690 } 3691 description "RIB"; 3692 } 3694 uses multi-topology-config; 3696 container areas { 3697 description "All areas in the topology."; 3698 list area { 3699 key "area-id"; 3700 description 3701 "List of OSPF areas"; 3702 leaf area-id { 3703 type area-id-type; 3704 description 3705 "Area ID."; 3706 } 3707 uses multi-topology-area-config; 3708 } 3709 } 3710 } 3711 } 3712 } 3714 augment "/rt:routing/rt:control-plane-protocols/" 3715 + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" 3716 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 3717 when "../../../../../../rt:type = 'ospf:ospfv2'" { 3718 description 3719 "This augmentation is only valid for OSPFv2."; 3720 } 3721 if-feature ospf:multi-topology; 3722 description 3723 "OSPF multi-topology interface configuration state 3724 augmentation."; 3725 container topologies { 3726 description "All topologies for the interface."; 3727 list topology { 3728 key "name"; 3729 description "OSPF interface topology."; 3730 leaf name { 3731 type leafref { 3732 path "../../../../../../../../../../../" 3733 + "rt:ribs/rt:rib/rt:name"; 3734 } 3735 description 3736 "One of the topologies enabled on this interface."; 3737 } 3739 uses multi-topology-interface-config; 3740 } 3741 } 3742 } 3744 augment "/rt:routing/rt:control-plane-protocols/" 3745 + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" 3746 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 3747 when "../../../../../../rt:type = 'ospf:ospfv3'" { 3748 description 3749 "This augmentation is only valid for OSPFv3."; 3750 } 3751 description 3752 "OSPFv3 interface specific configuration state 3753 augmentation."; 3754 uses ospfv3-interface-config; 3755 } 3757 augment "/rt:routing-state/" 3758 + "rt:control-plane-protocols/rt:control-plane-protocol" { 3759 when "rt:type = 'ospf:ospfv2' or " 3760 + "rt:type = 'ospf:ospfv3'" { 3761 description 3762 "This augmentation is only valid for a routing protocol 3763 instance of type 'ospfv2' or 'ospfv3'."; 3764 } 3765 description 3766 "OSPF operational state."; 3767 container ospf { 3768 description "OSPF"; 3770 uses ospf-config; 3771 uses ospf-operation; 3773 list instance { 3774 key "af"; 3775 description 3776 "An OSPF routing protocol instance."; 3778 leaf af { 3779 type identityref { 3780 base rt:address-family; 3781 } 3782 description 3783 "Address-family of the instance."; 3784 } 3786 uses instance-config; 3787 uses instance-operation; 3789 container areas { 3790 description "All areas"; 3791 list area { 3792 key "area-id"; 3793 description "List of OSPF areas"; 3794 leaf area-id { 3795 type area-id-type; 3796 description "Area ID."; 3797 } 3799 uses area-config; 3800 uses area-operation; 3802 container virtual-links { 3803 description "All virtual links."; 3804 list virtual-link { 3805 description 3806 "OSPF virtual link"; 3807 leaf transit-area-id { 3808 type leafref { 3809 path "../../../area-id"; 3810 } 3811 description 3812 "Virutal link transit area ID."; 3813 } 3814 leaf router-id { 3815 type yang:dotted-quad; 3816 description 3817 "Virtual link router ID."; 3818 } 3820 uses virtual-link-config; 3821 uses virtual-link-operation; 3822 } 3823 } 3824 container sham-links { 3825 description "All sham links."; 3826 list sham-link { 3827 description 3828 "OSPF sham link"; 3829 leaf local-id { 3830 type inet:ip-address; 3831 description 3832 "Address of the local Sham Link endpoint."; 3833 } 3834 leaf remote-id { 3835 type inet:ip-address; 3836 description 3837 "Address of the remote Sham Link endpoint."; 3838 } 3839 uses sham-link-config; 3840 uses sham-link-operation; 3841 } 3843 } 3845 container interfaces { 3846 description "All interfaces in the area."; 3847 list interface { 3848 key "name"; 3849 description 3850 "List of OSPF interfaces."; 3851 leaf name { 3852 // Should it refer to config state leaf? 3853 type if:interface-ref; 3854 description "Interface name."; 3855 } 3857 uses interface-config; 3858 uses interface-operation; 3859 } // list of OSPF interfaces 3860 } 3861 } // list of OSPF areas 3862 } 3863 } // list of instances 3864 } // container ospf 3865 } 3867 augment "/rt:routing-state/" 3868 + "rt:control-plane-protocols/rt:control-plane-protocol/" 3869 + "ospf:ospf/ospf:instance" { 3870 when "../../rt:type = 'ospf:ospfv2'" { 3871 description 3872 "This augmentation is only valid for OSPFv2."; 3873 } 3874 if-feature multi-topology; 3875 description 3876 "OSPF multi-topology instance operation state 3877 augmentation."; 3878 container topologies { 3879 description "All topologies."; 3880 list topology { 3881 // Topology must be in the same routing-instance 3882 // and of same AF as the container. 3883 key "name"; 3884 description "OSPF topology."; 3885 leaf name { 3886 type leafref { 3887 path "../../../../../../../" 3888 + "rt:ribs/rt:rib/rt:name"; 3889 } 3890 description "RIB"; 3892 } 3894 uses multi-topology-config; 3895 uses multi-topology-operation; 3897 container areas { 3898 description "All areas in the topology."; 3899 list area { 3900 key "area-id"; 3901 description 3902 "List of OSPF areas"; 3903 leaf area-id { 3904 type area-id-type; 3905 description 3906 "Area ID."; 3907 } 3908 uses multi-topology-area-config; 3909 uses multi-topology-area-operation; 3910 } 3911 } 3912 } 3913 } 3914 } 3916 augment "/rt:routing-state/" 3917 + "rt:control-plane-protocols/rt:control-plane-protocol/" 3918 + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" 3919 + "ospf:interfaces/ospf:interface" { 3920 when "../../../../../../rt:type = 'ospf:ospfv2'" { 3921 description 3922 "This augmentation is only valid for OSPFv2."; 3923 } 3924 if-feature ospf:multi-topology; 3925 description 3926 "OSPF multi-topology interface operation state 3927 augmentation."; 3928 container topologies { 3929 description "All topologies."; 3930 list topology { 3931 key "name"; 3932 description "OSPF interface topology."; 3933 leaf name { 3934 type leafref { 3935 path "../../../../../../../../../../../" 3936 + "rt:ribs/rt:rib/rt:name"; 3937 } 3938 description 3939 "One of the topologies enabled on this interface."; 3941 } 3942 uses multi-topology-interface-config; 3943 uses multi-topology-interface-operation; 3944 } 3945 } 3946 } 3948 augment "/rt:routing-state/" 3949 + "rt:control-plane-protocols/rt:control-plane-protocol/" 3950 + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" 3951 + "ospf:interfaces/ospf:interface" { 3952 when "../../../../../../rt:type = 'ospf:ospfv3'" { 3953 description 3954 "This augmentation is only valid for OSPFv3."; 3955 } 3956 description 3957 "OSPFv3 interface specific operation state 3958 augmentation."; 3959 uses ospfv3-interface-config; 3960 uses ospfv3-interface-operation; 3961 } 3963 grouping route-content { 3964 description 3965 "This grouping defines OSPF-specific route attributes."; 3966 leaf metric { 3967 type uint32; 3968 description "OSPF route metric."; 3969 } 3970 leaf tag { 3971 type uint32; 3972 default "0"; 3973 description "OSPF route tag."; 3974 } 3975 leaf route-type { 3976 type route-type; 3977 description "OSPF route type"; 3978 } 3979 } 3981 augment "/rt:routing-state/" 3982 + "rt:ribs/rt:rib/rt:routes/rt:route" { 3983 when "rt:source-protocol = 'ospf:ospfv2' or " 3984 + "rt:source-protocol = 'ospf:ospfv3'" { 3985 description 3986 "This augmentation is only valid for a routes whose 3987 source protocol is OSPF."; 3988 } 3989 description 3990 "OSPF-specific route attributes."; 3991 uses route-content; 3992 } 3994 grouping notification-instance-hdr { 3995 description 3996 "This group describes common instance specific 3997 data for notifications."; 3999 /* 4000 * TBD: 4001 * Need to define a way to reference routing-instance. 4002 */ 4003 leaf routing-instance { 4004 type string; 4005 description 4006 "Describe the routing instance."; 4007 } 4009 leaf routing-protocol-type { 4010 type leafref { 4011 path "/rt:routing/rt:control-plane-protocols/" 4012 + "rt:control-plane-protocol/rt:type"; 4013 } 4014 must ". = 'ospf:ospfv2' or . = 'ospf:ospfv3'" { 4015 description "Only applies to the OSPF routing protocol."; 4016 } 4017 description 4018 "OSPF routing protocol type (OSPFv2 or OSPFv3)."; 4019 } 4021 leaf routing-protocol-name { 4022 type leafref { 4023 path "/rt:routing/" 4024 + "rt:control-plane-protocols/rt:control-plane-protocol" 4025 + "[rt:type=current()/../routing-protocol-type]/" 4026 + "rt:name"; 4027 } 4028 description 4029 "OSPF routing protocol instance name."; 4030 } 4032 leaf af { 4033 type leafref { 4034 path "/rt:routing/" 4035 + "rt:control-plane-protocols/rt:control-plane-protocol" 4036 + "[rt:name=current()/../routing-protocol-name]" 4037 + "[rt:type=current()/../routing-protocol-type]/" 4038 + "ospf:ospf/ospf:instance/af"; 4039 } 4040 description 4041 "Address family of the OSPF instance."; 4042 } 4043 } 4045 grouping notification-interface { 4046 description 4047 "This grouping provides the interface information 4048 for the notifications."; 4050 choice if-link-type-selection { 4051 description 4052 "Options for link type."; 4053 container interface { 4054 description "Normal interface."; 4055 leaf interface { 4056 type if:interface-ref; 4057 description "Interface."; 4058 } 4059 } 4060 container virtual-link { 4061 description "virtual-link."; 4062 leaf transit-area-id { 4063 type area-id-type; 4064 description "Area ID."; 4065 } 4066 leaf neighbor-router-id { 4067 type yang:dotted-quad; 4068 description "Neighbor Router ID."; 4069 } 4070 } 4071 container sham-link { 4072 description "sham-link."; 4073 leaf area-id { 4074 type area-id-type; 4075 description "Area ID."; 4076 } 4077 leaf local-ip-addr { 4078 type inet:ip-address; 4079 description "Sham link local address."; 4080 } 4081 leaf remote-ip-addr { 4082 type inet:ip-address; 4083 description "Sham link remote address."; 4084 } 4086 } 4087 } 4088 } 4090 grouping notification-neighbor { 4091 description 4092 "This grouping provides the neighbor information 4093 for the notifications."; 4095 leaf neighbor-router-id { 4096 type yang:dotted-quad; 4097 description "Neighbor Router ID."; 4098 } 4100 leaf neighbor-ip-addr { 4101 type yang:dotted-quad; 4102 description "Neighbor address."; 4103 } 4104 } 4106 notification if-state-change { 4107 uses notification-instance-hdr; 4108 uses notification-interface; 4110 leaf state { 4111 type if-state-type; 4112 description "Interface state."; 4113 } 4114 description 4115 "This notification is sent when an interface 4116 state change is detected."; 4117 } 4119 notification if-config-error { 4120 uses notification-instance-hdr; 4121 uses notification-interface; 4123 leaf packet-source { 4124 type yang:dotted-quad; 4125 description "Source address."; 4126 } 4128 leaf packet-type { 4129 type packet-type; 4130 description "OSPF packet type."; 4131 } 4133 leaf error { 4134 type enumeration { 4135 enum "badVersion" { 4136 description "Bad version."; 4137 } 4138 enum "areaMismatch" { 4139 description "Area mistmatch."; 4140 } 4141 enum "unknownNbmaNbr" { 4142 description "Unknown NBMA neighbor."; 4143 } 4144 enum "unknownVirtualNbr" { 4145 description "Unknown virtual link neighbor."; 4146 } 4147 enum "authTypeMismatch" { 4148 description "Auth type mismatch."; 4149 } 4150 enum "authFailure" { 4151 description "Auth failure."; 4152 } 4153 enum "netMaskMismatch" { 4154 description "Network mask mismatch."; 4155 } 4156 enum "helloIntervalMismatch" { 4157 description "Hello interval mismatch."; 4158 } 4159 enum "deadIntervalMismatch" { 4160 description "Dead interval mismatch."; 4161 } 4162 enum "optionMismatch" { 4163 description "Option mismatch."; 4164 } 4165 enum "mtuMismatch" { 4166 description "MTU mismatch."; 4167 } 4168 enum "duplicateRouterId" { 4169 description "Duplicate router ID."; 4170 } 4171 enum "noError" { 4172 description "No error."; 4173 } 4174 } 4175 description "Error code."; 4176 } 4177 description 4178 "This notification is sent when interface 4179 config error is detected."; 4180 } 4181 notification nbr-state-change { 4182 uses notification-instance-hdr; 4183 uses notification-interface; 4184 uses notification-neighbor; 4186 leaf state { 4187 type nbr-state-type; 4188 description "Neighbor state."; 4189 } 4191 description 4192 "This notification is sent when neighbor 4193 state change is detected."; 4194 } 4196 notification nbr-restart-helper-status-change { 4197 uses notification-instance-hdr; 4198 uses notification-interface; 4199 uses notification-neighbor; 4201 leaf status { 4202 type restart-helper-status-type; 4203 description "Restart helper status."; 4204 } 4206 leaf age { 4207 type uint32; 4208 units seconds; 4209 description 4210 "Remaining time in current OSPF graceful restart 4211 interval, if the router is acting as a restart 4212 helper for the neighbor."; 4213 } 4215 leaf exit-reason { 4216 type restart-exit-reason-type; 4217 description 4218 "Restart helper exit reason."; 4219 } 4220 description 4221 "This notification is sent when a neighbor restart 4222 helper status change is detected."; 4223 } 4225 notification if-rx-bad-packet { 4226 uses notification-instance-hdr; 4227 uses notification-interface; 4228 leaf packet-source { 4229 type yang:dotted-quad; 4230 description "Source address."; 4231 } 4233 leaf packet-type { 4234 type packet-type; 4235 description "OSPF packet type."; 4236 } 4238 description 4239 "This notification is sent when an OSPF packet that 4240 cannot be parsed is received on an OSPF interface."; 4241 } 4243 notification lsdb-approaching-overflow { 4244 uses notification-instance-hdr; 4246 leaf ext-lsdb-limit { 4247 type uint32; 4248 description 4249 "The maximum number of non-default AS-external LSAs 4250 entries that can be stored in the link state database."; 4251 } 4253 description 4254 "This notification is sent when the number of LSAs 4255 in the router's link state database has exceeded 4256 ninety percent of the ext-lsdb-limit."; 4257 } 4259 notification lsdb-overflow { 4260 uses notification-instance-hdr; 4262 leaf ext-lsdb-limit { 4263 type uint32; 4264 description 4265 "The maximum number of non-default AS-external LSAs 4266 entries that can be stored in the link state database."; 4267 } 4269 description 4270 "This notification is sent when the number of LSAs 4271 in the router's link state database has exceeded 4272 ext-lsdb-limit."; 4273 } 4275 notification nssa-translator-status-change { 4276 uses notification-instance-hdr; 4278 leaf area-id { 4279 type area-id-type; 4280 description "Area ID."; 4281 } 4283 leaf status { 4284 type nssa-translator-state-type; 4285 description 4286 "NSSA translator status."; 4287 } 4289 description 4290 "This notification is sent when there is a change 4291 in the router's role in translating OSPF NSSA LSAs 4292 to OSPF AS-External LSAs."; 4293 } 4295 notification restart-status-change { 4296 uses notification-instance-hdr; 4298 leaf status { 4299 type restart-status-type; 4300 description 4301 "Restart status."; 4302 } 4304 leaf restart-interval { 4305 type uint16 { 4306 range "1..1800"; 4307 } 4308 units seconds; 4309 default "120"; 4310 description 4311 "Restart interval."; 4312 } 4314 leaf exit-reason { 4315 type restart-exit-reason-type; 4316 description 4317 "Restart exit reason."; 4318 } 4320 description 4321 "This notification is sent when the graceful restart 4322 state for the router has changed."; 4323 } 4325 } 4326 4328 5. OSPF BFD Yang Module 4330 file "ietf-ospf-bfd@2016-10-31.yang" 4331 module ietf-ospf-bfd { 4332 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-bfd"; 4334 prefix ospf-bfd; 4336 import ietf-routing { 4337 prefix "rt"; 4338 } 4339 import ietf-ospf { 4340 prefix "ospf"; 4341 } 4343 organization 4344 "Cisco Systems 4345 170 West Tasman Drive 4346 San Jose, CA 95134-1706 4347 USA"; 4349 contact 4350 "WG Web: 4351 WG List: 4353 WG Chair: Acee Lindem 4354 4356 WG Chair: Abhay Roy 4357 4359 Editor: Derek Yeung 4360 4361 Author: Derek Yeung 4362 4363 Author: Yingzhen Qu 4364 4365 Author: Acee Lindem 4366 4367 Author: Jeffrey Zhang 4368 4369 Author: Ing-Wher Chen 4370 4371 Author: Greg Hankins 4372 "; 4374 description 4375 "This YANG module defines the generic configuration 4376 and operational state for OSPF BFD, which is common 4377 across all of the vendor implementations. It is 4378 intended that the module will be extended by vendors to 4379 define vendor-specific OSPF BFD configuration 4380 and operational parameters and policies. 4382 Terms and Acronyms 4384 OSPF (ospf): Open Shortest Path First 4386 IP (ip): Internet Protocol 4388 IPv4 (ipv4):Internet Protocol Version 4 4390 IPv6 (ipv6): Internet Protocol Version 6 4391 "; 4393 revision 2016-10-31 { 4394 description 4395 "* Update authors information. 4396 * Rename bfd/enabled to bfd/enable"; 4397 reference 4398 "RFC XXXX: A YANG Data Model for OSPF BFD."; 4399 } 4401 revision 2016-07-07 { 4402 description 4403 "* Change routing-protocol to control-plane-protocol."; 4404 reference 4405 "RFC XXXX: A YANG Data Model for OSPF BFD."; 4406 } 4408 revision 2016-03-20 { 4409 description 4410 "* Remove routing-instance. 4411 * Remove use of bfd-protocol-parms from ietf-bfd module. 4412 * Remove import of ietf-bfd module."; 4413 reference 4414 "RFC XXXX: A YANG Data Model for OSPF BFD."; 4415 } 4417 revision 2015-10-19 { 4418 description 4419 "Initial revision."; 4420 reference 4421 "RFC XXXX: A YANG Data Model for OSPF BFD."; 4423 } 4425 /* Configuration */ 4427 augment "/rt:routing/rt:control-plane-protocols/" 4428 + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" 4429 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 4430 when "../../../../../../rt:type = 'ospf:ospfv2' or " 4431 + "../../../../../../rt:type = 'ospf:ospfv3'" { 4432 description 4433 "This augments the OSPF routing protocol when used"; 4434 } 4435 description 4436 "This augments OSPF protocol configuration 4437 with BFD."; 4439 container bfd { 4440 description "BFD configuration."; 4441 leaf enable { 4442 type boolean; 4443 default false; 4444 description 4445 "True if BFD is enabled for the OSPF interface."; 4446 } 4447 } 4448 } 4450 /* Operational states */ 4452 augment "/rt:routing-state/" 4453 + "rt:control-plane-protocols/rt:control-plane-protocol/" 4454 + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" 4455 + "ospf:interfaces/ospf:interface" { 4456 when "../../../../../../rt:type = 'ospf:ospfv2' or " 4457 + "../../../../../../rt:type = 'ospf:ospfv3'" { 4458 description 4459 "This augments the OSPF routing protocol when used"; 4460 } 4461 description 4462 "This augments OSPF protocol operation 4463 with BFD."; 4465 container bfd { 4466 description "BFD operation."; 4467 leaf enable { 4468 type boolean; 4469 description 4470 "True if BFD is enabled for the OSPF interface."; 4472 } 4473 } 4474 } 4475 } 4476 4478 6. Security Considerations 4480 The data model defined does not create any security implications. 4482 This draft does not change any underlying security issues inherent in 4483 [I-D.ietf-netmod-routing-cfg]. 4485 7. Acknowledgements 4487 The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, 4488 Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and 4489 Alan Davey for their thorough reviews and helpful comments. 4491 This document was produced using Marshall Rose's xml2rfc tool. 4493 8. References 4495 8.1. Normative References 4497 [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", 4498 RFC 1793, DOI 10.17487/RFC1793, April 1995, 4499 . 4501 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4502 Requirement Levels", BCP 14, RFC 2119, 4503 DOI 10.17487/RFC2119, March 1997, 4504 . 4506 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 4507 DOI 10.17487/RFC2328, April 1998, 4508 . 4510 [RFC3101] Murphy, P., "The OSPF Not-So-Stubby Area (NSSA) Option", 4511 RFC 3101, DOI 10.17487/RFC3101, January 2003, 4512 . 4514 [RFC3623] Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF 4515 Restart", RFC 3623, DOI 10.17487/RFC3623, November 2003, 4516 . 4518 [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering 4519 (TE) Extensions to OSPF Version 2", RFC 3630, 4520 DOI 10.17487/RFC3630, September 2003, 4521 . 4523 [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the 4524 Provider/Customer Edge Protocol for BGP/MPLS IP Virtual 4525 Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, 4526 June 2006, . 4528 [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., 4529 Coltun, R., and F. Baker, "OSPF Version 2 Management 4530 Information Base", RFC 4750, DOI 10.17487/RFC4750, 4531 December 2006, . 4533 [RFC5187] Pillay-Esnault, P. and A. Lindem, "OSPFv3 Graceful 4534 Restart", RFC 5187, DOI 10.17487/RFC5187, June 2008, 4535 . 4537 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 4538 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 4539 . 4541 [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information 4542 Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August 4543 2009, . 4545 [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and 4546 R. Aggarwal, "Support of Address Families in OSPFv3", 4547 RFC 5838, DOI 10.17487/RFC5838, April 2010, 4548 . 4550 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 4551 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 4552 . 4554 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 4555 the Network Configuration Protocol (NETCONF)", RFC 6020, 4556 DOI 10.17487/RFC6020, October 2010, 4557 . 4559 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 4560 and A. Bierman, Ed., "Network Configuration Protocol 4561 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 4562 . 4564 [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and 4565 M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge 4566 (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, 4567 June 2012, . 4569 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 4570 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 4571 . 4573 8.2. Informative References 4575 [I-D.ietf-bfd-yang] 4576 Zheng, L., Rahman, R., Networks, J., Jethanandani, M., and 4577 G. Mirsky, "Yang Data Model for Bidirectional Forwarding 4578 Detection (BFD)", draft-ietf-bfd-yang-03 (work in 4579 progress), July 2016. 4581 [I-D.ietf-netmod-routing-cfg] 4582 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 4583 Management", draft-ietf-netmod-routing-cfg-24 (work in 4584 progress), October 2016. 4586 [I-D.ietf-rtgwg-yang-key-chain] 4587 Lindem, A., Qu, Y., Yeung, D., Chen, I., Zhang, Z., and Y. 4588 Yang, "Routing Key Chain YANG Data Model", draft-ietf- 4589 rtgwg-yang-key-chain-10 (work in progress), October 2016. 4591 Appendix A. Contributors' Addreses 4593 Dean Bogdanovic 4594 Volta Networks, Inc. 4596 EMail: dean@voltanet.io 4598 Kiran Koushik Agrahara Sreenivasa 4599 Cisco Systems 4600 12515 Research Blvd, Bldg 4 4601 Austin, TX 78681 4602 USA 4604 EMail: kkoushik@cisco.com 4606 Authors' Addresses 4608 Derek Yeung 4609 Arrcus 4611 EMail: derek@arrcus.com 4613 Yingzhen Qu 4614 Cisco Systems 4615 170 West Tasman Drive 4616 San Jose, CA 95134 4617 USA 4619 EMail: yiqu@cisco.com 4621 Jeffrey Zhang 4622 Juniper Networks 4623 10 Technology Park Drive 4624 Westford, MA 01886 4625 USA 4627 EMail: zzhang@juniper.net 4629 Ing-Wher Chen 4630 Kuatro Technologies 4632 EMail: ichen@kuatrotech.com 4633 Acee Lindem 4634 Cisco Systems 4635 301 Midenhall Way 4636 Cary, NC 27513 4638 EMail: acee@cisco.com