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