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