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