IGMP Querier Functions¶
emulation igmp querier config¶
Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>
- Purpose:
The emulation_igmp_querier_config command configures an IGMP router on the specified test port.
Querier is a multicast router that maintains a list of multicast group memberships for each attached network. There is normally only one querier per physical network. The querier sends out Query messages to determine the multicast group memberships for hosts on the attached network.
The Internet Group Management Protocol (IGMP) is a protocol that provides a way for a host computer to report its multicast group membership to adjacent routers. A multicast group is configured to receive voice, video, or data traffic sent from a multicast server. IGMP is a stateful protocol. The router sends periodic queries to the receivers to verify that the hosts want to continue to participate in the multicast groups. These queries are transmitted to a wellknown multicast address (224.0.0.1) that is monitored by all systems. If the receivers are still interested in that particular multicast group, they respond with a Membership Report message. When the router stops seeing responses to queries, it deletes the appropriate group from its forwarding table. For more details on IGMP, please refer to RFC 1112, RFC 2236, or RFC 3376.
Synopsis:
Note: M indicates the argument is `Mandatory`.
emulation igmp querier config
mode= {create|modify|delete} M
port_handle= <port_handle>
handle= <device_handle>|<igmp_host_handle>
count= <1-65535>
intf_ip_addr= <a.b.c.d>
intf_ip_addr_step= <a.b.c.d>
intf_prefix_len= <1-32>
source_mac= <aa:bb:cc:dd:ee:ff>
source_mac_step= <aa:bb:cc:dd:ee:ff>
neighbor_intf_ip_addr= <a.b.c.d>
neighbor_intf_ip_addr_step= <a.b.c.d>
igmp_version= {v1 | v2 | v3}
ignore_v1_reports= {true | false}
ipv4_dont_fragment= {true | false}
ipv4_tos= <0-255>
last_member_query_count= <0-255>
last_member_query_interval= <0-4294967295>
qinq_incr_mode= {inner | outer | both}
query_interval= <0-4294967295>
query_response_interval= <0-4294967295>
robustness_variable= <2-255>
startup_query_count= <2-255>
tos_type= {tos | diffserv}
use_partial_block_state= {true | false}
vlan_cfi= {0 1}
vlan_id= <0-4095>
vlan_id_mode= {fixed | increment}
vlan_id_step= <0-32767>
vlan_id_count= <1-4095>
vlan_user_priority= <0-7>
vlan_outer_cfi= {0 1}
vlan_id_outer= <0-4095>
vlan_id_outer_mode= {fixed | increment}
vlan_id_outer_step= <0-32767>
vlan_id_outer_count= <1-4095>
vlan_outer_user_priority= <0-7>
Arguments:
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 routers on the specified port
or handle.
modify - Changes the configuration parameters for the IGMP
router identified by the handle argument.
delete - Clears all IGMP group sessions information on the
port and restarts the connection.
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.
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
handle and -mode create, Spirent HLTAPI creates an IGMP
device on the given device.
count
Defines the number of IGMP routers to create on the interface.
Applicable only in mode create. Possible values range from 1 to
65535. The default value is 1
intf_ip_addr
Specifies the starting IPv4 address of the emulated devices.
The default value is 0.0.0.0.
intf_ip_addr_step
Specifies the difference between interface IP addresses of
consecutive routers when multiple IGMP hosts are created.
Applicable only in mode create. The value must be in IPv4 format.
The default value is 0.0.0.1.
intf_prefix_len
Specifies the address prefix length on the emulated host.
Possible values range from 1 to 32. The default value is 24.
source_mac
Defines the first MAC address to use when emulating IGMP routers.
Each client must have a unique source MAC address. The value must
be in MAC format. The default value is 00:10:94:00:00:02
source_mac_step
Specifies the increment by which to generate additional MAC
addresses for IGMP routers. Applicable only in mode create. The
default value is 00:00:00:00:00:01
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 value must be in IPv4 format. The default value is
192.85.1.1
neighbor_intf_ip_addr_step
Specifies the difference between the IP
addresses of IGMP neighbor's interfaces when creating multiple
IGMP routers. Applicable only in create mode.
The value must be in IPv4 format. The default value is 0.0.0.0.
igmp_version
Specifies the version of IGMP to use for the querier. 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.
The default value is v2.
ignore_v1_reports
Specifies whether to ignore IGMPv1 messages on the interface.
This argument is only valid for IGMPv2. Possible values are true
and false. The default value is false.
ipv4_dont_fragment
Determines whether to use fragment the IP packets larger than the
MTU (Maximum Transmission Unit) size. Possible values are true
and false. The default value is false.
ipv4_tos
Specifies the value of the TOS field in the IPv4 header. Possible
values range from 0 to 255. The default value is 192.
last_member_query_count
Value for the Max Response Time field (in milliseconds) that is
inserted in to GroupSpecific and Group-andSourceSpecific Query
messages in response to Leave Group messages. Possible values
range from 0 to 255. The default value is 2. Note that this
argument does not work for IGMPv1.
last_member_query_interval
Maximum amount of time between groupspecific query messages,
including those sent in response to leavegroup messages.
Possible values range from 0 to 4294967295. The default value is
1000. Note that this argument does not work for IGMPv1.
query_interval
Specifies the duration (in seconds) between transmissions of
General Query messages. General Query messages are used to learn
which multicast groups have members on a connected network.
Possible values range from 0 to 4294967295. The default value is
125.
query_response_interval
Specifies the value for the Max Response Time field (in
milliseconds), which is inserted into the General Query messages.
This time is the maximum amount allowed for a host to send a
responding report to the General Query message. The interval must
be less than the Query Interval. This argument does not apply to
IGMPv1. Possible values range from 0 to 4294967295. The default
value is 10000.
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 both. Applicable only in mode create.
robustness_variable
Specifies the variable used in the calculation of default values
for various timers and counters. Possible values range from 2 to
255. The default value is 2. Note that this argument does not
work for IGMPv1.
startup_query_count
Number of queries sent out on startup, separated by the Startup
Query Interval. Possible values range from 2 to 255. The default
value is 2.
tos_type
Specifies the formatting of the TOS value. Possible values are::
tos - Type of Service
diffserv - Differentiated services
The default value is tos.
use_partial_block_state
Determines whether to use partial block state. Possible values
are true and false. The default value is false.
vlan_cfi
Sets the Canonical Format Indicator (CFI) field in VLAN for the
emulated router node. Possible values are 0 (Ethernet) and 1
(Token Ring). If it is set to 0, it indicates Token Ring and
packets are dropped by Ethernet ports. If set to 0, it indicates
the network is Ethernet. The default value is 0.
vlan_id
Defines the VLAN ID of the first VLAN subinterface.
Possible values range from 0 to 4095.
The default value is 100.
vlan_id_mode
Specifies the VLAN generating method when 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 value is fixed. Applicable
only in mode create.
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. The default value is 1. Applicable only in create mode.
vlan_id_count
`Spirent Extension (for Spirent HLTAPI only).`
Specifies the number of VLAN IDs to use when generating IGMP
sessions. Possible values range from 1 to 4096. The default value
is 1. Applicable only in mode create.
vlan_user_priority
Defines the VLAN priority for the VLANs on this port.
Possible values range from 0 to 7. The default value is 7.
vlan_outer_cfi
`Spirent Extension (for Spirent HLTAPI only).`
Specifies whether to set the CFI value for the VLAN outer
header. Possible values are 0 and 1. If you set it to 1, a CFI
value will be automatically assigned. The default value is 0.
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. The default value is 100.
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.
The default value is fixed. Applicable only in mode create.
vlan_id_outer_step
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 value is 1. Applicable only in
mode create.
vlan_id_outer_count
`Spirent Extension (for Spirent HLTAPI only).`
The number of outer VLAN IDs to use when generating IGMP routers.
Possible values range from 1 to 4096. The default value is 1.
Applicable only in create mode.
vlan_outer_user_priority
`Spirent Extension (for Spirent HLTAPI only).`
Specifies the VLAN priority to assign to the outer VLAN header.
Possible values range from 0 to 7. The default value is 7.
Arguments Unsupported by Save as HLTAPI:
The following Spirent HLTAPI arguments are currently not supported by the Save as
HLTAPI function::
qinq_incr_mode
Vendor Specific Arguments Processed by Spirent HLTAPI Wrapper:
- igmp_querier_type
The version of IGMP to be used. Valid for mode create. Possible values are:
v1 Version 1 v2 Version 2 v3 Version 3
Vendor Specific Arguments Ignored by Spirent HLTAPI Wrapper:
device_type
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 The IGMP router handle status Success (1) or failure (0) of the operation. log An error message (if the operation failed).
- Description
The
emulation igmp querier config
function creates, modifies, or deletes IGMP routers for the specified Spirent HLTAPI port or handle. 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 router, use the port_handle argument to specify the Spirent HLTAPI port that the emulated IGMP router will use for IGMP communication. (The port handle value is contained in thekeyed list returned by the
connect
function.)Spirent HLTAPI supports the use of IGMPv1, V2 and V3. For details of the IGMP protocal, see RFC 1112, RFC 2236 and RFC 3376.
Examples:
The following example creates and configures an IGMP router:
set returnedString [emulation igmp querier config mode= "create" port_handle= $hltPort count= 1 igmp_version= v2 intf_ip_addr= 1.1.1.40 intf_ip_addr_step= "0.0.0.1" neighbor_intf_ip_addr= 1.1.1.10 neighbor_intf_ip_addr_step= "0.0.0.1" vlan_id= 111 vlan_id_count= 3 vlan_id_step= 2 vlan_id_mode= increment vlan_id_outer= 101 vlan_id_outer_count= 5 vlan_id_outer_step= 2 vlan_id_outer_mode= increment ignore_v1_reports= true last_member_query_count= 10 query_interval= 5]The following example modifies the created IGMP router:
set returnedString [emulation igmp querier config mode= "modify" handle= $igmpQuerierRouter vlan_id= 222 vlan_id_outer= 333 ignore_v1_reports= true last_member_query_count= 10 query_interval= 5]The following example deletes emulated IGMP routers:
set returnedString [emulation igmp querier config mode= delete handle= $igmpQuerierRouterList]Sample Output:
{handle {router1}} {status 1}
emulation igmp querier control¶
Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>
- Purpose:
- Starts or stops sending Query messages from the selected queriers to attached hosts on the specified port.
Synopsis:
Note: M indicates the argument is `Mandatory`.
emulation igmp querier control
mode= {start|stop} M
port_handle= <port_handle_list>
handle= <handle_list>
Arguments:
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 do not provide a
handle, this argument performs the specified action on all groups
on all sessions. Possible values are::
start - Starts sending Query message from the selected queriers
to attached hosts..
stop - Stops sending Query message from the selected queriers to
attached hosts. The queriers also stop responding to Report
and Leave messages from attached hosts.
This argument is `Mandatory`.
port_handle
Identifies a list of ports on which to perform the
action. This is the port on which IGMP emulation has been
configured. This value is returned by the
``emulation igmp querier config`` function. This argument is
`Mandatory` when handle is not used.
handle
Specifies a list of devices on which to perform the action. You
must specify port_handle or handle, but not both.
Vendor Specific Arguments Processed by Spirent HLTAPI Wrapper:
- action
Stops or starts the protocol. This argument is Mandatory. The modes are described below:
start Enable the IGMP Querier session stop Disable the IGMP Querier session
Vendor Specific Arguments Ignored by Spirent HLTAPI Wrapper:
query_type
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):
status Success (1) or failure (0) of the operation. log An error message (if the operation failed).
- Description:
The
emulation igmp querier control
function starts or stops sending Query message from the selected queriers to attached hosts on the specified port.When you call emulation igmp querier control, you must specify either a port handle or a device handle, on which Spirent HLTAPI applies the specified action.
Examples:
The following example starts the IGMP Queriers on port $portHandle:
set returnedString [ emulation_igmp_querier_control port_handle= $portHandle action= start]The following example stops the IGMP Queriers just started:
set returnedString [ emulation_igmp_querier_control port_handle= $portHandle action= stop]Sample Output:
{status 1}
emulation igmp querier info¶
Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>
- Purpose:
- Retrieves statistics for the IGMP Routers configured on the specified test ports.
Synopsis:
Note: M indicates the argument is `Mandatory`.
emulation igmp querier info
port_handle= <port_handle>
handle= <handle>
Arguments:
port_handle
Specifies the port on which to retrieve statistics.
handle
Specifies the handle of the device on which to retrieve
statistics.
Note: Both handle and port_handle are optional, but at least one should be
specified. If both are specified, then handle is prioritized.
- 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). host_state State of the IGMP/MLD host block[JOINING, LEAVING, MEMBER, NON_MEMBER, UNDEFINED] if_handle IL interface handle mcast_compatiblity_mode IGMP version the router block is currently operating as.[V1, V2, V3] router_state State of the IGMP/MLD querier block.[NOT_STARTED, UNDEFINED, UP] frame_count_rx Total number of IGMP frames received igmp_check_sum_error_count_rx Total number of IGMP messages received with checksum errors igmp_length_error_count_rx Total number of IGMP messages received with length errors unknown_type_count_rx Total number of frames of unknown type received time_stamp Timestamp, in seconds, of last statistic update frame_count_tx Total number of IGMP frames transmitted
- Description:
- The
emulation igmp querier info
function returns statistics of the IGMP router on the specified port. Statistics include the router status and number and type of messages sent and received from the specified port.
Examples:
The following example retrieves statistics on port $portHandle:
set returnedString [ emulation_igmp_querier_info port_handle= $portHandle]Sample Output:
{status 1} {results {{router1 {{igmp_check_sum_error_count_rx 0} {unknown_type_count_rx 0} {mcast_compatiblity_mode V2} {igmp_length_error_count_rx 0} {router_state NOT_STARTED} {if_handle 0} {time_stamp 0} {frame_count_rx 0} {host_state NON_MEMBER} {frame_count_tx 0}}}}}End of Procedure Header