module ietf-multicast-information { 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: WG Chair: Greg Shepherd WG Chair: Leonard Giuliano Editor: Zheng Zhang Editor: Cui Wang Editor: Ying Cheng "; 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"; } /*feature*/ 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 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; } typedef virtual-type { type enumeration { enum "vxlan" { description "The vxlan type."; } enum "virtual subnet" { description "The nvgre type"; } enum "vni" { 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-feature { description "This group describe the different multicast information in various deployments."; uses m-addr; uses multicast-nvo3; } 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."; } } } /* should import from BIER yang */ 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."; } } } grouping overlay-tech { description "The possible overlay technologies for multicast service."; choice overlay-tech-type { case mld { description "MLD technology is used for multicast overlay"; } case mvpn { description "MVPN technology is used for multicast overlay"; } case bgp { description "BGP technology is used for multicast overlay"; } case mld-snooping { description "MLD snooping technology is used for multicast overlay"; } description "The collection of multicast overlay technology"; } } grouping multicast-overlay { description "The node information that connect the ingress multicast flow, and the nodes information that connect the egress multicast flow."; /*uses multicast-feature;*/ container nodes-information { description "The ingress and egress nodes information."; uses ip-node; } container bier-information { description "The ingress and egress BIER nodes information."; uses bier-node; } container overlay-technology { description "The possible overlay technologies for multicast service."; uses overlay-tech; } } /*transport*/ 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 { case mpls { description "The BIER forwarding depend on mpls."; } case non-mpls { description "The BIER forwarding depend on non-mpls."; } case ipv6 { description "The BIER forwarding depend on IPv6."; } description "The encapsulation type in BIER."; } 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-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 { case mpls { description "The BIER-TE forwarding depend on mpls."; } case non-mpls { description "The BIER-TE forwarding depend on non-mpls."; } description "The encapsulation type in BIER-TE."; } 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-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 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 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."; } } /*typedef sub-domain-id { type uint16; description "The type for sub-domain-id"; }*/ grouping transport-mpls { description "The mpls transportion information."; choice mpls-tunnel-type { case mldp { uses mldp-tunnel-feature; description "The mldp tunnel."; } case p2mp-te { uses p2mp-te-tunnel-feature; description "The p2mp te tunnel."; } description "The collection types of mpls tunnels"; } } 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 transport-cisco-mode { description "The transport information of Cisco mode, RFC6037."; uses cisco-multicast; uses transport-pim; } grouping multicast-transport { description "The transport information of multicast service."; container bier { uses transport-bier; description "The transport technology is BIER."; } container bier-te { uses transport-bier-te; description "The transport technology is BIER-TE."; } container cisco-mode { uses transport-cisco-mode; description "The transport technology is cisco-mode."; } container mpls { uses transport-mpls; description "The transport technology is mpls."; } container pim { uses transport-pim; description "The transport technology is PIM."; } } /*underlay*/ grouping underlay-bgp { description "Underlay information of BGP."; } grouping underlay-ospf { description "Underlay information of OSPF."; leaf topology-id { type uint16; description "The topology id of ospf instance."; } } grouping underlay-isis { description "Underlay information of ISIS."; leaf topology-id { type uint16; description "The topology id of isis instance."; } } grouping underlay-babel { description "Underlay information of Babel."; /* If there are some necessary information should be defined? */ } grouping underlay-pim { description "Underlay information of PIM."; /* If there are some necessary information should be defined? */ } 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 { uses underlay-bgp; description "The underlay technology is BGP."; } container ospf { uses underlay-ospf; description "The underlay technology is OSPF."; } container isis { uses underlay-isis; description "The underlay technology is ISIS."; } container babel { uses underlay-babel; description "The underlay technology is Babel."; } container pim { uses underlay-pim; description "The underlay technology is PIM."; } } 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"; uses multicast-feature; description "The detail multicast information."; container multicast-overlay { description "The overlay information of multicast service."; uses multicast-overlay; } container multicast-transport { description "The transportion of multicast service."; uses multicast-transport; } container multicast-underlay { description "The underlay of multicast service."; uses multicast-underlay; } } } }