idnits 2.17.1 draft-ietf-lsr-ospf-yang-augmentation-v1-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 143 has weird spacing: '...face-id ine...' == The document seems to use 'NOT RECOMMENDED' as an RFC 2119 keyword, but does not include the phrase in its RFC 2119 key words list. -- The document date (June 21, 2021) is 1038 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 (-26) exists of draft-ietf-lsr-flex-algo-15 ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) ** Obsolete normative reference: RFC 8920 (Obsoleted by RFC 9492) Summary: 4 errors (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet A. Lindem 3 Internet-Draft Cisco Systems 4 Intended status: Standards Track Y. Qu 5 Expires: December 23, 2021 Futurewei 6 June 21, 2021 8 OSPF YANG Model Augmentations for Additional Features - Version 1 9 draft-ietf-lsr-ospf-yang-augmentation-v1-05 11 Abstract 13 This document defines YANG data modules augmenting the IETF OSPF YANG 14 model to provide support for Traffic Engineering Extensions to OSPF 15 Version 3 as defined in RF 5329, OSPF Two-Part Metric as defined in 16 RFC 8042, OSPF Graceful Link Shutdown as defined in RFC 8379, OSPF 17 Link-Local Signaling (LLS) Extensions for Local Interface ID 18 Advertisement as defined in RFC 8510 and OSPF Flexible Algorithm. 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at https://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on December 23, 2021. 37 Copyright Notice 39 Copyright (c) 2021 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (https://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 55 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 56 2. YANG Module for Traffic Engineering Extesions to OSPF Version 57 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 58 3. YANG Module for OSPF Two-Part Metric . . . . . . . . . . . . 8 59 4. YANG Module for OSPF Graceful Link Shutdown . . . . . . . . . 13 60 5. YANG Module for OSPF LLS Extenstion for Local Interface ID 61 Advertisement . . . . . . . . . . . . . . . . . . . . . . . . 18 62 6. YANG Module for OSPF Application-Specific Link Attributes . . 20 63 7. YANG Module for OSPF Flexible Algorithm . . . . . . . . . . . 26 64 8. Security Considerations . . . . . . . . . . . . . . . . . . . 46 65 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 66 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 48 67 11. Normative References . . . . . . . . . . . . . . . . . . . . 48 68 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 70 1. Overview 72 YANG [RFC6020] [RFC7950] is a data definition language used to define 73 the contents of a conceptual data store that allows networked devices 74 to be managed using NETCONF [RFC6241]. YANG is proving relevant 75 beyond its initial confines, as bindings to other interfaces (e.g., 76 ReST) and encodings other than XML (e.g., JSON) are being defined. 77 Furthermore, YANG data models can be used as the basis for 78 implementation of other interfaces, such as CLI and programmatic 79 APIs. 81 This document defines YANG data modules augmenting the IETF OSPF YANG 82 model [I-D.ietf-ospf-yang], which itself augments [RFC8349], to 83 provide support for configuration and operational state for the 84 following OSPF features: 86 RFC5329: Traffic Engineering Extensions to OSPF Version 3 [RFC5329]. 88 RFC8042: OSPF Two-Part Metric [RFC8042]. 90 RFC8379: OSPF Graceful Link Shutdown [RFC8379]. 92 RFC8510: OSPF Link-Local Signaling (LLS) Extensions for Local 93 Interface ID Advertisement [RFC8510]. 95 RFC8920: OSPF Application-Specific Link Attributes [RFC8920]. 97 RFCxxxx: IGP Flexible Algorithm [I-D.ietf-lsr-flex-algo]. 99 The augmentations defined in this document requires support for the 100 OSPF base model[I-D.ietf-ospf-yang] which defines basic OSPF 101 configuration and state. The OSPF YANG model augments the ietf- 102 routing YANG model defined in [RFC8022]. 104 1.1. Requirements Language 106 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 107 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 108 document are to be interpreted as described in [RFC2119]. 110 2. YANG Module for Traffic Engineering Extesions to OSPF Version 3 112 This document defines a YANG module for Traffic Engineering 113 Extensions to OSPF Version 3 as defined in [RFC5329]. It is an 114 augmentation of the OSPF base model. 116 module: ietf-ospfv3-te 117 augment /rt:routing/rt:control-plane-protocols 118 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 119 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 120 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 121 /ospf:body: 122 +--ro ospfv3-intra-area-te 123 +--ro router-address-tlv 124 | +--ro router-address? inet:ipv6-address 125 +--ro link-tlv 126 +--ro link-type ospf:router-link-type 127 +--ro local-if-ipv6-addrs 128 | +--ro local-if-ipv6-addr* inet:ipv6-address 129 +--ro remote-if-ipv6-addrs 130 | +--ro remote-if-ipv6-addr* inet:ipv6-address 131 +--ro te-metric? uint32 132 +--ro max-bandwidth? 133 | rt-types:bandwidth-ieee-float32 134 +--ro max-reservable-bandwidth? 135 | rt-types:bandwidth-ieee-float32 136 +--ro unreserved-bandwidths 137 | +--ro unreserved-bandwidth* 138 | +--ro priority? uint8 139 | +--ro unreserved-bandwidth? 140 | rt-types:bandwidth-ieee-float32 141 +--ro admin-group? uint32 142 +--ro neighbor-id 143 | +--ro nbr-interface-id inet:ipv4-address 144 | +--ro nbr-router-id yang:dotted-quad 145 +--ro unknown-tlvs 146 +--ro unknown-tlv* 147 +--ro type? uint16 148 +--ro length? uint16 149 +--ro value? yang:hex-string 151 file "ietf-ospfv3-te@2020-04-24.yang" 152 module ietf-ospfv3-te { 153 yang-version 1.1; 154 namespace "urn:ietf:params:xml:ns:yang:ietf-ospfv3-te"; 156 prefix ospfv3-te; 158 import ietf-inet-types { 159 prefix "inet"; 160 reference "RFC 6991: Common YANG Data Types"; 161 } 163 import ietf-yang-types { 164 prefix "yang"; 165 reference "RFC 6991: Common YANG Data Types"; 166 } 168 import ietf-routing-types { 169 prefix "rt-types"; 170 reference "RFC 8294: Common YANG Data Types for the 171 Routing Area"; 172 } 174 import ietf-routing { 175 prefix "rt"; 176 } 178 import ietf-ospf { 179 prefix "ospf"; 180 } 182 organization 183 "IETF LSR - Link State Routing Working Group"; 185 contact 186 "WG Web: 187 WG List: 189 Author: Yingzhen Qu 190 191 Author: Acee Lindem 192 "; 194 description 195 "This YANG module defines the configuration and operational 196 state for OSPFv3 extensions to support intra-area Traffic 197 Engineering (TE) as defined in RFC 5329. 199 Copyright (c) 2019 IETF Trust and the persons identified as 200 authors of the code. All rights reserved. 202 Redistribution and use in source and binary forms, with or 203 without modification, is permitted pursuant to, and subject 204 to the license terms contained in, the Simplified BSD License 205 set forth in Section 4.c of the IETF Trust's Legal Provisions 206 Relating to IETF Documents 207 (http://trustee.ietf.org/license-info). 209 This version of this YANG module is part of RFC XXXX; 210 see the RFC itself for full legal notices."; 212 reference "RFC XXXX"; 214 revision 2020-04-24 { 215 description 216 "Initial version"; 217 reference 218 "RFC XXXX: A YANG Data Model for OSPFv3 TE."; 219 } 221 identity ospfv3-intra-area-te-lsa { 222 base ospf:ospfv3-lsa-type; 223 description 224 "OSPFv3 Intrea-area TE LSA."; 225 } 227 grouping ospfv3-intra-area-te { 228 description "Grouping for OSPFv3 intra-area-te-lsa."; 229 container ospfv3-intra-area-te { 230 container router-address-tlv { 231 description "The router IPv6 address tlv advertises a 232 reachable IPv6 address."; 233 leaf router-address { 234 type inet:ipv6-address; 235 description 236 "Router IPv6 address."; 237 } 238 } 240 container link-tlv { 241 description "Describes a singel link, and it is constructed 242 of a set of Sub-TLVs."; 243 leaf link-type { 244 type ospf:router-link-type; 245 mandatory true; 246 description "Link type."; 247 } 249 container local-if-ipv6-addrs { 250 description "All local interface IPv6 addresses."; 251 leaf-list local-if-ipv6-addr { 252 type inet:ipv6-address; 253 description 254 "List of local interface IPv6 addresses."; 255 } 256 } 258 container remote-if-ipv6-addrs { 259 description "All remote interface IPv6 addresses."; 260 leaf-list remote-if-ipv6-addr { 261 type inet:ipv6-address; 262 description 263 "List of remote interface IPv6 addresses."; 264 } 265 } 267 leaf te-metric { 268 type uint32; 269 description "TE metric."; 270 } 272 leaf max-bandwidth { 273 type rt-types:bandwidth-ieee-float32; 274 description "Maximum bandwidth."; 275 } 277 leaf max-reservable-bandwidth { 278 type rt-types:bandwidth-ieee-float32; 279 description "Maximum reservable bandwidth."; 280 } 282 container unreserved-bandwidths { 283 description "All unreserved bandwidths."; 284 list unreserved-bandwidth { 285 leaf priority { 286 type uint8 { 287 range "0 .. 7"; 288 } 289 description "Priority from 0 to 7."; 290 } 291 leaf unreserved-bandwidth { 292 type rt-types:bandwidth-ieee-float32; 293 description "Unreserved bandwidth."; 294 } 295 description 296 "List of unreserved bandwidths for different 297 priorities."; 298 } 299 } 301 leaf admin-group { 302 type uint32; 303 description 304 "Administrative group/Resource Class/Color."; 305 } 307 container neighbor-id { 308 description "Neighbor link identitification."; 309 leaf nbr-interface-id { 310 type inet:ipv4-address; 311 mandatory true; 312 description "The neighbor's interface ID."; 313 } 314 leaf nbr-router-id { 315 type yang:dotted-quad; 316 mandatory true; 317 description "The neighbor's router ID."; 318 } 319 } 321 uses ospf:unknown-tlvs; 322 } 324 description "OSPFv3 Intra-Area-TE-LSA."; 325 reference "RFC 5329: Traffic Engineering Extensions to OSPF 326 : Version 3."; 327 } 328 } 330 augment "/rt:routing/" 331 + "rt:control-plane-protocols/rt:control-plane-protocol/" 332 + "ospf:ospf/ospf:areas/" 333 + "ospf:area/ospf:database/" 334 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 335 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 336 + "ospf:ospfv3/ospf:body" { 337 when "../../../../../../../../../" 338 + "rt:type = 'ospf:ospfv3'" { 339 description 340 "This augmentation is only valid for OSPFv3."; 341 } 342 description 343 "OSPFv3 Intrea-Area-TE-LSA."; 345 uses ospfv3-intra-area-te; 346 } 347 } 348 350 3. YANG Module for OSPF Two-Part Metric 352 This document defines a YANG module for OSPF Two-Part Metric feature 353 as defined in [RFC8042]. It is an augmentation of the OSPF base 354 model. 356 module: ietf-ospf-two-part-metric 357 augment /rt:routing/rt:control-plane-protocols 358 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 359 /ospf:interfaces/ospf:interface: 360 +--rw two-part-metric 361 +--rw enable? boolean 362 +--rw int-input-cost? ospf:ospf-link-metric 363 augment /rt:routing/rt:control-plane-protocols 364 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 365 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 366 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 367 /ospf:body/ospf:opaque/ospf:extended-link-opaque 368 /ospf:extended-link-tlv: 369 +--ro network-to-router-metric-sub-tlvs 370 +--ro net-to-rtr-sub-tlv* 371 +--ro mt-id? uint8 372 +--ro mt-metric? uint16 373 augment /rt:routing/rt:control-plane-protocols 374 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 375 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 376 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 377 /ospf:body/ospf:opaque/ospf:te-opaque/ospf:link-tlv: 378 +--ro network-to-router-te-metric? uint32 379 augment /rt:routing/rt:control-plane-protocols 380 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 381 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 382 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 383 /ospf:body/ospfv3-te:ospfv3-intra-area-te/ospfv3-te:link-tlv: 384 +--ro network-to-router-te-metric? uint32 386 file "ietf-ospf-two-part-metric@2020-04-24.yang" 387 module ietf-ospf-two-part-metric { 388 yang-version 1.1; 389 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-two-part-metric"; 391 prefix ospf-two-metric; 393 import ietf-routing { 394 prefix "rt"; 395 } 397 import ietf-ospf { 398 prefix "ospf"; 399 } 401 import ietf-ospfv3-te { 402 prefix "ospfv3-te"; 403 } 404 organization 405 "IETF LSR - Link State Routing Working Group"; 407 contact 408 "WG Web: 409 WG List: 411 Author: Yingzhen Qu 412 413 Author: Acee Lindem 414 "; 416 description 417 "This YANG module defines the configuration and operational 418 state for OSPF Two-Part Metric feature as defined in RFC 8042. 420 Copyright (c) 2019 IETF Trust and the persons identified as 421 authors of the code. All rights reserved. 423 Redistribution and use in source and binary forms, with or 424 without modification, is permitted pursuant to, and subject 425 to the license terms contained in, the Simplified BSD License 426 set forth in Section 4.c of the IETF Trust's Legal Provisions 427 Relating to IETF Documents 428 (http://trustee.ietf.org/license-info). 430 This version of this YANG module is part of RFC XXXX; 431 see the RFC itself for full legal notices."; 433 reference "RFC XXXX"; 435 revision 2020-04-24 { 436 description 437 "Initial version"; 438 reference 439 "RFC XXXX: A YANG Data Model for OSPF."; 440 } 442 identity two-part-metric { 443 base ospf:informational-capability; 444 description 445 "When set, the router is capable of supporting OSPF 446 two-part metrics."; 447 reference 448 "RFC 8042: OSPF Two-Part Metric"; 449 } 451 /* RFC 8042 */ 452 augment "/rt:routing/rt:control-plane-protocols/" 453 + "rt:control-plane-protocol/ospf:ospf/" 454 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 455 when "../../../../../rt:type = 'ospf:ospfv2' or " 456 + "../../../../../rt:type = 'ospf:ospfv3'" { 457 description 458 "This augments the OSPF interface configuration 459 when used."; 460 } 461 description 462 "This augments the OSPF protocol interface 463 configuration with two-part metric."; 465 container two-part-metric { 466 when "enum-value(../ospf:interface-type) = 2" { 467 description 468 "Two-part metric when link type is multi-access."; 469 } 470 leaf enable { 471 type boolean; 472 default false; 473 description 474 "Enable two-part metric."; 475 } 476 leaf int-input-cost { 477 type ospf:ospf-link-metric; 478 description 479 "Link state metric from the two-part-metric network 480 to this router."; 481 } 482 description 483 "Interface two part metric configuration."; 484 } 485 } 487 augment "/rt:routing/" 488 + "rt:control-plane-protocols/rt:control-plane-protocol/" 489 + "ospf:ospf/ospf:areas/" 490 + "ospf:area/ospf:database/" 491 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 492 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 493 + "ospf:ospfv2/ospf:body/ospf:opaque/" 494 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 495 when "../../../../../../../../../../../../" 496 + "rt:type = 'ospf:ospfv2'" { 497 description 498 "This augmentation is only valid for OSPFv2."; 499 } 500 description 501 "Network-to-Router metric sub tlv for OSPFv2 extended link TLV 502 in type 10 opaque LSA."; 504 container network-to-router-metric-sub-tlvs { 505 description "Network-to-Router metric sub TLV."; 506 list net-to-rtr-sub-tlv { 507 leaf mt-id { 508 type uint8; 509 description "Multi-Topology Identifier (MT-ID)."; 510 } 511 leaf mt-metric { 512 type uint16; 513 description "Network-to-router metric."; 514 } 515 description 516 "Network-to-Router metric sub-TLV."; 517 } 518 } 519 } 521 augment "/rt:routing/" 522 + "rt:control-plane-protocols/rt:control-plane-protocol/" 523 + "ospf:ospf/ospf:areas/" 524 + "ospf:area/ospf:database/" 525 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 526 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 527 + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:te-opaque/" 528 + "ospf:link-tlv" { 529 when "../../../../../../../../../../../../" 530 + "rt:type = 'ospf:ospfv2'" { 531 description 532 "This augmentation is only valid for OSPFv2."; 533 } 534 description 535 "Traffic Engineering Network-to-Router Sub-TLV."; 536 leaf network-to-router-te-metric { 537 type uint32; 538 description "Network to Router TE metric."; 539 reference 540 "RFC 8042 - OSPF Two-Part Metric"; 541 } 542 } 544 augment "/rt:routing/" 545 + "rt:control-plane-protocols/rt:control-plane-protocol/" 546 + "ospf:ospf/ospf:areas/" 547 + "ospf:area/ospf:database/" 548 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 549 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 550 + "ospf:ospfv3/ospf:body/ospfv3-te:ospfv3-intra-area-te/" 551 + "ospfv3-te:link-tlv" { 552 when "../../../../../../../../../../../" 553 + "rt:type = 'ospf:ospfv3'" { 554 description 555 "This augmentation is only valid for OSPFv3."; 556 } 557 description 558 "Traffic Engineering Network-to-Router Sub-TLV."; 559 leaf network-to-router-te-metric { 560 type uint32; 561 description "Network to Router TE metric."; 562 reference 563 "RFC 8042 - OSPF Two-Part Metric"; 564 } 565 } 566 } 567 569 4. YANG Module for OSPF Graceful Link Shutdown 571 This document defines a YANG module for OSPF Graceful Link Shutdown 572 feature as defined in [RFC8379]. It is an augmentation of the OSPF 573 base model. 575 module: ietf-ospf-graceful-link-shutdown 576 augment /rt:routing/rt:control-plane-protocols 577 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 578 /ospf:interfaces/ospf:interface: 579 +--rw graceful-link-shutdown 580 +--rw enable? boolean 581 augment /rt:routing/rt:control-plane-protocols 582 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 583 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 584 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 585 /ospf:body/ospf:opaque/ospf:extended-link-opaque 586 /ospf:extended-link-tlv: 587 +--ro graceful-link-shutdown-sub-tlv! 588 +--ro remote-address-sub-tlv 589 | +--ro remote-address? inet:ipv4-address 590 +--ro local-remote-int-id-sub-tlv 591 +--ro local-int-id? uint32 592 +--ro remote-int-id? uint32 593 augment /rt:routing/rt:control-plane-protocols 594 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 595 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 596 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 597 /ospf:body/ospfv3-e-lsa:e-router/ospfv3-e-lsa:e-router-tlvs 598 /ospfv3-e-lsa:link-tlv: 599 +--ro graceful-link-shutdown-sub-tlv! 601 file "ietf-ospf-graceful-link-shutdown@2020-10-31.yang" 602 module ietf-ospf-graceful-link-shutdown { 603 yang-version 1.1; 604 namespace 605 "urn:ietf:params:xml:ns:yang:ietf-ospf-graceful-link-shutdown"; 607 prefix ospf-grace-linkdown; 609 import ietf-inet-types { 610 prefix "inet"; 611 } 613 import ietf-routing { 614 prefix "rt"; 615 } 617 import ietf-ospf { 618 prefix "ospf"; 619 } 621 import ietf-ospfv3-extended-lsa { 622 prefix "ospfv3-e-lsa"; 623 } 625 organization 626 "IETF LSR - Link State Routing Working Group"; 628 contact 629 "WG Web: 630 WG List: 632 Author: Yingzhen Qu 633 634 Author: Acee Lindem 635 "; 637 description 638 "This YANG module defines the configuration and operational 639 state for OSPF Graceful Link Shutdown feature as defined 640 in RFC 8379. 642 This YANG model conforms to the Network Management 643 Datastore Architecture (NDMA) as described in RFC 8342. 645 Copyright (c) 2020 IETF Trust and the persons identified as 646 authors of the code. All rights reserved. 648 Redistribution and use in source and binary forms, with or 649 without modification, is permitted pursuant to, and subject 650 to the license terms contained in, the Simplified BSD License 651 set forth in Section 4.c of the IETF Trust's Legal Provisions 652 Relating to IETF Documents 653 (http://trustee.ietf.org/license-info). 655 This version of this YANG module is part of RFC XXXX; 656 see the RFC itself for full legal notices."; 658 reference "RFC XXXX"; 660 revision 2020-10-31 { 661 description 662 "Initial version"; 663 reference 664 "RFC XXXX: A YANG Data Model for OSPF."; 665 } 667 /* RFC 8379 */ 668 augment "/rt:routing/rt:control-plane-protocols/" 669 + "rt:control-plane-protocol/ospf:ospf/" 670 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 671 when "../../../../../rt:type = 'ospf:ospfv2' or " 672 + "../../../../../rt:type = 'ospf:ospfv3'" { 673 description 674 "This augments the OSPF interface configuration 675 when used."; 676 } 677 description 678 "This augments the OSPF protocol interface 679 configuration with segment routing."; 681 container graceful-link-shutdown { 682 leaf enable { 683 type boolean; 684 default false; 685 description 686 "Enable OSPF graceful link shutdown."; 687 } 688 description 689 "OSPF Graceful Link Shutdown."; 690 } 691 } 693 /* Database */ 694 augment "/rt:routing/" 695 + "rt:control-plane-protocols/rt:control-plane-protocol/" 696 + "ospf:ospf/ospf:areas/" 697 + "ospf:area/ospf:database/" 698 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 699 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 700 + "ospf:ospfv2/ospf:body/ospf:opaque/" 701 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 702 when "../../../../../../../../../../../../" 703 + "rt:type = 'ospf:ospfv2'" { 704 description 705 "This augmentation is only valid for OSPFv2."; 706 } 707 description 708 "OSPF graceful link shutdown for OSPFv2 extended link TLV 709 in type 10 opaque LSA."; 711 container graceful-link-shutdown-sub-tlv { 712 presence "Enable graceful link shutdown"; 713 description 714 "Graceful-Link-Shutdown sub-TLV identifies the link as being 715 gracefully shutdown."; 717 } 719 container remote-address-sub-tlv { 720 leaf remote-address { 721 type inet:ipv4-address; 722 description 723 "Remote IPv4 address used to identify a particular link 724 on the remote side."; 725 } 726 description 727 "This sub-TLV specifies the IPv4 address of the remote 728 endpoint on the link."; 729 } 731 container local-remote-int-id-sub-tlv { 732 leaf local-int-id { 733 type uint32; 734 description "Local interface ID."; 735 } 736 leaf remote-int-id { 737 type uint32; 738 description "Remote interface ID."; 739 } 740 description 741 "This sub-TLV specifies Local and Remote Interface IDs."; 742 } 743 } 745 augment "/rt:routing/" 746 + "rt:control-plane-protocols/rt:control-plane-protocol/" 747 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 748 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 749 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 750 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router" 751 + "/ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv" { 752 when "'ospf:../../../../../../../../../" 753 + "rt:type' = 'ospf:ospfv3'" { 754 description 755 "This augmentation is only valid for OSPFv3 756 E-Router LSAs"; 757 } 758 container graceful-link-shutdown-sub-tlv { 759 presence "Enable graceful link shutdown"; 760 description 761 "Graceful-Link-Shutdown sub-TLV identifies the link as being 762 gracefully shutdown."; 763 } 764 description 765 "Augment OSPFv3 Area scope router-link TLV."; 766 } 767 } 768 770 5. YANG Module for OSPF LLS Extenstion for Local Interface ID 771 Advertisement 773 This document defines a YANG module for OSPF Link-Local Signaling 774 (LLS) Extensions for Local Interface ID Advertisement feature as 775 defined in [RFC8510]. It is an augmentation of the OSPF base model. 777 module: ietf-ospf-lls-local-id 778 augment /rt:routing/rt:control-plane-protocols 779 /rt:control-plane-protocol/ospf:ospf: 780 +--rw lls-int-id 781 +--rw enable? boolean 783 file "ietf-ospf-lls-local-id@2020-04-24.yang" 784 module ietf-ospf-lls-local-id { 785 yang-version 1.1; 786 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-lls-local-id"; 788 prefix ospf-lls-localid; 790 import ietf-routing { 791 prefix "rt"; 792 } 794 import ietf-ospf { 795 prefix "ospf"; 796 } 798 organization 799 "IETF LSR - Link State Routing Working Group"; 801 contact 802 "WG Web: 803 WG List: 805 Author: Yingzhen Qu 806 807 Author: Acee Lindem 808 "; 810 description 811 "This YANG module defines the configuration and operational 812 state for OSPF Link-Local Signaling (LLS) Extensions for Local 813 Interface ID Advertisement feature as defined in RFC 8510. 815 Copyright (c) 2019 IETF Trust and the persons identified as 816 authors of the code. All rights reserved. 818 Redistribution and use in source and binary forms, with or 819 without modification, is permitted pursuant to, and subject 820 to the license terms contained in, the Simplified BSD License 821 set forth in Section 4.c of the IETF Trust's Legal Provisions 822 Relating to IETF Documents 823 (http://trustee.ietf.org/license-info). 825 This version of this YANG module is part of RFC XXXX; 826 see the RFC itself for full legal notices."; 828 reference "RFC XXXX"; 830 revision 2020-04-24 { 831 description 832 "Initial version"; 833 reference 834 "RFC XXXX: A YANG Data Model for OSPF."; 835 } 837 augment "/rt:routing/rt:control-plane-protocols" 838 + "/rt:control-plane-protocol/ospf:ospf" { 839 when "../rt:type = 'ospf:ospfv2' or " 840 + "../rt:type = 'ospf:ospfv3'" { 841 description 842 "This augments the OSPF routing protocol when used."; 843 } 844 description 845 "This augments the OSPF protocol configuration 846 to support LLS extesnions for interfacde ID as 847 defined in RFC 8510."; 848 container lls-int-id { 849 leaf enable { 850 type boolean; 851 default false; 852 description 853 "Enable LLS to advertise local interface ID."; 854 } 855 description 856 "OSPF LLS Extensions for interface ID."; 857 } 858 } 859 } 860 862 6. YANG Module for OSPF Application-Specific Link Attributes 864 This document defines a YANG module for OSPF Application-Specific 865 Link Attributes feature as defined in [RFC8920]. It is an 866 augmentation of the OSPF base model. 868 module: ietf-ospf-link-attr 869 augment /rt:routing/rt:control-plane-protocols 870 /rt:control-plane-protocol/ospf:ospf: 871 +--rw ospf-link-attr 872 +--rw (link-attr-op-mode) 873 +--:(legacy) 874 | +--rw legacy? empty 875 +--:(transition) 876 | +--rw transition? empty 877 +--:(app-specific) 878 +--rw app-specific? empty 879 augment /rt:routing/rt:control-plane-protocols 880 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 881 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 882 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 883 /ospf:body/ospf:opaque/ospf:extended-link-opaque 884 /ospf:extended-link-tlv: 885 +--ro application-specific-link-attributes-sub-tlvs 886 +--ro asla-sub-tlvs* [] 887 +--ro sabm-length? uint8 888 +--ro udabm-length? uint8 889 +--ro sabm 890 | +--ro sabm-bits* identityref 891 +--ro udabm 892 +--ro link-attributes-sub-sub-tlvs 893 +--ro unknown-tlvs 894 +--ro unknown-tlv* [] 895 +--ro type? uint16 896 +--ro length? uint16 897 +--ro value? yang:hex-string 898 augment /rt:routing/rt:control-plane-protocols 899 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 900 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 901 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 902 /ospf:body/ospfv3-e-lsa:e-router/ospfv3-e-lsa:e-router-tlvs 903 /ospfv3-e-lsa:link-tlv: 904 +--ro application-specific-link-attributes-sub-tlvs 905 +--ro asla-sub-tlvs* [] 906 +--ro sabm-length? uint8 907 +--ro udabm-length? uint8 908 +--ro sabm 909 | +--ro sabm-bits* identityref 910 +--ro udabm 911 +--ro link-attributes-sub-sub-tlvs 912 +--ro unknown-tlvs 913 +--ro unknown-tlv* [] 914 +--ro type? uint16 915 +--ro length? uint16 916 +--ro value? yang:hex-string 918 file "ietf-ospf-link-attr@2020-10-31.yang" 919 module ietf-ospf-link-attr { 920 yang-version 1.1; 921 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr"; 923 prefix ospf-link-attr; 925 import ietf-routing { 926 prefix "rt"; 927 reference "RFC 8349: A YANG Data Model for Routing 928 Management (NMDA Version)"; 929 } 931 import ietf-ospf { 932 prefix "ospf"; 933 } 935 import ietf-ospfv3-extended-lsa { 936 prefix "ospfv3-e-lsa"; 937 } 939 organization 940 "IETF LSR - Link State Routing Working Group"; 942 contact 943 "WG Web: 944 WG List: 946 Author: Yingzhen Qu 947 948 Author: Acee Lindem 949 950 Author: Stephane Litkowski 951 "; 953 description 954 "This YANG module defines the configuration and operational 955 state for OSPF application specific link attributes feature 956 as defined in RFC xxxx. 958 This YANG model conforms to the Network Management 959 Datastore Architecture (NMDA) as described in RFC 8342. 961 Copyright (c) 2020 IETF Trust and the persons identified as 962 authors of the code. All rights reserved. 964 Redistribution and use in source and binary forms, with or 965 without modification, is permitted pursuant to, and subject 966 to the license terms contained in, the Simplified BSD License 967 set forth in Section 4.c of the IETF Trust's Legal Provisions 968 Relating to IETF Documents 969 (http://trustee.ietf.org/license-info). 971 This version of this YANG module is part of RFC XXXX; 972 see the RFC itself for full legal notices. 974 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 975 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 976 'MAY', and 'OPTIONAL' in this document are to be interpreted as 977 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 978 they appear in all capitals, as shown here."; 980 reference "RFC XXXX"; 982 revision 2020-10-31 { 983 description 984 "Initial version"; 985 reference 986 "RFC XXXX: A YANG Data Model for OSPF application specific 987 link attributes."; 988 } 990 identity sabm-bit { 991 description 992 "Base identity for sabm bits."; 993 } 995 identity rsvp-te-bit { 996 base sabm-bit; 997 description 998 "R bit, RSVP-TE."; 999 } 1001 identity sr-policy-bit { 1002 base sabm-bit; 1003 description 1004 "S bit, Segment Routing Policy."; 1005 } 1007 identity lfa-bit { 1008 base sabm-bit; 1009 description 1010 "F bit, Loop Free Alternate (LFA). Includes all LFA types."; 1011 } 1013 grouping application-specific-link-attributes-sub-tlvs { 1014 description 1015 "OSPF Application-Specific Link Attributes (ASLA) sub-TLV. 1016 The ASLA sub-TLV is a sub-TLV of the OSPFv2 Extended Link 1017 TLV [RFC7684] and OSPFv3 Router-Link TLV [RFC8362]."; 1019 container application-specific-link-attributes-sub-tlvs { 1020 description "Application-Specific Link Attributes sub-TLV."; 1021 list asla-sub-tlvs { 1022 leaf sabm-length { 1023 type uint8; 1024 description 1025 "Standard Application Identifier Bit Mask Length in 1026 octets."; 1027 } 1028 leaf udabm-length { 1029 type uint8; 1030 description 1031 "User Defined Application Identifier Bit Mask Length 1032 in octets."; 1033 } 1034 container sabm { 1035 leaf-list sabm-bits { 1036 type identityref { 1037 base sabm-bit; 1038 } 1039 description 1040 "SABM bits list. This list will contain 1041 identities for the bits which are set in the 1042 SABA bits."; 1043 } 1044 description 1045 "Standard Application Identifier Bit Mask."; 1046 } 1047 container udabm { 1048 description 1049 "User Defined Application Identifier Bit Mask. 1050 This container is to be augmented by user defined 1051 applications."; 1053 } 1054 container link-attributes-sub-sub-tlvs { 1055 uses ospf:unknown-tlvs; 1056 description 1057 "Link Attributes sub-sub-TLVs."; 1058 } 1059 description 1060 "List of application-Specific Link Attributes sub-TLVs."; 1061 } 1062 } 1063 } 1065 augment "/rt:routing/rt:control-plane-protocols" 1066 + "/rt:control-plane-protocol/ospf:ospf" { 1067 when "../rt:type = 'ospf:ospfv2' or " 1068 + "../rt:type = 'ospf:ospfv3'" { 1069 description 1070 "This augments the OSPF routing protocol when used."; 1071 } 1072 description 1073 "This augments OSPF protocol configuration 1074 with application-specific link attributes."; 1076 container ospf-link-attr { 1077 choice link-attr-op-mode { 1078 mandatory "true"; 1079 leaf legacy { 1080 type empty; 1081 description 1082 "Only send legacy advertisements."; 1083 } 1084 leaf transition { 1085 type empty; 1086 description 1087 "Send both application-specific and legacy 1088 advertisements."; 1089 } 1090 leaf app-specific{ 1091 type empty; 1092 description 1093 "Only send application-specific advertisements."; 1094 } 1095 description 1096 "Link attributes mode"; 1097 } 1098 description 1099 "Link attributes operation mode."; 1100 } 1102 } 1104 /* Database */ 1105 augment "/rt:routing/" 1106 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1107 + "ospf:ospf/ospf:areas/" 1108 + "ospf:area/ospf:database/" 1109 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1110 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 1111 + "ospf:ospfv2/ospf:body/ospf:opaque/" 1112 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 1113 when "../../../../../../../../../../../../" 1114 + "rt:type = 'ospf:ospfv2'" { 1115 description 1116 "This augmentation is only valid for OSPFv2."; 1117 } 1118 description 1119 "OSPF Application-Specific Link Attributes (ASLA) sub-TLV is 1120 a sub-TLV of OSPFv2 Extended Link TLV (RFC7684)."; 1122 uses application-specific-link-attributes-sub-tlvs; 1123 } 1125 augment "/rt:routing/" 1126 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1127 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 1128 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1129 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 1130 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router" 1131 + "/ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv" { 1132 when "'ospf:../../../../../../../../../" 1133 + "rt:type' = 'ospf:ospfv3'" { 1134 description 1135 "This augmentation is only valid for OSPFv3 1136 E-Router LSAs"; 1137 } 1138 description 1139 "Augment OSPFv3 Area scope router-link TLV."; 1141 uses application-specific-link-attributes-sub-tlvs; 1142 } 1143 } 1144 1146 7. YANG Module for OSPF Flexible Algorithm 1148 This document defines a YANG module for OSPF Flexible Algorithm as 1149 defined in [I-D.ietf-lsr-flex-algo]. It is an augmentation of the 1150 OSPF base model. 1152 module: ietf-ospf-flex-algo 1153 augment /rt:routing/rt:control-plane-protocols 1154 /rt:control-plane-protocol/ospf:ospf: 1155 +--rw ospf-flex-algo 1156 +--rw flex-algo* [algo-number] 1157 +--rw algo-number uint8 1158 +--rw advertise-definition? boolean 1159 +--rw admin-groups {te-types:extended-admin-groups, 1160 te-types:named-extended-admin-groups}? 1161 | +--rw exclude-admin-groups* -> /te:te/globals 1162 /named-admin-groups 1163 /named-admin-group/name 1164 | +--rw include-any-admin-groups* -> /te:te/globals 1165 /named-admin-groups 1166 /named-admin-group/name 1167 | +--rw include-all-admin-groups* -> /te:te/globals 1168 /named-admin-groups 1169 /named-admin-group/name 1170 +--rw exclude-srlgs* -> /te:te/globals/named-srlgs 1171 /named-srlg/name 1172 {te-types:named-srlg-groups}? 1173 +--rw fast-reroute? boolean 1174 +--rw metric-type? identityref 1175 +--rw microloop-avoidance? boolean 1176 +--rw prefix-metric! 1177 +--rw priority? uint8 1178 augment /rt:routing/rt:control-plane-protocols 1179 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1180 /ospf:interfaces/ospf:interface/ospf:database 1181 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1182 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1183 /ospf:body/ospf:opaque/ospf:ri-opaque: 1184 +--ro fad-tlvs 1185 +--ro fad-tlv* [] 1186 +--ro flex-algo? uint8 1187 +--ro metric-type? identityref 1188 +--ro calc-type? uint8 1189 +--ro priority? uint8 1190 +--ro fa-ex-ag-sub-tlv 1191 | +--ro extended-admin-groups* uint64 1192 +--ro fa-in-any-ag-sub-tlv 1193 | +--ro extended-admin-groups* uint64 1194 +--ro fa-in-all-ag-sub-tlv 1195 | +--ro extended-admin-groups* uint64 1196 +--ro fad-flags-sub-tlv 1197 | +--ro fad-flags* identityref 1198 +--ro fa-ex-srlg-sub-tlv 1199 | +--ro srlgs* uint32 1200 +--ro unknown-tlvs 1201 +--ro unknown-tlv* [] 1202 +--ro type? uint16 1203 +--ro length? uint16 1204 +--ro value? yang:hex-string 1205 augment /rt:routing/rt:control-plane-protocols 1206 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1207 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1208 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1209 /ospf:body/ospf:opaque/ospf:ri-opaque: 1210 +--ro fad-tlvs 1211 +--ro fad-tlv* [] 1212 +--ro flex-algo? uint8 1213 +--ro metric-type? identityref 1214 +--ro calc-type? uint8 1215 +--ro priority? uint8 1216 +--ro fa-ex-ag-sub-tlv 1217 | +--ro extended-admin-groups* uint64 1218 +--ro fa-in-any-ag-sub-tlv 1219 | +--ro extended-admin-groups* uint64 1220 +--ro fa-in-all-ag-sub-tlv 1221 | +--ro extended-admin-groups* uint64 1222 +--ro fad-flags-sub-tlv 1223 | +--ro fad-flags* identityref 1224 +--ro fa-ex-srlg-sub-tlv 1225 | +--ro srlgs* uint32 1226 +--ro unknown-tlvs 1227 +--ro unknown-tlv* [] 1228 +--ro type? uint16 1229 +--ro length? uint16 1230 +--ro value? yang:hex-string 1231 augment /rt:routing/rt:control-plane-protocols 1232 /rt:control-plane-protocol/ospf:ospf/ospf:database 1233 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1234 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 1235 /ospf:ri-opaque: 1236 +--ro fad-tlvs 1237 +--ro fad-tlv* [] 1238 +--ro flex-algo? uint8 1239 +--ro metric-type? identityref 1240 +--ro calc-type? uint8 1241 +--ro priority? uint8 1242 +--ro fa-ex-ag-sub-tlv 1243 | +--ro extended-admin-groups* uint64 1244 +--ro fa-in-any-ag-sub-tlv 1245 | +--ro extended-admin-groups* uint64 1246 +--ro fa-in-all-ag-sub-tlv 1247 | +--ro extended-admin-groups* uint64 1248 +--ro fad-flags-sub-tlv 1249 | +--ro fad-flags* identityref 1250 +--ro fa-ex-srlg-sub-tlv 1251 | +--ro srlgs* uint32 1252 +--ro unknown-tlvs 1253 +--ro unknown-tlv* [] 1254 +--ro type? uint16 1255 +--ro length? uint16 1256 +--ro value? yang:hex-string 1257 augment /rt:routing/rt:control-plane-protocols 1258 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1259 /ospf:interfaces/ospf:interface/ospf:database 1260 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1261 /ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1262 /ospf:body/ospf:router-information: 1263 +--ro fad-tlvs 1264 +--ro fad-tlv* [] 1265 +--ro flex-algo? uint8 1266 +--ro metric-type? identityref 1267 +--ro calc-type? uint8 1268 +--ro priority? uint8 1269 +--ro fa-ex-ag-sub-tlv 1270 | +--ro extended-admin-groups* uint64 1271 +--ro fa-in-any-ag-sub-tlv 1272 | +--ro extended-admin-groups* uint64 1273 +--ro fa-in-all-ag-sub-tlv 1274 | +--ro extended-admin-groups* uint64 1275 +--ro fad-flags-sub-tlv 1276 | +--ro fad-flags* identityref 1277 +--ro fa-ex-srlg-sub-tlv 1278 | +--ro srlgs* uint32 1279 +--ro unknown-tlvs 1280 +--ro unknown-tlv* [] 1281 +--ro type? uint16 1282 +--ro length? uint16 1283 +--ro value? yang:hex-string 1284 augment /rt:routing/rt:control-plane-protocols 1285 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1286 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1287 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1288 /ospf:body/ospf:router-information: 1289 +--ro fad-tlvs 1290 +--ro fad-tlv* [] 1291 +--ro flex-algo? uint8 1292 +--ro metric-type? identityref 1293 +--ro calc-type? uint8 1294 +--ro priority? uint8 1295 +--ro fa-ex-ag-sub-tlv 1296 | +--ro extended-admin-groups* uint64 1297 +--ro fa-in-any-ag-sub-tlv 1298 | +--ro extended-admin-groups* uint64 1299 +--ro fa-in-all-ag-sub-tlv 1300 | +--ro extended-admin-groups* uint64 1301 +--ro fad-flags-sub-tlv 1302 | +--ro fad-flags* identityref 1303 +--ro fa-ex-srlg-sub-tlv 1304 | +--ro srlgs* uint32 1305 +--ro unknown-tlvs 1306 +--ro unknown-tlv* [] 1307 +--ro type? uint16 1308 +--ro length? uint16 1309 +--ro value? yang:hex-string 1310 augment /rt:routing/rt:control-plane-protocols 1311 /rt:control-plane-protocol/ospf:ospf/ospf:database 1312 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1313 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 1314 /ospf:router-information: 1315 +--ro fad-tlvs 1316 +--ro fad-tlv* [] 1317 +--ro flex-algo? uint8 1318 +--ro metric-type? identityref 1319 +--ro calc-type? uint8 1320 +--ro priority? uint8 1321 +--ro fa-ex-ag-sub-tlv 1322 | +--ro extended-admin-groups* uint64 1323 +--ro fa-in-any-ag-sub-tlv 1324 | +--ro extended-admin-groups* uint64 1325 +--ro fa-in-all-ag-sub-tlv 1326 | +--ro extended-admin-groups* uint64 1327 +--ro fad-flags-sub-tlv 1328 | +--ro fad-flags* identityref 1329 +--ro fa-ex-srlg-sub-tlv 1330 | +--ro srlgs* uint32 1331 +--ro unknown-tlvs 1332 +--ro unknown-tlv* [] 1333 +--ro type? uint16 1334 +--ro length? uint16 1335 +--ro value? yang:hex-string 1336 augment /rt:routing/rt:control-plane-protocols 1337 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1338 /ospf:interfaces/ospf:interface/ospf:database 1339 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1340 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1341 /ospf:body/ospf:opaque/ospf:extended-prefix-opaque 1342 /ospf:extended-prefix-tlv: 1343 +--ro fapm-sub-tlvs 1344 +--ro fapm-sub-tlv* [] 1345 +--ro flex-algo? uint8 1346 +--ro fapm-flags* identityref 1347 +--ro metric? uint32 1348 augment /rt:routing/rt:control-plane-protocols 1349 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1350 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1351 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1352 /ospf:body/ospf:opaque/ospf:extended-prefix-opaque 1353 /ospf:extended-prefix-tlv: 1354 +--ro fapm-sub-tlvs 1355 +--ro fapm-sub-tlv* [] 1356 +--ro flex-algo? uint8 1357 +--ro fapm-flags* identityref 1358 +--ro metric? uint32 1359 augment /rt:routing/rt:control-plane-protocols 1360 /rt:control-plane-protocol/ospf:ospf/ospf:database 1361 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1362 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 1363 /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: 1364 +--ro fapm-sub-tlvs 1365 +--ro fapm-sub-tlv* [] 1366 +--ro flex-algo? uint8 1367 +--ro fapm-flags* identityref 1368 +--ro metric? uint32 1369 augment /rt:routing/rt:control-plane-protocols 1370 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1371 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1372 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1373 /ospf:body/ospfv3-e-lsa:e-inter-area-prefix 1374 /ospfv3-e-lsa:e-inter-prefix-tlvs 1375 /ospfv3-e-lsa:inter-prefix-tlv: 1376 +--ro fapm-sub-tlvs 1377 +--ro fapm-sub-tlv* [] 1378 +--ro flex-algo? uint8 1379 +--ro fapm-flags* identityref 1380 +--ro metric? uint32 1381 augment /rt:routing/rt:control-plane-protocols 1382 /rt:control-plane-protocol/ospf:ospf/ospf:database 1383 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1384 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 1385 /ospfv3-e-lsa:e-as-external/ospfv3-e-lsa:e-external-tlvs 1386 /ospfv3-e-lsa:external-prefix-tlv: 1387 +--ro fapm-sub-tlvs 1388 +--ro fapm-sub-tlv* [] 1389 +--ro flex-algo? uint8 1390 +--ro fapm-flags* identityref 1391 +--ro metric? uint32 1392 augment /rt:routing/rt:control-plane-protocols 1393 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1394 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1395 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1396 /ospf:body/ospf:opaque: 1397 +--ro eia-asbr-opaque 1398 +--ro eia-asbr-tlv 1399 | +--ro asbr-rtr-id? rt-types:router-id 1400 | +--ro faam-sub-tlvs 1401 | | +--ro faam-sub-tlv* [] 1402 | | +--ro flex-algo? uint8 1403 | | +--ro metric? uint32 1404 | +--ro unknown-tlvs 1405 | +--ro unknown-tlv* [] 1406 | +--ro type? uint16 1407 | +--ro length? uint16 1408 | +--ro value? yang:hex-string 1409 +--ro unknown-tlvs 1410 +--ro unknown-tlv* [] 1411 +--ro type? uint16 1412 +--ro length? uint16 1413 +--ro value? yang:hex-string 1414 augment /rt:routing/rt:control-plane-protocols 1415 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1416 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1417 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1418 /ospf:body/ospfv3-e-lsa:e-inter-area-router 1419 /ospfv3-e-lsa:e-inter-router-tlvs 1420 /ospfv3-e-lsa:inter-router-tlv: 1421 +--ro faam-sub-tlvs 1422 +--ro faam-sub-tlv* [] 1423 +--ro flex-algo? uint8 1424 +--ro metric? uint32 1426 file "ietf-ospf-flex-algo@2021-06-18.yang" 1427 module ietf-ospf-flex-algo { 1428 yang-version 1.1; 1429 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo"; 1430 prefix ospf-flex-algo; 1432 import ietf-routing { 1433 prefix rt; 1434 reference "RFC 8349: A YANG Data Model for Routing 1435 Management (NMDA Version)"; 1436 } 1438 import ietf-routing-types { 1439 prefix "rt-types"; 1440 reference "RFC 8294: Common YANG Data Types for the 1441 Routing Area"; 1442 } 1444 import ietf-te-types { 1445 prefix te-types; 1446 reference 1447 "RFC8776: Common YANG Data Types for Traffic Engineering."; 1448 } 1450 import ietf-ospf { 1451 prefix "ospf"; 1452 } 1454 import ietf-ospfv3-extended-lsa { 1455 prefix "ospfv3-e-lsa"; 1456 } 1458 import ietf-te { 1459 prefix "te"; 1460 } 1462 organization 1463 "IETF LSR - Link State Routing Working Group"; 1464 contact 1465 "WG Web: 1466 WG List: 1468 Author: Yingzhen Qu 1469 1470 Author: Acee Lindem 1471 1472 Author: Stephane Litkowski 1473 1474 "; 1476 description 1477 "The YANG module defines the configuration and operational 1478 state for OSPF Flexible Algorithm as defined in RFC xxxx. 1480 This YANG model conforms to the Network Management 1481 Datastore Architecture (NMDA) as described in RFC 8342. 1483 Copyright (c) 2021 IETF Trust and the persons identified as 1484 authors of the code. All rights reserved. 1486 Redistribution and use in source and binary forms, with or 1487 without modification, is permitted pursuant to, and subject 1488 to the license terms contained in, the Simplified BSD License 1489 set forth in Section 4.c of the IETF Trust's Legal Provisions 1490 Relating to IETF Documents 1491 (https://trustee.ietf.org/license-info). 1493 This version of this YANG module is part of RFC XXXX; 1494 see the RFC itself for full legal notices. 1496 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 1497 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 1498 'MAY', and 'OPTIONAL' in this document are to be interpreted as 1499 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 1500 they appear in all capitals, as shown here."; 1502 reference "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm."; 1504 revision 2021-06-18 { 1505 description 1506 "Initial Version"; 1507 reference "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm."; 1508 } 1510 /* Identities */ 1512 identity metric-type { 1513 description 1514 "Base identity for route metric types."; 1515 } 1517 identity igp-metric { 1518 base metric-type; 1519 description 1520 "Identity for the IGP metric type."; 1521 } 1523 identity min-uni-delay { 1524 base metric-type; 1525 description 1526 "Min unidirectional link delay metric type."; 1527 reference 1528 "RFC 7471 - OSPF Traffic Engineering (TE) Metric Extensions"; 1529 } 1531 identity te-metric { 1532 base metric-type; 1533 description 1534 "Traffic engineering metric type."; 1535 reference 1536 "RFC 3630 - Traffic Engineering (TE) Extensions to OSPF 1537 Version 2"; 1538 } 1540 identity fad-flags { 1541 description 1542 "Base identity for OSPF FAD flags."; 1543 } 1545 identity m-bit { 1546 base fad-flags; 1547 description 1548 "M bit, when set, the fex-algo specific prefix and ASBR 1549 metric MUST be used for inter-area and external prefix 1550 calculation."; 1551 } 1553 identity fapm-flags { 1554 description 1555 "Base identity for OSPF flex-algo prefix metric flags."; 1556 } 1558 identity e-bit { 1559 base fapm-flags; 1560 description 1561 "External metric, if set, the metric specified is a 1562 type 2 external metric."; 1563 } 1565 /* Groupings */ 1566 grouping fa-ex-ag-sub-tlv { 1567 container fa-ex-ag-sub-tlv { 1568 leaf-list extended-admin-groups { 1569 type uint64; 1570 description 1571 "Extended administrative group as defined in RFC 7308."; 1572 } 1573 description 1574 "The flex-algo exclude admin group sub-tlv."; 1575 } 1576 description 1577 "The flex-algo exclude admin group sub-tlv."; 1578 } 1580 grouping fa-in-any-ag-sub-tlv { 1581 container fa-in-any-ag-sub-tlv { 1582 leaf-list extended-admin-groups { 1583 type uint64; 1584 description 1585 "Extended administrative group as defined in RFC 7308."; 1586 } 1587 description 1588 "The flex-algo include-any admin group sub-tlv."; 1589 } 1590 description 1591 "The flex-algo include-any admin group sub-tlv."; 1592 } 1594 grouping fa-in-all-ag-sub-tlv { 1595 container fa-in-all-ag-sub-tlv { 1596 leaf-list extended-admin-groups { 1597 type uint64; 1598 description 1599 "Extended administrative group as defined in RFC 7308."; 1600 } 1601 description 1602 "The flex-algo include-all admin group sub-tlv."; 1603 } 1604 description 1605 "The flex-algo include-all admin group sub-tlv."; 1606 } 1608 grouping fad-flags-sub-tlv { 1609 container fad-flags-sub-tlv { 1610 leaf-list fad-flags { 1611 type identityref { 1612 base fad-flags; 1613 } 1614 description 1615 "Flex-algo definition flags list."; 1616 } 1617 description 1618 "OSPF flex-algo definition flags."; 1619 } 1620 description 1621 "The flex-algo definition flags sub-tlv."; 1622 } 1623 grouping fa-ex-srlg-sub-tlv { 1624 container fa-ex-srlg-sub-tlv { 1625 leaf-list srlgs { 1626 type uint32; 1627 description 1628 "SRLG value as defined in RFC 4203."; 1629 } 1630 description 1631 "The flex-algo exclude SRLG sub-tlv."; 1632 } 1633 description 1634 "The flex-algo exclude SRLG sub-tlv."; 1635 } 1637 grouping fad-tlvs { 1638 container fad-tlvs { 1639 list fad-tlv { 1640 leaf flex-algo { 1641 type uint8; 1642 description 1643 "Flex-algo number, value between 128 and 255 inclusive."; 1644 } 1645 leaf metric-type { 1646 type identityref { 1647 base metric-type; 1648 } 1649 description 1650 "Type of metric to be used during the calculation."; 1651 } 1652 leaf calc-type { 1653 type uint8 { 1654 range "0..127"; 1655 } 1656 description 1657 "IGP algorithm types, value from 0 to 127 as 1658 defined under 'Interior Gateway Protocol (IGP) 1659 Parameter' by IANA."; 1660 } 1661 leaf priority { 1662 type uint8; 1663 description 1664 "Priority of the advertisement."; 1665 } 1667 uses fa-ex-ag-sub-tlv; 1668 uses fa-in-any-ag-sub-tlv; 1669 uses fa-in-all-ag-sub-tlv; 1670 uses fad-flags-sub-tlv; 1671 uses fa-ex-srlg-sub-tlv; 1672 uses ospf:unknown-tlvs; 1674 description 1675 "List of flex-algo definition TLVs."; 1676 } 1677 description 1678 "OSPF Flexible Algorithm Definition TLV."; 1679 } 1680 description 1681 "OSPF Flexible Algorithm Definition (FAD) TLV."; 1682 } 1684 grouping fapm-sub-tlvs { 1685 container fapm-sub-tlvs { 1686 list fapm-sub-tlv { 1687 leaf flex-algo { 1688 type uint8; 1689 description 1690 "Flex-algo number, value between 128 and 255 1691 inclusive."; 1692 } 1693 leaf-list fapm-flags { 1694 type identityref { 1695 base fapm-flags; 1696 } 1697 description 1698 "Flex-algo prefix metric flags list."; 1699 } 1700 leaf metric { 1701 type uint32; 1702 description 1703 "Prefix metric."; 1704 } 1705 description 1706 "List of flex-algo prefix sub-tlvs."; 1707 } 1708 description 1709 "Flex-algo prefix metric sub-tlvs."; 1710 } 1711 description 1712 "Flexible Algorithm Prefix Metric (FAPM) sub TLVs."; 1713 } 1715 grouping faam-sub-tlvs { 1716 container faam-sub-tlvs { 1717 list faam-sub-tlv { 1718 leaf flex-algo { 1719 type uint8; 1720 description 1721 "Flex-algo number, value between 128 and 255 1722 inclusive."; 1723 } 1724 leaf metric { 1725 type uint32; 1726 description 1727 "Prefix metric."; 1728 } 1729 description 1730 "List of faam sub-tlvs."; 1731 } 1732 description 1733 "Flexible Algorithm ASBR Metric (FAAM) Sub-TLVs."; 1734 } 1735 description 1736 "Flexible Algorithm ASBR Metric (FAAM) Sub-TLVs."; 1737 } 1739 /* Configurations */ 1741 augment "/rt:routing/rt:control-plane-protocols" 1742 + "/rt:control-plane-protocol/ospf:ospf" { 1743 when "../rt:type = 'ospf:ospfv2' or " 1744 + "../rt:type = 'ospf:ospfv3'" { 1745 description 1746 "This augments the OSPF routing protocol when used."; 1747 } 1748 description 1749 "This augments OSPF protocol with Flexible 1750 Algorithm."; 1752 container ospf-flex-algo { 1753 list flex-algo { 1754 key "algo-number"; 1756 leaf algo-number { 1757 type uint8 { 1758 range "128..255"; 1759 } 1760 description 1761 "An identifier in the range 128-255 that's associated 1762 with the Flexible Algorithm Definition."; 1763 } 1765 leaf advertise-definition { 1766 type boolean; 1767 default true; 1768 description 1769 "Enable to advertise the flex-algo definition."; 1770 } 1772 container admin-groups { 1773 if-feature "te-types:extended-admin-groups"; 1774 if-feature "te-types:named-extended-admin-groups"; 1775 leaf-list exclude-admin-groups { 1776 type leafref { 1777 path "/te:te/te:globals/te:named-admin-groups/" 1778 + "te:named-admin-group/te:name"; 1779 } 1780 description 1781 "Exclude rule used during the flex-algo 1782 path computation."; 1783 } 1784 leaf-list include-any-admin-groups { 1785 type leafref { 1786 path "/te:te/te:globals/te:named-admin-groups/" 1787 + "te:named-admin-group/te:name"; 1788 } 1789 description 1790 "Include-any rule used during the flex-algo 1791 path computation."; 1792 } 1793 leaf-list include-all-admin-groups { 1794 type leafref { 1795 path "/te:te/te:globals/te:named-admin-groups/" 1796 + "te:named-admin-group/te:name"; 1797 } 1798 description 1799 "Include-all rule used during the flex-algo 1800 path computation."; 1801 } 1802 description 1803 "Specify links for the flex-algo path computation."; 1804 } 1806 leaf-list exclude-srlgs { 1807 if-feature "te-types:named-srlg-groups"; 1808 type leafref { 1809 path "/te:te/te:globals/te:named-srlgs/te:named-srlg/" 1810 + "te:name"; 1811 } 1812 description 1813 "Shared Risk Link Groups (SRLGs) to be excluded during 1814 the flex-algo path computation."; 1815 } 1817 leaf fast-reroute { 1818 type boolean; 1819 default true; 1820 description 1821 "Enable fast reroute."; 1822 } 1824 leaf metric-type { 1825 type identityref { 1826 base metric-type; 1827 } 1828 description 1829 "Type of metric to be used during the calculation."; 1830 } 1832 leaf microloop-avoidance { 1833 type boolean; 1834 default true; 1835 description 1836 "Enable microloop avoidance."; 1837 } 1839 container prefix-metric { 1840 presence 1841 "Use flex-algo specific prefix metric."; 1842 description 1843 "Use flex-algo prefix metric."; 1844 } 1846 leaf priority { 1847 type uint8; 1848 description 1849 "Priority of the advertisement."; 1850 } 1852 description 1853 "List of flex-algo configurations."; 1854 } 1855 description 1856 "Flexible Algorithm configuration."; 1857 } 1858 } 1860 /* Database */ 1861 augment "/rt:routing/" 1862 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1863 + "ospf:ospf/ospf:areas/ospf:area/" 1864 + "ospf:interfaces/ospf:interface/ospf:database/" 1865 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 1866 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 1867 + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { 1868 when "../../../../../../../../../../../../../" 1869 + "rt:type = 'ospf:ospfv2'" { 1870 description 1871 "This augmentation is only valid for OSPFv2."; 1872 } 1874 description 1875 "Flex-algo definition TLVs for OSPFv2 type 9 opaque RI LSA."; 1877 uses fad-tlvs; 1878 } 1880 augment "/rt:routing/" 1881 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1882 + "ospf:ospf/ospf:areas/" 1883 + "ospf:area/ospf:database/" 1884 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1885 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 1886 + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { 1887 when "../../../../../../../../../../../" 1888 + "rt:type = 'ospf:ospfv2'" { 1889 description 1890 "This augmentation is only valid for OSPFv2."; 1891 } 1893 description 1894 "Flex-algo definition TLVs for OSPFv2 type 10 opaque RI LSA."; 1896 uses fad-tlvs; 1897 } 1899 augment "/rt:routing/" 1900 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1901 + "ospf:ospf/ospf:database/" 1902 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1903 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 1904 + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { 1905 when "../../../../../../../../../" 1906 + "rt:type = 'ospf:ospfv2'" { 1907 description 1908 "This augmentation is only valid for OSPFv2."; 1910 } 1911 description 1912 "Flex-algo definition TLVs for OSPFv2 type 11 opaque RI LSA."; 1914 uses fad-tlvs; 1915 } 1917 augment "/rt:routing/" 1918 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1919 + "ospf:ospf/ospf:areas/ospf:area/" 1920 + "ospf:interfaces/ospf:interface/ospf:database/" 1921 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 1922 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" 1923 + "ospf:ospfv3/ospf:body/ospf:router-information" { 1924 when "../../../../../../../../../../../../" 1925 + "rt:type = 'ospf:ospfv3'" { 1926 description 1927 "This augmentation is only valid for OSPFv3."; 1928 } 1930 description 1931 "Flex-algo definition TLVs for OSPFv3 Router Information LSA."; 1933 uses fad-tlvs; 1934 } 1936 augment "/rt:routing/" 1937 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1938 + "ospf:ospf/ospf:areas/" 1939 + "ospf:area/ospf:database/" 1940 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1941 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 1942 + "ospf:ospfv3/ospf:body/ospf:router-information" { 1943 when "../../../../../../../../../../" 1944 + "rt:type = 'ospf:ospfv3'" { 1945 description 1946 "This augmentation is only valid for OSPFv3."; 1947 } 1949 description 1950 "Flex-algo definition TLVs for OSPFv3 Router Information LSA."; 1952 uses fad-tlvs; 1953 } 1955 augment "/rt:routing/" 1956 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1957 + "ospf:ospf/ospf:database/" 1958 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1959 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 1960 + "ospf:ospfv3/ospf:body/ospf:router-information" { 1961 when "../../../../../../../../" 1962 + "rt:type = 'ospf:ospfv3'" { 1963 description 1964 "This augmentation is only valid for OSPFv3."; 1965 } 1966 description 1967 "Flex-algo definition TLVs for OSPFv3 Router Information LSA."; 1969 uses fad-tlvs; 1970 } 1972 augment "/rt:routing/" 1973 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1974 + "ospf:ospf/ospf:areas/ospf:area/" 1975 + "ospf:interfaces/ospf:interface/ospf:database/" 1976 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 1977 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 1978 + "ospf:ospfv2/ospf:body/ospf:opaque/" 1979 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 1980 when "../../../../../../../../../../../../../../" 1981 + "rt:type = 'ospf:ospfv2'" { 1982 description 1983 "This augmentation is only valid for OSPFv2."; 1984 } 1985 description 1986 "Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV 1987 in type 9 opaque LSA."; 1988 uses fapm-sub-tlvs; 1989 } 1991 augment "/rt:routing/" 1992 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1993 + "ospf:ospf/ospf:areas/" 1994 + "ospf:area/ospf:database/" 1995 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1996 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 1997 + "ospf:ospfv2/ospf:body/ospf:opaque/" 1998 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 1999 when "../../../../../../../../../../../../" 2000 + "rt:type = 'ospf:ospfv2'" { 2001 description 2002 "This augmentation is only valid for OSPFv2."; 2003 } 2004 description 2005 "Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV 2006 in type 10 opaque LSA."; 2007 uses fapm-sub-tlvs; 2008 } 2010 augment "/rt:routing/" 2011 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2012 + "ospf:ospf/ospf:database/" 2013 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 2014 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 2015 + "ospf:ospfv2/ospf:body/ospf:opaque/" 2016 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 2017 when "../../../../../../../../../../" 2018 + "rt:type = 'ospf:ospfv2'" { 2019 description 2020 "This augmentation is only valid for OSPFv2."; 2021 } 2022 description 2023 "Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV 2024 in type 11 opaque LSA."; 2025 uses fapm-sub-tlvs; 2026 } 2028 /* Flex-algo prefix metric Sub-TLV in OSPFv3 Inter-Area Prefix TLV */ 2029 augment "/rt:routing/" 2030 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2031 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 2032 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2033 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 2034 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/" 2035 + "ospfv3-e-lsa:e-inter-prefix-tlvs/ospfv3-e-lsa:inter-prefix-tlv" { 2036 when "../../../../../../../../../../../../" 2037 + "rt:type = 'ospf:ospfv3'" { 2038 description 2039 "This augmentation is only valid for OSPFv3 2040 E-Router LSAs"; 2041 } 2042 uses fapm-sub-tlvs; 2043 description 2044 "OSPFv3 Area-Scoped Inter-Area Prefix TLV."; 2045 } 2047 /* Flex-algo prefix metric Sub-TLV in OSPFv3 External Prefix TLV */ 2048 augment "/rt:routing/" 2049 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2050 + "ospf:ospf/ospf:database/" 2051 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 2052 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 2053 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" 2054 + "ospfv3-e-lsa:e-external-tlvs/ospfv3-e-lsa:external-prefix-tlv" { 2055 when "'ospf:../../../../../../../../../" 2056 + "rt:type' = 'ospf:ospfv3'" { 2057 description 2058 "This augmentation is only valid for OSPFv3."; 2059 } 2060 uses fapm-sub-tlvs; 2061 description 2062 "OSPFv3 AS-Scoped External Prefix TLV."; 2063 } 2065 /* OSPFv2 Extended Inter-Area ASBR LSA */ 2066 augment "/rt:routing/" 2067 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2068 + "ospf:ospf/ospf:areas/" 2069 + "ospf:area/ospf:database/" 2070 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2071 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 2072 + "ospf:ospfv2/ospf:body/ospf:opaque" { 2073 when "../../../../../../../../../../" 2074 + "rt:type = 'ospf:ospfv2'" { 2075 description 2076 "This augmentation is only valid for OSPFv2."; 2077 } 2078 description 2079 "OSPFv2 Extended Inter-Area ASBR LSA in type 10 2080 opaque LSA."; 2082 container eia-asbr-opaque { 2083 container eia-asbr-tlv { 2084 leaf asbr-rtr-id { 2085 type rt-types:router-id; 2086 description 2087 "The OSPF Router ID of the ASBR."; 2088 } 2089 uses faam-sub-tlvs; 2090 uses ospf:unknown-tlvs; 2091 description 2092 "EIA-ASBR TLV, used to advertise additional attributes 2093 associated with the reachability of an ASBR."; 2094 } 2095 uses ospf:unknown-tlvs; 2097 description 2098 "OSPFv2 Extended Inter-Area (EIA-ASBR) opaque LSA."; 2099 } 2100 } 2101 /* FAAM Sub-TLV in OSPFv3 Inter-Area-Router TLV */ 2102 augment "/rt:routing/" 2103 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2104 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 2105 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2106 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 2107 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-router/" 2108 + "ospfv3-e-lsa:e-inter-router-tlvs/" 2109 + "ospfv3-e-lsa:inter-router-tlv" { 2110 when "../../../../../../../../../../../../" 2111 + "rt:type = 'ospf:ospfv3'" { 2112 description 2113 "This augmentation is only valid for OSPFv3 2114 Inter-Area-Router TLV."; 2115 } 2116 uses faam-sub-tlvs; 2117 description 2118 "OSPFv3 Area-Scoped Inter-Area-Router TLV."; 2119 } 2120 } 2121 2123 8. Security Considerations 2125 The YANG modules specified in this document define a schema for data 2126 that is designed to be accessed via network management protocols such 2127 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2128 is the secure transport layer, and the mandatory-to-implement secure 2129 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2130 is HTTPS, and the mandatory-to-implement secure transport is TLS 2131 [RFC5246]. 2133 The NETCONF access control model [RFC6536] provides the means to 2134 restrict access for particular NETCONF or RESTCONF users to a pre- 2135 configured subset of all available NETCONF or RESTCONF protocol 2136 operations and content. 2138 There are a number of data nodes defined in the modules that are 2139 writable/creatable/deletable (i.e., config true, which is the 2140 default). These data nodes may be considered sensitive or vulnerable 2141 in some network environments. Write operations (e.g., edit-config) 2142 to these data nodes without proper protection can have a negative 2143 effect on network operations. 2145 Some of the readable data nodes in the modules may be considered 2146 sensitive or vulnerable in some network environments. It is thus 2147 important to control read access (e.g., via get, get-config, or 2148 notification) to these data nodes. The exposure of the Link State 2149 Database (LSDB) will expose the detailed topology of the network. 2150 This may be undesirable since both due to the fact that exposure may 2151 facilitate other attacks. Additionally, network operators may 2152 consider their topologies to be sensitive confidential data. 2154 9. IANA Considerations 2156 This document registers URIs in the IETF XML registry [RFC3688]. 2157 Following the format in [RFC3688], the following registrations is 2158 requested to be made: 2160 URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-te 2161 Registrant Contact: The IESG. 2162 XML: N/A, the requested URI is an XML namespace. 2164 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-two-metric 2165 Registrant Contact: The IESG. 2166 XML: N/A, the requested URI is an XML namespace. 2168 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-grace-linkdown 2169 Registrant Contact: The IESG. 2170 XML: N/A, the requested URI is an XML namespace. 2172 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-lls-localid 2173 Registrant Contact: The IESG. 2174 XML: N/A, the requested URI is an XML namespace. 2176 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr 2177 Registrant Contact: The IESG. 2178 XML: N/A, the requested URI is an XML namespace. 2180 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo 2181 Registrant Contact: The IESG. 2182 XML: N/A, the requested URI is an XML namespace. 2184 This document registers the YANG modules in the YANG Module Names 2185 registry [RFC6020]. 2187 name: ietf-ospfv3-te 2188 namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-te 2189 prefix: ospfv3-te 2190 reference: RFC XXXX 2192 name: ietf-ospf-two-metric 2193 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-two-metric 2194 prefix: ospf-two-metric 2195 reference: RFC XXXX 2196 name: ietf-ospf-grace-linkdown 2197 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-grace-linkdown 2198 prefix: ospf-grace-linkdown 2199 reference: RFC XXXX 2201 name: ietf-ospf-lls-localid 2202 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-lls-localid 2203 prefix: ospf-lls-localid 2204 reference: RFC XXXX 2206 name: ietf-ospf-link-attr 2207 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr 2208 prefix: ospf-link-attr 2209 reference: RFC XXXX 2211 name: ietf-ospf-flex-algo 2212 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo 2213 prefix: ospf-flex-algo 2214 reference: RFC XXXX 2216 10. Acknowledgements 2218 This document was produced using Marshall Rose's xml2rfc tool. 2220 The YANG model was developed using the suite of YANG tools written 2221 and maintained by numerous authors. 2223 11. Normative References 2225 [I-D.ietf-lsr-flex-algo] 2226 Psenak, P., Hegde, S., Filsfils, C., Talaulikar, K., and 2227 A. Gulko, "IGP Flexible Algorithm", draft-ietf-lsr-flex- 2228 algo-15 (work in progress), April 2021. 2230 [I-D.ietf-ospf-yang] 2231 Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem, 2232 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 2233 yang-29 (work in progress), October 2019. 2235 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2236 Requirement Levels", BCP 14, RFC 2119, 2237 DOI 10.17487/RFC2119, March 1997, 2238 . 2240 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2241 DOI 10.17487/RFC3688, January 2004, 2242 . 2244 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 2245 (TLS) Protocol Version 1.2", RFC 5246, 2246 DOI 10.17487/RFC5246, August 2008, 2247 . 2249 [RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed., 2250 "Traffic Engineering Extensions to OSPF Version 3", 2251 RFC 5329, DOI 10.17487/RFC5329, September 2008, 2252 . 2254 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2255 the Network Configuration Protocol (NETCONF)", RFC 6020, 2256 DOI 10.17487/RFC6020, October 2010, 2257 . 2259 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2260 and A. Bierman, Ed., "Network Configuration Protocol 2261 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2262 . 2264 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2265 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2266 . 2268 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2269 Protocol (NETCONF) Access Control Model", RFC 6536, 2270 DOI 10.17487/RFC6536, March 2012, 2271 . 2273 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 2274 RFC 7950, DOI 10.17487/RFC7950, August 2016, 2275 . 2277 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 2278 Management", RFC 8022, DOI 10.17487/RFC8022, November 2279 2016, . 2281 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2282 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2283 . 2285 [RFC8042] Zhang, Z., Wang, L., and A. Lindem, "OSPF Two-Part 2286 Metric", RFC 8042, DOI 10.17487/RFC8042, December 2016, 2287 . 2289 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 2290 Routing Management (NMDA Version)", RFC 8349, 2291 DOI 10.17487/RFC8349, March 2018, 2292 . 2294 [RFC8379] Hegde, S., Sarkar, P., Gredler, H., Nanduri, M., and L. 2295 Jalil, "OSPF Graceful Link Shutdown", RFC 8379, 2296 DOI 10.17487/RFC8379, May 2018, 2297 . 2299 [RFC8510] Psenak, P., Ed., Talaulikar, K., Henderickx, W., and P. 2300 Pillay-Esnault, "OSPF Link-Local Signaling (LLS) 2301 Extensions for Local Interface ID Advertisement", 2302 RFC 8510, DOI 10.17487/RFC8510, January 2019, 2303 . 2305 [RFC8920] Psenak, P., Ed., Ginsberg, L., Henderickx, W., Tantsura, 2306 J., and J. Drake, "OSPF Application-Specific Link 2307 Attributes", RFC 8920, DOI 10.17487/RFC8920, October 2020, 2308 . 2310 Authors' Addresses 2312 Acee Lindem 2313 Cisco Systems 2314 301 Midenhall Way 2315 Cary, NC 27513 2317 EMail: acee@cisco.com 2319 Yingzhen Qu 2320 Futurewei 2321 2330 Central Expressway 2322 Santa Clara, CA 95050 2323 USA 2325 EMail: yingzhen.qu@futurewei.com