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