Multicast basic service package.
Version: 2021-07-31
module huawei-multicast { yang-version 1; namespace "urn:huawei:yang:huawei-multicast"; prefix mc; import huawei-extension { prefix ext; } import ietf-inet-types { prefix inet; } organization "Huawei Technologies Co., Ltd."; contact "Huawei Industrial Base Bantian, Longgang Shenzhen 518129 People's Republic of China Website: http://www.huawei.com Email: support@huawei.com"; description "Multicast basic service package."; revision "2021-07-31" { description "Add pim sessioncar container."; reference "Huawei private."; } revision "2020-02-14" { description "Add units for some nodes."; reference "Huawei private."; } revision "2020-02-11" { description "Add global-outgoing-interface-limit-counts container."; reference "Huawei private."; } revision "2019-10-17" { description "Add vbdif-extranet-enable leaf."; reference "Huawei private."; } revision "2019-03-30" { description "Initial revision."; reference "Huawei private."; } ext:task-name "mcast-base"; typedef rmbase-af-type { type enumeration { enum "ipv4unicast" { value 0; description "IPv4 unicast."; } enum "ipv6unicast" { value 1; description "IPv6 unicast."; } } description "Address family."; } typedef outgoing-interface-limit-type { type enumeration { enum "pim-sm" { value 0; description "PIM-SM (Protocol Independent Multicast-Sparse Mode)."; } } description "The protocol type of the entry to which the outgoing interface belongs."; } container multicast { description "Multicast basic service package."; container global { description "Configure multicast global configuration."; container ipv4 { description "Configure IPv4 multicast global configuration."; leaf vlanif-extranet-enable { type boolean; default "false"; description "Enable/disable multicast VLANIF extranet."; } leaf qinq-extranet-enable { type boolean; default "false"; description "Enable/disable multicast QinQ extranet."; } leaf bas-igmp-extranet-enable { type boolean; default "false"; description "Enable/disable multicast BAS IGMP extranet."; } leaf vbdif-extranet-enable { type boolean; default "false"; description "Enable/disable multicast VBDIF extranet."; } } // container ipv4 } // container global container invalid-packet-max-count { description "Configure maximum number of invalid packet settings."; container ipv4 { description "Configure maximum number of invalid IPv4 packets."; leaf igmp-packets { type uint32 { range "1..100"; } default "10"; description "Maximum number of invalid IGMP packets."; } leaf mvpn-packets { type uint32 { range "1..100"; } default "10"; description "Maximum number of invalid MVPN packets."; } leaf msdp-packets { type uint32 { range "1..100"; } default "10"; description "Maximum number of invalid MSDP packets."; } leaf pim-packets { type uint32 { range "1..100"; } default "10"; description "Maximum number of invalid PIM packets."; } leaf igmp-snooping-packets { type uint32 { range "1..100"; } default "10"; description "Maximum number of invalid Layer 2 multicast packets."; } } // container ipv4 container ipv6 { description "Configure maximum number of invalid IPv6 packets."; leaf mld-packets { type uint32 { range "1..100"; } default "10"; description "Maximum number of invalid IGMP packets."; } leaf pim-packets { type uint32 { range "1..100"; } default "10"; description "Maximum number of invalid PIM packets."; } leaf mld-snooping-packets { type uint32 { range "1..100"; } default "10"; description "Maximum number of invalid Layer 2 multicast packets."; } } // container ipv6 } // container invalid-packet-max-count container ssm-mapping-policys { description "List of SSM Mapping policy."; list ssm-mapping-policy { key "address-family policy-name"; description "Configure SSM Mapping policy."; leaf address-family { type rmbase-af-type; description "Address family, which determines whether an address belongs to IPv4 or IPv6."; } leaf policy-name { type string { length "1..31"; } description "Name of SSM Mapping policy. The value is a string of 1 to 31 case-sensitive characters."; } container groups { description "List of SSM Mapping rule."; list group { key "group-address mask-length source-address"; max-elements 1024; description "Configure SSM Mapping rule."; leaf group-address { type inet:ip-address-no-zone; description "Address of a multicast group. In IPv4, the value ranges from 224.0.1.0 to 239.255.255.255, in dotted decimal notation. In IPv6, the value ranges from FF00::0 to FFFF:FFFF::, in hexadecimal notation."; } leaf mask-length { type uint32 { range "0..128"; } description "Specify the mask length of a multicast group address. In IPv4, the value ranges from 4 to 32. In IPv6, the value is an integer, which can be 16, 32, 64, or 128."; } leaf source-address { type inet:ip-address-no-zone; description "Specify the address of a multicast source. In the case of an IPv4 address, the value is in dotted decimal notation. In the case of an IPv6 address, the value is in hexadecimal notation."; } } // list group } // container groups } // list ssm-mapping-policy } // container ssm-mapping-policys container trap-parameter { presence "trap-parameter-cfg."; description "Enable/disable Multicast trap."; container pim-notification-interval { description "Configure PIM notification."; leaf interface-election-dr { type uint32 { range "0..65535"; } units "s"; default "65535"; description "Interval at which a DR election trap is sent."; } leaf invalid-join-prune { type uint32 { range "10..65535"; } units "s"; default "65535"; description "Interval at which an invalid JP trap is sent."; } leaf invalid-register { type uint32 { range "10..65535"; } units "s"; default "65535"; description "Interval at which an invalid register trap is sent."; } leaf neighbor-loss { type uint32 { range "0..65535"; } units "s"; default "0"; description "Interval at which a neighbor loss trap is sent."; } leaf new-neighbor { type uint32 { range "0..65535"; } units "s"; default "0"; description "Interval at which a neighbor addition trap is sent."; } leaf rp-mapping-change { type uint32 { range "0..65535"; } units "s"; default "65535"; description "Interval at which an RP change trap is sent."; } } // container pim-notification-interval } // container trap-parameter container global-outgoing-interface-limit-counts { config false; description "List of outgoing interfaces in multicast entries."; list global-outgoing-interface-limit-count { key "address-family limit-type"; description "Statistics of outgoing interfaces in multicast entries."; leaf address-family { type rmbase-af-type; description "Address family, which determines whether an address belongs to IPv4 or IPv6."; } leaf limit-type { type outgoing-interface-limit-type; description "The protocol type of the entry to which the outgoing interface belongs."; } leaf limit-value { type uint32 { range "1..4294967295"; } description "The maximum number of outgoing interfaces."; } leaf upper-threshold-value { type uint32 { range "1..4294967295"; } description "The upper alarm threshold for the maximum number of outgoing interfaces."; } leaf lower-threshold-value { type uint32 { range "1..4294967295"; } description "The lower alarm threshold for the maximum number of outbound interfaces."; } leaf total-outgoing-interface-count { type uint32 { range "0..4294967295"; } description "Total number of interfaces in multicast entries."; } leaf star-group-outgoing-interface-count { type uint32 { range "0..4294967295"; } description "Total number of outgoing interfaces in (*, G) entries."; } leaf source-group-outgoing-interface-count { type uint32 { range "0..4294967295"; } description "Total number of outgoing interfaces in (S, G) entries."; } } // list global-outgoing-interface-limit-count } // container global-outgoing-interface-limit-counts container session-car { description "Configure mcast session car."; container pim { must "pir-interval>=cir-interval"; must "pbs-interval>=cbs-interval"; description "Configure PIM IPv4 Session CAR."; leaf enable { type boolean; default "true"; description "Enable/disable PIM IPv4 Session CAR."; } leaf cir-interval { type uint32 { range "0..1000000"; } units "kbit/s"; default "50"; description "Specify the Session CAR CIR interval."; } leaf cbs-interval { type uint32 { range "0..1000000"; } units "Byte"; default "128000"; description "Specify the Session CAR CBS interval."; } leaf pir-interval { type uint32 { range "0..1000000"; } units "kbit/s"; default "200"; description "Specify the Session CAR PIR interval."; } leaf pbs-interval { type uint32 { range "0..10000000"; } units "Byte"; default "128000"; description "Specify the Session CAR PBS interval."; } } // container pim container pim-ipv6 { must "pir-interval>=cir-interval"; must "pbs-interval>=cbs-interval"; description "Configure PIM IPv6 Session CAR."; leaf enable { type boolean; default "true"; description "Enable/disable PIM IPv6 Session CAR."; } leaf cir-interval { type uint32 { range "0..1000000"; } units "kbit/s"; default "50"; description "Specify the Session CAR CIR interval."; } leaf cbs-interval { type uint32 { range "0..1000000"; } units "Byte"; default "128000"; description "Specify the Session CAR CBS interval."; } leaf pir-interval { type uint32 { range "0..1000000"; } units "kbit/s"; default "200"; description "Specify the Session CAR PIR interval."; } leaf pbs-interval { type uint32 { range "0..10000000"; } units "Byte"; default "128000"; description "Specify the Session CAR PBS interval."; } } // container pim-ipv6 } // container session-car container igmp { description "Configure global IGMP configurations."; container disable-dhcp-stb-packet-copys { description "List of remote backup profile that disable the master device uses to replicate IGMP messages from DHCP STBs for the backup device."; list disable-dhcp-stb-packet-copy { key "rbp-name"; description "Configure IGMP message backup profile for IPoE users."; leaf rbp-name { type string { length "1..128"; pattern '[0-9a-z_.\-]+'; } description "Remote backup profile name."; } } // list disable-dhcp-stb-packet-copy } // container disable-dhcp-stb-packet-copys } // container igmp container igmp-snooping { description "Configure igmp-snooping features."; container global-enable { presence "igmp-snooping enable"; description "Enable/disable global IGMP snooping."; leaf send-query { type boolean; default "false"; description "Enable/disable the function of sending Layer 2 multicast Query messages."; } leaf send-query-source-address { type inet:ipv4-address-no-zone { pattern '(12[0-6]|1[0-1]\d|[1-9]\d|[1-9])(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}|(12[8-9]|1[3-9]\d|2[0-1]\d|22[0-3])(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}'; } default "192.168.0.1"; description "Source IP address for Layer 2 multicast General Query messages."; } } // container global-enable container instances { when "../ims:global-enable"; description "List of Layer 2 multicast instance configuration."; list instance { key "id"; description "Configure Layer 2 multicast instance."; leaf id { type uint32 { range "1..32"; } description "Instance ID."; } choice multicast-instance-type { description "Multicast-instance type."; case vlan { description "Multicast-instance type is VLAN."; leaf vlan-id { type leafref { path "/vlan:vlan/vlan:vlans/vlan:vlan/vlan:id"; } must "/vlan:vlan/vlan:vlans/vlan:vlan[vlan:id=current()]/ims:igmp-snooping/ims:global/ims:enable='true'"; must "/vlan:vlan/vlan:vlans/vlan:vlan[vlan:id=current()]/vlan:type='common'"; must "count(../../ims:instance[ims:vlan-id=current()])=1"; description "ID of a virtual local area network."; } } // case vlan case vsi { description "Multicast-instance type is VSI."; leaf vsi-name { type leafref { path "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance/l2vpn:name"; } must "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/ims:igmp-snooping/ims:global/ims:enable='true'"; must "count(../../ims:instance[ims:vsi-name=current()])=1"; must "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:work-mode='normal'"; must "not(/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:bgp-signaling)"; must "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:bgp-multi-homing-signaling or (/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:bgpad-signaling and /l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:ipmsi/l2vpn:leaf and not(/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:ipmsi/l2vpn:root)) or (not(/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:bgpad-signaling) and /l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:ldp-signaling/l2vpn:vsi-id)"; description "Name of a virtual switch instance."; } } // case vsi } // choice multicast-instance-type container user-instance-vsis { description "List of VSIs configured as user-instance."; list user-instance-vsi { key "vsi-name"; description "Configure VSI as user-instance."; leaf vsi-name { type leafref { path "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance/l2vpn:name"; } must "not(/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()]/l2vpn:vpls/ims:igmp-snooping)"; must "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:work-mode='normal'"; must "not(/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:bgp-signaling)"; must "/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:bgp-multi-homing-signaling or (/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:bgpad-signaling and /l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:ipmsi/l2vpn:leaf and not(/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:ipmsi/l2vpn:root)) or (not(/l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:bgpad-signaling) and /l2vpn:l2vpn/l2vpn:instances/l2vpn:instance[l2vpn:name=current()][l2vpn:type='vpls']/l2vpn:vpls/l2vpn:ldp-signaling/l2vpn:vsi-id)"; description "Name of a virtual switch instance."; } } // list user-instance-vsi } // container user-instance-vsis container user-instance-vlan { description "Configure VLAN as user-instance."; leaf vlans { type pub-type:vlan-range; description "VLAN list."; } } // container user-instance-vlan } // list instance } // container instances container global-channel { presence "L2-multicast-channel."; description "Enable/disable L2-multicast CAC."; leaf unspecified-channel-deny { type boolean; default "false"; description "Enable/disable a device to filter out multicast data for undefined groups in a channel. Specify the unspecified channel, deny the join of multicast group that does not belong to any channel."; } } // container global-channel } // container igmp-snooping container mld-snooping { description "Configure MLD snooping features."; container global-enable { presence "mld-snooping enable"; description "Enable/disable global MLD snooping."; leaf send-query { type boolean; default "false"; description "Enable/disable the function of sending Layer 2 multicast Query messages."; } leaf send-query-source-address { type inet:ipv6-address-no-zone { pattern '([Ff][Ee]80:)(([0]{1,4}:){0,2})(((:[0-9A-Fa-f]{1,4}){1,4})|(:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:)|([Ff][Ee]80:)(([0]{1,4}:){3})((((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)|(([0-9A-Fa-f]{1,4}:)(((:[0-9A-Fa-f]{1,4}){1,2})|(:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|((([0-9A-Fa-f]{1,4}:){2})((:[0-9A-Fa-f]{1,4})|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){3}(([0-9A-Fa-f]{1,4})|:)))'; } default "FE80::"; description "Source IP address for Layer 2 multicast General Query messages."; } } // container global-enable } // container mld-snooping container rpf-vector-paths { description "List of paths configuration to multicast sources."; list rpf-vector-path { key "path-name path-type"; unique "path-name"; max-elements 2048; description "Configure paths to multicast sources."; leaf path-name { type string { length "1..31"; pattern '[^ \?]*'; } description "Path name."; } leaf path-type { type pim-path-type; description "Path type."; } container hops { description "List of IP addresses of hops on paths."; list hop { key "index"; unique "ip-addr"; max-elements 22; description "Configure IP addresses of hops on paths."; leaf index { type uint32 { range "1..1024"; } description "Address index."; } leaf ip-addr { type inet:ip-address-no-zone; mandatory true; description "IP address."; } } // list hop } // container hops } // list rpf-vector-path } // container rpf-vector-paths } // container multicast } // module huawei-multicast
© 2023 YumaWorks, Inc. All rights reserved.