idnits 2.17.1 draft-ietf-lsr-ospfv3-extended-lsa-yang-04.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (August 12, 2020) is 1351 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) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) Summary: 2 errors (**), 0 flaws (~~), 2 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet A. Lindem 3 Internet-Draft S. Palani 4 Intended status: Standards Track Cisco Systems 5 Expires: February 13, 2021 Y. Qu 6 Futurewei 7 August 12, 2020 9 YANG Model for OSPFv3 Extended LSAs 10 draft-ietf-lsr-ospfv3-extended-lsa-yang-04 12 Abstract 14 This document defines a YANG data model augmenting the IETF OSPF YANG 15 model to provide support for OSPFv3 Link State Advertisement (LSA) 16 Extensibility as defined in RFC 8362. OSPFv3 Extended LSAs provide 17 extensible TLV-based LSAs for the base LSA types defined in RFC 5340. 19 Status of This Memo 21 This Internet-Draft is submitted in full conformance with the 22 provisions of BCP 78 and BCP 79. 24 Internet-Drafts are working documents of the Internet Engineering 25 Task Force (IETF). Note that other groups may also distribute 26 working documents as Internet-Drafts. The list of current Internet- 27 Drafts is at https://datatracker.ietf.org/drafts/current/. 29 Internet-Drafts are draft documents valid for a maximum of six months 30 and may be updated, replaced, or obsoleted by other documents at any 31 time. It is inappropriate to use Internet-Drafts as reference 32 material or to cite them other than as "work in progress." 34 This Internet-Draft will expire on February 13, 2021. 36 Copyright Notice 38 Copyright (c) 2020 IETF Trust and the persons identified as the 39 document authors. All rights reserved. 41 This document is subject to BCP 78 and the IETF Trust's Legal 42 Provisions Relating to IETF Documents 43 (https://trustee.ietf.org/license-info) in effect on the date of 44 publication of this document. Please review these documents 45 carefully, as they describe your rights and restrictions with respect 46 to this document. Code Components extracted from this document must 47 include Simplified BSD License text as described in Section 4.e of 48 the Trust Legal Provisions and are provided without warranty as 49 described in the Simplified BSD License. 51 Table of Contents 53 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 54 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 55 2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . . 2 56 3. OSPFv3 Extended LSAs . . . . . . . . . . . . . . . . . . . . 3 57 4. OSPFv3 Extended LSA Yang Module . . . . . . . . . . . . . . . 7 58 5. Security Considerations . . . . . . . . . . . . . . . . . . . 23 59 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 60 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 24 61 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 62 8.1. Normative References . . . . . . . . . . . . . . . . . . 24 63 8.2. Informative References . . . . . . . . . . . . . . . . . 26 64 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 66 1. Overview 68 YANG [RFC6020] [RFC7950] is a data definition language used to define 69 the contents of a conceptual data store that allows networked devices 70 to be managed using NETCONF [RFC6241]. YANG is proving relevant 71 beyond its initial confines, as bindings to other interfaces (e.g., 72 ReST) and encodings other than XML (e.g., JSON) are being defined. 73 Furthermore, YANG data models can be used as the basis for 74 implementation of other interfaces, such as CLI and programmatic 75 APIs. 77 This document defines a YANG data model augmenting the IETF OSPF YANG 78 model [I-D.ietf-ospf-yang], which itself augments [RFC8349], to 79 provide support for configuration and operational state for OSPFv3 80 Extended LSAs as defined in [RFC8362]. 82 The YANG modules in this document conform to the Network Management 83 Datastore Architecture (NMDA) [RFC8342]. 85 1.1. Requirements Language 87 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 88 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 89 document are to be interpreted as described in [RFC2119] [RFC8174]. 91 2. Tree Diagrams 93 This document uses the graphical representation of data models 94 defined in [RFC8340]. 96 3. OSPFv3 Extended LSAs 98 This document defines a model for the OSPFv3 Extended LSA feature. 99 It is an augmentation of the OSPF base model provided support for 100 OSPFv3 Link State Advertisement (LSA) Extensibility [RFC8362]. 101 OSPFv3 Extended LSAs provide extensible TLV-based LSAs for the base 102 LSA types defined in [RFC5340]. 104 The OSPFv3 Extended LSA YANG module requires support for the OSPF 105 base model[I-D.ietf-ospf-yang] which defines basic OSPF configuration 106 and state. The OSPF YANG model augments the ietf-routing YANG model 107 defined in [RFC8022]. The augmentations defined in the ietf-ospfv3- 108 extended-lsa YANG model will provide global configuration, area 109 configuration, and addition of OSPFv3 Extended LSAs to the Link State 110 Database (LSDB) operational state. 112 module: ietf-ospfv3-extended-lsa 113 augment /rt:routing/rt:control-plane-protocols 114 /rt:control-plane-protocol/ospf:ospf: 115 +--rw extended-lsa-support? boolean 116 augment /rt:routing/rt:control-plane-protocols 117 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area: 118 +--rw extended-lsa-support? boolean 119 augment /rt:routing/rt:control-plane-protocols 120 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 121 /ospf:interfaces/ospf:interface/ospf:database 122 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 123 /ospf:link-scope-lsa/ospf:version/ospf:ospfv3 124 /ospf:ospfv3/ospf:body: 125 +--ro e-link 126 +--ro rtr-priority? uint8 127 +--ro lsa-options 128 | +--ro lsa-options* identityref 129 +--ro e-link-tlvs* [] 130 +--ro unknown-tlv 131 | +--ro type? uint16 132 | +--ro length? uint16 133 | +--ro value? yang:hex-string 134 +--ro intra-prefix-tlv 135 | +--ro intra-prefix-tlv-length? uint16 136 | +--ro metric? rt-types:uint24 137 | +--ro prefix? inet:ip-prefix 138 | +--ro prefix-options 139 | | +--ro prefix-options* identityref 140 | +--ro prefix-length? uint8 141 | +--ro sub-tlvs* [] 142 | +--ro unknown-sub-tlv 143 | +--ro type? uint16 144 | +--ro length? uint16 145 | +--ro value? yang:hex-string 146 +--ro ipv6-link-local-tlv 147 | +--ro ipv6-link-local-tlv-length? uint16 148 | +--ro link-local-address? inet:ipv6-address 149 | +--ro sub-tlvs* [] 150 | +--ro unknown-sub-tlv 151 | +--ro type? uint16 152 | +--ro length? uint16 153 | +--ro value? yang:hex-string 154 +--ro ipv4-link-local-tlv 155 +--ro ipv4-link-local-tlv-length? uint16 156 +--ro link-local-address? inet:ipv4-address 157 +--ro sub-tlvs* [] 158 +--ro unknown-sub-tlv 159 +--ro type? uint16 160 +--ro length? uint16 161 +--ro value? yang:hex-string 162 augment /rt:routing/rt:control-plane-protocols 163 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 164 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 165 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3 166 /ospf:ospfv3/ospf:body: 167 +--ro e-router 168 | +--ro router-bits 169 | | +--ro rtr-lsa-bits* identityref 170 | +--ro lsa-options 171 | | +--ro lsa-options* identityref 172 | +--ro e-router-tlvs* [] 173 | +--ro unknown-tlv 174 | | +--ro type? uint16 175 | | +--ro length? uint16 176 | | +--ro value? yang:hex-string 177 | +--ro link-tlv 178 | +--ro link-tlv-length? uint16 179 | +--ro interface-id? uint32 180 | +--ro neighbor-interface-id? uint32 181 | +--ro neighbor-router-id? rt-types:router-id 182 | +--ro type? uint8 183 | +--ro metric? uint16 184 | +--ro sub-tlvs* [] 185 | +--ro unknown-sub-tlv 186 | +--ro type? uint16 187 | +--ro length? uint16 188 | +--ro value? yang:hex-string 189 +--ro e-network 190 | +--ro lsa-options 191 | | +--ro lsa-options* identityref 192 | +--ro e-network-tlvs* [] 193 | +--ro unknown--tlv 194 | | +--ro type? uint16 195 | | +--ro length? uint16 196 | | +--ro value? yang:hex-string 197 | +--ro attached-router-tlv 198 | +--ro attached-router-tlv-length? uint16 199 | +--ro Adjacent-neighbor-router-id* rt-types:router-id 200 | +--ro sub-tlvs* [] 201 | +--ro unknown-sub-tlv 202 | +--ro type? uint16 203 | +--ro length? uint16 204 | +--ro value? yang:hex-string 205 +--ro e-inter-area-prefix 206 | +--ro e-inter-prefix-tlvs* [] 207 | +--ro unknown--tlv 208 | | +--ro type? uint16 209 | | +--ro length? uint16 210 | | +--ro value? yang:hex-string 211 | +--ro inter-prefix-tlv 212 | +--ro inter-prefix-tlv-length? uint16 213 | +--ro metric? rt-types:uint24 214 | +--ro prefix? inet:ip-prefix 215 | +--ro prefix-options 216 | | +--ro prefix-options* identityref 217 | +--ro prefix-length? uint8 218 | +--ro sub-tlvs* [] 219 | +--ro unknown-sub-tlv 220 | +--ro type? uint16 221 | +--ro length? uint16 222 | +--ro value? yang:hex-string 223 +--ro e-inter-area-router 224 | +--ro e-inter-router-tlvs* [] 225 | +--ro unknown-tlv 226 | | +--ro type? uint16 227 | | +--ro length? uint16 228 | | +--ro value? yang:hex-string 229 | +--ro inter-router-tlv 230 | +--ro inter-router-tlv-length? uint16 231 | +--ro router-bits 232 | | +--ro rtr-lsa-bits* identityref 233 | +--ro lsa-options 234 | | +--ro lsa-options* identityref 235 | +--ro metric? rt-types:uint24 236 | +--ro destination-router-id? rt-types:router-id 237 | +--ro sub-tlvs* [] 238 | +--ro unknown-sub-tlv 239 | +--ro type? uint16 240 | +--ro length? uint16 241 | +--ro value? yang:hex-string 242 +--ro e-intra-area-prefix 243 +--ro referenced-ls-type? uint16 244 +--ro referenced-link-state-id? uint32 245 +--ro referenced-adv-router? rt-types:router-id 246 +--ro e-intra-prefix-tlvs* [] 247 +--ro unknown-tlv 248 | +--ro type? uint16 249 | +--ro length? uint16 250 | +--ro value? yang:hex-string 251 +--ro intra-prefix-tlv 252 +--ro intra-prefix-tlv-length? uint16 253 +--ro metric? rt-types:uint24 254 +--ro prefix? inet:ip-prefix 255 +--ro prefix-options 256 | +--ro prefix-options* identityref 257 +--ro prefix-length? uint8 258 +--ro sub-tlvs* [] 259 +--ro unknown-sub-tlv 260 +--ro type? uint16 261 +--ro length? uint16 262 +--ro value? yang:hex-string 263 augment /rt:routing/rt:control-plane-protocols 264 /rt:control-plane-protocol/ospf:ospf/ospf:database 265 /ospf:as-scope-lsa-type/ospf:as-scope-lsas 266 /ospf:as-scope-lsa/ospf:version/ospf:ospfv3 267 /ospf:ospfv3/ospf:body: 268 +--ro e-as-external 269 | +--ro e-external-tlvs* [] 270 | +--ro unknown-tlv 271 | | +--ro type? uint16 272 | | +--ro length? uint16 273 | | +--ro value? yang:hex-string 274 | +--ro external-prefix-tlv 275 | +--ro external-prefix-tlv-length? uint16 276 | +--ro flags 277 | | +--ro ospfv3-e-external-prefix-bits* identityref 278 | +--ro metric? rt-types:uint24 279 | +--ro prefix? inet:ip-prefix 280 | +--ro prefix-options 281 | | +--ro prefix-options* identityref 282 | +--ro prefix-length? uint8 283 | +--ro sub-tlvs* [] 284 | +--ro unknown-sub-tlv 285 | | +--ro type? uint16 286 | | +--ro length? uint16 287 | | +--ro value? yang:hex-string 288 | +--ro ipv6-fwd-addr-sub-tlv 289 | | +--ro ipv6-fwd-addr-sub-tlv-length? uint16 290 | | +--ro forwarding-address? inet:ipv6-address 291 | +--ro ipv4-fwd-addr-sub-tlv 292 | | +--ro ipv4-fwd-addr-sub-tlv-length? uint16 293 | | +--ro forwarding-address? inet:ipv4-address 294 | +--ro route-tag-sub-tlv 295 | +--ro route-tag-sub-tlv-length? uint16 296 | +--ro route-tag? uint32 297 +--ro e-nssa 298 +--ro e-external-tlvs* [] 299 +--ro unknown-tlv 300 | +--ro type? uint16 301 | +--ro length? uint16 302 | +--ro value? yang:hex-string 303 +--ro external-prefix-tlv 304 +--ro external-prefix-tlv-length? uint16 305 +--ro flags 306 | +--ro ospfv3-e-external-prefix-bits* identityref 307 +--ro metric? rt-types:uint24 308 +--ro prefix? inet:ip-prefix 309 +--ro prefix-options 310 | +--ro prefix-options* identityref 311 +--ro prefix-length? uint8 312 +--ro sub-tlvs* [] 313 +--ro unknown-sub-tlv 314 | +--ro type? uint16 315 | +--ro length? uint16 316 | +--ro value? yang:hex-string 317 +--ro ipv6-fwd-addr-sub-tlv 318 | +--ro ipv6-fwd-addr-sub-tlv-length? uint16 319 | +--ro forwarding-address? inet:ipv6-address 320 +--ro ipv4-fwd-addr-sub-tlv 321 | +--ro ipv4-fwd-addr-sub-tlv-length? uint16 322 | +--ro forwarding-address? inet:ipv4-address 323 +--ro route-tag-sub-tlv 324 +--ro route-tag-sub-tlv-length? uint16 325 +--ro route-tag? uint32 327 4. OSPFv3 Extended LSA Yang Module 329 The following RFCs and drafts are not referenced in the document text 330 but are referenced in the ietf-ospfv3-extended-lsa.yang module: 331 [RFC6991], [RFC8294]. 333 file "ietf-ospfv3-extended-lsa@2020-08-12.yang" 334 module ietf-ospfv3-extended-lsa { 335 yang-version 1.1; 336 namespace 337 "urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa"; 339 prefix ospfv3-e-lsa; 341 import ietf-routing-types { 342 prefix "rt-types"; 343 reference "RFC 8294 - Common YANG Data Types for the 344 Routing Area"; 345 } 347 import ietf-inet-types { 348 prefix "inet"; 349 reference "RFC 6991 - Common YANG Data Types"; 350 } 352 import ietf-routing { 353 prefix "rt"; 354 reference "RFC 8349 - A YANG Data Model for Routing 355 Management (NMDA Version)"; 356 } 358 import ietf-ospf { 359 prefix "ospf"; 360 reference "RFC YYYY - A YANG Data Model for OSPF 361 Protocol"; 362 } 364 organization 365 "IETF LSR - Link State Routing Working Group"; 367 contact 368 "WG Web: 369 WG List: 371 Author: Acee Lindem 372 373 Author: Sharmila Palani 374 375 Author: Yingzhen Qu 376 "; 378 description 379 "This YANG module defines the configuration 380 and operational state for OSPFv3 Extended LSAs, which is 381 common across all of the vendor implementations. 383 This YANG model conforms to the Network Management 384 Datastore Architecture (NMDA) as described in RFC 8242. 386 Copyright (c) 2020 IETF Trust and the persons identified as 387 authors of the code. All rights reserved. 389 Redistribution and use in source and binary forms, with or 390 without modification, is permitted pursuant to, and subject 391 to the license terms contained in, the Simplified BSD License 392 set forth in Section 4.c of the IETF Trust's Legal Provisions 393 Relating to IETF Documents 394 (http://trustee.ietf.org/license-info). 396 This version of this YANG module is part of RFC XXXX; 397 see the RFC itself for full legal notices."; 399 reference "RFC XXXX"; 401 revision 2020-08-12 { 402 description 403 "Initial revision."; 404 reference 405 "RFC XXXX: A YANG Data Model for OSPFv3 Extended LSAs."; 406 } 408 /* 409 * OSPFv3 Extend LSA Type Identities 410 */ 411 identity ospfv3-e-router-lsa { 412 base ospf:ospfv3-lsa-type; 413 description 414 "OSPFv3 Extended Router LSA - Type 0xA021"; 415 } 417 identity ospfv3-e-network-lsa { 418 base ospf:ospfv3-lsa-type; 419 description 420 "OSPFv3 Extended Network LSA - Type 0xA022"; 421 } 423 identity ospfv3-e-summary-lsa-type { 424 base ospf:ospfv3-lsa-type; 425 description 426 "OSPFv3 Extended Summary LSA types"; 427 } 429 identity ospfv3-e-inter-area-prefix-lsa { 430 base ospfv3-e-summary-lsa-type; 431 description 432 "OSPFv3 Extended Inter-area Prefix LSA - Type 0xA023"; 433 } 435 identity ospfv3-e-inter-area-router-lsa { 436 base ospfv3-e-summary-lsa-type; 437 description 438 "OSPFv3 Extended Inter-area Router LSA - Type 0xA024"; 439 } 441 identity ospfv3-e-external-lsa-type { 442 base ospf:ospfv3-lsa-type; 443 description 444 "OSPFv3 Extended External LSA types"; 445 } 447 identity ospfv3-e-as-external-lsa { 448 base ospfv3-e-external-lsa-type; 449 description 450 "OSPFv3 Extended AS-External LSA - Type 0xC025"; 451 } 453 identity ospfv3-e-nssa-lsa { 454 base ospfv3-e-external-lsa-type; 455 description 456 "OSPFv3 Extended Not-So-Stubby-Area (NSSA) LSA - 457 Type 0xA027"; 458 } 460 identity ospfv3-e-link-lsa { 461 base ospf:ospfv3-lsa-type; 462 description 463 "OSPFv3 Extended Link LSA - Type 0x8028"; 464 } 466 identity ospfv3-e-intra-area-prefix-lsa { 467 base ospf:ospfv3-lsa-type; 468 description 469 "OSPFv3 Extended Intra-area Prefix LSA - Type 0xA029"; 470 } 472 identity ospfv3-e-prefix-option { 473 description 474 "Base identity for OSPFv3 Prefix Options."; 475 } 477 identity nu-bit { 478 base ospfv3-e-prefix-option; 479 description 480 "When set, the prefix should be excluded 481 from IPv6 unicast calculations."; 482 } 484 identity la-bit { 485 base ospfv3-e-prefix-option; 486 description 487 "When set, the prefix is actually an IPv6 interface 488 address of the Advertising Router."; 489 } 491 identity p-bit { 492 base ospfv3-e-prefix-option; 493 description 494 "When set, the NSSA area prefix should be 495 translated to an AS External LSA and advertised 496 by the translating NSSA Border Router."; 497 } 499 identity dn-bit { 500 base ospfv3-e-prefix-option; 501 description 502 "When set, the inter-area-prefix LSA or 503 AS-external LSA prefix has been advertised as an 504 L3VPN prefix."; 505 } 507 identity n-bit { 508 base ospfv3-e-prefix-option; 509 description 510 "When set, the prefix is a host address that identifies 511 the advertising router."; 512 } 514 identity ospfv3-e-external-prefix-option { 515 description 516 "Base identity for OSPFv3 External Prefix Options."; 517 } 519 identity e-bit { 520 base ospfv3-e-external-prefix-option; 521 description 522 "When set, the metric specified is a Type 2 523 external metric."; 524 } 526 grouping unknown-sub-tlv { 527 description 528 "Unknown TLV grouping"; 529 container unknown-sub-tlv { 530 uses ospf:tlv; 531 description "Unknown External TLV Sub-TLV"; 532 } 533 } 535 grouping ospfv3-lsa-prefix { 536 description 537 "OSPFv3 LSA prefix"; 539 leaf prefix { 540 type inet:ip-prefix; 541 description 542 "LSA Prefix"; 543 } 544 container prefix-options { 545 leaf-list prefix-options { 546 type identityref { 547 base ospfv3-e-prefix-option; 548 } 549 description 550 "OSPFv3 prefix option flag list. This list will 551 contain the identities for the OSPFv3 options 552 that are set for the OSPFv3 prefix."; 553 } 554 description "Prefix options."; 555 } 557 leaf prefix-length { 558 type uint8 { 559 range "0..128"; 560 } 561 description "Prefix length."; 562 } 563 } 565 grouping ipv6-fwd-addr-sub-tlv { 566 container ipv6-fwd-addr-sub-tlv { 567 description 568 "IPv6 Forwarding Address Sub-TLV"; 569 leaf ipv6-fwd-addr-sub-tlv-length { 570 type uint16; 571 description 572 "IPv6 Forwarding Addrss Sub-TLV Length - 16 573 for IPv6 address"; 574 } 575 leaf forwarding-address { 576 type inet:ipv6-address; 577 description 578 "Forwarding address"; 579 } 580 } 581 description 582 "IPv6 Forwarding Address Sub-TLV grouping"; 583 } 585 grouping ipv4-fwd-addr-sub-tlv { 586 container ipv4-fwd-addr-sub-tlv { 587 description 588 "IPv4 Forwarding Address Sub-TLV"; 589 leaf ipv4-fwd-addr-sub-tlv-length { 590 type uint16; 591 description 592 "IPv4 Forwarding Addrss Sub-TLV Length - 4 593 for IPv4 address"; 594 } 595 leaf forwarding-address { 596 type inet:ipv4-address; 597 description 598 "Forwarding address"; 599 } 600 } 601 description 602 "IPv4 Forwarding Address Sub-TLV grouping"; 603 } 605 grouping route-tag-sub-tlv { 606 container route-tag-sub-tlv { 607 description 608 "Route Tag Sub-TLV"; 609 leaf route-tag-sub-tlv-length { 610 type uint16; 611 description 612 "Route Tag Sub-TLV Length - 4 for 32-bit tag"; 613 } 614 leaf route-tag { 615 type uint32; 616 description 617 "Route Tag"; 618 } 619 } 620 description 621 "Route Tag Sub-TLV grouping"; 622 } 623 grouping external-prefix-tlv { 624 container external-prefix-tlv { 625 description "External Prefix LSA TLV"; 626 leaf external-prefix-tlv-length { 627 type uint16; 628 description 629 "External Prefix TLV Length - Variable dependent 630 on sub-TLVs"; 631 } 632 container flags { 633 leaf-list ospfv3-e-external-prefix-bits { 634 type identityref { 635 base ospfv3-e-external-prefix-option; 636 } 637 description "OSPFv3 external-prefix TLV bits list."; 638 } 639 description "External Prefix Flags"; 640 } 641 leaf metric { 642 type rt-types:uint24; 643 description "External Prefix Metric"; 644 } 645 uses ospfv3-lsa-prefix; 646 list sub-tlvs { 647 description "External Prefix TLV Sub-TLVs"; 648 uses unknown-sub-tlv; 649 uses ipv6-fwd-addr-sub-tlv; 650 uses ipv4-fwd-addr-sub-tlv; 651 uses route-tag-sub-tlv; 652 } 653 } 654 description "External Prefix TLV Grouping"; 655 } 657 grouping intra-area-prefix-tlv { 658 container intra-prefix-tlv { 659 description "Intra-Area Prefix LSA TLV"; 660 leaf intra-prefix-tlv-length { 661 type uint16; 662 description 663 "Intra-Area Prefix TLV Length - Variable dependent 664 on sub-TLVs"; 665 } 666 leaf metric { 667 type rt-types:uint24; 668 description "Intra-Area Prefix Metric"; 669 } 670 uses ospfv3-lsa-prefix; 671 list sub-tlvs { 672 description "Intra-Area Prefix TLV Sub-TLVs"; 673 uses unknown-sub-tlv; 674 } 675 } 676 description "Intra-Area Prefix TLV Grouping"; 677 } 679 grouping ipv6-link-local-tlv { 680 container ipv6-link-local-tlv { 681 description "IPv6 Link-Local LSA TLV"; 682 leaf ipv6-link-local-tlv-length { 683 type uint16; 684 description 685 "IPv6 Link-Local TLV Length - Variable dependent 686 on sub-TLVs"; 687 } 688 leaf link-local-address { 689 type inet:ipv6-address; 690 description 691 "IPv6 Link Local address"; 692 } 693 list sub-tlvs { 694 description "IPv6 Link Local TLV Sub-TLVs"; 695 uses unknown-sub-tlv; 696 } 697 } 698 description "IPv6 Link-Local TLV Grouping"; 699 } 701 grouping ipv4-link-local-tlv { 702 container ipv4-link-local-tlv { 703 description "IPv4 Link-Local LSA TLV"; 704 leaf ipv4-link-local-tlv-length { 705 type uint16; 706 description 707 "IPv4 Link-Local TLV Length - Variable dependent 708 on sub-TLVs"; 709 } 710 leaf link-local-address { 711 type inet:ipv4-address; 712 description 713 "IPv4 Link Local address"; 714 } 715 list sub-tlvs { 716 description "IPv4 Link Local TLV Sub-TLVs"; 717 uses unknown-sub-tlv; 718 } 720 } 721 description "IPv4 Link-Local TLV Grouping"; 722 } 724 grouping ospfv3-e-lsa-area { 725 description "Area scope OSPFv3 Extended LSAs."; 727 container e-router { 728 when "../../ospf:header/ospf:type = " 729 + "'ospfv3-e-lsa:ospfv3-e-router-lsa'" { 730 description "Only valid for OSPFv3 Extended-Router LSAs"; 731 } 732 description "OSPv3 Extended Router LSA"; 733 uses ospf:ospf-router-lsa-bits; 734 uses ospf:ospfv3-lsa-options; 736 list e-router-tlvs { 737 description "E-Router LSA TLVs"; 738 container unknown-tlv { 739 uses ospf:tlv; 740 description "Unknown E-Router TLV"; 741 } 742 container link-tlv { 743 description "E-Router LSA TLV"; 744 leaf link-tlv-length { 745 type uint16; 746 description 747 "Link TLV Length - Variable dependent on sub-TLVs"; 748 } 749 leaf interface-id { 750 type uint32; 751 description "Interface ID for link"; 752 } 753 leaf neighbor-interface-id { 754 type uint32; 755 description "Neighbor's Interface ID for link"; 756 } 757 leaf neighbor-router-id { 758 type rt-types:router-id; 759 description "Neighbor's Router ID for link"; 760 } 761 leaf type { 762 type uint8; 763 description "Link type: 1 - Point-to-Point Link 764 2 - Transit Network Link 765 3 - Stub Network Link Link 766 4 - Virtual Link"; 767 } 768 leaf metric { 769 type uint16; 770 description "Link Metric"; 771 } 772 list sub-tlvs { 773 description "Link TLV Sub-TLVs"; 774 uses unknown-sub-tlv; 775 } 776 } 777 } 778 } 780 container e-network { 781 when "../../ospf:header/ospf:type = " 782 + "'ospfv3-e-lsa:ospfv3-e-network-lsa'" { 783 description 784 "Only applies to E-Network LSAs."; 785 } 786 description "Extended Network LSA"; 787 uses ospf:ospfv3-lsa-options; 788 list e-network-tlvs { 789 description "E-Network LSA TLVs"; 790 container unknown--tlv { 791 uses ospf:tlv; 792 description "Unknown E-Network TLV"; 793 } 794 container attached-router-tlv { 795 description "Attached Router TLV"; 796 leaf attached-router-tlv-length { 797 type uint16; 798 description 799 "Attached Router TLV Length - Variable dependent 800 on sub-TLVs"; 801 } 802 leaf-list Adjacent-neighbor-router-id { 803 type rt-types:router-id; 804 description "Adjacent Neighbor's Router ID"; 805 } 806 list sub-tlvs { 807 description "Attached Router TLV Sub-TLVs"; 808 uses unknown-sub-tlv; 809 } 810 } 811 } 812 } 814 container e-inter-area-prefix { 815 when "../../ospf:header/ospf:type = " 816 + "'ospfv3-e-lsa:ospfv3-e-inter-area-prefix-lsa'" { 817 description 818 "Only applies to E-Inter-Area-Prefix LSAs."; 819 } 820 description "Extended Inter-Area Prefix LSA"; 821 list e-inter-prefix-tlvs { 822 description "E-Inter-Area-Prefix LSA TLVs"; 823 container unknown--tlv { 824 uses ospf:tlv; 825 description "Unknown E-Inter-Area-Prefix TLV"; 826 } 827 container inter-prefix-tlv { 828 description "Unknown E-Inter-Area-Prefix LSA TLV"; 829 leaf inter-prefix-tlv-length { 830 type uint16; 831 description 832 "Inter-Area-Prefix TLV Length - Variable dependent 833 on sub-TLVs"; 834 } 835 leaf metric { 836 type rt-types:uint24; 837 description "Inter-Area Prefix Metric"; 838 } 839 uses ospfv3-lsa-prefix; 840 list sub-tlvs { 841 description "Inter-Area Prefix TLV Sub-TLVs"; 842 uses unknown-sub-tlv; 843 } 844 } 845 } 846 } 848 container e-inter-area-router { 849 when "../../ospf:header/ospf:type = " 850 + "'ospfv3-e-lsa:ospfv3-e-inter-area-router-lsa'" { 851 description 852 "Only applies to E-Inter-Area-Router LSAs."; 853 } 854 description "Extended Inter-Area Router LSA"; 855 list e-inter-router-tlvs { 856 description "E-Inter-Area-Router LSA TLVs"; 857 container unknown-tlv { 858 uses ospf:tlv; 859 description "Unknown E-Inter-Area-Router TLV"; 860 } 861 container inter-router-tlv { 862 description "Unknown E-Inter-Area-Router LSA TLV"; 863 leaf inter-router-tlv-length { 864 type uint16; 865 description 866 "Inter-Area-Router TLV Length - Variable dependent 867 on sub-TLVs"; 868 } 869 uses ospf:ospf-router-lsa-bits; 870 uses ospf:ospfv3-lsa-options; 871 leaf metric { 872 type rt-types:uint24; 873 description "Inter-Area Router Metric"; 874 } 875 leaf destination-router-id { 876 type rt-types:router-id; 877 description "Destination Router ID"; 878 } 879 list sub-tlvs { 880 description "Inter-Area Router TLV Sub-TLVs"; 881 uses unknown-sub-tlv; 882 } 883 } 884 } 885 } 887 container e-intra-area-prefix { 888 when "../../ospf:header/ospf:type = " 889 + "'ospfv3-e-lsa:ospfv3-e-intra-area-prefix-lsa'" { 890 description 891 "Only applies to E-Intra-Area-Prefix LSAs."; 892 } 893 description "E-Intra-Area-Prefix LSA"; 894 leaf referenced-ls-type { 895 type uint16; 896 description "Referenced Link State type"; 897 } 898 leaf referenced-link-state-id { 899 type uint32; 900 description 901 "Referenced Link State ID"; 902 } 903 leaf referenced-adv-router { 904 type rt-types:router-id; 905 description 906 "Referenced Advertising Router"; 907 } 908 list e-intra-prefix-tlvs { 909 description "E-Intra-Area-Prefix LSA TLVs"; 910 container unknown-tlv { 911 uses ospf:tlv; 912 description "Unknown E-Intra-Area-Prefix TLV"; 913 } 914 uses intra-area-prefix-tlv; 915 } 916 } 917 } 919 grouping ospfv3-e-lsa-as { 920 description "AS scope OSPFv3 Extended LSAs."; 921 container e-as-external { 922 when "../../ospf:header/ospf:type = " 923 + "'ospfv3-e-lsa:ospfv3-e-as-external-lsa'" { 924 description 925 "Only applies to E-AS-external LSAs."; 926 } 927 list e-external-tlvs { 928 description "E-External LSA TLVs"; 929 container unknown-tlv { 930 uses ospf:tlv; 931 description "Unknown E-External TLV"; 932 } 933 uses external-prefix-tlv; 934 } 935 description "E-AS-External LSA."; 936 } 938 container e-nssa { 939 when "../../ospf:header/ospf:type = " 940 + "'ospfv3-e-lsa:ospfv3-e-nssa-lsa'" { 941 description 942 "Only applies to E-NSSA LSAs."; 943 } 944 list e-external-tlvs { 945 description "E-NSSA LSA TLVs"; 946 container unknown-tlv { 947 uses ospf:tlv; 948 description "Unknown E-External TLV"; 949 } 950 uses external-prefix-tlv; 951 } 952 description "E-NSSA LSA."; 953 } 954 } 956 grouping ospfv3-e-lsa-link { 957 description "Link scope OSPFv3 Extended LSAs."; 958 container e-link { 959 when "../../ospf:header/ospf:type = " 960 + "'ospfv3-e-lsa:ospfv3-e-link-lsa'" { 961 description 962 "Only applies to Extended Link LSAs."; 963 } 964 description "E-Link LSA"; 965 leaf rtr-priority { 966 type uint8; 967 description "Router Priority for the interface."; 968 } 969 uses ospf:ospfv3-lsa-options; 970 list e-link-tlvs { 971 description "E-Link LSA TLVs"; 972 container unknown-tlv { 973 uses ospf:tlv; 974 description "Unknown E-Link TLV"; 975 } 976 uses intra-area-prefix-tlv; 977 uses ipv6-link-local-tlv; 978 uses ipv4-link-local-tlv; 979 } 980 } 981 } 983 /* Configuration */ 984 augment "/rt:routing/rt:control-plane-protocols" 985 + "/rt:control-plane-protocol/ospf:ospf" { 986 when "../rt:type = 'ospf:ospfv3'" { 987 description 988 "This augments the OSPFv3 routing protocol when used."; 989 } 990 description 991 "This augments the OSPFv3 protocol configuration 992 with extended lsa."; 993 leaf extended-lsa-support { 994 type boolean; 995 default false; 996 description 997 "Enable OSPFv3 Extended LSA Support for the OSPFv3 998 domain"; 999 } 1000 } 1002 augment "/rt:routing/rt:control-plane-protocols/" 1003 + "rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" { 1004 when "../../../rt:type = 'ospf:ospfv3'" { 1005 description 1006 "This augments the OSPFv3 area configuration 1007 when used."; 1009 } 1010 description 1011 "This augments the OSPFv3 protocol area 1012 configuration with Extend LSA support"; 1013 leaf extended-lsa-support { 1014 type boolean; 1015 default false; 1016 description 1017 "Enable OSPFv3 Extended LSA Support for the OSPFv3 area"; 1018 } 1019 } 1021 /* 1022 * Link State Database (LSDB) Augmentations 1023 */ 1024 augment "/rt:routing/" 1025 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1026 + "ospf:ospf/ospf:areas/ospf:area/" 1027 + "ospf:interfaces/ospf:interface/ospf:database/" 1028 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 1029 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" 1030 + "ospf:ospfv3/ospf:body" { 1031 when "../../../../../../../../../../../" 1032 + "rt:type = 'ospf:ospfv3'" { 1033 description 1034 "This augmentation is only valid for OSPFv3."; 1035 } 1036 description 1037 "OSPFv3 Link-Scoped Extended LSAs"; 1039 uses ospfv3-e-lsa-link; 1040 } 1042 augment "/rt:routing/" 1043 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1044 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 1045 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1046 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 1047 + "ospf:ospfv3/ospf:body" { 1048 when "../../../../../../../../../" 1049 + "rt:type = 'ospf:ospfv3'" { 1050 description 1051 "This augmentation is only valid for OSPFv3."; 1052 } 1053 description 1054 "OSPFv3 Area-Scoped Extended LSAs"; 1056 uses ospfv3-e-lsa-area; 1058 } 1060 augment "/rt:routing/" 1061 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1062 + "ospf:ospf/ospf:database/" 1063 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1064 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 1065 + "ospf:ospfv3/ospf:body" { 1066 when "../../../../../../../" 1067 + "rt:type = 'ospf:ospfv3'" { 1068 description 1069 "This augmentation is only valid for OSPFv3."; 1070 } 1071 description 1072 "OSPFv3 AS-Scoped Extended LSAs"; 1074 uses ospfv3-e-lsa-as; 1075 } 1076 } 1077 1079 5. Security Considerations 1081 The YANG modules specified in this document define a schema for data 1082 that is designed to be accessed via network management protocols such 1083 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 1084 is the secure transport layer, and the mandatory-to-implement secure 1085 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 1086 is HTTPS, and the mandatory-to-implement secure transport is TLS 1087 [RFC8446]. 1089 The NETCONF access control model [RFC6536] provides the means to 1090 restrict access for particular NETCONF or RESTCONF users to a pre- 1091 configured subset of all available NETCONF or RESTCONF protocol 1092 operations and content. 1094 There are a number of data nodes defined in ietf-ospfv3-extended- 1095 lsa.yang module that are writable/creatable/deletable (i.e., config 1096 true, which is the default). These data nodes may be considered 1097 sensitive or vulnerable in some network environments. Write 1098 operations (e.g., edit-config) to these data nodes without proper 1099 protection can have a negative effect on network operations. For 1100 OSPFv3 Extended LSAs, the ability to disable OSPFv3 Extended LSA 1101 support result in a denial of service. 1103 Some of the readable data nodes in the ietf-ospfv3-extended-lsa.yang 1104 module may be considered sensitive or vulnerable in some network 1105 environments. It is thus important to control read access (e.g., via 1106 get, get-config, or notification) to these data nodes. The exposure 1107 of the Link State Database (LSDB) will expose the detailed topology 1108 of the network. This may be undesirable since both due to the fact 1109 that exposure may facilitate other attacks. Additionally, network 1110 operators may consider their topologies to be sensitive confidential 1111 data. 1113 6. IANA Considerations 1115 This document registers a URI in the IETF XML registry [RFC3688]. 1116 Following the format in [RFC3688], the following registration is 1117 requested to be made: 1119 URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa 1120 Registrant Contact: The IESG. 1121 XML: N/A, the requested URI is an XML namespace. 1123 This document registers a YANG module in the YANG Module Names 1124 registry [RFC6020]. 1126 name: ietf-ospfv3-extended-lsa 1127 namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa 1128 prefix: ospfv3-e-lsa 1129 reference: RFC XXXX 1131 7. Acknowledgements 1133 This document was produced using Marshall Rose's xml2rfc tool. 1135 The YANG model was developed using the suite of YANG tools written 1136 and maintained by numerous authors. 1138 8. References 1140 8.1. Normative References 1142 [I-D.ietf-ospf-yang] 1143 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1144 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 1145 yang-29 (work in progress), October 2019. 1147 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1148 Requirement Levels", BCP 14, RFC 2119, 1149 DOI 10.17487/RFC2119, March 1997, 1150 . 1152 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1153 DOI 10.17487/RFC3688, January 2004, 1154 . 1156 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 1157 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 1158 . 1160 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1161 the Network Configuration Protocol (NETCONF)", RFC 6020, 1162 DOI 10.17487/RFC6020, October 2010, 1163 . 1165 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1166 and A. Bierman, Ed., "Network Configuration Protocol 1167 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1168 . 1170 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1171 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1172 . 1174 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1175 Protocol (NETCONF) Access Control Model", RFC 6536, 1176 DOI 10.17487/RFC6536, March 2012, 1177 . 1179 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1180 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1181 . 1183 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1184 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1185 . 1187 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1188 Management", RFC 8022, DOI 10.17487/RFC8022, November 1189 2016, . 1191 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1192 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1193 . 1195 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1196 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1197 May 2017, . 1199 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 1200 "Common YANG Data Types for the Routing Area", RFC 8294, 1201 DOI 10.17487/RFC8294, December 2017, 1202 . 1204 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1205 and R. Wilton, "Network Management Datastore Architecture 1206 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1207 . 1209 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 1210 Routing Management (NMDA Version)", RFC 8349, 1211 DOI 10.17487/RFC8349, March 2018, 1212 . 1214 [RFC8362] Lindem, A., Roy, A., Goethals, D., Reddy Vallem, V., and 1215 F. Baker, "OSPFv3 Link State Advertisement (LSA) 1216 Extensibility", RFC 8362, DOI 10.17487/RFC8362, April 1217 2018, . 1219 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 1220 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 1221 . 1223 8.2. Informative References 1225 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1226 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1227 . 1229 Authors' Addresses 1231 Acee Lindem 1232 Cisco Systems 1233 301 Midenhall Way 1234 Cary, NC 27513 1236 EMail: acee@cisco.com 1238 Sharmila Palani 1239 Cisco Systems 1240 170 West Tasman Drive 1241 San Jose, CA 95134 1243 EMail: shpalani@cisco.com 1244 Yingzhen Qu 1245 Futurewei 1246 2330 Central Expressway 1247 Santa Clara, CA 95050 1248 USA 1250 EMail: yingzhen.qu@futurewei.com