Skip to main content

YANG Data Model for Dynamic Flooding
draft-dontula-lsr-yang-dynamic-flooding-03

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Expired".
Authors Srinath Dontula , Tony Li
Last updated 2020-09-14
RFC stream (None)
Formats
Additional resources
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-dontula-lsr-yang-dynamic-flooding-03
Internet Engineering Task Force                               S. Dontula
Internet-Draft                                                       ATT
Intended status: Standards Track                                   T. Li
Expires: March 18, 2021                                  Arista Networks
                                                      September 14, 2020

                  YANG Data Model for Dynamic Flooding
               draft-dontula-lsr-yang-dynamic-flooding-03

Abstract

   This document defins YANG data models that can be used to configure
   and manage Dynamic Flooding for IS-IS and OSPF.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on March 18, 2021.

Copyright Notice

   Copyright (c) 2020 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Dontula & Li             Expires March 18, 2021                 [Page 1]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

Table of Contents

   1.  Requirements Language . . . . . . . . . . . . . . . . . . . .   2
   2.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     2.1.  Tree Diagrams . . . . . . . . . . . . . . . . . . . . . .   2
   3.  OSPF Data Model . . . . . . . . . . . . . . . . . . . . . . .   2
     3.1.  Tree Diagram  . . . . . . . . . . . . . . . . . . . . . .   3
     3.2.  OSPF YANG Module  . . . . . . . . . . . . . . . . . . . .   4
   4.  IS-IS Data Model  . . . . . . . . . . . . . . . . . . . . . .  12
     4.1.  Tree Diagram  . . . . . . . . . . . . . . . . . . . . . .  13
     4.2.  IS-IS YANG Module . . . . . . . . . . . . . . . . . . . .  14
   5.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  23
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  23
   7.  RFC Editor Considerations . . . . . . . . . . . . . . . . . .  23
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  24
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  24
     9.1.  Normative References  . . . . . . . . . . . . . . . . . .  24
     9.2.  Informative References  . . . . . . . . . . . . . . . . .  25
     9.3.  URIs  . . . . . . . . . . . . . . . . . . . . . . . . . .  26
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  26

1.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in BCP 14 [1] [RFC2119]
   [RFC8174] when, and only when, they appear in all capitals, as shown
   here.

2.  Introduction

   This document defines a YANG [RFC7950] data model for IS-IS
   [ISO10589] and OSPF [RFC2328] routing protocols.

   The YANG data models in this document conform to the Network
   Management Datastore Architecture defined in [RFC8342].

2.1.  Tree Diagrams

   Tree diagrams used in this document follow the notation defined in
   [RFC8340].

3.  OSPF Data Model

Dontula & Li             Expires March 18, 2021                 [Page 2]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

3.1.  Tree Diagram

module: ietf-dynamic-flooding-ospf
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area:
    +--rw dynamic-flooding {dynamic-flooding-ospf}?
       +--rw enable?   boolean
  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:
    +--ro area-leader-tlv {dynamic-flooding-ospf}?
    |  +--ro priority?    uint8
    |  +--ro Algorithm?   uint8
    +--ro dynamic-flooding-tlv {dynamic-flooding-ospf}?
       +--ro algorithm*   uint8
  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:
    +--ro ospfv2-dynamic-flooding-opaque-lsa {dynamic-flooding-ospf}?
       +--ro ospfv2-area-router-id-tlv
       |  +--ro start-index?                  uint16
       |  +--ro last-flag?                    bits
       |  +--ro ospfv2-router-id-tlv-entry* []
       |     +--ro connection-type?         uint8
       |     +--ro number-of-ids?           uint16
       |     +--ro originating-router-id*   yang:dotted-quad
       +--ro flooding-path-tlv
          +--ro start-index?   uint16
          +--ro indices*       uint16
  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:
    +--ro ospf-link-attributes-bits-tlv {dynamic-flooding-ospf}?
       +--ro link-attributes-bits?   bits
  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:
    +--ro area-leader-tlv {dynamic-flooding-ospf}?

Dontula & Li             Expires March 18, 2021                 [Page 3]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

    |  +--ro priority?    uint8
    |  +--ro Algorithm?   uint8
    +--ro dynamic-flooding-tlv {dynamic-flooding-ospf}?
       +--ro algorithm*   uint8
  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:
    +--ro ospfv3-dynamic-flooding-opaque-lsa {dynamic-flooding-ospf}?
       +--ro ospfv3-area-router-id-tlv
       |  +--ro start-index?                  uint16
       |  +--ro last-flag?                    bits
       |  +--ro ospfv3-router-id-tlv-entry* []
       |     +--ro connection-type?              uint8
       |     +--ro number-of-ids?                uint16
       |     +--ro (originating-router-id)?
       |        +--:(router-id)
       |        |  +--ro router-id
       |        |     +--ro originating-router-id*   yang:dotted-quad
       |        +--:(designated-router-id)
       |           +--ro designated-router-id
       |              +--ro originating-router-id-list* []
       |                 +--ro originating-router-id?   yang:dotted-quad
       |                 +--ro inteface-id?             yang:dotted-quad
       +--ro flooding-path-tlv
          +--ro start-index?   uint16
          +--ro indices*       uint16

3.2.  OSPF YANG Module

<CODE BEGINS> file "ietf-dynamic-flooding-ospf@2019-09-01.yang"
module ietf-dynamic-flooding-ospf {
        yang-version 1.1;
        namespace "urn:ietf:params:xml:ns:yang:ietf-dynamic-flooding-ospf";

        prefix ospf-df;

        import ietf-ospf {
                prefix "ospf";
                reference
                "RFC AAAA: YANG Data Model for OSPF Protocol";
        }
        import ietf-yang-types {
                prefix "yang";
                reference "RFC 6991: Common YANG Data Types";
        }

Dontula & Li             Expires March 18, 2021                 [Page 4]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

        import ietf-routing {
        prefix "rt";
        reference "RFC 8349 - A YANG Data Model for Routing
                                Management (NMDA Version)";
        }

        organization
                "IETF LSR - Link State Routing Working Group";

        contact
                "
                WG Web:
                        <https://datatracker.ietf.org/group/lsr/about/>
                WG List:
                        <mailto: lsr@ietf.org>

                Editor: Srinath Dontula
                                <mailto: sd947e@att.com>";

        description
                "
                Copyright (c) 2019 IETF Trust and the persons identified as
                authors of the code.  All rights reserved.

                Redistribution and use in source and binary forms, with or
                without modification, is permitted pursuant to, and subject to
                the license terms contained in, the Simplified BSD License set
                forth in Section 4.c of the IETF Trust's Legal Provisions
                Relating to IETF Documents
                (https://trustee.ietf.org/license-info).

                This version of this YANG module is part of RFC XXXX
                (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
                for full legal notices.
                ";

        revision 2019-09-01 {
                description
                        "Initial draft version.";
                reference
                        "RFC XXXX: YANG Data Model for Dynamic Flooding";
        }

        feature dynamic-flooding-ospf {
                description
                        "Support for OSPF dynamic flooding";
                reference " RFC YYYY: Dynamic Flooding on Dense Graphs";
        }

Dontula & Li             Expires March 18, 2021                 [Page 5]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

/*
*       identity ospfv2-dynamic-flooding-opaque-lsa {
*               base ospf:ospfv2-area-scope-opaque-lsa;
*               description
*                       "OSPFv2 dynamic-flooding-opaque-lsa.";
*       }
*
*       identity ospfv3-dynamic-flooding-opaque-lsa {
*               base ospf:ospfv3-lsa-type;
*               description
*                       "OSPFv3 dynamic-flooding-opaque-lsa.";
*       }
*/

        identity ospfv2-dynamic-flooding-opaque-lsa {
                base ospf:ospfv2-opaque-lsa-type;
                description "OSPFv2 Dynamic Flooding Opaque LSA - Type 10";
        }

        identity ospfv3-dynamic-flooding-opaque-lsa {
                base ospf:ospfv3-lsa-type;
                description "OSPFv3 Dynamic Flooding LSA - Type 16";
        }

        grouping ospf-area-leader-tlv {
                description "Area leader TLV for OSPFv2/OSPFv3.
                             A TLV of RI LSA";
                leaf priority {
                        type uint8;
                        description "Router's priority for Area leader";
                }
                leaf Algorithm {
                        type uint8;
                        description "Router's Algorithm to calculate the Flooding
                                     Topology.";
                }
        }

        grouping dynamic-flooding-tlv {
                description "Dynamic-flooding TLV for OSPFv2/OSPFv3.
                             A TLV of RI LSA";
                leaf-list algorithm {
                        type uint8;
                        description "List of Algorithms supported by the
                                     advertising node";
                        }

Dontula & Li             Expires March 18, 2021                 [Page 6]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

                }

        grouping ospfv2-area-router-id-tlv-entry {
                description "ospfv2 area router ID TLV enties";
                leaf connection-type {
                        type uint8;
                        description "Defines the connection type ";
                }
                leaf number-of-ids {
                        type uint16;
                        description "the number of ID present in this TLV entry";
                }
                leaf-list originating-router-id {
                        type yang:dotted-quad;
                        description "list of the originating-router-ids";

                }
        }

        grouping ospfv2-area-router-id-tlv {
                description "definition for OSPFv2 Dynamic flooding area
                             router-ID TLV";
                leaf start-index {
                        type uint16;
                        description "Starting index of the first
                                     router/designated router ID";
                }
                leaf last-flag {
                        type bits {
                                bit last-router-designated-router-id {
                                        description
                                          "when set, this TLV is the
                                           last Index in the full list
                                           of router IDs for the area";
                                        reference
                                          "RFC XXXX: Dynamic Flooding
                                           on Dense Graphs";
                                }
                        }
                        description "last flag";
                }
                list ospfv2-router-id-tlv-entry {
                        description "list of ospfv2 router-ID TLV entries";
                        uses ospfv2-area-router-id-tlv-entry;
                }
        }

        grouping ospfv3-area-router-id-tlv-entry {

Dontula & Li             Expires March 18, 2021                 [Page 7]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

                description "ospfv3 area router ID TLV enties";
                leaf connection-type {
                        type uint8;
                        description "Defines the connection type ";
                }
                leaf number-of-ids {
                        type uint16;
                        description "the number of ID present in this
                                     TLV entry";
                }
                choice originating-router-id {
                        description "list of the originating-router-ids";
                        container router-id {
                                when "derived-from(../connection-type,'router')" {
                                        description "Only applies when
                                                     connection type is Router";
                                }
                                description "originating-router-id";
                                leaf-list originating-router-id {
                                        type yang:dotted-quad;
                                        description "list of the
                                                     originating-router-ids";
                                }
                        }
                        container designated-router-id {
                                when "derived-from(../connection-type,'designated-router')" {
                                        description "Only applies when
                                                     connection type is designated Router";
                                }
                                description "originating-router-id";
                                list originating-router-id-list {
                                        description "originating-router-id";
                                        leaf originating-router-id{
                                                type yang:dotted-quad;
                                                description "originating-router-ids";
                                        }
                                        leaf inteface-id{
                                                type yang:dotted-quad;
                                                description "interface-ids";
                                        }
                                }
                        }
                }
        }

        grouping ospfv3-area-router-id-tlv {
                description "definition for OSPFv3 Dynamic flooding area
                             router-ID TLV";

Dontula & Li             Expires March 18, 2021                 [Page 8]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

                leaf start-index {
                        type uint16;
                        description "Starting index of the first
                                     router/designated router ID";
                }
                leaf last-flag {
                        type bits {
                                bit last-router-designated-router-id {
                                        description
                                          "when set, this TLV is the
                                           last Index in the full list
                                           of router IDs for the area";
                                        reference "RFC XXXX: Dynamic
                                                   Flooding on Dense Graphs";
                                }
                        }
                        description "dynamic flooding area router-ID
                                     flag definitions";
                }
                list ospfv3-router-id-tlv-entry {
                        description "list of OSPFv3 router-ID TLV entries";
                        uses ospfv3-area-router-id-tlv-entry;
                }
        }

        grouping flooding-path-tlv {
                description "definition for OSPFv2/OSPFv3 Flooding Path TLV";
                leaf start-index {
                        type uint16;
                        description "Starting index of the first
                                     router/designated router ID";
                }
                leaf-list indices {
                        type uint16;
                        description "index of the next router ID in the
                                     path";
                }
        }

        grouping flooding-request-bit{
                description
                  "definition for adding Floding request bit (FR-bit) to
                   LLS type-1 extended options. Need to be defined";
        }

        grouping link-attribute-bits-tlv{
                description
                  "definition for link-attribute-bits-tlv, a sub-tlv for

Dontula & Li             Expires March 18, 2021                 [Page 9]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

                   OSPFv2 Extended link TLV and a sub-tlv for OSPFv3
                   router-link TLV";
                leaf link-attributes-bits{
                        type bits {
                                bit LEEF {
                                        description
                                          "when set, conveys which edges
                                           are currently enabled in the
                                           flooding topology";
                                }
                        }
                        description "link-attributes-bits";
                }
        }

/*
* Dynamic flooding config augmentation to OSPF Module
*/
        augment "/rt:routing/rt:control-plane-protocols/" +
          "rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" {
                if-feature dynamic-flooding-ospf;
                description "Dynamic-flooding config model
                             augmentation";
                container dynamic-flooding {
                        description "to Enable/Disable dynamic flooding
                                     for this specific OSPF area";
                        leaf enable {
                                type boolean;
                                description "Enable/Disable dynamic-flooding";
                        }
                }
        }

/*
* Dynamic flooding state augmentation to OSPF2 module
*/

        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" {
                if-feature dynamic-flooding-ospf;
                description "dynamic flooding TLVs augmentation";
                container area-leader-tlv {
                        description "Area-leader-tlv";
                        uses ospf-area-leader-tlv;
                }

Dontula & Li             Expires March 18, 2021                [Page 10]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

                container dynamic-flooding-tlv {
                        description "dynamic-flooding-tlv";
                        uses dynamic-flooding-tlv;
                }
        }

        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" {
                if-feature dynamic-flooding-ospf;
                description "ospfv2-dynamic-flooding-opaque-lsa augmentation";
                container ospfv2-dynamic-flooding-opaque-lsa {

                        description "OSPFv2 Dynamic flooding opaque LSA.";
//                      uses unknown-tlvs;
                        container ospfv2-area-router-id-tlv {
                                description "ospfv2-area-router-id-tlv";
                                uses ospfv2-area-router-id-tlv;
                        }
                        container flooding-path-tlv {
                                description "ospf flooding-path-tlv";
                                uses flooding-path-tlv;
                        }
                }
        }

        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" {
                if-feature dynamic-flooding-ospf;
                description "ospf-link-attributes-bits-tlv augmentation";
                container ospf-link-attributes-bits-tlv {
                        description "ospf link attributes bits tlv.";
                        uses link-attribute-bits-tlv;
                }
        }

/*
* Dynamic flooding state augmentation to OSPF3 module
*/
        augment "/rt:routing/rt:control-plane-protocols/" +
                "rt:control-plane-protocol/ospf:ospf/ospf:areas/" +

Dontula & Li             Expires March 18, 2021                [Page 11]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

                "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" {
                if-feature dynamic-flooding-ospf;
                description "dynamic flooding TLVs augmentation";
                container area-leader-tlv {
                        description "Area-leader-tlv";
                        uses ospf-area-leader-tlv;
                }
                container dynamic-flooding-tlv {
                        description "dynamic-flooding-tlv";
                        uses dynamic-flooding-tlv;
                }
        }

        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" {
                if-feature dynamic-flooding-ospf;
                description "ospfv3-dynamic-flooding-opaque-lsa
                             augmentation";
                container ospfv3-dynamic-flooding-opaque-lsa {

                        description "ospfv3-dynamic-flooding-opaque-lsa
                                     definition";
//                      uses unknown-tlvs;
                        container ospfv3-area-router-id-tlv {
                                description "ospfv3-area-router-id-tlv";
                                uses ospfv3-area-router-id-tlv;
                        }
                        container flooding-path-tlv {
                                description "ospf flooding-path-tlv";
                                uses flooding-path-tlv;
                        }

                }
        }
}
<CODE ENDS>

4.  IS-IS Data Model

   This data model augments the IS-IS YANG model
   [I-D.ietf-isis-yang-isis-cfg] with extensions to support Dynamic
   Flooding [I-D.ietf-lsr-dynamic-flooding].

Dontula & Li             Expires March 18, 2021                [Page 12]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

4.1.  Tree Diagram

   module: ietf-isis-dynflood
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/isis:isis:
       +--rw area-leader
       |  +--rw config
       |     +--rw enable {area-leader}?
       |     |  +--rw value?     boolean
       |     |  +--rw level-1
       |     |  |  +--rw value?   boolean
       |     |  +--rw level-2
       |     |     +--rw value?   boolean
       |     +--rw priority {area-leader}?
       |     |  +--rw value?     uint8
       |     |  +--rw level-1
       |     |  |  +--rw value?   uint8
       |     |  +--rw level-2
       |     |     +--rw value?   uint8
       |     +--rw algorithm {dynamic-flooding}?
       |        +--rw value?     uint8
       |        +--rw level-1
       |        |  +--rw value?   uint8
       |        +--rw level-2
       |           +--rw value?   uint8
       +--rw dynamic-flooding
          +--rw config
             +--rw enable {dynamic-flooding}?
                +--rw value?     boolean
                +--rw level-1
                |  +--rw value?   boolean
                +--rw level-2
                   +--rw value?   boolean
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/isis:isis:
       +--rw area-leader-state
       |  +--rw area-leader?   string
       +--rw area-node-ids {dynamic-flooding}?
       |  +--rw area-node-ids
       |     +--rw node-index* [index]
       |        +--rw index      uint16
       |        +--rw node-id?   isis:extended-system-id
       +--rw dynamic-flooding-paths {dynamic-flooding}?
       |  +--ro paths* []
       |     +--ro path*   uint16
       +--rw dynamic-flooding-topology {dynamic-flooding}?
       |  +--ro paths* []
       |     +--ro path*   string

Dontula & Li             Expires March 18, 2021                [Page 13]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

       +--rw dynamic-flooding-interfaces {dynamic-flooding}?
          +--ro interfaces* []
             +--ro inteface?    string
             +--ro temporary?   boolean
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/isis:isis/isis:database
               /isis:levels/isis:lsp/isis:router-capabilities
               /isis:router-capability:
       +--ro area-leader
       |  +--ro priority?    uint8
       |  +--ro algorithm?   uint8
       +--ro dynamic-flooding
          +--ro algorithms*   uint8
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/isis:isis/isis:database
               /isis:levels/isis:lsp:
       +--ro area-node-ids
       |  +--ro starting-index?   uint8
       |  +--ro flags?            bits
       |  +--ro nodes*            isis:extended-system-id
       +--ro flooding-path
          +--ro nodes*   uint16

4.2.  IS-IS YANG Module

<CODE BEGINS> file "ietf-isis-dynflood@2019-09-01.yang"
module ietf-isis-dynflood {
  yang-version 1.1;

  // IETF:
  namespace "urn:ietf:params:xml:ns:yang:ietf-isis-dynflood";
  // OpenConfig:
  // namespace "http://openconfig.net/yang/openconfig-isis-dynflood";

  prefix isis-dynflood;

  // OpenConfig:
  // import openconfig-network-instance {
  //   prefix oc-netinst;
  // }

  // NB: This module is currently under development and is intended to
  // augment the IETF IS-IS module (currently
  // draft-ietf-isis-yang-isis-cfg-36). While that is in process, we are
  // developing against the openconfig model, and references to IETF
  // paths are commented out.

  // IETF:

Dontula & Li             Expires March 18, 2021                [Page 14]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

  import ietf-routing {
    prefix "rt";
    reference
      "RFC 8349 - A YANG Data Model for Routing Management
       (NMDA Version)";
  }

  import ietf-isis {
    prefix "isis";
    reference
      "RFC ZZZZ: YANG Data Model for IS-IS Protocol";
  }

  organization "IETF LSR Working Group";
  contact "WG List: <mailto:lsr@ietf.org>";
  description "

     First draft of a YANG model for IS-IS dynamic flooding.

     Copyright (c) 2019 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.

  Authors:
    Srinath Dontula
      <mailto:sd947e@att.com>

    Tony Li
      <mailto:tony.li@tony.li>";

  revision 2019-09-01 {
    description "Initial revision";

Dontula & Li             Expires March 18, 2021                [Page 15]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

    reference "RFC XXXX";
  }

  // OpenConfig:
  // typedef extended-system-id {
  //   type string {
  //     pattern
  //       '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.'
  //       +'[0-9][0-9]';
  //   }
  //   description
  //     "This type defines IS-IS system-id using pattern. The extended
  //      system-id contains the pseudonode number in addition to the
  //      system-id.
  //      An example system-id is 0143.0438.AEF0.00";
  // }

  feature area-leader {
    description "Election of a leader for the area.";
  }

  feature dynamic-flooding {
    if-feature area-leader;
    description "Compute a reduced flooding topology.";
  }

  grouping area-leader-global-cfg {
    description "Enable area leader capability";
    leaf value {
      type boolean;
      default false;
      description "Enable area leader capability";
    }
  }

  grouping area-leader-priority-cfg {
    description "Set the area leader priority";
    leaf value {
      type uint8;
      default 200;
      description "Area leader priority";
    }
  }

  grouping area-leader-algorithm-cfg {
    description "Select the flooding topology computation algorithm";
    leaf value {
      type uint8;

Dontula & Li             Expires March 18, 2021                [Page 16]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

      default 0;
      description "Dynamic flooding algorithm selection";
    }
  }

  grouping area-leader-parameters {
    description "Area leader configuration parameters";
    container area-leader {
      description "Area leader configuration parameters";
      container config {
        description "Area leader configuration";
        container enable {
          if-feature area-leader;
          description "Area leader global enable configuration";
          uses area-leader-global-cfg;
          container level-1 {
            description "level-1 specific configuration";
            uses area-leader-global-cfg;
          }
          container level-2 {
            description "level-2 specific configuration";
            uses area-leader-global-cfg;
          }
        }

        container priority {
          if-feature area-leader;
          description "Area leader priority configuration";
          uses area-leader-priority-cfg;
          container level-1 {
            description "level-1 specific configuration";
            uses area-leader-priority-cfg;
          }
          container level-2 {
            description "level-2 specific configuration";
            uses area-leader-priority-cfg;
          }
        }

        container algorithm {
          if-feature dynamic-flooding;
          description "Area leader algorithm configuration";
          uses area-leader-algorithm-cfg;
          container level-1 {
            description "level-1 specific configuration";
            uses area-leader-algorithm-cfg;
          }
          container level-2 {

Dontula & Li             Expires March 18, 2021                [Page 17]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

            description "level-2 specific configuration";
            uses area-leader-algorithm-cfg;
          }
        }
      }
    }
  }

  grouping dynamic-flooding-global-cfg {
    description "Enable dynamic flooding capability";
    leaf value {
      type boolean;
      default false;
      description "Enable dynamic flooding capability";
    }
  }

  grouping dynamic-flooding-parameters {
    description "Dynamic flooding configuration parameters";
    container dynamic-flooding {
      description "Dynamic flooding configuration parameters";
      container config {
        description "Dynamic flooding configuration";
        container enable {
          if-feature dynamic-flooding;
          description "Dynamic flooding global enable configuration";
          uses dynamic-flooding-global-cfg;
          container level-1 {
            description "level-1 specific configuration";
            uses dynamic-flooding-global-cfg;
          }
          container level-2 {
            description "level-2 specific configuration";
            uses dynamic-flooding-global-cfg;
          }
        }
      }
    }
  }

  // IETF:
  augment "/rt:routing/rt:control-plane-protocols/"
    +"rt:control-plane-protocol/isis:isis" {
  // OpenConfig:
  // augment "/oc-netinst:network-instances/" +
  //   "oc-netinst:network-instance/oc-netinst:protocols/" +
  //   "oc-netinst:protocol/oc-netinst:isis/oc-netinst:global" {
    description

Dontula & Li             Expires March 18, 2021                [Page 18]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

      "Area leader and dynamic flooding configuration additions";
    uses area-leader-parameters;
    uses dynamic-flooding-parameters;
  }

  grouping dynamic-flooding-paths {
    description "List of paths in the topology";
    list paths {
      config false;
      description "A list of paths";
      leaf-list path {
        type uint16;
        description "A list of node indicies";
      }
    }
  }

  grouping dynamic-flooding-topology {
    description "List of paths in the topology";
    list paths {
      config false;
      description "A list of paths";
      leaf-list path {
        type string;
        description "A list of node names";
      }
    }
  }

  grouping dynamic-flooding-interfaces {
    description "List of flooding topology interfaces";
    list interfaces {
      config false;
      description "List of interfaces and their temporary status";
      leaf inteface {
        type string;
        description "Interface name";
      }
      leaf temporary {
        type boolean;
        description "Set for partition repair or new adjacencies";
      }
    }
  }

  grouping area-leader-state {
    description "Area leader state information";
    container area-leader-state {

Dontula & Li             Expires March 18, 2021                [Page 19]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

      description "Area leader election result";
      leaf area-leader {
        type string;
        description "Hostname of the area leader";
      }
    }
  }

  grouping dynamic-flooding-state {
    description "State information for dynamic flooding";
    container area-node-ids {
      if-feature dynamic-flooding;
      description "Area node ids and indices";
      container area-node-ids {
        description "List of nodes and indices";
        list node-index {
          key index;
          description "List of nodes and their indices";
          leaf index {
            type uint16;
            description "Index for the node";
          }
          leaf node-id {
            // OpenConfig:
            // type extended-system-id;
            // IETF:
            type isis:extended-system-id;
            description "Node id for the node";
          }
        }
      }
    }
    container dynamic-flooding-paths {
      if-feature dynamic-flooding;
      description "Flooding topology with explicit paths";
      uses dynamic-flooding-paths;
    }
    container dynamic-flooding-topology {
      if-feature dynamic-flooding;
      description "Flooding topology with system names";
      uses dynamic-flooding-topology;
    }
    container dynamic-flooding-interfaces {
      if-feature dynamic-flooding;
      description "Interfaces on the flooding topology";
      uses dynamic-flooding-interfaces;
    }
  }

Dontula & Li             Expires March 18, 2021                [Page 20]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

  // IETF:
  augment "/rt:routing/rt:control-plane-protocols/"
    +"rt:control-plane-protocol/isis:isis" {
  // OpenConfig:
  // 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" {
    description "Area leader and dynamic flooding state additions";
    uses area-leader-state;
    uses dynamic-flooding-state;
  }

  grouping subtlv27-area-leader {
    description "Router capability subTLV for area leader capability";
    container area-leader {
      description "Area leader subTLV for router capabilities";
      leaf priority {
        type uint8;
        description "Area leader priority";
      }
      leaf algorithm {
        type uint8;
        description
          "Algorithm index for computing the flooding topology";
      }
    }
  }

  grouping subtlv28-dynamic-flooding {
    description "Dynamic flooding capability subTLV";
    container dynamic-flooding {
      description "Dynamic flooding capability subTLV";
      leaf-list algorithms {
        type uint8;
        description "Supported algorithm indices for distributed mode";
      }
    }
  }

  // OpenConfig:
  // 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/" +

Dontula & Li             Expires March 18, 2021                [Page 21]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

  //   "oc-netinst:subtlvs/oc-netinst:subtlv" {
  // IETF:
  augment "/rt:routing/rt:control-plane-protocols"
    +"/rt:control-plane-protocol/isis:isis"
    +"/isis:database/isis:levels/isis:lsp/isis:router-capabilities/" +
    "isis:router-capability" {
    description
      "Additional router capability subTLVs for dynamic flooding";
    uses subtlv27-area-leader;
    uses subtlv28-dynamic-flooding;
  }

  grouping tlv17-area-node-ids {
    description "TLV 17: Area Node IDs";
    container area-node-ids {
      description "Dynamic flooding node id assignment TLV";
      leaf starting-index {
        type uint8;
        description "Starting index for the node ids in this TLV.";
      }
      leaf flags {
        type bits {
          bit last {
            position 0;
            description
              "Set if this is the highest set of indices in the area.";
          }
        }
        description "Flags field in the TLV.";
      }
      leaf-list nodes {
        // OpenConfig:
        // type extended-system-id;
        // IETF:
        type isis:extended-system-id;
        description "Nodes being assigned indices";
      }
    }
  }

  grouping tlv18-flooding-path {
    description "Flooding topology path TLV";
    container flooding-path {
      description "Dynamic flooding path TLV";
      leaf-list nodes {
        type uint16;
        description "Nodes in the path";
      }

Dontula & Li             Expires March 18, 2021                [Page 22]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

    }
  }

  // OpenConfig:
  // 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" {
  // IETF:
  augment "/rt:routing/rt:control-plane-protocols" +
    "/rt:control-plane-protocol/isis:isis/isis:database/isis:levels/" +
    "isis:lsp" {
    description "Additional TLVs for dynamic flooding";
    uses tlv17-area-node-ids;
    uses tlv18-flooding-path;
  }
}
<CODE ENDS>

5.  Acknowledgements

   The authors would like to thank Derek Yeung, Nidhi Bhaskar, Tom
   Petch, and Kavitha Prasad for their comments and assistance.

6.  Security Considerations

   This document introduces no new security issues.

7.  RFC Editor Considerations

   In the body of this document, please replace the following strings
   with RFC numbers for the associated document once it is published.

   AAAA  YANG Data Model for OSPF Protocol [I-D.ietf-ospf-yang]

   XXXX  This document

   YYYY  Dynamic Flooding on Dense Graphs
      [I-D.ietf-lsr-dynamic-flooding]

   ZZZZ  YANG Data Model for IS-IS Protocol
      [I-D.ietf-isis-yang-isis-cfg]

   Please replace "2019-09-01" with the date of publication.

Dontula & Li             Expires March 18, 2021                [Page 23]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

8.  IANA Considerations

   This document registers two URIs in the IETF XML registry [RFC3688].
   The following registrations are requested:

          URI: urn:ietf:params:xml:ns:yang:ietf-dynamic-flooding-ospf
          Registrant Contact: The IESG.
          XML: N/A, the requested URI is an XML namespace.

          URI: urn:ietf:params:xml:ns:yang:ietf-isis-dynflood
          Registrant Contact: The IESG.
          XML: N/A, the requested URI is an XML namespace.

   This document registers two YANG modules in the YANG Module Names
   registry [RFC6020].

        name: ietf-ospf-df
        namespace: urn:ietf:params:xml:ns:yang:ietf-dynamic-flooding-ospf
        prefix: ospf-df
        reference: RFC XXXX

        name: ietf-isis-dynflood
        namespace: urn:ietf:params:xml:ns:yang:ietf-isis-dynflood
        prefix: isis-dynflood
        reference: RFC XXXX

9.  References

9.1.  Normative References

   [I-D.ietf-isis-yang-isis-cfg]
              Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L.
              Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf-
              isis-yang-isis-cfg-42 (work in progress), October 2019.

   [I-D.ietf-lsr-dynamic-flooding]
              Li, T., Psenak, P., Ginsberg, L., Chen, H., Przygienda,
              T., Cooper, D., Jalil, L., Dontula, S., and G. Mishra,
              "Dynamic Flooding on Dense Graphs", draft-ietf-lsr-
              dynamic-flooding-07 (work in progress), June 2020.

   [I-D.ietf-ospf-yang]
              Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem,
              "YANG Data Model for OSPF Protocol", draft-ietf-ospf-
              yang-29 (work in progress), October 2019.

Dontula & Li             Expires March 18, 2021                [Page 24]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC3688]  Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
              DOI 10.17487/RFC3688, January 2004,
              <https://www.rfc-editor.org/info/rfc3688>.

   [RFC6020]  Bjorklund, M., Ed., "YANG - A Data Modeling Language for
              the Network Configuration Protocol (NETCONF)", RFC 6020,
              DOI 10.17487/RFC6020, October 2010,
              <https://www.rfc-editor.org/info/rfc6020>.

   [RFC7950]  Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
              RFC 7950, DOI 10.17487/RFC7950, August 2016,
              <https://www.rfc-editor.org/info/rfc7950>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [RFC8342]  Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
              and R. Wilton, "Network Management Datastore Architecture
              (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
              <https://www.rfc-editor.org/info/rfc8342>.

9.2.  Informative References

   [ISO10589]
              International Organization for Standardization,
              "Intermediate System to Intermediate System Intra-Domain
              Routing Exchange Protocol for use in Conjunction with the
              Protocol for Providing the Connectionless-mode Network
              Service (ISO 8473)", ISO/IEC 10589:2002, Nov. 2002.

   [RFC2328]  Moy, J., "OSPF Version 2", STD 54, RFC 2328,
              DOI 10.17487/RFC2328, April 1998,
              <https://www.rfc-editor.org/info/rfc2328>.

   [RFC8340]  Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
              BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
              <https://www.rfc-editor.org/info/rfc8340>.

Dontula & Li             Expires March 18, 2021                [Page 25]
Internet-Draft    YANG Data Model for Dynamic Flooding    September 2020

9.3.  URIs

   [1] https://tools.ietf.org/html/bcp14

Authors' Addresses

   Srinath Dontula
   ATT
   200 S. Laurel Ave
   Middletown, New Jersey  07748
   United States of America

   Email: sd947e@att.com

   Tony Li
   Arista Networks
   5453 Great America Parkway
   Santa Clara, California  95054
   United States of America

   Email: tony.li@tony.li

Dontula & Li             Expires March 18, 2021                [Page 26]