idnits 2.17.1 draft-ietf-ospf-yang-21.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 (January 24, 2019) is 1917 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: July 28, 2019 Huawei 6 J. Zhang 7 Juniper Networks 8 I. Chen 9 The MITRE Corporation 10 A. Lindem 11 Cisco Systems 12 January 24, 2019 14 YANG Data Model for OSPF Protocol 15 draft-ietf-ospf-yang-21 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 July 28, 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 . . . . . . . . . . . . . . . . . . . . . 117 74 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 117 75 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 117 76 7.1. Normative References . . . . . . . . . . . . . . . . . . 117 77 7.2. Informative References . . . . . . . . . . . . . . . . . 123 78 Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 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. If 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 OSPF(v3) as 108 a PE-CE Protocol [RFC4577], [RFC6565]. These non-core features are 109 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 engine is tied to the routing domain, how 130 multiple protocol engines 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 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. 154 module: ietf-ospf 155 augment /rt:routing/rt:control-plane-protocols/ 156 rt:control-plane-protocol: 157 +--rw ospf 158 . 159 . 160 +--rw operation-mode? identityref 161 +--rw af? identityref 162 . 163 . 164 +--rw areas 165 | +--rw area* [area-id] 166 | +--rw area-id area-id-type 167 | . 168 | . 169 | +--rw virtual-links 170 | | +--rw virtual-link* [transit-area-id router-id] 171 | | . 172 | | . 173 | +--rw sham-links {pe-ce-protocol}? 174 | | +--rw sham-link* [local-id remote-id] 175 | | . 176 | | . 177 | +--rw interfaces 178 | +--rw interface* [name] 179 | . 180 | . 181 +--rw topologies {multi-topology}? 182 +--rw topology* [name] 183 . 184 . 186 The ospf module is intended to match to the vendor specific OSPF 187 configuration construct that is identified by the local identifier 188 'name'. The field 'version' allows support for OSPFv2 and OSPFv3. 190 The ospf container includes one OSPF protocol engine instance. The 191 instance includes OSPF router level configuration and operational 192 state. 194 The area and area/interface containers respectively define the OSPF 195 configuration and operational state for OSPF areas and interfaces. 197 The topologies container defines the OSPF configuration and 198 operational state for OSPF topologies when the multi-topology feature 199 is supported. 201 2.3. OSPFv2 and OSPFv3 203 The data model defined herein supports both OSPFv2 and OSPFv3. 205 The field 'version' is used to indicate the OSPF version and is 206 mandatory. Based on the configured version, the data model varies to 207 accommodate the differences between OSPFv2 and OSPFv3. 209 2.4. Optional Features 211 Optional features are beyond the basic OSPF configuration and it is 212 the responsibility of each vendor to decide whether to support a 213 given feature on a particular device. 215 This model defines the following optional features: 217 1. multi-topology: Support Multi-Topology Routing (MTR) [RFC4915]. 219 2. multi-area-adj: Support OSPF multi-area adjacency [RFC5185]. 221 3. explicit-router-id: Support explicit per-instance Router-ID 222 specification. 224 4. demand-circuit: Support OSPF demand circuits [RFC1793]. 226 5. mtu-ignore: Support disabling OSPF Database Description packet 227 MTU mismatch checking. 229 6. lls: Support OSPF link-local signaling (LLS) [RFC5613]. 231 7. prefix-suppression: Support OSPF prefix advertisement 232 suppression [RFC6860]. 234 8. ttl-security: Support OSPF Time to Live (TTL) security check 235 suppression [RFC5082]. 237 9. nsr: Support OSPF Non-Stop Routing (NSR). 239 10. graceful-restart: Support Graceful OSPF Restart [RFC3623], 240 [RFC5187]. 242 11. admin-control: Support Administrative control of the protocol 243 state. 245 12. auto-cost: Support OSPF interface cost calculation according to 246 reference bandwidth [RFC2328]. 248 13. max-ecmp: Support configuration of the maximum number of Equal- 249 Cost Multi-Path (ECMP) paths. 251 14. max-lsa: Support configuration of the maximum number of LSAs the 252 OSPF instance will accept [RFC1765]. 254 15. te-rid: Support configuration of the Traffic Engineering (TE) 255 Router-ID, i.e., the Router Address described in Section 2.4.1 256 of [RFC3630] or the Router IPv6 Address TLV described in 257 Section 3 of [RFC5329]. 259 16. ldp-igp-sync: Support LDP IGP synchronization [RFC5443]. 261 17. ospfv2-authentication-trailer: Support OSPFv2 Authentication 262 trailer as specified in [RFC5709] or [RFC7166]. 264 18. ospfv3-authentication-ipsec: Support IPsec for OSPFv3 265 authentication [RFC4552]. 267 19. ospfv3-authentication-trailer: Support OSPFv3 Authentication 268 trailer as specified in [RFC7474]. 270 20. fast-reroute: Support IP Fast Reroute (IP-FRR) [RFC5714]. 272 21. node-flag: Support node-flag for OSPF prefixes. [RFC7684]. 274 22. node-tag: Support node admin tag for OSPF instances [RFC7777]. 276 23. lfa: Support Loop-Free Alternates (LFAs) [RFC5286]. 278 24. remote-lfa: Support Remote Loop-Free Alternates (R-LFA) 279 [RFC7490]. 281 25. stub-router: Support RFC 6987 OSPF Stub Router advertisement 282 [RFC6987]. 284 26. pe-ce-protocol: Support OSPF as a PE-CE protocol [RFC4577], 285 [RFC6565]. 287 27. ietf-spf-delay: Support IETF SPF delay algorithm [RFC8405]. 289 28. bfd: Support BFD detection of OSPF neighbor reachability 290 [RFC5880], [RFC5881], and [I-D.ietf-bfd-yang]. 292 29. hybrid-interface: Support OSPF Hybrid Broadcast and Point-to- 293 Point Interfaces [RFC6845]. 295 30. two-part-metric: Support OSPF Two-Part Metric [RFC8042]. 297 It is expected that vendors will support additional features through 298 vendor-specific augmentations. 300 2.5. OSPF Router Configuration/Operational State 302 The ospf container is the top-level container in this data model. It 303 represents an OSPF protocol engine instance and contains the router 304 level configuration and operational state. The operational state 305 includes the instance statistics, IETF SPF delay statistics, AS- 306 Scoped Link State Database, local RIB, SPF Log, and the LSA log. 308 module: ietf-ospf 309 augment /rt:routing/rt:control-plane-protocols/ 310 rt:control-plane-protocol: 311 +--rw ospf 312 . 313 . 314 +--rw af iana-rt-types:address-family 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 enable? boolean {admin-control}? 337 +--rw auto-cost {auto-cost}? 338 | +--rw enable? boolean 339 | +--rw reference-bandwidth? uint32 340 +--rw spf-control 341 | +--rw paths? uint16 {max-ecmp}? 342 | +--rw ietf-spf-delay {ietf-spf-delay}? 343 | +--rw initial-delay? uint16 344 | +--rw short-delay? uint16 345 | +--rw long-delay? uint16 346 | +--rw hold-down? uint16 347 | +--rw time-to-learn? uint16 348 | +--ro current-state? enumeration 349 | +--ro remaining-time-to-learn? uint16 350 | +--ro remaining-hold-down? uint16 351 | +--ro last-event-received? yang:timestamp 352 | +--ro next-spf-time? yang:timestamp 353 | +--ro last-spf-time? yang:timestamp 354 +--rw database-control 355 | +--rw max-lsa? uint32 {max-lsa}? 356 +--rw stub-router {stub-router}? 357 | +--rw (trigger)? 358 | +--:(always) 359 | +--rw always! 360 +--rw mpls 361 | +--rw te-rid {te-rid}? 362 | | +--rw ipv4-router-id? inet:ipv4-address 363 | | +--rw ipv6-router-id? inet:ipv6-address 364 | +--rw ldp 365 | +--rw igp-sync? boolean {ldp-igp-sync}? 366 +--rw fast-reroute {fast-reroute}? 367 | +--rw lfa {lfa}? 368 +--ro protected-routes 369 | +--ro af-stats* [af prefix alternate] 370 | +--ro af iana-rt-types:address-family 371 | +--ro prefix string 372 | +--ro alternate string 373 | +--ro alternate-type? enumeration 374 | +--ro best? boolean 375 | +--ro non-best-reason? string 376 | +--ro protection-available? bits 377 | +--ro alternate-metric1? uint32 378 | +--ro alternate-metric2? uint32 379 | +--ro alternate-metric3? uint32 380 +--ro unprotected-routes 381 | +--ro af-stats* [af prefix] 382 | +--ro af iana-rt-types:address-family 383 | +--ro prefix string 384 +--ro protection-statistics* [frr-protection-method] 385 | +--ro frr-protection-method string 386 | +--ro af-stats* [af] 387 | +--ro af iana-rt-types:address-family 388 | +--ro total-routes? uint32 389 | +--ro unprotected-routes? uint32 390 | +--ro protected-routes? uint32 391 | +--ro linkprotected-routes? uint32 392 | +--ro nodeprotected-routes? uint32 393 +--rw node-tags {node-tag}? 394 | +--rw node-tag* [tag] 395 | +--rw tag uint32 396 +--ro router-id? 397 +--ro local-rib 398 | +--ro route* [prefix] 399 | +--ro prefix inet:ip-prefix 400 | +--ro next-hops 401 | | +--ro next-hop* [next-hop] 402 | | +--ro outgoing-interface? if:interface-ref 403 | | +--ro next-hop inet:ip-address 404 | +--ro metric? uint32 405 | +--ro route-type? route-type 406 | +--ro route-tag? uint32 407 +--ro statistics 408 | +--ro originate-new-lsa-count? yang:counter32 409 | +--ro rx-new-lsas-count? yang:counter32 410 | +--ro as-scope-lsa-count? yang:gauge32 411 | +--ro as-scope-lsa-chksum-sum? uint32 412 | +--ro database 413 | +--ro as-scope-lsa-type* 414 | +--ro lsa-type? uint16 415 | +--ro lsa-count? yang:gauge32 416 | +--ro lsa-cksum-sum? int32 417 +--ro database 418 | +--ro as-scope-lsa-type* [lsa-type] 419 | +--ro as-scope-lsas 420 | +--ro as-scope-lsa* [lsa-id adv-router] 421 | +--ro lsa-id union 422 | +--ro adv-router inet:ipv4-address 423 | +--ro decoded-completed? boolean 424 | +--ro raw-data? yang:hex-string 425 | +--ro (version)? 426 | +--:(ospfv2) 427 | | +--ro ospfv2 428 . . 429 . . 430 | +--:(ospfv3) 431 | +--ro ospfv3 432 . 434 . 435 +--ro spf-log 436 | +--ro event* [id] 437 | +--ro id uint32 438 | +--ro spf-type? enumeration 439 | +--ro schedule-timestamp? yang:timestamp 440 | +--ro start-timestamp? yang:timestamp 441 +--ro end-timestamp? yang:timestamp 442 | +--ro trigger-lsa* 443 | +--ro area-id? area-id-type 444 | +--ro link-id? union 445 | +--ro type? uint16 446 | +--ro lsa-id? yang:dotted-quad 447 | +--ro adv-router? yang:dotted-quad 448 | +--ro seq-num? uint32 449 +--ro lsa-log 450 | +--ro event* [id] 451 | +--ro id uint32 452 | +--ro lsa 453 | | +--ro area-id? area-id-type 454 | | +--ro link-id? union 455 | | +--ro type? uint16 456 | | +--ro lsa-id? yang:dotted-quad 457 | | +--ro adv-router? yang:dotted-quad 458 | | +--ro seq-num? uint32 459 | +--ro received-timestamp? yang:timestamp 460 | +--ro reason? identityref 461 . 462 . 464 2.6. OSPF Area Configuration/Operational State 466 The area container contains OSPF area configuration and the list of 467 interface containers representing all the OSPF interfaces in the 468 area. The area operational state includes the area statistics and 469 the Area Link State Database (LSDB). 471 module: ietf-ospf 472 augment /rt:routing/rt:control-plane-protocols/ 473 rt:control-plane-protocol: 474 +--rw ospf 475 . 476 . 477 +--rw areas 478 | +--rw area* [area-id] 479 | +--rw area-id area-id-type 480 | +--rw area-type? identityref 481 | +--rw summary? boolean 482 | +--rw default-cost? uint32 483 | +--rw ranges 484 | | +--rw range* [prefix] 485 | | +--rw prefix inet:ip-prefix 486 | | +--rw advertise? boolean 487 | | +--rw cost? uint24 488 | +--ro statistics 489 | | +--ro spf-runs-count? yang:counter32 490 | | +--ro abr-count? yang:gauge32 491 | | +--ro asbr-count? yang:gauge32 492 | | +--ro ar-nssa-translator-event-count? 493 | | yang:counter32 494 | | +--ro area-scope-lsa-count? yang:gauge32 495 | | +--ro area-scope-lsa-cksum-sum? int32 496 | | +--ro database 497 | | +--ro area-scope-lsa-type* 498 | | +--ro lsa-type? uint16 499 | | +--ro lsa-count? yang:gauge32 500 | | +--ro lsa-cksum-sum? int32 501 | +--ro database 502 | | +--ro area-scope-lsa-type* [lsa-type] 503 | | +--ro lsa-type uint16 504 | | +--ro area-scope-lsas 505 | | +--ro area-scope-lsa* [lsa-id adv-router] 506 | | +--ro lsa-id union 507 . . . 508 . . . 509 | | +--ro (version)? 510 | | +--:(ospfv2) 511 | | | +--ro ospfv2 512 | | | +--ro header 513 . . . . 514 . . . . 515 | | | +--ro body 516 | | | +--ro router 517 . . . . 518 . . . . 519 | | | +--ro network 520 . . . . 521 . . . . 522 | | | +--ro summary 523 . . . . 524 . . . . 525 | | | +--ro external 526 . . . . 527 . . . . 528 | | | +--ro opaque 529 . . . . 531 . . . . 532 | | +--:(ospfv3) 533 | | +--ro ospfv3 534 | | +--ro header 535 . . . 536 . . . 537 | | +--ro body 538 | | +--ro router 539 . . . 540 . . . 541 | | +--ro network 542 . . . 543 . . . 544 | | +--ro inter-area-prefix 545 . . . 546 . . . 547 | | +--ro inter-area-router 548 . . . 549 . . . 550 | | +--ro as-external 551 . . . 552 . . . 553 | | +--ro nssa 554 . . . 555 . . . 556 | | +--ro link 557 . . . 558 . . . 559 | | +--ro intra-area-prefix 560 . . . 561 . . . 562 | | +--ro router-information 563 . . . 564 . . . 565 | +--rw virtual-links 566 | | +--rw virtual-link* [transit-area-id router-id] 567 | | +--rw transit-area-id -> ../../../../ 568 | | area/area-id 569 | | +--rw router-id rt-types:router-id 570 | | +--rw hello-interval? uint16 571 | | +--rw dead-interval? uint32 572 | | +--rw retransmit-interval? uint16 573 | | +--rw transmit-delay? uint16 574 | | +--rw lls? boolean {lls}? 575 | | +--rw ttl-security {ttl-security}? 576 | | | +--rw enable? boolean 577 | | | +--rw hops? uint8 578 | | +--rw enable? boolean 579 | | | {admin-control}? 580 | | +--rw authentication 581 | | | +--rw (auth-type-selection)? 582 | | | +--:(ospfv2-auth) 583 | | | | +--rw ospfv2-auth-trailer-rfc? 584 | | | | | ospfv2-auth-trailer-rfc-version 585 | | | | | {ospfv2-authentication-trailer}? 586 | | | | +--rw (ospfv2-auth-specification)? 587 | | | | +--:(auth-key-chain) {key-chain}? 588 | | | | | +--rw ospfv2-key-chain? 589 | | | | | key-chain:key-chain-ref 590 | | | | +--:(auth-key-explicit) 591 | | | | +--rw ospfv2-key-id? uint32 592 | | | | +--rw ospfv2-key? string 593 | | | | +--rw ospfv2-crypto-algorithm? 594 | | | | identityref 595 | | | +--:(ospfv3-auth-ipsec) 596 | | | | {ospfv3-authentication-ipsec}? 597 | | | | +--rw sa? string 598 | | | +--:(ospfv3-auth-trailer) 599 | | | | {ospfv3-authentication-trailer}? 600 | | | +--rw (ospfv3-auth-specification)? 601 | | | +--:(auth-key-chain) {key-chain}? 602 | | | | +--rw ospfv3-key-chain? 603 | | | | key-chain:key-chain-ref 604 | | | +--:(auth-key-explicit) 605 | | | +--rw ospfv3-sa-id? uint16 606 | | | +--rw ospfv3-key? string 607 | | | +--rw ospfv3-crypto-algorithm? 608 | | | identityref 609 | | +--ro cost? uint16 610 | | +--ro state? if-state-type 611 | | +--ro hello-timer? uint32 612 | | +--ro wait-timer? uint32 613 | | +--ro dr-router-id? rt-types:router-id 614 | | +--ro dr-ip-addr? inet:ip-address 615 | | +--ro bdr-router-id? rt-types:router-id 616 | | +--ro bdr-ip-addr? inet:ip-address 617 | | +--ro statistics 618 | | | +--ro if-event-count? yang:counter32 619 | | | +--ro link-scope-lsa-count? yang:gauge32 620 | | | +--ro link-scope-lsa-cksum-sum? 621 | | | uint32 622 | | | +--ro database 623 | | | +--ro link-scope-lsa-type* 624 | | | +--ro lsa-type? uint16 625 | | | +--ro lsa-count? yang:gauge32 626 | | | +--ro lsa-cksum-sum? int32 627 | | +--ro neighbors 628 | | | +--ro neighbor* [neighbor-router-id] 629 | | | +--ro neighbor-router-id 630 | | | rt-types:router-id 631 | | | +--ro address? inet:ip-address 632 | | | +--ro dr-router-id? rt-types:router-id 633 | | | +--ro dr-ip-addr? inet:ip-address 634 | | | +--ro bdr-router-id? rt-types:router-id 635 | | | +--ro bdr-ip-addr? inet:ip-address 636 | | | +--ro state? nbr-state-type 637 | | | +--ro dead-timer? uint32 638 | | | +--ro statistics 639 | | | +--ro nbr-event-count? 640 | | | yang:counter32 641 | | | +--ro nbr-retrans-qlen? 642 | | | yang:gauge32 643 | | +--ro database 644 | | +--ro link-scope-lsa-type* [lsa-type] 645 | | +--ro lsa-type uint16 646 | | +--ro link-scope-lsas 647 . . 648 . . 649 | +--rw sham-links {pe-ce-protocol}? 650 | | +--rw sham-link* [local-id remote-id] 651 | | +--rw local-id inet:ip-address 652 | | +--rw remote-id inet:ip-address 653 | | +--rw hello-interval? uint16 654 | | +--rw dead-interval? uint32 655 | | +--rw retransmit-interval? uint16 656 | | +--rw transmit-delay? uint16 657 | | +--rw lls? boolean {lls}? 658 | | +--rw ttl-security {ttl-security}? 659 | | | +--rw enable? boolean 660 | | | +--rw hops? uint8 661 | | +--rw enable? boolean 662 | | | {admin-control}? 663 | | +--rw authentication 664 | | | +--rw (auth-type-selection)? 665 | | | +--:(ospfv2-auth) 666 | | | | +--rw ospfv2-auth-trailer-rfc? 667 | | | | | ospfv2-auth-trailer-rfc-version 668 | | | | | {ospfv2-authentication-trailer}? 669 | | | | +--rw (ospfv2-auth-specification)? 670 | | | | +--:(auth-key-chain) {key-chain}? 671 | | | | | +--rw ospfv2-key-chain? 672 | | | | | key-chain:key-chain-ref 673 | | | | +--:(auth-key-explicit) 674 | | | | +--rw ospfv2-key-id? uint32 675 | | | | +--rw ospfv2-key? string 676 | | | | +--rw ospfv2-crypto-algorithm? 677 | | | | identityref 678 | | | +--:(ospfv3-auth-ipsec) 679 | | | | {ospfv3-authentication-ipsec}? 680 | | | | +--rw sa? string 681 | | | +--:(ospfv3-auth-trailer) 682 | | | | {ospfv3-authentication-trailer}? 683 | | | +--rw (ospfv3-auth-specification)? 684 | | | +--:(auth-key-chain) {key-chain}? 685 | | | | +--rw ospfv3-key-chain? 686 | | | | key-chain:key-chain-ref 687 | | | +--:(auth-key-explicit) 688 | | | +--rw ospfv3-sa-id? uint16 689 | | | +--rw ospfv3-key? string 690 | | | +--rw ospfv3-crypto-algorithm? 691 | | | identityref 692 | | +--rw cost? uint16 693 | | +--rw mtu-ignore? boolean 694 | | {mtu-ignore}? 695 | | +--rw prefix-suppression? boolean 696 | | {prefix-suppression}? 697 | | +--rw two-part-metric? boolean 698 | | {two-part-metric}? 699 | | +--ro state? if-state-type 700 | | +--ro hello-timer? uint32 701 | | +--ro wait-timer? uint32 702 | | +--ro dr-router-id? rt-types:router-id 703 | | +--ro dr-ip-addr? inet:ip-address 704 | | +--ro bdr-router-id? rt-types:router-id 705 | | +--ro bdr-ip-addr? inet:ip-address 706 | | +--ro statistics 707 | | | +--ro if-event-count? yang:counter32 708 | | | +--ro link-scope-lsa-count? yang:gauge32 709 | | | +--ro link-scope-lsa-cksum-sum? 710 | | | uint32 711 | | | +--ro database 712 | | | +--ro link-scope-lsa-type* 713 | | | +--ro lsa-type? uint16 714 | | | +--ro lsa-count? yang:gauge32 715 | | | +--ro lsa-cksum-sum? int32 716 | | +--ro neighbors 717 | | | +--ro neighbor* [neighbor-router-id] 718 | | | +--ro neighbor-router-id 719 | | | rt-types:router-id 720 | | | +--ro address? inet:ip-address 721 | | | +--ro dr-router-id? rt-types:router-id 722 | | | +--ro dr-ip-addr? inet:ip-address 723 | | | +--ro bdr-router-id? rt-types:router-id 724 | | | +--ro bdr-ip-addr? inet:ip-address 725 | | | +--ro state? nbr-state-type 726 | | | +--ro cost? uint32 727 | | | +--ro dead-timer? uint32 728 | | | +--ro statistics 729 | | | +--ro nbr-event-count? 730 | | | yang:counter32 731 | | | +--ro nbr-retrans-qlen? 732 | | | yang:gauge32 733 | | +--ro database 734 | | +--ro link-scope-lsa-type* [lsa-type] 735 | | +--ro lsa-type uint16 736 | | +--ro link-scope-lsas 737 . . 738 . . 740 2.7. OSPF Interface Configuration/Operational State 742 The interface container contains OSPF interface configuration and 743 operational state. The interface operational state includes the 744 statistics, list of neighbors, and Link-Local Link State Database 745 (LSDB). 747 module: ietf-ospf 748 augment /rt:routing/rt:control-plane-protocols/ 749 rt:control-plane-protocol: 750 +--rw ospf 751 . 752 . 753 +--rw areas 754 | +--rw area* [area-id] 755 | . 756 | . 757 | +--rw interfaces 758 | +--rw interface* [name] 759 | +--rw name if:interface-ref 760 | +--rw interface-type? enumeration 761 | +--rw passive? boolean 762 | +--rw demand-circuit? boolean 763 | {demand-circuit}? 764 | +--rw priority? uint8 765 | +--rw multi-areas {multi-area-adj}? 766 | | +--rw multi-area* [multi-area-id] 767 | | +--rw multi-area-id area-id-type 768 | | +--rw cost? uint16 769 | +--rw static-neighbors 770 | | +--rw neighbor* [identifier] 771 | | +--rw identifier inet:ip-address 772 | | +--rw cost? uint16 773 | | +--rw poll-interval? uint16 774 | | +--rw priority? uint8 775 | +--rw node-flag? boolean 776 | {node-flag}? 777 | +--rw bfd {bfd}? 778 | | +--rw enable? boolean 779 | +--rw fast-reroute {fast-reroute}? 780 | | +--rw lfa {lfa}? 781 | | +--rw candidate-enable? boolean 782 | | +--rw enable? boolean 783 | | +--rw remote-lfa {remote-lfa}? 784 | | +--rw enable? boolean 785 | +--rw hello-interval? uint16 786 | +--rw dead-interval? uint32 787 | +--rw retransmit-interval? uint16 788 | +--rw transmit-delay? uint16 789 | +--rw lls? boolean {lls}? 790 | +--rw ttl-security {ttl-security}? 791 | | +--rw enable? boolean 792 | | +--rw hops? uint8 793 | +--rw enable? boolean 794 | {admin-control}? 795 | +--rw authentication 796 | | +--rw (auth-type-selection)? 797 | | +--:(ospfv2-auth) 798 | | | +--rw ospfv2-auth-trailer-rfc? 799 | | | | ospfv2-auth-trailer-rfc-version 800 | | | | {ospfv2-authentication-trailer}? 801 | | | +--rw (ospfv2-auth-specification)? 802 | | | +--:(auth-key-chain) {key-chain}? 803 | | | | +--rw ospfv2-key-chain? 804 | | | | key-chain:key-chain-ref 805 | | | +--:(auth-key-explicit) 806 | | | +--rw ospfv2-key-id? uint32 807 | | | +--rw ospfv2-key? string 808 | | | +--rw ospfv2-crypto-algorithm? 809 | | | identityref 810 | | +--:(ospfv3-auth-ipsec) 811 | | | {ospfv3-authentication-ipsec}? 812 | | | +--rw sa? string 813 | | +--:(ospfv3-auth-trailer) 814 | | | {ospfv3-authentication-trailer}? 815 | | +--rw (ospfv3-auth-specification)? 816 | | +--:(auth-key-chain) {key-chain}? 817 | | | +--rw ospfv3-key-chain? 818 | | | key-chain:key-chain-ref 819 | | +--:(auth-key-explicit) 820 | | +--rw ospfv3-sa-id? uint16 821 | | +--rw ospfv3-key? string 822 | | +--rw ospfv3-crypto-algorithm? 823 | | identityref 824 | +--rw cost? uint16 825 | +--rw mtu-ignore? boolean 826 | | {mtu-ignore}? 827 | +--rw prefix-suppression? boolean 828 | | {prefix-suppression}? 829 | +--ro state? if-state-type 830 | +--ro hello-timer? uint32 831 | +--ro wait-timer? uint32 832 | +--ro dr-router-id? rt-types:router-id 833 | +--ro dr-ip-addr? inet:ip-address 834 | +--ro bdr-router-id? rt-types:router-id 835 | +--ro bdr-ip-addr? inet:ip-address 836 | +--ro statistics 837 | | +--ro if-event-count? yang:counter32 838 | | +--ro link-scope-lsa-count? yang:gauge32 839 | | +--ro link-scope-lsa-cksum-sum? 840 | | uint32 841 | | +--ro database 842 | | +--ro link-scope-lsa-type* 843 | | +--ro lsa-type? uint16 844 | | +--ro lsa-count? yang:gauge32 845 | | +--ro lsa-cksum-sum? int32 846 | +--ro neighbors 847 | | +--ro neighbor* [neighbor-router-id] 848 | | +--ro neighbor-router-id 849 | | rt-types:router-id 850 | | +--ro address? inet:ip-address 851 | | +--ro dr-router-id? rt-types:router-id 852 | | +--ro dr-ip-addr? inet:ip-address 853 | | +--ro bdr-router-id? rt-types:router-id 854 | | +--ro bdr-ip-addr? inet:ip-address 855 | | +--ro state? nbr-state-type 856 | | +--ro dead-timer? uint32 857 | | +--ro statistics 858 | | +--ro nbr-event-count? 859 | | yang:counter32 860 | | +--ro nbr-retrans-qlen? 861 | | yang:gauge32 862 | +--ro database 863 | . +--ro link-scope-lsa-type* [lsa-type] 864 | . +--ro lsa-type uint16 865 | . +--ro link-scope-lsas 866 . . 868 . . 869 | +--rw topologies {ospf:multi-topology}? 870 | | +--rw topology* [name] 871 | | +--rw name -> ../../../../../../../../ 872 | | ../../../rt:ribs/rib/name 873 | | +--rw cost? uint32 874 | +--rw instance-id? uint8 875 . 876 . 878 2.8. OSPF notification 880 This YANG model defines a list of notifications that inform YANG 881 clients of important events detected during protocol operation. The 882 defined notifications cover the common set of traps from the OSPFv2 883 MIB [RFC4750] and OSPFv3 MIB [RFC5643]. 885 notifications: 886 +---n if-state-change 887 | +--ro routing-protocol-name? 888 | + -> /rt:routing/control-plane-protocols/ 889 | + control-plane-protocol/name 890 | +--ro af? 891 | + -> /rt:routing/control-plane-protocols/ 892 | + control-plane-protocol 893 | + [rt:name=current()/../routing-protocol-name]/ 894 | + ospf:ospf/af 895 | +--ro (if-link-type-selection)? 896 | | +--:(interface) 897 | | | +--ro interface 898 | | | +--ro interface? if:interface-ref 899 | | +--:(virtual-link) 900 | | | +--ro virtual-link 901 | | | +--ro transit-area-id? area-id-type 902 | | | +--ro neighbor-router-id? rt-types:router-id 903 | | +--:(sham-link) 904 | | +--ro sham-link 905 | | +--ro area-id? area-id-type 906 | | +--ro local-ip-addr? inet:ip-address 907 | | +--ro remote-ip-addr? inet:ip-address 908 | +--ro state? if-state-type 909 +---n if-config-error 910 | +--ro routing-protocol-name? 911 | + -> /rt:routing/control-plane-protocols/ 912 | + control-plane-protocol/name 913 | +--ro af? 914 | + -> /rt:routing/control-plane-protocols/ 915 | + control-plane-protocol 916 | + [rt:name=current()/../routing-protocol-name]/ 917 | + ospf:ospf/af 918 | +--ro (if-link-type-selection)? 919 | | +--:(interface) 920 | | | +--ro interface 921 | | | +--ro interface? if:interface-ref 922 | | +--:(virtual-link) 923 | | | +--ro virtual-link 924 | | | +--ro transit-area-id? area-id-type 925 | | | +--ro neighbor-router-id? rt-types:router-id 926 | | +--:(sham-link) 927 | | +--ro sham-link 928 | | +--ro area-id? area-id-type 929 | | +--ro local-ip-addr? inet:ip-address 930 | | +--ro remote-ip-addr? inet:ip-address 931 | +--ro packet-source? yang:dotted-quad 932 | +--ro packet-type? packet-type 933 | +--ro error? enumeration 934 +---n nbr-state-change 935 | +--ro routing-protocol-name? 936 | + -> /rt:routing/control-plane-protocols/ 937 | + control-plane-protocol/name 938 | +--ro af? 939 | + -> /rt:routing/control-plane-protocols/ 940 | + control-plane-protocol 941 | + [rt:name=current()/../routing-protocol-name]/ 942 | + ospf:ospf/af 943 | +--ro (if-link-type-selection)? 944 | | +--:(interface) 945 | | | +--ro interface 946 | | | +--ro interface? if:interface-ref 947 | | +--:(virtual-link) 948 | | | +--ro virtual-link 949 | | | +--ro transit-area-id? area-id-type 950 | | | +--ro neighbor-router-id? rt-types:router-id 951 | | +--:(sham-link) 952 | | +--ro sham-link 953 | | +--ro area-id? area-id-type 954 | | +--ro local-ip-addr? inet:ip-address 955 | | +--ro remote-ip-addr? inet:ip-address 956 | +--ro neighbor-router-id? rt-types:router-id 957 | +--ro neighbor-ip-addr? yang:dotted-quad 958 | +--ro state? nbr-state-type 959 +---n nbr-restart-helper-status-change 960 | +--ro routing-protocol-name? 961 | + -> /rt:routing/control-plane-protocols/ 962 | + control-plane-protocol/name 963 | +--ro af? 964 | + -> /rt:routing/control-plane-protocols/ 965 | + control-plane-protocol 966 | + [rt:name=current()/../routing-protocol-name]/ 967 | + ospf:ospf/af 968 | +--ro (if-link-type-selection)? 969 | | +--:(interface) 970 | | | +--ro interface 971 | | | +--ro interface? if:interface-ref 972 | | +--:(virtual-link) 973 | | | +--ro virtual-link 974 | | | +--ro transit-area-id? area-id-type 975 | | | +--ro neighbor-router-id? rt-types:router-id 976 | | +--:(sham-link) 977 | | +--ro sham-link 978 | | +--ro area-id? area-id-type 979 | | +--ro local-ip-addr? inet:ip-address 980 | | +--ro remote-ip-addr? inet:ip-address 981 | +--ro neighbor-router-id? rt-types:router-id 982 | +--ro neighbor-ip-addr? yang:dotted-quad 983 | +--ro status? restart-helper-status-type 984 | +--ro age? uint32 985 | +--ro exit-reason? restart-exit-reason-type 986 +---n if-rx-bad-packet 987 | +--ro routing-protocol-name? 988 | + -> /rt:routing/control-plane-protocols/ 989 | + control-plane-protocol/name 990 | +--ro af? 991 | + -> /rt:routing/control-plane-protocols/ 992 | + control-plane-protocol 993 | + [rt:name=current()/../routing-protocol-name]/ 994 | + ospf:ospf/af 995 | +--ro (if-link-type-selection)? 996 | | +--:(interface) 997 | | | +--ro interface 998 | | | +--ro interface? if:interface-ref 999 | | +--:(virtual-link) 1000 | | | +--ro virtual-link 1001 | | | +--ro transit-area-id? area-id-type 1002 | | | +--ro neighbor-router-id? rt-types:router-id 1003 | | +--:(sham-link) 1004 | | +--ro sham-link 1005 | | +--ro area-id? area-id-type 1006 | | +--ro local-ip-addr? inet:ip-address 1007 | | +--ro remote-ip-addr? inet:ip-address 1008 | +--ro packet-source? yang:dotted-quad 1009 | +--ro packet-type? packet-type 1010 +---n lsdb-approaching-overflow 1011 | +--ro routing-protocol-name? 1012 | + -> /rt:routing/control-plane-protocols/ 1013 | + control-plane-protocol/name 1014 | +--ro af? 1015 | + -> /rt:routing/control-plane-protocols/ 1016 | + control-plane-protocol 1017 | + [rt:name=current()/../routing-protocol-name]/ 1018 | + ospf:ospf/af 1019 | +--ro ext-lsdb-limit? uint32 1020 +---n lsdb-overflow 1021 | +--ro routing-protocol-name? 1022 | + -> /rt:routing/control-plane-protocols/ 1023 | + control-plane-protocol/name 1024 | +--ro af? 1025 | + -> /rt:routing/control-plane-protocols/ 1026 | + control-plane-protocol 1027 | + [rt:name=current()/../routing-protocol-name]/ 1028 | + ospf:ospf/af 1029 | +--ro ext-lsdb-limit? uint32 1030 +---n nssa-translator-status-change 1031 | +--ro routing-protocol-name? 1032 | + -> /rt:routing/control-plane-protocols/ 1033 | + control-plane-protocol/name 1034 | +--ro af? 1035 | + -> /rt:routing/control-plane-protocols/ 1036 | + control-plane-protocol 1037 | + [rt:name=current()/../routing-protocol-name]/ 1038 | + ospf:ospf/af 1039 | +--ro area-id? area-id-type 1040 | +--ro status? nssa-translator-state-type 1041 +---n restart-status-change 1042 +--ro routing-protocol-name? 1043 + -> /rt:routing/control-plane-protocols/ 1044 + control-plane-protocol/name 1045 +--ro af? 1046 + -> /rt:routing/control-plane-protocols/ 1047 + control-plane-protocol 1048 + [rt:name=current()/../routing-protocol-name]/ 1049 + ospf:ospf/af 1050 +--ro status? restart-status-type 1051 +--ro restart-interval? uint16 1052 +--ro exit-reason? restart-exit-reason-type 1054 2.9. OSPF RPC Operations 1056 The "ietf-ospf" module defines two RPC operations: 1058 o clear-database: reset the content of a particular OSPF Link State 1059 Database. 1061 o clear-neighbor: restart a particular set of OSPF neighbor. 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-01-24.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 1153 Author: Dean Bogdanovic 1154 1155 Author: Kiran Agrahara Sreenivasa 1156 2955 tuple with the sequence number differentiating 2956 LSA instances."; 2957 container header { 2958 must "(derived-from(type, " 2959 + "'ospfv2-opaque-lsa-type') and " 2960 + "opaque-id and opaque-type) or " 2961 + "(not(derived-from(type, " 2962 + "'ospfv2-opaque-lsa-type')) " 2963 + "and not(opaque-id) and not(opaque-type))" { 2964 description 2965 "Opaque type and ID only apply to Opaque LSAs."; 2966 } 2967 description 2968 "Decoded OSPFv2 LSA header data."; 2969 leaf option { 2970 type bits { 2971 bit MT { 2972 description 2973 "When set, the router supports multi-topology as 2974 in RFC 4915."; 2975 } 2976 bit DC { 2977 description 2978 "When set, the router supports demand circuits."; 2979 } 2980 bit P { 2981 description 2982 "Only used in type-7 LSA. When set, an NSSA 2983 border router should translate the type-7 LSA 2984 to a type-5 LSA."; 2985 } 2986 bit MC { 2987 description 2988 "When set, the router supports MOSPF."; 2989 } 2990 bit E { 2991 description 2992 "This bit describes the way AS-external LSAs 2993 are flooded."; 2994 } 2995 bit O { 2996 description 2997 "When set, the router is opaque-capable as in 2998 RFC 5250."; 2999 } 3000 bit DN { 3001 description 3002 "When a type 3, 5 or 7 LSA is sent from a PE to a CE, 3003 the DN bit must be set. See RFC 4576."; 3004 } 3005 } 3006 mandatory true; 3007 description "LSA options."; 3008 } 3009 leaf lsa-id { 3010 type yang:dotted-quad; 3011 mandatory true; 3012 description "Link-State ID."; 3013 } 3015 leaf opaque-type { 3016 type uint8; 3017 description "Opaque type."; 3018 } 3020 leaf opaque-id { 3021 type opaque-id; 3022 description "Opaque ID."; 3023 } 3025 uses lsa-header; 3026 } 3027 container body { 3028 description 3029 "Decoded OSPFv2 LSA body data."; 3030 uses ospfv2-lsa-body; 3031 } 3032 } 3034 grouping ospfv3-lsa { 3035 description 3036 "Decoded OSPFv3 LSA."; 3037 container header { 3038 description 3039 "Decoded OSPFv3 LSA header data."; 3040 leaf lsa-id { 3041 type uint32; 3042 mandatory true; 3043 description "OSPFv3 LSA ID."; 3044 } 3045 uses lsa-header; 3046 } 3047 container body { 3048 description 3049 "Decoded OSPF LSA body data."; 3050 uses ospfv3-lsa-body; 3051 } 3052 } 3053 grouping lsa-common { 3054 description 3055 "Common fields for OSPF LSA representation."; 3056 leaf decoded-completed { 3057 type boolean; 3058 description 3059 "The OSPF LSA body is fully decoded."; 3060 } 3061 leaf raw-data { 3062 type yang:hex-string; 3063 description 3064 "The complete LSA in network byte 3065 order hexadecimal as received or originated."; 3066 } 3067 } 3069 grouping lsa { 3070 description 3071 "OSPF LSA."; 3072 uses lsa-common; 3073 choice version { 3074 description 3075 "OSPFv2 or OSPFv3 LSA body."; 3076 container ospfv2 { 3077 description "OSPFv2 LSA"; 3078 uses ospfv2-lsa; 3079 } 3080 container ospfv3 { 3081 description "OSPFv3 LSA"; 3082 uses ospfv3-lsa; 3083 } 3084 } 3085 } 3086 grouping lsa-key { 3087 description 3088 "OSPF LSA key."; 3089 leaf lsa-id { 3090 type union { 3091 type yang:dotted-quad; 3092 type uint32; 3093 } 3094 description 3095 "Link-State ID."; 3096 } 3097 leaf adv-router { 3098 type rt-types:router-id; 3099 description 3100 "Advertising router."; 3101 } 3102 } 3104 grouping instance-stat { 3105 description "Per-instance statistics"; 3106 leaf originate-new-lsa-count { 3107 type yang:counter32; 3108 description "The number of new LSAs originated."; 3109 } 3110 leaf rx-new-lsas-count { 3111 type yang:counter32; 3112 description "The number of LSAs received."; 3113 } 3114 leaf as-scope-lsa-count { 3115 type yang:gauge32; 3116 description "The number of AS-scope LSAs."; 3117 } 3118 leaf as-scope-lsa-chksum-sum { 3119 type uint32; 3120 description 3121 "The sum of the LSA checksums for AS-scope LSAs."; 3122 } 3123 container database { 3124 description "Container for per AS-scope LSA statistics."; 3125 list as-scope-lsa-type { 3126 description "List of AS-scope LSA statistics"; 3127 leaf lsa-type { 3128 type uint16; 3129 description "AS-Scope LSA type."; 3130 } 3131 leaf lsa-count { 3132 type yang:gauge32; 3133 description "The number of LSAs of the LSA type."; 3135 } 3136 leaf lsa-cksum-sum { 3137 type uint32; 3138 description 3139 "The sum of the LSA checksums of the LSA type."; 3140 } 3141 } 3142 } 3143 uses instance-fast-reroute-state; 3144 } 3146 grouping area-stat { 3147 description "Per-area statistics."; 3148 leaf spf-runs-count { 3149 type yang:counter32; 3150 description 3151 "The number of times the intra-area SPF has run."; 3152 } 3153 leaf abr-count { 3154 type yang:gauge32; 3155 description 3156 "The total number of Area Border Routers (ABRs) 3157 reachable within this area."; 3158 } 3159 leaf asbr-count { 3160 type yang:gauge32; 3161 description 3162 "The total number of AS Boundary Routers (ASBRs)."; 3163 } 3164 leaf ar-nssa-translator-event-count { 3165 type yang:counter32; 3166 description 3167 "The number of NSSA translator-state changes."; 3168 } 3169 leaf area-scope-lsa-count { 3170 type yang:gauge32; 3171 description 3172 "The number of area-scope LSAs in the area."; 3173 } 3174 leaf area-scope-lsa-cksum-sum { 3175 type uint32; 3176 description "The sum of the area-scope LSAs checksums."; 3177 } 3178 container database { 3179 description "Container for area-scope LSA type statistics."; 3180 list area-scope-lsa-type { 3181 description "List of area-scope LSA statistics"; 3182 leaf lsa-type { 3183 type uint16; 3184 description "Area-scope LSA type."; 3185 } 3186 leaf lsa-count { 3187 type yang:gauge32; 3188 description "The number of LSAs of the LSA type."; 3189 } 3190 leaf lsa-cksum-sum { 3191 type uint32; 3192 description 3193 "The sum of the LSA checksums of the LSA type."; 3194 } 3195 } 3196 } 3197 } 3199 grouping interface-stat { 3200 description "Per-interface statistics"; 3201 leaf if-event-count { 3202 type yang:counter32; 3203 description 3204 "The number of times this interface has changed its 3205 state or an error has occurred."; 3206 } 3207 leaf link-scope-lsa-count { 3208 type yang:gauge32; 3209 description "The number of link-scope LSAs."; 3210 } 3211 leaf link-scope-lsa-cksum-sum { 3212 type uint32; 3213 description "The sum of link-scope LSA checksums."; 3214 } 3215 container database { 3216 description "Container for link-scope LSA type statistics."; 3217 list link-scope-lsa-type { 3218 description "List of link-scope LSA statistics"; 3219 leaf lsa-type { 3220 type uint16; 3221 description "Link scope LSA type."; 3222 } 3223 leaf lsa-count { 3224 type yang:gauge32; 3225 description "The number of LSAs of the LSA type."; 3226 } 3227 leaf lsa-cksum-sum { 3228 type uint32; 3229 description 3230 "The sum of the LSA checksums of the LSA type."; 3232 } 3233 } 3234 } 3235 } 3237 grouping neighbor-stat { 3238 description "Per-neighbor statistics."; 3239 leaf nbr-event-count { 3240 type yang:counter32; 3241 description 3242 "The number of times this neighbor has changed 3243 state or an error has occurred."; 3244 } 3245 leaf nbr-retrans-qlen { 3246 type yang:gauge32; 3247 description 3248 "The current length of the retransmission queue."; 3249 } 3250 } 3252 grouping instance-fast-reroute-config { 3253 description 3254 "This group defines global configuration of IP 3255 Fast ReRoute (FRR)."; 3256 container fast-reroute { 3257 if-feature fast-reroute; 3258 description 3259 "This container may be augmented with global 3260 parameters for IP-FRR."; 3261 container lfa { 3262 if-feature lfa; 3263 description 3264 "This container may be augmented with 3265 global parameters for Loop-Free Alternatives (LFA). 3266 Container creation has no effect on LFA activation."; 3267 } 3268 } 3269 } 3271 grouping instance-fast-reroute-state { 3272 description "IPFRR state data grouping"; 3274 container protected-routes { 3275 if-feature fast-reroute; 3276 config false; 3277 description "Instance protection statistics"; 3279 list address-family-stats { 3280 key "address-family prefix alternate"; 3281 description 3282 "Per Address Family protected prefix information"; 3284 leaf address-family { 3285 type iana-rt-types:address-family; 3286 description 3287 "Address-family"; 3288 } 3289 leaf prefix { 3290 type inet:ip-prefix; 3291 description 3292 "Protected prefix."; 3293 } 3294 leaf alternate { 3295 type inet:ip-address; 3296 description 3297 "Alternate next hop for the prefix."; 3298 } 3299 leaf alternate-type { 3300 type enumeration { 3301 enum equal-cost { 3302 description 3303 "ECMP alternate."; 3304 } 3305 enum lfa { 3306 description 3307 "LFA alternate."; 3308 } 3309 enum remote-lfa { 3310 description 3311 "Remote LFA alternate."; 3312 } 3313 enum tunnel { 3314 description 3315 "Tunnel based alternate 3316 (like RSVP-TE or GRE)."; 3317 } 3318 enum ti-lfa { 3319 description 3320 "TI-LFA alternate."; 3321 } 3322 enum mrt { 3323 description 3324 "MRT alternate."; 3325 } 3326 enum other { 3327 description 3328 "Unknown alternate type."; 3329 } 3330 } 3331 description 3332 "Type of alternate."; 3333 } 3334 leaf best { 3335 type boolean; 3336 description 3337 "Indicates if the alternate is the preferred."; 3338 } 3339 leaf non-best-reason { 3340 type string { 3341 length "1..255"; 3342 } 3343 description 3344 "Information field to describe why the alternate 3345 is not best."; 3346 } 3347 leaf protection-available { 3348 type bits { 3349 bit node-protect { 3350 position 0; 3351 description 3352 "Node protection available."; 3353 } 3354 bit link-protect { 3355 position 1; 3356 description 3357 "Link protection available."; 3358 } 3359 bit srlg-protect { 3360 position 2; 3361 description 3362 "SRLG protection available."; 3363 } 3364 bit downstream-protect { 3365 position 3; 3366 description 3367 "Downstream protection available."; 3368 } 3369 bit other { 3370 position 4; 3371 description 3372 "Other protection available."; 3373 } 3374 } 3375 description "Protection provided by the alternate."; 3377 } 3378 leaf alternate-metric1 { 3379 type uint32; 3380 description 3381 "Metric from Point of Local Repair (PLR) to 3382 destination through the alternate path."; 3383 } 3384 leaf alternate-metric2 { 3385 type uint32; 3386 description 3387 "Metric from PLR to the alternate node"; 3388 } 3389 leaf alternate-metric3 { 3390 type uint32; 3391 description 3392 "Metric from alternate node to the destination"; 3393 } 3394 } 3395 } 3397 container unprotected-routes { 3398 if-feature fast-reroute; 3399 config false; 3400 description "List of prefixes that are not protected"; 3402 list address-family-stats { 3403 key "address-family prefix"; 3404 description 3405 "Per Address Family (AF) unprotected prefix statistics."; 3407 leaf address-family { 3408 type iana-rt-types:address-family; 3409 description "Address-family"; 3410 } 3411 leaf prefix { 3412 type inet:ip-prefix; 3413 description "Unprotected prefix."; 3414 } 3415 } 3416 } 3418 list protection-statistics { 3419 key frr-protection-method; 3420 config false; 3421 description "List protection method statistics"; 3423 leaf frr-protection-method { 3424 type string; 3425 description "Protection method used."; 3426 } 3427 list address-family-stats { 3428 key address-family; 3429 description "Per Address Family protection statistics."; 3431 leaf address-family { 3432 type iana-rt-types:address-family; 3433 description "Address-family"; 3434 } 3435 leaf total-routes { 3436 type uint32; 3437 description "Total prefixes."; 3438 } 3439 leaf unprotected-routes { 3440 type uint32; 3441 description 3442 "Total prefixes that are not protected."; 3443 } 3444 leaf protected-routes { 3445 type uint32; 3446 description 3447 "Total prefixes that are protected."; 3448 } 3449 leaf linkprotected-routes { 3450 type uint32; 3451 description 3452 "Total prefixes that are link protected."; 3453 } 3454 leaf nodeprotected-routes { 3455 type uint32; 3456 description 3457 "Total prefixes that are node protected."; 3458 } 3459 } 3460 } 3461 } 3463 grouping interface-fast-reroute-config { 3464 description 3465 "This group defines interface configuration of IP-FRR."; 3466 container fast-reroute { 3467 if-feature fast-reroute; 3468 container lfa { 3469 if-feature lfa; 3470 leaf candidate-enable { 3471 type boolean; 3472 default true; 3473 description 3474 "Enable the interface to be used as backup."; 3475 } 3476 leaf enable { 3477 type boolean; 3478 default false; 3479 description 3480 "Activates LFA - Per-prefix LFA computation 3481 is assumed."; 3482 } 3483 container remote-lfa { 3484 if-feature remote-lfa; 3485 leaf enable { 3486 type boolean; 3487 default false; 3488 description 3489 "Activates Remote LFA (R-LFA)."; 3490 } 3491 description 3492 "Remote LFA configuration."; 3493 } 3494 description 3495 "LFA configuration."; 3496 } 3497 description 3498 "Interface IP Fast-reroute configuration."; 3499 } 3500 } 3502 grouping interface-physical-link-config { 3503 description 3504 "Interface cost configuration that only applies to 3505 physical interfaces (non-virtual) and sham links."; 3506 leaf cost { 3507 type uint16 { 3508 range "1..65535"; 3509 } 3510 description 3511 "Interface cost."; 3512 } 3513 leaf mtu-ignore { 3514 if-feature mtu-ignore; 3515 type boolean; 3516 description 3517 "Enable/Disable bypassing the MTU mismatch check in 3518 Database Description packets."; 3519 } 3520 leaf prefix-suppression { 3521 if-feature prefix-suppression; 3522 type boolean; 3523 description 3524 "Suppress advertisement of the prefixes associated 3525 with the interface."; 3526 } 3527 leaf two-part-metric { 3528 if-feature two-part-metric; 3529 type boolean; 3530 description 3531 "Support advertisement and computation of the 2-part 3532 metric."; 3533 } 3534 } 3536 grouping interface-common-config { 3537 description 3538 "Common configuration for all types of interfaces, 3539 including virtual links and sham links."; 3541 leaf hello-interval { 3542 type uint16 { 3543 range "1..65535"; 3544 } 3545 description 3546 "Interval between hello packets (seconds). It must 3547 be the same for all routers on the same network. 3548 Different networks, implementations, and deployments 3549 will use different hello-intervals. A sample value 3550 for a LAN network would be 10 seconds."; 3551 } 3553 leaf dead-interval { 3554 type uint32 { 3555 range "1..2147483647"; 3556 } 3557 units seconds; 3558 must "../dead-interval > ../hello-interval" { 3559 error-message "The dead interval must be " 3560 + "larger than the hello interval"; 3561 description 3562 "The value MUST be greater than 'hello-interval'."; 3563 } 3564 description 3565 "Interval after which a neighbor is declared down 3566 (seconds) if hello packets are not received. It is 3567 typically 3 or 4 times the hello-interval. A typical 3568 value for LAN networks is 40 seconds."; 3570 } 3572 leaf retransmit-interval { 3573 type uint16 { 3574 range "1..3600"; 3575 } 3576 units seconds; 3577 description 3578 "Interval between retransmitting unacknowledged Link 3579 State Advertisements (LSAs) (seconds). This should 3580 be well over the round-trip transmit delay for 3581 any two routers on the network. A sample value 3582 would be 5 seconds."; 3583 } 3585 leaf transmit-delay { 3586 type uint16 { 3587 range "1..3600"; 3588 } 3589 units seconds; 3590 description 3591 "Estimated time needed to transmit Link State Update 3592 (LSU) packets on the interface (seconds). LSAs have 3593 their age incremented by this amount on advertised 3594 on the interface. A sample value would be 1 second."; 3595 } 3597 leaf lls { 3598 if-feature lls; 3599 type boolean; 3600 description 3601 "Enable/Disable link-local signaling (LLS) support."; 3602 } 3604 container ttl-security { 3605 if-feature ttl-security; 3606 description "Time to Live (TTL) security check."; 3607 leaf enable { 3608 type boolean; 3609 description 3610 "Enable/Disable TTL security check."; 3611 } 3612 leaf hops { 3613 type uint8 { 3614 range "1..254"; 3615 } 3616 description 3617 "Maximum number of hops that an OSPF packet may 3618 have traversed before reception."; 3619 } 3620 } 3621 leaf enable { 3622 if-feature admin-control; 3623 type boolean; 3624 default true; 3625 description 3626 "Enable/disable OSPF protocol on the interface."; 3627 } 3629 container authentication { 3630 description "Authentication configuration."; 3631 choice auth-type-selection { 3632 description 3633 "Options for OSPFv2/OSPFv3 authentication 3634 configuration."; 3635 case ospfv2-auth { 3636 when "derived-from-or-self(../../../../../../rt:type, " 3637 + "'ospf:ospfv2')" { 3638 description "Applied to OSPFv2 only."; 3639 } 3640 leaf ospfv2-auth-trailer-rfc { 3641 if-feature ospfv2-authentication-trailer; 3642 type ospfv2-auth-trailer-rfc-version; 3643 description 3644 "Version of OSFPv2 authentication trailer support - 3645 RFC 5709 or RFC 7474"; 3646 } 3647 choice ospfv2-auth-specification { 3648 description 3649 "Key chain or explicit key parameter specification"; 3650 case auth-key-chain { 3651 if-feature key-chain; 3652 leaf ospfv2-key-chain { 3653 type key-chain:key-chain-ref; 3654 description 3655 "key-chain name."; 3656 } 3657 } 3658 case auth-key-explicit { 3659 leaf ospfv2-key-id { 3660 type uint32; 3661 description 3662 "Key Identifier"; 3663 } 3664 leaf ospfv2-key { 3665 type string; 3666 description 3667 "OSPFv2 authentication key. The 3668 length of the key may be dependent on the 3669 cryptographic algorithm. In cases where it is 3670 not, a key length of at least 32 octets should 3671 be supported to allow for interoperability 3672 with strong keys."; 3673 } 3674 leaf ospfv2-crypto-algorithm { 3675 type identityref { 3676 base key-chain:crypto-algorithm; 3677 } 3678 description 3679 "Cryptographic algorithm associated with key."; 3680 } 3681 } 3682 } 3683 } 3684 case ospfv3-auth-ipsec { 3685 when "derived-from-or-self(../../../../../../rt:type, " 3686 + "'ospf:ospfv3')" { 3687 description "Applied to OSPFv3 only."; 3688 } 3689 if-feature ospfv3-authentication-ipsec; 3690 leaf sa { 3691 type string; 3692 description 3693 "Security Association (SA) name."; 3694 } 3695 } 3696 case ospfv3-auth-trailer { 3697 when "derived-from-or-self(../../../../../../rt:type, " 3698 + "'ospf:ospfv3')" { 3699 description "Applied to OSPFv3 only."; 3700 } 3701 if-feature ospfv3-authentication-trailer; 3702 choice ospfv3-auth-specification { 3703 description 3704 "Key chain or explicit key parameter specification"; 3705 case auth-key-chain { 3706 if-feature key-chain; 3707 leaf ospfv3-key-chain { 3708 type key-chain:key-chain-ref; 3709 description 3710 "key-chain name."; 3711 } 3712 } 3713 case auth-key-explicit { 3714 leaf ospfv3-sa-id { 3715 type uint16; 3716 description 3717 "Security Association (SA) Identifier"; 3718 } 3719 leaf ospfv3-key { 3720 type string; 3721 description 3722 "OSPFv2 authentication key. The 3723 length of the key may be dependent on the 3724 cryptographic algorithm. In cases where it is 3725 not, a key length of at least 32 octets should 3726 be supported to allow for interoperability 3727 with strong keys."; 3728 } 3729 leaf ospfv3-crypto-algorithm { 3730 type identityref { 3731 base key-chain:crypto-algorithm; 3732 } 3733 description 3734 "Cryptographic algorithm associated with key."; 3735 } 3736 } 3737 } 3738 } 3739 } 3740 } 3741 } 3743 grouping interface-config { 3744 description "Configuration for real interfaces."; 3746 leaf interface-type { 3747 type enumeration { 3748 enum "broadcast" { 3749 description 3750 "Specify OSPF broadcast multi-access network."; 3751 } 3752 enum "non-broadcast" { 3753 description 3754 "Specify OSPF Non-Broadcast Multi-Access 3755 (NBMA) network."; 3756 } 3757 enum "point-to-multipoint" { 3758 description 3759 "Specify OSPF point-to-multipoint network."; 3760 } 3761 enum "point-to-point" { 3762 description 3763 "Specify OSPF point-to-point network."; 3764 } 3765 enum "hybrid" { 3766 if-feature hybrid-interface; 3767 description 3768 "Specify OSPF hybrid broadcast/P2MP network."; 3769 } 3770 } 3771 description 3772 "Interface type."; 3773 } 3775 leaf passive { 3776 type boolean; 3777 description 3778 "Enable/Disable passive interface - a passive interface's 3779 prefix will be advertised but no neighbor adjacencies 3780 will be formed on the interface."; 3781 } 3783 leaf demand-circuit { 3784 if-feature demand-circuit; 3785 type boolean; 3786 description 3787 "Enable/Disable demand circuit."; 3788 } 3790 leaf priority { 3791 type uint8; 3792 description 3793 "Configure OSPF router priority. On multi-access network 3794 this value is for Designated Router (DR) election. The 3795 priority is ignored on other interface types. A value 3796 of 0 indicates the router is not eligible to become 3797 Designated Router or Backup Designated Router (BDR)."; 3798 } 3800 container multi-areas { 3801 if-feature multi-area-adj; 3802 description "Container for multi-area config."; 3803 list multi-area { 3804 key multi-area-id; 3805 description 3806 "Configure OSPF multi-area adjacency."; 3807 leaf multi-area-id { 3808 type area-id-type; 3809 description 3810 "Multi-area adjacency area ID."; 3811 } 3812 leaf cost { 3813 type uint16; 3814 description 3815 "Interface cost for multi-area adjacency."; 3816 } 3817 } 3818 } 3820 container static-neighbors { 3821 description "Statically configured neighbors."; 3823 list neighbor { 3824 key "identifier"; 3825 description 3826 "Specify a static OSPF neighbor."; 3828 leaf identifier { 3829 type inet:ip-address; 3830 description 3831 "Neighbor Router ID, IPv4 address, or IPv6 address."; 3832 } 3834 leaf cost { 3835 type uint16 { 3836 range "1..65535"; 3837 } 3838 description 3839 "Neighbor cost. Different implementations have different 3840 default costs with some defaulting to a cost inversely 3841 proportional to the interface speed. Others will 3842 default to 1 equating the cost to a hop count." ; 3843 } 3844 leaf poll-interval { 3845 type uint16 { 3846 range "1..65535"; 3847 } 3848 units seconds; 3849 description 3850 "Neighbor poll interval (seconds) for sending OSPF 3851 hello packets to discover the neighbor on NBMA 3852 networks. This interval dictates the granularity for 3853 discovery of new neighbors. A sample would be 2 minutes 3854 for a legacy Packet Data Network (PDN) X.25 network."; 3855 } 3856 leaf priority { 3857 type uint8 { 3858 range "1..255"; 3859 } 3860 description "Neighbor priority for DR election."; 3861 } 3862 } 3863 } 3865 leaf node-flag { 3866 if-feature node-flag; 3867 type boolean; 3868 default false; 3869 description 3870 "Set prefix as identifying the advertising router."; 3871 reference "RFC 7684 - OSPFv2 Prefix/Link Attribute 3872 Advertisement"; 3873 } 3875 container bfd { 3876 if-feature bfd; 3877 description "BFD Client Configuration."; 3878 uses bfd-types:client-cfg-parms; 3879 reference "draft-ietf-bfd-yang-xx.txt: 3880 YANG Data Model for Bidirectional Forwarding 3881 Detection (BFD)"; 3882 } 3884 uses interface-fast-reroute-config; 3885 uses interface-common-config; 3886 uses interface-physical-link-config; 3887 } 3889 grouping neighbor-state { 3890 description 3891 "OSPF neighbor operational state."; 3893 leaf address { 3894 type inet:ip-address; 3895 config false; 3896 description 3897 "Neighbor address."; 3898 } 3899 leaf dr-router-id { 3900 type rt-types:router-id; 3901 config false; 3902 description "Neighbor's Designated Router (DR) Router ID."; 3903 } 3905 leaf dr-ip-addr { 3906 type inet:ip-address; 3907 config false; 3908 description "Neighbor's Designated Router (DR) IP address."; 3909 } 3911 leaf bdr-router-id { 3912 type rt-types:router-id; 3913 config false; 3914 description 3915 "Neighbor's Backup Designated Router (BDR) Router ID."; 3916 } 3918 leaf bdr-ip-addr { 3919 type inet:ip-address; 3920 config false; 3921 description 3922 "Neighbor's Backup Designated Router (BDR) IP Address."; 3923 } 3924 leaf state { 3925 type nbr-state-type; 3926 config false; 3927 description 3928 "OSPF neighbor state."; 3929 } 3930 leaf cost { 3931 type uint32; 3932 config false; 3933 description "Cost to reach neighbor for Point-to-Multipoint 3934 and Hybrid networks"; 3935 } 3936 leaf dead-timer { 3937 type uint32; 3938 units "seconds"; 3939 config false; 3940 description "This timer tracks the remaining time before 3941 the neighbor is declared dead."; 3942 } 3943 container statistics { 3944 config false; 3945 description "Per-neighbor statistics"; 3946 uses neighbor-stat; 3947 } 3948 } 3950 grouping interface-common-state { 3951 description 3952 "OSPF interface common operational state."; 3953 reference "RFC2328 Section 9"; 3954 leaf state { 3955 type if-state-type; 3956 config false; 3957 description "Interface state."; 3958 } 3960 leaf hello-timer { 3961 type uint32; 3962 units "seconds"; 3963 config false; 3964 description "This timer tracks the remaining time before 3965 the next hello packet is sent on the 3966 interface."; 3967 } 3969 leaf wait-timer { 3970 type uint32; 3971 units "seconds"; 3972 config false; 3973 description "This timer tracks the remaining time before 3974 the interface exits the Waiting state."; 3975 } 3977 leaf dr-router-id { 3978 type rt-types:router-id; 3979 config false; 3980 description "Designated Router (DR) Router ID."; 3981 } 3983 leaf dr-ip-addr { 3984 type inet:ip-address; 3985 config false; 3986 description "Designated Router (DR) IP address."; 3987 } 3989 leaf bdr-router-id { 3990 type rt-types:router-id; 3991 config false; 3992 description "Backup Designated Router (BDR) Router ID."; 3993 } 3995 leaf bdr-ip-addr { 3996 type inet:ip-address; 3997 config false; 3998 description "Backup Designated Router (BDR) IP Address."; 3999 } 4001 container statistics { 4002 config false; 4003 description "Per-interface statistics"; 4004 uses interface-stat; 4005 } 4007 container neighbors { 4008 config false; 4009 description "All neighbors for the interface."; 4010 list neighbor { 4011 key "neighbor-router-id"; 4012 description 4013 "List of interface OSPF neighbors."; 4014 leaf neighbor-router-id { 4015 type rt-types:router-id; 4016 description 4017 "Neighbor Router ID."; 4018 } 4019 uses neighbor-state; 4020 } 4021 } 4022 container database { 4023 config false; 4024 description "Link-scope Link State Database."; 4025 list link-scope-lsa-type { 4026 key "lsa-type"; 4027 description 4028 "List OSPF link-scope LSAs."; 4029 leaf lsa-type { 4030 type uint16; 4031 description "OSPF link-scope LSA type."; 4032 } 4033 container link-scope-lsas { 4034 description 4035 "All link-scope LSAs of this LSA type."; 4036 list link-scope-lsa { 4037 key "lsa-id adv-router"; 4038 description "List of OSPF link-scope LSAs"; 4039 uses lsa-key; 4040 uses lsa { 4041 refine "version/ospfv2/ospfv2" { 4042 must "derived-from-or-self( " 4043 + "../../../../../../../../../../" 4044 + "rt:type, 'ospf:ospfv2')" { 4045 description "OSPFv2 LSA."; 4046 } 4047 } 4048 refine "version/ospfv3/ospfv3" { 4049 must "derived-from-or-self( " 4050 + "../../../../../../../../../../" 4051 + "rt:type, 'ospf:ospfv3')" { 4052 description "OSPFv3 LSA."; 4053 } 4054 } 4055 } 4056 } 4057 } 4058 } 4059 } 4060 } 4062 grouping interface-state { 4063 description 4064 "OSPF interface operational state."; 4065 reference "RFC2328 Section 9"; 4067 uses interface-common-state; 4068 } 4070 grouping virtual-link-config { 4071 description 4072 "OSPF virtual link configuration state."; 4074 uses interface-common-config; 4075 } 4077 grouping virtual-link-state { 4078 description 4079 "OSPF virtual link operational state."; 4081 leaf cost { 4082 type uint16 { 4083 range "1..65535"; 4084 } 4085 config false; 4086 description 4087 "Virtual link interface cost."; 4088 } 4089 uses interface-common-state; 4090 } 4092 grouping sham-link-config { 4093 description 4094 "OSPF sham link configuration state."; 4096 uses interface-common-config; 4097 uses interface-physical-link-config; 4099 } 4101 grouping sham-link-state { 4102 description 4103 "OSPF sham link operational state."; 4104 uses interface-common-state; 4105 } 4107 grouping address-family-area-config { 4108 description 4109 "OSPF address-family specific area config state."; 4111 container ranges { 4112 description "Container for summary ranges"; 4114 list range { 4115 key "prefix"; 4116 description 4117 "Summarize routes matching address/mask - 4118 Applicable to Area Border Routers (ABRs) only."; 4119 leaf prefix { 4120 type inet:ip-prefix; 4121 description 4122 "IPv4 or IPv6 prefix"; 4123 } 4124 leaf advertise { 4125 type boolean; 4126 description 4127 "Advertise or hide."; 4128 } 4129 leaf cost { 4130 type ospf-metric { 4131 range "0..16777214"; 4132 } 4133 description 4134 "Advertised cost of summary route."; 4135 } 4136 } 4137 } 4138 } 4140 grouping area-common-config { 4141 description 4142 "OSPF area common configuration state."; 4144 leaf summary { 4145 when "derived-from(../area-type,'ospf:stub-nssa-area')" { 4146 description 4147 "Summary advertisement into the stub/NSSA area."; 4148 } 4149 type boolean; 4150 description 4151 "Enable/Disable summary advertisement into the stub or 4152 NSSA area."; 4153 } 4154 leaf default-cost { 4155 when "derived-from(../area-type,'ospf:stub-nssa-area')" { 4156 description 4157 "Cost for LSA default route advertised into the 4158 stub or NSSA area."; 4159 } 4160 type ospf-metric; 4161 description 4162 "Set the summary default route cost for a 4163 stub or NSSA area."; 4164 } 4165 } 4167 grouping area-config { 4168 description 4169 "OSPF area configuration state."; 4171 leaf area-type { 4172 type identityref { 4173 base area-type; 4174 } 4175 default normal-area; 4176 description 4177 "Area type."; 4178 } 4180 uses area-common-config; 4181 uses address-family-area-config; 4182 } 4184 grouping area-state { 4185 description 4186 "OSPF area operational state."; 4188 container statistics { 4189 config false; 4190 description "Per-area statistics"; 4191 uses area-stat; 4192 } 4194 container database { 4195 config false; 4196 description "Area-scope Link State Database."; 4197 list area-scope-lsa-type { 4198 key "lsa-type"; 4199 description "List OSPF area-scope LSAs."; 4200 leaf lsa-type { 4201 type uint16; 4202 description "OSPF area-scope LSA type."; 4203 } 4204 container area-scope-lsas { 4205 description 4206 "All area-scope LSAs of an area-scope 4207 LSA type."; 4208 list area-scope-lsa { 4209 key "lsa-id adv-router"; 4210 description "List of OSPF area-scope LSAs"; 4211 uses lsa-key; 4212 uses lsa { 4213 refine "version/ospfv2/ospfv2" { 4214 must "derived-from-or-self( " 4215 + "../../../../../../../../" 4216 + "rt:type, 'ospf:ospfv2')" { 4217 description "OSPFv2 LSA."; 4218 } 4219 } 4220 refine "version/ospfv3/ospfv3" { 4221 must "derived-from-or-self( " 4222 + "../../../../../../../../" 4223 + "rt:type, 'ospf:ospfv3')" { 4224 description "OSPFv3 LSA."; 4225 } 4226 } 4227 } 4228 } 4229 } 4230 } 4231 } 4232 } 4234 grouping local-rib { 4235 description "Local-rib - RIB for Routes computed by the local 4236 OSPF routing instance."; 4237 container local-rib { 4238 config false; 4239 description "Local-rib."; 4240 list route { 4241 key "prefix"; 4242 description "Routes"; 4243 leaf prefix { 4244 type inet:ip-prefix; 4245 description "Destination prefix."; 4246 } 4247 container next-hops { 4248 description "Next hops for the route."; 4249 list next-hop { 4250 key "next-hop"; 4251 description "List of next hops for the route"; 4252 leaf outgoing-interface { 4253 type if:interface-ref; 4254 description 4255 "Name of the outgoing interface."; 4256 } 4257 leaf next-hop { 4258 type inet:ip-address; 4259 description "Next hop address."; 4260 } 4261 } 4262 } 4263 leaf metric { 4264 type uint32; 4265 description "Metric for this route."; 4266 } 4267 leaf route-type { 4268 type route-type; 4269 description "Route type for this route."; 4270 } 4271 leaf route-tag { 4272 type uint32; 4273 description "Route tag for this route."; 4274 } 4275 } 4276 } 4277 } 4279 grouping ietf-spf-delay { 4280 leaf initial-delay { 4281 type rt-types:timer-value-milliseconds; 4282 description 4283 "Delay used while in QUIET state (milliseconds)."; 4284 } 4285 leaf short-delay { 4286 type rt-types:timer-value-milliseconds; 4287 description 4288 "Delay used while in SHORT_WAIT state (milliseconds)."; 4289 } 4290 leaf long-delay { 4291 type rt-types:timer-value-milliseconds; 4292 description 4293 "Delay used while in LONG_WAIT state (milliseconds)."; 4294 } 4295 leaf hold-down { 4296 type rt-types:timer-value-milliseconds; 4297 description 4298 "Timer used to consider an IGP stability period 4299 (milliseconds)."; 4300 } 4301 leaf time-to-learn { 4302 type rt-types:timer-value-milliseconds; 4303 description 4304 "Duration used to learn all the IGP events 4305 related to a single component failure (milliseconds)."; 4306 } 4307 leaf current-state { 4308 type enumeration { 4309 enum "quiet" { 4310 description "QUIET state"; 4311 } 4312 enum "short-wait" { 4313 description "SHORT_WAIT state"; 4314 } 4315 enum "long-wait" { 4316 description "LONG_WAIT state"; 4317 } 4318 } 4319 config false; 4320 description 4321 "Current SPF back-off algorithm state."; 4322 } 4323 leaf remaining-time-to-learn { 4324 type rt-types:timer-value-seconds16; 4325 config false; 4326 description 4327 "Remaining time until time-to-learn timer fires."; 4328 } 4329 leaf remaining-hold-down { 4330 type rt-types:timer-value-seconds16; 4331 config false; 4332 description 4333 "Remaining time until hold-down timer fires."; 4334 } 4335 leaf last-event-received { 4336 type yang:timestamp; 4337 config false; 4338 description 4339 "Time of last SPF triggering event."; 4340 } 4341 leaf next-spf-time { 4342 type yang:timestamp; 4343 config false; 4344 description 4345 "Time when next SPF has been scheduled."; 4346 } 4347 leaf last-spf-time { 4348 type yang:timestamp; 4349 config false; 4350 description 4351 "Time of last SPF computation."; 4352 } 4353 description 4354 "Grouping for IETF SPF delay configuration and state"; 4355 } 4357 grouping node-tag-config { 4358 description 4359 "OSPF node tag config state."; 4360 container node-tags { 4361 if-feature node-tag; 4362 list node-tag { 4363 key tag; 4364 leaf tag { 4365 type uint32; 4366 description 4367 "Node tag value."; 4368 } 4369 description 4370 "List of tags."; 4371 } 4372 description 4373 "Container for node admin tags."; 4374 } 4375 } 4377 grouping instance-config { 4378 description 4379 "OSPF instance config state."; 4381 leaf explicit-router-id { 4382 if-feature explicit-router-id; 4383 type rt-types:router-id; 4384 description 4385 "Defined in RFC 2328. A 32-bit number 4386 that uniquely identifies the router."; 4388 } 4390 container preference { 4391 description "Route preference config state."; 4392 choice scope { 4393 description 4394 "Options for expressing preference 4395 as single or multiple values."; 4396 case single-value { 4397 leaf all { 4398 type uint8; 4399 description 4400 "Preference for intra-area, inter-area, and 4401 external routes."; 4402 } 4403 } 4404 case multi-values { 4405 choice granularity { 4406 description 4407 "Options for expressing preference 4408 for intra-area and inter-area routes."; 4409 case detail { 4410 leaf intra-area { 4411 type uint8; 4412 description 4413 "Preference for intra-area routes."; 4414 } 4415 leaf inter-area { 4416 type uint8; 4417 description 4418 "Preference for inter-area routes."; 4419 } 4420 } 4421 case coarse { 4422 leaf internal { 4423 type uint8; 4424 description 4425 "Preference for both intra-area and 4426 inter-area routes."; 4427 } 4428 } 4429 } 4430 leaf external { 4431 type uint8; 4432 description 4433 "Preference for AS external routes."; 4434 } 4435 } 4437 } 4438 } 4440 container nsr { 4441 if-feature nsr; 4442 description 4443 "Non-Stop Routing (NSR) config state."; 4444 leaf enable { 4445 type boolean; 4446 description 4447 "Enable/Disable NSR."; 4448 } 4449 } 4451 container graceful-restart { 4452 if-feature graceful-restart; 4453 description 4454 "Graceful restart config state."; 4455 reference "RFC 3623 - OSPF Graceful Restart 4456 RFC 5187 - OSPFv3 Graceful Restart"; 4457 leaf enable { 4458 type boolean; 4459 description 4460 "Enable/Disable graceful restart as defined in RFC 3623 4461 for OSPFv2 and RFC 5187 for OSPFv3."; 4462 } 4463 leaf helper-enable { 4464 type boolean; 4465 description 4466 "Enable graceful restart helper support for restarting 4467 routers (RFC 3623 Section 3)."; 4468 } 4469 leaf restart-interval { 4470 type uint16 { 4471 range "1..1800"; 4472 } 4473 units seconds; 4474 default "120"; 4475 description 4476 "Interval to attempt graceful restart prior 4477 to failing (RFC 3623 Section B.1) (seconds)"; 4478 } 4479 leaf helper-strict-lsa-checking { 4480 type boolean; 4481 description 4482 "Terminate graceful restart when an LSA topology change 4483 is detected (RFC 3623 Section B.2)."; 4484 } 4486 } 4488 leaf enable { 4489 if-feature admin-control; 4490 type boolean; 4491 default true; 4492 description 4493 "Enable/Disable the protocol."; 4494 } 4496 container auto-cost { 4497 if-feature auto-cost; 4498 description 4499 "Interface Auto-cost configuration state."; 4500 leaf enable { 4501 type boolean; 4502 description 4503 "Enable/Disable interface auto-cost."; 4504 } 4505 leaf reference-bandwidth { 4506 when "../enable = 'true'" { 4507 description "Only when auto cost is enabled"; 4508 } 4509 type uint32 { 4510 range "1..4294967"; 4511 } 4512 units Mbits; 4513 description 4514 "Configure reference bandwidth used to automatically 4515 determine interface cost (Mbits). The cost is the 4516 reference bandwidth divided by the interface speed 4517 with 1 being the minimum cost."; 4518 } 4519 } 4521 container spf-control { 4522 leaf paths { 4523 if-feature max-ecmp; 4524 type uint16 { 4525 range "1..32"; 4526 } 4527 description 4528 "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; 4529 } 4530 container ietf-spf-delay { 4531 if-feature ietf-spf-delay; 4532 uses ietf-spf-delay; 4533 description 4534 "IETF SPF delay algorithm configuration."; 4535 } 4536 description "SPF calculation control."; 4537 } 4539 container database-control { 4540 leaf max-lsa { 4541 if-feature max-lsa; 4542 type uint32 { 4543 range "1..4294967294"; 4544 } 4545 description 4546 "Maximum number of LSAs OSPF the router will accept."; 4547 } 4548 description "Database maintenance control."; 4549 } 4551 container stub-router { 4552 if-feature stub-router; 4553 description "Set maximum metric configuration"; 4555 choice trigger { 4556 description 4557 "Specific triggers which will enable stub 4558 router state."; 4559 container always { 4560 presence 4561 "Enables unconditional stub router support"; 4562 description 4563 "Unconditional stub router state (advertise 4564 transit links with max metric"; 4565 } 4566 } 4567 } 4569 container mpls { 4570 description 4571 "OSPF MPLS config state."; 4572 container te-rid { 4573 if-feature te-rid; 4574 description 4575 "Stable OSPF Router IP Address used for Traffic 4576 Engineering (TE)"; 4577 leaf ipv4-router-id { 4578 type inet:ipv4-address; 4579 description 4580 "Explicitly configure the TE IPv4 Router ID."; 4581 } 4582 leaf ipv6-router-id { 4583 type inet:ipv6-address; 4584 description 4585 "Explicitly configure the TE IPv6 Router ID."; 4586 } 4587 } 4588 container ldp { 4589 description 4590 "OSPF MPLS LDP config state."; 4591 leaf igp-sync { 4592 if-feature ldp-igp-sync; 4593 type boolean; 4594 description 4595 "Enable LDP IGP synchronization."; 4596 } 4597 } 4598 } 4599 uses instance-fast-reroute-config; 4600 uses node-tag-config; 4601 } 4603 grouping instance-state { 4604 description 4605 "OSPF instance operational state."; 4607 leaf router-id { 4608 type rt-types:router-id; 4609 config false; 4610 description 4611 "Defined in RFC 2328. A 32-bit number 4612 that uniquely identifies the router."; 4613 } 4615 uses local-rib; 4617 container statistics { 4618 config false; 4619 description "Per-instance statistics"; 4620 uses instance-stat; 4621 } 4623 container database { 4624 config false; 4625 description "AS-scope Link State Database."; 4626 list as-scope-lsa-type { 4627 key "lsa-type"; 4628 description "List OSPF AS-scope LSAs."; 4629 leaf lsa-type { 4630 type uint16; 4631 description "OSPF AS scope LSA type."; 4632 } 4633 container as-scope-lsas { 4634 description "All AS-scope of LSA of this LSA type."; 4635 list as-scope-lsa { 4636 key "lsa-id adv-router"; 4637 description "List of OSPF AS-scope LSAs"; 4638 uses lsa-key; 4639 uses lsa { 4640 refine "version/ospfv2/ospfv2" { 4641 must "derived-from-or-self( " 4642 + "../../../../../../" 4643 + "rt:type, 'ospf:ospfv2')" { 4644 description "OSPFv2 LSA."; 4645 } 4646 } 4647 refine "version/ospfv3/ospfv3" { 4648 must "derived-from-or-self( " 4649 + "../../../../../../" 4650 + "rt:type, 'ospf:ospfv3')" { 4651 description "OSPFv3 LSA."; 4652 } 4653 } 4654 } 4655 } 4656 } 4657 } 4658 } 4659 uses spf-log; 4660 uses lsa-log; 4661 } 4663 grouping ospf-config { 4664 description 4665 "OSPF top configuration state - currently empty."; 4666 } 4668 grouping ospf-state { 4669 description 4670 "OSPF top operational state - currently empty."; 4671 } 4673 grouping multi-topology-area-common-config { 4674 description 4675 "OSPF multi-topology area common configuration state."; 4676 leaf summary { 4677 when "derived-from(" 4678 + "../../../../../areas/area[area-id=current()/../area-id]/" 4679 + "area-type, 'stub-nssa-area')" { 4680 description 4681 "Summary advertisement into the stub/NSSA area."; 4682 } 4683 type boolean; 4684 description 4685 "Enable/Disable summary advertisement into the 4686 topology in the stub or NSSA area."; 4687 } 4688 leaf default-cost { 4689 when "derived-from(" 4690 + "../../../../../areas/area[area-id=current()/../area-id]/" 4691 + "area-type, 'stub-nssa-area')" { 4692 description 4693 "Cost for LSA default route advertised into the 4694 topology into the stub or NSSA area."; 4695 } 4696 type ospf-metric; 4697 description 4698 "Set the summary default route cost for a 4699 stub or NSSA area."; 4700 } 4701 } 4703 grouping multi-topology-area-config { 4704 description 4705 "OSPF multi-topology area configuration state."; 4707 uses multi-topology-area-common-config; 4708 uses address-family-area-config; 4709 } 4711 grouping multi-topology-area-state { 4712 description 4713 "OSPF multi-topology area operational state."; 4714 } 4716 grouping multi-topology-config { 4717 description 4718 "OSPF multi-topology configuration state."; 4719 } 4721 grouping multi-topology-state { 4722 description 4723 "OSPF multi-topology operational state."; 4725 uses local-rib; 4727 } 4729 grouping multi-topology-interface-config { 4730 description 4731 "OSPF multi-topology configuration state."; 4733 leaf cost { 4734 type uint32; 4735 description 4736 "Interface cost for this topology."; 4737 } 4738 } 4740 grouping multi-topology-interface-state { 4741 description 4742 "OSPF multi-topology operational state."; 4743 } 4745 grouping ospfv3-interface-config { 4746 description 4747 "OSPFv3 interface specific configuration state."; 4749 leaf instance-id { 4750 type uint8 { 4751 range "0 .. 31"; 4752 } 4753 description 4754 "OSPFv3 instance ID."; 4755 } 4756 } 4758 grouping ospfv3-interface-state { 4759 description 4760 "OSPFv3 interface specific operational state."; 4762 leaf interface-id { 4763 type uint16; 4764 config false; 4765 description 4766 "OSPFv3 interface ID."; 4767 } 4768 } 4770 grouping lsa-identifiers { 4771 description 4772 "The parameters that uniquely identify an LSA."; 4773 leaf area-id { 4774 type area-id-type; 4775 description 4776 "Area ID"; 4777 } 4778 leaf type { 4779 type uint16; 4780 description 4781 "LSA type."; 4782 } 4783 leaf lsa-id { 4784 type yang:dotted-quad; 4785 description "Link-State ID."; 4786 } 4787 leaf adv-router { 4788 type rt-types:router-id; 4789 description 4790 "LSA advertising router."; 4791 } 4792 leaf seq-num { 4793 type uint32; 4794 description 4795 "LSA sequence number."; 4796 } 4797 } 4799 grouping spf-log { 4800 description 4801 "Grouping for SPF log."; 4802 container spf-log { 4803 config false; 4804 description 4805 "This container lists the SPF log."; 4806 list event { 4807 key id; 4808 description 4809 "List of SPF log entries represented 4810 as a wrapping buffer."; 4811 leaf id { 4812 type uint32; 4813 description 4814 "Event identifier - Purely internal value."; 4815 } 4816 leaf spf-type { 4817 type enumeration { 4818 enum full { 4819 description 4820 "SPF computation was a Full SPF."; 4821 } 4822 enum intra { 4823 description 4824 "SPF computation was only for intra-area routes."; 4825 } 4826 enum inter { 4827 description 4828 "SPF computation was only for inter-area 4829 summary routes."; 4830 } 4831 enum external { 4832 description 4833 "SPF computation was only for AS external routes."; 4834 } 4835 } 4836 description 4837 "The SPF computation type for the SPF log entry."; 4838 } 4839 leaf schedule-timestamp { 4840 type yang:timestamp; 4841 description 4842 "This is the timestamp when the computation was 4843 scheduled."; 4844 } 4845 leaf start-timestamp { 4846 type yang:timestamp; 4847 description 4848 "This is the timestamp when the computation was 4849 started."; 4850 } 4851 leaf end-timestamp { 4852 type yang:timestamp; 4853 description 4854 "This the timestamp when the computation was 4855 completed."; 4856 } 4857 list trigger-lsa { 4858 description 4859 "The list of LSAs that triggered the computation."; 4860 uses lsa-identifiers; 4861 } 4862 } 4863 } 4864 } 4866 grouping lsa-log { 4867 description 4868 "Grouping for the LSA log."; 4869 container lsa-log { 4870 config false; 4871 description 4872 "This container lists the LSA log. 4873 Local LSA modifications are also included 4874 in the list."; 4875 list event { 4876 key id; 4877 description 4878 "List of LSA log entries represented 4879 as a wrapping buffer."; 4880 leaf id { 4881 type uint32; 4882 description 4883 "Event identifier - purely internal value."; 4884 } 4885 container lsa { 4886 description 4887 "This container describes the logged LSA."; 4888 uses lsa-identifiers; 4889 } 4890 leaf received-timestamp { 4891 type yang:timestamp; 4892 description 4893 "This is the timestamp when the LSA was received. 4894 In case of local LSA update, the timestamp refers 4895 to the LSA origination time."; 4896 } 4897 leaf reason { 4898 type identityref { 4899 base lsa-log-reason; 4900 } 4901 description 4902 "This reason for the LSA log entry."; 4903 } 4904 } 4905 } 4906 } 4908 augment "/rt:routing/rt:control-plane-protocols/" 4909 + "rt:control-plane-protocol" { 4910 when "derived-from(rt:type, 'ospf:ospf-protocol')" { 4911 description 4912 "This augmentation is only valid for a routing protocol 4913 instance of OSPF (type 'ospfv2' or 'ospfv3')."; 4914 } 4915 description "OSPF protocol ietf-routing module 4916 control-plane-protocol augmentation."; 4918 container ospf { 4919 description 4920 "OSPF protocol Instance"; 4922 uses ospf-config; 4923 uses ospf-state; 4925 leaf address-family { 4926 type iana-rt-types:address-family; 4927 description 4928 "Address-family of the instance."; 4929 } 4931 uses instance-config; 4932 uses instance-state; 4934 container areas { 4935 description "All areas."; 4936 list area { 4937 key "area-id"; 4938 description 4939 "List of OSPF areas"; 4940 leaf area-id { 4941 type area-id-type; 4942 description 4943 "Area ID"; 4944 } 4946 uses area-config; 4947 uses area-state; 4949 container virtual-links { 4950 when "derived-from-or-self(../area-type, 'normal-area') " 4951 + "and ../area-id = '0.0.0.0'" { 4952 description 4953 "Virtual links must be in backbone area."; 4954 } 4955 description "All virtual links."; 4956 list virtual-link { 4957 key "transit-area-id router-id"; 4958 description 4959 "OSPF virtual link"; 4960 leaf transit-area-id { 4961 type leafref { 4962 path "../../../../area/area-id"; 4963 } 4964 must "derived-from-or-self(" 4965 + "../../../../area[area-id=current()]/area-type, " 4966 + "'normal-area') and " 4967 + "../../../../area[area-id=current()]/area-id != " 4968 + "'0.0.0.0'" { 4969 error-message "Virtual link transit area must " 4970 + "be non-zero."; 4971 description 4972 "Virtual-link transit area must be 4973 non-zero area."; 4974 } 4975 description 4976 "Virtual link transit area ID."; 4977 } 4978 leaf router-id { 4979 type rt-types:router-id; 4980 description 4981 "Virtual Link remote endpoint Router ID."; 4982 } 4984 uses virtual-link-config; 4985 uses virtual-link-state; 4986 } 4987 } 4988 container sham-links { 4989 if-feature pe-ce-protocol; 4990 description "All sham links."; 4991 list sham-link { 4992 key "local-id remote-id"; 4993 description 4994 "OSPF sham link"; 4995 leaf local-id { 4996 type inet:ip-address; 4997 description 4998 "Address of the local sham Link endpoint."; 4999 } 5000 leaf remote-id { 5001 type inet:ip-address; 5002 description 5003 "Address of the remote sham Link endpoint."; 5004 } 5005 uses sham-link-config; 5006 uses sham-link-state; 5007 } 5008 } 5009 container interfaces { 5010 description "All interfaces."; 5011 list interface { 5012 key "name"; 5013 description 5014 "List of OSPF interfaces."; 5016 leaf name { 5017 type if:interface-ref; 5018 description 5019 "Interface name reference."; 5020 } 5021 uses interface-config; 5022 uses interface-state; 5023 } 5024 } 5025 } 5026 } 5027 } 5028 } 5030 augment "/rt:routing/rt:control-plane-protocols/" 5031 + "rt:control-plane-protocol/ospf:ospf" { 5032 when "derived-from(../rt:type, 'ospf:ospf-protocol')" { 5033 description 5034 "This augmentation is only valid for OSPF 5035 (type 'ospfv2' or 'ospfv3')."; 5036 } 5037 if-feature multi-topology; 5038 description 5039 "OSPF multi-topology instance configuration 5040 state augmentation."; 5041 container topologies { 5042 description "All topologies."; 5043 list topology { 5044 key "name"; 5045 description 5046 "OSPF topology - The OSPF topology address-family 5047 must coincide with the routing-instance 5048 address-family."; 5049 leaf name { 5050 type leafref { 5051 path "../../../../../../rt:ribs/rt:rib/rt:name"; 5052 } 5053 description "RIB name corresponding to the OSPF 5054 topology."; 5055 } 5057 uses multi-topology-config; 5058 uses multi-topology-state; 5060 container areas { 5061 description "All areas in the topology."; 5062 list area { 5063 key "area-id"; 5064 description 5065 "List of OSPF areas"; 5066 leaf area-id { 5067 type area-id-type; 5068 description 5069 "Area ID."; 5070 } 5071 uses multi-topology-area-config; 5072 uses multi-topology-area-state; 5073 } 5074 } 5075 } 5076 } 5077 } 5079 augment "/rt:routing/rt:control-plane-protocols/" 5080 + "rt:control-plane-protocol/ospf:ospf/" 5081 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 5082 when "derived-from-or-self(../../../../../rt:type, " 5083 + "'ospf:ospfv2')" { 5084 description 5085 "This augmentation is only valid for OSPFv2."; 5086 } 5087 if-feature ospf:multi-topology; 5088 description 5089 "OSPF multi-topology interface configuration state 5090 augmentation."; 5091 container topologies { 5092 description "All topologies for the interface."; 5093 list topology { 5094 key "name"; 5095 description "OSPF interface topology."; 5096 leaf name { 5097 type leafref { 5098 path "../../../../../../../../../../" 5099 + "rt:ribs/rt:rib/rt:name"; 5100 } 5101 description 5102 "Single topology enabled on this interface."; 5103 } 5105 uses multi-topology-interface-config; 5106 uses multi-topology-interface-state; 5107 } 5108 } 5109 } 5111 augment "/rt:routing/rt:control-plane-protocols/" 5112 + "rt:control-plane-protocol/ospf:ospf/" 5113 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 5114 when "derived-from-or-self(../../../../../rt:type, " 5115 + "'ospf:ospfv3')" { 5116 description 5117 "This augmentation is only valid for OSPFv3."; 5118 } 5119 description 5120 "OSPFv3 interface specific configuration state 5121 augmentation."; 5122 uses ospfv3-interface-config; 5123 uses ospfv3-interface-state; 5124 } 5126 grouping route-content { 5127 description 5128 "This grouping defines OSPF-specific route attributes."; 5129 leaf metric { 5130 type uint32; 5131 description "OSPF route metric."; 5132 } 5133 leaf tag { 5134 type uint32; 5135 default "0"; 5136 description "OSPF route tag."; 5137 } 5138 leaf route-type { 5139 type route-type; 5140 description "OSPF route type"; 5141 } 5142 } 5144 augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { 5145 when "derived-from(rt:source-protocol, 'ospf:ospf-protocol')" { 5146 description 5147 "This augmentation is only valid for routes whose 5148 source protocol is OSPF."; 5149 } 5150 description 5151 "OSPF-specific route attributes."; 5152 uses route-content; 5153 } 5155 /* 5156 * RPCs 5157 */ 5159 rpc clear-neighbor { 5160 description 5161 "This RPC request clears a particular set of OSPF neighbors. 5162 If the operation fails for OSPF internal reason, then 5163 error-tag and error-app-tag should be set to a meaningful 5164 value."; 5165 input { 5166 leaf routing-protocol-name { 5167 type leafref { 5168 path "/rt:routing/rt:control-plane-protocols/" 5169 + "rt:control-plane-protocol/rt:name"; 5170 } 5171 mandatory "true"; 5172 description 5173 "OSPF protocol instance which information for neighbors 5174 are to be cleared. 5176 If the referenced OSPF instance doesn't exist, then 5177 this operation SHALL fail with error-tag 'data-missing' 5178 and error-app-tag 5179 'routing-protocol-instance-not-found'."; 5180 } 5182 leaf interface { 5183 type if:interface-ref; 5184 description 5185 "Name of the OSPF interface for which neighbors are to 5186 be cleared. 5188 If the referenced OSPF interface doesn't exist, then 5189 this operation SHALL fail with error-tag 5190 'data-missing' and error-app-tag 5191 'ospf-interface-not-found'."; 5192 } 5193 } 5194 } 5196 rpc clear-database { 5197 description 5198 "This RPC request clears a particular OSPF Link State 5199 Database. If the operation fails for OSPF internal reason, 5200 then error-tag and error-app-tag should be set to a 5201 meaningful value."; 5202 input { 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 mandatory "true"; 5209 description 5210 "OSPF protocol instance whose Link State Database is to 5211 be cleared. 5213 If the referenced OSPF instance doesn't exist, then 5214 this operation SHALL fail with error-tag 'data-missing' 5215 and error-app-tag 5216 'routing-protocol-instance-not-found'."; 5217 } 5218 } 5219 } 5221 /* 5222 * Notifications 5223 */ 5225 grouping notification-instance-hdr { 5226 description 5227 "This grouping describes common instance specific 5228 data for OSPF notifications."; 5230 leaf routing-protocol-name { 5231 type leafref { 5232 path "/rt:routing/rt:control-plane-protocols/" 5233 + "rt:control-plane-protocol/rt:name"; 5234 } 5235 must "derived-from( " 5236 + "/rt:routing/rt:control-plane-protocols/" 5237 + "rt:control-plane-protocol[rt:name=current()]/" 5238 + "rt:type, 'ospf:ospf-protocol')"; 5239 description 5240 "OSPF routing protocol instance name."; 5241 } 5243 leaf address-family { 5244 type leafref { 5245 path "/rt:routing/" 5246 + "rt:control-plane-protocols/rt:control-plane-protocol" 5247 + "[rt:name=current()/../routing-protocol-name]/" 5248 + "ospf:ospf/address-family"; 5249 } 5250 description 5251 "Address family of the OSPF instance."; 5252 } 5253 } 5255 grouping notification-interface { 5256 description 5257 "This grouping provides interface information 5258 for the OSPF interface specific notification."; 5260 choice if-link-type-selection { 5261 description 5262 "Options for link type."; 5263 container interface { 5264 description "Normal interface."; 5265 leaf interface { 5266 type if:interface-ref; 5267 description "Interface."; 5268 } 5269 } 5270 container virtual-link { 5271 description "virtual-link."; 5272 leaf transit-area-id { 5273 type area-id-type; 5274 description "Area ID."; 5275 } 5276 leaf neighbor-router-id { 5277 type rt-types:router-id; 5278 description "Neighbor Router ID."; 5279 } 5280 } 5281 container sham-link { 5282 description "sham link."; 5283 leaf area-id { 5284 type area-id-type; 5285 description "Area ID."; 5286 } 5287 leaf local-ip-addr { 5288 type inet:ip-address; 5289 description "Sham link local address."; 5290 } 5291 leaf remote-ip-addr { 5292 type inet:ip-address; 5293 description "Sham link remote address."; 5294 } 5295 } 5296 } 5297 } 5299 grouping notification-neighbor { 5300 description 5301 "This grouping provides the neighbor information 5302 for neighbor specific notifications."; 5304 leaf neighbor-router-id { 5305 type rt-types:router-id; 5306 description "Neighbor Router ID."; 5307 } 5309 leaf neighbor-ip-addr { 5310 type yang:dotted-quad; 5311 description "Neighbor address."; 5312 } 5313 } 5315 notification if-state-change { 5316 uses notification-instance-hdr; 5317 uses notification-interface; 5319 leaf state { 5320 type if-state-type; 5321 description "Interface state."; 5322 } 5323 description 5324 "This notification is sent when an interface 5325 state change is detected."; 5326 } 5328 notification if-config-error { 5329 uses notification-instance-hdr; 5330 uses notification-interface; 5332 leaf packet-source { 5333 type yang:dotted-quad; 5334 description "Source address."; 5335 } 5337 leaf packet-type { 5338 type packet-type; 5339 description "OSPF packet type."; 5340 } 5342 leaf error { 5343 type enumeration { 5344 enum "bad-version" { 5345 description "Bad version."; 5346 } 5347 enum "area-mismatch" { 5348 description "Area mismatch."; 5349 } 5350 enum "unknown-nbma-nbr" { 5351 description "Unknown NBMA neighbor."; 5353 } 5354 enum "unknown-virtual-nbr" { 5355 description "Unknown virtual link neighbor."; 5356 } 5357 enum "auth-type-mismatch" { 5358 description "Auth type mismatch."; 5359 } 5360 enum "auth-failure" { 5361 description "Auth failure."; 5362 } 5363 enum "net-mask-mismatch" { 5364 description "Network mask mismatch."; 5365 } 5366 enum "hello-interval-mismatch" { 5367 description "Hello interval mismatch."; 5368 } 5369 enum "dead-interval-mismatch" { 5370 description "Dead interval mismatch."; 5371 } 5372 enum "option-mismatch" { 5373 description "Option mismatch."; 5374 } 5375 enum "mtu-mismatch" { 5376 description "MTU mismatch."; 5377 } 5378 enum "duplicate-router-id" { 5379 description "Duplicate Router ID."; 5380 } 5381 enum "no-error" { 5382 description "No error."; 5383 } 5384 } 5385 description "Error code."; 5386 } 5387 description 5388 "This notification is sent when an interface 5389 config error is detected."; 5390 } 5392 notification nbr-state-change { 5393 uses notification-instance-hdr; 5394 uses notification-interface; 5395 uses notification-neighbor; 5397 leaf state { 5398 type nbr-state-type; 5399 description "Neighbor state."; 5400 } 5401 description 5402 "This notification is sent when aa neighbor 5403 state change is detected."; 5404 } 5406 notification nbr-restart-helper-status-change { 5407 uses notification-instance-hdr; 5408 uses notification-interface; 5409 uses notification-neighbor; 5411 leaf status { 5412 type restart-helper-status-type; 5413 description "Restart helper status."; 5414 } 5416 leaf age { 5417 type uint32; 5418 units seconds; 5419 description 5420 "Remaining time in current OSPF graceful restart 5421 interval when the router is acting as a restart 5422 helper for the neighbor."; 5423 } 5425 leaf exit-reason { 5426 type restart-exit-reason-type; 5427 description 5428 "Restart helper exit reason."; 5429 } 5430 description 5431 "This notification is sent when a neighbor restart 5432 helper status change is detected."; 5433 } 5435 notification if-rx-bad-packet { 5436 uses notification-instance-hdr; 5437 uses notification-interface; 5439 leaf packet-source { 5440 type yang:dotted-quad; 5441 description "Source address."; 5442 } 5444 leaf packet-type { 5445 type packet-type; 5446 description "OSPF packet type."; 5447 } 5448 description 5449 "This notification is sent when an OSPF packet that 5450 cannot be parsed is received on an OSPF interface."; 5451 } 5453 notification lsdb-approaching-overflow { 5454 uses notification-instance-hdr; 5456 leaf ext-lsdb-limit { 5457 type uint32; 5458 description 5459 "The maximum number of non-default AS-external LSAs 5460 entries that can be stored in the Link State Database."; 5461 } 5463 description 5464 "This notification is sent when the number of LSAs 5465 in the router's Link State Database has exceeded 5466 ninety percent of the AS-external limit (ext-lsdb-limit)."; 5467 } 5469 notification lsdb-overflow { 5470 uses notification-instance-hdr; 5472 leaf ext-lsdb-limit { 5473 type uint32; 5474 description 5475 "The maximum number of non-default AS-external LSAs 5476 entries that can be stored in the Link State Database."; 5477 } 5479 description 5480 "This notification is sent when the number of LSAs 5481 in the router's Link State Database has exceeded the 5482 AS-external limit (ext-lsdb-limit)."; 5483 } 5485 notification nssa-translator-status-change { 5486 uses notification-instance-hdr; 5488 leaf area-id { 5489 type area-id-type; 5490 description "Area ID."; 5491 } 5493 leaf status { 5494 type nssa-translator-state-type; 5495 description 5496 "NSSA translator status."; 5497 } 5499 description 5500 "This notification is sent when there is a change 5501 in the router's role in translating OSPF NSSA LSAs 5502 to OSPF AS-External LSAs."; 5503 } 5505 notification restart-status-change { 5506 uses notification-instance-hdr; 5508 leaf status { 5509 type restart-status-type; 5510 description 5511 "Restart status."; 5512 } 5514 leaf restart-interval { 5515 type uint16 { 5516 range "1..1800"; 5517 } 5518 units seconds; 5519 default "120"; 5520 description 5521 "Restart interval."; 5522 } 5524 leaf exit-reason { 5525 type restart-exit-reason-type; 5526 description 5527 "Restart exit reason."; 5528 } 5530 description 5531 "This notification is sent when the graceful restart 5532 state for the router has changed."; 5533 } 5534 } 5535 5537 4. Security Considerations 5539 The YANG modules specified in this document define a schema for data 5540 that is designed to be accessed via network management protocols such 5541 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 5542 is the secure transport layer, and the mandatory-to-implement secure 5543 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 5544 is HTTPS, and the mandatory-to-implement secure transport is TLS 5545 [RFC8446]. 5547 The NETCONF access control model [RFC8341] provides the means to 5548 restrict access for particular NETCONF or RESTCONF users to a pre- 5549 configured subset of all available NETCONF or RESTCONF protocol 5550 operations and content. 5552 There are a number of data nodes defined in ietf-ospf.yang module 5553 that are writable/creatable/deletable (i.e., config true, which is 5554 the default). These data nodes may be considered sensitive or 5555 vulnerable in some network environments. Write operations (e.g., 5556 edit-config) to these data nodes without proper protection can have a 5557 negative effect on network operations. For OSPF, the ability to 5558 modify OSPF configuration will allow the entire OSPF domain to be 5559 compromised including peering with unauthorized routers to misroute 5560 traffic or mount a massive Denial-of-Service (DoS) attack. The 5561 security considerations of OSPFv2 [RFC2328] and [RFC5340] apply to 5562 the ietf-ospf.yang module as well. 5564 Some of the readable data nodes in the ietf-ospf.yang module may be 5565 considered sensitive or vulnerable in some network environments. It 5566 is thus important to control read access (e.g., via get, get-config, 5567 or notification) to these data nodes. The exposure of the Link State 5568 Database (LSDB) will expose the detailed topology of the network. 5569 This may be undesirable since both due to the fact that exposure may 5570 facilitate other attacks. Additionally, network operators may 5571 consider their topologies to be sensitive confidential data. 5573 For OSPF authentication, configuration is supported via the 5574 specification of key-chains [RFC8177] or the direct specification of 5575 key and authentication algorithm. Hence, authentication 5576 configuration using the "auth-table-trailer" case in the 5577 "authentication" container inherits the security considerations of 5578 [RFC8177]. This includes the considerations with respect to the 5579 local storage and handling of authentication keys. 5581 Some of the RPC operations in this YANG module may be considered 5582 sensitive or vulnerable in some network environments. It is thus 5583 important to control access to these operations. The OSPF YANG 5584 module support the "clear-neighbor" and "clear-database" RPCs. If 5585 access to either of these is compromised, they can result in 5586 temporary network outages be employed to mount DoS attacks. 5588 5. IANA Considerations 5590 This document registers a URI in the IETF XML registry [RFC3688]. 5591 Following the format in [RFC3688], the following registration is 5592 requested to be made: 5594 URI: urn:ietf:params:xml:ns:yang:ietf-ospf 5595 Registrant Contact: The IESG. 5596 XML: N/A, the requested URI is an XML namespace. 5598 This document registers a YANG module in the YANG Module Names 5599 registry [RFC6020]. 5601 name: ietf-ospf 5602 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf 5603 prefix: ospf 5604 reference: RFC XXXX 5606 6. Acknowledgements 5608 The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, 5609 Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and 5610 Alan Davey for their thorough reviews and helpful comments. 5612 Thanks to Tom Petch for last call review and improvement of the 5613 document organization. 5615 This document was produced using Marshall Rose's xml2rfc tool. 5617 Author affiliation with The MITRE Corporation is provided for 5618 identification purposes only, and is not intended to convey or imply 5619 MITRE's concurrence with, or support for, the positions, opinions or 5620 viewpoints expressed. MITRE has approved this document for Public 5621 Release, Distribution Unlimited, with Public Release Case Number 5622 18-3194. 5624 7. References 5626 7.1. Normative References 5628 [I-D.ietf-bfd-yang] 5629 Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and 5630 G. Mirsky, "YANG Data Model for Bidirectional Forwarding 5631 Detection (BFD)", draft-ietf-bfd-yang-17 (work in 5632 progress), August 2018. 5634 [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", 5635 RFC 1793, DOI 10.17487/RFC1793, April 1995, 5636 . 5638 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 5639 Requirement Levels", BCP 14, RFC 2119, 5640 DOI 10.17487/RFC2119, March 1997, . 5643 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 5644 DOI 10.17487/RFC2328, April 1998, . 5647 [RFC3101] Murphy, P., "The OSPF Not-So-Stubby Area (NSSA) Option", 5648 RFC 3101, DOI 10.17487/RFC3101, January 2003, 5649 . 5651 [RFC3623] Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF 5652 Restart", RFC 3623, DOI 10.17487/RFC3623, November 2003, 5653 . 5655 [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering 5656 (TE) Extensions to OSPF Version 2", RFC 3630, 5657 DOI 10.17487/RFC3630, September 2003, . 5660 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 5661 DOI 10.17487/RFC3688, January 2004, . 5664 [RFC4552] Gupta, M. and N. Melam, "Authentication/Confidentiality 5665 for OSPFv3", RFC 4552, DOI 10.17487/RFC4552, June 2006, 5666 . 5668 [RFC4576] Rosen, E., Psenak, P., and P. Pillay-Esnault, "Using a 5669 Link State Advertisement (LSA) Options Bit to Prevent 5670 Looping in BGP/MPLS IP Virtual Private Networks (VPNs)", 5671 RFC 4576, DOI 10.17487/RFC4576, June 2006, 5672 . 5674 [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the 5675 Provider/Customer Edge Protocol for BGP/MPLS IP Virtual 5676 Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, 5677 June 2006, . 5679 [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., 5680 Coltun, R., and F. Baker, "OSPF Version 2 Management 5681 Information Base", RFC 4750, DOI 10.17487/RFC4750, 5682 December 2006, . 5684 [RFC4915] Psenak, P., Mirtorabi, S., Roy, A., Nguyen, L., and P. 5685 Pillay-Esnault, "Multi-Topology (MT) Routing in OSPF", 5686 RFC 4915, DOI 10.17487/RFC4915, June 2007, 5687 . 5689 [RFC5082] Gill, V., Heasley, J., Meyer, D., Savola, P., Ed., and C. 5690 Pignataro, "The Generalized TTL Security Mechanism 5691 (GTSM)", RFC 5082, DOI 10.17487/RFC5082, October 2007, 5692 . 5694 [RFC5185] Mirtorabi, S., Psenak, P., Lindem, A., Ed., and A. Oswal, 5695 "OSPF Multi-Area Adjacency", RFC 5185, 5696 DOI 10.17487/RFC5185, May 2008, . 5699 [RFC5187] Pillay-Esnault, P. and A. Lindem, "OSPFv3 Graceful 5700 Restart", RFC 5187, DOI 10.17487/RFC5187, June 2008, 5701 . 5703 [RFC5250] Berger, L., Bryskin, I., Zinin, A., and R. Coltun, "The 5704 OSPF Opaque LSA Option", RFC 5250, DOI 10.17487/RFC5250, 5705 July 2008, . 5707 [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for 5708 IP Fast Reroute: Loop-Free Alternates", RFC 5286, 5709 DOI 10.17487/RFC5286, September 2008, . 5712 [RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed., 5713 "Traffic Engineering Extensions to OSPF Version 3", 5714 RFC 5329, DOI 10.17487/RFC5329, September 2008, 5715 . 5717 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 5718 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 5719 . 5721 [RFC5613] Zinin, A., Roy, A., Nguyen, L., Friedman, B., and D. 5722 Yeung, "OSPF Link-Local Signaling", RFC 5613, 5723 DOI 10.17487/RFC5613, August 2009, . 5726 [RFC5642] Venkata, S., Harwani, S., Pignataro, C., and D. McPherson, 5727 "Dynamic Hostname Exchange Mechanism for OSPF", RFC 5642, 5728 DOI 10.17487/RFC5642, August 2009, . 5731 [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information 5732 Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August 5733 2009, . 5735 [RFC5709] Bhatia, M., Manral, V., Fanto, M., White, R., Barnes, M., 5736 Li, T., and R. Atkinson, "OSPFv2 HMAC-SHA Cryptographic 5737 Authentication", RFC 5709, DOI 10.17487/RFC5709, October 5738 2009, . 5740 [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and 5741 R. Aggarwal, "Support of Address Families in OSPFv3", 5742 RFC 5838, DOI 10.17487/RFC5838, April 2010, 5743 . 5745 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5746 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 5747 . 5749 [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 5750 (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, 5751 DOI 10.17487/RFC5881, June 2010, . 5754 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 5755 the Network Configuration Protocol (NETCONF)", RFC 6020, 5756 DOI 10.17487/RFC6020, October 2010, . 5759 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 5760 and A. Bierman, Ed., "Network Configuration Protocol 5761 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 5762 . 5764 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 5765 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 5766 . 5768 [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and 5769 M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge 5770 (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, 5771 June 2012, . 5773 [RFC6845] Sheth, N., Wang, L., and J. Zhang, "OSPF Hybrid Broadcast 5774 and Point-to-Multipoint Interface Type", RFC 6845, 5775 DOI 10.17487/RFC6845, January 2013, . 5778 [RFC6860] Yang, Y., Retana, A., and A. Roy, "Hiding Transit-Only 5779 Networks in OSPF", RFC 6860, DOI 10.17487/RFC6860, January 5780 2013, . 5782 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 5783 RFC 6991, DOI 10.17487/RFC6991, July 2013, 5784 . 5786 [RFC7166] Bhatia, M., Manral, V., and A. Lindem, "Supporting 5787 Authentication Trailer for OSPFv3", RFC 7166, 5788 DOI 10.17487/RFC7166, March 2014, . 5791 [RFC7474] Bhatia, M., Hartman, S., Zhang, D., and A. Lindem, Ed., 5792 "Security Extension for OSPFv2 When Using Manual Key 5793 Management", RFC 7474, DOI 10.17487/RFC7474, April 2015, 5794 . 5796 [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. 5797 So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", 5798 RFC 7490, DOI 10.17487/RFC7490, April 2015, 5799 . 5801 [RFC7684] Psenak, P., Gredler, H., Shakir, R., Henderickx, W., 5802 Tantsura, J., and A. Lindem, "OSPFv2 Prefix/Link Attribute 5803 Advertisement", RFC 7684, DOI 10.17487/RFC7684, November 5804 2015, . 5806 [RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and 5807 S. Shaffer, "Extensions to OSPF for Advertising Optional 5808 Router Capabilities", RFC 7770, DOI 10.17487/RFC7770, 5809 February 2016, . 5811 [RFC7777] Hegde, S., Shakir, R., Smirnov, A., Li, Z., and B. 5812 Decraene, "Advertising Node Administrative Tags in OSPF", 5813 RFC 7777, DOI 10.17487/RFC7777, March 2016, 5814 . 5816 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 5817 RFC 7950, DOI 10.17487/RFC7950, August 2016, 5818 . 5820 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 5821 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 5822 . 5824 [RFC8042] Zhang, Z., Wang, L., and A. Lindem, "OSPF Two-Part 5825 Metric", RFC 8042, DOI 10.17487/RFC8042, December 2016, 5826 . 5828 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 5829 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 5830 May 2017, . 5832 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 5833 Zhang, "YANG Data Model for Key Chains", RFC 8177, 5834 DOI 10.17487/RFC8177, June 2017, . 5837 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 5838 "Common YANG Data Types for the Routing Area", RFC 8294, 5839 DOI 10.17487/RFC8294, December 2017, . 5842 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 5843 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 5844 . 5846 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 5847 Access Control Model", STD 91, RFC 8341, 5848 DOI 10.17487/RFC8341, March 2018, . 5851 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 5852 and R. Wilton, "Network Management Datastore Architecture 5853 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 5854 . 5856 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 5857 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 5858 . 5860 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 5861 Routing Management (NMDA Version)", RFC 8349, 5862 DOI 10.17487/RFC8349, March 2018, . 5865 [RFC8405] Decraene, B., Litkowski, S., Gredler, H., Lindem, A., 5866 Francois, P., and C. Bowers, "Shortest Path First (SPF) 5867 Back-Off Delay Algorithm for Link-State IGPs", RFC 8405, 5868 DOI 10.17487/RFC8405, June 2018, . 5871 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 5872 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 5873 . 5875 [RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, 5876 "Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, 5877 DOI 10.17487/RFC8476, December 2018, . 5880 7.2. Informative References 5882 [RFC0905] "ISO Transport Protocol specification ISO DP 8073", 5883 RFC 905, DOI 10.17487/RFC0905, April 1984, 5884 . 5886 [RFC1765] Moy, J., "OSPF Database Overflow", RFC 1765, 5887 DOI 10.17487/RFC1765, March 1995, . 5890 [RFC4973] Srisuresh, P. and P. Joseph, "OSPF-xTE: Experimental 5891 Extension to OSPF for Traffic Engineering", RFC 4973, 5892 DOI 10.17487/RFC4973, July 2007, . 5895 [RFC5309] Shen, N., Ed. and A. Zinin, Ed., "Point-to-Point Operation 5896 over LAN in Link State Routing Protocols", RFC 5309, 5897 DOI 10.17487/RFC5309, October 2008, . 5900 [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP 5901 Synchronization", RFC 5443, DOI 10.17487/RFC5443, March 5902 2009, . 5904 [RFC5714] Shand, M. and S. Bryant, "IP Fast Reroute Framework", 5905 RFC 5714, DOI 10.17487/RFC5714, January 2010, 5906 . 5908 [RFC6987] Retana, A., Nguyen, L., Zinin, A., White, R., and D. 5909 McPherson, "OSPF Stub Router Advertisement", RFC 6987, 5910 DOI 10.17487/RFC6987, September 2013, . 5913 Appendix A. Contributors' Addresses 5915 Dean Bogdanovic 5916 Volta Networks, Inc. 5918 EMail: dean@voltanet.io 5920 Kiran Koushik Agrahara Sreenivasa 5921 Verizon 5922 500 W Dove Rd 5923 Southlake, TX 76092 5924 USA 5926 EMail: kk@employees.org 5928 Authors' Addresses 5930 Derek Yeung 5931 Arrcus 5933 EMail: derek@arrcus.com 5935 Yingzhen Qu 5936 Huawei 5937 2330 Central Expressway 5938 Santa Clara, CA 95050 5939 USA 5941 EMail: yingzhen.qu@huawei.com 5943 Jeffrey Zhang 5944 Juniper Networks 5945 10 Technology Park Drive 5946 Westford, MA 01886 5947 USA 5949 EMail: zzhang@juniper.net 5951 Ing-Wher Chen 5952 The MITRE Corporation 5954 EMail: ingwherchen@mitre.org 5955 Acee Lindem 5956 Cisco Systems 5957 301 Midenhall Way 5958 Cary, NC 27513 5960 EMail: acee@cisco.com