idnits 2.17.1 draft-dontula-lsr-yang-dynamic-flooding-02.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 has text resembling RFC 2119 boilerplate text. -- The document date (March 24, 2020) is 1487 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) -- Looks like a reference, but probably isn't: '1' on line 1251 == Outdated reference: A later version (-18) exists of draft-ietf-lsr-dynamic-flooding-04 ** Downref: Normative reference to an Experimental draft: draft-ietf-lsr-dynamic-flooding (ref. 'I-D.ietf-lsr-dynamic-flooding') Summary: 1 error (**), 0 flaws (~~), 3 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet Engineering Task Force S. Dontula 3 Internet-Draft ATT 4 Intended status: Standards Track T. Li 5 Expires: September 25, 2020 Arista Networks 6 A. Siddiqui 7 ATT 8 March 24, 2020 10 YANG Data Model for Dynamic Flooding 11 draft-dontula-lsr-yang-dynamic-flooding-02 13 Abstract 15 This document defines YANG data models that can be used to configure 16 and manage Dynamic Flooding for IS-IS and OSPF. 18 Status of This Memo 20 This Internet-Draft is submitted in full conformance with the 21 provisions of BCP 78 and BCP 79. 23 Internet-Drafts are working documents of the Internet Engineering 24 Task Force (IETF). Note that other groups may also distribute 25 working documents as Internet-Drafts. The list of current Internet- 26 Drafts is at https://datatracker.ietf.org/drafts/current/. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference 31 material or to cite them other than as "work in progress." 33 This Internet-Draft will expire on September 25, 2020. 35 Copyright Notice 37 Copyright (c) 2020 IETF Trust and the persons identified as the 38 document authors. All rights reserved. 40 This document is subject to BCP 78 and the IETF Trust's Legal 41 Provisions Relating to IETF Documents 42 (https://trustee.ietf.org/license-info) in effect on the date of 43 publication of this document. Please review these documents 44 carefully, as they describe your rights and restrictions with respect 45 to this document. Code Components extracted from this document must 46 include Simplified BSD License text as described in Section 4.e of 47 the Trust Legal Provisions and are provided without warranty as 48 described in the Simplified BSD License. 50 Table of Contents 52 1. Requirements Language . . . . . . . . . . . . . . . . . . . . 2 53 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 54 2.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 2 55 3. OSPF Data Model . . . . . . . . . . . . . . . . . . . . . . . 2 56 3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 57 3.2. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . 4 58 4. IS-IS Data Model . . . . . . . . . . . . . . . . . . . . . . 14 59 4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 14 60 4.2. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . 16 61 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 25 62 6. Security Considerations . . . . . . . . . . . . . . . . . . . 25 63 7. RFC Editor Considerations . . . . . . . . . . . . . . . . . . 25 64 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 65 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 66 9.1. Normative References . . . . . . . . . . . . . . . . . . 25 67 9.2. Informative References . . . . . . . . . . . . . . . . . 26 68 9.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 27 69 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 71 1. Requirements Language 73 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 74 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 75 document are to be interpreted as described in BCP 14 [1] [RFC2119] 76 [RFC8174] when, and only when, they appear in all capitals, as shown 77 here. 79 2. Introduction 81 This document defines a YANG [RFC7950] data model for IS-IS 82 [ISO10589] and OSPF [RFC2328] routing protocols. 84 The YANG data models in this document conform to the Network 85 Management Datastore Architecture defined in [RFC8342]. 87 2.1. Tree Diagrams 89 Tree diagrams used in this document follow the notation defined in 90 [RFC8340]. 92 3. OSPF Data Model 93 3.1. Tree Diagram 95 module: ietf-dynamic-flooding-ospf 96 augment /rt:routing/rt:control-plane-protocols 97 /rt:control-plane-protocol/ospf:ospf/ospf:areas 98 /ospf:area: 99 +--rw dynamic-flooding {dynamic-flooding-ospf}? 100 +--rw enable? boolean 101 +--rw area-leader 102 +--rw enable? boolean 103 +--rw priority? uint8 104 +--rw algorithm? uint8 105 augment /rt:routing/rt:control-plane-protocols 106 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 107 /ospf:database/ospf:area-scope-lsa-type 108 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 109 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: 110 +--ro area-leader-tlv {dynamic-flooding-ospf}? 111 | +--ro priority? uint8 112 | +--ro algorithm? uint8 113 +--ro dynamic-flooding-tlv {dynamic-flooding-ospf}? 114 +--ro algorithms* uint8 115 augment /rt:routing/rt:control-plane-protocols 116 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 117 /ospf:database/ospf:area-scope-lsa-type 118 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 119 /ospf:ospfv2/ospf:ospfv2/ospf:body: 120 +--ro ospfv2-dynamic-flooding-opaque-lsa {dynamic-flooding-ospf}? 121 +--ro ospfv2-area-router-id-tlv 122 | +--ro start-index? uint16 123 | +--ro last-flag? bits 124 | +--ro ospfv2-router-id-tlv-entry* [] 125 | +--ro connection-type? uint8 126 | +--ro number-of-ids? uint16 127 | +--ro originating-router-id* yang:dotted-quad 128 +--ro flooding-path-tlv 129 +--ro start-index? uint16 130 +--ro indices* uint16 131 augment /rt:routing/rt:control-plane-protocols 132 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 133 /ospf:database/ospf:area-scope-lsa-type 134 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 135 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 136 /ospf:extended-link-opaque/ospf:extended-link-tlv: 137 +--ro ospf-link-attributes-bits-tlv {dynamic-flooding-ospf}? 138 +--ro link-attributes-bits? bits 139 augment /rt:routing/rt:control-plane-protocols 140 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 141 /ospf:database/ospf:area-scope-lsa-type 142 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 143 /ospf:ospfv3/ospf:ospfv3/ospf:body 144 /ospf:router-information: 145 +--ro area-leader-tlv {dynamic-flooding-ospf}? 146 | +--ro priority? uint8 147 | +--ro algorithm? uint8 148 +--ro dynamic-flooding-tlv {dynamic-flooding-ospf}? 149 +--ro algorithms* uint8 150 augment /rt:routing/rt:control-plane-protocols 151 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 152 /ospf:database/ospf:area-scope-lsa-type 153 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 154 /ospf:ospfv3/ospf:ospfv3/ospf:body: 155 +--ro ospfv3-dynamic-flooding-opaque-lsa {dynamic-flooding-ospf}? 156 +--ro ospfv3-area-router-id-tlv 157 | +--ro start-index? uint16 158 | +--ro last-flag? bits 159 | +--ro ospfv3-router-id-tlv-entry* [] 160 | +--ro connection-type? uint8 161 | +--ro number-of-ids? uint16 162 | +--ro router-id 163 | | +--ro originating-router-id* yang:dotted-quad 164 | +--ro designated-router-id 165 | +--ro originating-router-id-list* [] 166 | +--ro originating-router-id? yang:dotted-quad 167 | +--ro inteface-id? yang:dotted-quad 168 +--ro flooding-path-tlv 169 +--ro start-index? uint16 170 +--ro indices* uint16 172 3.2. OSPF YANG Module 174 file "ietf-dynamic-flooding-ospf@2019-09-01.yang" 176 module ietf-dynamic-flooding-ospf { 177 yang-version 1.1; 178 namespace "urn:ietf:params:xml:ns:yang:ietf-dynamic-flooding-ospf"; 179 prefix ospf-dynflood; 181 import ietf-ospf { 182 prefix ospf; 183 reference 184 "RFC AAAA: YANG Data Model for OSPF Protocol"; 185 } 186 import ietf-yang-types { 187 prefix yang; 188 reference 189 "RFC 6991: Common YANG Data Types"; 190 } 191 import ietf-routing { 192 prefix rt; 193 reference 194 "RFC 8349 - A YANG Data Model for Routing 195 Management (NMDA Version)"; 196 } 198 organization 199 "IETF LSR - Link State Routing Working Group"; 200 contact 201 " 202 WG Web: 203 204 WG List: 205 207 Editor: Srinath Dontula 208 209 Author: Tony Li 210 211 Author: Athar Siddiqui 212 213 "; 214 description 215 " 216 Copyright (c) 2019 IETF Trust and the persons identified as 217 authors of the code. All rights reserved. 219 Redistribution and use in source and binary forms, with or 220 without modification, is permitted pursuant to, and subject to 221 the license terms contained in, the Simplified BSD License set 222 forth in Section 4.c of the IETF Trust's Legal Provisions 223 Relating to IETF Documents 224 (https://trustee.ietf.org/license-info). 226 This version of this YANG module is part of RFC XXXX 227 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself 228 for full legal notices. 229 "; 231 revision 2019-09-01 { 232 description 233 "Initial draft version."; 235 reference 236 "RFC XXXX: YANG Data Model for Dynamic Flooding"; 237 } 239 feature dynamic-flooding-ospf { 240 description 241 "Support for OSPF dynamic flooding"; 242 reference 243 " RFC YYYY: Dynamic Flooding on Dense Graphs"; 244 } 246 identity ospfv2-dynamic-flooding-opaque-lsa { 247 base ospf:ospfv2-opaque-lsa-type; 248 description 249 "OSPFv2 Dynamic Flooding Opaque LSA - Type 10"; 250 } 252 identity ospfv3-dynamic-flooding-opaque-lsa { 253 base ospf:ospfv3-lsa-type; 254 description 255 "OSPFv3 Dynamic Flooding LSA - Type 16"; 256 } 258 grouping ospf-area-leader-tlv { 259 description 260 "Area leader TLV for OSPFv2/OSPFv3. 261 A TLV of RI LSA"; 262 leaf priority { 263 type uint8; 264 description 265 "Router's priority for Area leader"; 266 } 267 leaf algorithm { 268 type uint8; 269 description 270 "Router's Algorithm to calculate the Flooding 271 Topology."; 272 } 273 } 275 grouping dynamic-flooding-tlv { 276 description 277 "Dynamic-flooding TLV for OSPFv2/OSPFv3. 278 A TLV of RI LSA"; 279 leaf-list algorithms { 280 type uint8; 281 description 282 "List of Algorithms supported by the 283 advertising node"; 284 } 285 } 287 grouping ospfv2-area-router-id-tlv-entry { 288 description 289 "ospfv2 area router ID TLV enties"; 290 leaf connection-type { 291 type uint8; 292 description 293 "Defines the connection type "; 294 } 295 leaf number-of-ids { 296 type uint16; 297 description 298 "the number of ID present in this TLV entry"; 299 } 300 leaf-list originating-router-id { 301 type yang:dotted-quad; 302 description 303 "list of the originating-router-ids"; 304 } 305 } 307 grouping ospfv2-area-router-id-tlv { 308 description 309 "definition for OSPFv2 Dynamic flooding area 310 router-ID TLV"; 311 leaf start-index { 312 type uint16; 313 description 314 "Starting index of the first 315 router/designated router ID"; 316 } 317 leaf last-flag { 318 type bits { 319 bit last-router-designated-router-id { 320 description 321 "when set, this TLV is the 322 last Index in the full list 323 of router IDs for the area"; 324 reference 325 "RFC XXXX: Dynamic Flooding 326 on Dense Graphs"; 327 } 328 } 329 description 330 "last flag"; 332 } 333 list ospfv2-router-id-tlv-entry { 334 description 335 "list of ospfv2 router-ID TLV entries"; 336 uses ospfv2-area-router-id-tlv-entry; 337 } 338 } 340 grouping ospfv3-area-router-id-tlv-entry { 341 description 342 "ospfv3 area router ID TLV enties"; 343 leaf connection-type { 344 type uint8; 345 description 346 "Defines the connection type "; 347 } 348 leaf number-of-ids { 349 type uint16; 350 description 351 "the number of ID present in this 352 TLV entry"; 353 } 354 container router-id { 355 when '../connection-type = 1' { 356 description 357 "Only applies when 358 connection type is Router"; 359 } 360 description 361 "originating-router-id"; 362 leaf-list originating-router-id { 363 type yang:dotted-quad; 364 description 365 "list of the 366 originating-router-ids"; 367 } 368 } 369 container designated-router-id { 370 when '../connection-type = 2' { 371 description 372 "Only applies when 373 connection type is designated Router"; 374 } 375 description 376 "originating-router-id"; 377 list originating-router-id-list { 378 description 379 "originating-router-id"; 381 leaf originating-router-id { 382 type yang:dotted-quad; 383 description 384 "originating-router-ids"; 385 } 386 leaf inteface-id { 387 type yang:dotted-quad; 388 description 389 "interface-ids"; 390 } 391 } 392 } 393 } 395 grouping ospfv3-area-router-id-tlv { 396 description 397 "definition for OSPFv3 Dynamic flooding area 398 router-ID TLV"; 399 leaf start-index { 400 type uint16; 401 description 402 "Starting index of the first 403 router/designated router ID"; 404 } 405 leaf last-flag { 406 type bits { 407 bit last-router-designated-router-id { 408 description 409 "when set, this TLV is the 410 last Index in the full list 411 of router IDs for the area"; 412 reference 413 "RFC XXXX: Dynamic 414 Flooding on Dense Graphs"; 415 } 416 } 417 description 418 "dynamic flooding area router-ID 419 flag definitions"; 420 } 421 list ospfv3-router-id-tlv-entry { 422 description 423 "list of OSPFv3 router-ID TLV entries"; 424 uses ospfv3-area-router-id-tlv-entry; 425 } 426 } 428 grouping flooding-path-tlv { 429 description 430 "definition for OSPFv2/OSPFv3 Flooding Path TLV"; 431 leaf start-index { 432 type uint16; 433 description 434 "Starting index of the first 435 router/designated router ID"; 436 } 437 leaf-list indices { 438 type uint16; 439 description 440 "index of the next router ID in the 441 path"; 442 } 443 } 445 grouping flooding-request-bit { 446 description 447 "definition for adding Floding request bit (FR-bit) to 448 LLS type-1 extended options. Need to be defined"; 449 } 451 grouping link-attribute-bits-tlv { 452 description 453 "definition for link-attribute-bits-tlv, a sub-tlv for 454 OSPFv2 Extended link TLV and a sub-tlv for OSPFv3 455 router-link TLV"; 456 leaf link-attributes-bits { 457 type bits { 458 bit LEEF { 459 description 460 "when set, conveys which edges 461 are currently enabled in the 462 flooding topology"; 463 } 464 } 465 description 466 "link-attributes-bits"; 467 } 468 } 470 /* 471 * Dynamic flooding config augmentation to OSPF Module 472 */ 474 grouping area-leader-configuration { 475 description 476 "Enable area leader capability"; 478 leaf enable { 479 type boolean; 480 default "false"; 481 description 482 "Enable area leader capability"; 483 } 484 leaf priority { 485 type uint8; 486 description 487 "Area leader priority"; 488 } 489 leaf algorithm { 490 type uint8; 491 description 492 "Dynamic flooding algorithm selection"; 493 } 494 } 496 augment 497 "/rt:routing/rt:control-plane-protocols/" 498 + "rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" { 499 if-feature "dynamic-flooding-ospf"; 500 description 501 "Dynamic-flooding config model 502 augmentation"; 503 container dynamic-flooding { 504 description 505 "to Enable/Disable dynamic flooding 506 for this specific OSPF area"; 507 leaf enable { 508 type boolean; 509 description 510 "Enable/Disable dynamic-flooding"; 511 } 512 container area-leader { 513 description 514 "Area leader configuration parameters"; 515 uses area-leader-configuration; 516 } 517 } 518 } 520 /* 521 * Dynamic flooding state augmentation to OSPF2 module 522 */ 524 augment 525 "/rt:routing/rt:control-plane-protocols/" 527 + "rt:control-plane-protocol/ospf:ospf/ospf:areas/" 528 + "ospf:area/ospf:database/ospf:area-scope-lsa-type/" 529 + "ospf:area-scope-lsas/ospf:area-scope-lsa/" 530 + "ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque" { 531 if-feature "dynamic-flooding-ospf"; 532 description 533 "dynamic flooding TLVs augmentation"; 534 container area-leader-tlv { 535 description 536 "Area-leader-tlv"; 537 uses ospf-area-leader-tlv; 538 } 539 container dynamic-flooding-tlv { 540 description 541 "dynamic-flooding-tlv"; 542 uses dynamic-flooding-tlv; 543 } 544 } 546 augment "/rt:routing/rt:control-plane-protocols/" 547 + "rt:control-plane-protocol/ospf:ospf/ospf:areas/" 548 + "ospf:area/ospf:database/ospf:area-scope-lsa-type/" 549 + "ospf:area-scope-lsas/ospf:area-scope-lsa/" 550 + "ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body" { 551 if-feature "dynamic-flooding-ospf"; 552 description 553 "ospfv2-dynamic-flooding-opaque-lsa augmentation"; 554 container ospfv2-dynamic-flooding-opaque-lsa { 555 description 556 "OSPFv2 Dynamic flooding opaque LSA."; 557 // uses unknown-tlvs; 558 container ospfv2-area-router-id-tlv { 559 description 560 "ospfv2-area-router-id-tlv"; 561 uses ospfv2-area-router-id-tlv; 562 } 563 container flooding-path-tlv { 564 description 565 "ospf flooding-path-tlv"; 566 uses flooding-path-tlv; 567 } 568 } 569 } 571 augment "/rt:routing/rt:control-plane-protocols/" 572 + "rt:control-plane-protocol/ospf:ospf/ospf:areas/" 573 + "ospf:area/ospf:database/ospf:area-scope-lsa-type/" 574 + "ospf:area-scope-lsas/ospf:area-scope-lsa/" 575 + "ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/" 576 + "ospf:opaque/ospf:extended-link-opaque/" 577 + "ospf:extended-link-tlv" { 578 if-feature "dynamic-flooding-ospf"; 579 description 580 "ospf-link-attributes-bits-tlv augmentation"; 581 container ospf-link-attributes-bits-tlv { 582 description 583 "ospf link attributes bits tlv."; 584 uses link-attribute-bits-tlv; 585 } 586 } 588 /* 589 * Dynamic flooding state augmentation to OSPF3 module 590 */ 592 augment "/rt:routing/rt:control-plane-protocols/" 593 + "rt:control-plane-protocol/ospf:ospf/ospf:areas/" 594 + "ospf:area/ospf:database/ospf:area-scope-lsa-type/" 595 + "ospf:area-scope-lsas/ospf:area-scope-lsa/" 596 + "ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body/" 597 + "ospf:router-information" { 598 if-feature "dynamic-flooding-ospf"; 599 description 600 "dynamic flooding TLVs augmentation"; 601 container area-leader-tlv { 602 description 603 "Area-leader-tlv"; 604 uses ospf-area-leader-tlv; 605 } 606 container dynamic-flooding-tlv { 607 description 608 "dynamic-flooding-tlv"; 609 uses dynamic-flooding-tlv; 610 } 611 } 613 augment "/rt:routing/rt:control-plane-protocols/" 614 + "rt:control-plane-protocol/ospf:ospf/ospf:areas/" 615 + "ospf:area/ospf:database/ospf:area-scope-lsa-type/" 616 + "ospf:area-scope-lsas/ospf:area-scope-lsa/" 617 + "ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body" { 618 if-feature "dynamic-flooding-ospf"; 619 description 620 "ospfv3-dynamic-flooding-opaque-lsa 621 augmentation"; 622 container ospfv3-dynamic-flooding-opaque-lsa { 623 description 624 "ospfv3-dynamic-flooding-opaque-lsa 625 definition"; 626 // uses unknown-tlvs; 627 container ospfv3-area-router-id-tlv { 628 description 629 "ospfv3-area-router-id-tlv"; 630 uses ospfv3-area-router-id-tlv; 631 } 632 container flooding-path-tlv { 633 description 634 "ospf flooding-path-tlv"; 635 uses flooding-path-tlv; 636 } 637 } 638 } 639 } 641 643 4. IS-IS Data Model 645 This data model augments the IS-IS YANG model 646 [I-D.ietf-isis-yang-isis-cfg] with extensions to support Dynamic 647 Flooding [I-D.ietf-lsr-dynamic-flooding]. 649 4.1. Tree Diagram 651 module: ietf-isis-dynflood 652 augment /rt:routing/rt:control-plane-protocols 653 /rt:control-plane-protocol/isis:isis: 654 +--rw area-leader 655 | +--rw config 656 | +--rw enable {area-leader}? 657 | | +--rw value? boolean 658 | | +--rw level-1 659 | | | +--rw value? boolean 660 | | +--rw level-2 661 | | +--rw value? boolean 662 | +--rw priority {area-leader}? 663 | | +--rw value? uint8 664 | | +--rw level-1 665 | | | +--rw value? uint8 666 | | +--rw level-2 667 | | +--rw value? uint8 668 | +--rw algorithm {dynamic-flooding}? 669 | +--rw value? uint8 670 | +--rw level-1 671 | | +--rw value? uint8 672 | +--rw level-2 673 | +--rw value? uint8 674 +--rw dynamic-flooding 675 +--rw config 676 +--rw enable {dynamic-flooding}? 677 +--rw value? boolean 678 +--rw level-1 679 | +--rw value? boolean 680 +--rw level-2 681 +--rw value? boolean 682 augment /rt:routing/rt:control-plane-protocols 683 /rt:control-plane-protocol/isis:isis: 684 +--rw area-leader-state 685 | +--rw area-leader? string 686 +--rw area-node-ids {dynamic-flooding}? 687 | +--rw area-node-ids 688 | +--rw node-index* [index] 689 | +--rw index uint16 690 | +--rw node-id? isis:extended-system-id 691 +--rw dynamic-flooding-paths {dynamic-flooding}? 692 | +--ro paths* [] 693 | +--ro path* uint16 694 +--rw dynamic-flooding-topology {dynamic-flooding}? 695 | +--ro paths* [] 696 | +--ro path* string 697 +--rw dynamic-flooding-interfaces {dynamic-flooding}? 698 +--ro interfaces* [] 699 +--ro inteface? string 700 +--ro temporary? boolean 701 augment /rt:routing/rt:control-plane-protocols 702 /rt:control-plane-protocol/isis:isis/isis:database 703 /isis:levels/isis:lsp/isis:router-capabilities 704 /isis:router-capability: 705 +--ro area-leader 706 | +--ro priority? uint8 707 | +--ro algorithm? uint8 708 +--ro dynamic-flooding 709 +--ro algorithms* uint8 710 augment /rt:routing/rt:control-plane-protocols 711 /rt:control-plane-protocol/isis:isis/isis:database 712 /isis:levels/isis:lsp: 713 +--ro area-node-ids 714 | +--ro starting-index? uint8 715 | +--ro flags? bits 716 | +--ro nodes* isis:extended-system-id 717 +--ro flooding-path 718 +--ro nodes* uint16 720 4.2. IS-IS YANG Module 722 file "ietf-isis-dynflood@2019-09-01.yang" 723 module ietf-isis-dynflood { 724 yang-version 1.1; 726 // IETF: 727 namespace "urn:ietf:params:xml:ns:yang:ietf-isis-dynflood"; 728 // OpenConfig: 729 // namespace "http://openconfig.net/yang/openconfig-isis-dynflood"; 731 prefix isis-dynflood; 733 // OpenConfig: 734 // import openconfig-network-instance { 735 // prefix oc-netinst; 736 // } 738 // NB: This module is currently under development and is intended to 739 // augment the IETF IS-IS module (currently 740 // draft-ietf-isis-yang-isis-cfg-36). While that is in process, we are 741 // developing against the openconfig model, and references to IETF 742 // paths are commented out. 744 // IETF: 745 import ietf-routing { 746 prefix "rt"; 747 reference 748 "RFC 8349 - A YANG Data Model for Routing Management 749 (NMDA Version)"; 750 } 752 import ietf-isis { 753 prefix "isis"; 754 reference 755 "RFC ZZZZ: YANG Data Model for IS-IS Protocol"; 756 } 758 organization "IETF LSR Working Group"; 759 contact "WG List: "; 760 description " 762 First draft of a YANG model for IS-IS dynamic flooding. 764 Copyright (c) 2019 IETF Trust and the persons identified as 765 authors of the code. All rights reserved. 767 Redistribution and use in source and binary forms, with or 768 without modification, is permitted pursuant to, and subject to 769 the license terms contained in, the Simplified BSD License set 770 forth in Section 4.c of the IETF Trust's Legal Provisions 771 Relating to IETF Documents 772 (https://trustee.ietf.org/license-info). 774 This version of this YANG module is part of RFC XXXX 775 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself 776 for full legal notices. 778 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 779 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 780 'MAY', and 'OPTIONAL' in this document are to be interpreted as 781 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 782 they appear in all capitals, as shown here. 784 Authors: 785 Srinath Dontula 786 788 Tony Li 789 "; 791 revision 2019-09-01 { 792 description "Initial revision"; 793 reference "RFC XXXX"; 794 } 796 // OpenConfig: 797 // typedef extended-system-id { 798 // type string { 799 // pattern 800 // '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.' 801 // +'[0-9][0-9]'; 802 // } 803 // description 804 // "This type defines IS-IS system-id using pattern. The extended 805 // system-id contains the pseudonode number in addition to the 806 // system-id. 807 // An example system-id is 0143.0438.AEF0.00"; 808 // } 810 feature area-leader { 811 description "Election of a leader for the area."; 812 } 814 feature dynamic-flooding { 815 if-feature area-leader; 816 description "Compute a reduced flooding topology."; 817 } 819 grouping area-leader-global-cfg { 820 description "Enable area leader capability"; 821 leaf value { 822 type boolean; 823 default false; 824 description "Enable area leader capability"; 825 } 826 } 828 grouping area-leader-priority-cfg { 829 description "Set the area leader priority"; 830 leaf value { 831 type uint8; 832 default 200; 833 description "Area leader priority"; 834 } 835 } 837 grouping area-leader-algorithm-cfg { 838 description "Select the flooding topology computation algorithm"; 839 leaf value { 840 type uint8; 841 default 0; 842 description "Dynamic flooding algorithm selection"; 843 } 844 } 846 grouping area-leader-parameters { 847 description "Area leader configuration parameters"; 848 container area-leader { 849 description "Area leader configuration parameters"; 850 container config { 851 description "Area leader configuration"; 852 container enable { 853 if-feature area-leader; 854 description "Area leader global enable configuration"; 855 uses area-leader-global-cfg; 856 container level-1 { 857 description "level-1 specific configuration"; 858 uses area-leader-global-cfg; 859 } 860 container level-2 { 861 description "level-2 specific configuration"; 862 uses area-leader-global-cfg; 863 } 865 } 867 container priority { 868 if-feature area-leader; 869 description "Area leader priority configuration"; 870 uses area-leader-priority-cfg; 871 container level-1 { 872 description "level-1 specific configuration"; 873 uses area-leader-priority-cfg; 874 } 875 container level-2 { 876 description "level-2 specific configuration"; 877 uses area-leader-priority-cfg; 878 } 879 } 881 container algorithm { 882 if-feature dynamic-flooding; 883 description "Area leader algorithm configuration"; 884 uses area-leader-algorithm-cfg; 885 container level-1 { 886 description "level-1 specific configuration"; 887 uses area-leader-algorithm-cfg; 888 } 889 container level-2 { 890 description "level-2 specific configuration"; 891 uses area-leader-algorithm-cfg; 892 } 893 } 894 } 895 } 896 } 898 grouping dynamic-flooding-global-cfg { 899 description "Enable dynamic flooding capability"; 900 leaf value { 901 type boolean; 902 default false; 903 description "Enable dynamic flooding capability"; 904 } 905 } 907 grouping dynamic-flooding-parameters { 908 description "Dynamic flooding configuration parameters"; 909 container dynamic-flooding { 910 description "Dynamic flooding configuration parameters"; 911 container config { 912 description "Dynamic flooding configuration"; 913 container enable { 914 if-feature dynamic-flooding; 915 description "Dynamic flooding global enable configuration"; 916 uses dynamic-flooding-global-cfg; 917 container level-1 { 918 description "level-1 specific configuration"; 919 uses dynamic-flooding-global-cfg; 920 } 921 container level-2 { 922 description "level-2 specific configuration"; 923 uses dynamic-flooding-global-cfg; 924 } 925 } 926 } 927 } 928 } 930 // IETF: 931 augment "/rt:routing/rt:control-plane-protocols/" 932 +"rt:control-plane-protocol/isis:isis" { 933 // OpenConfig: 934 // augment "/oc-netinst:network-instances/" + 935 // "oc-netinst:network-instance/oc-netinst:protocols/" + 936 // "oc-netinst:protocol/oc-netinst:isis/oc-netinst:global" { 937 description 938 "Area leader and dynamic flooding configuration additions"; 939 uses area-leader-parameters; 940 uses dynamic-flooding-parameters; 941 } 943 grouping dynamic-flooding-paths { 944 description "List of paths in the topology"; 945 list paths { 946 config false; 947 description "A list of paths"; 948 leaf-list path { 949 type uint16; 950 description "A list of node indicies"; 951 } 952 } 953 } 955 grouping dynamic-flooding-topology { 956 description "List of paths in the topology"; 957 list paths { 958 config false; 959 description "A list of paths"; 960 leaf-list path { 961 type string; 962 description "A list of node names"; 963 } 964 } 965 } 967 grouping dynamic-flooding-interfaces { 968 description "List of flooding topology interfaces"; 969 list interfaces { 970 config false; 971 description "List of interfaces and their temporary status"; 972 leaf inteface { 973 type string; 974 description "Interface name"; 975 } 976 leaf temporary { 977 type boolean; 978 description "Set for partition repair or new adjacencies"; 979 } 980 } 981 } 983 grouping area-leader-state { 984 description "Area leader state information"; 985 container area-leader-state { 986 description "Area leader election result"; 987 leaf area-leader { 988 type string; 989 description "Hostname of the area leader"; 990 } 991 } 992 } 994 grouping dynamic-flooding-state { 995 description "State information for dynamic flooding"; 996 container area-node-ids { 997 if-feature dynamic-flooding; 998 description "Area node ids and indices"; 999 container area-node-ids { 1000 description "List of nodes and indices"; 1001 list node-index { 1002 key index; 1003 description "List of nodes and their indices"; 1004 leaf index { 1005 type uint16; 1006 description "Index for the node"; 1007 } 1008 leaf node-id { 1009 // OpenConfig: 1010 // type extended-system-id; 1011 // IETF: 1012 type isis:extended-system-id; 1013 description "Node id for the node"; 1014 } 1015 } 1016 } 1017 } 1018 container dynamic-flooding-paths { 1019 if-feature dynamic-flooding; 1020 description "Flooding topology with explicit paths"; 1021 uses dynamic-flooding-paths; 1022 } 1023 container dynamic-flooding-topology { 1024 if-feature dynamic-flooding; 1025 description "Flooding topology with system names"; 1026 uses dynamic-flooding-topology; 1027 } 1028 container dynamic-flooding-interfaces { 1029 if-feature dynamic-flooding; 1030 description "Interfaces on the flooding topology"; 1031 uses dynamic-flooding-interfaces; 1032 } 1033 } 1035 // IETF: 1036 augment "/rt:routing/rt:control-plane-protocols/" 1037 +"rt:control-plane-protocol/isis:isis" { 1038 // OpenConfig: 1039 // augment "/oc-netinst:network-instances/" + 1040 // "oc-netinst:network-instance/oc-netinst:protocols/" + 1041 // "oc-netinst:protocol/oc-netinst:isis/" + 1042 // "oc-netinst:levels/oc-netinst:level/oc-netinst:state" { 1043 description "Area leader and dynamic flooding state additions"; 1044 uses area-leader-state; 1045 uses dynamic-flooding-state; 1046 } 1048 grouping subtlv27-area-leader { 1049 description "Router capability subTLV for area leader capability"; 1050 container area-leader { 1051 description "Area leader subTLV for router capabilities"; 1052 leaf priority { 1053 type uint8; 1054 description "Area leader priority"; 1055 } 1056 leaf algorithm { 1057 type uint8; 1058 description 1059 "Algorithm index for computing the flooding topology"; 1060 } 1061 } 1062 } 1064 grouping subtlv28-dynamic-flooding { 1065 description "Dynamic flooding capability subTLV"; 1066 container dynamic-flooding { 1067 description "Dynamic flooding capability subTLV"; 1068 leaf-list algorithms { 1069 type uint8; 1070 description "Supported algorithm indices for distributed mode"; 1071 } 1072 } 1073 } 1075 // OpenConfig: 1076 // augment "/oc-netinst:network-instances/" + 1077 // "oc-netinst:network-instance/" + 1078 // "oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/" + 1079 // "oc-netinst:levels/oc-netinst:level/" + 1080 // "oc-netinst:link-state-database/" + 1081 // "oc-netinst:lsp/oc-netinst:tlvs/oc-netinst:tlv/" + 1082 // "oc-netinst:router-capabilities/oc-netinst:capability/" + 1083 // "oc-netinst:subtlvs/oc-netinst:subtlv" { 1084 // IETF: 1085 augment "/rt:routing/rt:control-plane-protocols" 1086 +"/rt:control-plane-protocol/isis:isis" 1087 +"/isis:database/isis:levels/isis:lsp/isis:router-capabilities/" + 1088 "isis:router-capability" { 1089 description 1090 "Additional router capability subTLVs for dynamic flooding"; 1091 uses subtlv27-area-leader; 1092 uses subtlv28-dynamic-flooding; 1093 } 1095 grouping tlv17-area-node-ids { 1096 description "TLV 17: Area Node IDs"; 1097 container area-node-ids { 1098 description "Dynamic flooding node id assignment TLV"; 1099 leaf starting-index { 1100 type uint8; 1101 description "Starting index for the node ids in this TLV."; 1102 } 1103 leaf flags { 1104 type bits { 1105 bit last { 1106 position 0; 1107 description 1108 "Set if this is the highest set of indices in the area."; 1109 } 1110 } 1111 description "Flags field in the TLV."; 1112 } 1113 leaf-list nodes { 1114 // OpenConfig: 1115 // type extended-system-id; 1116 // IETF: 1117 type isis:extended-system-id; 1118 description "Nodes being assigned indices"; 1119 } 1120 } 1121 } 1123 grouping tlv18-flooding-path { 1124 description "Flooding topology path TLV"; 1125 container flooding-path { 1126 description "Dynamic flooding path TLV"; 1127 leaf-list nodes { 1128 type uint16; 1129 description "Nodes in the path"; 1130 } 1131 } 1132 } 1134 // OpenConfig: 1135 // augment "/oc-netinst:network-instances/" + 1136 // "oc-netinst:network-instance/oc-netinst:protocols/" + 1137 // "oc-netinst:protocol/oc-netinst:isis/" + 1138 // "oc-netinst:levels/oc-netinst:level/" + 1139 // "oc-netinst:link-state-database/" + 1140 // "oc-netinst:lsp/oc-netinst:tlvs/oc-netinst:tlv" { 1141 // IETF: 1142 augment "/rt:routing/rt:control-plane-protocols" + 1143 "/rt:control-plane-protocol/isis:isis/isis:database/isis:levels/" + 1144 "isis:lsp" { 1145 description "Additional TLVs for dynamic flooding"; 1146 uses tlv17-area-node-ids; 1147 uses tlv18-flooding-path; 1148 } 1149 } 1150 1151 5. Acknowledgements 1153 The authors would like to thank Derek Yeung, Nidhi Bhaskar, Tom 1154 Petch, and Kavitha Prasad for their comments and assistance. 1156 6. Security Considerations 1158 This document introduces no new security issues. 1160 7. RFC Editor Considerations 1162 In the body of this document, please replace the following strings 1163 with RFC numbers for the associated document once it is published. 1165 AAAA YANG Data Model for OSPF Protocol [I-D.ietf-ospf-yang] 1167 XXXX This document 1169 YYYY Dynamic Flooding on Dense Graphs 1170 [I-D.ietf-lsr-dynamic-flooding] 1172 ZZZZ YANG Data Model for IS-IS Protocol 1173 [I-D.ietf-isis-yang-isis-cfg] 1175 Please replace "2019-09-01" with the date of publication. 1177 8. IANA Considerations 1179 This document registers two URIs in the IETF XML registry [RFC3688]. 1180 The following registrations are requested: 1182 URI: urn:ietf:params:xml:ns:yang:ietf-dynamic-flooding-ospf 1183 Registrant Contact: The IESG. 1184 XML: N/A, the requested URI is an XML namespace. 1186 URI: urn:ietf:params:xml:ns:yang:ietf-isis-dynflood 1187 Registrant Contact: The IESG. 1188 XML: N/A, the requested URI is an XML namespace. 1190 9. References 1192 9.1. Normative References 1194 [I-D.ietf-isis-yang-isis-cfg] 1195 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 1196 Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- 1197 isis-yang-isis-cfg-42 (work in progress), October 2019. 1199 [I-D.ietf-lsr-dynamic-flooding] 1200 Li, T., Psenak, P., Ginsberg, L., Chen, H., Przygienda, 1201 T., Cooper, D., Jalil, L., and S. Dontula, "Dynamic 1202 Flooding on Dense Graphs", draft-ietf-lsr-dynamic- 1203 flooding-04 (work in progress), November 2019. 1205 [I-D.ietf-ospf-yang] 1206 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1207 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 1208 yang-29 (work in progress), October 2019. 1210 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1211 Requirement Levels", BCP 14, RFC 2119, 1212 DOI 10.17487/RFC2119, March 1997, 1213 . 1215 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1216 DOI 10.17487/RFC3688, January 2004, 1217 . 1219 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1220 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1221 . 1223 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1224 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1225 May 2017, . 1227 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1228 and R. Wilton, "Network Management Datastore Architecture 1229 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1230 . 1232 9.2. Informative References 1234 [ISO10589] 1235 International Organization for Standardization, 1236 "Intermediate System to Intermediate System Intra-Domain 1237 Routing Exchange Protocol for use in Conjunction with the 1238 Protocol for Providing the Connectionless-mode Network 1239 Service (ISO 8473)", ISO/IEC 10589:2002, Nov. 2002. 1241 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 1242 DOI 10.17487/RFC2328, April 1998, 1243 . 1245 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1246 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1247 . 1249 9.3. URIs 1251 [1] https://tools.ietf.org/html/bcp14 1253 Authors' Addresses 1255 Srinath Dontula 1256 ATT 1257 200 S. Laurel Ave 1258 Middletown, New Jersey 07748 1259 United States of America 1261 Email: sd947e@att.com 1263 Tony Li 1264 Arista Networks 1265 5453 Great America Parkway 1266 Santa Clara, California 95054 1267 United States of America 1269 Email: tony.li@tony.li 1271 Athar Siddiqui 1272 ATT 1273 200 S. Laurel Ave 1274 Middletown, New Jersey 07748 1275 United States of America 1277 Email: athar@att.com