MLD Querier Functions

emulation mld querier config

Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>

Purpose:

The emulation_mld_querier_config function configures an MLD 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 purpose of Multicast Listener Discovery (MLD) is to enable each IPv6 router to discover the presence of multicast listeners (that is, nodes wishing to receive multicast packets) on its directly attached links, and to discover specifically which multicast addresses are of interest to those neighboring nodes. This information is then provided to whichever multicast routing protocol is being used by the router, in order to ensure that multicast packets are delivered to all links where there are interested receivers.

Synopsis:

Note: M indicates the argument is `Mandatory`.

      emulation mld querier config
              mode= {create|enable|modify|delete} M
              port_handle= <port_handle>
              handle= <device_handle>|<mld_host_handle>
              count= <1-65535>
              router_id_ipv6= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
              router_id_ipv6_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
              enable_ping_response= {1|0}
              intf_ipv6_addr= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
              intf_ipv6_addr_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
              intf_ipv6_prefix_len= <1-128>
              ipv6_resolve_gateway_mac= {true|false}
              ipv6_gateway_mac= <aa:bb:cc:dd:ee:ff>
              link_local_ipv6_addr= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
              link_local_ipv6_addr_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
              link_local_ipv6_prefix_len= <0-128>
              mac_addr= <aa:bb:cc:dd:ee:ff>
              mac_addr_step= <aa:bb:cc:dd:ee:ff>
              use_default_phy_mac= {true|false}
              gateway_ipv6_addr= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
              gateway_ipv6_addr_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
              enable_gw_learning= {true|false}
              vlan_cfi= {0|1}
              vlan_id= <0-4095>
              vlan_id_step= <0-32767>
              vlan_id_count= <1-4095>
              vlan_user_pri= <0-7>
              vlan_tpid= <0-65535>
              vlan_outer_cfi= {0|1}
              vlan_outer_id= <0-4095>
              vlan_outer_id_step= <0-32767>
              vlan_outer_id_count= <1-4095>
              vlan_outer_user_pri= <0-7>
              vlan_outer_tpid= <0-65535>
              vlan_id_repeat_count= <0-4294967295>
              vlan_id_repeatmode= <REPEAT_ACROSS_PORT  | NO_REPEAT | REPEAT_ACROSS_LOWER_IF>
              vlan_outer_id_repeatmode= <REPEAT_ACROSS_PORT  | NO_REPEAT | REPEAT_ACROSS_LOWER_IF>
              vlan_outer_id_repeat_count= <0-4294967295>
              vlan_id_stack_count= <0-65535>
              qinq_incr_mode= {inner|outer|both}
              mld_version= {MLD_V1 | MLD_V2}
              ipv6_traffic_class= <0-255>
              last_member_query_count= <0-255>
              last_member_query_interval= <0-4294967295>
              query_interval= <0-4294967295>
              query_response_interval= <0-4294967295>
              robustness_variable= <2-255>
              startup_query_count= <1-255>
              use_ipv6_addr_range_gateway= {true|false}

Arguments:

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


                 create - Creates emulating MLD querier routers on the specified port
                          or handle.

                 enable - Starts emulating MLD querier routers on the device
                          specified by handle. You must specify the handle
                          argument.

                 modify - Changes the configuration parameters for the MLD
                          querier router identified by the handle argument.

                 delete - Clears all MLD querier router information on the
                          port and restarts the connection.

port_handle
                The handle of the port on which to create the emulated MLD
                Querier 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 MLD 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 MLD
                device on the given device.

count
                Defines the number of MLD routers to create on the interface.
                Applicable only in mode create. Possible values range from 1 to
                65535. The default value is 1

router_id_ipv6
                Specifies the IPv6 router ID of the emulated device. The value
                must be in IPv6 format.

router_id_ipv6_step
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the difference between consecutive IPv6 router IDs when
                multiple routers are created. The value must be in IPv6 format.
                The default value is 0000::1.

enable_ping_response
                Enables or disables the emulated device to respond to ping.
                Possible values are 0 (disable) and 1 (enable). The default is 0.

intf_ipv6_addr
                Specifies the IPv6 address of the emulated device.

intf_ipv6_addr_step
                Specifies the difference between interface IPv6 addresses of
                consecutive devices when multiple emulated devices are created.

intf_ipv6_prefix_len
                Specifies the prefix length for the IPv6 address of the emulated
                device. Possible values range from 0 to 128. The default is 64.

ipv6_gateway_mac
                Specifies the IPv6 gateway's MAC address for the emulated device.
                The default value is 00:00:01:00:00:01.

link_local_ipv6_addr
                Specifies the starting link local IPv6 address for the emulated
                devices. The value must be in IPv6 format. The default is
                FE80::0.

link_local_ipv6_addr_step
                Specifies the difference between link local IPv6 addresses of
                consecutive devices when multiple emulated devices are created.
                The value must be in IPv6 format. The default is ::1.

link_local_ipv6_prefix_len
                Specifies the prefix length for the link local IPv6 address of
                the emulated device. Possible values range from 0 to 128. The
                default is 64.

mac_addr
                Specifies the MAC address of the emulated device.

mac_addr_step
                Specifies the difference between MAC addresses of consecutive
                devices when multiple emulated devices are created.

use_default_phy_mac
                `Spirent Extension (for Spirent HLTAPI only).`

                Determines whether to use the source MAC address from the
                physical interface. Possible values are true and false.
                The default value is false.

gateway_ipv6_addr
                Specifies the IPv6 gateway address for the emulated device.

gateway_ipv6_addr_step
                Specifies the difference between IPv6 gateway addresses of
                consecutive devices when multiple emulated devices are created.

enable_gw_learning
                `Spirent Extension (for Spirent HLTAPI only).`

                Enables or disables IPv6 learning for the gateway IP and MAC
                addresses. Possible values are true (enable) and false (disable).
                The default value is false.

vlan_cfi
                Specifies the canonical format indicator (CFI) field in VLAN
                for the emulated device. Possible values are 0 (Ethernet)
                and 1 (Token Ring). The default is 1.

vlan_id
                Specifies the starting VLAN ID for the ethernet_ii_vlan
                encapsulation or the ethernet_ii_qinq encapsulation. Possible
                values range from 0 to 4095. The default value is 100.

vlan_id_step
                Specifies the step size by which the VLAN ID is incremented.
                Possible values range from 0 to 4095. The default value is 1.

vlan_id_count
                Specifies the number of VLAN IDs to create. Possible values range
                from 1 to 4095. The default value is 1.

vlan_user_pri
                Specifies the VLAN user priority assigned to the emulated device.
                Possible values range from 0 to 7. The default value is 0.

vlan_tpid
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the Ethernet type of VLAN for the device interface.
                Possible values range from 0 to 65535. The default value is
                33024.

vlan_outer_cfi
                Specifies the CFI field in the outer VLAN for the emulated
                device. Possible values are 0 (Ethernet) and 1 (Token Ring). The
                default is 1.

vlan_outer_id
                Specifies the starting outer VLAN ID for the QinQ encapsulation.
                Possible values range from 0 to 4095. The default value is 100.

vlan_outer_id_step
                Specifies the step size by which the outer VLAN ID is
                incremented. Possible values range from 0 to 4095. The default
                value is 1.

vlan_outer_id_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_pri
                Specifies the VLAN priority to assign to the outer VLAN header.
                Possible values range from 0 to 7. The default value is 0.

vlan_outer_tpid
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the Ethernet type of outer VLAN for the device
                interface. Possible values range from 0 to 65535. The default
                value is 33024.

vlan_id_repeat_count
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the number of times to repeat the same VLAN ID before
                incrementing it for the inner VLAN. The value must be an integer.
                The default value is 0.

vlan_id_repeatmode
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the repeat mode for the inner VLAN.
                The default value is REPEAT_ACROSS_PORT.

                 NO_REPEAT               VLAN IDs are not repeated.
                 REPEAT_ACROSS_PORT      VLAN IDs are repeated from the starting VLAN ID on all ports.
                 REPEAT_ACROSS_LOWER_IF  VLAN IDs are repeated from the starting VLAN ID
                                         when the next lower level interface (or port) changes.

vlan_outer_id_repeatmode
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the repeat mode for the outer VLAN.
                The default value is REPEAT_ACROSS_PORT.

                 NO_REPEAT               VLAN IDs are not repeated.
                 REPEAT_ACROSS_PORT      VLAN IDs are repeated from the starting VLAN ID on all ports.
                 REPEAT_ACROSS_LOWER_IF  VLAN IDs are repeated from the starting VLAN ID
                                         when the next lower level interface (or port) changes.

vlan_outer_id_repeat_count
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the number of times to repeat the same VLAN ID before
                incrementing it for the outer VLAN. The value must be an integer.
                The default value is 0.

vlan_stack_count
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the number of vlanif objects to be created. Possible
                values range from 0 to 65535. The default value is 0.

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.

mld_version
                Specifies the version of MLD to use for the querier. Possible
                values are::


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

                 MLD_V2 - Version of MLD, specified in RFC 3810, that
                          adds filter functionality: include and exclude

ipv6_traffic_class
                Specifies the value of the Traffic Class field in the IPv6 header.
                Possible values range from 0 to 255. The default value is 0.

last_member_query_count
                Specifies the 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.

last_member_query_interval
                Specifies the 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.

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. Possible values range from
                0 to 4294967295. The default value is 10000.

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.

startup_query_count
                Number of queries sent out on startup, separated by the Startup
                Query Interval. Possible values range from 1 to 255. The default
                value is 2.

use_ipv6_addr_range_gateway
                Whether to use Ip address range settings for gateway.
                Possible values are::


                    true - use Ip address range settings for gateway.

                    false - do not use Ip address range settings for gateway.

                The default value is false.

Arguments Unsupported by Save as HLTAPI:

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


   qinq_incr_mode
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 MLD router handle

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

log             An error message (if the operation failed).
Description

The emulation mld querier config function creates, enables, modifies, or deletes MLD 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 MLD Querier router, use the port_handle argument to specify the Spirent HLTAPI port that the emulated MLD router will use for MLD communication. (The port handle value is contained in the keyed list returned by the connect function.)

Spirent HLTAPI supports the use of MLDv1, MLDv2. For details about the MLD protocol, see RFC 2710 and RFC 3810.

Examples:

The following example creates and configures an MLD Querier router:

set returnedString [emulation mld querier config
                 mode=                                    create
                 port_handle=                             $port2
                 router_id_ipv6=                          5000::5
                 router_id_ipv6_step=                     ::3
                 enable_ping_response=                    0
                 intf_ipv6_addr=                          5000::5
                 ipv6_resolve_gateway_mac=                true
                 ipv6_gateway_mac=                        00.00.94.91.00.02
                 intf_ipv6_addr_step=                     ::2
                 count=                                   1
                 intf_ipv6_prefix_len=                    67
                 gateway_ipv6_addr=                       5000::1
                 gateway_ipv6_addr_step=                  ::2
                 enable_gw_learning=                      true
                 link_local_ipv6_addr=                    fe80::5
                 link_local_ipv6_addr_step=               ::2
                 link_local_ipv6_prefix_len=              67
                 mac_addr=                                00.00.94.91.00.12
                 mac_addr_step=                           00.00.00.00.00.03
                 use_default_phy_mac=                     true
                 vlan_id=                                 500
                 vlan_id_step=                            5
                 vlan_id_count=                           1
                 vlan_user_pri=                           4
                 vlan_cfi=                                0
                 vlan_outer_id=                           555
                 vlan_outer_id_step=                      3
                 vlan_outer_id_count=                     1
                 vlan_outer_user_pri=                     5
                 vlan_outer_cfi=                          1
                 mld_version=                             MLD_V2
                 robustness_variable=                     3
                 query_interval=                          1233333333
                 query_response_interval=                 12300
                 startup_query_count=                     4
                 last_member_query_count=                 8
                 last_member_query_interval=              1444444443
                 ipv6_traffic_class=                      200 ]

 set MLDQuerierRouter [keylget returnedString handle]

The following example modifies the created MLD Querier router:

set returnedString [emulation mld querier config
                   mode=                                    "modify"
                   handle=                                  $MLDQuerierRouter
                   vlan_id=                                 222
                   mld_version=                             MLD_V2
                   robustness_variable=                     4
                   query_interval=                          1456333333
                   query_response_interval=                 16700
                   startup_query_count=                     5
                   last_member_query_count=                 6
                   last_member_query_interval=              1333444443
                   ipv6_traffic_class=                      202 ]

The following example deletes emulated MLD Querier routers:

set returnedString [emulation mld querier config
                     mode= delete
                     handle= $MLDQuerierRouter]

Sample Output:

{handle router1} {status 1}

emulation mld querier control

Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>

Purpose:
Starts or stops sending Query messages from the selected querier to attached hosts on the specified port.

Synopsis:

Note: M indicates the argument is `Mandatory`.

         emulation mld 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 messages from the selected querier
                         to the attached hosts..

                 stop  - Stops sending Query messages from the selected querier to
                         the attached hosts. The querier also stops responding to Report
                         and Leave messages from the 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 MLD emulation has been
                configured. This value is returned by the
                ``emulation mld 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.
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 mld querier control function starts or stops sending Query message from the selected queriers to attached hosts on the specified port.

When you call emulation mld 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 MLD Queriers on port $portHandle:

set returnedString [  emulation_mld_querier_control
                    port_handle=    $portHandle
                    action=         start]

The following example stops the MLD Queriers just started:

set returnedString [  emulation_mld_querier_control
                     port_handle=    $portHandle
                     action=         stop]

Sample Output:

{status 1}

emulation mld querier info

Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>

Purpose:
Retrieves statistics for the MLD Querier Routers configured on the specified test ports.

Synopsis:

Note: M indicates the argument is `Mandatory`.

       emulation mld 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).

mcast_compatiblity_mode
            MLD version the router block is currently operating as [MLDV1, MLDV2]

router_state
            State of the MLD/MLD querier block [NOT_STARTED, UNDEFINED, UP]

frame_count_rx
            Total number of MLD frames received

mld_check_sum_error_count_rx
            Total number of MLD messages received with checksum errors

mld_length_error_count_rx
            Total number of MLD messages received with length errors

unknown_type_count_rx
            Total number of frames of unknown type received

frame_count_tx
            Total number of MLD frames transmitted
Description:
The emulation mld querier info function returns statistics of the MLD Querier 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_mld_querier_info
                  port_handle=    $portHandle]

Sample Output:

{status 1} {results {{router1 {{mld_check_sum_error_count_rx 0}
{unknown_type_count_rx 0} {mcast_compatiblity_mode V2}
{mld_length_error_count_rx 0} {router_state UP}
{frame_count_rx 0} {frame_count_tx 0}}}}}

End of Procedure Header