MLD Functions

sth::emulation_mld_config

Purpose

Creates, modifies, or deletes a Multicast Listener Discovery Protocol (MLD) session on the specified Spirent HLTAPI port or handle.

MLD is a communications protocol that manages IPv6 multicast groups. Use MLD to track IPv6 multicast membership.

Synopsis

Note

  1. M indicates that the argument is Mandatory .
  2. S indicates the argument is for scaling scenarios.
sth::emulation_mld_config
    [-mode {create|modify|activate|delete}  M]
    [-port_handle <port_handle>]
    [-handle <device_handle>|<mld_session_handle>]
    [-count <1-65535> ]
    [-filter_mode {include | exclude}]
      [-filter_ip_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
    [-force_leave {0|1}]
    [-force_robust_join {0|1}]
    [-general_query 1]
    [-group_query 1]
    [-insert_checksum_errors {0|1}]
    [-intf_ip_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
    [-intf_ip_addr_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
    [-intf_prefix_len <1-128>]
    [-insert_length_errors {0|1}]
    [-ip_router_alert 1 ]
    [-link_local_intf_ip_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
    [-link_local_intf_prefix_len <1-128>]
    [-max_response_control 0 ]
    [-mld_version {v1|v2} ]
    [-msg_interval <0-4294967295>]
    [-neighbor_intf_ip_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
    [-neighbor_intf_ip_addr_step
         <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
    [-qinq_incr_mode {inner|outer|both}]
    [-robustness <2-255>]
    [-suppress_report 1]
    [-unsolicited_report_interval <0-4294967295>]
    [-use_partial_block_state {0|1}]
    [-vlan_cfi {0|1}]
         [-vlan_outer_cfi {0 | 1}]
    [-vlan_id  <0-4095> ]
         [-vlan_id_count <1-4096>]
         [-vlan_id_mode {fixed|increment}]
         [-vlan_id_step <0-4094>]
         [-vlan_user_priority <0-7>]
    [-vlan_id_outer <0-4095>]
         [-vlan_id_outer_mode {fixed|increment}]
         [-vlan_id_outer_count <1-4096>]
         [-vlan_id_outer_step <0-4094>]
         [-vlan_outer_user_priority <0-7>]
    [-expand {true|false} S]
    [-mcast_group_count <1-32000>]
    [-ignore_memberships {true|false}]
    [-device_group_mapping {many_to_many|one_to_one|round_robin}]
    [-mcast_ipv6_addr <IPV6>]
    [-filtered_sources {custom|existing|none}]
    [-src_ipv6_addr <IPV6>]
    [-src_count <1-4294967295>]
    [-src_step <0-4294967295>]
    [-src_ipv6_prefix <1-128>]
    [-source_filters {true | false}]
    [-source_list  <device_list or host_list>]
    [-incr_src_ipv6_addr_per_device <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]

Arguments

-count

Defines the number of MLD sessions to create on the interface. Possible values are 1 to 65535. The default is 1. You can configure up to 8192 sessions per port.

-filter_mode

Specifies an explicit set of sources from which the multicast group is interested in receiving data (configures MLDv2 Include Filter mode). Possible values are include and exclude. The default is “include”.

include
Data from the specified sources are filtered and forwarded to the hosts by the multicast router.
exclude
Data from the specified sources are filtered and not forwarded to the hosts by the multicast router.
-filter_ip_addr

Configure the filtered IP address. The values must be in IPv6 format. The default value is 2008::8.

-force_leave

Spirent Extension (for Spirent HLTAPI only).

Controls whether all hosts are Mandatory to send leave reports when leaving the multicast group. Valid values are 0 (false) and 1 (true). The default is 0. If set to 0, hosts are not Mandatory to send a Leave Group message when leaving a multicast group. If set to 1, hosts are Mandatory to send a Leave Group message when leaving a multicast group. This argument affects all hosts except the last one, which is always Mandatory to send an MLDv1 leave report. MLDv1 hosts leaving a multicast group may optionally send a leave report to the all-routers multicast group.

-force_robust_join

Spirent Extension (for Spirent HLTAPI only).

Controls whether a second unsolicited join report is transmitted by the MLDv1 host. Valid values are 0 (false) and 1 (true). The default is 0. If set to 0, MLDv1 hosts do not transmit a second join report. If set to 1, MLDv1 hosts do transmit a second join report.

When an MLDv1 host joins a multicast group, it immediately transmits an initial unsolicited membership report for that group, in case it is the first member of that group on the network. In case the initial report gets damaged or lost, it is recommended that you send a second unsolicited report.

-general_query

Always enabled. When -general_query is set to 1, Spirent HLTAPI responds to only general queries received on the interface.

-group_query

Always enabled. When -group_query is set to 1, Spirent HLTAPI responds to only group-specific (and source/group) queries received on the interface.

-handle

The handle of the MLD host configured on the port to use when -mode is set to either modify or delete. When mode is create, Spirent HLTAPI creates MLD over the provided device. (Please refer to -mode for more information)

-insert_checksum_errors

Spirent Extension (for Spirent HLTAPI only).

Controls the insertion of checksum errors into the MLD messages by the hardware. Valid values are 0 (false) and 1 (true). The default is 0. If set to 0, the MLD checksum of the transmitted packet is not modified. If set to 1, the MLD checksum of the transmitted packet is flipped by the protocol stack (that is, the least significant bit is inverted.)

-insert_length_errors

Spirent Extension (for Spirent HLTAPI only).

Controls the insertion of message length errors into the MLD messages by the MLD stack. Valid values are 0 (false) and 1 (true). The default is 0. If set to 1, every MLD packet transmitted by the host will be two bytes shorter than normal If set to 0, the MLD packet lengths will not be modified.

-intf_ip_addr

Specifies the first IPv6 address in the group. This argument is Mandatory .

-intf_ip_addr_step

Specifies the difference between interface IP addresses of consecutive hosts when multiple MLD hosts are created. The default increment is 1. This argument is only applicable in create mode.

-intf_prefix_len

Specifies the address prefix length on the emulated host, Possible values for IPv6 addresses range from 1 to 128; the default is 64,

-ip_router_alert

Alerts transit routers to examine the contents of an IP packet more closely. When -ip_router_alert is set to 1, Spirent HLTAPI enables the IP router alert option. This argument is always enabled (1 or true) in Spirent HLTAPI whenever hosts send to routers. The IP router alert option is useful for new protocols that are addressed to a destination but require relatively complex processing in routers along the path. (See RFC 2113 for more information.)

Spirent Extension (for Spirent HLTAPI only).

Specifies the first link local IPv6 address in the group.

Spirent Extension (for Spirent HLTAPI only).

Specifies the address prefix length on the emulated host, Possible values for link local IPv6 addresses range from 1 to 128; the default is 128.

-max_response_control

Always set to 0 (false).

-mld_version

Specifies the multicasting protocol used to manage multicast group memberships. Possible values are:

v1 - Initial multicasting protocol version for IPv6,
     similar to IGMPv2. It is specified in RFC 2710.

v2 - Version of MLD, specified in draft-vida-mld-
     v2-08.txt, that adds the "include" and "exclude"
     filter functionality.
-mode

Specifies the action to perform. Possible values are create, modify, and delete. This argument is Mandatory . The modes are described below: :

create
Creates MLD hosts on the specified port or handle, but does not start them.
modify
Changes the configuration parameters for the MLD hosts identified by the -handle argument. When -port_handle is provided, Spirent HLTAPI creates one or more emulated hosts that are associated with the specified port. When -handle is provided, Spirent HLTAPI creates MLD over the specified device.
activate
Used for Scaling scenarios.
  1. Enables MLD devices and configures MLD parameters for the devices created via the sth::emulation_device_config function. This mode requires the value of param_handle as the input to the -handle option. Use this mode for Scaling scenarios. Refer to -count and -expand options under the sth::emulation_mld_config function for more information. For this mode, only the following set of options are valid:

    mld_version
    device_group_mapping
    mcast_ipv6_addr
    ignore_memberships
    mcast_group_count
    filtered_sources
    src_ipv6_addr
    src_count
    src_step
    src_ipv6_prefix
    
  1. Creates devices and enables MLD protocol. Requires -port_handle and -block_mode options. For this mode, the following options are required/supported along with the options specified above:

    -count
    -block_mode
    -block_name_index
    -name
    -vlan_id
    -vlan_outer_id
    -vlan_user_pri
    -vlan_id_count
    -vlan_id_repeatmode
    -vlan_outer_id_count
    -vlan_outer_user_pri
    -vlan_outer_id_repeatmode
    -router_id_ipv6
    -router_id_ipv6_step
    -mac_addr
    -mac_addr_step
    -link_local_ipv6_addr
    -link_local_ipv6_addr_step
    -intf_ipv6_addr
    -intf_ipv6_addr_step
    -intf_ipv6_prefix_len
    -link_local_ipv6_prefix_len
    -gateway_ipv6_addr
    -gateway_ipv6_addr_step
    -mac_addr_step_per_port
    -mac_addr_step_per_vlan
    -ipv6_step_per_vlan
    -ipv6_step_per_port
    -link_local_ipv6_step_per_port
    -link_local_ipv6_step_per_vlan
    -source_filters
    -source_list
    -incr_src_ipv6_addr_per_device
    

    Note

    Please refer to the emulation_device_config documentation.

delete
Stops the MLD emulation locally without attempting to clear the bound addresses from the MLD server. In addition, all MLD group sessions information on the port is cleared and the connection is restarted.

Note

When -handle is provided for -mode modify, the following options will be obsoleted:

-intf_ip_addr
-intf_ip_addr_step
-intf_prefix_len
-neighbor_intf_ip_addr
-neighbor_intf_ip_addr_step
-vlan_cfi
-vlan_id
-vlan_id_mode
-vlan_id_step
-vlan_user_priority
-vlan_outer_cfi
-vlan_id_count
-vlan_id_outer
-vlan_id_outer_count
-vlan_id_outer_step
-vlan_id_outer_mode
-vlan_outer_user_priority
-qinq_incr_mode
-link_local_intf_ip_addr
-link_local_intf_ip_addr_step
-link_local_intf_prefix_len
-msg_interval

Maximum output rate of MLD message packets generated per millisecond. Set this value to 0 to send messages as fast as possible. Possible values range from 0 to 4294967295. The default is 0.

-neighbor_intf_ip_addr

Specifies the IP address of the interface for the MLD neighbor (next hop) that will establish an adjacency with the DUT. The default for IPv6 is 2000::1.

-neighbor_intf_ip_addr_step

Specifies the difference between the MLD neighbor’s interface IP addresses when multiple MLD hosts are created. The default is 0000:0000:0000:0000:0000:0000:0000:0000 (that is, the same address).

-port_handle

The handle of the port on which to create the MLD session.

-qinq_incr_mode

Determines which VLAN ID to increment first. Possible values are:

inner - Increments the inner VLAN ID before the outer VLAN ID

outer - Increments the outer VLAN ID before the inner VLAN ID

both - Increment both the inner and outer VLAN ID at the
       same time.

The default value is inner.

-robustness

Specifies the number of times to send a State Change Report. This number is used in the calculation of default values for various timers and counters. Possible values are 2 to 255. The default value is 2. For MLDv1, you must set -force_robust_join to 1.

-suppress_report

Suppresses the transmission of a listener report that duplicates one received on the interface. Multicast hosts can suppress the transmission of reports to reduce the amount of multicast communication. This argument is always enabled.

-unsolicited_report_interval

Sets the interval (in 1/10 seconds) to wait before re- sending the host’s initial report of membership in a group. Possible values are 0 to 4294967295. The default value is 100 for MLDv1 and 10 for MLDv2. Set it to 0 if you do not want to send an unsolicited report.

-use_partial_block_state

Spirent Extension (for Spirent HLTAPI only).

Controls the use of a partial block state. Possible values are 1 (true) and 0 (false). When set to 1, this argument enables using a partial block state. When set to 0, it disables the use of a partial block state.

-vlan_cfi

Sets the canonical format indicator field in VLAN for the emulated router node. Possible values are 0 (Ethernet) and 1 (Token Ring). The default is 1. If set to 0, it indicates Token Ring and packets are dropped by Ethernet ports. If set to 0, it indicates the network is Ethernet.

-vlan_id

Defines the VLAN ID of the first VLAN sub-interface. Possible values range from 0 to 4095. The default is 1. When the mode is either “create” or “enable”, Spirent HLTAPI checks for a vlan object on the port with the given VLAN ID. If no VLAN object with that ID exists, Spirent HLTAPI creates a VLAN object with the specified VLAN ID.

-vlan_id_count

Specifies the number of inner VLAN tags to generate for the stream. Possible values range from 1 to 4096. The default is 1.

-vlan_id_mode

If you configure more than one interface on Spirent HLTAPI with VLAN, you can choose to either automatically increment the VLAN tag (mode “increment”) or leave it idle for each interface (mode “fixed”), in which case the VLAN ID is the same for all packets. If you set this argument to “increment”, then you must also specify the -vlan_id_step argument to indicate the step size. The default is increment.

-vlan_id_step

Defines the step size by which the VLAN value is incremented when you set -vlan_id_mode to “increment”. Possible values range from 0 to 4094. You must specify the step when the -count argument is greater than 1. The default is 1.

-vlan_id_outer

Spirent Extension (for Spirent HLTAPI only).

Specifies the VLAN ID for a particular outer header. Possible values range from 0 to 4095.

-vlan_id_outer_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of VLAN tags to generate for the outer header. Possible values range from 1 to 4096. The default is 1. You must set the -vlan_id_outer_mode argument to increment.

-vlan_id_outer_mode

Spirent Extension (for Spirent HLTAPI only).

Specifies how Spirent Test Center will assign VLAN tags to packets in the specified outer header. Possible values are:

fixed
The outer VLAN ID is the same for all packets.
increment
For all packets, the outer VLAN tag ID increments by the step specified in the -vlan_id_outer_step argument.
-vlan_id_outer_step

Spirent Extension (for Spirent HLTAPI only).

The amount by which to increment the specified outer VLAN ID (-vlan_id_outer) for subsequent packets. Possible values range from 0 to 4094. The default is 0.

-vlan_outer_cfi

Spirent Extension (for Spirent HLTAPI only).

Specifies whether the canonical format indicator (cfi) value is set for the VLAN outer header. Possible values are 0 or 1.

-vlan_outer_user_priority

Spirent Extension (for Spirent HLTAPI only).

Specifies the VLAN priority to assign to the outer header. Possible values range from 0 to 7. The default is 0.

-vlan_user_priority

Defines the VLAN priority for the VLANs on this port. Possible values range from 0 to 7. The default is 0.

-expand

Spirent Extension (for Spirent HLTAPI only).

Determines whether to expand the specified MLD device parameters into emulated MLD device objects. It is used in Scaling test scenarios.

When set to true, a list of emulated device handles (handle_list) with enabled MLD device configurations is created.

When set to false, only MLD parameters are configured with no handle returned.

-mcast_group_count

Specifies the number of multicast groups to subscribe to. Possible values range from 1 to 32000. The default is 1. Applicable only in -mode activate when -block_mode or -expand is specified.

-ignore_memberships

Specifies to enable/disable configuration of group memberships. Possible values are true and false. The default is true. Applicable only in -mode activate when -block_mode or -expand is specified.

-mcast_ipv6_addr

Specifies the IPv4 multicast group address. The default is ff1e::1 Applicable only in -mode activate when -block_mode or -expand is specified.

-device_group_mapping

Specifies the mapping between the device and subscribed multicast group within their respective blocks. The default is many_to_many Applicable only in -mode activate when -block_mode or -expand is specified.

-src_ipv6_addr

Specifies the ulticast source IPv6 address. The default is 2001::2 Applicable only in -mode activate when -block_mode or -expand is specified. These argument settings are required:

-filtered_sources custom
-source_filters   false
-src_count

Specifies the number of multicast sources. The default is 1 Applicable only in -mode activate when -block_mode or -expand is specified. These argument settings are required:

-filtered_sources custom
-source_filters   false
-src_step

Specifies the step for the multicast source address. The default is 1 Applicable only in -mode activate when -block_mode or -expand is specified. These argument settings are required:

-filtered_sources custom
-source_filters   false
-filtered_sources

Mode for specifying filtered sources. Applicable only in -mode activate when -block_mode or -expand is specified. Possible values are:

existing  - Use existing sources (Hosts).

custom   - Specify sources by entering starting source IP, count, and step.

none      - Specifies an empty source list.

The default is none.

-src_ipv6_prefix

Specifies the multicast source IPv6 prefix length. The default is 64. Applicable only in -mode activate when -block_mode or -expand is specified. These argument settings are required:

-filtered_sources custom
-source_filters   false
-source_filters

Spirent Extension (for Spirent HLTAPI only).

Specifies to configure source address pool when -mode is set to activate. Applicable only in -mode activate when -block_mode or -expand is specified. Possible values are:

true - Configures source IP as MLDV2 host IP.
false - Configures source IP based on the -source_list or -incr_src_ipv6_addr_per_device
        argument setting.

The default is true.

-source_list

Spirent Extension (for Spirent HLTAPI only).

Specifies to provide the list of device handles. MLDV2 group sources will be mapped with provided device IP. Applicable only in -mode activate when -block_mode or -expand is specified. These argument settings are required:: -filtered_sources existing -source_filters false

-incr_src_ipv6_addr_per_device

Spirent Extension (for Spirent HLTAPI only).

Specifies the source IP incrementation per MLDV2 host in IPV6 format. Applicable only in -mode activate when -block_mode or -expand is specified. These argument settings are required:

-filtered_sources custom
-source_filters   false
-src_ipv6_addr    aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh

Arguments Unsupported by Save as HLTAPI

The following Spirent HLTAPI arguments are currently not supported by the Save as HLTAPI function:

-qinq_incr_mode
-vlan_id_outer_count

Vendor Specific Arguments Processed by Spirent HLTAPI Wrapper

None

Vendor Specific Arguments Ignored by Spirent HLTAPI Wrapper

-max_groups_per_pkts
-reset
-mac_address_init
-msg_count_per_interval
-mac_address_step

Note

For more information about Spirent HLTAPI Wrapper, refer to Chapter 4 Spirent HLTAPI Wrapper in Spirent HLTAPI Programmer’s Reference.

Cisco-specific Arguments

The following arguments are specific to the Cisco HLTAPI but are not supported by Spirent HLTAPI:

-max_groups_per_pkts
-max_response_time

Return Values

Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):

handle      MLD session handle. A handle to the MLD host block is returned on success.

handle_list
            A list of emulated devices with enabled MLD configuratin created by
            ``sth::emulation_mld_config`` function when expand is set true.

status      Success (1) or failure (0) of the operation.

log         An error message (if the operation failed).

Description

The sth::emulation_mld_config function creates, modifies, enables, or deletes one or more emulated MLD hosts. Use the -mode argument to specify the action to perform. (See the -mode argument description for information about the actions.)

When you create an MLD host, use the -port_handle argument to specify the Spirent HLTAPI port that the emulated MLD host will use for MLD communication. (The port handle value is contained in the keyed list returned by the sth::connect function.)

Use the -mode create function to define the characteristics of an MLD host.

Spirent HLTAPI supports the use of MLD versions 1 and 2 for multicast group membership.

For more information about the MLD protocol, see RFC 2710 (MLDv1) and draft-vida-mld-v2-08.txt (MLDv2).

Examples

#### HLTAPI for Tcl ####

The following example creates an MLD session:

sth::emulation_mld_config \
      -port_handle $port_handle1 \
      -mode create \
      -mld_version v1 \
      -intf_ip_addr 2001::3 \
      -neighbor_intf_ip_addr 2001::1

Sample output for example shown above:

{handle host1} {status 1}

The following example uses the function in Scaling mode (-mode activate) with -port_handle and -block_mode:

set mld_ret [sth::emulation_mld_config\
            -mode                                            activate \
            -port_handle                                     $port1\
            -count                                           2 \
            -block_mode                                      ONE_DEVICE_PER_BLOCK\
            -block_name_index                                1\
            -vlan_id                                         444 \
            -vlan_outer_id                                   333 \
            -mac_addr                                        00:11:11:11:11:11 \
            -mac_addr_step                                   00:00:00:00:00:02 \
            -mac_addr_step_per_port                          00:00:00:00:01:01 \
            -mac_addr_step_per_vlan                          {"" 00:00:00:00:00:01} \
            -intf_ipv6_prefix_len                            65 \
            -ipv6_step_per_vlan                              {"" ::2} \
            -ipv6_step_per_port                              ::1 \
            -link_local_ipv6_step_per_port                   ::1:0 \
            -link_local_ipv6_step_per_vlan                   {::4 ::5} \
            -name                                            DEVICE_BLOCK_MLD \
            -vlan_user_pri                                   3 \
            -vlan_id_count                                   2 \
            -vlan_id_repeatmode                              REPEAT_ACROSS_PORT\
            -vlan_outer_id_count                             2 \
            -vlan_outer_user_pri                             4 \
            -vlan_outer_id_repeatmode                        REPEAT_ACROSS_PORT\
            -router_id_ipv6                                  0101::011 \
            -router_id_ipv6_step                             ::11 \
            -link_local_ipv6_addr                            fe80::2 \
            -link_local_ipv6_addr_step                        ::1 \
            -intf_ipv6_addr                                  1111::3e9 \
            -intf_ipv6_addr_step                             ::1 \
            -link_local_ipv6_prefix_len                      64 \
            -gateway_ipv6_addr                               1111::1 \
            -gateway_ipv6_addr_step                          ::1 \
            -expand                                          true \
            -mld_version                                     v2\
            -device_group_mapping                            many_to_many\
            -mcast_ipv6_addr                                 ff1e::2\
            -ignore_memberships                              false\
            -mcast_group_count                               2\
            -filtered_sources                                custom\
            -src_ipv6_addr                                   2002::5\
            -src_count                                       2\
            -src_step                                        2\
            -src_ipv6_prefix                                 64\
            -incr_src_ipv6_addr_per_device                   0.0.1.0 \
            -source_filters                                  false ]

Sample Output:

{param_handle emulateddevicegenparams1} {status 1} {handle {}} {handle_list
{emulateddevice1 emulateddevice2 emulateddevice3 emulateddevice4 emulateddevice5
emulateddevice6 emulateddevice7 emulateddevice8}} {mld_handle_list {mldhostconfig1
mldhostconfig2 mldhostconfig3 mldhostconfig4 mldhostconfig5 mldhostconfig6
mldhostconfig7 mldhostconfig8}} {mld_group_handle_list {mldgroupmembership1
mldgroupmembership2 mldgroupmembership3 mldgroupmembership4 mldgroupmembership5
mldgroupmembership6 mldgroupmembership7 mldgroupmembership8}}
{multicast_group_handle_list {ipv4group1 ipv4group2 ipv4group3 ipv4group4 ipv4group5
ipv4group6 ipv4group7 ipv4group8}} {handles {emulateddevice1 emulateddevice2
emulateddevice3 emulateddevice4 emulateddevice5 emulateddevice6 emulateddevice7
emulateddevice8}}

#### HLTAPI for Python ####

The following example creates an MLD session:

device_ret0 = sth.emulation_mld_config (
        mode                = 'create',
        link_local_intf_ip_addr= 'fe80::1',
        link_local_intf_ip_addr_step= '::1',
        link_local_intf_prefix_len= '64',
        port_handle         = port_handle[0],
        msg_interval        = '0',
        neighbor_intf_ip_addr_step= '::',
        neighbor_intf_ip_addr= '2001::1',
        intf_ip_addr        = '2001::2',
        intf_prefix_len     = '64',
        intf_ip_addr_step   = '::1',
        insert_length_errors= 'FALSE',
        mld_version         = 'v1',
        unsolicited_report_interval= '10',
        insert_checksum_errors= 'FALSE',
        force_leave         = 'FALSE',
        use_partial_block_state= 'FALSE',
        force_robust_join   = 'FALSE',
        count               = '1');

Sample Output:

{'status': '1', 'handles': 'mldhostconfig1', 'handle': 'host2'}

#### HLTAPI for Perl ####

The following example creates an MLD session:

my %device_ret0 = sth::emulation_mld_config (
        mode                => 'create',
        link_local_intf_ip_addr=> 'fe80::1',
        link_local_intf_ip_addr_step=> '::1',
        link_local_intf_prefix_len=> '64',
        port_handle         => "$hport[1]",
        msg_interval        => '0',
        neighbor_intf_ip_addr_step=> '::',
        neighbor_intf_ip_addr=> '2001::1',
        intf_ip_addr        => '2001::2',
        intf_prefix_len     => '64',
        intf_ip_addr_step   => '::1',
        insert_length_errors=> 'FALSE',
        mld_version         => 'v1',
        unsolicited_report_interval=> '10',
        insert_checksum_errors=> 'FALSE',
        force_leave         => 'FALSE',
        use_partial_block_state=> 'FALSE',
        force_robust_join   => 'FALSE',
        count               => '1');

Sample Output:

$VAR1 = 'handle';
$VAR2 = 'host2';
$VAR3 = 'handles';
$VAR4 = 'mldhostconfig1';
$VAR5 = 'status';
$VAR6 = '1';

Note

When first configuring MLD emulation on a port, you must specify -mode create and initialize the port handle before calling the sth::emulation_mld_config function.

End of Procedure Header

sth::emulation_mld_group_config

Purpose

Creates group pools and source pools and modifies group and source pools from MLD hosts. This function configures multicast group ranges for an emulated MLD host. You must use the common sth::multicast_source_config functions with this function.

Synopsis

Note

M indicates that the argument is Mandatory .

sth::emulation_mld_group_config
  [-mode {create|modify|delete}  M]
  [-session_handle <mld_session_handle>]
  [-group_pool_handle <multicast_group_pool_handle>]
  [-handle <group_member_handle> ]
  [-source_pool_handle <multicast_source_pool_handle>]
  [-device_group_mapping {many_to_many|one_to_one|round_robin}]
  [-user_defined_src {true|false}]
  [-ip_addr_list <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-host_handle <host_handle>]

Arguments

-group_pool_handle

Specifies the name of the group (that is, the list of multicast IP addresses) to link to the MLD host during create mode. Before specifying the group pool handle, use the sth::emulation_multicast_group_config function to add the group pool. See Multicast APIs in this documentation set for information about the sth::emulation_multicast_group_config and sth::emulation_multicast_source_config functions. This argument is Mandatory in mode create.

-handle

Sets the group membership handle that associates group pools with an MLD host. In modify mode, the membership handle must be used in conjunction with the session handle to identify the multicast group pools. -mode modify returns the same handle passed in. This argument is Mandatory in modes modify and delete.

-mode

Specifies the action to perform. Possible values are create, modify, and delete. There is no default; you must specify a mode. This argument is Mandatory .

create
Starts emulation on the port specified with -session_handle and associates an existing multicast group pool (-group_pool_handle) with the specified MLD host (that is, joins the membership). You must specify a session handle with -mode create.
modify
Changes the configuration identified by the -handle argument by applying the parameters specified in subsequent arguments.
delete
Remove one group of pools from this session.
-session_handle

Specifies the handle of the MLD host on which to configure the MLD group ranges. This argument is Mandatory in mode create.

-source_pool_handle

Specifies the name of the source pool (that is, the list of non-multicast source IP addresses) to associate with the groups during create mode. Each multicast group may contain 0 or more of these source IP addresses. Use this argument if the host only wants specific information within the specified multicast group (-group_pool_handle). Specifying the source pool handle along with the group pool handle in the sth::emulation_mld_group_config function adds the range of source IP addresses to each multicast group.

Before specifying the source pool handle, use the sth::emulation_multicast_source_config function to add the source pools. See “Multicast APIs” in this documentation set for information about the sth::emulation_multicast_source_config and sth::emulation_multicast_group_config functions.

-device_group_mapping

Spirent Extension (for Spirent HLTAPI only).

Specifies the method of mapping between the device and the subscribed multicast group within their respective blocks. Possible values are:

many_to_many
Creates a full mesh of devices and groups
one_to_one
Assigns one device to each group. The mapping stops when it reaches the end of either devices or groups. Extra devices or groups are not mapped.
round_robin
Creates a round-robin pattern of devices and groups

The default value is many_to_many.

-user_defined_src

Spirent Extension (for Spirent HLTAPI only).

Enables or disables user-defined multicast sources. Possible values are true (enable) and false (disable). The default value is false.

-ip_addr_list

Spirent Extension (for Spirent HLTAPI only).

A list of IP addresses that are used to specify a range of source addresses. This argument is available when -user_defined_src is enabled.

-host_handle

Spirent Extension (for Spirent HLTAPI only).

Specifies the handle of the host on which to configure the MLD source

Return Values

Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):

handle
Identifies the handle of the group (group_member_handle) created by the sth::emulation_mld_group_config function.
group_pool_handle
Identifies the group pool handle used by the sth::emulation_mld_group_config function to configure or modify the group member.
source_pool_handle
Identifies the source pool handle used by the sth::emulation_mld_group_config function to configure or modify the group member.
status
Success (1) or failure (0) of the operation.
log
An error message (if the operation failed).

Description

The sth::emulation_mld_group_config function configures or modifies a group of MLD hosts where each group share a set of common characteristics. Use the -mode argument to specify the action to perform. (See the -mode argument description for information about the actions.)

Before using this function, you must specify “-mode create” when configuring MLD host emulation on a port and initialize the port handle argument (using the sth::emulation_mld_config function).

When calling sth::emulation_mld_group_config using “-mode create”, this function will return the group member handle for use with the -handle argument.

You can link groups of multicast IP addresses to any interested host or just a subset of IP addresses within each group.

Each multicast IP address directs the information it represents to any host interested in subscribing to it.

To subscribe to only one or more particular IP addresses that exist within a multicast group, you must use the -source_pool_handle as well. Specifying the source_pool_handle along with the group_pool_handle in the sth::emulation_mld_group_config function, adds the range of source IP addresses to each multicast group.

Examples

#### HLTAPI for Tcl ####

The following example configures the hosts, represented by “mldSessionHandle”, to subscribe to the multicast group(s) represented by “McGroupHandle”:

sth::emulation_mld_group_config \
     -mode create \
     -group_pool_handle $McGroupHandle \
     -session_handle $mldSessionHandle

Sample output for example shown above:

{status 1} {handle mldhostconfig1}

The following example configures the hosts, represented by mldSessionHandle, to subscribe to the multicast group(s) represented by McGroupHandle with user defined source IP list:

sth::emulation_mld_group_config \
     -mode                     create \
     -group_pool_handle        $McGroupHandle \
     -session_handle           $mldSessionHandle \
     -device_group_mapping     round_robin \
     -user_defined_src         true \
     -ip_addr_list             "2001::1 1000::2"]

Sample output for example shown above:

{status 1} {handle mldhostconfig1}

#### HLTAPI for Python ####

The following example configures the hosts, represented by “mld_host”, to subscribe to the multicast group(s) represented by “mld_group”:

device_ret0_group = sth.emulation_mld_group_config (
        mode                = 'create',
        session_handle      = mld_host,
        group_pool_handle   = mld_group);

Sample Output: {‘status’: ‘1’, ‘handle’: ‘mldgroupmembership1’}

#### HLTAPI for Perl ####

The following example configures the hosts, represented by “$mld_host”, to subscribe to the multicast group(s) represented by “$mld_group”:

my %device_ret0_group = sth::emulation_mld_group_config (
        mode                => 'create',
        session_handle      => "$mld_host",
        group_pool_handle   => "$mld_group");

Sample Output:

$VAR1 = 'handle';
$VAR2 = 'mldgroupmembership1';
$VAR3 = 'status';
$VAR4 = '1';

End of Procedure Header

sth::emulation_mld_control

Purpose

Start, stop, or restart the MLD host on the specified port. Leaves and joins group pools.

Synopsis

Note

M indicates that the argument is Mandatory .

sth::emulation_mld_control
   [-mode {join|leave|leave_join}  M]
   [-group_member_handle <handle>]
   [-port_handle < port_handle_list >]
   [-handle <MLD_session_handle_list>]
   [-delay <seconds>]
   [-data_duration <seconds>]
   [-calculate_latency {0|1} ]

Arguments

-calculate_latency

Spirent Extension (for Spirent HLTAPI only).

Specifies whether to calculate latencies when joining or leaving multicast groups. Possible values are 0 (do not calculate latency) and 1 (calculate latency). If set to 1 during an MLD Join, HLTAPI cannot capture the MLD control plane packets because the analyzer stops to collect packets so it can calculate latency.

Note

Background traffic analysis with MLD is unavailable with calculate latency enabled. Also, if you are testing multiple joins and leaves with calculate latency enabled, you must add a delay (a few seconds) between subsequent joins and leaves (see example below).

The following example does 100 iterations of join and leaves on 90 sessions. A 10-second delay is added after each join and each leave (using the Tcl command “after”). The delay duration to use depends on the number of iterations and number of sessions:

for {set joinleaveidx 0} {$joinleaveidx < 100} \
    {incr joinleaveidx} {

    # MLD join
      sth::emulation_mld_control \
          -mode join \
          -calculate_latency 1 \
          -handle $MLDSessionHandle

    # Adding a delay between join and leave.
    # This value is based on 90 sessions joining.
    # May need to be adjusted when ``Scaling`` higher.

      after 10000

    # MLD leave
      sth::emulation_mld_control \
          -mode leave \
          -calculate_latency 1 \
          -handle $MLDSessionHandle

    # Adding a delay between the last leave and
    # the next join when this loops.
    # This value is based on 90 sessions leaving.
    # May need to be adjusted when ``Scaling`` higher.

      after 10000

    }
-delay

Spirent Extension (for Spirent HLTAPI only).

Specifies the amount of time, in seconds, between joins and leaves. The default is 0.

-data_duration

Spirent Extension (for Spirent HLTAPI only).

Specifies the amount of time, in seconds, to wait before latencies are calculated. The default is 10.

-group_member_handle

Identifies the MLD (one or more) group member handle.

-port_handle

Specifies a list of ports on which to perform the MLD actions. This argument is Mandatory when the -mode argument is “start”, “stop”, or “restart”.

-handle

Identifies a list of MLD groups to stop, start, restart, join, or leave. This value is returned by the sth::emulation_mld_group_config function. If you do not specify a group, the specified action is applied to all groups configured on the port specified by -port_handle. This value appears in the keyed list returned by the sth::emulation_mld_group_config function.

-mode

Specifies the action to perform on the specified handle. If you provide a handle (-handle), this argument performs the specified action on all groups on this session. If you provide a group member handle (-group_member_handle), this argument performs the specified action on the specified group pool(s). If you do not provide either a handle or a group member handle, this argument performs the specified action on all groups on all sessions. Possible values are start, stop, join, leave and leave_join. You must specify one of these values. The modes are described below: :

join
Joins all groups specified by -handle or joins group pools specified by -group_member_handle. If you do not provide a handle, this action joins all groups on all ports. This action only affects the status of the groups, it will not start the MLD protocol.
leave
Leave (or unjoin) all groups specified by -handle or group pools specified by -group_member_handle. If you do not provide a handle, this action leaves all groups on all ports. This action only affects the status of the groups, it will not start or stop the protocol.
leave_join
Rejoins all groups specified by -handle or rejoins group pools specified by -group_member_handle. The device specified by -handle or -group_member_handle will resend IGMP/MLD Reports.

Note

There is a critical limitation for MLD Latency tests. For MLD Latency tests (IgmpMldLeaveGroupsCommand), the Spirent TestCenter analyzer only filters on the upper two and lower two bytes of the IPv6 group address. Therefore, if you step any of the 12 bytes in between, these streams will get aggregated based on the values of the upper and lower two bytes. The Spirent TestCenter analyzer does not have enough filter space to filter on the entire 16-byte IPv6 group address.

For example, the following IPv6 group addresses are sent from port1:

 FF1E:1111:0:0:0:0:0:1
 FF1E:1111:0:0:0:0:0:2
 FF1E:2222:0:0:0:0:0:1
 FF1E:2222:0:0:0:0:0:2

Suppose an MLD host on port 2 joins all the groups. You will
be receiving packets from all four group addresses, but
notice how the groups will be aggregated onto two streams on
the analyzer due to the limitation of not being able to
differentiate the middle 12 bytes of the packets.

First, analyzer looks at the upper and lower two bytes of
each packet and ignore the middle 12 bytes, as shown below::

  FF1E:1111:0:0:0:0:0:1
  FF1E:1111:0:0:0:0:0:2
  FF1E:2222:0:0:0:0:0:1
  FF1E:2222:0:0:0:0:0:2

Next, packets are aggregated based on the values of the
upper and lower two bytes, as shown below::

 Upper   Lower
 FF1E    1       * represents (FF1E:1111:0:0:0:0:0:1 and
                   FF1E:2222:0:0:0:0:0:1)
 FF1E    2       * represents (FF1E:1111:0:0:0:0:0:2 and
                   FF1E:1111:0:0:0:0:0:2)

Return Values

Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):

status     Success (1) or failure (0) of the operation.
log        An error message (if the operation failed).

Description

The sth::emulation_mld_control function sends a Join or Leave message from the host to inform a router that the host is either joining the multicast group specified by handle or group_member_handle or terminating its membership in the specified multicast group.

When you call the sth::emulation_mld_control function, you specify a handle. Spirent HLTAPI applies the specified action to all of the emulated MLD hosts associated with the specified port.

When a host wants to participate in a multicast group, it sends a “join” message to its local router. After a router receives one or more “joins” for a specific group, it forwards any packets destined for that particular group to the appropriate interface(s). The router regularly verifies that the hosts want to continue to participate in the multicast groups by sending periodic “queries” to the receivers.

When a host is no longer interested in multicast group participation, it sends a “leave” message.

Examples

#### HLTAPI for Tcl ####

The following example joins all groups specified by -handle:

sth::emulation_mld_control \
     -mode join \
     -handle $MLDSessionHandle

The following example removes the groups specified by -handle from the hosts on the specified port:

sth::emulation_mld_control \
       -mode leave \
       -handle $MLDSessionHandle

The following example starts the groups specified by -handle:

sth::emulation_mld_control \
     -handle $MLDSessionHandle

The following example rejoins the groups specified by -handle:

sth::emulation_mld_control \
      -mode leave_join \
      -handle $MLDSessionHandle

Sample Output:

{status 1} success or {status 0} fail

#### HLTAPI for Python ####

The following example joins all groups specified by handle::
ctrl_ret1 = sth.emulation_mld_control (
handle = device_list, mode = ‘join’);

Sample Output:

{'status': '1'}

#### HLTAPI for Perl ####

The following example joins all groups specified by handle:

my %ctrl_ret1 = sth::emulation_mld_control (
                    handle              => "$device_list",
                    mode                => 'join');

Sample Output:

$VAR1 = 'status';
$VAR2 = '1';

End of Procedure Header

sth::emulation_mld_info

Purpose

Returns statistics about the MLD group activity on the specified handle. Statistics include the connection status and number and type of messages sent and received from the specified port.

Synopsis

Note

M indicates that the argument is Mandatory .

sth::emulation_mld_info
   [-handle <MLD_session_handle>  M]
   [-port_handle <port(device.port)>]

Arguments

-handle

Specifies the MLD session handle upon which host emulation is configured. This value is returned by the sth::emulation_mld_config function. If -handle is not specified, the statistics of all MLD session handles under project1 will be retrieved.

-port_handle

Specifies the port upon which MLD session handle is configured. The port handle is returned by the sth::connect function. If -port_handle is not specified, the statistics of all port handles with MLD session handles configured will be retrieved.

Return Values

Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):

status
Success (1) or failure (0) of the operation.
log
An error message (if the operation failed).
invalid_pkts

Number of invalid MLD packets received. Invalid MLD packets include:

invalid MLD checksum
invalid packet length
invalid MLD types
dropped_pkts
Will always return 0 because Spirent HLTAPI currently does not drop valid MLD packets dropped.
host_addr
IP address of host whose group membership stats are being displayed.
group_addr
Group membership IP address of host whose group membership stats are being displayed.
group_membership_stats
List of group membership statistics.
state

State of group membership of host whose group membership stats are being displayed. Possible returned values are:

UNDEFINED - The state is not defined.

NON_MEMBER - The host does not belong to the group on the
    interface. Non-member is the initial state for all
    memberships on all network interfaces.

DELAYING_MEMBER - The host belongs to the group on the
    interface and has a report delay timer running for that
    membership.

IDLE_MEMBER - The host belongs to the group on the interface
    and does not have a report delay timer running for that
    membership.

RETRYING_MEMBER - This state applies to MLDv1 hosts
    when ForceRobustJoin is True. The host is
    retransmitting its initial "join" before transitioning
    from the NON_MEMBER state to the DELAYING_MEMBER or
    IDLE_MEMBER state.

INCLUDE - Data from the specified sources are filtered and
    forwarded to the host by the multicast router.

EXCLUDE - Data from the specified sources are filtered and
    not forwarded to the host by the multicast router.
join_latency
The time, in milliseconds, between sending the MLD join and receiving the multicast data for the channel specified in the join message. This value is valid only when “sth::emulation_igmp_control -calculate_latency” is set to 1.
leave_latency
The time, in milliseconds, between sending the MLD leave for a channel and when multicast data has stopped being received. This value is valid only when “sth::emulation_igmp_control -calculate_latency” is set to 1.

In addition, the following MLD port statistics are returned:

mldv1_queries_rx
Routers use Multicast Listener Query messages to query a subnet for multicast listeners.
mldv1_group_queries_rx
MLDv1 Group specific Queries received.
mldv1_queries_tx
MLDv1 Membership Queries are sent by IP multicast routers to query the multicast reception state of neighboring interfaces.
mldv1_mem_reports_tx
MLDv1 reports are sent to multicast routers to indicate that hosts have listeners interested in joining multicast groups whose multicast address is listed in the router’s list.
mldv1_mem_reports_rx
MLDv1 reports are sent to multicast routers to indicate that hosts have listeners interested in joining multicast groups whose multicast address is listed in the router’s list.
mldv1_leave_tx
MLDv1 Leaves transmitted.
mldv2_queries_rx
Routers use Multicast Listener Query messages to query a subnet for multicast listeners.
mldv2_group_queries_tx
This statistic is included in the TxV2QueryCount. MLDv2 Membership Queries are sent by IP multicast routers to query the multicast reception state of neighboring interfaces.
mldv2_group_src_queries_rx
Routers use Multicast Listener Query messages to query a subnet for multicast listeners
mldv2_mem_reports_rx
MLDv2 are used to report interest in receiving multicast traffic for a specific multicast address or to respond to a Multicast Listener Query message.
mldv2_mem_reports_tx
MLDv2 reports are sent to multicast routers to indicate that hosts have listeners interested in joining multicast groups whose multicast address is listed in the router’s list.
mld_frames_rx
Total number of MLD frames received.
mld_general_queries_rx
Total number of multicast general queries received.
mld_group_src_queries_rx
Group- and source-specific queries are sent by a multicast router whenever a host leave a specific source of a group. This is to make sure that there are no other hosts of that source and group.
mld_group_queries_rx
The Group-Specific Query is used to learn if a particular group has any members on an attached network.
mld_checksum_errors_rx
Total number of MLD messages received with checksum errors.
mld_length_errors_rx
Total number of MLD messages received with length errors.
mld_unknown_rx
Total number of MLD frames of unknown type received.
mld_timestamp
Timestamp in seconds of last statistic update.
mld_frames_tx
Total number of MLD frames transmitted.
mld_general_queries_tx
General Queries are used to learn which multicast addresses have listeners on an attached link.
mld_group_src_queries_tx
Group- and source-specific queries are sent by a multicast router whenever a host leave a specific source of a group. This is to make sure that there are no other hosts of that source and group.
mld_group_queries_tx
The Group-Specific Query is used to learn if a particular group has any members on an attached network.
mldv2_allow_new_src_tx
A Source-List-Change Record (SLCR) indicating the group’s associated sources have changed such that data from a new set of sources are to be received
mldv2_block_old_src_tx
A Source-List-Change Record (SLCR) indicating the group’s associated sources have changed such that data from an existing set of sources are not Mandatory .
mldv2_filter_exclude_tx
A Filter-Mode-Change Record (FMCR) indicating the filter-mode of the reception state has changed to exclude mode.
mldv2_filter_include_tx
A Filter-Mode-Change Record (FMCR) indicating the filter-mode of the reception state has changed to include mode.
mldv2_exclude_tx
A Current-State Record (CSR) indicating the current reception state with respect to 1 multicast group at a given interface. The state contains the exclude filter mode.
mldv2_include_tx
A Current-State Record (CSR) indicating the current reception state with respect to 1 multicast group at a given interface. The state contains the include filter mode

Description

The sth::emulation_mld_info function retrieves statistics about the number of invalid and dropped packets on the specified host as well as several port statistics.

Examples

#### HLTAPI for Tcl ####

When you call sth::emulation_mld_info, the contents of the returned keyed list depends on the status of the call. For example:

sth::emulation_mld_info -handle $handle1

Returns a list that contains one of the following:

  • If the call is successful, the list contains stats and command execution status (in this case, a 1 indicating success).
  • If the call fails, the list contains error log and command execution status (in this case, a 0 indicating failure).

Sample Output:

{group_membership_stats {{group_addr {{ff1e::1 {{host_addr
{{fe80:1:1:1:1:1:1:2 {{state IDLE_MEMBER} {join_latency 0.000000}
{leave_latency 0.000000}}}}}}} {ff1e::2 {{host_addr {{fe80:1:1:1:1:1:1:2
{{state IDLE_MEMBER} {join_latency 0.000000}
{leave_latency 0.000000}}}}}}}
{ff1e::3 {{host_addr {{fe80:1:1:1:1:1:1:2 {{state IDLE_MEMBER}
{join_latency 0.000000} {leave_latency 0.000000}}}}}}} {ff1e::4
{{host_addr {{fe80:1:1:1:1:1:1:2 {{state IDLE_MEMBER} {join_latency
0.000000} {leave_latency 0.000000}}}}}}} {ff1e::5 {{host_addr
{{fe80:1:1:1:1:1:1:2 {{state IDLE_MEMBER} {join_latency 0.000000}
{leave_latency 0.000000}}}}}}} {ff1e::6 {{host_addr {{fe80:1:1:1:1:1:1:2
{{state IDLE_MEMBER} {join_latency 0.000000}
{leave_latency 0.000000}}}}}}}
{ff1e::7 {{host_addr {{fe80:1:1:1:1:1:1:2 {{state IDLE_MEMBER}
{join_latency 0.000000} {leave_latency 0.000000}}}}}}} {ff1e::8
{{host_addr {{fe80:1:1:1:1:1:1:2 {{state IDLE_MEMBER} {join_latency
0.000000} {leave_latency 0.000000}}}}}}} {ff1e::9 {{host_addr
{{fe80:1:1:1:1:1:1:2 {{state IDLE_MEMBER} {join_latency 0.000000}
{leave_latency 0.000000}}}}}}} {ff1e::a {{host_addr
{{fe80:1:1:1:1:1:1:2 {{state IDLE_MEMBER} {join_latency 0.000000}
{leave_latency 0.000000}}}}}}}}}}} {session {{mldhostconfig1
{{min_join_latency 0.000000} {max_join_latency 0.000000} {avg_join_latency
0.000000} {min_leave_latency 0.000000} {max_leave_latency 0.000000}
{avg_leave_latency 0.000000}}}}} {status 1}

If there is an error, you will see:

{status 0} {log {Error message }}

#### HLTAPI for Python ####

Sample Input:

device = device_ret0['handle'].split()[0]

results_ret1 = sth.emulation_mld_info (
             handle              = device);

Sample Output:

{'status': '1', 'session': {'mldhostconfig1': {'avg_join_latency': '0',
'max_leave_latency': '0', 'min_join_latency': '0', 'min_leave_latency': '0',
'max_join_latency': '0', 'avg_leave_latency': '0'}},
'group_membership_stats': ''}

#### HLTAPI for Perl ####

Sample Input:

$device = "$device_ret0{handle}[0]";

my %results_ret1 = sth::emulation_mld_info (
             handle              => "$device");

Sample Output:

$VAR1 = 'session';
$VAR2 = {
          'mldhostconfig1' => {
                                'min_leave_latency' => '0',
                                'max_join_latency' => '0',
                                'max_leave_latency' => '0',
                                'min_join_latency' => '0',
                                'avg_leave_latency' => '0',
                                'avg_join_latency' => '0'
                              }
        };
$VAR3 = 'status';
$VAR4 = '1';
$VAR5 = 'group_membership_stats';
$VAR6 = '';

Note

If you configure over 1000 host-group pairs, the lower layer only returns avg/min/max latencies in the returned keyed list. If you configure 1000 or less host-group pairs, the returned keyed list contains individual latencies.

End of Procedure Header