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