huawei-multicast

Multicast basic service package.

  • Version: 2021-07-31

    huawei-multicast@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.