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