netconfcentral logo

ietf-bier

HTML

ietf-bier@2017-08-10



  module ietf-bier {

    yang-version 1;

    namespace
      "urn:ietf:params:xml:ns:yang:ietf-bier";

    prefix bier;

    import ietf-routing {
      prefix rt;
    }
    import ietf-inet-types {
      prefix inet;
    }
    import ietf-routing-types {
      prefix rt-types;
    }
    import ietf-isis {
      prefix isis;
    }
    import ietf-ospf {
      prefix ospf;
    }

    organization
      "IETF BIER(Bit Indexed Explicit Replication ) Working Group";

    contact
      "WG List:  <mailto:bier@ietf.org>

        WG Chair: Tony Przygienda
                  <mailto:tonysietf@gmail.com>

        WG Chair: Greg Shepherd
                  <mailto:gjshep@gmail.com>

        Editor:   Ran Chen
                   <mailto:chen.ran@zte.com.cn>
        Editor:   Fangwei Hu
                   <mailto:hu.fangwei@zte.com.cn>
        Editor:   Zheng Zhang
                   <mailto:zhang.zheng@zte.com.cn>
        Editor:   Xianxian Dai
                   <mailto:dai.xianxian@zte.com.cn>
        Editor:    Mahesh Sivakumar
                   <mailto:masivaku@cisco.com>
        ";

    description
      "The YANG module defines a generic configuration
          model for BIER.";

    revision "2017-08-10" {
      description "02 revision";
      reference
        "draft-ietf-bier-bier-yang-02";

    }

    revision "2017-01-20" {
      description "01 revision";
      reference
        "draft-ietf-bier-bier-yang-01";

    }

    revision "2016-07-23" {
      description "00 revision";
      reference
        "draft-ietf-bier-bier-yang-00";

    }

    revision "2016-05-12" {
      description "04 revision";
      reference
        "draft-chh-bier-bier-yang-04";

    }

    revision "2016-03-16" {
      description "03 revision";
      reference
        "draft-chh-bier-bier-yang-03";

    }

    revision "2015-12-03" {
      description "02 revision";
      reference
        "draft-chh-bier-bier-yang-02";

    }

    revision "2015-10-16" {
      description "01 revision.";
      reference
        "draft-chh-bier-bier-yang-01";

    }

    revision "2015-06-22" {
      description "Initial revision.";
      reference
        "draft-chh-bier-bier-yang-00";

    }


    identity bier-encapsulation {
      base 
      description
        "Base identity for BIER encapsulation.";
    }

    identity bier-encapsulation-mpls {
      base bier-encapsulation;
      description
        "This identity represents MPLS encapsulation for bier.";
    }

    typedef sub-domain-id {
      type uint16;
      description
        "The type for sub-domain-id";
    }

    typedef si {
      type uint16;
      description
        "The type for set identifier";
    }

    typedef bfr-id {
      type uint16;
      description
        "The type for bfr identifier";
    }

    typedef mt-id {
      type uint16;
      description
        "The type for multi-topology identifier";
    }

    typedef bier-mpls-label-range-size {
      type uint8;
      description
        "The type for BIER label range size.";
    }

    typedef bsl {
      type enumeration {
        enum "64-bit" {
          value 1;
          description
            "bitstringlength is 64";
        }
        enum "128-bit" {
          value 2;
          description
            "bitstringlength is 128";
        }
        enum "256-bit" {
          value 3;
          description
            "bitstringlength is 256";
        }
        enum "512-bit" {
          value 4;
          description
            "bitstringlength is 512";
        }
        enum "1024-bit" {
          value 5;
          description
            "bitstringlength is 1024";
        }
        enum "2048-bit" {
          value 6;
          description
            "bitstringlength is 2048";
        }
        enum "4096-bit" {
          value 7;
          description
            "bitstringlength is 4096";
        }
      }
      description
        "The bitstringlength type for imposition mode";
    }

    typedef igp-type {
      type enumeration {
        enum "ISIS" {
          value 1;
          description "isis protocol";
        }
        enum "OSPF" {
          value 2;
          description "ospf protocol";
        }
      }
      description "The IGP type";
    }

    grouping bier-protocol-extensions {
      description
        "Defines protocol extensions.";
      leaf mt-id {
        type mt-id;
        description
          "Multi-topology associated with bier sub-domain.";
      }

      container bier-global {
        description "BIER global config.";
        leaf enable {
          type boolean;
          default 'false';
          description
            "Enables bier protocol extensions.";
        }

        leaf advertise {
          type boolean;
          default 'true';
          description
            "Enable to advertise the parameters associated with bier.";
        }

        leaf receive {
          type boolean;
          default 'true';
          description
            "Enable to receive the parameters associated with bier.";
        }
      }  // container bier-global
    }  // grouping bier-protocol-extensions

    grouping bier-parameters {
      description " BIER parameters.";
      leaf encapsulation-type {
        type identityref {
          base bier-encapsulation;
        }
        default "bier-encapsulation-mpls";
        description "Dataplane to be used.";
      }

      leaf bitstringlength {
        type bsl;
        description
          "imposition bitstringlength.";
      }

      leaf bfr-id {
        type bfr-id;
        description "BIER bfr identifier.";
      }

      leaf ipv4-bfr-prefix {
        type inet:ipv4-prefix;
        description "BIER IPv4 prefix.";
      }

      leaf ipv6-bfr-prefix {
        type inet:ipv6-prefix;
        description "BIER IPv6 prefix.";
      }
    }  // grouping bier-parameters

    grouping bier-mpls-cfg {
      description
        "Defines the necessary label ranges per bitstring length.";
      leaf bitstringlength {
        type uint16;
        description "BIER bitstringlength.";
      }

      leaf bier-mpls-label-base {
        type rt-types:mpls-label;
        description "BIER label base.";
      }

      leaf bier-mpls-label-range-size {
        type bier-mpls-label-range-size;
        description "BIER label range.";
      }
    }  // grouping bier-mpls-cfg

    augment /rt:routing {
      description
        "This augments routing-instance configuration with bier.";
      container bier {
        description "BIER config.";
        container bier-global {
          description "BIER global config.";
          uses bier-parameters;

          list sub-domain {
            key "sub-domain-id";
            description
              "Denfines subdomain configuration";
            leaf sub-domain-id {
              type sub-domain-id;
              description "sub-domain ID.";
            }

            leaf igp-type {
              type igp-type;
              description "IGP type.";
            }

            leaf mt-id {
              type mt-id;
              description
                "multi-topology ID.";
            }

            leaf bfr-id {
              type bfr-id;
              description
                "BIER bfr identifier.";
            }

            leaf bitstringlength {
              type bsl;
              description
                "Disposition bitstringlength.";
            }

            container af {
              description
                "Bier mapping entries.";
              list ipv4 {
                key "bitstringlength bier-mpls-label-base";
                description
                  "Defines the necessary label ranges per bitstring length in ipv4.";
                uses bier-mpls-cfg;
              }  // list ipv4

              list ipv6 {
                key "bitstringlength bier-mpls-label-base";
                description
                  "Defines the necessary label ranges per bitstring length in ipv6.";
                uses bier-mpls-cfg;
              }  // list ipv6
            }  // container af
          }  // list sub-domain
        }  // container bier-global
      }  // container bier

      container bier-state {
        config false;
        description
          "BIER operational state.";
        container bier-global-state {
          config false;
          description
            "Parameters associated with bier.";
          uses bier-parameters;

          list sub-domain {
            key "sub-domain-id";
            description
              "Denfines subdomain configuration";
            leaf sub-domain-id {
              type sub-domain-id;
              description "sub-domain ID.";
            }

            leaf igp-type {
              type igp-type;
              description "IGP type.";
            }

            leaf mt-id {
              type mt-id;
              description
                "multi-topology ID.";
            }

            leaf bfr-id {
              type bfr-id;
              description
                "BIER bfr identifier.";
            }

            leaf bitstringlength {
              type bsl;
              description
                "Disposition bitstringlength.";
            }

            list ipv4 {
              key "bitstringlength bier-mpls-label-base";
              description
                "Show the necessary label ranges per bitstring length in ipv4.";
              uses bier-mpls-cfg;
            }  // list ipv4

            list ipv6 {
              key "bitstringlength bier-mpls-label-base";
              description
                "Show the necessary label ranges per bitstring length in ipv6.";
              uses bier-mpls-cfg;
            }  // list ipv6
          }  // list sub-domain
        }  // container bier-global-state

        container birts-state {
          description
            "Shows Bit Index Routing Table.";
          list birt {
            key "sub-domain-id";
            description
              "Query the BIRT based on the key sub-domain.";
            leaf sub-domain-id {
              type sub-domain-id;
              description
                "BIER sub domain ID";
            }

            list birt-bitstringlength {
              key "bitstringlength";
              description
                "Query the BIRT based on the key bitstringlengt & sub-domain-id.";
              leaf bitstringlength {
                type uint16;
                description
                  "BIER bitstringlength.";
              }

              list birt-si {
                key "si";
                description
                  "Query the BIRT based on the key set identifier & bitstringlength & sub-domain-id.";
                leaf si {
                  type si;
                  description
                    "BIER set identifier.";
                }

                leaf f-bm {
                  type uint16;
                  description
                    "BIER Forwarding Bit Mask.";
                }

                leaf bier-mpls-in-label {
                  type rt-types:mpls-label;
                  description
                    "BIER in-label.";
                }

                leaf bfr-nbr {
                  type inet:ip-address;
                  description
                    "BIER BFR Neighbors.";
                }

                leaf bier-mpls-out-label {
                  type rt-types:mpls-label;
                  description
                    "BIER out-label.";
                }
              }  // list birt-si
            }  // list birt-bitstringlength
          }  // list birt
        }  // container birts-state
      }  // container bier-state
    }

    augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ospf:ospf/ospf:instance {
      when
        "../../rt:type = 'ospf:ospfv2' or
             ../../rt:type = 'ospf:ospfv3'" {
        description
          "This augments the ospf routing protocol when used";
      }
      description
        "This augments ospf protocol configuration with bier.";
      container bier-ospf-cfg {
        description
          "Control of bier advertisement and reception.";
        uses bier-protocol-extensions;
      }  // container bier-ospf-cfg
    }

    augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/isis:isis {
      when
        "/rt:routing/rt:control-plane-protocols/"
          + "rt:control-plane-protocol/rt:type = 'isis:isis'" {
        description
          "This augment ISIS routing protocol when used";
      }
      description
        "This augments ISIS protocol configuration with bier.";
      container bier-isis-cfg {
        description
          "Control of bier advertisement and reception.";
        uses bier-protocol-extensions;
      }  // container bier-isis-cfg
    }

    notification bfr-id-collision {
      description
        "BFR ID received in the controlplane that caused BFR ID collision.";
      leaf bfr-id {
        type bfr-id;
        description "BIER BFR ID.";
      }
    }  // notification bfr-id-collision

    notification bfr-zero {
      description
        "Invalid value associated with prefix";
      leaf ipv4-bfr-prefix {
        type inet:ipv4-prefix;
        description "BIER ipv4 bfr prefix";
      }

      leaf ipv6-bfr-prefix {
        type inet:ipv6-prefix;
        description "BIER ipv6 bfr prefix";
      }
    }  // notification bfr-zero

    notification sub-domain-id-collision {
      description
        "Sub domain ID received in the controlplane that caused Sub domain ID collision";
      leaf sub-domain-id {
        type sub-domain-id;
        description "BIER sub domain ID";
      }

      leaf mt-id {
        type uint16;
        description "Multi-topology ID";
      }
    }  // notification sub-domain-id-collision
  }  // module ietf-bier

Summary

  
  
Organization IETF BIER(Bit Indexed Explicit Replication ) Working Group
  
Module ietf-bier
Version 2017-08-10
File ietf-bier@2017-08-10.yang
  
Prefix bier
Namespace urn:ietf:params:xml:ns:yang:ietf-bier
  
Cooked /cookedmodules/ietf-bier/2017-08-10
YANG /src/ietf-bier@2017-08-10.yang
XSD /xsd/ietf-bier@2017-08-10.xsd
  
Abstract The YANG module defines a generic configuration model for BIER.
  
Contact
WG List:  <mailto:bier@ietf.org>

WG Chair: Tony Przygienda
	 <mailto:tonysietf@gmail.com>

WG Chair: Greg Shepherd
	 <mailto:gjshep@gmail.com>

Editor:   Ran Chen
	  <mailto:chen.ran@zte.com.cn>
Editor:   Fangwei Hu
	  <mailto:hu.fangwei@zte.com.cn>
Editor:   Zheng Zhang
	  <mailto:zhang.zheng@zte.com.cn>
Editor:   Xianxian Dai
	  <mailto:dai.xianxian@zte.com.cn>
Editor:    Mahesh Sivakumar
	  <mailto:masivaku@cisco.com>

Description

 
The YANG module defines a generic configuration
model for BIER.

Typedefs

Typedef Base type Abstract
bfr-id uint16 The type for bfr identifier
bier-mpls-label-range-size uint8 The type for BIER label range size.
bsl enumeration The bitstringlength type for imposition mode
igp-type enumeration The IGP type
mt-id uint16 The type for multi-topology identifier
si uint16 The type for set identifier
sub-domain-id uint16 The type for sub-domain-id

Groupings

Grouping Objects Abstract
bier-mpls-cfg bitstringlength bier-mpls-label-base bier-mpls-label-range-size Defines the necessary label ranges per bitstring length.
bier-parameters encapsulation-type bitstringlength bfr-id ipv4-bfr-prefix ipv6-bfr-prefix BIER parameters.
bier-protocol-extensions mt-id bier-global Defines protocol extensions.

Notifications

Notification Abstract
bfr-id-collision BFR ID received in the controlplane that caused BFR ID collision.
bfr-zero Invalid value associated with prefix
sub-domain-id-collision Sub domain ID received in the controlplane that caused Sub domain ID collision