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