module ietf-multicast-information {
yang-version 1;
namespace
"urn:ietf:params:xml:ns:yang:ietf-multicast-information";
prefix multicast-info;
import ietf-inet-types {
prefix inet;
}
organization
" IETF MBONED( MBONE Deployment ) Working Group";
contact
"WG List: <mailto:bier@ietf.org>
WG Chair: Greg Shepherd
<mailto:gjshep@gmail.com>
WG Chair: Leonard Giuliano
<mailto:lenny@juniper.net>
Editor: Zheng Zhang
<mailto:zhang.zheng@zte.com.cn>
Editor: Cui Wang
<mailto:wang.cui1@zte.com.cn>
Editor: Ying Cheng
<mailto:chengying10@chinaunicom.cn>
";
description
"This module contains a collection of YANG definitions for
managing multicast information.";
revision "2017-08-20" {
description
"Add BGP and MLD-snooping overlay and BIER-TE transport.";
reference
"https://tools.ietf.org/html/draft-zhang-mboned-multicast-info-model";
}
revision "2016-12-08" {
description "Initial version.";
reference
"https://tools.ietf.org/html/draft-zhang-mboned-multicast-info-model";
}
grouping general-multicast {
description
"The general multicast address information.";
leaf source-address {
type inet:ip-address;
description
"The address of multicast source. The value set to zero
means that the receiver interests in all source that relevant to
one group.";
}
leaf source-wildcard {
type uint8;
description
"The wildcard information of source.";
}
leaf group-address {
type inet:ip-address;
description
"The address of multicast group.";
}
leaf group-wildcard {
type uint8;
description
"The wildcard information of group.";
}
} // grouping general-multicast
grouping m-addr {
description
"The vpn multicast information.";
leaf vpn-id {
type uint32;
description
"The vpn-id of the multicast flow.
If there is global instance, the vpnid value should be zero.";
}
uses general-multicast;
} // grouping m-addr
typedef virtual-type {
type enumeration {
enum "vxlan" {
value 0;
description "The vxlan type.";
}
enum "virtual subnet" {
value 1;
description "The nvgre type";
}
enum "vni" {
value 2;
description "The geneve type";
}
}
description
"The collection of virtual network type.";
}
grouping multicast-nvo3 {
description
"The nvo3 multicast information.";
leaf vni-type {
type virtual-type;
description
"The type of virtual network identifier. Include the Vxlan
NVGRE and Geneve.";
}
leaf vni-value {
type uint32;
description
"The value of Vxlan network identifier, virtual subnet ID
or virtual net identifier.";
}
} // grouping multicast-nvo3
grouping multicast-feature {
description
"This group describe the different multicast information
in various deployments.";
uses m-addr;
uses multicast-nvo3;
} // grouping multicast-feature
grouping ip-node {
description
"The IP information of multicast nodes.";
leaf ingress-node {
type inet:ip-address;
description
"The ingress node of multicast flow. Or the ingress
node of MVPN and BIER. In MVPN, this is the address of ingress
PE; in BIER, this is the BFR-prefix of ingress nodes.";
}
list egress-nodes {
key "egress-node";
description
"This ID information of one adjacency.";
leaf egress-node {
type inet:ip-address;
description
"The egress multicast nodes of multicast flow.
Or the egress node of MVPN and BIER. In MVPN, this is the
address of egress PE; in BIER, this is the BFR-prefix of
ingress nodes.";
}
} // list egress-nodes
} // grouping ip-node
typedef bfr-id {
type uint16;
description "The BFR id of nodes.";
}
typedef si {
type uint16;
description
"The type for set identifier";
}
typedef sub-domain-id {
type uint16;
description
"The type for sub-domain-id";
}
typedef bit-string {
type uint16;
description
"The bit mask of one bitstring.";
}
grouping bier-node {
description
"The BIER information of multicast nodes.";
leaf sub-domain {
type sub-domain-id;
description
"The sub-domain that this multicast flow belongs to.";
}
leaf ingress-node {
type bfr-id;
description
"The ingress node of multicast flow. This is the
BFR-id of ingress nodes.";
}
list egress-nodes {
key "egress-node";
description
"This ID information of one adjacency.";
leaf egress-node {
type bfr-id;
description
"The egress multicast nodes of multicast flow.
This is the BFR-id of egress nodes.";
}
} // list egress-nodes
} // grouping bier-node
grouping overlay-tech {
description
"The possible overlay technologies for multicast service.";
choice overlay-tech-type {
description
"The collection of multicast overlay technology";
case mld {
description
"MLD technology is used for multicast overlay";
} // case mld
case mvpn {
description
"MVPN technology is used for multicast overlay";
} // case mvpn
case bgp {
description
"BGP technology is used for multicast overlay";
} // case bgp
case mld-snooping {
description
"MLD snooping technology is used for multicast overlay";
} // case mld-snooping
} // choice overlay-tech-type
} // grouping overlay-tech
grouping multicast-overlay {
description
"The node information that connect the ingress multicast
flow, and the nodes information that connect the egress multicast
flow.";
container nodes-information {
description
"The ingress and egress nodes information.";
uses ip-node;
} // container nodes-information
container bier-information {
description
"The ingress and egress BIER nodes information.";
uses bier-node;
} // container bier-information
container overlay-technology {
description
"The possible overlay technologies for multicast service.";
uses overlay-tech;
} // container overlay-technology
} // grouping multicast-overlay
grouping transport-bier {
description
"The BIER transport information.";
leaf sub-domain {
type sub-domain-id;
description
"The subdomain id that this multicast flow belongs to.";
}
choice encap-type {
description
"The encapsulation type in BIER.";
case mpls {
description
"The BIER forwarding depend on mpls.";
} // case mpls
case non-mpls {
description
"The BIER forwarding depend on non-mpls.";
} // case non-mpls
case ipv6 {
description
"The BIER forwarding depend on IPv6.";
} // case ipv6
} // choice encap-type
leaf bitstringlength {
type uint16;
description
"The bitstringlength used by BIER forwarding.";
}
leaf set-identifier {
type si;
description
"The set identifier used by this multicast flow.";
}
leaf ecmp {
type boolean;
description
"The capability of ECMP.";
}
leaf frr {
type boolean;
description
"The capability of fast re-route.";
}
} // grouping transport-bier
grouping transport-bier-te {
description
"The BIER-TE transport information.";
leaf sub-domain {
type sub-domain-id;
description
"The subdomain id that this multicast flow belongs to.";
}
choice encap-type {
description
"The encapsulation type in BIER-TE.";
case mpls {
description
"The BIER-TE forwarding depend on mpls.";
} // case mpls
case non-mpls {
description
"The BIER-TE forwarding depend on non-mpls.";
} // case non-mpls
} // choice encap-type
leaf bitstringlength {
type uint16;
description
"The bitstringlength used by BIER-TE forwarding.";
}
leaf set-identifier {
type si;
description
"The set identifier used by this multicast flow, especially in BIER TE.";
}
leaf ecmp {
type boolean;
description
"The capability of ECMP.";
}
leaf frr {
type boolean;
description
"The capability of fast re-route.";
}
} // grouping transport-bier-te
grouping transport-pim {
description
"The requirement information of pim transportion.";
leaf graceful-restart {
type boolean;
description
"If the graceful restart function should be supported.";
}
leaf bfd {
type boolean;
description
"If the bfd function should be supported.";
}
} // grouping transport-pim
grouping mldp-tunnel-feature {
description "The tunnel feature.";
leaf mldp-tunnel-id {
type uint32;
description
"The tunnel id that correspond this flow.";
}
leaf mldp-frr {
type boolean;
description
"If the fast re-route function should be supported.";
}
leaf mldp-backup-tunnel {
type boolean;
description
"If the backup tunnel function should be supported.";
}
} // grouping mldp-tunnel-feature
grouping p2mp-te-tunnel-feature {
description "The tunnel feature.";
leaf te-tunnel-id {
type uint32;
description
"The tunnel id that correspond this flow.";
}
leaf te-frr {
type boolean;
description
"If the fast re-route function should be supported.";
}
leaf te-backup-tunnel {
type boolean;
description
"If the backup tunnel function should be supported.";
}
} // grouping p2mp-te-tunnel-feature
grouping transport-mpls {
description
"The mpls transportion information.";
choice mpls-tunnel-type {
description
"The collection types of mpls tunnels";
case mldp {
description "The mldp tunnel.";
uses mldp-tunnel-feature;
} // case mldp
case p2mp-te {
description "The p2mp te tunnel.";
uses p2mp-te-tunnel-feature;
} // case p2mp-te
} // choice mpls-tunnel-type
} // grouping transport-mpls
grouping cisco-multicast {
description
"The Cisco MDT multicast information in RFC6037.";
leaf p-group {
type inet:ip-address;
description
"The address of p-group.";
}
} // grouping cisco-multicast
grouping transport-cisco-mode {
description
"The transport information of Cisco mode, RFC6037.";
uses cisco-multicast;
uses transport-pim;
} // grouping transport-cisco-mode
grouping multicast-transport {
description
"The transport information of multicast service.";
container bier {
description
"The transport technology is BIER.";
uses transport-bier;
} // container bier
container bier-te {
description
"The transport technology is BIER-TE.";
uses transport-bier-te;
} // container bier-te
container cisco-mode {
description
"The transport technology is cisco-mode.";
uses transport-cisco-mode;
} // container cisco-mode
container mpls {
description
"The transport technology is mpls.";
uses transport-mpls;
} // container mpls
container pim {
description
"The transport technology is PIM.";
uses transport-pim;
} // container pim
} // grouping multicast-transport
grouping underlay-bgp {
description
"Underlay information of BGP.";
} // grouping underlay-bgp
grouping underlay-ospf {
description
"Underlay information of OSPF.";
leaf topology-id {
type uint16;
description
"The topology id of ospf instance.";
}
} // grouping underlay-ospf
grouping underlay-isis {
description
"Underlay information of ISIS.";
leaf topology-id {
type uint16;
description
"The topology id of isis instance.";
}
} // grouping underlay-isis
grouping underlay-babel {
description
"Underlay information of Babel.";
} // grouping underlay-babel
grouping underlay-pim {
description
"Underlay information of PIM.";
} // grouping underlay-pim
grouping multicast-underlay {
description
"The underlay information relevant multicast service.";
leaf underlay-requirement {
type boolean;
description
"If the underlay technology should be required.";
}
container bgp {
description
"The underlay technology is BGP.";
uses underlay-bgp;
} // container bgp
container ospf {
description
"The underlay technology is OSPF.";
uses underlay-ospf;
} // container ospf
container isis {
description
"The underlay technology is ISIS.";
uses underlay-isis;
} // container isis
container babel {
description
"The underlay technology is Babel.";
uses underlay-babel;
} // container babel
container pim {
description
"The underlay technology is PIM.";
uses underlay-pim;
} // container pim
} // grouping multicast-underlay
container multicast-information {
description
"The model of multicast service. Include overlay, transport and underlay.";
list multicast-info {
key "vpn-id source-address source-wildcard group-address group-wildcard vni-type vni-value";
description
"The detail multicast information.";
uses multicast-feature;
container multicast-overlay {
description
"The overlay information of multicast service.";
uses multicast-overlay;
} // container multicast-overlay
container multicast-transport {
description
"The transportion of multicast service.";
uses multicast-transport;
} // container multicast-transport
container multicast-underlay {
description
"The underlay of multicast service.";
uses multicast-underlay;
} // container multicast-underlay
} // list multicast-info
} // container multicast-information
} // module ietf-multicast-information