idnits 2.17.1 draft-dontula-lsr-yang-dynamic-flooding-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** There are 77 instances of too long lines in the document, the longest one being 261 characters in excess of 72. 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 (September 4, 2019) is 1694 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-42) exists of draft-ietf-isis-yang-isis-cfg-35 == Outdated reference: A later version (-18) exists of draft-ietf-lsr-dynamic-flooding-03 ** Downref: Normative reference to an Experimental draft: draft-ietf-lsr-dynamic-flooding (ref. 'I-D.ietf-lsr-dynamic-flooding') -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO10589' Summary: 3 errors (**), 0 flaws (~~), 5 warnings (==), 3 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: March 7, 2020 Arista Networks 6 September 4, 2019 8 YANG Data Model for Dynamic Flooding 9 draft-dontula-lsr-yang-dynamic-flooding-01 11 Abstract 13 This document defins YANG data models that can be used to configure 14 and manage Dynamic Flooding for IS-IS and OSPF. 16 Status of This Memo 18 This Internet-Draft is submitted in full conformance with the 19 provisions of BCP 78 and BCP 79. 21 Internet-Drafts are working documents of the Internet Engineering 22 Task Force (IETF). Note that other groups may also distribute 23 working documents as Internet-Drafts. The list of current Internet- 24 Drafts is at https://datatracker.ietf.org/drafts/current/. 26 Internet-Drafts are draft documents valid for a maximum of six months 27 and may be updated, replaced, or obsoleted by other documents at any 28 time. It is inappropriate to use Internet-Drafts as reference 29 material or to cite them other than as "work in progress." 31 This Internet-Draft will expire on March 7, 2020. 33 Copyright Notice 35 Copyright (c) 2019 IETF Trust and the persons identified as the 36 document authors. All rights reserved. 38 This document is subject to BCP 78 and the IETF Trust's Legal 39 Provisions Relating to IETF Documents 40 (https://trustee.ietf.org/license-info) in effect on the date of 41 publication of this document. Please review these documents 42 carefully, as they describe your rights and restrictions with respect 43 to this document. Code Components extracted from this document must 44 include Simplified BSD License text as described in Section 4.e of 45 the Trust Legal Provisions and are provided without warranty as 46 described in the Simplified BSD License. 48 Table of Contents 50 1. Requirements Language . . . . . . . . . . . . . . . . . . . . 2 51 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 52 3. OSPF Data Model . . . . . . . . . . . . . . . . . . . . . . . 2 53 4. IS-IS Data Model . . . . . . . . . . . . . . . . . . . . . . 9 54 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18 55 6. Security Considerations . . . . . . . . . . . . . . . . . . . 18 56 7. Normative References . . . . . . . . . . . . . . . . . . . . 18 57 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 59 1. Requirements Language 61 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 62 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 63 document are to be interpreted as described in RFC 2119 [RFC2119]. 65 2. Introduction 67 This document defines a YANG [RFC7950] data model for IS-IS 68 [ISO10589] and OSPF [RFC2328] routing protocols. 70 3. OSPF Data Model 72 module ietf-dynamic-flooding-ospf { 73 yang-version 1.1; 74 namespace "urn:ietf:params:xml:ns:yang:ietf-dynamic-flooding-ospf"; 76 prefix ospf-df; 78 import ietf-ospf { 79 prefix "ospf"; 80 reference "RFC XXXX - YANG model for Open Shortest Path First (OSPF). 81 Please replace XXXX with published RFC number for draft-ietf-ospf-yang-21."; 82 } 83 import ietf-yang-types { 84 prefix "yang"; 85 reference "RFC 6991: Common YANG Data Types"; 86 } 88 import ietf-routing { 89 prefix "rt"; 90 reference "RFC 8349 - A YANG Data Model for Routing 91 Management (NMDA Version)"; 92 } 94 organization 95 "IETF LSR - Link State Routing Working Group"; 97 contact 98 " 99 WG Web: 100 101 WG List: 102 104 Editor: Srinath Dontula 105 106 Author: Tony Li 107 108 Author: Peter Psenak 109 110 Author: Les Ginsberg 111 112 Author: Huaimo Chen 113 114 Author: Tony Przygienda 115 116 Author: Dave Cooper 117 118 Author: Luay Jalil 119 "; 121 description 122 " 123 Copyright (c) 2019 IETF Trust and the persons identified as 124 authors of the code. All rights reserved. 126 Redistribution and use in source and binary forms, with or 127 without modification, is permitted pursuant to, and subject to 128 the license terms contained in, the Simplified BSD License set 129 forth in Section 4.c of the IETF Trust's Legal Provisions 130 Relating to IETF Documents 131 (https://trustee.ietf.org/license-info). 133 This version of this YANG module is part of RFC XXXX 134 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself 135 for full legal notices. 136 "; 138 revision 2019-08-16 { 139 description 140 "Initial draft version."; 141 reference 142 "RFC XXXX: A YANG data model for OSPF Dense topology"; 143 } 144 feature dynamic-flooding-ospf { 145 description 146 "suport for OSPF dynamic flooding"; 147 reference " RFC XXXX - Dynamic Flooding on Dense Graphs"; 148 } 150 /* 151 * identity ospfv2-dynamic-flooding-opaque-lsa { 152 * base ospf:ospfv2-area-scope-opaque-lsa; 153 * description 154 * "OSPFv2 dynamic-flooding-opaque-lsa. RFC XXX- Replace XXXX with published RFC number for draft-ietf-lsr-dynamic-flooding "; 155 * } 156 * 157 * identity ospfv3-dynamic-flooding-opaque-lsa { 158 * base ospf:ospfv3-lsa-type; 159 * description 160 * "OSPFv3 dynamic-flooding-opaque-lsa. RFC XXX- Replace XXXX with published RFC number for draft-ietf-lsr-dynamic-flooding "; 161 * } 162 */ 164 identity ospfv2-dynamic-flooding-opaque-lsa { 165 base ospf:ospfv2-opaque-lsa-type; 166 description "OSPFv2 Dynamic Flooding Opaque LSA - Type TBD"; 167 } 169 identity ospfv3-dynamic-flooding-opaque-lsa { 170 base ospf:ospfv3-lsa-type; 171 description "OSPFv3 Dynamic Flooding LSA - Type TBD"; 172 } 174 grouping ospf-area-leader-tlv { 175 description "Area leader TLV for OSPFv2/OSPFv3. A TLV of RI LSA"; 176 leaf priority { 177 type uint8; 178 description "Router's priority for Area leader"; 179 } 180 leaf Algorithm { 181 type uint8; 182 description "Routers Algorithm to calculate Flooding Topology."; 183 } 184 } 186 grouping dynamic-flooding-tlv { 187 description "Dynamic-flooding TLV for OSPFv2/OSPFv3. A TLV of RI LSA"; 188 leaf-list algorithm { 189 type uint8; 190 description "List of Algorithm's supported by the advertising node"; 191 } 192 } 194 grouping ospfv2-area-router-id-tlv-entry { 195 description "ospfv2 area router ID TLV enties"; 196 leaf connection-type { 197 type uint8; 198 description "Defines the connection type "; 199 } 200 leaf number-of-ids { 201 type uint16; 202 description "the number of ID present in this TLV entry"; 203 } 204 leaf-list originating-router-id { 205 type yang:dotted-quad; 206 description "list of the originating-router-ids"; 208 } 209 } 211 grouping ospfv2-area-router-id-tlv { 212 description "definition for OSPFv2 Dynamic flooding area router-ID TLV"; 213 leaf start-index { 214 type uint16; 215 description "Starting index of the first router/designated router ID"; 216 } 217 leaf last-flag { 218 type bits { 219 bit last-router-designated-router-id { 220 description "when set, this TLV is the last Index in the full list of router IDs for the area"; 221 reference "RFC XXXX- Dynamic flooding on Dense graphs; Replace XXXX with published RFC number for 222 draft-ietf-lsr-dynamic-flooding-03"; 223 } 224 } 225 description "last flag"; 226 } 227 list ospfv2-router-id-tlv-entry { 228 description "list of ospfv2 router-ID TLV entries"; 229 uses ospfv2-area-router-id-tlv-entry; 230 } 231 } 233 grouping ospfv3-area-router-id-tlv-entry { 234 description "ospfv3 area router ID TLV enties"; 235 leaf connection-type { 236 type uint8; 237 description "Defines the connection type "; 238 } 239 leaf number-of-ids { 240 type uint16; 241 description "the number of ID present in this TLV entry"; 242 } 243 choice originating-router-id { 244 description "list of the originating-router-ids"; 245 container router-id { 246 when "derived-from(../connection-type,'router')" { 247 description "Only applies when connection type is Router"; 248 } 249 description "originating-router-id"; 250 leaf-list originating-router-id { 251 type yang:dotted-quad; 252 description "list of the originating-router-ids"; 253 } 254 } 255 container designated-router-id { 256 when "derived-from(../connection-type,'designated-router')" { 257 description "Only applies when connection type is designated Router"; 258 } 259 description "originating-router-id"; 260 list originating-router-id-list { 261 description "originating-router-id"; 262 leaf originating-router-id{ 263 type yang:dotted-quad; 264 description "originating-router-ids"; 265 } 266 leaf inteface-id{ 267 type yang:dotted-quad; 268 description "interface-ids"; 269 } 270 } 271 } 272 } 273 } 275 grouping ospfv3-area-router-id-tlv { 276 description "definition for OSPFv3 Dynamic flooding area router-ID TLV"; 277 leaf start-index { 278 type uint16; 279 description "Starting index of the first router/designated router ID"; 280 } 281 leaf last-flag { 282 type bits { 283 bit last-router-designated-router-id { 284 description "when set, this TLV is the last Index in the full list of router IDs for the area"; 285 reference "RFC XXXX- Dynamic flooding on Dense graphs; Replace XXXX with published RFC number for draft-ietf-lsr-dynamic-flooding-03"; 286 } 287 } 288 description "dynamic flooding area router-ID flag definitions"; 289 } 290 list ospfv3-router-id-tlv-entry { 291 description "list of OSPFv3 router-ID TLV entries"; 292 uses ospfv3-area-router-id-tlv-entry; 293 } 294 } 296 grouping flooding-path-tlv { 297 description "definition for OSPFv2/OSPFv3 Flooding Path TLV"; 298 leaf start-index { 299 type uint16; 300 description "Starting index of the first router/designated router ID"; 301 } 302 leaf-list indices { 303 type uint16; 304 description "index of the next router ID in the path"; 305 } 306 } 308 grouping flooding-request-bit{ 309 description "definition for adding Floding request bit (FR-bit) to LLS type-1 extended options. Need to be defined"; 311 } 313 grouping link-attribute-bits-tlv{ 314 description "definition for link-attribute-bits-tlv, a sub-tlv for OSPFv2 Extended link TLV and a sub-tlv for OSPFv3 router-link TLV"; 315 leaf link-attributes-bits{ 316 type bits { 317 bit LEEF { 318 description "when set, conveys which edges are currently enabled in the flooding topology"; 319 } 320 } 321 description "link-attributes-bits"; 322 } 323 } 325 /* 326 * Dynamic flooding config augmentation to OSPF Module 327 */ 328 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" { 329 if-feature dynamic-flooding-ospf; 330 description "Dynamic-flooding config model augmentation"; 331 container dynamic-flooding { 332 description "to Enable/Disable dynamic flooding for this specific OSPF area"; 333 leaf enable { 334 type boolean; 335 description "Enable/Disable dynamic-flooding"; 336 } 337 } 338 } 340 /* 341 * Dynamic flooding state augmentation to OSPF2 module 342 */ 344 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque" { 345 if-feature dynamic-flooding-ospf; 346 description "dynamic flooding TLVs augmentation"; 347 container area-leader-tlv { 348 description "Area-leader-tlv"; 349 uses ospf-area-leader-tlv; 350 } 351 container dynamic-flooding-tlv { 352 description "dynamic-flooding-tlv"; 353 uses dynamic-flooding-tlv; 354 } 355 } 357 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body" { 358 if-feature dynamic-flooding-ospf; 359 description "ospfv2-dynamic-flooding-opaque-lsa augmentation"; 360 container ospfv2-dynamic-flooding-opaque-lsa { 362 description "OSPFv2 Dynamic flooding opaque LSA."; 363 // uses unknown-tlvs; 364 container ospfv2-area-router-id-tlv { 365 description "ospfv2-area-router-id-tlv"; 366 uses ospfv2-area-router-id-tlv; 367 } 368 container flooding-path-tlv { 369 description "ospf flooding-path-tlv"; 370 uses flooding-path-tlv; 371 } 372 } 373 } 375 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque/ospf:extended-link-opaque/ospf:extended-link-tlv" { 376 if-feature dynamic-flooding-ospf; 377 description "ospf-link-attributes-bits-tlv augmentation"; 378 container ospf-link-attributes-bits-tlv { 379 description "ospf link attributes bits tlv. RFC XXXX- Dynamic flooding on Dense graphs; Replace XXXX with published RFC number for draft-ietf-lsr-dynamic-flooding-03"; 380 uses link-attribute-bits-tlv; 382 } 383 } 385 /* 386 * Dynamic flooding state augmentation to OSPF3 module 387 */ 388 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body/ospf:router-information" { 389 if-feature dynamic-flooding-ospf; 390 description "dynamic flooding TLVs augmentation"; 391 container area-leader-tlv { 392 description "Area-leader-tlv"; 393 uses ospf-area-leader-tlv; 394 } 395 container dynamic-flooding-tlv { 396 description "dynamic-flooding-tlv"; 397 uses dynamic-flooding-tlv; 398 } 399 } 401 augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body" { 402 if-feature dynamic-flooding-ospf; 403 description "ospfv3-dynamic-flooding-opaque-lsa augmentation"; 404 container ospfv3-dynamic-flooding-opaque-lsa { 406 description "ospfv3-dynamic-flooding-opaque-lsa definition"; 407 // uses unknown-tlvs; 408 container ospfv3-area-router-id-tlv { 409 description "ospfv3-area-router-id-tlv"; 410 uses ospfv3-area-router-id-tlv; 411 } 412 container flooding-path-tlv { 413 description "ospf flooding-path-tlv"; 414 uses flooding-path-tlv; 415 } 417 } 418 } 419 } 421 4. IS-IS Data Model 423 This data model augments the IS-IS YANG model 424 [I-D.ietf-isis-yang-isis-cfg] with extensions to support Dynamic 425 Flooding [I-D.ietf-lsr-dynamic-flooding]. 427 module ietf-isis-dynflood { 428 yang-version 1.1; 429 // IETF: 430 namespace "urn:ietf:params:xml:ns:yang:ietf-isis-dynflood"; 431 // OpenConfig: 432 // namespace "http://openconfig.net/yang/openconfig-isis-dynflood"; 434 prefix isis-dynflood; 436 // OpenConfig: 437 // import openconfig-network-instance { 438 // prefix oc-netinst; 439 // } 441 // NB: This module is currently under development and is intended to augment 442 // the IETF IS-IS module (currently draft-ietf-isis-yang-isis-cfg-35). 443 // While that is in process, we are developing against the openconfig model, and 444 // references to IETF paths are commented out. 446 // IETF: 447 import ietf-routing { 448 prefix "rt"; 449 reference "RFC 8349 - A YANG Data Model for Routing Management (NMDA Version)"; 450 } 452 import ietf-isis { 453 prefix "isis"; 454 reference "https://tools.ietf.org/id/draft-ietf-isis-yang-isis-cfg-35.txt"; 455 } 457 organization "IETF LSR Working Group"; 458 contact "WG List: "; 459 description " 461 First draft of a YANG model for IS-IS dynamic flooding. 463 Copyright (c) 2019 IETF Trust and the persons identified as 464 authors of the code. All rights reserved. 466 Redistribution and use in source and binary forms, with or 467 without modification, is permitted pursuant to, and subject to 468 the license terms contained in, the Simplified BSD License set 469 forth in Section 4.c of the IETF Trust's Legal Provisions 470 Relating to IETF Documents 471 (https://trustee.ietf.org/license-info). 473 This version of this YANG module is part of RFC XXXX 474 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself 475 for full legal notices. 477 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 478 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 479 'MAY', and 'OPTIONAL' in this document are to be interpreted as 480 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 481 they appear in all capitals, as shown here. 483 Authors: 484 Srinath Dontula 485 487 Tony Li 488 "; 490 revision 2019-08-22 { 491 description "Initial revision"; 492 reference "RFC XXXX"; 493 } 495 // OpenConfig: 496 // typedef extended-system-id { 497 // type string { 498 // pattern 499 // '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.' 500 // +'[0-9][0-9]'; 501 // } 502 // description 503 // "This type defines IS-IS system-id using pattern. The extended 504 // system-id contains the pseudonode number in addition to the 505 // system-id. 506 // An example system-id is 0143.0438.AEF0.00"; 507 // } 509 feature area-leader { 510 description "Election of a leader for the area."; 511 } 513 feature dynamic-flooding { 514 if-feature area-leader; 515 description "Compute a reduced flooding topology."; 516 } 518 grouping area-leader-global-cfg { 519 description "Enable area leader capability"; 520 leaf value { 521 type boolean; 522 default false; 523 description "Enable area leader capability"; 524 } 526 } 528 grouping area-leader-priority-cfg { 529 description "Set the area leader priority"; 530 leaf value { 531 type uint8; 532 default 200; 533 description "Area leader priority"; 534 } 535 } 537 grouping area-leader-algorithm-cfg { 538 description "Select the flooding topology computation algorithm"; 539 leaf value { 540 type uint8; 541 default 0; 542 description "Dynamic flooding algorithm selection"; 543 } 544 } 546 grouping area-leader-parameters { 547 description "Area leader configuration parameters"; 548 container area-leader { 549 description "Area leader configuration parameters"; 550 container config { 551 description "Area leader configuration"; 552 container enable { 553 if-feature area-leader; 554 description "Area leader global enable configuration"; 555 uses area-leader-global-cfg; 556 container level-1 { 557 description "level-1 specific configuration"; 558 uses area-leader-global-cfg; 559 } 560 container level-2 { 561 description "level-2 specific configuration"; 562 uses area-leader-global-cfg; 563 } 564 } 566 container priority { 567 if-feature area-leader; 568 description "Area leader priority configuration"; 569 uses area-leader-priority-cfg; 570 container level-1 { 571 description "level-1 specific configuration"; 572 uses area-leader-priority-cfg; 573 } 574 container level-2 { 575 description "level-2 specific configuration"; 576 uses area-leader-priority-cfg; 577 } 578 } 580 container algorithm { 581 if-feature dynamic-flooding; 582 description "Area leader algorithm configuration"; 583 uses area-leader-algorithm-cfg; 584 container level-1 { 585 description "level-1 specific configuration"; 586 uses area-leader-algorithm-cfg; 587 } 588 container level-2 { 589 description "level-2 specific configuration"; 590 uses area-leader-algorithm-cfg; 591 } 592 } 593 } 594 } 595 } 597 grouping dynamic-flooding-global-cfg { 598 description "Enable dynamic flooding capability"; 599 leaf value { 600 type boolean; 601 default false; 602 description "Enable dynamic flooding capability"; 603 } 604 } 606 grouping dynamic-flooding-parameters { 607 description "Dynamic flooding configuration parameters"; 608 container dynamic-flooding { 609 description "Dynamic flooding configuration parameters"; 610 container config { 611 description "Dynamic flooding configuration"; 612 container enable { 613 if-feature dynamic-flooding; 614 description "Dynamic flooding global enable configuration"; 615 uses dynamic-flooding-global-cfg; 616 container level-1 { 617 description "level-1 specific configuration"; 618 uses dynamic-flooding-global-cfg; 619 } 620 container level-2 { 621 description "level-2 specific configuration"; 622 uses dynamic-flooding-global-cfg; 623 } 624 } 625 } 626 } 627 } 629 // IETF: 630 augment "/rt:routing/rt:control-plane-protocols/" 631 +"rt:control-plane-protocol/isis:isis" { 632 // OpenConfig: 633 // augment "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global" { 634 description "Area leader and dynamic flooding configuration additions"; 635 uses area-leader-parameters; 636 uses dynamic-flooding-parameters; 637 } 639 grouping dynamic-flooding-paths { 640 description "List of paths in the topology"; 641 list paths { 642 config false; 643 description "A list of paths"; 644 leaf-list path { 645 type uint16; 646 description "A list of node indicies"; 647 } 648 } 649 } 651 grouping dynamic-flooding-topology { 652 description "List of paths in the topology"; 653 list paths { 654 config false; 655 description "A list of paths"; 656 leaf-list path { 657 type string; 658 description "A list of node names"; 659 } 660 } 661 } 663 grouping dynamic-flooding-interfaces { 664 description "List of flooding topology interfaces"; 665 list interfaces { 666 config false; 667 description "List of interfaces and their temporary status"; 668 leaf inteface { 669 type string; 670 description "Interface name"; 671 } 672 leaf temporary { 673 type boolean; 674 description "Set for partition repair or new adjacencies"; 675 } 676 } 677 } 679 grouping area-leader-state { 680 description "Area leader state information"; 681 container area-leader-state { 682 description "Area leader election result"; 683 leaf area-leader { 684 type string; 685 description "Hostname of the area leader"; 686 } 687 } 688 } 690 grouping dynamic-flooding-state { 691 description "State information for dynamic flooding"; 692 container area-node-ids { 693 if-feature dynamic-flooding; 694 description "Area node ids and indices"; 695 container area-node-ids { 696 description "List of nodes and indices"; 697 list node-index { 698 key index; 699 description "List of nodes and their indices"; 700 leaf index { 701 type uint16; 702 description "Index for the node"; 703 } 704 leaf node-id { 705 // OpenConfig: 706 // type extended-system-id; 707 // IETF: 708 type isis:extended-system-id; 709 description "Node id for the node"; 710 } 711 } 712 } 713 } 714 container dynamic-flooding-paths { 715 if-feature dynamic-flooding; 716 description "Flooding topology with explicit paths"; 717 uses dynamic-flooding-paths; 719 } 720 container dynamic-flooding-topology { 721 if-feature dynamic-flooding; 722 description "Flooding topology with system names"; 723 uses dynamic-flooding-topology; 724 } 725 container dynamic-flooding-interfaces { 726 if-feature dynamic-flooding; 727 description "Interfaces on the flooding topology"; 728 uses dynamic-flooding-interfaces; 729 } 730 } 732 // IETF: 733 augment "/rt:routing/rt:control-plane-protocols/" 734 +"rt:control-plane-protocol/isis:isis" { 735 // OpenConfig: 736 // augment "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:levels/oc-netinst:level/oc-netinst:state" { 737 description "Area leader and dynamic flooding state additions"; 738 uses area-leader-state; 739 uses dynamic-flooding-state; 740 } 742 grouping subtlv27-area-leader { 743 description "Router capability subTLV for area leader capability"; 744 container area-leader { 745 description "Area leader subTLV for router capabilities"; 746 leaf priority { 747 type uint8; 748 description "Area leader priority"; 749 } 750 leaf algorithm { 751 type uint8; 752 description "Algorithm index for computing the flooding topology"; 753 } 754 } 755 } 757 grouping subtlv28-dynamic-flooding { 758 description "Dynamic flooding capability subTLV"; 759 container dynamic-flooding { 760 description "Dynamic flooding capability subTLV"; 761 leaf-list algorithms { 762 type uint8; 763 description "Supported algorithm indices for distributed mode"; 764 } 765 } 766 } 767 // OpenConfig: 768 // augment "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:levels/oc-netinst:level/oc-netinst:link-state-database/oc-netinst:lsp/oc-netinst:tlvs/oc-netinst:tlv/oc-netinst:router-capabilities/oc-netinst:capability/oc-netinst:subtlvs/oc-netinst:subtlv" { 769 // IETF: 770 augment "/rt:routing/rt:control-plane-protocols" 771 +"/rt:control-plane-protocol/isis:isis" 772 +"/isis:database/isis:levels/isis:lsp/isis:router-capabilities/isis:router-capability" { 773 description "Additional router capability subTLVs for dynamic flooding"; 774 uses subtlv27-area-leader; 775 uses subtlv28-dynamic-flooding; 776 } 778 grouping tlv17-area-node-ids { 779 description "TLV 17: Area Node IDs"; 780 container area-node-ids { 781 description "Dynamic flooding node id assignment TLV"; 782 leaf starting-index { 783 type uint8; 784 description "Starting index for the node ids in this TLV."; 785 } 786 leaf flags { 787 type bits { 788 bit last { 789 position 0; 790 description "Set if this is the highest set of indices in the area."; 791 } 792 } 793 description "Flags field in the TLV."; 794 } 795 leaf-list nodes { 796 // OpenConfig: 797 // type extended-system-id; 798 // IETF: 799 type isis:extended-system-id; 800 description "Nodes being assigned indices"; 801 } 802 } 803 } 805 grouping tlv18-flooding-path { 806 description "Flooding topology path TLV"; 807 container flooding-path { 808 description "Dynamic flooding path TLV"; 809 leaf-list nodes { 810 type uint16; 811 description "Nodes in the path"; 812 } 813 } 814 } 815 // OpenConfig: 816 // augment "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:levels/oc-netinst:level/oc-netinst:link-state-database/oc-netinst:lsp/oc-netinst:tlvs/oc-netinst:tlv" { 817 // IETF: 818 augment "/rt:routing/rt:control-plane-protocols" 819 +"/rt:control-plane-protocol/isis:isis/isis:database/isis:levels/isis:lsp" { 820 description "Additional TLVs for dynamic flooding"; 821 uses tlv17-area-node-ids; 822 uses tlv18-flooding-path; 823 } 824 } 826 5. Acknowledgements 828 The authors would like to thank Derek Yeung, Nidhi Bhaskar, and 829 Kavitha Prasad for their comments and assistance. 831 6. Security Considerations 833 This document introduces no new security issues. 835 7. Normative References 837 [I-D.ietf-isis-yang-isis-cfg] 838 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 839 Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- 840 isis-yang-isis-cfg-35 (work in progress), March 2019. 842 [I-D.ietf-lsr-dynamic-flooding] 843 Li, T., Psenak, P., Ginsberg, L., Chen, H., Przygienda, 844 T., Cooper, D., Jalil, L., and S. Dontula, "Dynamic 845 Flooding on Dense Graphs", draft-ietf-lsr-dynamic- 846 flooding-03 (work in progress), June 2019. 848 [ISO10589] 849 International Organization for Standardization, 850 "Intermediate System to Intermediate System Intra-Domain 851 Routing Exchange Protocol for use in Conjunction with the 852 Protocol for Providing the Connectionless-mode Network 853 Service (ISO 8473)", ISO/IEC 10589:2002, Nov. 2002. 855 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 856 Requirement Levels", BCP 14, RFC 2119, 857 DOI 10.17487/RFC2119, March 1997, 858 . 860 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 861 DOI 10.17487/RFC2328, April 1998, 862 . 864 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 865 RFC 7950, DOI 10.17487/RFC7950, August 2016, 866 . 868 Authors' Addresses 870 Srinath Dontula 871 ATT 872 200 S. Laurel Ave 873 Middletown, New Jersey 07748 874 United States of America 876 Email: sd947e@att.com 878 Tony Li 879 Arista Networks 880 5453 Great America Parkway 881 Santa Clara, California 95054 882 United States of America 884 Email: tony.li@tony.li