module ietf-bier { 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: WG Chair: Tony Przygienda WG Chair: Greg Shepherd Editor: Ran Chen Editor: Fangwei Hu Editor: Zheng Zhang Editor: Xianxian Dai Editor: Mahesh Sivakumar "; 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"; } /* Identities */ identity bier-encapsulation{ description "Base identity for BIER encapsulation."; } identity bier-encapsulation-mpls { base bier-encapsulation; description "This identity represents MPLS encapsulation for bier."; } /*Typedefs*/ 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*/ grouping bier-protocol-extensions{ leaf mt-id{ type mt-id; description "Multi-topology associated with bier sub-domain."; } container bier-global { 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."; } description "BIER global config."; } description "Defines protocol extensions."; } grouping 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."; } description " BIER parameters."; } grouping bier-mpls-cfg{ 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."; } description "Defines the necessary label ranges per bitstring length."; } augment "/rt:routing" { description "This augments routing-instance configuration with bier."; container bier{ container bier-global { uses bier-parameters; list sub-domain{ key "sub-domain-id"; 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 { list ipv4 { key "bitstringlength bier-mpls-label-base"; uses bier-mpls-cfg; description "Defines the necessary label ranges per bitstring length in ipv4."; } list ipv6 { key "bitstringlength bier-mpls-label-base"; uses bier-mpls-cfg; description "Defines the necessary label ranges per bitstring length in ipv6."; } description "Bier mapping entries."; } description "Denfines subdomain configuration"; } description "BIER global config."; } description "BIER config."; } container bier-state{ config false; description "BIER operational state."; container bier-global-state{ config false; uses bier-parameters; list sub-domain{ key "sub-domain-id"; 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"; uses bier-mpls-cfg; description "Show the necessary label ranges per bitstring length in ipv4."; } list ipv6 { key "bitstringlength bier-mpls-label-base"; uses bier-mpls-cfg; description "Show the necessary label ranges per bitstring length in ipv6."; } description "Denfines subdomain configuration"; } description "Parameters associated with bier."; } container birts-state{ list birt{ key "sub-domain-id"; leaf sub-domain-id{ type sub-domain-id; description "BIER sub domain ID"; } list birt-bitstringlength { key "bitstringlength"; leaf bitstringlength{ type uint16; description "BIER bitstringlength."; } list birt-si { key "si"; 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."; } description "Query the BIRT based on the key set identifier & bitstringlength & sub-domain-id."; } description "Query the BIRT based on the key bitstringlengt & sub-domain-id."; } description "Query the BIRT based on the key sub-domain."; } description "Shows Bit Index Routing Table."; } } } 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{ uses bier-protocol-extensions; description "Control of bier advertisement and reception."; } } 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{ uses bier-protocol-extensions; description "Control of bier advertisement and reception."; } } /* Notifications */ notification bfr-id-collision{ leaf bfr-id{ type bfr-id; description "BIER BFR ID."; } description "BFR ID received in the controlplane that caused BFR ID collision."; } notification bfr-zero{ 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"; } description "Invalid value associated with prefix"; } notification 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"; } description "Sub domain ID received in the controlplane that caused Sub domain ID collision"; } }