IGMP Functions¶
emulation igmp config¶
Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>
- Purpose:
Creates, modifies, or deletes Internet Group Management Protocol (IGMP) host(s) for the specified Spirent HLTAPI port or handle.
The Internet Group Management Protocol (IGMP) is a communications protocol that manages the membership of Internet Protocol multicast groups.
Use IGMP to dynamically register individual hosts in a multicast group on a particular LAN. Hosts identify which multicast groups they belong to by sending IGMP messages to their local router. Under IGMP, routers listen to IGMP messages and send out queries to discover which groups are active on a particular subnet. When all hosts leave a group, the router no longer forwards packets for that group.
Synopsis:
Note: 1. M indicates the argument is `Mandatory`.
2. S indicates the argument is for `scaling` scenarios.
emulation igmp config
mode= {create|modify|delete|disable_all|activate} M
port_handle= <port_handle>
handle= <session_handle>|<IGMP_host_handle>
count= <1-65535>
enable_router_alert= {true|false}
enable_df= {true|false}
filter_mode= {include | exclude}
filter_ip_addr= <a.b.c.d>
force_single_join= {true|false}
force_robust_join= {true|false}
force_leave= {true|false}
general_query= <1>
group_query= <1>
igmp_version= {v1|v2|v3}
insert_checksum_errors= {true|false}
insert_length_errors= {true|false}
intf_ip_addr= <a.b.c.d>
intf_ip_addr_step= <a.b.c.d>
intf_prefix_len= <1-32>
ip_router_alert= {0|1}
source_mac= <aa:bb:cc:dd:ee:ff>
source_mac_step= <aa:bb:cc:dd:ee:ff>
msg_interval= <0-4294967295>
max_burst= <NUMERIC>
vlan_sub_filter= <inner|outer>
calculate_latency= {0|1}
calculate_latency_delay= <1-3600>
neighbor_intf_ip_addr= <a.b.c.d>
neighbor_intf_ip_addr_step= <a.b.c.d>
older_version_timeout= <0-4294967295>
qinq_incr_mode= {inner|outer|both}
robustness= <2-255>
suppress_report= 1
tos= <0-255>
tos_type= {tos|diffserv}
pack_reports= {true|false}
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-32767>
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-32767>
vlan_outer_user_priority= <0-7>
expand= {true|false} S
router_alert= {true|false}
mcast_group_count= <1-32000>
ignore_memberships= {true|false}
device_group_mapping= {many_to_many|one_to_one|round_robin}
mcast_ipv4_addr= <IPV4>
filtered_sources= {none|existing|custom}
src_count= <1-4294967295>
src_step= <0-4294967295>
src_ipv4_addr= <a.b.c.d>
src_ipv4_prefix= <1-32>
source_filters= {true | false}
source_list= <device_list or host_list>
incr_src_ipv4_addr_per_device= <a.b.c.d>
Arguments:
count
Defines the number of IGMP hosts to create on the
interface. Possible values are 1 to 65535. The default
is 1.
filter_mode
Specifies an explicit set of sources from which the
multicast group is interested in receiving data (configures
IGMPv3 Include Filter mode). Possible values are::
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.
The default is include.
enable_df
`Spirent Extension (for Spirent HLTAPI only).`
Enables or disables the Don't Fragment (DF) bit in the IPv4 header
Values: true, false
Default: false
enable_router_alert
`Spirent Extension (for Spirent HLTAPI only).`
Enables or disables the router alert option in the IPV4 header
Values: true, false
Default: false
filter_ip_addr
Configure the filtered IP address.
The value must be in IPv4 format. The default value is 192.0.1.0.
force_single_join
`Spirent Extension (for Spirent HLTAPI only).`
Determines whether to force the IGMP hosts to send a single Join
report per group
Values: true, false
Default: false
force_robust_join
`Spirent Extension (for Spirent HLTAPI only).`
Determines whether to transmit a second report when an
IGMPv1/IGMPv2 host joins a multicast group and transmits an
initial unsolicited membership report for that group
Values: true, false
Default: false
force_leave
`Spirent Extension (for Spirent HLTAPI only).`
Determines whether all hosts are required to send Leave reports
when leaving the multicast group. When it is enabled, a Leave
message will be sent even if the host is not the last host to
report membership.
Values: true, false
Default: false
general_query
Always enabled. Valid value is 1 (true).
When general_query is set to 1, Spirent HLTAPI responds
to only general queries received on the interface.
group_query
Always enabled. Valid value is 1 (true).
When group_query is set to 1, Spirent HLTAPI responds
to only groupspecific (and source/group) queries received
on the interface.
handle
The handle of the IGMP host configured on the port to
use. You must specify handle when -mode is set to "modify"
or "delete". When you use mode create, it is `Mandatory` that
you specify port_handle or -handle, but not both. If you define
port_handle and -mode create, Spirent HLTAPI creates an IGMP
device on the given port. If you specify handle and -mode create,
Spirent HLTAPI enables IGMP over the provided PPPoX or L2TP
session.
You can use handle when -mode is set to "create" for
IGMPoPPPoX or IGMPoL2TP. When specifying a PPPoX/L2TP
handle, the PPPoX/L2TP options specified in the
``l2tp config`` function are used instead of
the following emulation igmp config arguments::
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_id_count
vlan_id_outer
vlan_id_outer_count
vlan_id_outer_step
vlan_outer_user_priority
vlan_outer_tpid
The following example specifies a PPPoX handle::
emulation igmp config
mode create
handle $pppoxHandle
older_version_timeout 400
robustness 2
unsolicited_report_interval 100
The following example enables IGMP protocol on an
existing L2TP host::
emulation igmp config
mode create
handle $l2tpHandle
older_version_timeout 400
robustness 2
unsolicited_report_interval 100
igmp_version
Specifies the multicasting protocol used to manage multicast
group memberships. Possible values are::
v1 - The second version of IGMP (supercedes IGMPv0),
specified in RFC 1112.
v2 - IGMP version specified in RFC 2236. Improved IGMP
version that adds "leave" messages, shortening the
amount of time `Mandatory` for a router to determine
that no stations are in a particular group. This
version includes the ability for the receivers to
gracefully exit from a multicast group.
v3 - Specified in RFC 3376, this major revision of the
IGMP protocol adds the ability to specify the
source(s) to which a receiver is willing to
listen. Sources can be stipulated with "include"
filters in the "join" and "report" messages, or
sources can be specifically rejected with
"exclude" filters.
insert_checksum_errors
`Spirent Extension (for Spirent HLTAPI only).`
Determines whether to insert checksum errors into all IGMP
control packets
Values: true, false
Default: false
insert_length_errors
`Spirent Extension (for Spirent HLTAPI only).`
Determines whether to insert length errors into all IGMP control
packets
Values: true, false
Default: false
intf_ip_addr
Specifies the first IPv4 address in the group. The default
for IPv4 is 192.85.1.3.
intf_ip_addr_step
Specifies the difference between interface IP addresses of
consecutive hosts when multiple IGMP hosts are created.
The default increment is 1 (for example, 0.0.0.1). This
argument is only applicable in create mode.
intf_prefix_len
Specifies the address prefix length on the emulated host,
Possible values for IPv4 addresses range from 1 to 32; the
default is 24,
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.)
source_mac
Specifies the starting MAC address in the address pool. The
value must be in MAC format. The default value is
00:10:94:00:00:01.
source_mac_step
Specifies the increment to use when generating the next MAC
address. The default value is 00:00:00:00:00:01.
mode
Specifies the action to perform. Possible values are create,
modify, and delete, This argument is `Mandatory`. The modes are
described below::
create - Starts emulating IGMP hosts on the specified port
or handle.
modify - Changes the configuration parameters for the IGMP
hosts identified by either the port_handle or -handle
argument.
delete - Stops the IGMP emulation locally without attempting
to clear the bound addresses from the IGMP server. In
addition, all IGMP group sessions information on the
port is cleared and the connection is restarted.
disable_all - Disables all the IGMP sessions on the specific port.
If port_handle is not specified, all IGMP sessions under
all ports will be disabled.
activate - Used for `scaling` scenarios.
1. Enables IGMP devices and configures IGMP parameters
for the devices created via the 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 ``emulation igmp config`` function for more
information. For this mode, only the following set of
options are valid::
igmp_version
router_alert
device_group_mapping
mcast_ipv4_addr
ignore_memberships
mcast_group_count
filter_mode
filtered_sources
src_count
src_step
src_ipv4_addr
src_ipv4_prefix
2. Creates devices and enables IGMP 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
router_id_step
router_id_ipv6
router_id_ipv6_step
intf_ip_addr
intf_ip_addr_step
intf_prefix_len
gateway_ip_addr
gateway_ip_addr_step
mac_addr
mac_addr_step
mac_addr_step_per_port
mac_addr_step_per_vlan
ip_step_per_port
ip_step_per_vlan
source_filters
source_list
incr_src_ipv4_addr_per_device
Note: Please refer to the emulation_device_config documentation.
msg_interval
Maximum output rate of IGMP 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.
max_burst Short-term maximum burst size in packets.
A value of 0 specifies the maximum possible burst size.
Default: 0
vlan_sub_filter
Specifies whether to filter on the Outer or Inner VLAN tag when
calculating latency for devices with a PPPoE and stacked VLAN encapsulation.
Possible values are::
inner - Specifies that the analyzer filter will be programmed to use the Inner VLAN ID.
outer - Specifies that the analyzer filter will be programmed to use the Outer VLAN ID.
The default is outer
calculate_latency
Specifies whether to interactively calculate join/leave latency
for the group associated to this group membership on the device.
Possible values are::
1 - Enables join/leave latency to be calculated interactively.
Refer to calculate_latency_delay property to configure the delay to calculate latency.
0 - Disables join/leave latency from being calculated interactively.
The default value is 0.
calculate_latency_delay
Specifies the delay (in seconds) before latency is calculated.
The timer starts after reports are sent for each device.
Default: 10
Note: Applies to interactive latency tests only.
neighbor_intf_ip_addr
Specifies the IP address of the interface for the IGMP
neighbor (next hop) that will establish an adjacency with
the DUT. The default for IPv4 is 192.85.1.1.
neighbor_intf_ip_addr_step
Specifies the difference between the IGMP neighbor's
interface IP addresses when multiple IGMP hosts are created.
The default is 0.0.0.0 (that is, the same address).
older_version_timeout
The amount of time (in 1/10 seconds) a host must wait after
hearing a Version 1 Query before it may send any IGMPv2
messages. Not used for IGMPv3. Possible values are 0 to
4294967295. The default is 4000
milliseconds.
pack_reports
`Spirent Extension (for Spirent HLTAPI only).`
Determines whether to allow multiple group records to be packed
into a single report message (for IGMPv3 only)
Values: true, false
Default: false
port_handle
The handle of the port on which to create the emulated IGMP
session. When mode is set to "create", it is `Mandatory` that
you specify port_handle or -handle, but not both.
qinq_incr_mode
Determines which VLAN ID to increment first. Possible values
are::
inner - increment the inner VLAN ID before the outer VLAN ID
outer - increment the outer VLAN ID before the inner VLAN ID
both - increment both the inner and outer VLAN ID at the
same time.
The default is inner.
Note: For HLTAPI, qinq can only be incremented on a per host basis.
robustness
IGMPv3 only. 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.
suppress_report
Always enabled. Valid values are 0 (false) and 1 (true).
When suppress_report is set to 1, Spirent HLTAPI
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.
tos
`Spirent Extension (for Spirent HLTAPI only).`
Specifies the value of the TOS field in the IPv4 header
Values: 0-255
Default: 192
tos_type
`Spirent Extension (for Spirent HLTAPI only).`
Specifies the formatting of the TOS value
Values: tos, diffserv
Default: tos
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 subinterface.
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
`Spirent Extension (for Spirent HLTAPI only).`
Specifies the number of inner VLAN IDs to use when
generating IGMP clients. Spirent HLTAPI assigns VLAN
membership in roundrobin fashion. 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", you can 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 32767. You can 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).`
The number of outer VLAN IDs to use when generating IGMP
clients. Spirent HLTAPI assigns VLAN membership in
roundrobin fashion. Possible values range from 1 to 4096.
The default is 1.
vlan_id_outer_mode
`Spirent Extension (for Spirent HLTAPI only).`
Specifies how Spirent HLTAPI 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 32767. 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 IGMP device
parameters into emulated IGMP device objects. It is
used in `scaling` test scenarios.
When set to true, a list of emulated device handles (handle_list)
with enabled IGMP device configurations is created.
When set to false, only IGMP parameters are configured with no
handle returned.
router_alert
Specifies to enable/disable router alert option in the IPV4 header of IGMP packet.
Possible values are true and false. The default is true.
Applicable only in mode activate when -block_mode or -expand is specified.
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_ipv4_addr
Specifies the IPv4 multicast group address.
The default is 225.0.0.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.
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_ipv4_addr
Specifies the multicast source IPv4 address.
The default is 1.0.0.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_ipv4_prefix
Specifies the multicast source IPv4 prefix length.
The default is 24.
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 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
src_step
Specifies step for the multicast addresses.
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
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 IGMPV3 host IP.
false - Configures source IP based on the source_list or -incr_src_ipv4_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.
IGMPV3 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_ipv4_addr_per_device
`Spirent Extension (for Spirent HLTAPI only).`
Specifies the source IP incrementation per IGMPV3 host in IPV4 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_ipv4_addr a.b.c.d
Arguments Unsupported by Save as HLTAPI:
The following Spirent HLTAPI arguments are currently not supported by the Save as
HLTAPI function::
qinq_incr_mode
- Ciscospecific Arguments:
The following arguments are specific to the Cisco HLTAPI but are not Supported by Spirent HLTAPI:
emulation_intf_handle group_per_intf group_pool_handle intf_ip_mode max_groups_per_pkts max_response_control max_response_time msg_rate sessions_per_group unsolicited_report_interval
Vendor Specific Arguments Processed by Spirent HLTAPI Wrapper:
- mac_address_init
- The MAC address for the interface to be created. Valid for mode create
- mac_address_step
- The incrementing step for the MAC address of the interface to be created
- interface_handle
- A handle or list of the handles that are returned from the interface config call.
- port_handle
- The port on which the session is to be created. Valid for mode create.
Vendor Specific Arguments Ignored by Spirent HLTAPI Wrapper:
enable_packing
max_sources_per_group
max_groups_per_pkts
msg_count_per_interval
reset
Note: For more information about Spirent HLTAPI Wrapper, refer to Chapter 4
Spirent HLTAPI Wrapper in Spirent HLTAPI Programmer's Reference.
- 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 created device handle. handles Identifies the IGMP host configration handle. handle_list The emulated device handles list with enabled IGMP configurations is created when expand is set true. status Success (1) or failure (0) of the operation. log An error message (if the operation failed).
- Description:
The
emulation igmp config
function creates, modifies, or deletes one or more emulated IGMP 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 IGMP host, use the port_handle argument to specify the Spirent HLTAPI port that the emulated IGMP host will use for IGMP communication. (The port handle value is contained in the keyed list returned by the
connect
function.)Before you configure IGMP on a port, you must create the port, and use the returned port handle in the call to the emulation igmp config function. The first time you call emulation igmp config for a particular port, you must specify “mode create”.
Spirent HLTAPI supports the use of IGMP versions 1, 2, or 3 for multicast group membership. To test IPv4 traffic with one of the Internet Group Management Protocols, you use the Spirent HLTAPI for:
- Generating multicast traffic
- Receiving multicast traffic
- Retrieving multicast results
IGMPv3 provides support for secure communication. Hosts can use Include filters in the Join and Report messages to identify valid sources, or they can use Exclude filters to reject sources. Routers will keep track of the valid sources for every multicast group.
Note when using IGMP over PPPoX/L2TP: Modifying any option during a PPPoE/L2TP session which currently is a member of a multicast group will sever the PPPoE/L2TP session, IGMP host, and multicast group relationship. Therefore, do not use sth::pppox_config/l2tp config if the PPPoX/L2TP engine is not idle. To see if the PPPoX/L2TP engine is not idle, look at the aggregate.idle flag returned by “pppox stats mode= aggregate”/”l2tp stats mode=aggregate”. If aggregate.idle is “0”, then do not send sth::pppox_config/l2tp config. If the PPPoX/L2TP engine is aborted, you will need to reconfigure the PPPoX/L2TP session. If using IGMP over PPPoX/L2TP, you will also need to reconfigure the IGMP session. (See Examples below).
For more information about the IGMP protocol, see RFC1112 (IGMPv1), RFC2236 (IGMPv2), and RFC3376 (IGMPv3).
Examples:
To create an IGMP session:
emulation igmp config port_handle= $port_handle1 mode= create igmp_version= v3 intf_ip_addr= 10.41.1.2 neighbor_intf_ip_addr= 10.41.1.1Output:
{handles $port_handle1} {status 1}To create an IGMP over L2TP session:
set l2tp_rL l2tp config mode=create port_handle port1 ... # Connect L2TP l2tp control handle=[keylget l2tp_rL handles] # Create IGMP clients after all L2TP sessions have finished connecting set igmp_rL [emulation igmp config handle=[keylget l2tp_rL handles] mode= create ...]To create an IGMP over PPPoE session:
set pppox_rL pppox config mode=create port_handle port1 ... # Connect PPPoX pppox control action=connect handle keylget pppox_rL handles # Create IGMP clients after all PPPoX sessions have finished connecting set igmp_rL [emulation igmp config handle=[keylget pppox_rL handles] mode= create ...]To modify an IGMP over PPPoE session:
set pppox_rL pppox config handle=host2 mode modify...
- Note: If you must modify the PPPoX configuration, modify
- emulation igmp config using the handle returned from pppox config mode=modify. Otherwise, the IGMP configuration cannot be updated for the modified PPPoX configuration.
To connect PPPoX:
pppox control action=connect handle keylget pppox_rL handles # After all PPPoX sessions have finished connecting, update IGMP using the # handle from "pppox config mode=modify". set igmp_rL [emulation igmp config handle=[keylget pppox_rL handles] mode= modify ...]To create an IGMP over DHCP session:
# Create DHCP port set dhcpport_rL emulation dhcp config mode=create port_handle port1 ...] keylget rL handles dhcpport1 # Create the DHCP group set dhcpgrp_rL [emulation dhcp group config handle=$dhcpport1 mode= create ...] keylget rL handles dhcpgrp1 # Bind DHCP sessions emulation dhcp control handle=$dhcpgrp1 action bind # After all DHCP sessions have finished binding, create IGMP clients set igmp_rL emulation igmp config handle=$dhcpgrp1 mode create ...To modify an IGMP over DHCP session:
# Modify the DHCP group set dhcpgrp_rL [emulation dhcp group config handle=$dhcpgrp1 mode= modify ...] # Bind DHCP sessions emulation dhcp control handle=$dhcpgrp1 action bind # After all DHCP sessions have finished binding, create IGMP clients set igmp_rL emulation igmp config handle=$dhcpgrp1 mode modify ...IGMP QinQ= Examples
The following example shows how to increment by 1 the inner VLAN ID five times (vlan_id_count == 5) before incrementing the outer VLAN ID:
emulation igmp config mode= create port_handle= $hostPortHandle count= 23 qinq_incr_mode= "outer" vlan_id= 1111 vlan_id_count= 5 vlan_id_mode= "increment" vlan_id_step= 1 vlan_user_priority= 1 vlan_id_outer= 2222 vlan_id_outer_count= 5 vlan_id_outer_mode= "increment" vlan_id_outer_step= 1 vlan_outer_user_priority= 5Output:
Inner 1111 Outer 2222 Inner 1111 Outer 2223 Inner 1111 Outer 2224 Inner 1111 Outer 2225 Inner 1111 Outer 2226 Inner 1112 Outer 2222 Inner 1112 Outer 2223 Inner 1112 Outer 2224 Inner 1112 Outer 2225 Inner 1112 Outer 2226 Inner 1113 Outer 2222 Inner 1113 Outer 2223 Inner 1113 Outer 2224 Inner 1113 Outer 2225 Inner 1113 Outer 2226 Inner 1114 Outer 2222 Inner 1114 Outer 2223 Inner 1114 Outer 2224 Inner 1114 Outer 2225 Inner 1114 Outer 2226 Inner 1115 Outer 2222 Inner 1115 Outer 2223 Inner 1115 Outer 2224The following example shows how to increment by 1 the outer VLAN ID two times (vlan_id_outer_count == 2) before incrementing the inner VLAN ID:
emulation igmp config mode= create port_handle= $hostPortHandle count= 17 qinq_incr_mode= "inner" vlan_id= 1111 vlan_id_count= 3 vlan_id_mode= "increment" vlan_id_step= 1 vlan_user_priority= 1 vlan_id_outer= 2222 vlan_id_outer_count= 2 vlan_id_outer_mode= "increment" vlan_id_outer_step= 1 vlan_outer_user_priority= 5Output:
Inner 1111 Outer 2222 Inner 1112 Outer 2222 Inner 1113 Outer 2222 Inner 1111 Outer 2223 Inner 1112 Outer 2223 Inner 1113 Outer 2223 Inner 1111 Outer 2222 Inner 1112 Outer 2222 Inner 1113 Outer 2222 Inner 1111 Outer 2223 Inner 1112 Outer 2223 Inner 1113 Outer 2223 Inner 1111 Outer 2222 Inner 1112 Outer 2222 Inner 1113 Outer 2222 Inner 1111 Outer 2223 Inner 1112 Outer 2223The following example increments by 1 both the inner and outer VLAN IDs at the same time:
emulation igmp config mode= create port_handle= $hostPortHandle count= 21 qinq_incr_mode= "both" vlan_id= 1111 vlan_id_count= 1 vlan_id_mode= "increment" vlan_id_step= 1 vlan_user_priority= 1 vlan_id_outer= 2222 vlan_id_outer_count= 7 vlan_id_outer_mode= "increment" vlan_id_outer_step= 1 vlan_outer_user_priority= 5Output:
Inner 1111 Outer 2222 Inner 1111 Outer 2223 Inner 1111 Outer 2224 Inner 1111 Outer 2225 Inner 1111 Outer 2226 Inner 1111 Outer 2227 Inner 1111 Outer 2228 Inner 1111 Outer 2222 Inner 1111 Outer 2223 Inner 1111 Outer 2224 Inner 1111 Outer 2225 Inner 1111 Outer 2226 Inner 1111 Outer 2227 Inner 1111 Outer 2228 Inner 1111 Outer 2222 Inner 1111 Outer 2223 Inner 1111 Outer 2224 Inner 1111 Outer 2225 Inner 1111 Outer 2226 Inner 1111 Outer 2227 Inner 1111 Outer 2228The following example uses the function in scaling mode (mode= activate) with port_handle= and block_mode:
set igmp_ret [emulation igmp 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 router_id= 11.111.11.11 router_id_step= 0.0.0.2 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} ip_step_per_port= 0.0.0.5 ip_step_per_vlan= {"" 0.0.1.1} intf_prefix_len= 22 name= DEVICE_BLOCK_IGMP 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 intf_ip_addr= 11.111.11.11 gateway_ip_addr= 11.111.11.1 expand= true igmp_version= v3 router_alert= true device_group_mapping= many_to_many mcast_ipv4_addr= 224.0.0.1 ignore_memberships= true mcast_group_count= 1 filter_mode= include filtered_sources= custom src_count= 10 src_step= 1 src_ipv4_addr= 15.1.1.1 src_ipv4_prefix= 24 incr_src_ipv4_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}} {igmp_handle_list {igmphostconfig1 igmphostconfig2 igmphostconfig3 igmphostconfig4 igmphostconfig5 igmphostconfig6 igmphostconfig7 igmphostconfig8}} {igmp_group_handle_list {igmpgroupmembership1 igmpgroupmembership2 igmpgroupmembership3 igmpgroupmembership4 igmpgroupmembership5 igmpgroupmembership6 igmpgroupmembership7 igmpgroupmembership8}} {multicast_group_handle_list {ipv4group1 ipv4group2 ipv4group3 ipv4group4 ipv4group5 ipv4group6 ipv4group7 ipv4group8}} {handles {emulateddevice1 emulateddevice2 emulateddevice3 emulateddevice4 emulateddevice5 emulateddevice6 emulateddevice7 emulateddevice8}}
emulation igmp control¶
Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>
- Purpose:
- Start, stop, or restart the IGMP host on the specified port. Leaves and joins group pools.
Synopsis:
Note: M indicates the argument is `Mandatory`.
emulation igmp control
mode= {restart|join|leave|leave_join} M
group_member_handle= <handle>
port_handle= <port_handle_list|all>
handle= <IGMP_session_handle_list|all>
leave_join_delay= <0-4294967295>
data_duration= <0-4294967295>
calculate_latency= {0|1}
Arguments:
handle
Identifies a list of IGMP groups to stop, start, restart, join,
or leave. Use "all" to specify all IGMP groups. If you
do not specify a group, the action is applied to all
groups configured on ports specified by port_handle. This
value appears in the keyed list returned by the
``emulation igmp 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
restart, join, and leave. You must specify one of these
values. The modes are described below::
restart - Stops and then restarts the groups specified by
handle on the specified port. If you do not provide
a handle, this action stops and restarts all groups
on all ports.
join - Joins all groups specified by handle or
group pools specified by group_member_handle. If you
do not provide a handle, this action joins all groups
on all ports.
leave - Leave 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.
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: You must send the "leave" actions before
disconnecting PPPoX sessions. Otherwise, if you
disconnect a PPPoX session before sending "leaves",
HLTAPI will not automatically send the "leaves".
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 IGMP Join, HLTAPI cannot capture the IGMP
control plane packets because the analyzer stops to collect
packets so it can calculate latency. The default is 0.
The following example does 100 iterations of join and leaves
on 90 sessions. A 10second 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} {
# IGMP join
emulation igmp control
mode join
calculate_latency 1
handle $IGMPSessionHandle
# Adding a delay between join and leave.
# This value is based on 90 sessions joining.
# May need to be tweaked when `scaling` higher.
after 10000
# IGMP leave
emulation igmp control
mode leave
calculate_latency 1
handle $IGMPSessionHandle
# 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 tweaked when `scaling` higher.
after 10000
}
Note: Background traffic analysis with IGMP 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.
leave_join_delay
Specifies the amount of time, in seconds, between joins and
leaves. You can use this argument when mode is join or
leave. Possible values range from 0 to 4294967295. The default
is 0. (This argument was formerly known as "delay" in
previous versions of the Spirent HLTAPI.)
data_duration
`Spirent Extension (for Spirent HLTAPI only).`
Specifies the amount of time, in seconds, to wait after
sending joins or leaves before latencies are calculated. The
default is 10.
group_member_handle
Identifies the IGMP (one or more) group member handle.
port_handle
Identifies a list of ports on which to take the action. Use "all"
to specify all ports. If you do not specify a port, all
configured ports will be used. This value is returned by the
``emulation igmp config`` function.
Vendor Specific Arguments Processed by Spirent HLTAPI Wrapper:
- mode
Specifies what is being done to the protocol. Possible values are:
stop Stop the protocol start Start the protocol restart Restart the protocol join Join the group ranges specified by handle, port_handle or -group_member_handle leave Leave the group ranges specified by handle, port_handle or -group_member_handle
Vendor Specific Arguments Ignored by Spirent HLTAPI Wrapper:
group_member_handle
group_pool_handle
Note: For more information about Spirent HLTAPI Wrapper, refer to Chapter 4
Spirent HLTAPI Wrapper in Spirent HLTAPI Programmer's Reference.
- Ciscospecific Arguments:
The group_member_handle argument is specific to the Cisco HLTAPI but is not supported by Spirent HLTAPI:
group_member_handle group_pool_handle
- 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
emulation igmp control
function stops, starts, or restarts the IGMP protocol on the hosts on the specified port. You can also use this function to send 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 port_handle or terminating its membership in the specified multicast group,When you call the
emulation igmp control
function, you specify a port handle. Spirent HLTAPI applies the specified action to all of the emulated IGMP hosts associated with the specified port.IPv4 multicast traffic is based on group membership established and maintained with IGMP. Hosts and adjacent routers exchange IGMP messages to establish multicast group membership.
When a host wants to participate in a multicast group, it sends an IGMP “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 to the router (IGMPv2 and IGMPv3 only).
Examples:
The following example joins all groups specified by handle:
emulation igmp control mode= join handle= $IGMPSessionHandleThe following example removes the groups specified by handle= from the hosts on the specified port:
emulation igmp control mode= leave handle= $IGMPSessionHandleSample Output:
{status 1} success or {status 0} fail
emulation igmp group config¶
Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>
- Purpose:
- Creates group pools and source pools, and modifies and deletes group and
source pools from IGMP hosts. This function configures multicast group
ranges for an emulated IGMP host. You must use the common
multicast source config
functions with this function.
Synopsis:
Note: M indicates the argument is `Mandatory`.
emulation igmp group config
mode= {create|modify|delete|clear_all} M
device_group_mapping= { MANY_TO_MANY | ONE_TO_ONE | ROUND_ROBIN}
enable_user_defined_sources= { 0 | 1 }
filter_mode= {include |exclude}
ip_addr_list= <a.b.c.d>
source_filters= <device_handle>
handle= <IGMP_group_membership_handle>
group_pool_handle= <multicast_group_pool_handle>
session_handle= <igmp_session_handle>
source_pool_handle= <multicast_source_pool_handle>
specify_sources_as_list= { 0 | 1 }
Arguments:
group_pool_handle
Specifies the name of the group (that is, the list of
multicast IP addresses) to link to the IGMP host during
create mode. Before specifying the group pool handle, use
the ``emulation multicast group config`` function to add
the group pool. See "Multicast APIs" in the "Spirent
TestCenter HLTAPI Command Reference" document for
information about the emulation multicast group config
and ``emulation multicast source config`` functions.
handle
Sets group membership handle that associates group pools
with an IGMP host. In modify mode, membership handle must be
used in conjunction with the session handle to identify the
multicast group pools.
For "mode create", the handle is returned by the
``emulation igmp config`` function. Mode "modify" returns
the same handle passed in.
Note: The IGMP hosts, specified by handle, join the
multicast groups, specified by the group_pool_handle. So,
both arguments are `Mandatory` for "mode create", but
group_pool_handle is optional for "-mode modify".
mode
Specifies the action to perform. Possible values are create,
modify, delete, and clear_all. There is no default; you must
specify a mode. The modes are described below::
create - Starts emulation on the port specified with
handle and associates an existing multicast group
pool (group_pool_handle) with the specified IGMP host
(that is, joins the membership).
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.
clear_all - Remove all group pools from this session.
session_handle
Specifies the handle of the IGMP host on which to configure
the IGMP group ranges.
source_pool_handle
Specifies the name of the source pool (that is, the list of
nonmulticast 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 ``emulation igmp group config`` function adds the
range of source IP addresses to each multicast group.
Before specifying the source pool handle, use the
``emulation multicast source config`` function to add
the source pools. See "Multicast APIs" in the "Spirent
TestCenter HLTAPI Command Reference" document for
information about the emulation multicast source config
and ``emulation multicast group config`` functions.
The following example adds two source pools::
emulation multicast source config
ip_addr_start 1.2.1.2
mode create
num_sources 1
filter_mode
`Spirent Extension (for Spirent HLTAPI only).`
Specifies an explicit set of sources from which the multicast
group is interested in receiving data.
Possible values are::
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
device_group_mapping
`Spirent Extension (for Spirent HLTAPI only).`
Specifies the devicegroup mapping mode. Possible values are::
MANY_TO_MANY Creates a full mesh of devices and groups
ONE_TO_ONE Assigns one device to each group.
Mapping stops when it reaches the end
of devices or groups. The extra devices or
groups are not mapped.
ROUND_ROBIN Assigns one device to each group.
Mapping stops when all devices are assigned
to a group. If there are more devices than
groups, the group assignment repeats from
the first group.
enable_user_defined_sources
`Spirent Extension (for Spirent HLTAPI only).`
Enables or disables userdefined sources when -igmp_version is
set to IGMPv3 or MLDv2 for the multicasting protocol.
Possible values are 0 (disable) and 1 (enable).
specify_sources_as_list
`Spirent Extension (for Spirent HLTAPI only).`
When enabled, Spirent HLTAPI will allow the use of a list of IP
addresses to specify a range of source addresses. Possible values
are 0 (disable) and 1 (enable). If it is set to 1,
enable_user_defined_sources must be enabled.
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
enable_user_defined_sources and -specify_sources_as_list are
enabled.
source_filters
`Spirent Extension (for Spirent HLTAPI only).`
Specifies the handle of the host block to be used as the source
filter. This argument is available when
enable_user_defined_sources is enabled and
specify_sources_as_list is disabled.
- 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 (IGMP_group_config_handle)
created by the
emulation igmp group config
function. - group_pool_handle
- Identifies the group pool handle used by the
emulation igmp group config
function to configure or modify the group member. - source_pool_handle
- Identifies the source pool handle used by the
emulation igmp 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
emulation igmp group config
function configures or modifies a group of IGMP 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 IGMP host emulation on a port and initialize the port handle argument (using the
emulation igmp config
function).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. In the following example, the object represented by MGroupHandle contains 229.0.0.1 & 229.0.0.2. The host handle “hostHandle” has the IP address 3.0.0.1. See below:
emulation igmp group config mode create group_pool_handle $MGroupHandle session_handle $hostHandle
The following illustration shows that host 3.0.0.1 subscribes to both multicast group 229.0.0.1 and 229.0.0.2:
Host 3.0.0.1 * ***************** * * ************* ************* * MGroup1 * * MGroup2 * * 229.0.0.1 * * 229.0.0.2 * ************* *************
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
emulation igmp group config
function, adds the range of source IP addresses to each multicast group. Adding the source_pool_handle SGroupHandle (which contains source IP addresses 1.1.1.1 and 1.1.1.2) option to the above example results in:emulation igmp group config mode create group_pool_handle $MGroupHandle session_handle $hostHandle source_pool_handle $SGroupHandle
The following illustration shows that host 3.0.0.1 subscribes to source 1.1.1.1 and 1.1.1.2 which exist in both multicast groups 229.0.0.1 and 229.0.0.2:
Host 3.0.0.1 * ***************** * * ************* ************* * MGroup1 * * MGroup2 * * 229.0.0.1 * * 229.0.0.2 * ************* ************* ************* ************* * Source1 * * Source1 * * 1.1.1.1 * * 1.1.1.1 * * Source2 * * Source2 * * 1.1.1.2 * * 1.1.1.2 * ************* *************
Examples:
The following example configures the hosts, represented by “igmpSessionHandle”, to subscribe to the multicast group(s) represented by “multicastGroupPoolHandle(1)”:
emulation igmp group config mode= create group_pool_handle= $multicastGroupPoolHandle(1) session_handle= $igmpSessionHandleThe following example causes all hosts on the port, represented by the port handle “portHandle”, to send “leave” messages to the multicast groups to which they are currently subscribed. These multicast groups were set using the
emulation igmp group config
function:emulation igmp group config mode= clear_all handle= $IGMPgroupconfighandleSample output for example 1 shown above:
{status 1} {handle igmpgroupmembership1}The following example configures IGMP hosts using a list of IP addresses as the source filter:
set device_ret0_group_config_1 [emulation igmp group config session_handle= $igmp_session mode= create group_pool_handle= $macstgroup device_group_mapping= ONE_TO_ONE filter_mode= INCLUDE enable_user_defined_sources= 1 specify_sources_as_list= 1 ip_addr_list= "10.10.10.10 20.20.20.20 30.30.30.0 40.40.40.40" ]Sample Output:
{status 1} {handle igmpgroupmembership2}The following example configures IGMP hosts using a host block as the source filter:
set device_ret0_group_config_4 [emulation igmp group config session_handle= $igmp_session mode= create group_pool_handle= $macstgroup device_group_mapping= MANY_TO_MANY filter_mode= EXCLUDE enable_user_defined_source= 0 specify_sources_as_list= 0 source_filters= $sourcefilterdevice ]Sample Output:
{status 1} {handle igmpgroupmembership3}
emulation igmp info¶
Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>
- Purpose:
- Returns statistics about the IGMP 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 the argument is `Mandatory`.
emulation igmp info
handle= <igmp_session_handle_list|all>
port_handle= <port_handle_list|all>
mode= < stats|clear_stats>
Arguments:
handle
Specifies a list of IGMP session handles upon which host emulation is
configured. Use "all" to specify all IGMP sessions. If you do not
specify an IGMP session, results from all sessions under the specified
ports will be returned. This value is returned by the
``emulation igmp config`` function.
port_handle
Specifies the a list of port handles on which the IGMP hosts are
affiliated to ISIS routers. Use "all" to specify all ports. If you do
not specify a port, all configured ports will be used.
mode
Specifies the action to perform. Possible values are
stats and clear_stats. The default value is stats.
The modes are described below::
stats If handle is provided, it will return
transmitted and received statistics of the
specified IGMP host.
If port_handle is provided, it will return
transmitted and received statistics of the
specified IGMP port.
clear_stats If handle is provided, it will clear
all statistics (transmitted and received
counters) of the specified port.
If port_handle is provided, it will clear
all statistics (transmitted and received
counters) of the port to which the specified host
is affiliated.
- 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).
The following IGMP host statistics are returned when you specify the handle argument:
nvalid_pkts Number of invalid IGMP packets received. Invalid IGMP packets include:: invalid IGMP checksum invalid packet length invalid IGMP types ropped_pkts Will always return 0 because Spirent HLTAPI currently does not drop valid IGMP packets. ost_addr IP address of host whose group membership stats are being displayed. roup_addr Group membership IP address of host whose group membership stats are being displayed. roup_membership_stats List of group membership statistics. tate State of group membership of host whose group membership stats are being displayed. UNDEFINED - The state is not defined. NON_MEMBER - The host does not belong to the group on the interface. Nonmember 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 IGMPv1/IGMPv2 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. oin_latency The time, in milliseconds, between sending the IGMP join and receiving the multicast data for the channel specified in the join message. This value is valid only when "emulation igmp control calculate_latency=" is set to 1. eave_latency The time, in milliseconds, between sending the IGMP leave for a channel and when multicast data has stopped being received. This value is valid only when "emulation igmp control calculate_latency=" is set to 1. host_addr Host IP address group_addr Group IP multicast address state Current state of the IGMP group state_change_timestamp Timestamp of the IGMP group membership state change join_timestamp Transmit timestamp of the initial IGMP join message leave_timestamp Transmit timestamp of the IGMP leave message join_failure Indicates whether or not multicast traffic was received duplicate_join Indicates whether or not the DUT was already forwarding multicast prior to a join being sent
The following IGMP port statistics are returned when you specify the port_handle argument:
igmpv1_queries_rx Number of IGMPv1 membership query messages received. igmpv1_group_queries_rx Number of IGMPv1 group queries received. igmpv1_mem_reports_tx Number of IGMPv1 membership reports sent. igmpv1_mem_reports_rx Number of IGMPv1 membership reports received. igmpv2_queries_rx Number of IGMPv2 membership query messages received. igmpv2_group_queries_rx Number of IGMPv2 group queries received. igmpv2_mem_reports_tx Number of IGMPv2 membership reports sent. igmpv2_mem_reports_rx Number of IGMPv2 membership reports received igmpv2_leave_tx Number of leave group messages sent. igmpv3_queries_rx Number of IGMPv1 membership query messages received. igmpv3_group_queries_rx Number of IGMPv3 group queries received. igmpv3_group_src_queries_rx Number of group- and sourcespecific queries received. igmpv3_mem_reports_tx Number of IGMPv3 membership reports sent. igmpv3_mem_reports_rx Number of IGMPv3 membership reports received.
The following session statistics are returned:
session Session statistics for all multicast groups. session.<IGMP session handle> Displays all session statistics for the specified session handle. session.<IGMP session handle>.max_join_latency Maximum join latency for the specified session handle. session.<IGMP session handle>.min_join_latency Minimum join latency for the specified session handle. session.<IGMP session handle>.avg_join_latency Average join latency for the specified session handle. session.<IGMP session handle>.min_leave_latency Minimum leave latency for the specified session handle. session.<IGMP session handle>.max_leave_latency Maximum leave latency for the specified session handle. session.<IGMP session handle>.avg_leave_latency Average leave latency for the specified session handle.
The following return values are not supported:
For IGMP over PPPoX grp.<mcast_addr>.join.min - Minimum join latency per group grp.<mcast_addr>.join.max - Maximum join latency per group grp.<mcast_addr>.join.avg - Average join latency per group grp.<mcast_addr>.leave.min - Minimum leave latency per group grp.<mcast_addr>.leave.max - Maximum leave latency per group grp.<mcast_addr>.leave.avg - Average leave latency per group grp.<mcast_addr>.leave_join.min - Minimum latency to leave a group and to join another group grp.<mcast_addr>.leave_join.max - Maximum latency to leave a group and to join another group grp.<mcast_addr>.leave_join.avg - Average latency to leave a group and to join another group aggregate.join.min - Minimum value across all groups aggregate.join.max - Maximum value across all groups aggregate.join.avg - Average value across all groups aggregate.leave.min aggregate.leave.max aggregate.leave.avg aggregate.leave_join.min aggregate.leave_join.max
- Description:
- The
emulation igmp info
function retrieves statistics about the number of invalid and dropped packets on the specified host as well as several port and session statistics.
Examples:
When you call emulation igmp info, the contents of the returned keyed list depends on the status of the call. For example:
emulation igmp info handle=$handle1Sample Output:
{group_membership_stats {{group_addr {{225 {{0 {{0 {{1 {{host_addr {{192 {{85 {{1 {{4 {{state NON_MEMBER} {state_change_timestamp 1Days-13:19:35.31829383} {Join_timestamp 1Days-13:18:49.92584001} {leave_timestamp 1Days-13:19:35.31873498} {join_latency 0} {leave_latency 10012.53486} {join_failure false} {duplicate_join true}}} {5 {{state NON_MEMBER} {state_change_timestamp 1Days-13:19:35.31834067} {Join_timestamp 1Days-13:18:49.92584595} {leave_timestamp 1Days-13:19:35.31875323} {join_latency 0} {leave_latency 10012.51661} {join_failure false} {duplicate_join true}}} {6 {{state NON_MEMBER} {state_change_timestamp 1Days-13:19:35.31837744} {Join_timestamp 1Days-13:18:49.92584874} {leave_timestamp 1Days-13:19:35.31875760} {join_latency 0} {leave_latency 10012.51224} {join_failure false} {duplicate_join true}}}}}}}}}}}}}}}}}}}}}}} {session {{igmphostconfig1 {{min_join_latency 0} {max_join_latency 0} {avg_join_latency 0} {min_leave_latency 0} {max_leave_latency 0} {avg_leave_latency 0}}}}} {status 1}If there is an error, you will see:
{status 0} {log {Error message}}The following example returns the statistics for the specified port:
emulation igmp info port_handle=$tgen1_portSample Output:
{port_stats {{port1 {{- {{invalid_pkts 0} {dropped_pkts 0}}} {V1 {{igmpv1_mem_reports_rx 0} {igmpv1_mem_reports_tx 2} {igmpv1_queries_rx 0}}} {V3 {{igmpv3_mem_reports_rx 0} {igmpv3_mem_reports_tx 0} {igmpv3_group_queries_rx 0} {igmpv3_queries_rx 0} {igmpv3_group_src_queries_rx 0}}} {V2 {{igmpv2_queries_rx 0} {igmpv2_leave_tx 0} {igmpv2_mem_reports_rx 0} {igmpv2_mem_reports_tx 0} {igmpv2_group_queries_rx 0}}}}}}} {status 1}The following example clears all statistics on the specied IGMP session handle:
emulation igmp info handle=$igmpSession mode clear_statsSample Output:
{status 1}End of Procedure Header