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