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