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