idnits 2.17.1 draft-ietf-ospf-yang-24.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 1255 has weird spacing: '... allows a rou...' -- The document date (July 29, 2019) is 1733 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) ** Downref: Normative reference to an Experimental RFC: RFC 1765 ** Downref: Normative reference to an Experimental RFC: RFC 4973 ** Downref: Normative reference to an Informational RFC: RFC 5309 ** Downref: Normative reference to an Informational RFC: RFC 5714 ** Downref: Normative reference to an Informational RFC: RFC 6987 Summary: 5 errors (**), 0 flaws (~~), 2 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: Standards Track Y. Qu 5 Expires: January 30, 2020 Huawei 6 J. Zhang 7 Juniper Networks 8 I. Chen 9 The MITRE Corporation 10 A. Lindem 11 Cisco Systems 12 July 29, 2019 14 YANG Data Model for OSPF Protocol 15 draft-ietf-ospf-yang-24 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage OSPF. The model is based on YANG 1.1 as defined in RFC 21 7950 and conforms to the Network Management Datastore Architecture 22 (NDMA) as described in RFC 8342. 24 Status of This Memo 26 This Internet-Draft is submitted in full conformance with the 27 provisions of BCP 78 and BCP 79. 29 Internet-Drafts are working documents of the Internet Engineering 30 Task Force (IETF). Note that other groups may also distribute 31 working documents as Internet-Drafts. The list of current Internet- 32 Drafts is at https://datatracker.ietf.org/drafts/current/. 34 Internet-Drafts are draft documents valid for a maximum of six months 35 and may be updated, replaced, or obsoleted by other documents at any 36 time. It is inappropriate to use Internet-Drafts as reference 37 material or to cite them other than as "work in progress." 39 This Internet-Draft will expire on January 30, 2020. 41 Copyright Notice 43 Copyright (c) 2019 IETF Trust and the persons identified as the 44 document authors. All rights reserved. 46 This document is subject to BCP 78 and the IETF Trust's Legal 47 Provisions Relating to IETF Documents 48 (https://trustee.ietf.org/license-info) in effect on the date of 49 publication of this document. Please review these documents 50 carefully, as they describe your rights and restrictions with respect 51 to this document. Code Components extracted from this document must 52 include Simplified BSD License text as described in Section 4.e of 53 the Trust Legal Provisions and are provided without warranty as 54 described in the Simplified BSD License. 56 Table of Contents 58 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 59 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 60 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 61 2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 62 2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 63 2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 64 2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 65 2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 66 2.5. OSPF Router Configuration/Operational State . . . . . . . 7 67 2.6. OSPF Area Configuration/Operational State . . . . . . . . 10 68 2.7. OSPF Interface Configuration/Operational State . . . . . 16 69 2.8. OSPF Notifications . . . . . . . . . . . . . . . . . . . 19 70 2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 23 71 3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 72 4. Security Considerations . . . . . . . . . . . . . . . . . . . 115 73 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 117 74 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 117 75 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 117 76 7.1. Normative References . . . . . . . . . . . . . . . . . . 117 77 7.2. Informative References . . . . . . . . . . . . . . . . . 123 78 Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 125 79 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 125 81 1. Overview 83 YANG [RFC6020][RFC7950] is a data definition language used to define 84 the contents of a conceptual data store that allows networked devices 85 to be managed using NETCONF [RFC6241]. YANG is proving relevant 86 beyond its initial confines, as bindings to other interfaces (e.g., 87 ReST) and encodings other than XML (e.g., JSON) are being defined. 88 Furthermore, YANG data models can be used as the basis for 89 implementation of other interfaces, such as CLI and programmatic 90 APIs. 92 This document defines a YANG data model that can be used to configure 93 and manage OSPF and it is an augmentation to the core routing data 94 model. It fully conforms to the Network Management Datastore 95 Architecture (NDMA) [RFC8342]. A core routing data model is defined 96 in [RFC8349], and it provides the basis for the development of data 97 models for routing protocols. The interface data model is defined in 98 [RFC8343] and is used for referencing interfaces from the routing 99 protocol. The key-chain data model used for OSPF authentication is 100 defined in [RFC8177] and provides both a reference to configured key- 101 chains and an enumeration of cryptographic algorithms. 103 Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In 104 addition to the core OSPF protocol, features described in other OSPF 105 RFCs are also supported. These includes demand circuit [RFC1793], 106 traffic engineering [RFC3630], multiple address family [RFC5838], 107 graceful restart [RFC3623] [RFC5187], NSSA [RFC3101], and OSPFv2 or 108 OSPFv3 as a PE-CE Protocol [RFC4577], [RFC6565]. These non-core 109 features are optional in the OSPF data model. 111 1.1. Requirements Language 113 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 114 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 115 "OPTIONAL" in this document are to be interpreted as described in BCP 116 14 [RFC2119] [RFC8174] when, and only when, they appear in all 117 capitals, as shown here. 119 1.2. Tree Diagrams 121 This document uses the graphical representation of data models 122 defined in [RFC8340]. 124 2. Design of Data Model 126 Although the basis of OSPF configuration elements like routers, 127 areas, and interfaces remains the same, the detailed configuration 128 model varies among router vendors. Differences are observed in terms 129 of how the protocol instance is tied to the routing domain, how 130 multiple protocol instances are be instantiated among others. 132 The goal of this document is to define a data model that provides a 133 common user interface to the OSPFv2 and OSPFv3 protocols. There is 134 very little information that is designated as "mandatory", providing 135 freedom for vendors to adapt this data model to their respective 136 product implementations. 138 2.1. OSPF Operational State 140 The OSPF operational state is included in the same tree as OSPF 141 configuration consistent with the Network Management Datastore 142 Architecture [RFC8342]. Consequently, only the routing container in 143 the ietf-routing model [RFC8349] is augmented. The routing-state 144 container is not augmented. 146 2.2. Overview 148 The OSPF YANG module defined in this document has all the common 149 building blocks for the OSPF protocol. 151 The OSPF YANG module augments the /routing/control-plane-protocols/ 152 control-plane-protocol path defined in the ietf-routing module. The 153 ietf-ospf model defines a single instance of OSPF which may be 154 instantiated as an OSPFv2 or OSPFv3 instance. Multiple instances are 155 instantiated as multiple control-plane protocols instances. 157 module: ietf-ospf 158 augment /rt:routing/rt:control-plane-protocols/ 159 rt:control-plane-protocol: 160 +--rw ospf 161 . 162 . 163 +--rw operation-mode? identityref 164 +--rw af? identityref 165 . 166 . 167 +--rw areas 168 | +--rw area* [area-id] 169 | +--rw area-id area-id-type 170 | . 171 | . 172 | +--rw virtual-links 173 | | +--rw virtual-link* [transit-area-id router-id] 174 | | . 175 | | . 176 | +--rw sham-links {pe-ce-protocol}? 177 | | +--rw sham-link* [local-id remote-id] 178 | | . 179 | | . 180 | +--rw interfaces 181 | +--rw interface* [name] 182 | . 183 | . 184 +--rw topologies {multi-topology}? 185 +--rw topology* [name] 186 . 187 . 189 The ospf module is intended to match to the vendor specific OSPF 190 configuration construct that is identified by the local identifier 191 'name'. 193 The ospf container includes one OSPF protocol instance. The instance 194 includes OSPF router level configuration and operational state. 196 The area and area/interface containers respectively define the OSPF 197 configuration and operational state for OSPF areas and interfaces. 199 The topologies container defines the OSPF configuration and 200 operational state for OSPF topologies when the multi-topology feature 201 is supported. 203 2.3. OSPFv2 and OSPFv3 205 The data model defined herein supports both OSPFv2 and OSPFv3. 207 The field 'version' is used to indicate the OSPF version and is 208 mandatory. Based on the configured version, the data model varies to 209 accommodate the differences between OSPFv2 and OSPFv3. 211 2.4. Optional Features 213 Optional features are beyond the basic OSPF configuration and it is 214 the responsibility of each vendor to decide whether to support a 215 given feature on a particular device. 217 This model defines the following optional features: 219 1. multi-topology: Support Multi-Topology Routing (MTR) [RFC4915]. 221 2. multi-area-adj: Support OSPF multi-area adjacency [RFC5185]. 223 3. explicit-router-id: Support explicit per-instance Router-ID 224 specification. 226 4. demand-circuit: Support OSPF demand circuits [RFC1793]. 228 5. mtu-ignore: Support disabling OSPF Database Description packet 229 MTU mismatch checking. 231 6. lls: Support OSPF link-local signaling (LLS) [RFC5613]. 233 7. prefix-suppression: Support OSPF prefix advertisement 234 suppression [RFC6860]. 236 8. ttl-security: Support OSPF Time to Live (TTL) security check 237 support [RFC5082]. 239 9. nsr: Support OSPF Non-Stop Routing (NSR). The OSPF NSR feature 240 allows a router with redundant control-plane capability (e.g., 241 dual Route-Processor (RP) cards) to maintain its state and 242 adjacencies during planned and unplanned control-plane 243 processing restarts. It differs from graceful-restart or Non- 244 Stop Forwarding (NSF) in that no protocol signaling or 245 assistance from adjacent OSPF neighbors is required to recover 246 control-plane state. 248 10. graceful-restart: Support Graceful OSPF Restart [RFC3623], 249 [RFC5187]. 251 11. auto-cost: Support OSPF interface cost calculation according to 252 reference bandwidth [RFC2328]. 254 12. max-ecmp: Support configuration of the maximum number of Equal- 255 Cost Multi-Path (ECMP) paths. 257 13. max-lsa: Support configuration of the maximum number of LSAs the 258 OSPF instance will accept [RFC1765]. 260 14. te-rid: Support configuration of the Traffic Engineering (TE) 261 Router-ID, i.e., the Router Address described in Section 2.4.1 262 of [RFC3630] or the Router IPv6 Address TLV described in 263 Section 3 of [RFC5329]. 265 15. ldp-igp-sync: Support LDP IGP synchronization [RFC5443]. 267 16. ospfv2-authentication-trailer: Support OSPFv2 Authentication 268 trailer as specified in [RFC5709] or [RFC7474]. 270 17. ospfv3-authentication-ipsec: Support IPsec for OSPFv3 271 authentication [RFC4552]. 273 18. ospfv3-authentication-trailer: Support OSPFv3 Authentication 274 trailer as specified in [RFC7166]. 276 19. fast-reroute: Support IP Fast Reroute (IP-FRR) [RFC5714]. 278 20. node-flag: Support node-flag for OSPF prefixes. [RFC7684]. 280 21. node-tag: Support node admin tag for OSPF instances [RFC7777]. 282 22. lfa: Support Loop-Free Alternates (LFAs) [RFC5286]. 284 23. remote-lfa: Support Remote Loop-Free Alternates (R-LFA) 285 [RFC7490]. 287 24. stub-router: Support RFC 6987 OSPF Stub Router advertisement 288 [RFC6987]. 290 25. pe-ce-protocol: Support OSPF as a PE-CE protocol [RFC4577], 291 [RFC6565]. 293 26. ietf-spf-delay: Support IETF SPF delay algorithm [RFC8405]. 295 27. bfd: Support BFD detection of OSPF neighbor reachability 296 [RFC5880], [RFC5881], and [I-D.ietf-bfd-yang]. 298 28. hybrid-interface: Support OSPF Hybrid Broadcast and Point-to- 299 Point Interfaces [RFC6845]. 301 It is expected that vendors will support additional features through 302 vendor-specific augmentations. 304 2.5. OSPF Router Configuration/Operational State 306 The ospf container is the top-level container in this data model. It 307 represents an OSPF protocol instance and contains the router level 308 configuration and operational state. The operational state includes 309 the instance statistics, IETF SPF delay statistics, AS-Scoped Link 310 State Database, local RIB, SPF Log, and the LSA log. 312 module: ietf-ospf 313 augment /rt:routing/rt:control-plane-protocols/ 314 rt:control-plane-protocol: 315 +--rw ospf 316 . 317 . 318 +--rw af iana-rt-types:address-family 319 +--rw enable? boolean 320 +--rw explicit-router-id? rt-types:router-id 321 | {explicit-router-id}? 322 +--rw preference 323 | +--rw (scope)? 324 | +--:(single-value) 325 | | +--rw all? uint8 326 | +--:(multi-values) 327 | +--rw (granularity)? 328 | | +--:(detail) 329 | | | +--rw intra-area? uint8 330 | | | +--rw inter-area? uint8 331 | | +--:(coarse) 332 | | +--rw internal? uint8 333 | +--rw external? uint8 334 +--rw nsr {nsr}? 335 | +--rw enable? boolean 336 +--rw graceful-restart {graceful-restart}? 337 | +--rw enable? boolean 338 | +--rw helper-enable? boolean 339 | +--rw restart-interval? uint16 340 | +--rw helper-strict-lsa-checking? boolean 341 +--rw auto-cost {auto-cost}? 342 | +--rw enable? boolean 343 | +--rw reference-bandwidth? uint32 344 +--rw spf-control 345 | +--rw paths? uint16 {max-ecmp}? 346 | +--rw ietf-spf-delay {ietf-spf-delay}? 347 | +--rw initial-delay? uint16 348 | +--rw short-delay? uint16 349 | +--rw long-delay? uint16 350 | +--rw hold-down? uint16 351 | +--rw time-to-learn? uint16 352 | +--ro current-state? enumeration 353 | +--ro remaining-time-to-learn? uint16 354 | +--ro remaining-hold-down? uint16 355 | +--ro last-event-received? yang:timestamp 356 | +--ro next-spf-time? yang:timestamp 357 | +--ro last-spf-time? yang:timestamp 358 +--rw database-control 359 | +--rw max-lsa? uint32 {max-lsa}? 360 +--rw stub-router {stub-router}? 361 | +--rw (trigger)? 362 | +--:(always) 363 | +--rw always! 364 +--rw mpls 365 | +--rw te-rid {te-rid}? 366 | | +--rw ipv4-router-id? inet:ipv4-address 367 | | +--rw ipv6-router-id? inet:ipv6-address 368 | +--rw ldp 369 | +--rw igp-sync? boolean {ldp-igp-sync}? 370 +--rw fast-reroute {fast-reroute}? 371 | +--rw lfa {lfa}? 372 +--ro protected-routes 373 | +--ro af-stats* [af prefix alternate] 374 | +--ro af iana-rt-types:address-family 375 | +--ro prefix string 376 | +--ro alternate string 377 | +--ro alternate-type? enumeration 378 | +--ro best? boolean 379 | +--ro non-best-reason? string 380 | +--ro protection-available? bits 381 | +--ro alternate-metric1? uint32 382 | +--ro alternate-metric2? uint32 383 | +--ro alternate-metric3? uint32 384 +--ro unprotected-routes 385 | +--ro af-stats* [af prefix] 386 | +--ro af iana-rt-types:address-family 387 | +--ro prefix string 388 +--ro protection-statistics* [frr-protection-method] 389 | +--ro frr-protection-method string 390 | +--ro af-stats* [af] 391 | +--ro af iana-rt-types:address-family 392 | +--ro total-routes? uint32 393 | +--ro unprotected-routes? uint32 394 | +--ro protected-routes? uint32 395 | +--ro linkprotected-routes? uint32 396 | +--ro nodeprotected-routes? uint32 397 +--rw node-tags {node-tag}? 398 | +--rw node-tag* [tag] 399 | +--rw tag uint32 400 +--ro router-id? 401 +--ro local-rib 402 | +--ro route* [prefix] 403 | +--ro prefix inet:ip-prefix 404 | +--ro next-hops 405 | | +--ro next-hop* [next-hop] 406 | | +--ro outgoing-interface? if:interface-ref 407 | | +--ro next-hop inet:ip-address 408 | +--ro metric? uint32 409 | +--ro route-type? route-type 410 | +--ro route-tag? uint32 411 +--ro statistics 412 | +--ro originate-new-lsa-count? yang:counter32 413 | +--ro rx-new-lsas-count? yang:counter32 414 | +--ro as-scope-lsa-count? yang:gauge32 415 | +--ro as-scope-lsa-chksum-sum? uint32 416 | +--ro database 417 | +--ro as-scope-lsa-type* 418 | +--ro lsa-type? uint16 419 | +--ro lsa-count? yang:gauge32 420 | +--ro lsa-cksum-sum? int32 421 +--ro database 422 | +--ro as-scope-lsa-type* [lsa-type] 423 | +--ro as-scope-lsas 424 | +--ro as-scope-lsa* [lsa-id adv-router] 425 | +--ro lsa-id union 426 | +--ro adv-router inet:ipv4-address 427 | +--ro decoded-completed? boolean 428 | +--ro raw-data? yang:hex-string 429 | +--ro (version)? 430 | +--:(ospfv2) 431 | | +--ro ospfv2 432 . . 433 . . 435 | +--:(ospfv3) 436 | +--ro ospfv3 437 . 438 . 439 +--ro spf-log 440 | +--ro event* [id] 441 | +--ro id uint32 442 | +--ro spf-type? enumeration 443 | +--ro schedule-timestamp? yang:timestamp 444 | +--ro start-timestamp? yang:timestamp 445 +--ro end-timestamp? yang:timestamp 446 | +--ro trigger-lsa* 447 | +--ro area-id? area-id-type 448 | +--ro link-id? union 449 | +--ro type? uint16 450 | +--ro lsa-id? yang:dotted-quad 451 | +--ro adv-router? yang:dotted-quad 452 | +--ro seq-num? uint32 453 +--ro lsa-log 454 | +--ro event* [id] 455 | +--ro id uint32 456 | +--ro lsa 457 | | +--ro area-id? area-id-type 458 | | +--ro link-id? union 459 | | +--ro type? uint16 460 | | +--ro lsa-id? yang:dotted-quad 461 | | +--ro adv-router? yang:dotted-quad 462 | | +--ro seq-num? uint32 463 | +--ro received-timestamp? yang:timestamp 464 | +--ro reason? identityref 465 . 466 . 468 2.6. OSPF Area Configuration/Operational State 470 The area container contains OSPF area configuration and the list of 471 interface containers representing all the OSPF interfaces in the 472 area. The area operational state includes the area statistics and 473 the Area Link State Database (LSDB). 475 module: ietf-ospf 476 augment /rt:routing/rt:control-plane-protocols/ 477 rt:control-plane-protocol: 478 +--rw ospf 479 . 480 . 481 +--rw areas 482 | +--rw area* [area-id] 483 | +--rw area-id area-id-type 484 | +--rw area-type? identityref 485 | +--rw summary? boolean 486 | +--rw default-cost? uint32 487 | +--rw ranges 488 | | +--rw range* [prefix] 489 | | +--rw prefix inet:ip-prefix 490 | | +--rw advertise? boolean 491 | | +--rw cost? uint24 492 | +--rw topologies {ospf:multi-topology}? 493 | | +--rw topology* [name] 494 | | +--rw name -> ../../../../../../../../ 495 | | ../../../rt:ribs/rib/name 496 | | +--rw summary? boolean 497 | | +--rw default-cost? ospf-metric 498 | | +--rw ranges 499 | | +--rw range* [prefix] 500 | | +--rw prefix inet:ip-prefix 501 | | +--rw advertise? boolean 502 | | +--rw cost? ospf-metric 503 | +--ro statistics 504 | | +--ro spf-runs-count? yang:counter32 505 | | +--ro abr-count? yang:gauge32 506 | | +--ro asbr-count? yang:gauge32 507 | | +--ro ar-nssa-translator-event-count? 508 | | yang:counter32 509 | | +--ro area-scope-lsa-count? yang:gauge32 510 | | +--ro area-scope-lsa-cksum-sum? int32 511 | | +--ro database 512 | | +--ro area-scope-lsa-type* 513 | | +--ro lsa-type? uint16 514 | | +--ro lsa-count? yang:gauge32 515 | | +--ro lsa-cksum-sum? int32 516 | +--ro database 517 | | +--ro area-scope-lsa-type* [lsa-type] 518 | | +--ro lsa-type uint16 519 | | +--ro area-scope-lsas 520 | | +--ro area-scope-lsa* [lsa-id adv-router] 521 | | +--ro lsa-id union 522 . . . 523 . . . 524 | | +--ro (version)? 525 | | +--:(ospfv2) 526 | | | +--ro ospfv2 527 | | | +--ro header 528 . . . . 529 . . . . 530 | | | +--ro body 531 | | | +--ro router 532 . . . . 533 . . . . 534 | | | +--ro network 535 . . . . 536 . . . . 537 | | | +--ro summary 538 . . . . 539 . . . . 540 | | | +--ro external 541 . . . . 542 . . . . 543 | | | +--ro opaque 544 . . . . 545 . . . . 546 | | +--:(ospfv3) 547 | | +--ro ospfv3 548 | | +--ro header 549 . . . 550 . . . 551 | | +--ro body 552 | | +--ro router 553 . . . 554 . . . 555 | | +--ro network 556 . . . 557 . . . 558 | | +--ro inter-area-prefix 559 . . . 560 . . . 561 | | +--ro inter-area-router 562 . . . 563 . . . 564 | | +--ro as-external 565 . . . 566 . . . 567 | | +--ro nssa 568 . . . 569 . . . 570 | | +--ro link 571 . . . 572 . . . 573 | | +--ro intra-area-prefix 574 . . . 575 . . . 576 | | +--ro router-information 577 . . . 578 . . . 580 | +--rw virtual-links 581 | | +--rw virtual-link* [transit-area-id router-id] 582 | | +--rw transit-area-id -> ../../../../ 583 | | area/area-id 584 | | +--rw router-id rt-types:router-id 585 | | +--rw hello-interval? uint16 586 | | +--rw dead-interval? uint32 587 | | +--rw retransmit-interval? uint16 588 | | +--rw transmit-delay? uint16 589 | | +--rw lls? boolean {lls}? 590 | | +--rw ttl-security {ttl-security}? 591 | | | +--rw enable? boolean 592 | | | +--rw hops? uint8 593 | | +--rw enable? boolean 594 | | +--rw authentication 595 | | | +--rw (auth-type-selection)? 596 | | | +--:(ospfv2-auth) 597 | | | | +--rw ospfv2-auth-trailer-rfc? 598 | | | | | ospfv2-auth-trailer-rfc-version 599 | | | | | {ospfv2-authentication-trailer}? 600 | | | | +--rw (ospfv2-auth-specification)? 601 | | | | +--:(auth-key-chain) {key-chain}? 602 | | | | | +--rw ospfv2-key-chain? 603 | | | | | key-chain:key-chain-ref 604 | | | | +--:(auth-key-explicit) 605 | | | | +--rw ospfv2-key-id? uint32 606 | | | | +--rw ospfv2-key? string 607 | | | | +--rw ospfv2-crypto-algorithm? 608 | | | | identityref 609 | | | +--:(ospfv3-auth-ipsec) 610 | | | | {ospfv3-authentication-ipsec}? 611 | | | | +--rw sa? string 612 | | | +--:(ospfv3-auth-trailer) 613 | | | | {ospfv3-authentication-trailer}? 614 | | | +--rw (ospfv3-auth-specification)? 615 | | | +--:(auth-key-chain) {key-chain}? 616 | | | | +--rw ospfv3-key-chain? 617 | | | | key-chain:key-chain-ref 618 | | | +--:(auth-key-explicit) 619 | | | +--rw ospfv3-sa-id? uint16 620 | | | +--rw ospfv3-key? string 621 | | | +--rw ospfv3-crypto-algorithm? 622 | | | identityref 623 | | +--ro cost? uint16 624 | | +--ro state? if-state-type 625 | | +--ro hello-timer? uint32 626 | | +--ro wait-timer? uint32 627 | | +--ro dr-router-id? rt-types:router-id 628 | | +--ro dr-ip-addr? inet:ip-address 629 | | +--ro bdr-router-id? rt-types:router-id 630 | | +--ro bdr-ip-addr? inet:ip-address 631 | | +--ro statistics 632 | | | +--ro if-event-count? yang:counter32 633 | | | +--ro link-scope-lsa-count? yang:gauge32 634 | | | +--ro link-scope-lsa-cksum-sum? 635 | | | uint32 636 | | | +--ro database 637 | | | +--ro link-scope-lsa-type* 638 | | | +--ro lsa-type? uint16 639 | | | +--ro lsa-count? yang:gauge32 640 | | | +--ro lsa-cksum-sum? int32 641 | | +--ro neighbors 642 | | | +--ro neighbor* [neighbor-router-id] 643 | | | +--ro neighbor-router-id 644 | | | rt-types:router-id 645 | | | +--ro address? inet:ip-address 646 | | | +--ro dr-router-id? rt-types:router-id 647 | | | +--ro dr-ip-addr? inet:ip-address 648 | | | +--ro bdr-router-id? rt-types:router-id 649 | | | +--ro bdr-ip-addr? inet:ip-address 650 | | | +--ro state? nbr-state-type 651 | | | +--ro dead-timer? uint32 652 | | | +--ro statistics 653 | | | +--ro nbr-event-count? 654 | | | yang:counter32 655 | | | +--ro nbr-retrans-qlen? 656 | | | yang:gauge32 657 | | +--ro database 658 | | +--ro link-scope-lsa-type* [lsa-type] 659 | | +--ro lsa-type uint16 660 | | +--ro link-scope-lsas 661 . . 662 . . 663 | +--rw sham-links {pe-ce-protocol}? 664 | | +--rw sham-link* [local-id remote-id] 665 | | +--rw local-id inet:ip-address 666 | | +--rw remote-id inet:ip-address 667 | | +--rw hello-interval? uint16 668 | | +--rw dead-interval? uint32 669 | | +--rw retransmit-interval? uint16 670 | | +--rw transmit-delay? uint16 671 | | +--rw lls? boolean {lls}? 672 | | +--rw ttl-security {ttl-security}? 673 | | | +--rw enable? boolean 674 | | | +--rw hops? uint8 675 | | +--rw enable? boolean 676 | | +--rw authentication 677 | | | +--rw (auth-type-selection)? 678 | | | +--:(ospfv2-auth) 679 | | | | +--rw ospfv2-auth-trailer-rfc? 680 | | | | | ospfv2-auth-trailer-rfc-version 681 | | | | | {ospfv2-authentication-trailer}? 682 | | | | +--rw (ospfv2-auth-specification)? 683 | | | | +--:(auth-key-chain) {key-chain}? 684 | | | | | +--rw ospfv2-key-chain? 685 | | | | | key-chain:key-chain-ref 686 | | | | +--:(auth-key-explicit) 687 | | | | +--rw ospfv2-key-id? uint32 688 | | | | +--rw ospfv2-key? string 689 | | | | +--rw ospfv2-crypto-algorithm? 690 | | | | identityref 691 | | | +--:(ospfv3-auth-ipsec) 692 | | | | {ospfv3-authentication-ipsec}? 693 | | | | +--rw sa? string 694 | | | +--:(ospfv3-auth-trailer) 695 | | | | {ospfv3-authentication-trailer}? 696 | | | +--rw (ospfv3-auth-specification)? 697 | | | +--:(auth-key-chain) {key-chain}? 698 | | | | +--rw ospfv3-key-chain? 699 | | | | key-chain:key-chain-ref 700 | | | +--:(auth-key-explicit) 701 | | | +--rw ospfv3-sa-id? uint16 702 | | | +--rw ospfv3-key? string 703 | | | +--rw ospfv3-crypto-algorithm? 704 | | | identityref 705 | | +--rw cost? uint16 706 | | +--rw mtu-ignore? boolean 707 | | {mtu-ignore}? 708 | | +--rw prefix-suppression? boolean 709 | | {prefix-suppression}? 710 | | +--ro state? if-state-type 711 | | +--ro hello-timer? uint32 712 | | +--ro wait-timer? uint32 713 | | +--ro dr-router-id? rt-types:router-id 714 | | +--ro dr-ip-addr? inet:ip-address 715 | | +--ro bdr-router-id? rt-types:router-id 716 | | +--ro bdr-ip-addr? inet:ip-address 717 | | +--ro statistics 718 | | | +--ro if-event-count? yang:counter32 719 | | | +--ro link-scope-lsa-count? yang:gauge32 720 | | | +--ro link-scope-lsa-cksum-sum? 721 | | | uint32 722 | | | +--ro database 723 | | | +--ro link-scope-lsa-type* 724 | | | +--ro lsa-type? uint16 725 | | | +--ro lsa-count? yang:gauge32 726 | | | +--ro lsa-cksum-sum? int32 727 | | +--ro neighbors 728 | | | +--ro neighbor* [neighbor-router-id] 729 | | | +--ro neighbor-router-id 730 | | | rt-types:router-id 731 | | | +--ro address? inet:ip-address 732 | | | +--ro dr-router-id? rt-types:router-id 733 | | | +--ro dr-ip-addr? inet:ip-address 734 | | | +--ro bdr-router-id? rt-types:router-id 735 | | | +--ro bdr-ip-addr? inet:ip-address 736 | | | +--ro state? nbr-state-type 737 | | | +--ro cost? uint32 738 | | | +--ro dead-timer? uint32 739 | | | +--ro statistics 740 | | | +--ro nbr-event-count? 741 | | | yang:counter32 742 | | | +--ro nbr-retrans-qlen? 743 | | | yang:gauge32 744 | | +--ro database 745 | | +--ro link-scope-lsa-type* [lsa-type] 746 | | +--ro lsa-type uint16 747 | | +--ro link-scope-lsas 748 . . 749 . . 751 2.7. OSPF Interface Configuration/Operational State 753 The interface container contains OSPF interface configuration and 754 operational state. The interface operational state includes the 755 statistics, list of neighbors, and Link-Local Link State Database 756 (LSDB). 758 module: ietf-ospf 759 augment /rt:routing/rt:control-plane-protocols/ 760 rt:control-plane-protocol: 761 +--rw ospf 762 . 763 . 764 +--rw areas 765 | +--rw area* [area-id] 766 | . 767 | . 768 | +--rw interfaces 769 | +--rw interface* [name] 770 | +--rw name if:interface-ref 771 | +--rw interface-type? enumeration 772 | +--rw passive? boolean 773 | +--rw demand-circuit? boolean 774 | {demand-circuit}? 775 | +--rw priority? uint8 776 | +--rw multi-areas {multi-area-adj}? 777 | | +--rw multi-area* [multi-area-id] 778 | | +--rw multi-area-id area-id-type 779 | | +--rw cost? uint16 780 | +--rw static-neighbors 781 | | +--rw neighbor* [identifier] 782 | | +--rw identifier inet:ip-address 783 | | +--rw cost? uint16 784 | | +--rw poll-interval? uint16 785 | | +--rw priority? uint8 786 | +--rw node-flag? boolean 787 | {node-flag}? 788 | +--rw bfd {bfd}? 789 | | +--rw enable? boolean 790 | +--rw fast-reroute {fast-reroute}? 791 | | +--rw lfa {lfa}? 792 | | +--rw candidate-enable? boolean 793 | | +--rw enable? boolean 794 | | +--rw remote-lfa {remote-lfa}? 795 | | +--rw enable? boolean 796 | +--rw hello-interval? uint16 797 | +--rw dead-interval? uint32 798 | +--rw retransmit-interval? uint16 799 | +--rw transmit-delay? uint16 800 | +--rw lls? boolean {lls}? 801 | +--rw ttl-security {ttl-security}? 802 | | +--rw enable? boolean 803 | | +--rw hops? uint8 804 | +--rw enable? boolean 805 | +--rw authentication 806 | | +--rw (auth-type-selection)? 807 | | +--:(ospfv2-auth) 808 | | | +--rw ospfv2-auth-trailer-rfc? 809 | | | | ospfv2-auth-trailer-rfc-version 810 | | | | {ospfv2-authentication-trailer}? 811 | | | +--rw (ospfv2-auth-specification)? 812 | | | +--:(auth-key-chain) {key-chain}? 813 | | | | +--rw ospfv2-key-chain? 814 | | | | key-chain:key-chain-ref 815 | | | +--:(auth-key-explicit) 816 | | | +--rw ospfv2-key-id? uint32 817 | | | +--rw ospfv2-key? string 818 | | | +--rw ospfv2-crypto-algorithm? 819 | | | identityref 820 | | +--:(ospfv3-auth-ipsec) 821 | | | {ospfv3-authentication-ipsec}? 822 | | | +--rw sa? string 823 | | +--:(ospfv3-auth-trailer) 824 | | | {ospfv3-authentication-trailer}? 825 | | +--rw (ospfv3-auth-specification)? 826 | | +--:(auth-key-chain) {key-chain}? 827 | | | +--rw ospfv3-key-chain? 828 | | | key-chain:key-chain-ref 829 | | +--:(auth-key-explicit) 830 | | +--rw ospfv3-sa-id? uint16 831 | | +--rw ospfv3-key? string 832 | | +--rw ospfv3-crypto-algorithm? 833 | | identityref 834 | +--rw cost? uint16 835 | +--rw mtu-ignore? boolean 836 | | {mtu-ignore}? 837 | +--rw prefix-suppression? boolean 838 | | {prefix-suppression}? 839 | +--ro state? if-state-type 840 | +--ro hello-timer? uint32 841 | +--ro wait-timer? uint32 842 | +--ro dr-router-id? rt-types:router-id 843 | +--ro dr-ip-addr? inet:ip-address 844 | +--ro bdr-router-id? rt-types:router-id 845 | +--ro bdr-ip-addr? inet:ip-address 846 | +--ro statistics 847 | | +--ro if-event-count? yang:counter32 848 | | +--ro link-scope-lsa-count? yang:gauge32 849 | | +--ro link-scope-lsa-cksum-sum? 850 | | uint32 851 | | +--ro database 852 | | +--ro link-scope-lsa-type* 853 | | +--ro lsa-type? uint16 854 | | +--ro lsa-count? yang:gauge32 855 | | +--ro lsa-cksum-sum? int32 856 | +--ro neighbors 857 | | +--ro neighbor* [neighbor-router-id] 858 | | +--ro neighbor-router-id 859 | | rt-types:router-id 860 | | +--ro address? inet:ip-address 861 | | +--ro dr-router-id? rt-types:router-id 862 | | +--ro dr-ip-addr? inet:ip-address 863 | | +--ro bdr-router-id? rt-types:router-id 864 | | +--ro bdr-ip-addr? inet:ip-address 865 | | +--ro state? nbr-state-type 866 | | +--ro dead-timer? uint32 867 | | +--ro statistics 868 | | +--ro nbr-event-count? 869 | | yang:counter32 870 | | +--ro nbr-retrans-qlen? 871 | | yang:gauge32 872 | +--ro database 873 | . +--ro link-scope-lsa-type* [lsa-type] 874 | . +--ro lsa-type uint16 875 | . +--ro link-scope-lsas 876 . . 877 . . 878 | +--rw topologies {ospf:multi-topology}? 879 | | +--rw topology* [name] 880 | | +--rw name -> ../../../../../../../../ 881 | | ../../../rt:ribs/rib/name 882 | | +--rw cost? uint32 883 | +--rw instance-id? uint8 884 . 885 . 887 2.8. OSPF Notifications 889 This YANG model defines a list of notifications that inform YANG 890 clients of important events detected during protocol operation. The 891 defined notifications cover the common set of traps from the OSPFv2 892 MIB [RFC4750] and OSPFv3 MIB [RFC5643]. 894 notifications: 895 +---n if-state-change 896 | +--ro routing-protocol-name? 897 | + -> /rt:routing/control-plane-protocols/ 898 | + control-plane-protocol/name 899 | +--ro af? 900 | + -> /rt:routing/control-plane-protocols/ 901 | + control-plane-protocol 902 | + [rt:name=current()/../routing-protocol-name]/ 903 | + ospf:ospf/af 904 | +--ro (if-link-type-selection)? 905 | | +--:(interface) 906 | | | +--ro interface 907 | | | +--ro interface? if:interface-ref 908 | | +--:(virtual-link) 909 | | | +--ro virtual-link 910 | | | +--ro transit-area-id? area-id-type 911 | | | +--ro neighbor-router-id? rt-types:router-id 912 | | +--:(sham-link) 913 | | +--ro sham-link 914 | | +--ro area-id? area-id-type 915 | | +--ro local-ip-addr? inet:ip-address 916 | | +--ro remote-ip-addr? inet:ip-address 917 | +--ro state? if-state-type 918 +---n if-config-error 919 | +--ro routing-protocol-name? 920 | + -> /rt:routing/control-plane-protocols/ 921 | + control-plane-protocol/name 922 | +--ro af? 923 | + -> /rt:routing/control-plane-protocols/ 924 | + control-plane-protocol 925 | + [rt:name=current()/../routing-protocol-name]/ 926 | + ospf:ospf/af 927 | +--ro (if-link-type-selection)? 928 | | +--:(interface) 929 | | | +--ro interface 930 | | | +--ro interface? if:interface-ref 931 | | +--:(virtual-link) 932 | | | +--ro virtual-link 933 | | | +--ro transit-area-id? area-id-type 934 | | | +--ro neighbor-router-id? rt-types:router-id 935 | | +--:(sham-link) 936 | | +--ro sham-link 937 | | +--ro area-id? area-id-type 938 | | +--ro local-ip-addr? inet:ip-address 939 | | +--ro remote-ip-addr? inet:ip-address 940 | +--ro packet-source? yang:dotted-quad 941 | +--ro packet-type? packet-type 942 | +--ro error? enumeration 943 +---n nbr-state-change 944 | +--ro routing-protocol-name? 945 | + -> /rt:routing/control-plane-protocols/ 946 | + control-plane-protocol/name 947 | +--ro af? 948 | + -> /rt:routing/control-plane-protocols/ 949 | + control-plane-protocol 950 | + [rt:name=current()/../routing-protocol-name]/ 951 | + ospf:ospf/af 952 | +--ro (if-link-type-selection)? 953 | | +--:(interface) 954 | | | +--ro interface 955 | | | +--ro interface? if:interface-ref 956 | | +--:(virtual-link) 957 | | | +--ro virtual-link 958 | | | +--ro transit-area-id? area-id-type 959 | | | +--ro neighbor-router-id? rt-types:router-id 960 | | +--:(sham-link) 961 | | +--ro sham-link 962 | | +--ro area-id? area-id-type 963 | | +--ro local-ip-addr? inet:ip-address 964 | | +--ro remote-ip-addr? inet:ip-address 965 | +--ro neighbor-router-id? rt-types:router-id 966 | +--ro neighbor-ip-addr? yang:dotted-quad 967 | +--ro state? nbr-state-type 968 +---n nbr-restart-helper-status-change 969 | +--ro routing-protocol-name? 970 | + -> /rt:routing/control-plane-protocols/ 971 | + control-plane-protocol/name 972 | +--ro af? 973 | + -> /rt:routing/control-plane-protocols/ 974 | + control-plane-protocol 975 | + [rt:name=current()/../routing-protocol-name]/ 976 | + ospf:ospf/af 977 | +--ro (if-link-type-selection)? 978 | | +--:(interface) 979 | | | +--ro interface 980 | | | +--ro interface? if:interface-ref 981 | | +--:(virtual-link) 982 | | | +--ro virtual-link 983 | | | +--ro transit-area-id? area-id-type 984 | | | +--ro neighbor-router-id? rt-types:router-id 985 | | +--:(sham-link) 986 | | +--ro sham-link 987 | | +--ro area-id? area-id-type 988 | | +--ro local-ip-addr? inet:ip-address 989 | | +--ro remote-ip-addr? inet:ip-address 990 | +--ro neighbor-router-id? rt-types:router-id 991 | +--ro neighbor-ip-addr? yang:dotted-quad 992 | +--ro status? restart-helper-status-type 993 | +--ro age? uint32 994 | +--ro exit-reason? restart-exit-reason-type 995 +---n if-rx-bad-packet 996 | +--ro routing-protocol-name? 997 | + -> /rt:routing/control-plane-protocols/ 998 | + control-plane-protocol/name 999 | +--ro af? 1000 | + -> /rt:routing/control-plane-protocols/ 1001 | + control-plane-protocol 1002 | + [rt:name=current()/../routing-protocol-name]/ 1003 | + ospf:ospf/af 1004 | +--ro (if-link-type-selection)? 1005 | | +--:(interface) 1006 | | | +--ro interface 1007 | | | +--ro interface? if:interface-ref 1008 | | +--:(virtual-link) 1009 | | | +--ro virtual-link 1010 | | | +--ro transit-area-id? area-id-type 1011 | | | +--ro neighbor-router-id? rt-types:router-id 1012 | | +--:(sham-link) 1013 | | +--ro sham-link 1014 | | +--ro area-id? area-id-type 1015 | | +--ro local-ip-addr? inet:ip-address 1016 | | +--ro remote-ip-addr? inet:ip-address 1017 | +--ro packet-source? yang:dotted-quad 1018 | +--ro packet-type? packet-type 1019 +---n lsdb-approaching-overflow 1020 | +--ro routing-protocol-name? 1021 | + -> /rt:routing/control-plane-protocols/ 1022 | + control-plane-protocol/name 1023 | +--ro af? 1024 | + -> /rt:routing/control-plane-protocols/ 1025 | + control-plane-protocol 1026 | + [rt:name=current()/../routing-protocol-name]/ 1027 | + ospf:ospf/af 1028 | +--ro ext-lsdb-limit? uint32 1029 +---n lsdb-overflow 1030 | +--ro routing-protocol-name? 1031 | + -> /rt:routing/control-plane-protocols/ 1032 | + control-plane-protocol/name 1033 | +--ro af? 1034 | + -> /rt:routing/control-plane-protocols/ 1035 | + control-plane-protocol 1036 | + [rt:name=current()/../routing-protocol-name]/ 1037 | + ospf:ospf/af 1038 | +--ro ext-lsdb-limit? uint32 1039 +---n nssa-translator-status-change 1040 | +--ro routing-protocol-name? 1041 | + -> /rt:routing/control-plane-protocols/ 1042 | + control-plane-protocol/name 1043 | +--ro af? 1044 | + -> /rt:routing/control-plane-protocols/ 1045 | + control-plane-protocol 1046 | + [rt:name=current()/../routing-protocol-name]/ 1047 | + ospf:ospf/af 1048 | +--ro area-id? area-id-type 1049 | +--ro status? nssa-translator-state-type 1050 +---n restart-status-change 1051 +--ro routing-protocol-name? 1052 + -> /rt:routing/control-plane-protocols/ 1053 + control-plane-protocol/name 1054 +--ro af? 1055 + -> /rt:routing/control-plane-protocols/ 1056 + control-plane-protocol 1057 + [rt:name=current()/../routing-protocol-name]/ 1058 + ospf:ospf/af 1059 +--ro status? restart-status-type 1060 +--ro restart-interval? uint16 1061 +--ro exit-reason? restart-exit-reason-type 1063 2.9. OSPF RPC Operations 1065 The "ietf-ospf" module defines two RPC operations: 1067 o clear-database: reset the content of a particular OSPF Link State 1068 Database. 1070 o clear-neighbor: Reset a particular OSPF neighbor or group of 1071 neighbors associated with an OSPF interface. 1073 rpcs: 1074 +---x clear-neighbor 1075 | +---w input 1076 | +---w routing-protocol-name 1077 | + -> /rt:routing/control-plane-protocols/ 1078 | + control-plane-protocol/name 1079 | +---w interface? if:interface-ref 1080 +---x clear-database 1081 +---w input 1082 +---w routing-protocol-name 1083 -> /rt:routing/control-plane-protocols/ 1084 control-plane-protocol/name 1086 3. OSPF YANG Module 1088 The following RFCs and drafts are not referenced in the document text 1089 but are referenced in the ietf-ospf.yang module: [RFC0905], 1090 [RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], 1091 [RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. 1093 file "ietf-ospf@2019-07-29.yang" 1094 module ietf-ospf { 1095 yang-version 1.1; 1096 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; 1098 prefix ospf; 1100 import ietf-inet-types { 1101 prefix "inet"; 1102 reference "RFC 6991: Common YANG Data Types"; 1103 } 1105 import ietf-yang-types { 1106 prefix "yang"; 1107 reference "RFC 6991: Common YANG Data Types"; 1109 } 1111 import ietf-interfaces { 1112 prefix "if"; 1113 reference "RFC 8343: A YANG Data Model for Interface 1114 Management (NDMA Version)"; 1115 } 1117 import ietf-routing-types { 1118 prefix "rt-types"; 1119 reference "RFC 8294: Common YANG Data Types for the 1120 Routing Area"; 1121 } 1123 import iana-routing-types { 1124 prefix "iana-rt-types"; 1125 reference "RFC 8294: Common YANG Data Types for the 1126 Routing Area"; 1127 } 1129 import ietf-routing { 1130 prefix "rt"; 1131 reference "RFC 8349: A YANG Data Model for Routing 1132 Management (NMDA Version)"; 1133 } 1135 import ietf-key-chain { 1136 prefix "key-chain"; 1137 reference "RFC 8177: YANG Data Model for Key Chains"; 1138 } 1140 import ietf-bfd-types { 1141 prefix "bfd-types"; 1142 reference "RFC YYYY: YANG Data Model for Bidirectional 1143 Forwarding Detection (BFD). Please replace YYYY with 1144 published RFC number for draft-ietf-bfd-yang."; 1145 } 1147 organization 1148 "IETF LSR - Link State Routing Working Group"; 1150 contact 1151 "WG Web: 1152 WG List: 1154 Editor: Derek Yeung 1155 1156 Author: Acee Lindem 1157 1158 Author: Yingzhen Qu 1159 1160 Author: Jeffrey Zhang 1161 1162 Author: Ing-Wher Chen 1163 "; 1165 description 1166 "This YANG module defines the generic configuration and 1167 operational state for the OSPF protocol common to all 1168 vendor implementations. It is intended that the module 1169 will be extended by vendors to define vendor-specific 1170 OSPF configuration parameters and policies, 1171 for example, route maps or route policies. 1173 This YANG model conforms to the Network Management 1174 Datastore Architecture (NDMA) as described in RFC 8242. 1176 Copyright (c) 2018 IETF Trust and the persons identified as 1177 authors of the code. All rights reserved. 1179 Redistribution and use in source and binary forms, with or 1180 without modification, is permitted pursuant to, and subject to 1181 the license terms contained in, the Simplified BSD License set 1182 forth in Section 4.c of the IETF Trust's Legal Provisions 1183 Relating to IETF Documents 1184 (https://trustee.ietf.org/license-info). 1186 This version of this YANG module is part of RFC XXXX 1187 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself 1188 for full legal notices. 1190 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 1191 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 1192 'MAY', and 'OPTIONAL' in this document are to be interpreted as 1193 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 1194 they appear in all capitals, as shown here. 1196 This version of this YANG module is part of RFC XXXX; 1197 see the RFC itself for full legal notices."; 1199 revision 2019-07-29 { 1200 description 1201 "Initial revision."; 1202 reference 1203 "RFC XXXX: A YANG Data Model for OSPF."; 1204 } 1205 feature multi-topology { 1206 description 1207 "Support Multiple-Topology Routing (MTR)."; 1208 reference "RFC 4915: Multi-Topology Routing"; 1209 } 1211 feature multi-area-adj { 1212 description 1213 "OSPF multi-area adjacency support as in RFC 5185."; 1214 reference "RFC 5185: Multi-Area Adjacency"; 1215 } 1216 feature explicit-router-id { 1217 description 1218 "Set Router-ID per instance explicitly."; 1219 } 1221 feature demand-circuit { 1222 description 1223 "OSPF demand circuit support as in RFC 1793."; 1224 reference "RFC 1793: OSPF Demand Circuits"; 1225 } 1227 feature mtu-ignore { 1228 description 1229 "Disable OSPF Database Description packet MTU 1230 mismatch checking."; 1231 } 1233 feature lls { 1234 description 1235 "OSPF link-local signaling (LLS) as in RFC 5613."; 1236 reference "RFC 5613: OSPF Link-Local Signaling"; 1237 } 1239 feature prefix-suppression { 1240 description 1241 "OSPF prefix suppression support as in RFC 6860."; 1242 reference "RFC 6860: Hide Transit-Only Networks in OSPF"; 1243 } 1245 feature ttl-security { 1246 description 1247 "OSPF Time to Live (TTL) security check support."; 1248 reference "RFC 5082: The Generalized TTL Security 1249 Mechanism (GTSM)"; 1250 } 1252 feature nsr { 1253 description 1254 "Non-Stop-Routing (NSR) support. The OSPF NSR feature 1255 allows a router with redundant control-plane capability 1256 (e.g., dual Route-Processor (RP) cards) to maintain its 1257 state and adjacencies during planned and unplanned 1258 OSPF instance restarts. It differs from graceful-restart 1259 or Non-Stop Forwarding (NSF) in that no protocol signaling 1260 or assistance from adjacent OSPF neighbors is required to 1261 recover control-plane state."; 1262 } 1264 feature graceful-restart { 1265 description 1266 "Graceful OSPF Restart as defined in RFC 3623 and 1267 RFC 5187."; 1268 reference "RFC 3623: Graceful OSPF Restart 1269 RFC 5187: OSPFv3 Graceful Restart"; 1270 } 1272 feature auto-cost { 1273 description 1274 "Calculate OSPF interface cost according to 1275 reference bandwidth."; 1276 reference "RFC 2328: OSPF Version 2"; 1277 } 1279 feature max-ecmp { 1280 description 1281 "Setting maximum number of ECMP paths."; 1282 } 1284 feature max-lsa { 1285 description 1286 "Setting the maximum number of LSAs the OSPF instance 1287 will accept."; 1288 reference "RFC 1765: OSPF Database Overload"; 1289 } 1291 feature te-rid { 1292 description 1293 "Support configuration of the Traffic Engineering (TE) 1294 Router-ID, i.e., the Router Address described in Section 1295 2.4.1 of RFC3630 or the Router IPv6 Address TLV described 1296 in Section 3 of RFC5329."; 1297 reference "RFC 3630: Traffic Engineering (TE) Extensions 1298 to OSPF Version 2 1299 RFC 5329: Traffic Engineering (TE) Extensions 1300 to OSPF Version 3"; 1302 } 1304 feature ldp-igp-sync { 1305 description 1306 "LDP IGP synchronization."; 1307 reference "RFC 5443: LDP IGP Synchronization"; 1308 } 1310 feature ospfv2-authentication-trailer { 1311 description 1312 "Use OSPFv2 authentication trailer for OSPFv2 1313 authentication."; 1314 reference "RFC 5709: Supporting Authentication 1315 Trailer for OSPFv2 1316 RFC 7474: Security Extension for OSPFv2 When 1317 Using Manual Key Management"; 1318 } 1320 feature ospfv3-authentication-ipsec { 1321 description 1322 "Use IPsec for OSPFv3 authentication."; 1323 reference "RFC 4552: Authentication/Confidentiality 1324 for OSPFv3"; 1325 } 1327 feature ospfv3-authentication-trailer { 1328 description 1329 "Use OSPFv3 authentication trailer for OSPFv3 1330 authentication."; 1331 reference "RFC 7166: Supporting Authentication 1332 Trailer for OSPFv3"; 1333 } 1335 feature fast-reroute { 1336 description 1337 "Support for IP Fast Reroute (IP-FRR)."; 1338 reference "RFC 5714: IP Fast Reroute Framework"; 1339 } 1341 feature key-chain { 1342 description 1343 "Support of keychain for authentication."; 1344 reference "RFC8177: YANG Data Model for Key Chains"; 1345 } 1347 feature node-flag { 1348 description 1349 "Support for node-flag for OSPF prefixes."; 1351 reference "RFC 7684: OSPFv2 Prefix/Link Advertisement"; 1352 } 1354 feature node-tag { 1355 description 1356 "Support for node admin tag for OSPF routing instances."; 1357 reference "RFC 7777: Advertising Node Administrative 1358 Tags in OSPF"; 1359 } 1361 feature lfa { 1362 description 1363 "Support for Loop-Free Alternates (LFAs)."; 1364 reference "RFC 5286: Basic Specification for IP Fast 1365 Reroute: Loop-Free Alternates"; 1366 } 1368 feature remote-lfa { 1369 description 1370 "Support for Remote Loop-Free Alternates (R-LFA)."; 1371 reference "RFC 7490: Remote Loop-Free Alternate (LFA) 1372 Fast Reroute (FRR)"; 1373 } 1375 feature stub-router { 1376 description 1377 "Support for RFC 6987 OSPF Stub Router Advertisement."; 1378 reference "RFC 6987: OSPF Stub Router Advertisement"; 1379 } 1381 feature pe-ce-protocol { 1382 description 1383 "Support for OSPF as a PE-CE protocol"; 1384 reference "RFC 4577: OSPF as the Provider/Customer Edge 1385 Protocol for BGP/MPLS IP Virtual Private 1386 Networks (VPNs) 1387 RFC 6565: OSPFv3 as a Provider Edge to Customer 1388 Edge (PE-CE) Routing Protocol"; 1389 } 1391 feature ietf-spf-delay { 1392 description 1393 "Support for IETF SPF delay algorithm."; 1394 reference "RFC 8405: SPF Back-off algorithm for link 1395 state IGPs"; 1396 } 1398 feature bfd { 1399 description 1400 "Support for BFD detection of OSPF neighbor reachability."; 1401 reference "RFC 5880: Bidirectional Forwarding Detection (BFD) 1402 RFC 5881: Bidirectional Forwarding Detection 1403 (BFD) for IPv4 and IPv6 (Single Hop)"; 1404 } 1406 feature hybrid-interface { 1407 description 1408 "Support for OSPF Hybrid interface type."; 1409 reference "RFC 6845: OSPF Hybrid Broadcast and 1410 Point-to-Multipoint Interface Type"; 1411 } 1413 identity ospf { 1414 base "rt:routing-protocol"; 1415 description "Any OSPF protocol version"; 1416 } 1418 identity ospfv2 { 1419 base "ospf"; 1420 description "OSPFv2 protocol"; 1421 } 1423 identity ospfv3 { 1424 base "ospf"; 1425 description "OSPFv3 protocol"; 1426 } 1428 identity operation-mode { 1429 description 1430 "OSPF operation mode."; 1431 } 1433 identity area-type { 1434 description "Base identity for OSPF area type."; 1435 } 1437 identity normal-area { 1438 base area-type; 1439 description "OSPF normal area."; 1440 } 1442 identity stub-nssa-area { 1443 base area-type; 1444 description "OSPF stub or NSSA area."; 1445 } 1446 identity stub-area { 1447 base stub-nssa-area; 1448 description "OSPF stub area."; 1449 } 1451 identity nssa-area { 1452 base stub-nssa-area; 1453 description "OSPF Not-So-Stubby Area (NSSA)."; 1454 reference "RFC 3101: The OSPF Not-So-Stubby Area 1455 (NSSA) Option"; 1456 } 1458 identity ospf-lsa-type { 1459 description 1460 "Base identity for OSPFv2 and OSPFv3 1461 Link State Advertisement (LSA) types"; 1462 } 1464 identity ospfv2-lsa-type { 1465 base ospf-lsa-type; 1466 description 1467 "OSPFv2 LSA types"; 1468 } 1470 identity ospfv2-router-lsa { 1471 base ospfv2-lsa-type; 1472 description 1473 "OSPFv2 Router LSA - Type 1"; 1474 } 1476 identity ospfv2-network-lsa { 1477 base ospfv2-lsa-type; 1478 description 1479 "OSPFv2 Network LSA - Type 2"; 1480 } 1482 identity ospfv2-summary-lsa-type { 1483 base ospfv2-lsa-type; 1484 description 1485 "OSPFv2 Summary LSA types"; 1486 } 1488 identity ospfv2-network-summary-lsa { 1489 base ospfv2-summary-lsa-type; 1490 description 1491 "OSPFv2 Network Summary LSA - Type 3"; 1492 } 1493 identity ospfv2-asbr-summary-lsa { 1494 base ospfv2-summary-lsa-type; 1495 description 1496 "OSPFv2 AS Boundary Router (ASBR) Summary LSA - Type 4"; 1497 } 1499 identity ospfv2-external-lsa-type { 1500 base ospfv2-lsa-type; 1501 description 1502 "OSPFv2 External LSA types"; 1503 } 1505 identity ospfv2-as-external-lsa { 1506 base ospfv2-external-lsa-type; 1507 description 1508 "OSPFv2 AS External LSA - Type 5"; 1509 } 1511 identity ospfv2-nssa-lsa { 1512 base ospfv2-external-lsa-type; 1513 description 1514 "OSPFv2 Not-So-Stubby-Area (NSSA) LSA - Type 7"; 1515 } 1517 identity ospfv2-opaque-lsa-type { 1518 base ospfv2-lsa-type; 1519 description 1520 "OSPFv2 Opaque LSA types"; 1521 } 1523 identity ospfv2-link-scope-opaque-lsa { 1524 base ospfv2-opaque-lsa-type; 1525 description 1526 "OSPFv2 Link-Scoped Opaque LSA - Type 9"; 1527 } 1529 identity ospfv2-area-scope-opaque-lsa { 1530 base ospfv2-opaque-lsa-type; 1531 description 1532 "OSPFv2 Area-Scoped Opaque LSA - Type 10"; 1533 } 1535 identity ospfv2-as-scope-opaque-lsa { 1536 base ospfv2-opaque-lsa-type; 1537 description 1538 "OSPFv2 AS-Scoped Opaque LSA - Type 11"; 1539 } 1540 identity ospfv2-unknown-lsa-type { 1541 base ospfv2-lsa-type; 1542 description 1543 "OSPFv2 Unknown LSA type"; 1544 } 1546 identity ospfv3-lsa-type { 1547 base ospf-lsa-type; 1548 description 1549 "OSPFv3 LSA types."; 1550 } 1552 identity ospfv3-router-lsa { 1553 base ospfv3-lsa-type; 1554 description 1555 "OSPFv3 Router LSA - Type 0x2001"; 1556 } 1558 identity ospfv3-network-lsa { 1559 base ospfv3-lsa-type; 1560 description 1561 "OSPFv3 Network LSA - Type 0x2002"; 1562 } 1564 identity ospfv3-summary-lsa-type { 1565 base ospfv3-lsa-type; 1566 description 1567 "OSPFv3 Summary LSA types"; 1568 } 1570 identity ospfv3-inter-area-prefix-lsa { 1571 base ospfv3-summary-lsa-type; 1572 description 1573 "OSPFv3 Inter-area Prefix LSA - Type 0x2003"; 1574 } 1576 identity ospfv3-inter-area-router-lsa { 1577 base ospfv3-summary-lsa-type; 1578 description 1579 "OSPFv3 Inter-area Router LSA - Type 0x2004"; 1580 } 1582 identity ospfv3-external-lsa-type { 1583 base ospfv3-lsa-type; 1584 description 1585 "OSPFv3 External LSA types"; 1586 } 1587 identity ospfv3-as-external-lsa { 1588 base ospfv3-external-lsa-type; 1589 description 1590 "OSPFv3 AS-External LSA - Type 0x4005"; 1591 } 1593 identity ospfv3-nssa-lsa { 1594 base ospfv3-external-lsa-type; 1595 description 1596 "OSPFv3 Not-So-Stubby-Area (NSSA) LSA - Type 0x2007"; 1597 } 1599 identity ospfv3-link-lsa { 1600 base ospfv3-lsa-type; 1601 description 1602 "OSPFv3 Link LSA - Type 0x0008"; 1603 } 1605 identity ospfv3-intra-area-prefix-lsa { 1606 base ospfv3-lsa-type; 1607 description 1608 "OSPFv3 Intra-area Prefix LSA - Type 0x2009"; 1609 } 1611 identity ospfv3-router-information-lsa { 1612 base ospfv3-lsa-type; 1613 description 1614 "OSPFv3 Router Information LSA - Types 0x800C, 1615 0xA00C, and 0xC00C"; 1616 } 1618 identity ospfv3-unknown-lsa-type { 1619 base ospfv3-lsa-type; 1620 description 1621 "OSPFv3 Unknown LSA type"; 1622 } 1624 identity lsa-log-reason { 1625 description 1626 "Base identity for an LSA log reason."; 1627 } 1629 identity lsa-refresh { 1630 base lsa-log-reason; 1631 description 1632 "Identity used when the LSA is logged 1633 as a result of receiving a refresh LSA."; 1634 } 1635 identity lsa-content-change { 1636 base lsa-log-reason; 1637 description 1638 "Identity used when the LSA is logged 1639 as a result of a change in the content 1640 of the LSA."; 1641 } 1643 identity lsa-purge { 1644 base lsa-log-reason; 1645 description 1646 "Identity used when the LSA is logged 1647 as a result of being purged."; 1648 } 1650 typedef ospf-metric { 1651 type uint32 { 1652 range "0 .. 16777215"; 1653 } 1654 description 1655 "OSPF Metric - 24-bit unsigned integer."; 1656 } 1658 typedef ospf-link-metric { 1659 type uint16 { 1660 range "0 .. 65535"; 1661 } 1662 description 1663 "OSPF Link Metric - 16-bit unsigned integer."; 1664 } 1666 typedef opaque-id { 1667 type uint32 { 1668 range "0 .. 16777215"; 1669 } 1670 description 1671 "Opaque ID - 24-bit unsigned integer."; 1672 } 1674 typedef area-id-type { 1675 type yang:dotted-quad; 1676 description 1677 "Area ID type."; 1678 } 1680 typedef route-type { 1681 type enumeration { 1682 enum intra-area { 1683 description "OSPF intra-area route."; 1684 } 1685 enum inter-area { 1686 description "OSPF inter-area route."; 1687 } 1688 enum external-1 { 1689 description "OSPF type 1 external route."; 1690 } 1691 enum external-2 { 1692 description "OSPF type 2 external route."; 1693 } 1694 enum nssa-1 { 1695 description "OSPF type 1 NSSA route."; 1696 } 1697 enum nssa-2 { 1698 description "OSPF type 2 NSSA route."; 1699 } 1700 } 1701 description "OSPF route type."; 1702 } 1704 typedef if-state-type { 1705 type enumeration { 1706 enum down { 1707 value "1"; 1708 description 1709 "Interface down state."; 1710 } 1711 enum loopback { 1712 value "2"; 1713 description 1714 "Interface loopback state."; 1715 } 1716 enum waiting { 1717 value "3"; 1718 description 1719 "Interface waiting state."; 1720 } 1721 enum point-to-point { 1722 value "4"; 1723 description 1724 "Interface point-to-point state."; 1725 } 1726 enum dr { 1727 value "5"; 1728 description 1729 "Interface Designated Router (DR) state."; 1730 } 1731 enum bdr { 1732 value "6"; 1733 description 1734 "Interface Backup Designated Router (BDR) state."; 1735 } 1736 enum dr-other { 1737 value "7"; 1738 description 1739 "Interface Other Designated Router state."; 1740 } 1741 } 1742 description 1743 "OSPF interface state type."; 1744 } 1746 typedef router-link-type { 1747 type enumeration { 1748 enum point-to-point-link { 1749 value "1"; 1750 description 1751 "Point-to-Point link to Router"; 1752 } 1753 enum transit-network-link { 1754 value "2"; 1755 description 1756 "Link to transit network identified by 1757 Designated-Router (DR)"; 1758 } 1759 enum stub-network-link { 1760 value "3"; 1761 description 1762 "Link to stub network identified by subnet"; 1763 } 1764 enum virtual-link { 1765 value "4"; 1766 description 1767 "Virtual link across transit area"; 1768 } 1769 } 1770 description 1771 "OSPF Router Link Type."; 1772 } 1774 typedef nbr-state-type { 1775 type enumeration { 1776 enum down { 1777 value "1"; 1778 description 1779 "Neighbor down state."; 1780 } 1781 enum attempt { 1782 value "2"; 1783 description 1784 "Neighbor attempt state."; 1785 } 1786 enum init { 1787 value "3"; 1788 description 1789 "Neighbor init state."; 1790 } 1791 enum 2-way { 1792 value "4"; 1793 description 1794 "Neighbor 2-Way state."; 1795 } 1796 enum exstart { 1797 value "5"; 1798 description 1799 "Neighbor exchange start state."; 1800 } 1801 enum exchange { 1802 value "6"; 1803 description 1804 "Neighbor exchange state."; 1805 } 1806 enum loading { 1807 value "7"; 1808 description 1809 "Neighbor loading state."; 1810 } 1811 enum full { 1812 value "8"; 1813 description 1814 "Neighbor full state."; 1815 } 1816 } 1817 description 1818 "OSPF neighbor state type."; 1819 } 1821 typedef restart-helper-status-type { 1822 type enumeration { 1823 enum not-helping { 1824 value "1"; 1825 description 1826 "Restart helper status not helping."; 1828 } 1829 enum helping { 1830 value "2"; 1831 description 1832 "Restart helper status helping."; 1833 } 1834 } 1835 description 1836 "Restart helper status type."; 1837 } 1839 typedef restart-exit-reason-type { 1840 type enumeration { 1841 enum none { 1842 value "1"; 1843 description 1844 "Restart not attempted."; 1845 } 1846 enum in-progress { 1847 value "2"; 1848 description 1849 "Restart in progress."; 1850 } 1851 enum completed { 1852 value "3"; 1853 description 1854 "Restart successfully completed."; 1855 } 1856 enum timed-out { 1857 value "4"; 1858 description 1859 "Restart timed out."; 1860 } 1861 enum topology-changed { 1862 value "5"; 1863 description 1864 "Restart aborted due to topology change."; 1865 } 1866 } 1867 description 1868 "Describes the outcome of the last attempt at a 1869 graceful restart, either by itself or acting 1870 as a helper."; 1871 } 1873 typedef packet-type { 1874 type enumeration { 1875 enum hello { 1876 value "1"; 1877 description 1878 "OSPF Hello packet."; 1879 } 1880 enum database-description { 1881 value "2"; 1882 description 1883 "OSPF Database Description packet."; 1884 } 1885 enum link-state-request { 1886 value "3"; 1887 description 1888 "OSPF Link State Request packet."; 1889 } 1890 enum link-state-update { 1891 value "4"; 1892 description 1893 "OSPF Link State Update packet."; 1894 } 1895 enum link-state-ack { 1896 value "5"; 1897 description 1898 "OSPF Link State Acknowledgement packet."; 1899 } 1900 } 1901 description 1902 "OSPF packet type."; 1903 } 1905 typedef nssa-translator-state-type { 1906 type enumeration { 1907 enum enabled { 1908 value "1"; 1909 description 1910 "NSSA translator enabled state."; 1911 } 1912 enum elected { 1913 value "2"; 1914 description 1915 "NSSA translator elected state."; 1916 } 1917 enum disabled { 1918 value "3"; 1919 description 1920 "NSSA translator disabled state."; 1921 } 1922 } 1923 description 1924 "OSPF NSSA translator state type."; 1925 } 1927 typedef restart-status-type { 1928 type enumeration { 1929 enum not-restarting { 1930 value "1"; 1931 description 1932 "Router is not restarting."; 1933 } 1934 enum planned-restart { 1935 value "2"; 1936 description 1937 "Router is going through planned restart."; 1938 } 1939 enum unplanned-restart { 1940 value "3"; 1941 description 1942 "Router is going through unplanned restart."; 1943 } 1944 } 1945 description 1946 "OSPF graceful restart status type."; 1947 } 1949 typedef fletcher-checksum16-type { 1950 type string { 1951 pattern '(0x)?[0-9a-fA-F]{4}'; 1952 } 1953 description 1954 "Fletcher 16-bit checksum in hex-string format 0xXXXX."; 1955 reference "RFC 905: ISO Transport Protocol specification 1956 ISO DP 8073"; 1957 } 1959 typedef ospfv2-auth-trailer-rfc-version { 1960 type enumeration { 1961 enum rfc5709 { 1962 description 1963 "Support OSPF Authentication Trailer as 1964 described in RFC 5709"; 1965 reference "RFC 5709: OSPFv2 HMAC-SHA Cryptographic 1966 Authentication"; 1968 } 1969 enum rfc7474 { 1970 description 1971 "Support OSPF Authentication Trailer as 1972 described in RFC 7474"; 1973 reference 1974 "RFC 7474: Security Extension for OSPFv2 1975 When Using Manual Key Management Authentication"; 1977 } 1978 } 1979 description 1980 "OSPFv2 Authentication Trailer Support"; 1981 } 1983 grouping tlv { 1984 description 1985 "Type-Length-Value (TLV)"; 1986 leaf type { 1987 type uint16; 1988 description "TLV type."; 1989 } 1990 leaf length { 1991 type uint16; 1992 description "TLV length (octets)."; 1993 } 1994 leaf value { 1995 type yang:hex-string; 1996 description "TLV value."; 1997 } 1998 } 2000 grouping unknown-tlvs { 2001 description 2002 "Unknown TLVs grouping - Used for unknown TLVs or 2003 unknown sub-TLVs."; 2004 container unknown-tlvs { 2005 description "All unknown TLVs."; 2006 list unknown-tlv { 2007 description "Unknown TLV."; 2008 uses tlv; 2009 } 2010 } 2011 } 2013 grouping node-tag-tlv { 2014 description "OSPF Node Admin Tag TLV grouping."; 2015 list node-tag { 2016 leaf tag { 2017 type uint32; 2018 description 2019 "Node admin tag value."; 2021 } 2022 description 2023 "List of tags."; 2024 } 2025 } 2027 grouping router-capabilities-tlv { 2028 description "OSPF Router Capabilities TLV grouping."; 2029 reference "RFC 7770: OSPF Router Capabilities"; 2030 leaf informational-flags { 2031 type bits { 2032 bit graceful-restart-capability { 2033 description 2034 "When set, the router is capable of restarting 2035 gracefully."; 2036 reference "RFC 3623: Graceful OSPF Restart 2037 RFC 5187: OSPFv3 Graceful Restart"; 2038 } 2039 bit graceful-restart-helper { 2040 description 2041 "When set, the router is capable of acting as 2042 a graceful restart helper."; 2043 reference "RFC 3623: Graceful OSPF Restart 2044 RFC 5187: OSPFv3 Graceful Restart"; 2045 } 2046 bit stub-router { 2047 description 2048 "When set, the router is capable of acting as 2049 an OSPF Stub Router."; 2050 reference "RFC 6987: OSPF Stub Router Advertisement"; 2051 } 2052 bit traffic-engineering { 2053 description 2054 "When set, the router is capable of OSPF traffic 2055 engineering."; 2056 reference "RFC 3630: Traffic Engineering (TE) Extensions 2057 to OSPF Version 2 2058 RFC 5329: Traffic Engineering (TE) Extensions 2059 to OSPF Version 3"; 2060 } 2061 bit p2p-over-lan { 2062 description 2063 "When set, the router is capable of OSPF Point-to-Point 2064 over LAN."; 2065 reference "RFC 5309: Point-to-Point Operation over LAN 2066 in Link State Routing Protocols"; 2067 } 2068 bit experimental-te { 2069 description 2070 "When set, the router is capable of OSPF experimental 2071 traffic engineering."; 2072 reference 2073 "RFC 4973: OSPF-xTE OSPF Experimental Traffic 2074 Engineering"; 2075 } 2076 } 2077 description 2078 "OSPF Router Informational Flag Definitions."; 2079 } 2080 list informational-capabilities { 2081 leaf informational-flag { 2082 type uint32; 2083 description 2084 "Informational flag."; 2085 } 2086 description 2087 "List of capabilities."; 2088 } 2089 list functional-capabilities { 2090 leaf informational-flag { 2091 type uint32; 2092 description 2093 "Functional flag."; 2094 } 2095 description 2096 "List of functional capabilities."; 2097 } 2098 } 2100 grouping dynamic-hostname-tlv { 2101 description "Dynamic Hostname TLV"; 2102 reference "RFC 5642: Dynamic Hostnames for OSPF"; 2103 leaf hostname { 2104 type string { 2105 length "1..255"; 2106 } 2107 description "Dynamic Hostname"; 2108 } 2109 } 2111 grouping sbfd-discriminator-tlv { 2112 description "Seamless BFD Discriminator TLV"; 2113 reference "RFC 7884: S-BFD Discriminators in OSPF"; 2114 list sbfd-discriminators { 2115 leaf sbfd-discriminator { 2116 type uint32; 2117 description "Individual S-BFD Discriminator."; 2118 } 2119 description 2120 "List of S-BFD Discriminators"; 2121 } 2122 } 2124 grouping maximum-sid-depth-tlv { 2125 description "Maximum SID Depth (MSD) TLV"; 2126 reference 2127 "RFC 8476: Signaling Maximum Segment Depth (MSD) 2128 using OSPF"; 2129 list msd-type { 2130 leaf msd-type { 2131 type uint8; 2132 description "Maximum Segment Depth (MSD) type"; 2133 } 2134 leaf msd-value { 2135 type uint8; 2136 description 2137 "Maximum Segment Depth (MSD) value for the type"; 2138 } 2139 description 2140 "List of Maximum Segment Depth (MSD) tuples"; 2141 } 2142 } 2144 grouping ospf-router-lsa-flags { 2145 leaf flags { 2146 type bits { 2147 bit V { 2148 description 2149 "When set, the router is an endpoint of one or 2150 more virtual links."; 2151 } 2152 bit E { 2153 description 2154 "When set, the router is an AS Boundary Router 2155 (ASBR)."; 2156 } 2157 bit B { 2158 description 2159 "When set, the router is an Area Border 2160 Router (ABR)."; 2161 } 2162 bit Nt { 2163 description 2164 "When set, the router is an NSSA border router 2165 that is unconditionally translating NSSA LSAs 2166 into AS-external LSAs."; 2167 } 2168 } 2169 description "Router LSA Flags."; 2170 } 2171 description 2172 "Router LSA Flags - Currently common for OSPFv2 and 2173 OSPFv3 but it may diverge with future augmentations."; 2174 } 2176 grouping ospfv2-router-link { 2177 description "OSPFv2 router link."; 2178 leaf link-id { 2179 type union { 2180 type inet:ipv4-address; 2181 type yang:dotted-quad; 2182 } 2183 description "Router-LSA Link ID"; 2184 } 2185 leaf link-data { 2186 type union { 2187 type inet:ipv4-address; 2188 type uint32; 2189 } 2190 description "Router-LSA Link data."; 2191 } 2192 leaf type { 2193 type router-link-type; 2194 description "Router-LSA Link type."; 2195 } 2196 } 2198 grouping ospfv2-lsa-body { 2199 description "OSPFv2 LSA body."; 2200 container router { 2201 when "derived-from-or-self(../../header/type, " 2202 + "'ospfv2-router-lsa')" { 2203 description 2204 "Only applies to Router-LSAs."; 2205 } 2206 description 2207 "Router LSA."; 2208 uses ospf-router-lsa-flags; 2209 leaf num-of-links { 2210 type uint16; 2211 description "Number of links in Router LSA."; 2212 } 2213 container links { 2214 description "All router Links."; 2215 list link { 2216 description "Router LSA link."; 2217 uses ospfv2-router-link; 2218 container topologies { 2219 description "All topologies for the link."; 2220 list topology { 2221 description 2222 "Topology specific information."; 2223 leaf mt-id { 2224 type uint8; 2225 description 2226 "The MT-ID for the topology enabled on 2227 the link."; 2228 } 2229 leaf metric { 2230 type uint16; 2231 description "Metric for the topology."; 2232 } 2233 } 2234 } 2235 } 2236 } 2237 } 2238 container network { 2239 when "derived-from-or-self(../../header/type, " 2240 + "'ospfv2-network-lsa')" { 2241 description 2242 "Only applies to Network LSAs."; 2243 } 2244 description 2245 "Network LSA."; 2246 leaf network-mask { 2247 type inet:ipv4-address; 2248 description 2249 "The IP address mask for the network."; 2250 } 2251 container attached-routers { 2252 description "All attached routers."; 2253 leaf-list attached-router { 2254 type yang:dotted-quad; 2255 description 2256 "List of the routers attached to the network."; 2257 } 2258 } 2259 } 2260 container summary { 2261 when "derived-from(../../header/type, " 2262 + "'ospfv2-summary-lsa-type')" { 2263 description 2264 "Only applies to Summary LSAs."; 2265 } 2266 description 2267 "Summary LSA."; 2268 leaf network-mask { 2269 type inet:ipv4-address; 2270 description 2271 "The IP address mask for the network"; 2272 } 2273 container topologies { 2274 description "All topologies for the summary LSA."; 2275 list topology { 2276 description 2277 "Topology specific information."; 2278 leaf mt-id { 2279 type uint8; 2280 description 2281 "The MT-ID for the topology enabled for 2282 the summary."; 2283 } 2284 leaf metric { 2285 type ospf-metric; 2286 description "Metric for the topology."; 2287 } 2288 } 2289 } 2290 } 2291 container external { 2292 when "derived-from(../../header/type, " 2293 + "'ospfv2-external-lsa-type')" { 2294 description 2295 "Only applies to AS-external LSAs and NSSA LSAs."; 2296 } 2297 description 2298 "External LSA."; 2299 leaf network-mask { 2300 type inet:ipv4-address; 2301 description 2302 "The IP address mask for the network"; 2303 } 2304 container topologies { 2305 description "All topologies for the external."; 2306 list topology { 2307 description 2308 "Topology specific information."; 2310 leaf mt-id { 2311 type uint8; 2312 description 2313 "The MT-ID for the topology enabled for the 2314 external or NSSA prefix."; 2315 } 2316 leaf flags { 2317 type bits { 2318 bit E { 2319 description 2320 "When set, the metric specified is a Type 2 2321 external metric."; 2322 } 2323 } 2324 description "Flags."; 2325 } 2326 leaf metric { 2327 type ospf-metric; 2328 description "Metric for the topology."; 2329 } 2330 leaf forwarding-address { 2331 type inet:ipv4-address; 2332 description 2333 "Forwarding address."; 2334 } 2335 leaf external-route-tag { 2336 type uint32; 2337 description 2338 "Route tag for the topology."; 2339 } 2340 } 2341 } 2342 } 2343 container opaque { 2344 when "derived-from(../../header/type, " 2345 + "'ospfv2-opaque-lsa-type')" { 2346 description 2347 "Only applies to Opaque LSAs."; 2348 } 2349 description 2350 "Opaque LSA."; 2352 container ri-opaque { 2353 description "OSPF Router Information (RI) opaque LSA."; 2354 reference "RFC 7770: OSPF Router Capabilities"; 2356 container router-capabilities-tlv { 2357 description 2358 "Informational and functional router capabilities"; 2359 uses router-capabilities-tlv; 2360 } 2362 container node-tag-tlvs { 2363 description 2364 "All node tag TLVs."; 2365 list node-tag-tlv { 2366 description 2367 "Node tag TLV."; 2368 uses node-tag-tlv; 2369 } 2370 } 2372 container dynamic-hostname-tlv { 2373 description "OSPF Dynamic Hostname"; 2374 uses dynamic-hostname-tlv; 2375 } 2377 container sbfd-discriminator-tlv { 2378 description "OSPF S-BFD Discriminators"; 2379 uses sbfd-discriminator-tlv; 2380 } 2382 container maximum-sid-depth-tlv { 2383 description "OSPF Maximum SID Depth (MSD) values"; 2384 uses maximum-sid-depth-tlv; 2385 } 2386 uses unknown-tlvs; 2387 } 2389 container te-opaque { 2390 description "OSPFv2 Traffic Engineering (TE) opaque LSA."; 2391 reference "RFC 3630: Traffic Engineering (TE) 2392 Extensions to OSPFv2"; 2394 container router-address-tlv { 2395 description 2396 "Router address TLV."; 2397 leaf router-address { 2398 type inet:ipv4-address; 2399 description 2400 "Router address."; 2401 } 2402 } 2404 container link-tlvs { 2405 description "All link TLVs in the LSA."; 2406 list link-tlv { 2407 description "Link TLV."; 2408 leaf link-type { 2409 type router-link-type; 2410 mandatory true; 2411 description "Link type."; 2412 } 2413 leaf link-id { 2414 type union { 2415 type inet:ipv4-address; 2416 type yang:dotted-quad; 2417 } 2418 mandatory true; 2419 description "Link ID."; 2420 } 2421 container local-if-ipv4-addrs { 2422 description "All local interface IPv4 addresses."; 2423 leaf-list local-if-ipv4-addr { 2424 type inet:ipv4-address; 2425 description 2426 "List of local interface IPv4 addresses."; 2427 } 2428 } 2429 container remote-if-ipv4-addrs { 2430 description "All remote interface IPv4 addresses."; 2431 leaf-list remote-if-ipv4-addr { 2432 type inet:ipv4-address; 2433 description 2434 "List of remote interface IPv4 addresses."; 2435 } 2436 } 2437 leaf te-metric { 2438 type uint32; 2439 description "TE metric."; 2440 } 2441 leaf max-bandwidth { 2442 type rt-types:bandwidth-ieee-float32; 2443 description "Maximum bandwidth."; 2444 } 2445 leaf max-reservable-bandwidth { 2446 type rt-types:bandwidth-ieee-float32; 2447 description "Maximum reservable bandwidth."; 2448 } 2449 container unreserved-bandwidths { 2450 description "All unreserved bandwidths."; 2451 list unreserved-bandwidth { 2452 leaf priority { 2453 type uint8 { 2454 range "0 .. 7"; 2455 } 2456 description "Priority from 0 to 7."; 2457 } 2458 leaf unreserved-bandwidth { 2459 type rt-types:bandwidth-ieee-float32; 2460 description "Unreserved bandwidth."; 2461 } 2462 description 2463 "List of unreserved bandwidths for different 2464 priorities."; 2465 } 2466 } 2467 leaf admin-group { 2468 type uint32; 2469 description 2470 "Administrative group/Resource Class/Color."; 2471 } 2472 uses unknown-tlvs; 2473 } 2474 } 2475 uses unknown-tlvs; 2476 } 2478 container extended-prefix-opaque { 2479 description "All extended prefix TLVs in the LSA."; 2480 list extended-prefix-tlv { 2481 description "Extended prefix TLV."; 2482 leaf route-type { 2483 type enumeration { 2484 enum unspecified { 2485 value "0"; 2486 description "Unspecified."; 2487 } 2488 enum intra-area { 2489 value "1"; 2490 description "OSPF intra-area route."; 2491 } 2492 enum inter-area { 2493 value "3"; 2494 description "OSPF inter-area route."; 2495 } 2496 enum external { 2497 value "5"; 2498 description "OSPF External route."; 2499 } 2500 enum nssa { 2501 value "7"; 2502 description "OSPF NSSA external route."; 2503 } 2504 } 2505 description "Route type."; 2506 } 2507 leaf flags { 2508 type bits { 2509 bit A { 2510 description 2511 "Attach flag."; 2512 } 2513 bit N { 2514 description 2515 "Node flag."; 2516 } 2517 } 2518 description "Prefix Flags."; 2519 } 2520 leaf prefix { 2521 type inet:ip-prefix; 2522 description "Address prefix."; 2523 } 2524 uses unknown-tlvs; 2525 } 2526 } 2528 container extended-link-opaque { 2529 description "All extended link TLVs in the LSA."; 2530 container extended-link-tlv { 2531 description "Extended link TLV."; 2532 uses ospfv2-router-link; 2533 container maximum-sid-depth-tlv { 2534 description "OSPF Maximum SID Depth (MSD) values"; 2535 uses maximum-sid-depth-tlv; 2536 } 2537 uses unknown-tlvs; 2538 } 2539 } 2540 } 2541 } 2543 grouping ospfv3-lsa-options { 2544 description "OSPFv3 LSA options"; 2545 leaf options { 2546 type bits { 2547 bit AF { 2548 description 2549 "When set, the router supports OSPFv3 Address 2550 Families as in RFC5838."; 2551 } 2552 bit DC { 2553 description 2554 "When set, the router supports demand circuits."; 2555 } 2556 bit R { 2557 description 2558 "When set, the originator is an active router."; 2559 } 2560 bit N { 2561 description 2562 "If set, the router is attached to an NSSA"; 2563 } 2564 bit E { 2565 description 2566 "This bit describes the way AS-external LSAs 2567 are flooded"; 2568 } 2569 bit V6 { 2570 description 2571 "If clear, the router/link should be excluded 2572 from IPv6 routing calculation"; 2573 } 2574 } 2575 mandatory true; 2576 description "OSPFv3 LSA options."; 2577 } 2578 } 2580 grouping ospfv3-lsa-prefix { 2581 description 2582 "OSPFv3 LSA prefix."; 2584 leaf prefix { 2585 type inet:ip-prefix; 2586 description 2587 "LSA Prefix."; 2588 } 2589 leaf prefix-options { 2590 type bits { 2591 bit NU { 2592 description 2593 "When set, the prefix should be excluded 2594 from IPv6 unicast calculations."; 2595 } 2596 bit LA { 2597 description 2598 "When set, the prefix is actually an IPv6 interface 2599 address of the Advertising Router."; 2600 } 2601 bit P { 2602 description 2603 "When set, the NSSA area prefix should be 2604 translated to an AS External LSA and advertised 2605 by the translating NSSA Border Router."; 2606 } 2607 bit DN { 2608 description 2609 "When set, the inter-area-prefix LSA or 2610 AS-external LSA prefix has been advertised as an 2611 L3VPN prefix."; 2612 } 2613 } 2614 mandatory true; 2615 description "Prefix options."; 2616 } 2617 } 2619 grouping ospfv3-lsa-external { 2620 description 2621 "AS-External and NSSA LSA."; 2622 leaf metric { 2623 type ospf-metric; 2624 description "Metric"; 2625 } 2627 leaf flags { 2628 type bits { 2629 bit E { 2630 description 2631 "When set, the metric specified is a Type 2 2632 external metric."; 2633 } 2634 bit F { 2635 description 2636 "When set, a Forwarding Address is included 2637 in the LSA."; 2638 } 2639 bit T { 2640 description 2641 "When set, an External Route Tag is included 2642 in the LSA."; 2643 } 2644 } 2645 description "Flags."; 2647 } 2649 leaf referenced-ls-type { 2650 type identityref { 2651 base ospfv3-lsa-type; 2652 } 2653 description "Referenced Link State type."; 2654 } 2655 leaf unknown-referenced-ls-type { 2656 type uint16; 2657 description 2658 "Value for an unknown Referenced Link State type."; 2659 } 2661 uses ospfv3-lsa-prefix; 2663 leaf forwarding-address { 2664 type inet:ipv6-address; 2665 description 2666 "Forwarding address."; 2667 } 2669 leaf external-route-tag { 2670 type uint32; 2671 description 2672 "Route tag."; 2673 } 2674 leaf referenced-link-state-id { 2675 type yang:dotted-quad; 2676 description 2677 "Referenced Link State ID."; 2678 } 2679 } 2681 grouping ospfv3-lsa-body { 2682 description "OSPFv3 LSA body."; 2683 container router { 2684 when "derived-from-or-self(../../header/type, " 2685 + "'ospfv3-router-lsa')" { 2686 description 2687 "Only applies to Router LSAs."; 2688 } 2689 description "Router LSA."; 2690 uses ospf-router-lsa-flags; 2691 uses ospfv3-lsa-options; 2693 container links { 2694 description "All router link."; 2695 list link { 2696 description "Router LSA link."; 2697 leaf interface-id { 2698 type uint32; 2699 description "Interface ID for link."; 2700 } 2701 leaf neighbor-interface-id { 2702 type uint32; 2703 description "Neighbor's Interface ID for link."; 2704 } 2705 leaf neighbor-router-id { 2706 type rt-types:router-id; 2707 description "Neighbor's Router ID for link."; 2708 } 2709 leaf type { 2710 type router-link-type; 2711 description "Link type: 1 - Point-to-Point Link 2712 2 - Transit Network Link 2713 3 - Stub Network Link 2714 4 - Virtual Link"; 2715 } 2716 leaf metric { 2717 type uint16; 2718 description "Link Metric."; 2719 } 2720 } 2721 } 2722 } 2723 container network { 2724 when "derived-from-or-self(../../header/type, " 2725 + "'ospfv3-network-lsa')" { 2726 description 2727 "Only applies to Network LSAs."; 2728 } 2729 description "Network LSA."; 2731 uses ospfv3-lsa-options; 2733 container attached-routers { 2734 description "All attached routers."; 2735 leaf-list attached-router { 2736 type yang:dotted-quad; 2737 description 2738 "List of the routers attached to the network."; 2739 } 2740 } 2741 } 2742 container inter-area-prefix { 2743 when "derived-from-or-self(../../header/type, " 2744 + "'ospfv3-inter-area-prefix-lsa')" { 2745 description 2746 "Only applies to Inter-Area-Prefix LSAs."; 2747 } 2748 leaf metric { 2749 type ospf-metric; 2750 description "Inter-Area Prefix Metric"; 2751 } 2752 uses ospfv3-lsa-prefix; 2753 description "Prefix LSA."; 2754 } 2755 container inter-area-router { 2756 when "derived-from-or-self(../../header/type, " 2757 + "'ospfv3-inter-area-router-lsa')" { 2758 description 2759 "Only applies to Inter-Area-Router LSAs."; 2760 } 2761 uses ospfv3-lsa-options; 2762 leaf metric { 2763 type ospf-metric; 2764 description "AS Boundary Router (ASBR) Metric."; 2765 } 2766 leaf destination-router-id { 2767 type rt-types:router-id; 2768 description 2769 "The Router ID of the ASBR described by the LSA."; 2770 } 2771 description "Inter-Area-Router LSA."; 2772 } 2773 container as-external { 2774 when "derived-from-or-self(../../header/type, " 2775 + "'ospfv3-as-external-lsa')" { 2776 description 2777 "Only applies to AS-external LSAs."; 2778 } 2780 uses ospfv3-lsa-external; 2782 description "AS-External LSA."; 2783 } 2784 container nssa { 2785 when "derived-from-or-self(../../header/type, " 2786 + "'ospfv3-nssa-lsa')" { 2787 description 2788 "Only applies to NSSA LSAs."; 2789 } 2790 uses ospfv3-lsa-external; 2791 description "NSSA LSA."; 2792 } 2793 container link { 2794 when "derived-from-or-self(../../header/type, " 2795 + "'ospfv3-link-lsa')" { 2796 description 2797 "Only applies to Link LSAs."; 2798 } 2799 leaf rtr-priority { 2800 type uint8; 2801 description 2802 "Router priority for DR election. A router with a 2803 higher priority will be preferred in the election 2804 and a value of 0 indicates the router is not 2805 eligible to become Designated Router or Backup 2806 Designated Router (BDR)."; 2807 } 2808 uses ospfv3-lsa-options; 2810 leaf link-local-interface-address { 2811 type inet:ipv6-address; 2812 description 2813 "The originating router's link-local 2814 interface address for the link."; 2815 } 2817 leaf num-of-prefixes { 2818 type uint32; 2819 description "Number of prefixes."; 2820 } 2822 container prefixes { 2823 description "All prefixes for the link."; 2824 list prefix { 2825 description 2826 "List of prefixes associated with the link."; 2827 uses ospfv3-lsa-prefix; 2828 } 2829 } 2830 description "Link LSA."; 2831 } 2832 container intra-area-prefix { 2833 when "derived-from-or-self(../../header/type, " 2834 + "'ospfv3-intra-area-prefix-lsa')" { 2835 description 2836 "Only applies to Intra-Area-Prefix LSAs."; 2837 } 2838 description "Intra-Area-Prefix LSA."; 2839 leaf referenced-ls-type { 2840 type identityref { 2841 base ospfv3-lsa-type; 2842 } 2843 description "Referenced Link State type."; 2844 } 2845 leaf unknown-referenced-ls-type { 2846 type uint16; 2847 description 2848 "Value for an unknown Referenced Link State type."; 2849 } 2850 leaf referenced-link-state-id { 2851 type yang:dotted-quad; 2852 description 2853 "Referenced Link State ID."; 2854 } 2855 leaf referenced-adv-router { 2856 type rt-types:router-id; 2857 description 2858 "Referenced Advertising Router."; 2859 } 2861 leaf num-of-prefixes { 2862 type uint16; 2863 description "Number of prefixes."; 2864 } 2865 container prefixes { 2866 description "All prefixes in this LSA."; 2867 list prefix { 2868 description "List of prefixes in this LSA."; 2869 uses ospfv3-lsa-prefix; 2870 leaf metric { 2871 type ospf-metric; 2872 description "Prefix Metric."; 2873 } 2874 } 2875 } 2876 } 2877 container router-information { 2878 when "derived-from-or-self(../../header/type, " 2879 + "'ospfv3-router-information-lsa')" { 2880 description 2881 "Only applies to Router Information LSAs (RFC7770)."; 2882 } 2883 container router-capabilities-tlv { 2884 description 2885 "Informational and functional router capabilities"; 2886 uses router-capabilities-tlv; 2888 } 2889 container node-tag-tlvs { 2890 description 2891 "All node tag tlvs."; 2892 list node-tag-tlv { 2893 description 2894 "Node tag tlv."; 2895 uses node-tag-tlv; 2896 } 2897 } 2898 container dynamic-hostname-tlv { 2899 description "OSPF Dynamic Hostname"; 2900 uses dynamic-hostname-tlv; 2901 } 2902 container sbfd-discriminator-tlv { 2903 description "OSPF S-BFD Discriminators"; 2904 uses sbfd-discriminator-tlv; 2905 } 2906 description "Router Information LSA."; 2907 reference "RFC 7770: Extensions for Advertising Router 2908 Capabilities"; 2909 } 2910 } 2912 grouping lsa-header { 2913 description 2914 "Common LSA for OSPFv2 and OSPFv3"; 2915 leaf age { 2916 type uint16; 2917 mandatory true; 2918 description "LSA age."; 2919 } 2920 leaf type { 2921 type identityref { 2922 base ospf-lsa-type; 2923 } 2924 mandatory true; 2925 description "LSA type"; 2926 } 2927 leaf adv-router { 2928 type rt-types:router-id; 2929 mandatory true; 2930 description "LSA advertising router."; 2931 } 2932 leaf seq-num { 2933 type uint32; 2934 mandatory true; 2935 description "LSA sequence number."; 2937 } 2938 leaf checksum { 2939 type fletcher-checksum16-type; 2940 mandatory true; 2941 description "LSA checksum."; 2942 } 2943 leaf length { 2944 type uint16; 2945 mandatory true; 2946 description "LSA length including the header."; 2947 } 2948 } 2950 grouping ospfv2-lsa { 2951 description 2952 "OSPFv2 LSA - LSAs are uniquely identified by 2953 the 2954 tuple with the sequence number differentiating 2955 LSA instances."; 2956 container header { 2957 must "(derived-from(type, " 2958 + "'ospfv2-opaque-lsa-type') and " 2959 + "opaque-id and opaque-type) or " 2960 + "(not(derived-from(type, " 2961 + "'ospfv2-opaque-lsa-type')) " 2962 + "and not(opaque-id) and not(opaque-type))" { 2963 description 2964 "Opaque type and ID only apply to Opaque LSAs."; 2965 } 2966 description 2967 "Decoded OSPFv2 LSA header data."; 2968 leaf option { 2969 type bits { 2970 bit MT { 2971 description 2972 "When set, the router supports multi-topology as 2973 in RFC 4915."; 2974 } 2975 bit DC { 2976 description 2977 "When set, the router supports demand circuits."; 2978 } 2979 bit P { 2980 description 2981 "Only used in type-7 LSA. When set, an NSSA 2982 border router should translate the type-7 LSA 2983 to a type-5 LSA."; 2984 } 2985 bit MC { 2986 description 2987 "When set, the router supports MOSPF."; 2988 } 2989 bit E { 2990 description 2991 "This bit describes the way AS-external LSAs 2992 are flooded."; 2993 } 2994 bit O { 2995 description 2996 "When set, the router is opaque-capable as in 2997 RFC 5250."; 2998 } 2999 bit DN { 3000 description 3001 "When a type 3, 5 or 7 LSA is sent from a PE to a CE, 3002 the DN bit must be set. See RFC 4576."; 3003 } 3004 } 3005 mandatory true; 3006 description "LSA options."; 3007 } 3008 leaf lsa-id { 3009 type yang:dotted-quad; 3010 mandatory true; 3011 description "Link-State ID."; 3012 } 3014 leaf opaque-type { 3015 type uint8; 3016 description "Opaque type."; 3017 } 3019 leaf opaque-id { 3020 type opaque-id; 3021 description "Opaque ID."; 3022 } 3024 uses lsa-header; 3025 } 3026 container body { 3027 description 3028 "Decoded OSPFv2 LSA body data."; 3029 uses ospfv2-lsa-body; 3030 } 3031 } 3032 grouping ospfv3-lsa { 3033 description 3034 "Decoded OSPFv3 LSA."; 3035 container header { 3036 description 3037 "Decoded OSPFv3 LSA header data."; 3038 leaf lsa-id { 3039 type uint32; 3040 mandatory true; 3041 description "OSPFv3 LSA ID."; 3042 } 3043 uses lsa-header; 3044 } 3045 container body { 3046 description 3047 "Decoded OSPF LSA body data."; 3048 uses ospfv3-lsa-body; 3049 } 3050 } 3051 grouping lsa-common { 3052 description 3053 "Common fields for OSPF LSA representation."; 3054 leaf decode-completed { 3055 type boolean; 3056 description 3057 "The OSPF LSA body was successfully decoded other than 3058 unknown TLVs. Unknown LSAs types and OSPFv2 unknown 3059 opaque LSA types are not decoded. Additionally, 3060 malformed LSAs are generally not accepted and are 3061 not be in the Link State Database."; 3062 } 3063 leaf raw-data { 3064 type yang:hex-string; 3065 description 3066 "The complete LSA in network byte 3067 order hexadecimal as received or originated."; 3068 } 3069 } 3071 grouping lsa { 3072 description 3073 "OSPF LSA."; 3074 uses lsa-common; 3075 choice version { 3076 description 3077 "OSPFv2 or OSPFv3 LSA body."; 3078 container ospfv2 { 3079 description "OSPFv2 LSA"; 3080 uses ospfv2-lsa; 3081 } 3082 container ospfv3 { 3083 description "OSPFv3 LSA"; 3084 uses ospfv3-lsa; 3085 } 3086 } 3087 } 3089 grouping lsa-key { 3090 description 3091 "OSPF LSA key."; 3092 leaf lsa-id { 3093 type union { 3094 type yang:dotted-quad; 3095 type uint32; 3096 } 3097 description 3098 "Link-State ID."; 3099 } 3100 leaf adv-router { 3101 type rt-types:router-id; 3102 description 3103 "Advertising router."; 3104 } 3105 } 3107 grouping instance-stat { 3108 description "Per-instance statistics"; 3109 leaf originate-new-lsa-count { 3110 type yang:counter32; 3111 description "The number of new LSAs originated."; 3112 } 3113 leaf rx-new-lsas-count { 3114 type yang:counter32; 3115 description "The number of LSAs received."; 3116 } 3117 leaf as-scope-lsa-count { 3118 type yang:gauge32; 3119 description "The number of AS-scope LSAs."; 3120 } 3121 leaf as-scope-lsa-chksum-sum { 3122 type uint32; 3123 description 3124 "The sum of the LSA checksums for AS-scope LSAs."; 3125 } 3126 container database { 3127 description "Container for per AS-scope LSA statistics."; 3128 list as-scope-lsa-type { 3129 description "List of AS-scope LSA statistics"; 3130 leaf lsa-type { 3131 type uint16; 3132 description "AS-Scope LSA type."; 3133 } 3134 leaf lsa-count { 3135 type yang:gauge32; 3136 description "The number of LSAs of the LSA type."; 3137 } 3138 leaf lsa-cksum-sum { 3139 type uint32; 3140 description 3141 "The sum of the LSA checksums of the LSA type."; 3142 } 3143 } 3144 } 3145 uses instance-fast-reroute-state; 3146 } 3148 grouping area-stat { 3149 description "Per-area statistics."; 3150 leaf spf-runs-count { 3151 type yang:counter32; 3152 description 3153 "The number of times the intra-area SPF has run."; 3154 } 3155 leaf abr-count { 3156 type yang:gauge32; 3157 description 3158 "The total number of Area Border Routers (ABRs) 3159 reachable within this area."; 3160 } 3161 leaf asbr-count { 3162 type yang:gauge32; 3163 description 3164 "The total number of AS Boundary Routers (ASBRs)."; 3165 } 3166 leaf ar-nssa-translator-event-count { 3167 type yang:counter32; 3168 description 3169 "The number of NSSA translator-state changes."; 3170 } 3171 leaf area-scope-lsa-count { 3172 type yang:gauge32; 3173 description 3174 "The number of area-scope LSAs in the area."; 3175 } 3176 leaf area-scope-lsa-cksum-sum { 3177 type uint32; 3178 description "The sum of the area-scope LSAs checksums."; 3179 } 3180 container database { 3181 description "Container for area-scope LSA type statistics."; 3182 list area-scope-lsa-type { 3183 description "List of area-scope LSA statistics"; 3184 leaf lsa-type { 3185 type uint16; 3186 description "Area-scope LSA type."; 3187 } 3188 leaf lsa-count { 3189 type yang:gauge32; 3190 description "The number of LSAs of the LSA type."; 3191 } 3192 leaf lsa-cksum-sum { 3193 type uint32; 3194 description 3195 "The sum of the LSA checksums of the LSA type."; 3196 } 3197 } 3198 } 3199 } 3201 grouping interface-stat { 3202 description "Per-interface statistics"; 3203 leaf if-event-count { 3204 type yang:counter32; 3205 description 3206 "The number of times this interface has changed its 3207 state or an error has occurred."; 3208 } 3209 leaf link-scope-lsa-count { 3210 type yang:gauge32; 3211 description "The number of link-scope LSAs."; 3212 } 3213 leaf link-scope-lsa-cksum-sum { 3214 type uint32; 3215 description "The sum of link-scope LSA checksums."; 3216 } 3217 container database { 3218 description "Container for link-scope LSA type statistics."; 3219 list link-scope-lsa-type { 3220 description "List of link-scope LSA statistics"; 3221 leaf lsa-type { 3222 type uint16; 3223 description "Link scope LSA type."; 3225 } 3226 leaf lsa-count { 3227 type yang:gauge32; 3228 description "The number of LSAs of the LSA type."; 3229 } 3230 leaf lsa-cksum-sum { 3231 type uint32; 3232 description 3233 "The sum of the LSA checksums of the LSA type."; 3234 } 3235 } 3236 } 3237 } 3239 grouping neighbor-stat { 3240 description "Per-neighbor statistics."; 3241 leaf nbr-event-count { 3242 type yang:counter32; 3243 description 3244 "The number of times this neighbor has changed 3245 state or an error has occurred."; 3246 } 3247 leaf nbr-retrans-qlen { 3248 type yang:gauge32; 3249 description 3250 "The current length of the retransmission queue."; 3251 } 3252 } 3254 grouping instance-fast-reroute-config { 3255 description 3256 "This group defines global configuration of IP 3257 Fast ReRoute (FRR)."; 3258 container fast-reroute { 3259 if-feature fast-reroute; 3260 description 3261 "This container may be augmented with global 3262 parameters for IP-FRR."; 3263 container lfa { 3264 if-feature lfa; 3265 description 3266 "This container may be augmented with 3267 global parameters for Loop-Free Alternatives (LFA). 3268 Container creation has no effect on LFA activation."; 3269 } 3270 } 3271 } 3272 grouping instance-fast-reroute-state { 3273 description "IP-FRR state data grouping"; 3275 container protected-routes { 3276 if-feature fast-reroute; 3277 config false; 3278 description "Instance protection statistics"; 3280 list address-family-stats { 3281 key "address-family prefix alternate"; 3282 description 3283 "Per Address Family protected prefix information"; 3285 leaf address-family { 3286 type iana-rt-types:address-family; 3287 description 3288 "Address-family"; 3289 } 3290 leaf prefix { 3291 type inet:ip-prefix; 3292 description 3293 "Protected prefix."; 3294 } 3295 leaf alternate { 3296 type inet:ip-address; 3297 description 3298 "Alternate next hop for the prefix."; 3299 } 3300 leaf alternate-type { 3301 type enumeration { 3302 enum equal-cost { 3303 description 3304 "ECMP alternate."; 3305 } 3306 enum lfa { 3307 description 3308 "LFA alternate."; 3309 } 3310 enum remote-lfa { 3311 description 3312 "Remote LFA alternate."; 3313 } 3314 enum tunnel { 3315 description 3316 "Tunnel based alternate 3317 (like RSVP-TE or GRE)."; 3318 } 3319 enum ti-lfa { 3320 description 3321 "TI-LFA alternate."; 3322 } 3323 enum mrt { 3324 description 3325 "MRT alternate."; 3326 } 3327 enum other { 3328 description 3329 "Unknown alternate type."; 3330 } 3331 } 3332 description 3333 "Type of alternate."; 3334 } 3335 leaf best { 3336 type boolean; 3337 description 3338 "Indicates that this alternate is preferred."; 3339 } 3340 leaf non-best-reason { 3341 type string { 3342 length "1..255"; 3343 } 3344 description 3345 "Information field to describe why the alternate 3346 is not best."; 3347 } 3348 leaf protection-available { 3349 type bits { 3350 bit node-protect { 3351 position 0; 3352 description 3353 "Node protection available."; 3354 } 3355 bit link-protect { 3356 position 1; 3357 description 3358 "Link protection available."; 3359 } 3360 bit srlg-protect { 3361 position 2; 3362 description 3363 "SRLG protection available."; 3364 } 3365 bit downstream-protect { 3366 position 3; 3367 description 3368 "Downstream protection available."; 3369 } 3370 bit other { 3371 position 4; 3372 description 3373 "Other protection available."; 3374 } 3375 } 3376 description "Protection provided by the alternate."; 3377 } 3378 leaf alternate-metric1 { 3379 type uint32; 3380 description 3381 "Metric from Point of Local Repair (PLR) to 3382 destination through the alternate path."; 3383 } 3384 leaf alternate-metric2 { 3385 type uint32; 3386 description 3387 "Metric from PLR to the alternate node"; 3388 } 3389 leaf alternate-metric3 { 3390 type uint32; 3391 description 3392 "Metric from alternate node to the destination"; 3393 } 3394 } 3395 } 3397 container unprotected-routes { 3398 if-feature fast-reroute; 3399 config false; 3400 description "List of prefixes that are not protected"; 3402 list address-family-stats { 3403 key "address-family prefix"; 3404 description 3405 "Per Address Family (AF) unprotected prefix statistics."; 3407 leaf address-family { 3408 type iana-rt-types:address-family; 3409 description "Address-family"; 3410 } 3411 leaf prefix { 3412 type inet:ip-prefix; 3413 description "Unprotected prefix."; 3414 } 3415 } 3417 } 3419 list protection-statistics { 3420 key frr-protection-method; 3421 config false; 3422 description "List protection method statistics"; 3424 leaf frr-protection-method { 3425 type string; 3426 description "Protection method used."; 3427 } 3428 list address-family-stats { 3429 key address-family; 3430 description "Per Address Family protection statistics."; 3432 leaf address-family { 3433 type iana-rt-types:address-family; 3434 description "Address-family"; 3435 } 3436 leaf total-routes { 3437 type uint32; 3438 description "Total prefixes."; 3439 } 3440 leaf unprotected-routes { 3441 type uint32; 3442 description 3443 "Total prefixes that are not protected."; 3444 } 3445 leaf protected-routes { 3446 type uint32; 3447 description 3448 "Total prefixes that are protected."; 3449 } 3450 leaf linkprotected-routes { 3451 type uint32; 3452 description 3453 "Total prefixes that are link protected."; 3454 } 3455 leaf nodeprotected-routes { 3456 type uint32; 3457 description 3458 "Total prefixes that are node protected."; 3459 } 3460 } 3461 } 3462 } 3464 grouping interface-fast-reroute-config { 3465 description 3466 "This group defines interface configuration of IP-FRR."; 3467 container fast-reroute { 3468 if-feature fast-reroute; 3469 container lfa { 3470 if-feature lfa; 3471 leaf candidate-enable { 3472 type boolean; 3473 default true; 3474 description 3475 "Enable the interface to be used as backup."; 3476 } 3477 leaf enable { 3478 type boolean; 3479 default false; 3480 description 3481 "Activates LFA - Per-prefix LFA computation 3482 is assumed."; 3483 } 3484 container remote-lfa { 3485 if-feature remote-lfa; 3486 leaf enable { 3487 type boolean; 3488 default false; 3489 description 3490 "Activates Remote LFA (R-LFA)."; 3491 } 3492 description 3493 "Remote LFA configuration."; 3494 } 3495 description 3496 "LFA configuration."; 3497 } 3498 description 3499 "Interface IP Fast-reroute configuration."; 3500 } 3501 } 3503 grouping interface-physical-link-config { 3504 description 3505 "Interface cost configuration that only applies to 3506 physical interfaces (non-virtual) and sham links."; 3507 leaf cost { 3508 type ospf-link-metric; 3509 description 3510 "Interface cost."; 3511 } 3512 leaf mtu-ignore { 3513 if-feature mtu-ignore; 3514 type boolean; 3515 description 3516 "Enable/Disable bypassing the MTU mismatch check in 3517 Database Description packets."; 3518 } 3519 leaf prefix-suppression { 3520 if-feature prefix-suppression; 3521 type boolean; 3522 description 3523 "Suppress advertisement of the prefixes associated 3524 with the interface."; 3525 } 3526 } 3528 grouping interface-common-config { 3529 description 3530 "Common configuration for all types of interfaces, 3531 including virtual links and sham links."; 3533 leaf hello-interval { 3534 type uint16; 3535 units seconds; 3536 description 3537 "Interval between hello packets (seconds). It must 3538 be the same for all routers on the same network. 3539 Different networks, implementations, and deployments 3540 will use different hello-intervals. A sample value 3541 for a LAN network would be 10 seconds."; 3542 } 3544 leaf dead-interval { 3545 type uint16; 3546 units seconds; 3547 must "../dead-interval > ../hello-interval" { 3548 error-message "The dead interval must be " 3549 + "larger than the hello interval"; 3550 description 3551 "The value MUST be greater than 'hello-interval'."; 3552 } 3553 description 3554 "Interval after which a neighbor is declared down 3555 (seconds) if hello packets are not received. It is 3556 typically 3 or 4 times the hello-interval. A typical 3557 value for LAN networks is 40 seconds."; 3558 } 3560 leaf retransmit-interval { 3561 type uint16 { 3562 range "1..3600"; 3563 } 3564 units seconds; 3565 description 3566 "Interval between retransmitting unacknowledged Link 3567 State Advertisements (LSAs) (seconds). This should 3568 be well over the round-trip transmit delay for 3569 any two routers on the network. A sample value 3570 would be 5 seconds."; 3571 } 3573 leaf transmit-delay { 3574 type uint16; 3575 units seconds; 3576 description 3577 "Estimated time needed to transmit Link State Update 3578 (LSU) packets on the interface (seconds). LSAs have 3579 their age incremented by this amount on advertised 3580 on the interface. A sample value would be 1 second."; 3581 } 3583 leaf lls { 3584 if-feature lls; 3585 type boolean; 3586 description 3587 "Enable/Disable link-local signaling (LLS) support."; 3588 } 3590 container ttl-security { 3591 if-feature ttl-security; 3592 description "Time to Live (TTL) security check."; 3593 leaf enable { 3594 type boolean; 3595 description 3596 "Enable/Disable TTL security check."; 3597 } 3598 leaf hops { 3599 type uint8 { 3600 range "1..254"; 3601 } 3602 description 3603 "Maximum number of hops that an OSPF packet may 3604 have traversed before reception."; 3605 } 3606 } 3607 leaf enable { 3608 type boolean; 3609 default true; 3610 description 3611 "Enable/disable OSPF protocol on the interface."; 3612 } 3614 container authentication { 3615 description "Authentication configuration."; 3616 choice auth-type-selection { 3617 description 3618 "Options for OSPFv2/OSPFv3 authentication 3619 configuration."; 3620 case ospfv2-auth { 3621 when "derived-from-or-self(../../../../../../rt:type, " 3622 + "'ospfv2')" { 3623 description "Applied to OSPFv2 only."; 3624 } 3625 leaf ospfv2-auth-trailer-rfc { 3626 if-feature ospfv2-authentication-trailer; 3627 type ospfv2-auth-trailer-rfc-version; 3628 description 3629 "Version of OSFPv2 authentication trailer support - 3630 RFC 5709 or RFC 7474"; 3631 } 3632 choice ospfv2-auth-specification { 3633 description 3634 "Key chain or explicit key parameter specification"; 3635 case auth-key-chain { 3636 if-feature key-chain; 3637 leaf ospfv2-key-chain { 3638 type key-chain:key-chain-ref; 3639 description 3640 "key-chain name."; 3641 } 3642 } 3643 case auth-key-explicit { 3644 leaf ospfv2-key-id { 3645 type uint32; 3646 description 3647 "Key Identifier"; 3648 } 3649 leaf ospfv2-key { 3650 type string; 3651 description 3652 "OSPFv2 authentication key. The 3653 length of the key may be dependent on the 3654 cryptographic algorithm."; 3655 } 3656 leaf ospfv2-crypto-algorithm { 3657 type identityref { 3658 base key-chain:crypto-algorithm; 3659 } 3660 description 3661 "Cryptographic algorithm associated with key."; 3662 } 3663 } 3664 } 3665 } 3666 case ospfv3-auth-ipsec { 3667 when "derived-from-or-self(../../../../../../rt:type, " 3668 + "'ospfv3')" { 3669 description "Applied to OSPFv3 only."; 3670 } 3671 if-feature ospfv3-authentication-ipsec; 3672 leaf sa { 3673 type string; 3674 description 3675 "Security Association (SA) name."; 3676 } 3677 } 3678 case ospfv3-auth-trailer { 3679 when "derived-from-or-self(../../../../../../rt:type, " 3680 + "'ospfv3')" { 3681 description "Applied to OSPFv3 only."; 3682 } 3683 if-feature ospfv3-authentication-trailer; 3684 choice ospfv3-auth-specification { 3685 description 3686 "Key chain or explicit key parameter specification"; 3687 case auth-key-chain { 3688 if-feature key-chain; 3689 leaf ospfv3-key-chain { 3690 type key-chain:key-chain-ref; 3691 description 3692 "key-chain name."; 3693 } 3694 } 3695 case auth-key-explicit { 3696 leaf ospfv3-sa-id { 3697 type uint16; 3698 description 3699 "Security Association (SA) Identifier"; 3700 } 3701 leaf ospfv3-key { 3702 type string; 3703 description 3704 "OSPFv3 authentication key. The 3705 length of the key may be dependent on the 3706 cryptographic algorithm."; 3707 } 3708 leaf ospfv3-crypto-algorithm { 3709 type identityref { 3710 base key-chain:crypto-algorithm; 3711 } 3712 description 3713 "Cryptographic algorithm associated with key."; 3714 } 3715 } 3716 } 3717 } 3718 } 3719 } 3720 } 3722 grouping interface-config { 3723 description "Configuration for real interfaces."; 3725 leaf interface-type { 3726 type enumeration { 3727 enum "broadcast" { 3728 description 3729 "Specify OSPF broadcast multi-access network."; 3730 } 3731 enum "non-broadcast" { 3732 description 3733 "Specify OSPF Non-Broadcast Multi-Access 3734 (NBMA) network."; 3735 } 3736 enum "point-to-multipoint" { 3737 description 3738 "Specify OSPF point-to-multipoint network."; 3739 } 3740 enum "point-to-point" { 3741 description 3742 "Specify OSPF point-to-point network."; 3743 } 3744 enum "hybrid" { 3745 if-feature hybrid-interface; 3746 description 3747 "Specify OSPF hybrid broadcast/P2MP network."; 3748 } 3749 } 3750 description 3751 "Interface type."; 3752 } 3753 leaf passive { 3754 type boolean; 3755 description 3756 "Enable/Disable passive interface - a passive interface's 3757 prefix will be advertised but no neighbor adjacencies 3758 will be formed on the interface."; 3759 } 3761 leaf demand-circuit { 3762 if-feature demand-circuit; 3763 type boolean; 3764 description 3765 "Enable/Disable demand circuit."; 3766 } 3768 leaf priority { 3769 type uint8; 3770 description 3771 "Configure OSPF router priority. On multi-access network 3772 this value is for Designated Router (DR) election. The 3773 priority is ignored on other interface types. A router 3774 with a higher priority will be preferred in the election 3775 and a value of 0 indicates the router is not eligible to 3776 become Designated Router or Backup Designated Router 3777 (BDR)."; 3778 } 3780 container multi-areas { 3781 if-feature multi-area-adj; 3782 description "Container for multi-area config."; 3783 list multi-area { 3784 key multi-area-id; 3785 description 3786 "Configure OSPF multi-area adjacency."; 3787 leaf multi-area-id { 3788 type area-id-type; 3789 description 3790 "Multi-area adjacency area ID."; 3791 } 3792 leaf cost { 3793 type ospf-link-metric; 3794 description 3795 "Interface cost for multi-area adjacency."; 3796 } 3797 } 3798 } 3800 container static-neighbors { 3801 description "Statically configured neighbors."; 3803 list neighbor { 3804 key "identifier"; 3805 description 3806 "Specify a static OSPF neighbor."; 3808 leaf identifier { 3809 type inet:ip-address; 3810 description 3811 "Neighbor Router ID, IPv4 address, or IPv6 address."; 3812 } 3814 leaf cost { 3815 type ospf-link-metric; 3816 description 3817 "Neighbor cost. Different implementations have different 3818 default costs with some defaulting to a cost inversely 3819 proportional to the interface speed. Others will 3820 default to 1 equating the cost to a hop count." ; 3821 } 3822 leaf poll-interval { 3823 type uint16; 3824 units seconds; 3825 description 3826 "Neighbor poll interval (seconds) for sending OSPF 3827 hello packets to discover the neighbor on NBMA 3828 networks. This interval dictates the granularity for 3829 discovery of new neighbors. A sample would be 2 minutes 3830 for a legacy Packet Data Network (PDN) X.25 network."; 3831 } 3832 leaf priority { 3833 type uint8; 3834 description 3835 "Neighbor priority for DR election. A router with a 3836 higher priority will be preferred in the election 3837 and a value of 0 indicates the router is not 3838 eligible to become Designated Router or Backup 3839 Designated Router (BDR)."; 3840 } 3841 } 3842 } 3844 leaf node-flag { 3845 if-feature node-flag; 3846 type boolean; 3847 default false; 3848 description 3849 "Set prefix as identifying the advertising router."; 3850 reference "RFC 7684: OSPFv2 Prefix/Link Attribute 3851 Advertisement"; 3852 } 3854 container bfd { 3855 if-feature bfd; 3856 description "BFD Client Configuration."; 3857 uses bfd-types:client-cfg-parms; 3858 reference "RFC YYYY: YANG Data Model for Bidirectional 3859 Forwarding Detection (BFD). Please replace YYYY with 3860 published RFC number for draft-ietf-bfd-yang."; 3861 } 3863 uses interface-fast-reroute-config; 3864 uses interface-common-config; 3865 uses interface-physical-link-config; 3866 } 3868 grouping neighbor-state { 3869 description 3870 "OSPF neighbor operational state."; 3872 leaf address { 3873 type inet:ip-address; 3874 config false; 3875 description 3876 "Neighbor address."; 3877 } 3878 leaf dr-router-id { 3879 type rt-types:router-id; 3880 config false; 3881 description "Neighbor's Designated Router (DR) Router ID."; 3882 } 3884 leaf dr-ip-addr { 3885 type inet:ip-address; 3886 config false; 3887 description "Neighbor's Designated Router (DR) IP address."; 3888 } 3890 leaf bdr-router-id { 3891 type rt-types:router-id; 3892 config false; 3893 description 3894 "Neighbor's Backup Designated Router (BDR) Router ID."; 3895 } 3896 leaf bdr-ip-addr { 3897 type inet:ip-address; 3898 config false; 3899 description 3900 "Neighbor's Backup Designated Router (BDR) IP Address."; 3901 } 3902 leaf state { 3903 type nbr-state-type; 3904 config false; 3905 description 3906 "OSPF neighbor state."; 3907 } 3908 leaf cost { 3909 type ospf-link-metric; 3910 config false; 3911 description "Cost to reach neighbor for Point-to-Multipoint 3912 and Hybrid networks"; 3913 } 3914 leaf dead-timer { 3915 type rt-types:timer-value-seconds16; 3916 config false; 3917 description "This timer tracks the remaining time before 3918 the neighbor is declared dead."; 3919 } 3920 container statistics { 3921 config false; 3922 description "Per-neighbor statistics"; 3923 uses neighbor-stat; 3924 } 3925 } 3927 grouping interface-common-state { 3928 description 3929 "OSPF interface common operational state."; 3930 reference "RFC2328 Section 9: OSPF Version2 - 3931 The Interface Data Structure"; 3933 leaf state { 3934 type if-state-type; 3935 config false; 3936 description "Interface state."; 3937 } 3939 leaf hello-timer { 3940 type rt-types:timer-value-seconds16; 3941 config false; 3942 description "This timer tracks the remaining time before 3943 the next hello packet is sent on the 3944 interface."; 3945 } 3947 leaf wait-timer { 3948 type rt-types:timer-value-seconds32; 3949 config false; 3950 description "This timer tracks the remaining time before 3951 the interface exits the Waiting state."; 3952 } 3954 leaf dr-router-id { 3955 type rt-types:router-id; 3956 config false; 3957 description "Designated Router (DR) Router ID."; 3958 } 3960 leaf dr-ip-addr { 3961 type inet:ip-address; 3962 config false; 3963 description "Designated Router (DR) IP address."; 3964 } 3966 leaf bdr-router-id { 3967 type rt-types:router-id; 3968 config false; 3969 description "Backup Designated Router (BDR) Router ID."; 3970 } 3972 leaf bdr-ip-addr { 3973 type inet:ip-address; 3974 config false; 3975 description "Backup Designated Router (BDR) IP Address."; 3976 } 3978 container statistics { 3979 config false; 3980 description "Per-interface statistics"; 3981 uses interface-stat; 3982 } 3984 container neighbors { 3985 config false; 3986 description "All neighbors for the interface."; 3987 list neighbor { 3988 key "neighbor-router-id"; 3989 description 3990 "List of interface OSPF neighbors."; 3991 leaf neighbor-router-id { 3992 type rt-types:router-id; 3993 description 3994 "Neighbor Router ID."; 3995 } 3996 uses neighbor-state; 3997 } 3998 } 3999 container database { 4000 config false; 4001 description "Link-scope Link State Database."; 4002 list link-scope-lsa-type { 4003 key "lsa-type"; 4004 description 4005 "List OSPF link-scope LSAs."; 4006 leaf lsa-type { 4007 type uint16; 4008 description "OSPF link-scope LSA type."; 4009 } 4010 container link-scope-lsas { 4011 description 4012 "All link-scope LSAs of this LSA type."; 4013 list link-scope-lsa { 4014 key "lsa-id adv-router"; 4015 description "List of OSPF link-scope LSAs"; 4016 uses lsa-key; 4017 uses lsa { 4018 refine "version/ospfv2/ospfv2" { 4019 must "derived-from-or-self( " 4020 + "../../../../../../../../../../" 4021 + "rt:type, 'ospfv2')" { 4022 description "OSPFv2 LSA."; 4023 } 4024 } 4025 refine "version/ospfv3/ospfv3" { 4026 must "derived-from-or-self( " 4027 + "../../../../../../../../../../" 4028 + "rt:type, 'ospfv3')" { 4029 description "OSPFv3 LSA."; 4030 } 4031 } 4032 } 4033 } 4034 } 4035 } 4036 } 4037 } 4039 grouping interface-state { 4040 description 4041 "OSPF interface operational state."; 4042 reference "RFC2328 Section 9: OSPF Version2 - 4043 The Interface Data Structure"; 4045 uses interface-common-state; 4046 } 4048 grouping virtual-link-config { 4049 description 4050 "OSPF virtual link configuration state."; 4052 uses interface-common-config; 4053 } 4055 grouping virtual-link-state { 4056 description 4057 "OSPF virtual link operational state."; 4059 leaf cost { 4060 type ospf-link-metric; 4061 config false; 4062 description 4063 "Virtual link interface cost."; 4064 } 4065 uses interface-common-state; 4066 } 4068 grouping sham-link-config { 4069 description 4070 "OSPF sham link configuration state."; 4072 uses interface-common-config; 4073 uses interface-physical-link-config; 4074 } 4076 grouping sham-link-state { 4077 description 4078 "OSPF sham link operational state."; 4079 uses interface-common-state; 4080 } 4082 grouping address-family-area-config { 4083 description 4084 "OSPF address-family specific area config state."; 4086 container ranges { 4087 description "Container for summary ranges"; 4088 list range { 4089 key "prefix"; 4090 description 4091 "Summarize routes matching address/mask - 4092 Applicable to Area Border Routers (ABRs) only."; 4093 leaf prefix { 4094 type inet:ip-prefix; 4095 description 4096 "IPv4 or IPv6 prefix"; 4097 } 4098 leaf advertise { 4099 type boolean; 4100 description 4101 "Advertise or hide."; 4102 } 4103 leaf cost { 4104 type ospf-metric; 4105 description 4106 "Advertised cost of summary route."; 4107 } 4108 } 4109 } 4110 } 4112 grouping area-common-config { 4113 description 4114 "OSPF area common configuration state."; 4116 leaf summary { 4117 when "derived-from(../area-type,'stub-nssa-area')" { 4118 description 4119 "Summary advertisement into the stub/NSSA area."; 4120 } 4121 type boolean; 4122 description 4123 "Enable/Disable summary advertisement into the stub or 4124 NSSA area."; 4125 } 4126 leaf default-cost { 4127 when "derived-from(../area-type,'stub-nssa-area')" { 4128 description 4129 "Cost for LSA default route advertised into the 4130 stub or NSSA area."; 4131 } 4132 type ospf-metric; 4133 description 4134 "Set the summary default route cost for a 4135 stub or NSSA area."; 4137 } 4138 } 4140 grouping area-config { 4141 description 4142 "OSPF area configuration state."; 4144 leaf area-type { 4145 type identityref { 4146 base area-type; 4147 } 4148 default normal-area; 4149 description 4150 "Area type."; 4151 } 4153 uses area-common-config; 4154 uses address-family-area-config; 4155 } 4157 grouping area-state { 4158 description 4159 "OSPF area operational state."; 4161 container statistics { 4162 config false; 4163 description "Per-area statistics"; 4164 uses area-stat; 4165 } 4167 container database { 4168 config false; 4169 description "Area-scope Link State Database."; 4170 list area-scope-lsa-type { 4171 key "lsa-type"; 4172 description "List OSPF area-scope LSAs."; 4173 leaf lsa-type { 4174 type uint16; 4175 description "OSPF area-scope LSA type."; 4176 } 4177 container area-scope-lsas { 4178 description 4179 "All area-scope LSAs of an area-scope 4180 LSA type."; 4181 list area-scope-lsa { 4182 key "lsa-id adv-router"; 4183 description "List of OSPF area-scope LSAs"; 4184 uses lsa-key; 4185 uses lsa { 4186 refine "version/ospfv2/ospfv2" { 4187 must "derived-from-or-self( " 4188 + "../../../../../../../../" 4189 + "rt:type, 'ospfv2')" { 4190 description "OSPFv2 LSA."; 4191 } 4192 } 4193 refine "version/ospfv3/ospfv3" { 4194 must "derived-from-or-self( " 4195 + "../../../../../../../../" 4196 + "rt:type, 'ospfv3')" { 4197 description "OSPFv3 LSA."; 4198 } 4199 } 4200 } 4201 } 4202 } 4203 } 4204 } 4205 } 4207 grouping local-rib { 4208 description "Local-rib - RIB for Routes computed by the local 4209 OSPF routing instance."; 4210 container local-rib { 4211 config false; 4212 description "Local-rib."; 4213 list route { 4214 key "prefix"; 4215 description "Routes"; 4216 leaf prefix { 4217 type inet:ip-prefix; 4218 description "Destination prefix."; 4219 } 4220 container next-hops { 4221 description "Next hops for the route."; 4222 list next-hop { 4223 key "next-hop"; 4224 description "List of next hops for the route"; 4225 leaf outgoing-interface { 4226 type if:interface-ref; 4227 description 4228 "Name of the outgoing interface."; 4229 } 4230 leaf next-hop { 4231 type inet:ip-address; 4232 description "Next hop address."; 4234 } 4235 } 4236 } 4237 leaf metric { 4238 type uint32; 4239 description "Metric for this route."; 4240 } 4241 leaf route-type { 4242 type route-type; 4243 description "Route type for this route."; 4244 } 4245 leaf route-tag { 4246 type uint32; 4247 description "Route tag for this route."; 4248 } 4249 } 4250 } 4251 } 4253 grouping ietf-spf-delay { 4254 leaf initial-delay { 4255 type uint32; 4256 units milliseconds; 4257 description 4258 "Delay used while in QUIET state (milliseconds)."; 4259 } 4260 leaf short-delay { 4261 type uint32; 4262 units milliseconds; 4263 description 4264 "Delay used while in SHORT_WAIT state (milliseconds)."; 4265 } 4266 leaf long-delay { 4267 type uint32; 4268 units milliseconds; 4269 description 4270 "Delay used while in LONG_WAIT state (milliseconds)."; 4271 } 4272 leaf hold-down { 4273 type uint32; 4274 units milliseconds; 4275 description 4276 "Timer used to consider an IGP stability period 4277 (milliseconds)."; 4278 } 4279 leaf time-to-learn { 4280 type uint32; 4281 units milliseconds; 4282 description 4283 "Duration used to learn all the IGP events 4284 related to a single component failure (milliseconds)."; 4285 } 4286 leaf current-state { 4287 type enumeration { 4288 enum "quiet" { 4289 description "QUIET state"; 4290 } 4291 enum "short-wait" { 4292 description "SHORT_WAIT state"; 4293 } 4294 enum "long-wait" { 4295 description "LONG_WAIT state"; 4296 } 4297 } 4298 config false; 4299 description 4300 "Current SPF back-off algorithm state."; 4301 } 4302 leaf remaining-time-to-learn { 4303 type rt-types:timer-value-milliseconds; 4304 config false; 4305 description 4306 "Remaining time until time-to-learn timer fires."; 4307 } 4308 leaf remaining-hold-down { 4309 type rt-types:timer-value-milliseconds; 4310 config false; 4311 description 4312 "Remaining time until hold-down timer fires."; 4313 } 4314 leaf last-event-received { 4315 type yang:timestamp; 4316 config false; 4317 description 4318 "Time of last SPF triggering event."; 4319 } 4320 leaf next-spf-time { 4321 type yang:timestamp; 4322 config false; 4323 description 4324 "Time when next SPF has been scheduled."; 4325 } 4326 leaf last-spf-time { 4327 type yang:timestamp; 4328 config false; 4329 description 4330 "Time of last SPF computation."; 4331 } 4332 description 4333 "Grouping for IETF SPF delay configuration and state"; 4334 } 4336 grouping node-tag-config { 4337 description 4338 "OSPF node tag config state."; 4339 container node-tags { 4340 if-feature node-tag; 4341 list node-tag { 4342 key tag; 4343 leaf tag { 4344 type uint32; 4345 description 4346 "Node tag value."; 4347 } 4348 description 4349 "List of tags."; 4350 } 4351 description 4352 "Container for node admin tags."; 4353 } 4354 } 4356 grouping instance-config { 4357 description 4358 "OSPF instance config state."; 4360 leaf enable { 4361 type boolean; 4362 default true; 4363 description 4364 "Enable/Disable the protocol."; 4365 } 4367 leaf explicit-router-id { 4368 if-feature explicit-router-id; 4369 type rt-types:router-id; 4370 description 4371 "Defined in RFC 2328. A 32-bit number 4372 that uniquely identifies the router."; 4373 } 4375 container preference { 4376 description 4377 "Route preference configuration In many 4378 implementations, preference is referred to as 4379 administrative distance."; 4380 reference 4381 "RFC 8349: A YANG Data Model for Routing Management 4382 (NMDA Version)"; 4383 choice scope { 4384 description 4385 "Options for expressing preference 4386 as single or multiple values."; 4387 case single-value { 4388 leaf all { 4389 type uint8; 4390 description 4391 "Preference for intra-area, inter-area, and 4392 external routes."; 4393 } 4394 } 4395 case multi-values { 4396 choice granularity { 4397 description 4398 "Options for expressing preference 4399 for intra-area and inter-area routes."; 4400 case detail { 4401 leaf intra-area { 4402 type uint8; 4403 description 4404 "Preference for intra-area routes."; 4405 } 4406 leaf inter-area { 4407 type uint8; 4408 description 4409 "Preference for inter-area routes."; 4410 } 4411 } 4412 case coarse { 4413 leaf internal { 4414 type uint8; 4415 description 4416 "Preference for both intra-area and 4417 inter-area routes."; 4418 } 4419 } 4420 } 4421 leaf external { 4422 type uint8; 4423 description 4424 "Preference for AS external routes."; 4425 } 4427 } 4428 } 4429 } 4431 container nsr { 4432 if-feature nsr; 4433 description 4434 "Non-Stop Routing (NSR) config state."; 4435 leaf enable { 4436 type boolean; 4437 description 4438 "Enable/Disable NSR."; 4439 } 4440 } 4442 container graceful-restart { 4443 if-feature graceful-restart; 4444 description 4445 "Graceful restart config state."; 4446 reference "RFC 3623: OSPF Graceful Restart 4447 RFC 5187: OSPFv3 Graceful Restart"; 4448 leaf enable { 4449 type boolean; 4450 description 4451 "Enable/Disable graceful restart as defined in RFC 3623 4452 for OSPFv2 and RFC 5187 for OSPFv3."; 4453 } 4454 leaf helper-enable { 4455 type boolean; 4456 description 4457 "Enable graceful restart helper support for restarting 4458 routers (RFC 3623 Section 3)."; 4459 } 4460 leaf restart-interval { 4461 type uint16 { 4462 range "1..1800"; 4463 } 4464 units seconds; 4465 default "120"; 4466 description 4467 "Interval to attempt graceful restart prior 4468 to failing (RFC 3623 Section B.1) (seconds)"; 4469 } 4470 leaf helper-strict-lsa-checking { 4471 type boolean; 4472 description 4473 "Terminate graceful restart when an LSA topology change 4474 is detected (RFC 3623 Section B.2)."; 4476 } 4477 } 4479 container auto-cost { 4480 if-feature auto-cost; 4481 description 4482 "Interface Auto-cost configuration state."; 4483 leaf enable { 4484 type boolean; 4485 description 4486 "Enable/Disable interface auto-cost."; 4487 } 4488 leaf reference-bandwidth { 4489 when "../enable = 'true'" { 4490 description "Only when auto cost is enabled"; 4491 } 4492 type uint32 { 4493 range "1..4294967"; 4494 } 4495 units Mbits; 4496 description 4497 "Configure reference bandwidth used to automatically 4498 determine interface cost (Mbits). The cost is the 4499 reference bandwidth divided by the interface speed 4500 with 1 being the minimum cost."; 4501 } 4502 } 4504 container spf-control { 4505 leaf paths { 4506 if-feature max-ecmp; 4507 type uint16 { 4508 range "1..32"; 4509 } 4510 description 4511 "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; 4512 } 4513 container ietf-spf-delay { 4514 if-feature ietf-spf-delay; 4515 uses ietf-spf-delay; 4516 description 4517 "IETF SPF delay algorithm configuration."; 4518 } 4519 description "SPF calculation control."; 4520 } 4522 container database-control { 4523 leaf max-lsa { 4524 if-feature max-lsa; 4525 type uint32 { 4526 range "1..4294967294"; 4527 } 4528 description 4529 "Maximum number of LSAs OSPF the router will accept."; 4530 } 4531 description "Database maintenance control."; 4532 } 4534 container stub-router { 4535 if-feature stub-router; 4536 description "Set maximum metric configuration"; 4538 choice trigger { 4539 description 4540 "Specific triggers which will enable stub 4541 router state."; 4542 container always { 4543 presence 4544 "Enables unconditional stub router support"; 4545 description 4546 "Unconditional stub router state (advertise 4547 transit links with MaxLinkMetric"; 4548 reference "RFC 6987: OSPF Stub Router 4549 Advertisement"; 4550 } 4551 } 4552 } 4554 container mpls { 4555 description 4556 "OSPF MPLS config state."; 4557 container te-rid { 4558 if-feature te-rid; 4559 description 4560 "Stable OSPF Router IP Address used for Traffic 4561 Engineering (TE)"; 4562 leaf ipv4-router-id { 4563 type inet:ipv4-address; 4564 description 4565 "Explicitly configure the TE IPv4 Router ID."; 4566 } 4567 leaf ipv6-router-id { 4568 type inet:ipv6-address; 4569 description 4570 "Explicitly configure the TE IPv6 Router ID."; 4571 } 4573 } 4574 container ldp { 4575 description 4576 "OSPF MPLS LDP config state."; 4577 leaf igp-sync { 4578 if-feature ldp-igp-sync; 4579 type boolean; 4580 description 4581 "Enable LDP IGP synchronization."; 4582 } 4583 } 4584 } 4585 uses instance-fast-reroute-config; 4586 uses node-tag-config; 4587 } 4589 grouping instance-state { 4590 description 4591 "OSPF instance operational state."; 4593 leaf router-id { 4594 type rt-types:router-id; 4595 config false; 4596 description 4597 "Defined in RFC 2328. A 32-bit number 4598 that uniquely identifies the router."; 4599 } 4601 uses local-rib; 4603 container statistics { 4604 config false; 4605 description "Per-instance statistics"; 4606 uses instance-stat; 4607 } 4609 container database { 4610 config false; 4611 description "AS-scope Link State Database."; 4612 list as-scope-lsa-type { 4613 key "lsa-type"; 4614 description "List OSPF AS-scope LSAs."; 4615 leaf lsa-type { 4616 type uint16; 4617 description "OSPF AS scope LSA type."; 4618 } 4619 container as-scope-lsas { 4620 description "All AS-scope of LSA of this LSA type."; 4621 list as-scope-lsa { 4622 key "lsa-id adv-router"; 4623 description "List of OSPF AS-scope LSAs"; 4624 uses lsa-key; 4625 uses lsa { 4626 refine "version/ospfv2/ospfv2" { 4627 must "derived-from-or-self( " 4628 + "../../../../../../" 4629 + "rt:type, 'ospfv2')" { 4630 description "OSPFv2 LSA."; 4631 } 4632 } 4633 refine "version/ospfv3/ospfv3" { 4634 must "derived-from-or-self( " 4635 + "../../../../../../" 4636 + "rt:type, 'ospfv3')" { 4637 description "OSPFv3 LSA."; 4638 } 4639 } 4640 } 4641 } 4642 } 4643 } 4644 } 4645 uses spf-log; 4646 uses lsa-log; 4647 } 4649 grouping ospf-config { 4650 description 4651 "OSPF top configuration state - currently empty."; 4652 } 4654 grouping ospf-state { 4655 description 4656 "OSPF top operational state - currently empty."; 4657 } 4659 grouping multi-topology-area-common-config { 4660 description 4661 "OSPF multi-topology area common configuration state."; 4662 leaf summary { 4663 when "derived-from(../../../area-type, 'stub-nssa-area')" { 4664 description 4665 "Summary advertisement into the stub/NSSA area."; 4666 } 4667 type boolean; 4668 description 4669 "Enable/Disable summary advertisement into the 4670 topology in the stub or NSSA area."; 4671 } 4672 leaf default-cost { 4673 when "derived-from(../../../area-type, 'stub-nssa-area')" { 4674 description 4675 "Cost for LSA default route advertised into the 4676 topology into the stub or NSSA area."; 4677 } 4678 type ospf-metric; 4679 description 4680 "Set the summary default route cost for a 4681 stub or NSSA area."; 4682 } 4683 } 4685 grouping multi-topology-area-config { 4686 description 4687 "OSPF multi-topology area configuration state."; 4689 uses multi-topology-area-common-config; 4690 uses address-family-area-config; 4691 } 4693 grouping multi-topology-config { 4694 description 4695 "OSPF multi-topology configuration state."; 4696 } 4698 grouping multi-topology-state { 4699 description 4700 "OSPF multi-topology operational state."; 4702 uses local-rib; 4703 } 4705 grouping multi-topology-interface-config { 4706 description 4707 "OSPF multi-topology configuration state."; 4709 leaf cost { 4710 type ospf-link-metric; 4711 description 4712 "Interface cost for this topology."; 4713 } 4714 } 4716 grouping multi-topology-interface-state { 4717 description 4718 "OSPF multi-topology operational state."; 4719 } 4721 grouping ospfv3-interface-config { 4722 description 4723 "OSPFv3 interface specific configuration state."; 4725 leaf instance-id { 4726 type uint8 { 4727 range "0 .. 31"; 4728 } 4729 description 4730 "OSPFv3 instance ID."; 4731 } 4732 } 4734 grouping ospfv3-interface-state { 4735 description 4736 "OSPFv3 interface specific operational state."; 4738 leaf interface-id { 4739 type uint16; 4740 config false; 4741 description 4742 "OSPFv3 interface ID."; 4743 } 4744 } 4746 grouping lsa-identifiers { 4747 description 4748 "The parameters that uniquely identify an LSA."; 4749 leaf area-id { 4750 type area-id-type; 4751 description 4752 "Area ID"; 4753 } 4754 leaf type { 4755 type uint16; 4756 description 4757 "LSA type."; 4758 } 4759 leaf lsa-id { 4760 type yang:dotted-quad; 4761 description "Link-State ID."; 4762 } 4763 leaf adv-router { 4764 type rt-types:router-id; 4765 description 4766 "LSA advertising router."; 4767 } 4768 leaf seq-num { 4769 type uint32; 4770 description 4771 "LSA sequence number."; 4772 } 4773 } 4775 grouping spf-log { 4776 description 4777 "Grouping for SPF log."; 4778 container spf-log { 4779 config false; 4780 description 4781 "This container lists the SPF log."; 4782 list event { 4783 key id; 4784 description 4785 "List of SPF log entries represented 4786 as a wrapping buffer."; 4787 leaf id { 4788 type uint32; 4789 description 4790 "Event identifier - Purely internal value."; 4791 } 4792 leaf spf-type { 4793 type enumeration { 4794 enum full { 4795 description 4796 "SPF computation was a Full SPF."; 4797 } 4798 enum intra { 4799 description 4800 "SPF computation was only for intra-area routes."; 4801 } 4802 enum inter { 4803 description 4804 "SPF computation was only for inter-area 4805 summary routes."; 4806 } 4807 enum external { 4808 description 4809 "SPF computation was only for AS external routes."; 4810 } 4811 } 4812 description 4813 "The SPF computation type for the SPF log entry."; 4814 } 4815 leaf schedule-timestamp { 4816 type yang:timestamp; 4817 description 4818 "This is the timestamp when the computation was 4819 scheduled."; 4820 } 4821 leaf start-timestamp { 4822 type yang:timestamp; 4823 description 4824 "This is the timestamp when the computation was 4825 started."; 4826 } 4827 leaf end-timestamp { 4828 type yang:timestamp; 4829 description 4830 "This the timestamp when the computation was 4831 completed."; 4832 } 4833 list trigger-lsa { 4834 description 4835 "The list of LSAs that triggered the computation."; 4836 uses lsa-identifiers; 4837 } 4838 } 4839 } 4840 } 4842 grouping lsa-log { 4843 description 4844 "Grouping for the LSA log."; 4845 container lsa-log { 4846 config false; 4847 description 4848 "This container lists the LSA log. 4849 Local LSA modifications are also included 4850 in the list."; 4851 list event { 4852 key id; 4853 description 4854 "List of LSA log entries represented 4855 as a wrapping buffer."; 4856 leaf id { 4857 type uint32; 4858 description 4859 "Event identifier - purely internal value."; 4860 } 4861 container lsa { 4862 description 4863 "This container describes the logged LSA."; 4864 uses lsa-identifiers; 4865 } 4866 leaf received-timestamp { 4867 type yang:timestamp; 4868 description 4869 "This is the timestamp when the LSA was received. 4870 In case of local LSA update, the timestamp refers 4871 to the LSA origination time."; 4872 } 4873 leaf reason { 4874 type identityref { 4875 base lsa-log-reason; 4876 } 4877 description 4878 "This reason for the LSA log entry."; 4879 } 4880 } 4881 } 4882 } 4884 augment "/rt:routing/rt:control-plane-protocols/" 4885 + "rt:control-plane-protocol" { 4886 when "derived-from(rt:type, 'ospf-protocol')" { 4887 description 4888 "This augmentation is only valid for a routing protocol 4889 instance of OSPF (type 'ospfv2' or 'ospfv3')."; 4890 } 4891 description "OSPF protocol ietf-routing module 4892 control-plane-protocol augmentation."; 4894 container ospf { 4895 description 4896 "OSPF protocol Instance"; 4898 uses ospf-config; 4899 uses ospf-state; 4901 leaf address-family { 4902 type iana-rt-types:address-family; 4903 description 4904 "Address-family of the instance."; 4905 } 4907 uses instance-config; 4908 uses instance-state; 4909 container areas { 4910 description "All areas."; 4911 list area { 4912 key "area-id"; 4913 description 4914 "List of OSPF areas"; 4915 leaf area-id { 4916 type area-id-type; 4917 description 4918 "Area ID"; 4919 } 4921 uses area-config; 4922 uses area-state; 4924 container virtual-links { 4925 when "derived-from-or-self(../area-type, 'normal-area') " 4926 + "and ../area-id = '0.0.0.0'" { 4927 description 4928 "Virtual links must be in backbone area."; 4929 } 4930 description "All virtual links."; 4931 list virtual-link { 4932 key "transit-area-id router-id"; 4933 description 4934 "OSPF virtual link"; 4935 leaf transit-area-id { 4936 type leafref { 4937 path "../../../../area/area-id"; 4938 } 4939 must "derived-from-or-self(" 4940 + "../../../../area[area-id=current()]/area-type, " 4941 + "'normal-area') and " 4942 + "../../../../area[area-id=current()]/area-id != " 4943 + "'0.0.0.0'" { 4944 error-message "Virtual link transit area must " 4945 + "be non-zero."; 4946 description 4947 "Virtual-link transit area must be 4948 non-zero area."; 4949 } 4950 description 4951 "Virtual link transit area ID."; 4952 } 4953 leaf router-id { 4954 type rt-types:router-id; 4955 description 4956 "Virtual Link remote endpoint Router ID."; 4958 } 4960 uses virtual-link-config; 4961 uses virtual-link-state; 4962 } 4963 } 4964 container sham-links { 4965 if-feature pe-ce-protocol; 4966 description "All sham links."; 4967 list sham-link { 4968 key "local-id remote-id"; 4969 description 4970 "OSPF sham link"; 4971 leaf local-id { 4972 type inet:ip-address; 4973 description 4974 "Address of the local sham Link endpoint."; 4975 } 4976 leaf remote-id { 4977 type inet:ip-address; 4978 description 4979 "Address of the remote sham Link endpoint."; 4980 } 4981 uses sham-link-config; 4982 uses sham-link-state; 4983 } 4984 } 4985 container interfaces { 4986 description "All interfaces."; 4987 list interface { 4988 key "name"; 4989 description 4990 "List of OSPF interfaces."; 4991 leaf name { 4992 type if:interface-ref; 4993 description 4994 "Interface name reference."; 4995 } 4996 uses interface-config; 4997 uses interface-state; 4998 } 4999 } 5000 } 5001 } 5002 } 5003 } 5005 augment "/rt:routing/rt:control-plane-protocols/" 5006 + "rt:control-plane-protocol/ospf" { 5007 when "derived-from(../rt:type, 'ospf-protocol')" { 5008 description 5009 "This augmentation is only valid for OSPF 5010 (type 'ospfv2' or 'ospfv3')."; 5011 } 5012 if-feature multi-topology; 5013 description 5014 "OSPF multi-topology instance configuration 5015 state augmentation."; 5016 container topologies { 5017 description "All topologies."; 5018 list topology { 5019 key "name"; 5020 description 5021 "OSPF topology - The OSPF topology address-family 5022 must coincide with the routing-instance 5023 address-family."; 5024 leaf name { 5025 type leafref { 5026 path "../../../../../../rt:ribs/rt:rib/rt:name"; 5027 } 5028 description "RIB name corresponding to the OSPF 5029 topology."; 5030 } 5032 uses multi-topology-config; 5033 uses multi-topology-state; 5034 } 5035 } 5036 } 5038 augment "/rt:routing/rt:control-plane-protocols/" 5039 + "rt:control-plane-protocol/ospf/" 5040 + "areas/area" { 5041 when "derived-from-or-self(../../../rt:type, " 5042 + "'ospfv2')" { 5043 description 5044 "This augmentation is only valid for OSPFv2."; 5045 } 5046 if-feature multi-topology; 5047 description 5048 "OSPF multi-topology area configuration state 5049 augmentation."; 5050 container topologies { 5051 description "All topologies for the area."; 5052 list topology { 5053 key "name"; 5054 description "OSPF area topology."; 5055 leaf name { 5056 type leafref { 5057 path "../../../../../../../../" 5058 + "rt:ribs/rt:rib/rt:name"; 5059 } 5060 description 5061 "Single topology enabled for this area."; 5062 } 5064 uses multi-topology-area-config; 5065 } 5066 } 5067 } 5069 augment "/rt:routing/rt:control-plane-protocols/" 5070 + "rt:control-plane-protocol/ospf/" 5071 + "areas/area/interfaces/interface" { 5072 when "derived-from-or-self(../../../../../rt:type, " 5073 + "'ospfv2')" { 5074 description 5075 "This augmentation is only valid for OSPFv2."; 5076 } 5077 if-feature multi-topology; 5078 description 5079 "OSPF multi-topology interface configuration state 5080 augmentation."; 5081 container topologies { 5082 description "All topologies for the interface."; 5083 list topology { 5084 key "name"; 5085 description "OSPF interface topology."; 5086 leaf name { 5087 type leafref { 5088 path "../../../../../../../../../../" 5089 + "rt:ribs/rt:rib/rt:name"; 5090 } 5091 description 5092 "Single topology enabled on this interface."; 5093 } 5095 uses multi-topology-interface-config; 5096 uses multi-topology-interface-state; 5097 } 5098 } 5099 } 5101 augment "/rt:routing/rt:control-plane-protocols/" 5102 + "rt:control-plane-protocol/ospf/" 5103 + "areas/area/interfaces/interface" { 5104 when "derived-from-or-self(../../../../../rt:type, " 5105 + "'ospfv3')" { 5106 description 5107 "This augmentation is only valid for OSPFv3."; 5108 } 5109 description 5110 "OSPFv3 interface specific configuration state 5111 augmentation."; 5112 uses ospfv3-interface-config; 5113 uses ospfv3-interface-state; 5114 } 5116 grouping route-content { 5117 description 5118 "This grouping defines OSPF-specific route attributes."; 5119 leaf metric { 5120 type uint32; 5121 description "OSPF route metric."; 5122 } 5123 leaf tag { 5124 type uint32; 5125 default "0"; 5126 description "OSPF route tag."; 5127 } 5128 leaf route-type { 5129 type route-type; 5130 description "OSPF route type"; 5131 } 5132 } 5134 augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { 5135 when "derived-from(rt:source-protocol, 'ospf-protocol')" { 5136 description 5137 "This augmentation is only valid for routes whose 5138 source protocol is OSPF."; 5139 } 5140 description 5141 "OSPF-specific route attributes."; 5142 uses route-content; 5143 } 5145 /* 5146 * RPCs 5147 */ 5149 rpc clear-neighbor { 5150 description 5151 "This RPC request clears a particular set of OSPF neighbors. 5152 If the operation fails for OSPF internal reason, then 5153 error-tag and error-app-tag should be set to a meaningful 5154 value."; 5155 input { 5156 leaf routing-protocol-name { 5157 type leafref { 5158 path "/rt:routing/rt:control-plane-protocols/" 5159 + "rt:control-plane-protocol/rt:name"; 5160 } 5161 mandatory "true"; 5162 description 5163 "OSPF protocol instance which information for neighbors 5164 are to be cleared. 5166 If the referenced OSPF instance doesn't exist, then 5167 this operation SHALL fail with error-tag 'data-missing' 5168 and error-app-tag 5169 'routing-protocol-instance-not-found'."; 5170 } 5172 leaf interface { 5173 type if:interface-ref; 5174 description 5175 "Name of the OSPF interface for which neighbors are to 5176 be cleared. 5178 If the referenced OSPF interface doesn't exist, then 5179 this operation SHALL fail with error-tag 5180 'data-missing' and error-app-tag 5181 'ospf-interface-not-found'."; 5182 } 5183 } 5184 } 5186 rpc clear-database { 5187 description 5188 "This RPC request clears a particular OSPF Link State 5189 Database. If the operation fails for OSPF internal reason, 5190 then error-tag and error-app-tag should be set to a 5191 meaningful value."; 5192 input { 5193 leaf routing-protocol-name { 5194 type leafref { 5195 path "/rt:routing/rt:control-plane-protocols/" 5196 + "rt:control-plane-protocol/rt:name"; 5197 } 5198 mandatory "true"; 5199 description 5200 "OSPF protocol instance whose Link State Database is to 5201 be cleared. 5203 If the referenced OSPF instance doesn't exist, then 5204 this operation SHALL fail with error-tag 'data-missing' 5205 and error-app-tag 5206 'routing-protocol-instance-not-found'."; 5207 } 5208 } 5209 } 5211 /* 5212 * Notifications 5213 */ 5215 grouping notification-instance-hdr { 5216 description 5217 "This grouping describes common instance specific 5218 data for OSPF notifications."; 5220 leaf routing-protocol-name { 5221 type leafref { 5222 path "/rt:routing/rt:control-plane-protocols/" 5223 + "rt:control-plane-protocol/rt:name"; 5224 } 5225 must "derived-from( " 5226 + "/rt:routing/rt:control-plane-protocols/" 5227 + "rt:control-plane-protocol[rt:name=current()]/" 5228 + "rt:type, 'ospf-protocol')"; 5229 description 5230 "OSPF routing protocol instance name."; 5231 } 5233 leaf address-family { 5234 type leafref { 5235 path "/rt:routing/" 5236 + "rt:control-plane-protocols/rt:control-plane-protocol" 5237 + "[rt:name=current()/../routing-protocol-name]/" 5238 + "ospf/address-family"; 5239 } 5240 description 5241 "Address family of the OSPF instance."; 5242 } 5243 } 5245 grouping notification-interface { 5246 description 5247 "This grouping provides interface information 5248 for the OSPF interface specific notification."; 5250 choice if-link-type-selection { 5251 description 5252 "Options for link type."; 5253 container interface { 5254 description "Normal interface."; 5255 leaf interface { 5256 type if:interface-ref; 5257 description "Interface."; 5258 } 5259 } 5260 container virtual-link { 5261 description "virtual-link."; 5262 leaf transit-area-id { 5263 type area-id-type; 5264 description "Area ID."; 5265 } 5266 leaf neighbor-router-id { 5267 type rt-types:router-id; 5268 description "Neighbor Router ID."; 5269 } 5270 } 5271 container sham-link { 5272 description "sham link."; 5273 leaf area-id { 5274 type area-id-type; 5275 description "Area ID."; 5276 } 5277 leaf local-ip-addr { 5278 type inet:ip-address; 5279 description "Sham link local address."; 5280 } 5281 leaf remote-ip-addr { 5282 type inet:ip-address; 5283 description "Sham link remote address."; 5284 } 5285 } 5286 } 5287 } 5289 grouping notification-neighbor { 5290 description 5291 "This grouping provides the neighbor information 5292 for neighbor specific notifications."; 5294 leaf neighbor-router-id { 5295 type rt-types:router-id; 5296 description "Neighbor Router ID."; 5297 } 5299 leaf neighbor-ip-addr { 5300 type yang:dotted-quad; 5301 description "Neighbor address."; 5302 } 5303 } 5305 notification if-state-change { 5306 uses notification-instance-hdr; 5307 uses notification-interface; 5309 leaf state { 5310 type if-state-type; 5311 description "Interface state."; 5312 } 5313 description 5314 "This notification is sent when an interface 5315 state change is detected."; 5316 } 5318 notification if-config-error { 5319 uses notification-instance-hdr; 5320 uses notification-interface; 5322 leaf packet-source { 5323 type yang:dotted-quad; 5324 description "Source address."; 5325 } 5327 leaf packet-type { 5328 type packet-type; 5329 description "OSPF packet type."; 5330 } 5332 leaf error { 5333 type enumeration { 5334 enum "bad-version" { 5335 description "Bad version."; 5336 } 5337 enum "area-mismatch" { 5338 description "Area mismatch."; 5339 } 5340 enum "unknown-nbma-nbr" { 5341 description "Unknown NBMA neighbor."; 5343 } 5344 enum "unknown-virtual-nbr" { 5345 description "Unknown virtual link neighbor."; 5346 } 5347 enum "auth-type-mismatch" { 5348 description "Auth type mismatch."; 5349 } 5350 enum "auth-failure" { 5351 description "Auth failure."; 5352 } 5353 enum "net-mask-mismatch" { 5354 description "Network mask mismatch."; 5355 } 5356 enum "hello-interval-mismatch" { 5357 description "Hello interval mismatch."; 5358 } 5359 enum "dead-interval-mismatch" { 5360 description "Dead interval mismatch."; 5361 } 5362 enum "option-mismatch" { 5363 description "Option mismatch."; 5364 } 5365 enum "mtu-mismatch" { 5366 description "MTU mismatch."; 5367 } 5368 enum "duplicate-router-id" { 5369 description "Duplicate Router ID."; 5370 } 5371 enum "no-error" { 5372 description "No error."; 5373 } 5374 } 5375 description "Error code."; 5376 } 5377 description 5378 "This notification is sent when an interface 5379 config error is detected."; 5380 } 5382 notification nbr-state-change { 5383 uses notification-instance-hdr; 5384 uses notification-interface; 5385 uses notification-neighbor; 5387 leaf state { 5388 type nbr-state-type; 5389 description "Neighbor state."; 5390 } 5391 description 5392 "This notification is sent when aa neighbor 5393 state change is detected."; 5394 } 5396 notification nbr-restart-helper-status-change { 5397 uses notification-instance-hdr; 5398 uses notification-interface; 5399 uses notification-neighbor; 5401 leaf status { 5402 type restart-helper-status-type; 5403 description "Restart helper status."; 5404 } 5406 leaf age { 5407 type rt-types:timer-value-seconds16; 5408 description 5409 "Remaining time in current OSPF graceful restart 5410 interval when the router is acting as a restart 5411 helper for the neighbor."; 5412 } 5414 leaf exit-reason { 5415 type restart-exit-reason-type; 5416 description 5417 "Restart helper exit reason."; 5418 } 5419 description 5420 "This notification is sent when a neighbor restart 5421 helper status change is detected."; 5422 } 5424 notification if-rx-bad-packet { 5425 uses notification-instance-hdr; 5426 uses notification-interface; 5428 leaf packet-source { 5429 type yang:dotted-quad; 5430 description "Source address."; 5431 } 5433 leaf packet-type { 5434 type packet-type; 5435 description "OSPF packet type."; 5436 } 5438 description 5439 "This notification is sent when an OSPF packet that 5440 cannot be parsed is received on an OSPF interface."; 5441 } 5443 notification lsdb-approaching-overflow { 5444 uses notification-instance-hdr; 5446 leaf ext-lsdb-limit { 5447 type uint32; 5448 description 5449 "The maximum number of non-default AS-external LSAs 5450 entries that can be stored in the Link State Database."; 5451 } 5453 description 5454 "This notification is sent when the number of LSAs 5455 in the router's Link State Database has exceeded 5456 ninety percent of the AS-external limit (ext-lsdb-limit)."; 5457 } 5459 notification lsdb-overflow { 5460 uses notification-instance-hdr; 5462 leaf ext-lsdb-limit { 5463 type uint32; 5464 description 5465 "The maximum number of non-default AS-external LSAs 5466 entries that can be stored in the Link State Database."; 5467 } 5469 description 5470 "This notification is sent when the number of LSAs 5471 in the router's Link State Database has exceeded the 5472 AS-external limit (ext-lsdb-limit)."; 5473 } 5475 notification nssa-translator-status-change { 5476 uses notification-instance-hdr; 5478 leaf area-id { 5479 type area-id-type; 5480 description "Area ID."; 5481 } 5483 leaf status { 5484 type nssa-translator-state-type; 5485 description 5486 "NSSA translator status."; 5488 } 5490 description 5491 "This notification is sent when there is a change 5492 in the router's role in translating OSPF NSSA LSAs 5493 to OSPF AS-External LSAs."; 5494 } 5496 notification restart-status-change { 5497 uses notification-instance-hdr; 5499 leaf status { 5500 type restart-status-type; 5501 description 5502 "Restart status."; 5503 } 5505 leaf restart-interval { 5506 type uint16 { 5507 range 1..1800; 5508 } 5509 units seconds; 5510 default "120"; 5511 description 5512 "Restart interval."; 5513 } 5515 leaf exit-reason { 5516 type restart-exit-reason-type; 5517 description 5518 "Restart exit reason."; 5519 } 5521 description 5522 "This notification is sent when the graceful restart 5523 state for the router has changed."; 5524 } 5525 } 5526 5528 4. Security Considerations 5530 The YANG modules specified in this document define a schema for data 5531 that is designed to be accessed via network management protocols such 5532 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 5533 is the secure transport layer, and the mandatory-to-implement secure 5534 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 5535 is HTTPS, and the mandatory-to-implement secure transport is TLS 5536 [RFC8446]. 5538 The NETCONF access control model [RFC8341] provides the means to 5539 restrict access for particular NETCONF or RESTCONF users to a pre- 5540 configured subset of all available NETCONF or RESTCONF protocol 5541 operations and content. 5543 There are a number of data nodes defined in ietf-ospf.yang module 5544 that are writable/creatable/deletable (i.e., config true, which is 5545 the default). These data nodes may be considered sensitive or 5546 vulnerable in some network environments. Write operations (e.g., 5547 edit-config) to these data nodes without proper protection can have a 5548 negative effect on network operations. For OSPF, the ability to 5549 modify OSPF configuration will allow the entire OSPF domain to be 5550 compromised including peering with unauthorized routers to misroute 5551 traffic or mount a massive Denial-of-Service (DoS) attack. 5553 Some of the readable data nodes in the ietf-ospf.yang module may be 5554 considered sensitive or vulnerable in some network environments. It 5555 is thus important to control read access (e.g., via get, get-config, 5556 or notification) to these data nodes. The exposure of the Link State 5557 Database (LSDB) will expose the detailed topology of the network. 5558 This may be undesirable since both due to the fact that exposure may 5559 facilitate other attacks. Additionally, network operators may 5560 consider their topologies to be sensitive confidential data. 5562 For OSPF authentication, configuration is supported via the 5563 specification of key-chains [RFC8177] or the direct specification of 5564 key and authentication algorithm. Hence, authentication 5565 configuration using the "auth-table-trailer" case in the 5566 "authentication" container inherits the security considerations of 5567 [RFC8177]. This includes the considerations with respect to the 5568 local storage and handling of authentication keys. 5570 Additionally, local specificationn of OSPF authentication keys and 5571 the associated authentication algorithm is supported for legacy 5572 implementations that do not support key-chains [RFC8177] for legacy 5573 implementations that do not support key-chains. It is RECOMMENDED 5574 that implementations migrate to key-chains due the seamless support 5575 of key and algorithm rollover, as well as, the encryption of key 5576 using the Advanced Encryption Standard (AES) Key Wrap Padding 5577 Algorithm [RFC5649]. 5579 Some of the RPC operations in this YANG module may be considered 5580 sensitive or vulnerable in some network environments. It is thus 5581 important to control access to these operations. The OSPF YANG 5582 module support the "clear-neighbor" and "clear-database" RPCs. If 5583 access to either of these is compromised, they can result in 5584 temporary network outages be employed to mount DoS attacks. 5586 5. IANA Considerations 5588 This document registers a URI in the IETF XML registry [RFC3688]. 5589 Following the format in [RFC3688], the following registration is 5590 requested to be made: 5592 URI: urn:ietf:params:xml:ns:yang:ietf-ospf 5593 Registrant Contact: The IESG. 5594 XML: N/A, the requested URI is an XML namespace. 5596 This document registers a YANG module in the YANG Module Names 5597 registry [RFC6020]. 5599 name: ietf-ospf 5600 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf 5601 prefix: ospf 5602 reference: RFC XXXX 5604 6. Acknowledgements 5606 The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, 5607 Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and 5608 Alan Davey for their thorough reviews and helpful comments. 5610 Thanks to Tom Petch for last call review and improvement of the 5611 document organization. 5613 Thanks to Alvaro Retana for AD comments. 5615 This document was produced using Marshall Rose's xml2rfc tool. 5617 Author affiliation with The MITRE Corporation is provided for 5618 identification purposes only, and is not intended to convey or imply 5619 MITRE's concurrence with, or support for, the positions, opinions or 5620 viewpoints expressed. MITRE has approved this document for Public 5621 Release, Distribution Unlimited, with Public Release Case Number 5622 18-3194. 5624 7. References 5626 7.1. Normative References 5628 [I-D.ietf-bfd-yang] 5629 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 5630 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 5631 Detection (BFD)", draft-ietf-bfd-yang-17 (work in 5632 progress), August 2018. 5634 [RFC1765] Moy, J., "OSPF Database Overflow", RFC 1765, 5635 DOI 10.17487/RFC1765, March 1995, 5636 . 5638 [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", 5639 RFC 1793, DOI 10.17487/RFC1793, April 1995, 5640 . 5642 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 5643 Requirement Levels", BCP 14, RFC 2119, 5644 DOI 10.17487/RFC2119, March 1997, 5645 . 5647 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 5648 DOI 10.17487/RFC2328, April 1998, 5649 . 5651 [RFC3101] Murphy, P., "The OSPF Not-So-Stubby Area (NSSA) Option", 5652 RFC 3101, DOI 10.17487/RFC3101, January 2003, 5653 . 5655 [RFC3623] Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF 5656 Restart", RFC 3623, DOI 10.17487/RFC3623, November 2003, 5657 . 5659 [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering 5660 (TE) Extensions to OSPF Version 2", RFC 3630, 5661 DOI 10.17487/RFC3630, September 2003, 5662 . 5664 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 5665 DOI 10.17487/RFC3688, January 2004, 5666 . 5668 [RFC4552] Gupta, M. and N. Melam, "Authentication/Confidentiality 5669 for OSPFv3", RFC 4552, DOI 10.17487/RFC4552, June 2006, 5670 . 5672 [RFC4576] Rosen, E., Psenak, P., and P. Pillay-Esnault, "Using a 5673 Link State Advertisement (LSA) Options Bit to Prevent 5674 Looping in BGP/MPLS IP Virtual Private Networks (VPNs)", 5675 RFC 4576, DOI 10.17487/RFC4576, June 2006, 5676 . 5678 [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the 5679 Provider/Customer Edge Protocol for BGP/MPLS IP Virtual 5680 Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, 5681 June 2006, . 5683 [RFC4915] Psenak, P., Mirtorabi, S., Roy, A., Nguyen, L., and P. 5684 Pillay-Esnault, "Multi-Topology (MT) Routing in OSPF", 5685 RFC 4915, DOI 10.17487/RFC4915, June 2007, 5686 . 5688 [RFC4973] Srisuresh, P. and P. Joseph, "OSPF-xTE: Experimental 5689 Extension to OSPF for Traffic Engineering", RFC 4973, 5690 DOI 10.17487/RFC4973, July 2007, 5691 . 5693 [RFC5082] Gill, V., Heasley, J., Meyer, D., Savola, P., Ed., and C. 5694 Pignataro, "The Generalized TTL Security Mechanism 5695 (GTSM)", RFC 5082, DOI 10.17487/RFC5082, October 2007, 5696 . 5698 [RFC5185] Mirtorabi, S., Psenak, P., Lindem, A., Ed., and A. Oswal, 5699 "OSPF Multi-Area Adjacency", RFC 5185, 5700 DOI 10.17487/RFC5185, May 2008, 5701 . 5703 [RFC5187] Pillay-Esnault, P. and A. Lindem, "OSPFv3 Graceful 5704 Restart", RFC 5187, DOI 10.17487/RFC5187, June 2008, 5705 . 5707 [RFC5250] Berger, L., Bryskin, I., Zinin, A., and R. Coltun, "The 5708 OSPF Opaque LSA Option", RFC 5250, DOI 10.17487/RFC5250, 5709 July 2008, . 5711 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for 5712 IP Fast Reroute: Loop-Free Alternates", RFC 5286, 5713 DOI 10.17487/RFC5286, September 2008, 5714 . 5716 [RFC5309] Shen, N., Ed. and A. Zinin, Ed., "Point-to-Point Operation 5717 over LAN in Link State Routing Protocols", RFC 5309, 5718 DOI 10.17487/RFC5309, October 2008, 5719 . 5721 [RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed., 5722 "Traffic Engineering Extensions to OSPF Version 3", 5723 RFC 5329, DOI 10.17487/RFC5329, September 2008, 5724 . 5726 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 5727 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 5728 . 5730 [RFC5613] Zinin, A., Roy, A., Nguyen, L., Friedman, B., and D. 5731 Yeung, "OSPF Link-Local Signaling", RFC 5613, 5732 DOI 10.17487/RFC5613, August 2009, 5733 . 5735 [RFC5642] Venkata, S., Harwani, S., Pignataro, C., and D. McPherson, 5736 "Dynamic Hostname Exchange Mechanism for OSPF", RFC 5642, 5737 DOI 10.17487/RFC5642, August 2009, 5738 . 5740 [RFC5709] Bhatia, M., Manral, V., Fanto, M., White, R., Barnes, M., 5741 Li, T., and R. Atkinson, "OSPFv2 HMAC-SHA Cryptographic 5742 Authentication", RFC 5709, DOI 10.17487/RFC5709, October 5743 2009, . 5745 [RFC5714] Shand, M. and S. Bryant, "IP Fast Reroute Framework", 5746 RFC 5714, DOI 10.17487/RFC5714, January 2010, 5747 . 5749 [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and 5750 R. Aggarwal, "Support of Address Families in OSPFv3", 5751 RFC 5838, DOI 10.17487/RFC5838, April 2010, 5752 . 5754 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 5755 the Network Configuration Protocol (NETCONF)", RFC 6020, 5756 DOI 10.17487/RFC6020, October 2010, 5757 . 5759 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 5760 and A. Bierman, Ed., "Network Configuration Protocol 5761 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 5762 . 5764 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 5765 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 5766 . 5768 [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and 5769 M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge 5770 (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, 5771 June 2012, . 5773 [RFC6845] Sheth, N., Wang, L., and J. Zhang, "OSPF Hybrid Broadcast 5774 and Point-to-Multipoint Interface Type", RFC 6845, 5775 DOI 10.17487/RFC6845, January 2013, 5776 . 5778 [RFC6860] Yang, Y., Retana, A., and A. Roy, "Hiding Transit-Only 5779 Networks in OSPF", RFC 6860, DOI 10.17487/RFC6860, January 5780 2013, . 5782 [RFC6987] Retana, A., Nguyen, L., Zinin, A., White, R., and D. 5783 McPherson, "OSPF Stub Router Advertisement", RFC 6987, 5784 DOI 10.17487/RFC6987, September 2013, 5785 . 5787 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 5788 RFC 6991, DOI 10.17487/RFC6991, July 2013, 5789 . 5791 [RFC7166] Bhatia, M., Manral, V., and A. Lindem, "Supporting 5792 Authentication Trailer for OSPFv3", RFC 7166, 5793 DOI 10.17487/RFC7166, March 2014, 5794 . 5796 [RFC7474] Bhatia, M., Hartman, S., Zhang, D., and A. Lindem, Ed., 5797 "Security Extension for OSPFv2 When Using Manual Key 5798 Management", RFC 7474, DOI 10.17487/RFC7474, April 2015, 5799 . 5801 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. 5802 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", 5803 RFC 7490, DOI 10.17487/RFC7490, April 2015, 5804 . 5806 [RFC7684] Psenak, P., Gredler, H., Shakir, R., Henderickx, W., 5807 Tantsura, J., and A. Lindem, "OSPFv2 Prefix/Link Attribute 5808 Advertisement", RFC 7684, DOI 10.17487/RFC7684, November 5809 2015, . 5811 [RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and 5812 S. Shaffer, "Extensions to OSPF for Advertising Optional 5813 Router Capabilities", RFC 7770, DOI 10.17487/RFC7770, 5814 February 2016, . 5816 [RFC7777] Hegde, S., Shakir, R., Smirnov, A., Li, Z., and B. 5817 Decraene, "Advertising Node Administrative Tags in OSPF", 5818 RFC 7777, DOI 10.17487/RFC7777, March 2016, 5819 . 5821 [RFC7884] Pignataro, C., Bhatia, M., Aldrin, S., and T. Ranganath, 5822 "OSPF Extensions to Advertise Seamless Bidirectional 5823 Forwarding Detection (S-BFD) Target Discriminators", 5824 RFC 7884, DOI 10.17487/RFC7884, July 2016, 5825 . 5827 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 5828 RFC 7950, DOI 10.17487/RFC7950, August 2016, 5829 . 5831 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 5832 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 5833 . 5835 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 5836 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 5837 May 2017, . 5839 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 5840 Zhang, "YANG Data Model for Key Chains", RFC 8177, 5841 DOI 10.17487/RFC8177, June 2017, 5842 . 5844 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 5845 "Common YANG Data Types for the Routing Area", RFC 8294, 5846 DOI 10.17487/RFC8294, December 2017, 5847 . 5849 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 5850 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 5851 . 5853 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 5854 Access Control Model", STD 91, RFC 8341, 5855 DOI 10.17487/RFC8341, March 2018, 5856 . 5858 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 5859 and R. Wilton, "Network Management Datastore Architecture 5860 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 5861 . 5863 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 5864 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 5865 . 5867 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 5868 Routing Management (NMDA Version)", RFC 8349, 5869 DOI 10.17487/RFC8349, March 2018, 5870 . 5872 [RFC8405] Decraene, B., Litkowski, S., Gredler, H., Lindem, A., 5873 Francois, P., and C. Bowers, "Shortest Path First (SPF) 5874 Back-Off Delay Algorithm for Link-State IGPs", RFC 8405, 5875 DOI 10.17487/RFC8405, June 2018, 5876 . 5878 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 5879 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 5880 . 5882 [RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, 5883 "Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, 5884 DOI 10.17487/RFC8476, December 2018, 5885 . 5887 7.2. Informative References 5889 [RFC0905] "ISO Transport Protocol specification ISO DP 8073", 5890 RFC 905, DOI 10.17487/RFC0905, April 1984, 5891 . 5893 [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., 5894 Coltun, R., and F. Baker, "OSPF Version 2 Management 5895 Information Base", RFC 4750, DOI 10.17487/RFC4750, 5896 December 2006, . 5898 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP 5899 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March 5900 2009, . 5902 [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information 5903 Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August 5904 2009, . 5906 [RFC5649] Housley, R. and M. Dworkin, "Advanced Encryption Standard 5907 (AES) Key Wrap with Padding Algorithm", RFC 5649, 5908 DOI 10.17487/RFC5649, September 2009, 5909 . 5911 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5912 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 5913 . 5915 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5916 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 5917 DOI 10.17487/RFC5881, June 2010, 5918 . 5920 Appendix A. Contributors' Addresses 5922 Dean Bogdanovic 5923 Volta Networks, Inc. 5925 EMail: dean@voltanet.io 5927 Kiran Koushik Agrahara Sreenivasa 5928 Verizon 5929 500 W Dove Rd 5930 Southlake, TX 76092 5931 USA 5933 EMail: kk@employees.org 5935 Authors' Addresses 5937 Derek Yeung 5938 Arrcus 5940 EMail: derek@arrcus.com 5942 Yingzhen Qu 5943 Huawei 5944 2330 Central Expressway 5945 Santa Clara, CA 95050 5946 USA 5948 EMail: yingzhen.qu@huawei.com 5950 Jeffrey Zhang 5951 Juniper Networks 5952 10 Technology Park Drive 5953 Westford, MA 01886 5954 USA 5956 EMail: zzhang@juniper.net 5958 Ing-Wher Chen 5959 The MITRE Corporation 5961 EMail: ingwherchen@mitre.org 5962 Acee Lindem 5963 Cisco Systems 5964 301 Midenhall Way 5965 Cary, NC 27513 5967 EMail: acee@cisco.com