RFC 2544 Functions

test rfc2544 config

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

Purpose:
The test rfc2544 config command creates, modifies and deletes backto-back test, frame loss test, latency test, or throughput test. The RFC 2544 tests are used to describe the performance characteristics of a network interconnecting device.

Synopsis:

Note: M indicates the argument is `Mandatory`.

     test rfc2544 config
        mode= {create|modify|delete} M
        handle= <test_handle>
        src_port= <port_handle>
        dst_port= <port_handle>
        endpoint_creation= {0|1}
        device_count= <integer>
        mac_addr= {aa:bb:cc:dd:ee:ff}
        port_mac_step= {aa:bb:cc:dd:ee:ff}
        device_mac_step= {aa:bb:cc:dd:ee:ff}
        vlan= <integer>
        port_vlan_step= <integer>
        device_vlan_step= <integer>
        vlan_priority= <1-7>
        ipv4_addr= <a.b.c.d>
        port_ipv4_addr_step= <a.b.c.d>
        device_ipv4_addr_step= <a.b.c.d>
        ipv4_prefix_len= <1-32>
        ipv4_gateway= <a.b.c.d>
        port_ipv4_gateway_step= <a.b.c.d>
        ipv6_addr= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        port_ipv6_addr_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        device_ipv6_addr_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        ipv6_prefix_len= <0-128>
        ipv6_gateway= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        port_ipv6_gateway_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        src_endpoints= <handle>
        dst_endpoints= <handle>
        streamblock_handle= <handle>
        traffic_pattern= {pair|mesh|backbone}
        endpoint_map= {one_to_one|one_to_many}
        bidirectional= {0|1}
        enable_stream_only_gen= {0|1}
        iteration_count= {integer}
        test_duration_mode= {seconds|bursts}
        test_duration= <integer>
        test_type= {b2b|fl|latency|throughput}
        frame_size_mode= {custom|random|step|imix}
        frame_size= <integer>
        frame_size_imix= <string>
        frame_size_start= <integer>
        frame_size_end= <integer>
        frame_size_step= <integer>
        frame_size_min= <integer>
        frame_size_max= <integer>
        load_type= {custom|random|step}
        load_unit= {bits_per_second|frames_per_second|inter_burst_gap|
             kilobits_per_second|megabits_per_second|percent_line_rate }]
        load_list= <list_value>
        load_start= <integer>
        load_end= <integer>
        load_step= <integer>
        load_min= <integer>
        load_max= <integer>
        latency_type= {LILO|LIFO|FIFO}
        start_traffic_delay= {0 - 3600}
        stagger_start_delay= {0-65}
        enable_learning= {0|1}
        learning_mode= {l2|l3}
        learning_frequency= {learn_once|learn_every_trial|
             learn_every_frame_size|learn_every_iteration}]
        learning_rate= <integer>
        l3_learning_retry_count= {1-100}
        l2_learning_repeat_count= NUMERIC {1-100}
        enable_cyclic_resolution= {0|1}
        enable_jitter_measure= {0|1}
        accept_frame_loss= <integer>
        resolution_burst= <integer>
        resolution_second= <integer>
        search_mode= {binary|step|combo}
        rate_lower_limit= <integer>
        rate_upper_limit= <integer>
        initial_rate= <integer>
        rate_step= <integer>
        back_off= <integer>
        resolution= <integer>
        ignore_limit= {0|1}
        enable_seq_threshold= {0|1}
        enable_latency_threshold= {0|1}
        out_of_seq_threshold= <integer>
        max_latency_threshold= <integer>
        rfc5180_enable= {true|false}
        no_extension_header_enable= {true|false}
        custom_extension_header_enable= {true|false}
        custom_extension_header_list= {hop_by_hop|destination_options|routing
                                        |fragment|authentication|esp}]
        chain_extension_header_enable= {true|false}
        ipv6_percentage_iteration_mode=  {fixed|step|random|custom}
        fixed_ipv6_percentage= <1-100>
        ipv6_percentage_list=  <1-100>
        random_ipv6_percentage_min=  <1-100>
        random_ipv6_percentage_max=  <1-100>
        ipv6_percentage_start=  <1-100>
        ipv6_percentage_step=  <1-100>
        ipv6_percentage_end=   <1-100>
        coexistence_streamblock_handle= <streamblock_handle>

Arguments:

mode
                Specify the action to be performed on the test port.
                This argument is `Mandatory`. Possible values are create,
                modify, and delete. The values are described below::


                 create - Creates Backto-back test, Frame Loss test,
                          Latency test, or Throughput test.

                 modify - Modifies the configuration for the created test.

                 delete - Deletes the created test.

src_port
                Defines the source port to be used for stream creation.
                You can use this argument when endpoint_creation is set to 1.

dst_port
                Defines the destination port to be used for stream creation.
                You can use this argument when endpoint_creation is set to 1.

handle
                Specifies the test to be modified or deleted.
                This argument is `Mandatory` for modify mode and delete mode.

endpoint_creation
                Determines whether Spirent HLTAPI creates new endpoints
                on the ports specified by src_port and -dst_port. The endpoints
                are used to create new streams in the test. Possible values are 0
                and 1. When it is set to 1, Spirent HLTAPI creates new endpoints
                on the given source port and destination port. You must specify
                the src_port argument and the -dst_port argument when the value
                is 1. When it is set to 0, you can create streams in two other
                ways. One is to specify src_endpoints and -dst_endpoints, and
                then this command will create a bound stream for the test; the
                other is to provide a list of existing streams
                (streamblock_handle), which the command will use for the test.

device_count
                Defines the number of devices you can create on each port. The
                default value is 1. This argument is only valid when the
                endpoint_creation argument is set to 1.

mac_addr
                The starting MAC address to use when emulating devices.
                You can use this argument when endpoint_creation is set to 1.
                The value should be in MAC address format.

port_mac_step
                Defines the step size to be used for incrementing MAC addresses
                across ports. You can use this argument when endpoint_creation
                is set to 1.

device_mac_step
                Defines the step value to be used for incrementing MAC address
                across devices on one port. You can use this argument when
                endpoint_creation is set to 1. The value should be in MAC
                address format.

vlan
                Specifies the VLAN ID for the first device. You can use this
                option when endpoint_creation is set to 1.

port_vlan_step
                Defines the step value to be used for incrementing VLAN IDs
                across the ports. You can use this argument when
                endpoint_creation is set to 1.

device_vlan_step
                Specifies the step value to be used for incrementing VLAN IDs
                across the devices on one port. You can use this argument when
                endpoint_creation is set to 1.

vlan_priority
                Specifies the VLAN priority for created devices. Possible values
                range from 1 to 7. You can use this argument when
                endpoint_creation is set to 1.

ipv4_addr
                Defines the first IPv4 address when emulating devices.
                You can use this argument when endpoint_creation is set to 1.
                The value should be in IPv4 format.

port_ipv4_addr_step
                Defines the step value to be used for incrementing IPv4 addresses
                across the ports. You can use this argument when
                endpoint_creation is set to 1. The value should be in the IPv4
                format.
                For example, if you specify port_ipv4_addr_step 0.1.0.0,
                ipv4_addr 192.85.1.2, and -device_ipv4_addr_step 0.0.0.1.
                When there are two ports, the IPv4 addresses for emulating hosts
                are listed below::


                 First host block: 192.85.1.2, 192.85.1.3, 192.85.1.4...
                 Second host block: 192.86.1.2, 192.86.1.3, 192.86.1.4...

                The number of hosts in each host block is specified by
                the device_count argument.

device_ipv4_addr_step
                Defines the step value to be used for incrementing IPv4 addresses
                across the devices on one port. You can use this argument when
                endpoint_creation is set to 1.

ipv4_prefix_len
                Specifies the IPv4 prefix length for created devices.
                You can use this argument when endpoint_creation is set to 1.

ipv4_gateway
                Specifies the IPv4 gateway addresses for the first device.
                You can use this argument when endpoint_creation is set to 1.
                The value should be in IPv4 format.

port_ipv4_gateway_step
                Specifies the step value to be used for incrementing IPv4 gateway
                addresses across the ports. You can use this argument when
                endpoint_creation is set to 1. The value should be in IPv4
                format.

ipv6_addr
                Specifies the first IPv6 address when creating devices. You can
                use this argument when endpoint_creation is set to 1. The value
                should be in IPv6 format.

port_ipv6_addr_step
                Specifies the step size to be used for incrementing IPv6
                addresses across the ports. You can use this argument when
                endpoint_creation is set to 1. The value should be in IPv6
                format.

device_ipv6_addr_step
                Defines the step value to be used for incrementing IPv6 addresses
                across the devices on one port. You can use this argument when
                endpoint_creation is set to 1. The value should be in IPv6
                format.

ipv6_prefix_len
                Specifies the prefix length of the IPv6 addresses. You can use
                this argument when endpoint_creation is set to 1. Possible values
                range from 0 to128.

ipv6_gateway
                Defines the starting IPv6 gateway address when emulating devices.
                You can use this argument when endpoint_creation is set to 1.
                The value should be in IPv6 format.

port_ipv6_gateway_step
                Specifies the step size to be used for incrementing IPv6 gateway
                address across the port. You can use this argument when
                endpoint_creation is set to 1. The value should be in IPv6
                format.

src_endpoints
                Specifies the source endpoint used to create traffic. The trial
                will use the traffic binding to the source endpoint
                (src_endpoints) and the destination endpoint (-dst_endpoints) to
                run. When you specify this argument, you must specify the
                dst_endpoints option. You can use this argument when the
                endpoint_creation option is set to 0. This value can be an
                endpoint or a list of endpoints.

dst_endpoints
                Specifies the destination endpoint used to create traffic.
                The trial will use the traffic binding to the source endpoint
                (src_endpoints) and the destination endpoint (-dst_endpoints) to
                run. When you specify this argument, you must specify the
                src_endpoints option. You can use this argument when the
                endpoint_creation option is set to 0. This value can be an
                endpoint or a list of endpoints.

streamblock_handle
                Indicates the existing streams used for the test. The trial will
                use the provided streamblock to do the test. The value of this
                argument can be a stream or a list of streams. You can use this
                argument when the endpoint_creation option is set to 0.

traffic_pattern
                Indicates the traffic pattern to be used for the test. Possible
                values are pair, mesh, and backbone. The patterns are described
                below::


                 pair - Traffic is transmitted between one or more port pairs.
                       The ports to use is specified by the src_endpoints
                       option and the dst_endpoints option.

                 mesh - Every port transmits traffic to every other port and
                       receives traffic from all other ports simultaneously.
                       src_endpoints and -dst_endpoints are the endpoints to be
                       included in the fully meshed network.

                 backbone - Traffic is transmitted in a partially meshed pattern,
                        either unidirectional or bidirectional. src_endpoints and
                        dst_endpoints are the endpoints to be included in
                        the backbone network.

endpoint_map
                Specifies one of the following traffic mapping methods to be
                used within each host block. Possible values are one_to_one
                and one_to_many. The methods are described below::


                 one_to_one - Every endpoint within the source endpoint
                     block transmits traffic to the corresponding destination
                     endpoint within the destination endpoint block.

                 one_to_many - Every endpoint within the source endpoint
                     block transmits traffic to every destination endpoint
                     within the destination endpoint block.

bidirectional
                Determines whether the traffic is unidirectional or bidirectional.
                Possible values are 0 (unidirectional) and 1 (bidirectional).

enable_stream_only_gen
                Whether to use streams to simulate the traffic between source
                and destination endpoints.

                Possible Values are::


                    Value    Description
                      1      Use streams for flow.
                      0      Do not use streams for flow.

                Default: 0

iteration_count
                Specifies the number of times the test repeats with its initial
                configuration. Each trial is based on the same parameter values.
                Within a trial, certain parameter values vary with each
                iteration, according to the test methodology and setup. At the
                start of the next trial, these parameters revert to their initial
                values. The default value is 1.

test_duration_mode
                Specifies the duration mode for each transmitted stream.
                This option determines whether the test duration is measured
                in seconds or by the number of frames. The default is seconds.
                Possible values are described below::


                 seconds - Each trial lasts for the number of seconds
                          specified by the test_duration argument.

                 bursts - Each trial lasts for the number of bursts specified
                          by the test_duration argument.

test_duration
                Indicates the transmission length in number of frames, when you
                specify test_duration_mode bursts, or indicates the transmission
                time in seconds, if you specify test_duration_mode seconds. The
                default value is 60 when you specify test_duration_mode seconds
                and 1000 when you specify test_duration_mode bursts.

test_type
                Indicates the type of test to be done. Possible values are::


                 b2b - Indicates the test is a backto-back test. This test
                       characterizes the ability of the DUT to process
                       backto-back frames. This test simulates popular network
                       activity, such as requests for large amounts of data
                       over an Ethernet network, that may use a relatively
                       small Maximum Transmission Unit (MTU) size and
                       that can result in many fragments being transmitted.

                 fl - Indicates the test is a frame loss test. This test
                      determines the percentage of frames that should have
                      been forwarded by a network device under steady
                      state (constant) load that were not forwarded due to
                      lack of resources.

                 latency - Indicates the test is a latency test. This
                      test determines the minimum, average, maximum transmission
                      delay through the DUT.

                 throughput - Indicates the test is a throughput test. This
                      test determines the maximum rate at which  of the
                      offered frames are dropped by the DUT.

                The default value is b2b.


frame_size_mode
                Specifies how frame sizes are set and varied through
                successive test trials. Possible values are custom,
                random, step, and imix. The default value is custom.
                The modes are described below::


                 custom - Specifies a list of frame sizes specified by the
                        frame_size argument.

                 random - Generates random frame sizes within the
                        range between the minimum size (frame_size_min)
                        and the maximum size (frame_size_max).

                 step - Increases the frame size for each trial from that of
                        the previous trial. You should use frame_size_start,
                        frame_size_end, and frame_size_step together to generate
                        the frame size list for the test when the frame_size_mode
                        is set to step.

                 imix - Specifies a list of frame sizes specified by the
                       frame_size_imix argument.

                Note: The frame size includes the Cyclic Redundancy Check (CRC).

frame_size
                Defines the frame size (in bytes) list for the test when you
                specify frame_size_mode custom.

frame_size_imix
                Defines a list of Internet Mix (iMIX) frame size distribution
                profiles when you specify frame_size_mode imix. These are preset
                distribution profiles in Spirent TestCenter::


                 Name          Description

                 Default     A simple mix of the three most common frame sizes
                             found on the Internet

                 Spirent     A simple mix of the four most common frame sizes
                             found on the Internet

                 4Point     The default distribution supplemented by a random
                             set of frame sizes

                 TCPv4       A mix of the most common TCPv4 frame sizes found on
                             the Internet

                 IPSEC       A mix of frame sizes that approximates IPsec traffic

                 jmix_upstream   A mix of frame sizes that approximate JMIX
                                 upstream traffic

                 jmix_downstream  A mix of frame sizes that approximate JMIX
                                  downstream traffic

                You can use these preset names directly, or use profile names
                returned by function imix config when creating custom
                distribution profiles.

frame_size_start
                Indicates the frame size (in bytes) for the first test trial. The
                default value is 128. You can specify this argument when
                frame_size_mode is set to step.

frame_size_end
                Specifies the maximum frame size (in bytes) for the test.
                The default value is 256. You can specify
                this argument when frame_size_mode is set to step.

frame_size_step
                Specifies the frame size (in bytes) increment. The default value
                is 128. You can specify this argument when frame_size_mode is
                set to step.

frame_size_min
                Indicates the minimum frame size (in bytes) when you use random
                mode for frame_size_mode. The default is 128.

frame_size_max
                Indicates the maximum frame size (in bytes) when you use random
                mode for frame_size_mode. The default is 256.

load_type
                Specifies the way of varying the load size during the test.
                Possible values are custom, random, and step. The default
                value is custom. The types are described below::


                 custom - The load sizes to use for the test is a list of the load
                         sizes that are specified by the load_list argument.

                 random - The load sizes to use for the test is the random sizes
                          between the minimum size specified by the load_min
                          argument and the maximum size specified by the load_max
                          argument.

                 step - The load sizes increase by the step value (load_step) with
                        each test iteration, beginning with the start value
                        (load_start) and increasing to the end value (load_end).

load_unit
                Specifies the load unit to use. Possible values are
                bits_per_second, frames_per_second, inter_burst_gap,
                kilobits_per_second, megabits_per_second, and percent_line_rate.
                The default value is percent_line_rate. The units are described
                below::


                 bits_per_second - Number of bits per second.
                 frames_per_second - Number of frames per second.
                 inter_burst_gap - Interval between two frames.
                 kilobits_per_second - Number of kilobits per second.
                 megabits_per_second - Number of megabits per second.
                 percent_line_rate - Percentage of the line rate.

                Note: This option is not allowed in the throughput test.

load_list
                Defines the list of load sizes. You can specify this option
                when load_type is set to custom.

load_start
                Indicates the load size for the first trial. The default is 10.
                You can use this argument when you specify load_type step.
                You should use load_start, load_end, and load_step together
                to generate the load value list when you specify load_type step.

load_end
                Specifies the maximum load value for a trial. The default is 50.
                You can specify this argument when you specify load_type step.
                Please refer to load_type for more information.

load_step
                Indicates the difference between two load sizes. The default is
                10. You can specify this argument when you specify load_type
                step. Please refer to load_type for more information.

load_min
                Specifies the minimum load value for a trial. You can use this
                argument when you specify load_type random. Please refer to
                load_type for more information. The default is 10.

load_max
                Specifies the maximum load value for a trial. You can use this
                argument when you specify load_type random. Please refer to
                load_type for more information. The default is 50.

latency_type
                Specifies the latency calculation methods. Possible values
                are::


                 LILO - LastIn Last-Out latency. Calculates the latency as the
                        time interval from when the end of the frame is
                        transmitted from the source test port to when the
                        end of the frame is received at the destination test port.

                 LIFO - LastIn First-Out latency. Calculates the latency as
                        the time interval from when the last bit of the input
                        frame reaches the test destination port to when the
                        first bit of the output frame reaches the test destination
                        port.

                 FIFO - FirstIn First-Out latency. Calculates the latency
                        as the time interval from when the first bit
                        of the input frame reaches the test destination
                        port to when the first bit of the output frame
                        reaches at the test destination port.

                The default is LILO.

start_traffic_delay
                Specifies the delay (in seconds) before test traffic
                is transmitted. This delay occurs after the learning
                period, when test frames are sent to determine
                whether the DUT/SUT correctly forwards frames to
                their destination. Possible values range from 0 to 3600.
                The default value is 2.

stagger_start_delay
                Specifies the delay, measured in microseconds, between each
                transmission. Spirent HLTAPI multiplies the value by 64. For
                example, if you enter 5, the staggered start is 320 microseconds
                between each port starting traffic. A nonzero value causes the
                test ports to transmit test traffic in sequence. A zero value
                causes the test ports to send traffic all at once. Possible
                values range from 0 to 65. The default is 0.

enable_learning
                Determines whether enables learning mode or not. Possible
                values are 0 and 1. When it is set to 1, the options related to
                learning are valid. The default is 1.

learning_mode
                Defines Layer 2 learning mode or Layer 3 learning mode.
                Possible values are l2 and l3. The default value is l3.

learning_frequency
                Specifies the frequency for sending learning frames.
                Possible values are::

                 learn_once - Sends learning frames once before the test starts.

                 learn_every_trial - Sends learning frames before each trial begins.

                 learn_every_frame_size - Sends learning frames upon each
                                     iteration in frame size.

                 learn_every_iteration - Sends learning frames before each
                                     iteration begins.

                The default value is learn_once.

learning_rate
                Specifies the rate, measured in frames per second, at which
                learning frames are sent to the SUT. You must specify
                learning_mode to l2.

l3_learning_retry_count
                Specifies the number of Layer 3 learning retries
                if transmission, learning verification, or link errors
                occur. Possible values range from 1-100. The default is 5.
                You can specify this argument when you specify
                learning_mode l3.

l2_learning_repeat_count
                Specifies the number of Layer 2 learning retries
                if transmission, learning verification, or link errors
                occur. Possible values range from 1-100. The default is 5.
                You can specify this argument when you specify
                learning_mode l2.

enable_cyclic_resolution
                Enables or disables the Layer 3 cyclic address resolution.
                Possible values are 0 (disable) and 1 (enable).
                Spirent TestCenter sends as many Address Resolution Protocol
                (ARP) /Neighbor Discovery (ND) requests as the number of source
                IP addresses. The intended use for this option is to seed the
                DUT's ARP cache with the source IP and MAC addresses. If this
                option is disabled, only one ARP/ND request is sent. The default
                is 1. You can specify this argument when learning_mode is set to
                l3.

enable_jitter_measure
                Determines whether to run the test in Jitter mode or not.
                Possible values are 0 and 1. When it is set to 1, Spirent
                HLTAPI will measure the Jitter data. The default is 0.

accept_frame_loss
                Indicates the maximum percentage of frames that may be
                lost during a trial without causing the trial to fail. Frame
                loss is the aggregate loss from all traffic flows,
                averaged across all ports included in the test. Possible
                values range from 0.0-100.0. The default is 0.0. You can
                use this argument when you specify test_type b2b or
                test_type throughput.

resolution_burst
                Specifies the smallest possible adjustment, measured in frames,
                for the traffic load from iteration to iteration. If the required
                adjustment to the current load for the next iteration is less
                than the resolution, the test stops. This parameter applies only
                if test_duration is set to bursts and test_type is set to b2b.
                The default value is 100.

resolution_second
                Specifies the smallest possible adjustment, measured in seconds,
                for the traffic load from iteration to iteration. If the required
                adjustment to the current load for the next iteration is less
                than the resolution, the test stops. This parameter applies only
                if test_duration is set to seconds and test_type is set to b2b.
                The default value is 60.

search_mode
                Specifies the mode used to vary the load. Possible values are
                binary, step, and combo. The default value is binary. You
                can specify this argument when test_type is set to throughput.
                The modes are described below::


                 binary - The test searches for the throughput value using a
                         binary search algorithm.

                 step -  The test load increases with each iteration by the
                         percentage specified by the rate_step option.

                 combo - The test begins with step mode and then switches
                     to binary mode when an iteration fails.

rate_lower_limit
                Specifies the lower limit load rate for each port when using
                the binary search. This attribute will be ignored if search_mode
                is set to step. The default value is 1. You can specify this
                argument when test_type is set to throughput and -search_mode is
                set to binary.

rate_upper_limit
                Specifies the maximum load rate for each port. The default
                value is 100. You can specify this argument when
                test_type is set to throughput.

initial_rate
                Indicates the starting load rate for each port. The default is 10.
                You can specify this argument when test_type is set to throughput.

rate_step
                Specifies the amount that the load increases from iteration
                to iteration. This attribute will be ignored if the search_mode
                option is set to binary. The default value is 10. You can specify
                this argument when test_type is set to throughput and
                search_mode is set to step.

back_off
                Specifies the rate at which the load decreases after the DUT
                fails at the current load. This option is applicable when
                search_mode is binary or combo and -test_type is set to
                throughput. The default value is 50.

resolution
                Defines the finest adjustment possible in load from iteration to
                iteration. If the required adjustment to the current load for the
                next iteration is less than the value, the search stops. This
                option is applicable when search_mode is binary or combo.
                The default is 1.

ignore_limit
                Specifies whether the search stops at the value specified by
                rate_lower_limit or rate_upper_limit, or it continues beyond
                those limits if an acceptable load has not been found yet. Possible
                values are 0 and 1. The default is 0. You can specify this
                option when test_type is set to throughput and -search_mode is
                set to binary or combo.

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

                Enables/disables the use of outof-sequence threshold, which, if
                exceeded, causes the test iteration to fail. Possible values are 0
                (disable) and 1 (enable). The default value is 0. You can specify
                this option when test_type is set to throughput.

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

                Enables/disables the use of maximum latency. Possible values are 0
                (disable) and 1 (enable). The default value is 0. You can specify
                this option whentest_type is set to throughput.

out_of_seq_threshold
                Specifies the number of outoforder frames on each receive
                port that, if exceeded, causes the test iteration to fail. The
                default is 0. You can specify this option when test_type is
                set to throughput and enable_latency_threshold is set to 1.

max_latency_threshold
                Specifies the maximum latency (in microseconds) of all the
                average latencies determined on each receive port in the test.
                If the threshold is reached, then the test trial fails. The default
                value is 30. You can specify this option when test_type is set
                to throughput and enable_latency_threshold is set to 1.

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

                Enables or disables RFC 5180 IPv6 benchmarking test options.
                Possible values are true (enable) and false (disable). The
                default value is false.

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

                When enabled, an iteration with no IPv6 extension header will be
                configured. This argument is available when rfc5180_enable is
                set to true. Possible values are true (enable) and false
                (disable). The default value is true.

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

                When enabled, a custom list of single IPv6 extension headers
                will be configured. This argument is available when
                rfc5180_enable is set to true. Possible values are true
                (enable) and false (disable). The default value is false.

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

                Specifies a list of custom IPv6 extension headers to iterate.
                This argument is available when custom_extension_header_enable
                is set to true. Possible values are::


                 hop_by_hop            Hop by Hop header
                 destination_options   Destination options header
                 routing               Routing header
                 fragment              Fragment header
                 authentication        Authentication header
                 esp                  Encapsulating Security Payload (ESP) header

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

                When enabled, an iteration with an RFC recommended chain of
                3extension headers will be configured. This chain consists of:
                 i)   Routing header
                 ii)  Destination options header
                 iii) Fragment header

                Possible values are true (enable) and false (disable). The
                default value is false. This argument is available when
                rfc5180_enable is set to true.

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

                Specifies how the percentage of IPv6 frames is set and varied
                through successive test trials. This argument is available when
                rfc5180_enable is set to true. Possible values are::


                 fixed           Generates IPv6 frames at a fixed rate based
                                 on the specified percentage

                 random          Generates IPv6 frames at random rates within the
                                 specified percentage range

                 step            Increases the percentage of IPv6 frames for each
                                 trial from that of the previous trial

                 custom          Specifies a list of frame rates as a percentage
                                 of bandwidth

                The default value is fixed.

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

                Specifies a fixed percentage for IPv6 frames. This argument is
                available when ipv6_percentage_iteration_mode is set to
                fixed. Possible values range from 0 to 100. The default value is
                100.

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

                Specifies a list of frame rates as a percentage of bandwidth.
                This argument is available when ipv6_percentage_iteration_mode
                is set to custom. Possible values range from 0 to 100. The
                default value is 0.

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

                Specifies the lower bound for the IPv6 traffic percentage.
                This argument is available when ipv6_percentage_iteration_mode
                is set to random. Possible values range from 0 to 100. The
                default value is 1.

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

                Specifies the upper bound for the IPv6 traffic percentage.
                This argument is available when ipv6_percentage_iteration_mode
                is set to random. Possible values range from 0 to 100. The
                default value is 100.

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

                Specifies the starting IPv6 traffic percentage. This argument is
                available when ipv6_percentage_iteration_mode is set to step.
                Possible values range from 0 to 100. The default value is 10.

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

                Specifies the step value by which to generate subsequent
                percentages for IPv6 frames. This argument is available when
                ipv6_percentage_iteration_mode is set to step. Possible values
                range from 0 to 100. The default value is 10.

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

                Specifies the ending point where the IPv6 traffic percentage
                stops incrementing. This argument is available when
                ipv6_percentage_iteration_mode is set to step. Possible values
                range from 0 to 100. The default value is 100.

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

                Specifies the coexistence streamblock handle for RFC 2544 test
                configurations. This argument is available when rfc5180_enable
                is set to true.

Arguments Unsupported by Save as HLTAPI:

None.
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 test instance.
status    Success (1) or failure (0) of the operation.
log       An error message (if the operation failed).
Description:

The test rfc2544 config function creates, modifies or deletes an RFC 2544 test that can be a backto-back test, a frame loss test, a latency test, or a throughput test. Use the mode argument to specify the action to perform. (See the mode argument description for information about the actions.)

Once the RFC 2544 test has been configured, a handle is created, which can be used to modify the created test. (See the mode argument description for more information).

You must specify the mode (create, modify, or delete) argument.

You can use one of the following methods to create a stream used in the created test:

  • You can enable the endpoint_creation parameter that indicates you will use new endpoints to create streams for the test. Then you must use the src_port option and the -dst_port option to specify the source port handle and the destination port handle on which to emulate new streams.
  • You can specify src_endpoints and -dst_endpoints to create a bound stream for the test.
  • You can provide a list of existing streams by specifying streamblock_handle for the test.

For more information about the protocol, see RFC 2544.

Examples:

The following example creates a latency test:

test rfc2544 config streamblock_handle=$streamHnd
                   mode= create
                   test_type= latency
                   traffic_pattern= pair
                   endpoint_creation= 0
                   bidirectional= 0
                   iteration_count= 1
                   latency_type= FIFO
                   start_traffic_delay= 1
                   stagger_start_delay= 1
                   delay_after_transmission= 10
                   frame_size_mode= custom
                   frame_size= {1024}
                   test_duration_mode= seconds
                   test_duration= 30
                   load_unit= percent_line_rate
                   load_type= step
                   load_start= 20
                   load_step=  10
                   load_end=  40]

The following example creates a throughput test:

 set rfc_cfg0 [test rfc2544 config
        mode=                            create
        test_type=                      throughput
        streamblock_handle=            $streamblock_handle
        endpoint_creation=             0
        frame_size_mode=                imix
        start_traffic_delay=            2
        resolution=                     1
        learning_mode=                  l3
        rate_upper_limit=               100
        enable_latency_threshold=       0
        enable_detailresults=           1
        rate_step=                      10
        stagger_start_delay=            0
        learning_frequency=             learn_once
        enable_jitter_measure=          0
        delay_after_transmission=       15
        ignore_limit=                   0
        enable_cyclic_resolution=       1
        test_duration_mode=             seconds
        back_off=                       50
        iteration_count=                2
        rate_lower_limit=               1
        accept_frame_loss=              0
        test_duration=                  10
        enable_learning=                0
        latency_type=                   LILO
        search_mode=                    step
        enable_seq_threshold=           0
        frame_size_imix=                jmix_upstream jmix_downstream
        l3_learning_retry_count=        5
        initial_rate=                   80
]

Sample output for examples shown above:

{status 1} {handle rfc2544throughputconfig2}

The following example modifies a created test:

test rfc2544 config mode=modify
                   handle= $handle
                   test_type= b2b
                   traffic_pattern= pair
                   endpoint_creation= 0
                    bidirectional= 1
                   iteration_count= 3
                   start_traffic_delay= 2
                   frame_size_mode= custom
                   frame_size= {1024 1518 256}
                   test_duration_mode= seconds
                   test_duration= 30 ]

Sample Output:

{status 1}

test rfc2544 control

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

Purpose:
Controls the RFC 2544 tests.

Synopsis:

Note: M indicates the argument is `Mandatory`.
    test rfc2544 control
        action= {run | insert_breakpoint | remove_breakpoint | stop} M
        wait= {0|1}
        breakpoint= {trial | framesize | load}
        cleanup= {0|1}
        display_status= {true|false}
        display_status_interval= <integer>

Arguments:

action
                Specifies the action to perform for the test. Possible values
                are run and stop. The modes are described below::


                 run                - Starts the test. You can start one test in each type.
                 insert_breakpoint  - Inserts a pause on selected commands. The Command
                                      Sequencer pauses on commands that contain a breakpoint
                                      before running them.
                 remove_breakpoint  - Removes a pause from selected commands.
                 stop               - Stops the test.

wait
                Determines whether this command will return only when the test is
                completed. Possible values are 0 and 1. The default is 1. When it
                is set to 1, the command will return only when the test is
                completed.

breakpoint
                Specifies the command name to pause the sequencer test.
                Possible values are::


                 trial      - Pauses the test at each trial iteration.
                 framesize  - Pauses the test at each framesize iteration.
                 load       - Pauses the test at each load size iteration.

cleanup
                Determines whether the current test instance should be deleted
                after the test is completed. Possible values are 0 and 1. The
                default value is 1. When it is set to 1, the current test
                instance will be deleted after the test is completed.

display_status
                Determines whether to get the test status in the specified
                time interval (display_status_interval). When it is set to
                true the test status will be displayed in the specified time
                interval.

display_status_interval
                Specifies the time interval in seconds to get the test status.
                The default value is 30 seconds.
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 or $FAILURE log Error message if command returns {status 0}
Description:
The test rfc2544 control function controls the starting and stopping of the test.

Examples:

The following example starts all current configured tests at the same time and does not do the cleanup action when the tests stop:

set ret test rfc2544 control action=run wait 1 -cleanup 0

Sample output for the example shown above:

{status 1}

The following example explains the usage of insert_breakpoint and remove_breakpoint actions:

#Inserts breakpoint at the framesize command
set ret test rfc2544 control action=insert_breakpoint breakpoint framesize
# Starts the test and pauses at the breakpoint
set ret [test rfc2544 control action=run]
# Resumes the test and pauses at the breakpoint after execution of first framesize (ex:64) iteration
set ret [test rfc2544 control action=run]
# Removes breakpoint
set ret test rfc2544 control action=remove_breakpoint breakpoint framesize
# Resumes test and executes untill it completes
set ret [test rfc2544 control action=run]

Sample output for the example shown above:

{status 1}

test rfc2544 info

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

Purpose:
Retrieves statistics for the configured test.

Synopsis:

Note: M indicates the argument is `Mandatory`.

    test rfc2544 info
        test_type= {b2b|fl|latency|throughput} M
        clear_result= {0|1}
        enable_load_detail=  {0|1}

Arguments:

test_type
                Specifies the type of the test, whose information will be returned.
                This argument is `Mandatory`. Possible values are b2b,
                fl, latency, and throughput.

clear_result
                Determines whether the result should be cleared after
                the data is retrieved. Possible values are 0 and 1.
                When it is set to 1, the result will be cleared after the
                data is retrieved. The default is 0.

enable_load_detail
                Enables or disables returning the results of each load size for
                all frame sizes done in a test. Possible values are 0 (disable)
                and 1 (enable). The default is 0.
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 or $FAILURE log Error message if command returns {status 0}

statistics list    Specifies the list of RFC 2544 statistics

Backto-back Statistics

Summary results:

rfc2544b2b.summary.total_iteration_count
     The number of all the iterations.

rfc2544b2b.summary.frame_size. <value>. burst_size
     Burst Size.

rfc2544b2b.summary.frame_size. <value>. burst_duration
     Burst duration.

rfc2544b2b.summary.frame_size. <value>. iload
     The intended load.

rfc2544b2b.summary.frame_size. <value>. avg_tx_frames
     The average number of sent frames.

rfc2544b2b.summary.frame_size. <value>. avg_rx_frames
     The average number of received frames.

rfc2544b2b.summary.frame_size. <value>. avg_frame_lost
     The average number of lost frames.

Detail results:

rfc2544b2b.detail.iteration. <count>.frame_size. <value>.iload
     The intended load.

rc2544b2b.detail.iteration. <count>.frame_size. <value>.oload
     The offer load.

rfc2544b2b.detail.iteration. <count>.frame_size. <value>. tx_frames
     The Number of sent frames.

rfc2544b2b.detail.iteration. <count>.frame_size. <value>. rx_frames
     The number of received frames.

rfc2544b2b.detail.iteration. <count>.frame_size. <value>. frame_lost
     The number of lost frames.

rfc2544b2b.detail.iteration. <count>.frame_size. <value>. burst_size
     The burst size.

rfc2544b2b.detail.iteration. <count>.frame_size. <value>. burst_duration
     The burst duration.

rfc2544b2b.detail.iteration. <count>.frame_size. <value>. min_latency
     The minimum latency (microseconds).

rfc2544b2b.detail.iteration. <count>.frame_size. <value>. max_latency
     The maximum latency (microseconds).

rfc2544b2b.detail.iteration. <count>.frame_size. <value>. avg_latency
     The average latency (microseconds).

Frame loss Statistics

Summary results:

rfc2544fl.summary.total_iteration_count
     The number of all the iterations.

rfc2544fl.summary.frame_size. <value>.load. <value>.
tx_frames
     The number of sent frames.

rfc2544fl.summary.frame_size. <value>.load. <value>.
rx_frames
     The number of received frames.

rfc2544fl.summary.frame_size. <value>.load. <value>.
frame_lost
     The number of lost frames.

rfc2544fl.summary.frame_size. <value>.load. <value>.
frame_loss
     The percentage ratio of lost frames to the total frames.

Detail results:

rfc2544fl.detail.iteration. <count>.frame_size. <value>.load.<value>.
tx_frames
     The number of sent frames.

rfc2544fl.detail.iteration. <count>.frame_size. <value>.load.<value>.
rx_frames
     The number of received frames.

rfc2544fl.detail.iteration. <count>.frame_size. <value>.load.<value>.
frame_lost
     The number of lost frames.

rfc2544fl.detail.iteration. <count>.frame_size. <value>.load.<value>.
frame_loss
     The percentage ratio of lost frames to the total frames.

Throughput Statistics

Summary results:

rfc2544throughput.summary.total_iteration_count
     The number of all the iterations done in a test.

rfc2544throughput.summary.frame_size. <value>.
oload
     The offer load.

rfc2544throughput.summary.frame_size. <value>.
iload
     The intended load.

rfc2544throughput.summary.frame_size. <value>.
throughput_percent
     Percentage.

rfc2544throughput.summary.frame_size. <value>.
throughput_fps
     Frames per second.

rfc2544throughput.summary.frame_size. <value>.
throughput_mbps
     Megabits per second.
Note: To access the average data value of all the iterations done in a test

when the frame_size_mode is imix, use frame_size_value to retrieve results, for example:

set key [keylget stats_string
rfc2544throughput.summary.frame_size.frame_size_value]
set thruput [keylget stats_string
rfc2544throughput.summary.frame_size.$key.throughput_mbps]

Detail results:

 rfc2544throughput.detail.iteration. <count>.frame_size.<value>.
 iload
      The intended load.

 rfc2544throughput.detail.iteration. <count>.frame_size.<value>.
 oload
      The offer load.

 rfc2544throughput.detail.iteration. <count>.frame_size.<value>.
 throughput_percent
      Percentage.

 rfc2544throughput.detail.iteration. <count>.frame_size.<value>.
 throughput_fps
      Frames per second.

 rfc2544throughput.detail.iteration. <count>.frame_size.<value>.
 throughput_mbps
      Megabits per second.

 rfc2544throughput.detail.iteration. <count>.frame_size.<value>.
 frame_loss
      The percentage ratio of lost frames to the total frames.

 rfc2544throughput.detail.iteration. <count>.frame_size. <value>.
 max_latency_exceed
      The maximum latency that, if exceeded, the test fails.

 rfc2544throughput.detail.iteration. <count>.frame_size.<value>.
 out_of_seq_exceed
      The maximum number of outof-sequence packets that, if exceeded, the
      test fails.

rfc2544throughput.detail.iteration. <count>.frame_size. <value>.
avg_jitter
      Average jitter value calculated from all measured jitter values in
      microseconds.

rfc2544throughput.detail.iteration. <count>.frame_size. <value>.
min_jitter
      Smallest measured jitter value in the set of all measured jitter values
      in microseconds.

rfc2544throughput.detail.iteration. <count>.frame_size. <value>.
max_jitter
      Largest measured jitter value in the set of all measured jitter values
      in microseconds.

rfc2544throughput.detail.iteration. <count>.frame_size. <value>.
avg_latency
      Average latency value calculated from all measured latency values in
      microseconds.

rfc2544throughput.detail.iteration. <count>.frame_size. <value>.
min_latency
      Smallest measured latency value in the set of all measured latency values
      in microseconds.

rfc2544throughput.detail.iteration. <count>.frame_size. <value>.
max_latency
      Largest measured latency value in the set of all measured latency values
      in microseconds.

Latency Statistics

Summary results:

rfc2544latency.summary.total_iteration_count
     The number of all the iteration in a test.

rfc2544latency.summary.frame_size. <value>.load. <value>. latency_min
     The minimum latency (microseconds).

rfc2544latency.summary.frame_size. <value>.load. <value>. latency_avg
     The average latency (microseconds).

rfc2544latency.summary.frame_size. <value>.load. <value>. latency_max
     The maximum latency (microseconds).

Detail results:

rfc2544latency.detail.iteration. <count>.frame_size. <value>.load. <value>.
latency_min
     The minimum latency (microseconds).

rfc2544latency.detail.iteration. <count>.frame_size. <value>.load. <value>.
latency_avg
     The average latency (microseconds).

rfc2544latency.detail.iteration. <count>.frame_size. <value>.load. <value>.
latency_max
     The maximum latency (microseconds).

rfc2544latency.detail.iteration. <count>.frame_size. <value>.load. <value>.
jitter_min
     The minimum jitter value (microseconds).

rfc2544latency.detail.iteration. <count>.frame_size. <value>.load. <value>.
jitter_avg
     The average jitter value (microseconds).

rfc2544latency.detail.iteration. <count>.frame_size. <value>.load. <value>.
jitter_max
     The maximum jitter value (microseconds).

rfc2544latency.detail.iteration. <count>.frame_size. <value>.load. <value>.
tx_frames
     The number if frames that have been sent.

rfc2544latency.detail.iteration. <count>.frame_size. <value>.load. <value>.
rx_frames
     The number of received frames.
Description:

The test rfc2544 info function provides information about the configured tests.

This function returns the requested data and a status value (1 for success). If there is an error, the function returns the status value (0). Function return values are formatted as a keyed list (supported by the Tcl extension software - TclX). Use the TclX function keylget to retrieve data from the keyed list. (See Return Values for a description of each key.)

Examples:

To return backtoback= test results:

puts "get the b2b test result"
set ret test rfc2544 info test_type=b2b clear_result 1

Sample Output:

  {rfc2544b2b {{detail {{iteration {{1 {{frame_size {{1024
  {{iload 100.0} {oload {}} {tx_frames 1000} {rx_frames 1000}
  {frame_lost 0} {burst_size 1000} {burst_duration 0.008352}
  {min_latency 15.59} {max_latency 15.79} {avg_latency 15.73}}}
  {1518 {{iload 100.0} {oload {}} {tx_frames 250} {rx_frames 250}
  {frame_lost 0} {burst_size 250} {burst_duration 0.003076}
  {min_latency 195.61} {max_latency 3698.87} {avg_latency
  1666.72}}}}}}} {2 {{frame_size {{1024 {{iload 100.0}
  {oload {}} {tx_frames 1000} {rx_frames 1000} {frame_lost 0}
  {burst_size 1000} {burst_duration 0.008352} {min_latency 15.53}
  {max_latency 15.82} {avg_latency 15.76}}} {1518 {{iload 100.0}
  {oload {}} {tx_frames 250} {rx_frames 250} {frame_lost 0}
  {burst_size 250} {burst_duration 0.003076} {min_latency 200.58}
  {max_latency 3272.02} {avg_latency 1536.54}}}}}}} {3
  {{frame_size {{1024 {{iload 100.0} {oload {}} {tx_frames 1000}
  {rx_frames 1000} {frame_lost 0} {burst_size 1000}
  {burst_duration 0.008352} {min_latency 15.64} {max_latency 15.84}
  {avg_latency 15.78}}} {1518 {{iload 100.0} {oload {}} {tx_frames 250}
  {rx_frames 250} {frame_lost 0} {burst_size 250} {burst_duration 0.003076}
  {min_latency 182.0} {max_latency 3284.55} {avg_latency 1504.9}}}}}}}
  {4 {{frame_size {{1024 {{iload 100.0} {oload {}} {tx_frames 1000}
  {rx_frames 1000} {frame_lost 0} {burst_size 1000}
  {burst_duration 0.008352} {min_latency 15.62} {max_latency 15.92}
  {avg_latency 15.85}}} {1518 {{iload 100.0} {oload {}} {tx_frames 250}
  {rx_frames 250} {frame_lost 0} {burst_size 250} {burst_duration 0.003076}
  {min_latency 191.62} {max_latency 3249.63} {avg_latency 1521.22}}}}}}}
  {5 {{frame_size {{1024 {{iload 100.0} {oload {}} {tx_frames 1000}
  {rx_frames 1000} {frame_lost 0} {burst_size 1000}
  {burst_duration 0.008352} {min_latency 15.56} {max_latency 15.86}
  {avg_latency 15.8}}} {1518 {{iload 100.0} {oload {}} {tx_frames 250}
  {rx_frames 250} {frame_lost 0} {burst_size 250} {burst_duration 0.003076}
  {min_latency 179.68} {max_latency 3389.17} {avg_latency 1598.14}}}}}}}}}}}
  {summary {{total_iteration_count 5} {frame_size {{1024
  {{burst_size 1000} {burst_duration 0.008352} {iload 100.0}
  {avg_tx_frames 1000} {avg_rx_frames 1000} {avg_frame_lost 0}}} {1518
  {{burst_size 250} {burst_duration 0.003076} {iload 100.0}
  {avg_tx_frames 250} {avg_rx_frames 250} {avg_frame_lost 0}}}}}}}}} {status 1}


To return throughput results with details for each load size::


  set ret [test rfc2544 info
          test_type=                                        throughput
          clear_result=                                     1
          enable_load_detail=                               1
    ]

Sample Output:

{rfc2544throughput {{detail {{iteration {{1 {{frame_size {{frame_size_value 64}
{64 {{iload 100.0} {oload 0.661} {throughput_percent 0.661} {throughput_fps
196403.54} {throughput_mbps 20000.0} {frame_loss 0.0} {max_latency_exceed 0}
{out_of_seq_exceed 0} {min_latency 25.4} {avg_latency 2720.129} {max_latency
21321.22} {min_jitter 0.0} {avg_jitter 0.0} {max_jitter 0.0}}}}}}}}}}} {summary
{{total_iteration_count 1} {frame_size {{frame_size_value 64} {64 {{iload
100.0} {oload 0.661} {throughput_percent 0.661} {throughput_fps 196403.54}
{throughput_mbps 20000.0} {min_latency 25.4} {avg_latency 2720.129}
{max_latency 21321.22} {min_jitter 0.0} {avg_jitter 0.0} {max_jitter 0.0}}}}}}}
{load_detail {{iteration {{1 {{frame_size {{frame_size_value 64} {64
{{load_value {90.0 100.0}} {90 {{iload 90.0} {oload 0.653} {throughput_percent
0.653} {throughput_fps 194069.31} {throughput_mbps 18000.0} {frame_loss 0.0}
{max_latency_exceed 0} {out_of_seq_exceed 0} {min_latency 38.8} {avg_latency
2806.506} {max_latency 45860.56} {min_jitter 0.0} {avg_jitter 0.0} {max_jitter
0.0}}} {100 {{iload 100.0} {oload 0.661} {throughput_percent 0.661}
{throughput_fps 196403.54} {throughput_mbps 20000.0} {frame_loss 0.0}
{max_latency_exceed 0} {out_of_seq_exceed 0} {min_latency 25.4} {avg_latency
2720.129} {max_latency 21321.22} {min_jitter 0.0} {avg_jitter 0.0} {max_jitter
0.0}}}}}}}}}}}}}}} {status 1}

rfc2544 asymmetric config

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

Spirent Extension (for Spirent HLTAPI only).

Creates, modifies, or deletes an asymmetric performance test, which can be a a frame loss test, a latency test, or a throughput test.

The Asymmetric Performance Test uses a series of simple screens to configure RFC 2544 benchmark tests. Vendors use a benchmark test to measure and report the performance characteristics of a system under test (SUT). A user can then evaluate network devices from different vendors by comparing the benchmark test results.

Synopsis:

Note: M indicates the argument is `Mandatory`.

    rfc2544 asymmetric config
      mode= {create|modify|delete}  M
      handle= <test_handle>
      streamblock_handle= <handle>
      test_type= { fl|latency|throughput}
      upstream_port= <port_handle>
      downstream_port= <port_handle>
      upstream_endpoint= <handle>
      downstream_endpoint= <handle>
      endpoint_creation= {0|1}
      device_count= <integer>
      mac_addr= <aa:bb:cc:dd:ee:ff>
      port_mac_step= <aa:bb:cc:dd:ee:ff>
      device_mac_step= <aa:bb:cc:dd:ee:ff>
      traffic_pattern= {pair|mesh|backbone}
      vlan= <integer>
      port_vlan_step= <integer>
      device_vlan_step=  <integer>
      vlan_priority= <1-7>
      ipv4_addr= <a.b.c.d>
      port_ipv4_addr_step= <a.b.c.d>
      device_ipv4_addr_step= <a.b.c.d>
      ipv4_gateway= <a.b.c.d>
      port_ipv4_gateway_step= <a.b.c.d>
      ipv4_prefix_len= <1-32>
      ipv6_addr= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
      ipv6_prefix_len= <1-128>
      port_ipv6_addr_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
      device_ipv6_addr_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
      ipv6_gateway= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
      port_ipv6_gateway_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
      qos= <string>
      latency_type= {LILO|LIFO|FIFO}
      start_traffic_delay=  <0-3600>
      stagger_start_delay= <0-65>
      delay_after_transmission= <0-3600>
      enable_learning= {0|1}
      learning_mode= {l2|l3}
      learning_frequency= {learn_once learn_every_trial|learn_every_frame_size|
                             learn_every_iteration}]
      learning_rate= <integer>
      l2_learning_repeat_count= <1-100>
      l3_learning_retry_count= <1-100>
      l3_rate= <1-148809>
      l3_delay_before_learning= <0-3600>
      enable_cyclic_resolution= {0|1}
      iteration_count= <integer>
      test_duration_mode= {seconds|bursts}
      test_duration= <integer>
      frame_size_mode= {custom|random|step|imix}
      frame_size= <integer>
      frame_size_start= <integer>
      frame_size_end= <integer>
      frame_size_step= <integer>
      frame_size_min= <integer>
      frame_size_max= <integer>
      frame_size_imix= <string>
      load_unit= {bits_per_second|frames_per_second|inter_burst_gap|
                 kilobits_per_second|megabits_per_second|percent_line_rate}]
      load_type= {custom|random|step}
      load_list= <integer>
      load_start= <integer>
      load_end= <integer>
      load_step= <integer>
      load_min= <integer>
      load_max= <integer>
      enable_jitter_measure= {0|1}
      enable_detailed_results= {0|1}
      use_existing_streamblocks= {true|false}
      search_mode= {binary|step|combo}
      rate_lower_limit= <integer>
      rate_upper_limit= <integer>
      initial_rate= <integer>
      rate_step= <integer>
      resolution= <integer>
      ignore_limit= {0|1}
      out_of_seq_threshold= <integer>
      max_latency_threshold= <integer>
      enable_latency_threshold= {0|1}
      traffic_config_mode= {auto|manual}
      traffic_connectivity= {full|pair}
      traffic_devices= {all|edge}
      traffic_flow= {bidirectional|downstream_to_upstream|upstream_to_downstream}
      profile_config_mode= {manual|per_port|per_side|per_group}
      load_spec_mode= {per_port|per_streamblock}
      profile_rate_mode= {per_test|per_frame_size}
      downstream_traffic_ip_tos= <integer>
      downstream_traffic_vlan_priority= <integer>
      upstream_traffic_ip_tos= <integer>
      upstream_traffic_vlan_priority= <integer>
      ip_next_protocol_id= <integer>
      ttl= <NUMERIC>
      asymmetric_traffic_backoff_mode= {all_rates|failed_rates}
      back_off= <integer>
      latency_distribution_list= <integer>
      enable_traffic_verification= {true|false}
      traffic_verification_freq_mode= {verify_every_trial|
                           verify_every_frame_size|verify_every_iteration}]
      traffic_verification_abort_on_fail= {true|false}
      traffic_verification_tx_frame_count= <1-32767>
      traffic_verification_tx_frame_rate= <1-14880952>

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 an asymmetric performance test

                 modify   Modifies the configuration for the created test

                 delete   Deletes the created test

test_type
                Specifies the test type. Possible values are::


                 throughput     The test determines the maximum forwarding rate at
                                which the DUT/SUT can forward traffic without
                                frame loss (or with a userspecified acceptable
                                frame loss)

                 frameloss       The test determines the frame loss ratio of a
                                 DUT/SUT for a range of loads (transmission
                                 rates) and frame sizes

                 latency        The test measures the minimum, maximum, and average
                                latency of the DUT/SUT for a range of frame
                                sizes and loads

handle
                Specifies the test configuration handle returned by the function.
                This argument is required when mode is set to modify or delete.

streamblock_handle
                Indicates the existing streams used for the test. The trial will
                use the provided streamblocks to do the test. The value of this
                argument can be a stream or a list of streams.

upstream_port
                Specifies the upstream ports for port grouping

downstream_port
                Specifies the downstream ports for port grouping

upstream_endpoint
                Defines the source port to be used for stream creation. This
                argument is available when endpoint_creation is set to 1.

downstream_endpoint
                Defines the destination port to be used for stream creation.
                This argument is available when endpoint_creation is set to
                1.

endpoint_creation
                Determines whether to create new endpoints on the ports
                specified by upstream_endpoint and -downstream_endpoint.
                The endpoints are used to create new streams in the test.
                Possible values are 0 and 1. When it is set to 1, Spirent
                HLTAPI creates new endpoints on the specifed source port and
                destination port. You must specify upstream_endpoint and
                downstream_endpoint when the value is 1.

device_count
                Specifies the number of devices you can create on each port.
                The default value is 1. This argument is available when
                endpoint_creation is set to 1.

mac_addr
                Specifies the starting MAC address to use when emulating
                devices. This argument is available when endpoint_creation
                is set to 1.

port_mac_step
                Specifies the step value for incrementing MAC addresses
                across ports. This argument is available when
                endpoint_creation is set to 1.

device_mac_step
                Specifies the step value for incrementing MAC addresses
                across devices on one port. This argument is available when
                endpoint_creation is set to 1. The value must be in MAC
                format.

traffic_pattern
                Specifies the traffic pattern to be used for the test.
                Possible values are::


                 pair     Traffic is transmitted between one or more port pairs.
                          The ports to use is specified by the src_endpoints
                          option and the dst_endpoints option.

                 mesh     Every port transmits traffic to every other port and
                          receives traffic from all other ports simultaneously.
                          src_endpoints and -dst_endpoints are the endpoints to
                          be included in the fully meshed network.

                 backbone   Traffic is transmitted in a partially meshed pattern,
                           either unidirectional or bidirectional.
                           src_endpoints and -dst_endpoints are the endpoints
                           to be included in the backbone network.

vlan
                Specifies the VLAN ID for the first device. This argument is
                available when endpoint_creation is set to 1.

port_vlan_step
                Specifies the step value to be used for incrementing VLAN IDs
                across ports. This argument is available when endpoint_creation
                is set to 1.

device_vlan_step
                Specifies the step value for incrementing VLAN IDs across the
                devices on one port. This argument is available when
                endpoint_creation is set to 1.

vlan_priority
                Specifies the VLAN priority for created devices. Possible values
                range from 1 to 7. This argument is available when
                endpoint_creation is set to 1.

ipv4_addr
                Specifies the first IPv4 address when emulating devices. This
                argument is available when endpoint_creation is set to 1.

port_ipv4_addr_step
                Specifies the step value to be used for incrementing IPv4
                addresses across ports. This argument is available when
                endpoint_creation is set to 1.

device_ipv4_addr_step
                Specifies the step value for incrementing IPv4 addresses across
                devices on one port. This argument is available when
                endpoint_creation is set to 1.

ipv4_gateway
                Specifies the IPv4 gateway address for the first device. This
                argument is available when endpoint_creation is set to 1. The
                value must be in IPv4 format.

port_ipv4_gateway_step
                Specifies the step value for incrementing IPv4 gateway
                addresses across ports. This argument is available when
                endpoint_creation is set to 1.

ipv4_prefix_len
                Specifies the IPv4 prefix length for created devices. Possible
                values range from 0 to 32. This argument is available when
                endpoint_creation is set to 1.

ipv6_addr
                Specifies the first IPv6 address when creating devices. This
                argument is available when endpoint_creation is set to 1.

ipv6_prefix_len
                Specifies the IPv6 prefix length for created devices. This
                argument is available when endpoint_creation is set to 1.
                Possible values range from 0 to 128.

port_ipv6_addr_step
                Specifies the step size for incrementing IPv6
                addresses across ports. This argument is available when
                endpoint_creation is set to 1. The value must be in IPv6
                format.

device_ipv6_addr_step
                Specifies the step value for incrementing IPv6 addresses
                across devices on one port. This argument is available when
                endpoint_creation is set to 1. The value must be in IPv6
                format.

ipv6_gateway
                Defines the starting IPv6 gateway address when emulating
                devices. This argument is available when endpoint_creation
                is set to 1.

port_ipv6_gateway_step
                Specifies the step size for incrementing IPv6 gateway
                addresses across the port. This argument is available when
                endpoint_creation is set to 1.

QoS
                Specifies a list of Quality of Service (QoS) parameters. The
                default value is 0.

latency_type
                Specifies the latency calculation methods. Possible values are::


                 LILO   LastIn Last-Out latency. Calculates the latency as the
                        time interval from when the end of the frame is
                        transmitted from the source test port to when the
                        end of the frame is received at the destination test port.

                 LIFO   LastIn First-Out latency. Calculates the latency as
                        the time interval from when the last bit of the input
                        frame reaches the test destination port to when the
                        first bit of the output frame reaches the test destination
                        port.

                 FIFO   FirstIn First-Out latency. Calculates the latency
                        as the time interval from when the first bit
                        of the input frame reaches the test destination
                        port to when the first bit of the output frame
                        reaches at the test destination port.

                The default value is LILO.

start_traffic_delay
                Specifies the delay in seconds before test traffic is
                transmitted. This delay occurs after the learning period,
                when test frames are sent to determine whether the DUT/SUT
                correctly forwards frames to their destination. Possible
                values range from 0 to 3600. The default value is 2.

stagger_start_delay
                Specifies the delay, in microseconds, between each
                transmission. Possible values range from 0 to 65. The
                default value is 0.

delay_after_transmission
                Specifies the delay after transmission in seconds. Possible
                values range from 0 to 3600. The default value is 15.

enable_learning
                Enables or disables learning mode. Possible values are 0
                (disable) and 1 (enable). The default value is 1.

learning_mode
                Specifies the learning mode to be used. Possible values are l2
                (Layer 2 learning) and l3 (Layer 3 learning). The default value
                is l3.

learning_frequency
                Specifies the frequency for sending learning frames.
                Possible values are::


                 learn_once             Sends learning frames once before the
                                        test starts

                 learn_every_trial      Sends learning frames before each trial
                                        begins

                 learn_every_frame_size  Sends learning frames upon each iteration
                                         in frame size

                 learn_every_iteration   Sends learning frames before each
                                         iteration begins

                The default value is learn_once.

learning_rate
                Specifies the learning rate, in frames per second, at which
                learning frames are sent to the SUT. This argument is
                available when learning_mode is set to l2.

l3_learning_retry_count
                Specifies the number of Layer 3 learning retries if
                transmission, learning verification, or link errors occur.
                Possible values range from 1 to 100. The default value is 5.
                This argument is available when learning_mode is set to l3.

l2_learning_repeat_count
                Specifies the number of Layer 2 learning retries if
                transmission, learning verification, or link errors occur.
                Possible values range from 1 to 100. The default value is 5.
                This argument is available when learning_mode is set to l2.

enable_cyclic_resolution
                Enables or disables Layer 3 cyclic address resolution.
                Possible values are 0 (disable) and 1 (enable). The default
                value is 1. This argument is available when learning_mode
                is set to l3.

iteration_count
                Specifies the number of times the test repeats with its initial
                configuration. Possible values range from 1 to 60. The default
                value is 1.

test_duration_mode
                Specifies the duration mode for each transmitted stream.
                Possible values are described below::


                  seconds    Each trial lasts for the number of seconds specified
                             by the test_duration argument

                  bursts    Each trial lasts for the number of bursts specified
                             by the test_duration argument

                The default seconds.

test_duration
                Indicates the transmission length of the test. When you specify
                test_duration_mode seconds, the unit is seconds, and the
                default value is 60. When you specify test_duration_mode
                bursts, the unit is the number of frames, and the default value is
                1000.

frame_size_mode
                Specifies how frame sizes are set and varied through
                successive test trials. Possible values are custom,
                random, step, and imix. The default value is custom.
                The modes are described below::


                 custom   Specifies a list of frame sizes specified by the
                          frame_size argument

                 random   Generates random frame sizes within the
                          range between the minimum size (frame_size_min)
                          and the maximum size (frame_size_max)

                 step   Increases the frame size for each trial from that of
                        the previous trial. Use frame_size_start,
                        frame_size_end, and frame_size_step together to generate
                        the frame size list for the test when the frame_size_mode
                        is set to step

                 imix   Specifies a list of frame sizes specified by the
                        frame_size_imix argument

frame_size
                Defines the frame size (in bytes) list for the test when you
                specify frame_size_mode custom.

frame_size_start
                Specifies the frame size (in bytes) for the first test trial
                when frame_size_mode is set to step. The default value is 128.

frame_size_end
                Specifies the maximum frame size (in bytes) for the test when
                frame_size_mode is set to step. The default value is 256.

frame_size_step
                Specifies the frame size increment in bytes when frame_size_mode
                is set to step. The default value is 128.

frame_size_min
                Specifies the minimum frame size in bytes when frame_size_mode
                is set to random. The default value is 128.

frame_size_max
                Specifies the maximum frame size in bytes when frame_size_mode
                is set to random. The default value is 256.

frame_size_imix
                Defines a list of Internet Mix (iMIX) frame size distribution
                profiles when frame_size_mode is set to imix

load_unit
                Specifies the load unit to use. Possible values are
                bits_per_second, frames_per_second, inter_burst_gap,
                kilobits_per_second, megabits_per_second, and percent_line_rate.
                The default value is percent_line_rate.

load_type
                Specifies the method to vary the load size during the test.
                Possible values are custom, random, and step. The default
                value is custom. The types are described below: :


                custom
                            A list of the load sizes that are specified by the
                            load_list argument

                random
                            Random sizes between the minimum size specified by
                            the load_min argument and the maximum size specified
                            by the load_max argument

                step
                            Load sizes increase by the step value (load_step)
                            with each test iteration, beginning with the start
                            value (load_start) and increasing to the end value
                            (load_end)

load_list
                Defines a list of load sizes when load_type is set to custom

load_start
                Specifies the load size for the first test trial. The default
                value is 10. This argument is available when
                load_type is set to step.

load_end
                Specifies the maximum load value for the test trial. The
                default value is 50. This argument is available when
                load_type is set to step. Refer to load_type for more
                information.

load_step
                Specifies the difference between two load sizes when
                load_type is set to step. The default value is 10.

load_min
                Specifies the minimum load value for the test trial when
                load_type is set to random. The default value is 10.

load_max
                Specifies the maximum load value for the test trial when
                load_type is set to random. The default value is 50.

enable_jitter_measure
                Determines whether to run the test in Jitter mode or not.
                Possible values are 0 and 1. When it is set to 1, Spirent
                HLTAPI will measure the Jitter data. The default value is 0.

enable_detailed_results
                Enables or disables detailed results collection. Possible values
                are 0 (disable) and 1 (enable). The default value is 0.

use_existing_streamblocks
                When enabled, existing streamblocks will be used for the test.
                Possible values are true (enable) and false (disable).
                The default value is false.

search_mode
                Specifies the search mode. This argument is available when
                test_type is set to throughput. The modes are described
                below::


                  binary   The test searches for the throughput value using a
                           binary search algorithm

                  step     The test load increases with each iteration by the
                           percentage specified by rate_step

                  combo    The test begins with step mode and then switches
                           to binary mode when an iteration fails

                The default value is binary.

rate_lower_limit
                Specifies the lower limit of the load rate for binary search
                on each port. The default value is 1. This argument is
                available when test_type is set to throughput and
                search_mode is set to binary.

rate_upper_limit
                Specifies the maximum load rate for each port. The default
                value is 100. This argument is available when test_type is
                set to throughput.

initial_rate
                Specifies the starting load rate for each port. The default
                value is 10. This argument is available when test_type is
                set to
                throughput.

rate_step
                Specifies the amount that the load increases from iteration
                to iteration. The default value is 10. This argument is
                available when test_type is set to throughput and
                 search_mode is set to step.

resolution
                Defines the finest adjustment possible in a load from
                iteration to iteration. If the required adjustment to the
                current load for the next iteration is less than the value,
                the search stops. This argument is available when
                search_mode is binary or combo. The default value is 1.

ignore_limit
                When enabled, Spirent HLTAPI will ignore the limit specified
                by rate_lower_limit or rate_upper_limit, and continues the
                search until an acceptable load is found. Possible values
                are 0 (disable) and 1 (enable). The default value is 0. This
                argument is available when test_type is set to throughput
                and search_mode is set to binary or combo.

out_of_seq_threshold
                Specifies the number of outoforder frames on each receive
                port that, if exceeded, causes the test iteration to fail.
                The default is 0. This argument is available when test_type
                is set to throughput and enable_latency_threshold is set to
                1.

max_latency_threshold
                Specifies the maximum latency (in microseconds) for all
                average latencies determined on each receive port in the
                test. If the threshold is reached, then the test trial
                fails. The default value is 30. This argument is available
                when test_type is set to throughput and
                enable_latency_threshold is set to 1.

enable_latency_threshold
                Enables or disables the use of maximum latency. Possible
                values are 0 (disable) and 1 (enable). The default value is
                0. This argument is available whentest_type is set to
                throughput

traffic_config_mode
                Specifies the traffic configuration mode. Possible values
                are::


                  auto      Creates streamblocks automatically
                  manual    Creates streamblocks manually

                The default value is auto.

traffic_connectivity
                Specifies the connectivity of traffic between devices/ports.
                Possible values are::


                 full     Traffic is sent from each host to all hosts on the
                          opposite side

                 pair     Traffic is sent between pairs of hosts on opposite
                          sides

                The default value is full.

traffic_devices
                Specifies the devices to be included for the traffic flow.
                Possible values are::


                  ALL    All devices
                  EDGE   Only edge devices

                The default value is EDGE.

traffic_flow
                Specifies the flow direction of traffic. Possible values are
                bidirectional, downstream_to_upstream, and
                upstream_to_downstream. The default value is bidirectional.

profile_config_mode
                Determines how the profiles are allocated for the streamblocks.
                Possible values are::


                  manual       Create streamblocks and edit the profiles
                  per_port     One profile per port is generated
                  per_side     One profile per side is generated
                  per_group    One profile per defined group is generated

                The default value is per_port.

load_spec_mode
                Determines the scope for specifying and adjusting the traffic
                rate. Possible values are per_port and per_streamblock. The
                default value is per_port.

profile_rate_mode
                Specifies the profile load usage.
                Possible values are per_test and per_frame_size.
                The default value is per_test.

downstream_traffic_ip_tos
                Specifies the downstream IP ToS value as an integer.
                The default value is 0.

downstream_traffic_vlan_priority
                Specifies the downstream traffic VLAN priority as an integer.
                The default value is 0.

upstream_traffic_ip_tos
                Specifies the upstream IP ToS value as an integer.
                The default value is 0.

upstream_traffic_vlan_priority
                Specifies the upstream traffic VLAN priority as an integer.
                The default value is 0.

ip_next_protocol_id
                Specifies a list of IP Next Protocol IDs.
                The default value is 0.

ttl
                Specifies the TTL value used in the IP packet header. The
                default value is 10.

asymmetric_traffic_backoff_mode
                Determines how traffic is scaled down when loss is detected.
                Possible values are::


                  all_rates        When loss is detected, back off rates on
                                   all streams

                  failed_rates     When loss is detected, back off rates on
                                   streams experiencing loss

                The default value is failed_rates.

l3_rate
                Specifies the Layer 3 rate (in frames per second) to send ARP
                requests. The default value is 1000.

l3_delay_before_learning
                Specifies the time (in seconds) to wait before learning starts in
                seconds. Possible values range from 0 to 3600. The default value
                is 2.

enable_traffic_verification
                When enabled, verification commands will be added to the test
                sequence. Possible values are true and false. The default value
                is false.

traffic_verification_freq_mode
                Specifies when to perform traffic verification during the test.
                Possible values are verify_every_trial, verify_every_frame_size,
                and verify_every_iteration. The default value is
                verify_every_iteration.

traffic_verification_abort_on_fail
                Specifies the test behavior when traffic verification fails.
                Possible values are true and false. When set to true, Spirent
                HLTAPI stops the test if a fail result is detected on any port or
                stream. The default value is true.

traffic_verification_tx_frame_count
                Specifies the number of frames to send from each port for traffic
                verification. Possible values range from 0 to 32767. The default
                value is 100.

traffic_verification_tx_frame_rate
                Specifies the traffic rate in frames per second to use for
                verification. Possible values range from 0 to 14880952. The default
                value is 100.

back_off
                Specifies the rate at which the load decreases after the DUT
                fails at the current load. This argument is applicable when
                search_mode is binary or combo. The default value is 50.


latency_distribution_list
                Specifies a list of latency values (in microseconds)
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 test instance
status      Success (1) or failure (0) of the operation
log         An error message (if the operation failed)

Description:

The rfc2544 asymmetric config function creates, modifies, or deletes an asymmetric performance test, which can be a frame loss test, a latency test, or a throughput test. Use the mode argument to specify the action to perform. (See the mode argument description for information about the actions.)

After the test has been configured, a handle is created, which can be used to modify the created test. (See the mode argument description for more information).

Examples:

The following example creates an asymmetric performance test:

rfc2544 asymmetric config mode=create
            test_type= throughput
            traffic_config_mode= AUTO
            endpoint_creation= 0
            upstream_port= port2
            downstream_port= port1
            frame_size_mode= custom
            frame_size= {64}
            iteration_count= 1
            ttl= 14
            downstream_traffic_ip_tos= 17
            load_spec_mode= PER_STREAMBLOCK
            rate_lower_limit= 20
            rate_upper_limit= 22
            initial_rate= 21
            profile_config_mode= PER_SIDE]

Sample Output:

{status 1} {handle rfc2544throughputconfig2}

End of Procedure Header

rfc2544 asymmetric control

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

Purpose:

Spirent Extension (for Spirent HLTAPI only).

Starts or stops the specified asymmetric performance test

Synopsis:

Note: M indicates the argument is `Mandatory`.

     rfc2544 asymmetric control
       action= {run|stop} M
       wait= {0|1}
       cleanup= {0|1}

Arguments:

action
                Specifies the action to perform for the test. Possible
                values are run and stop. The modes are described below::


                  run     Starts the test
                  stop    Stops the test


wait
                Determines whether this command will return only when the
                test is completed. Possible values are 0 and 1. The default
                value is 1. When it is set to 1, the command will return
                only when the test is completed.

cleanup
                Determines whether to delete the current test instance after
                the test is completed. Possible values are 0 and 1. The
                default value is 1. When it is set to 1, the current test
                instance will be deleted after the test is completed.
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 or $FAILURE log Error message if command returns {status 0}
Description:
The rfc2544 asymmetric control function controls the starting and stopping of the test.
Examples:

Sample Input:

set ret rfc2544 asymmetric control action=run wait 1

Sample Output:

{status 1}

End of Procedure Header

rfc2544 asymmetric profile

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

Purpose:

Spirent Extension (for Spirent HLTAPI only).

Creates, modifies, or deletes the test profile for a specified RFC 2544 asymmetric performance test

Synopsis:

Note: M indicates the argument is `Mandatory`.
     rfc2544 asymmetric profile
        mode= {create|modify|delete} M
        test_handle= <test_handle>
        profile_handle= <profile_handle>
        profile_name= <string>
        streamblock_handle= <handle>
        load_spec_mode= {per_port|per_streamblock}
        load_units= {percent_line_rate|frames_per_second|megabits_per_second
                         |kilobits_per_second|bits_per_second}]
        profile_rate_mode= {per_test|per_frame_size}
        acceptable_frame_loss= <0-100>
        back_off= <0.001-99.999>
        enable_latency_threshold= {0|1}
        enable_seq_threshold= {0|1}
        ignore_limit= {0|1}
        max_latency_threshold= <integer>
        out_of_seq_threshold= <integer>
        initial_rate= <integer>
        custom_load_list= <integer>
        frame_length_distribution= <handle>
        frame_size= <0-16383>
        load_start= <integer>
        load_end= <integer>
        load_step= <integer>
        random_max_load= <integer>
        random_min_load= <integer>
        rate_lower_limit= <integer>
        rate_upper_limit= <integer>
        rate_step= <integer>
        resolution= <integer>
        search_mode= {binary|step|combo}

Arguments:

test_handle
                Specifies the RFC 2544 asymmetric test handle returned by
                the ``rfc2544 asymmetric config`` function. This argument
                is required for mode create.

profile_handle
                Specifies the profile handle created when
                profile_config_mode is set to MANUAL in the
                ``rfc2544 asymmetric config`` function. This argument is
                required for mode modify and delete.

mode
                Specifies the action to perform. This argument is `Mandatory`.
                The modes are described below::


                 create     Creates a new test profile under the test handle
                            specified by test_handle

                 modify     Modifies the test profile specified by
                            profile_handle

                 delete     Deletes the test profile specified by
                            profile_handle

profile_name
                Specifies the profile name. The default value is "".

streamblock_handle
                Indicates the existing streams binding for the profile.
                The trial will use the provided streamblock to do the test.
                The value of this argument can be a stream, but cannot be a list of streams.

load_spec_mode
                Determines the scope for specifying and adjusting the
                traffic rate. Possible values are per_port and
                per_streamblock. The default value is per_port.

load_units
                Specifies the load unit to apply to all ports and streams
                in the test. Possible values are bits_per_second,
                frames_per_second, inter_burst_gap, kilobits_per_second,
                megabits_per_second, and percent_line_rate. The default
                value is percent_line_rate.

profile_rate_mode::

                Specifies the profile load usage. Possible values are
                PER_TEST and PER_FRAME_SIZE. The default value is PER_TEST.

acceptable_frame_loss
                 Specifies the maximum number of frames that can be lost
                 during an iteration. Possible values range from 0 to 100.
                 The default value is 0.

back_off
                Specifies the rate at which the load decreases after the DUT
                fails at the current load. This argument is available when
                search_mode is binary or combo. The default value is 50.

enable_latency_threshold
                Enables or disables the use of maximum latency. Possible
                values are 0 (disable) and 1 (enable). The default value is
                0.

enable_seq_threshold
                Enables or disables the use of outof-sequence threshold,
                which, if exceeded, causes the test iteration to fail.
                Possible values are 0 (disable) and 1 (enable). The default
                value is 0.

ignore_limit
                Specifies whether the search stops at the value specified by
                rate_lower_limit or rate_upper_limit, or continues beyond
                those limits, if an acceptable load has not been found.
                Possible values are 0 and 1. The default is 0. You can
                specify this argument when search_mode is set to binary or
                combo.

max_latency_threshold
                Specifies the maximum latency (in microseconds) of the
                average latencies determined on each receive port in the
                test. If the threshold is reached, the test trial fails. The
                default value is 30. This argument is available when
                enable_latency_threshold is set to 1.

out_of_seq_threshold
                Specifies the number of outoforder frames on each receive
                port which, if exceeded, causes the test iteration to fail.
                The default is 0. This argument is available when
                enable_latency_threshold is set to 1.

initial_rate
                Indicates the starting load rate for each port. The default
                is 10.

custom_load_list
                Specifies a list of custom loads used in the test. This
                argument is available when load_type is set to custom in
                the rfc2544_asymmetric_config function. The default value is
                0.

frame_length_distribution
                Specifies the handle of the iMIX distribution when frame size
                type is iMIX. The default value is 0.

frame_size
                Specifies the frame size. Possible values range from 0 to
                16383. The default value is 0.


load_start
                Specifies the load size for the first test trial. The default
                value is 10. This argument is available when load_type is
                set to step in the rfc2544_asymmetric_config function.

load_end
                Specifies the maximum load value for the test trial. The
                default value is 100. This argument is available when
                load_type is set to step in the rfc2544_asymmetric_config
                function. Refer to load_type for more information.

load_step
                Specifies the difference between two load sizes. This
                argument is available when load_type is set to step in the
                rfc2544_asymmetric_config function. The default value is 10.

random_max_load
                Specifies the maximum load at any random point during the
                test. This argument is available when load_type is set to
                random in the rfc2544_asymmetric_config function. The
                default value is 50.

random_min_load
                Specifies the minimum load at any random point during the
                test. This argument is available when load_type is set to
                random in the rfc2544_asymmetric_config function. The
                default value is 10.

rate_lower_limit
                Specifies the lower limit of the load rate for each port
                when using the binary search. The default value is 1. This
                argument is available when search_mode is set to binary.

rate_upper_limit
                Specifies the maximum load rate for each port. The default
                value is 100.

rate_step
                Specifies the amount that the load increases from iteration
                to iteration. The default value is 10. This argument is
                available when search_mode is step.

resolution
                Defines the finest adjustment possible in the load from
                iteration to iteration. If the required adjustment to the
                current load for the next iteration is less than the value,
                the search stops. This argument is available when
                search_mode is binary or combo. The default value is 1.

search_mode
                Specifies the search mode. Possible values are binary, step,
                and combo. The default value is binary. The modes are described
                below::


                 binary     The test searches using a binary search algorithm

                 step       The test load increases with each iteration by the
                            percentage specified by rate_step

                 combo      The test begins with step mode and then switches
                            to binary mode when an iteration fails
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 test instance
status      Success (1) or failure (0) of the operation
log         An error message (if the operation failed)
Examples:

To create an asymmetric test profile:

set returnedString [rfc2544 asymmetric profile mode=create
                 test_handle= rfc2544framelossconfig1
                 profile_name= rfc_asymmetric123
                 load_units= FRAMES_PER_SECOND
                 ]

Sample Output:

{status 1} {handle rfc2544framelossprofile1}

To modify an asymmetric test profile:

set returnedString [rfc2544 asymmetric profile mode=modify
                  profile_handle= rfc2544framelossprofile1
                  profile_name= rfc_asymmetric
                  load_units= FRAMES_PER_SECOND
  ]

Sample Output:

{status 1}

End of Procedure Header

rfc2544 asymmetric stats

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

Purpose:
Retrieves statistics for the asymmetric performance test

Synopsis:

Note: M indicates the argument is `Mandatory`.
      rfc2544 asymmetric stats
           test_type= {fl|latency|throughput} M
           clear_result= {0|1}

Arguments:

test_type
                Specifies the type of the test from which to retrieve
                information. This argument is `Mandatory`. Possible values are
                fl (frame loss), latency, and throughput.

clear_result
                Determines whether to clear results after the data is
                retrieved. Possible values are 0 and 1. When it is set to 1,
                results will be cleared after the data is retrieved. The
                default is 0.
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 or $FAILURE log Error message if command returns {status 0}

statistics list    Specifies a list of RFC 2544 asymmetric performance statistics

Frame Loss Results:

Per Load

Trialnum                   Number of the current trial
Framesize                  Frame size
IntendedLoad               Number of frames per second that the application attempts
                           to transmit to a DUT/SUT for forwarding to a specified
                           output interface or interfaces
Framesizetype              Frame size type
Framelengthdistribution    iMIX distribution
MinLatency                 Minimum latency measured in microseconds
AvgLatency                 Maximum latency measured in microseconds
MaxLatency                 Maximum latency measured in microseconds
MinJitter                  Minimum jitter measured in microseconds
AvgJitter                  Average jitter measured in microseconds
Txsigframecount            Total number of signature frames transmitted during a test
Rxsigframecount            Total number of signature frames received during a test
IterationNum               Trial number
OfferedLoad                Load (in percent or frames per second) offered by the DUT
RxFrameCount               Number of frames received
TxFrameCount               Number of frames transmitted
TxFrameRate                Intended frame rate (ILoad) for the test
TxBitRate                  Rate at which bits are transmitted
FrameLoss                  Number of frames lost
PercentLoss                Frame loss percentage
LoadIterationNum           Load iteration number
Result                     Iteration result indicating if the traffic at the
                           specified rate satisfied the pass condition for throughput
LoadResult                 Load Result

Per Stream Group

Duration                   Scalar value of duration
FrameSize                  Frame size
FrameSizeType              Frame size type
IterationNum               Trial number
LoadIterationNum           Load iteration number

Per Stream

LoadPassed                 Flag to indicate all the frames for the configured
                           load value were received successfully
LoadResult                 Load Result
Result                     Iteration result indicating if the traffic at the
                           specified rate satisfied the pass condition for throughput
RxFrameCount               Number of frames received
TxFrameCount               Number of frames transmitted
StreamBlockHnd             Source emulated device handle

Throughput Results:

 Per Frame Size

 Trialnum                   Number of the current trial
 Framesize                  Frame size
 Framesizetype              Frame size type
 Framelengthdistribution    iMIX distribution
 IntendedLoad               Number of frames per second that the
                            application attempts to transmit to a
                            DUT/SUT for forwarding to a specified
                            output interface or interfaces
 OfferedLoad                Load (in percent or frames per second) offered by the DUT
 ThroughputRate             Throughput rate
 ForwardingRate             Number of frames per second that a device can be
                            observed to successfully transmit to the correct destination
                            interface in response to a specified offered load
 MbpsLineRate               Offered load (OLoad) in megabits per second
 PercentLoss                Frame loss percentage
 MaxLatencyThresholdExceeded  Flag to indicate whether the maximum latency threshold has
                              been exceeded
 OutOfSeqThresholdExceeded  Flag to indicate whether the out of sequence frames
                            threshold has been exceeded
 MinLatency                 Minimum measured latency value in the set of all
                            measured latency values in microseconds
 AvgLatency                 Average latency value calculated from all measured
                            latency values in microseconds
 MaxLatency                 Maximum measured latency value in the set of all
                            measured latency values in microseconds
 MinJitter:                 Minimum measured jitter value in the set of all
                            measured jitter values in microseconds
 AvgJitter                  Average jitter value calculated from all measured
                            jitter values in microseconds
 MaxJitter                  Maximum measured jitter value in the set of all
                            measured jitter values in microseconds.
 RxFrameCount               Number of frames received
 TxFrameCount               Number of frames transmitted
 TxFrameRate                Intended frame rate (ILoad) for the test
 TxBitRate                  Rate at which bits are transmitted
 FrameLoss                  Number of frames lost
 BestLoadIterationNum       Best load iteration number
 Result                     Iteration result indicating if the traffic at the
                            specified rate satisfied the pass condition for throughput
 LoadResult                 Load Result

Per Stream Group

Duration                    Scalar value of duration
FrameLengthDistribution     iMIX distribution
FrameSize                   Frame size
FrameSizeType               Frame size type
IterationNum                Trial number been run

Per Stream

LoadPassed                  Flag to indicate all the frames for the configured
                            load value were received successfully
LoadResult                  Load result
Result                      Iteration result indicating if the traffic at the
                            specified rate satisfied the pass condition for throughput
RxFrameCount                Number of frames received
TxFrameCount                Number of frames transmitted
StreamBlockHnd              Streamblock handle

Per System

iMIXDistribution            iMIX Distribution configuration
PortGroup                   Port group value
PortLineRate                Iteration result indicating if the traffic at the
                            specified rate satisfied the pass condition for throughput
IntendedLoad                Number of frames per second that the application
                            attempts to transmit to a DUT/SUT for forwarding to
                            a specified output interface or interfaces
OfferedLoad                 Load (measured in percent of frames per second)) offered by the DUT
Throughput                  Measured throughput value for the test
TheoreticalMaxLineRate      Theoretical maximum line rates

Latency Results::


Per Load

TrialNum                    Number of the current trial
FrameSize                   Frame size
IntendedLoad                Number of frames per second that the application
                            attempts to transmit to a DUT/SUT for forwarding to
                            a specified output interface or interfaces
FrameSizeType               Frame size type
FrameLengthDistribution     iMIX distribution
MinLatency                  Minimum latency measured in microseconds
AvgLatency                  Average latency measured in microseconds
MaxLatency                  Maximum latency measured in microseconds
MinJitter                   Minimum jitter measured in microseconds
AvgJitter                   Average jitter measured in microseconds
MaxJitter                   Maximum jitter measured in microseconds
Txsigframecount             Total signature frames transmitted during a test
Rxsigframecount             Total signature frames received during a test
IterationNum                Trial number
OfferedLoad                 Load (in percent or frames per second) offered by the DUT
RxFrameCount                Number of frames received
TxFrameCount                Number of frames transmitted
TxFrameRate                 Intended frame rate (ILoad) for the test
TxBitRate                   Rate at which bits are transmitted
FrameLoss                   Number of frames lost
PercentLoss                 Frame loss percentage
LoadIterationNum            Load iteration number
Result                      Iteration result indicating if the traffic at the
                            specified rate satisfied the pass condition for throughput
LoadResult                  Load Result

Per Stream Group

Duration                    Scalar value of duration
FrameLengthDistribution     iMIX distribution
FrameSize                   Frame size
FrameSizeType               Frame size type
IterationNum                Trial number
LoadIterationNum            Load iteration number

Per Stream

AvgJitter                   Average jitter measured in microseconds
LoadPassed                  Flag to indicate all the frames for the configured
                            load value were received successfully
LoadResult                  Load Result
MaxJitter                   Maximum jitter measured in microseconds
MaxLatency                  Maximum latency measured in microseconds
MinJitter                   Minimum jitter measured in microseconds
MinLatency                  Minimum latency measured in microseconds
Result                      Iteration result indicating if the traffic at the
                            specified rate satisfied the pass condition for throughput
RxFrameCount                Number of frames received
TxFrameCount                Number of frames transmitted
StreamBlockHnd              Streamblock handles
TotalJitter                 Total jitter measured in microseconds
TotalLatency                Total latency measured in microseconds
Description:
The rfc2544 asymmetric stats function provides information about the configured asymmetric performance tests.

Examples:

Sample Input:

rfc2544 asymmetric stats test_type=fl clear_result 1

Sample Output:

{FrameLossPerLoadResult {{1 {{trial_num 0} {iteration_num 1} {frame_size
128.0} {intended_load 30.0} {frame_size_type Fixed} {frame_length_distribution
{}} {min_latency 48.22} {avg_latency 9611.20028728139} {max_latency 58506.26}
{min_jitter 0.0} {avg_jitter 0.0} {max_jitter 0.0} {tx_sig_frame_count 674949}
{rx_sig_frame_count 674948} {offered_load 2.66379872} {rx_frame_count 674948}
{tx_frame_count 674949} {tx_frame_rate 22498.3} {tx_bit_rate 23038259.2}
{frame_loss 1} {percent_loss 0.00014815934240957465} {load_iteration 1}
{result Failed} {load_result Failed}}}}} {FrameLossStreamGroupResult {{1
{{duration 30.0} {frame_size 128} {frame_size_type Fixed} {iteration_num 1}
{load_iteration_num 1}}}}} {FrameLossStreamResult {{1 {{load_passed 0}
{loadresult Failed} {result Failed} {rx_frame_count 674948} {tx_frame_count
674949} {streamblock_hnd 3240}}}}} {status 1}

Sample Input:

rfc2544 asymmetric stats test_type=latency clear_result 1

Sample Output:

{Rfc2544AsymmetricLatencyPerLoadResult {{1 {{trialNum 0} {iteration_num 1}
{frame_size 128.0} {intended_load 0.000592} {frame_size_type Fixed}
{frame_length_distribution {}} {min_latency 142.37} {avg_latency 252.69559}
{max_latency 14009.27} {min_jitter 0.32} {avg_jitter 67.55573} {max_jitter
13758.37} {tx_sig_frame_count 1000} {rx_sig_frame_count 1000} {offered_load
0.0} {rx_frame_count 1000} {tx_frame_count 1000} {tx_frame_rate 0.0}
{tx_bit_rate 0.0} {frame_loss 0} {percent_loss 0.0} {load_iteration 1} {result
Passed} {load_result Passed}}}}} {Rfc2544AsymmetricLatencyStreamGroupResult {{1
{{duration 0.0} {frame_length_distribution {}} {frame_size 128} {frame_size_type
Fixed} {iteration_num 1} {load_iteration_num 1}}}}}
{Rfc2544AsymmetricLatencyStreamResult {{1 {{avg_jitter 67.55573} {load_passed 1}
{load_result Passed} {max_jitter 13758.37} {max_latency 14009.27} {min_jitter 0.32}
{min_latency 142.37} {result Passed} {rx_frame_count 1000} {tx_frame_count 1000}
{streamblock_hnd 3226} {total_jitter 6755573.0} {total_latency 25269559.0}}}}}
{status 1}

Sample Input:

rfc2544 asymmetric stats test_type=throughput clear_result 1

Sample Output:

{Rfc2544AsymmetricThroughputPerFrameSizeResult {{1 {{trial_num 0} {frame_size 714.732}
    {frame_size_type iMIX} {frame_length_distribution {JMIX Downstream}} {intended_load
    0.001} {offered_load 0.0} {throughput_rate 0.0} {forwarding_rate 1.7623447726503956}
    {mbps_line_rate 0.0} {percent_loss 0.0} {max_latency_threshold_exceeded 0}
    {out_of_seq_threshold_exceeded 0} {min_latency 0.0} {avg_latency 0.0} {max_latency
    0.0} {min_jitter 0.0} {avg_jitter 0.0} {max_jitter 0.0} {rx_frame_count 1000}
    {tx_frame_count 1000} {tx_frame_rate 0.0} {tx_bit_rate 0.0} {frame_loss 0}
    {load_iteration_num 0} {result Failed} {load_result Passed}}} {2 {{trial_num 0}
    {frame_size 660.048} {frame_size_type iMIX} {frame_length_distribution {JMIX Downstream}}
    {intended_load 0.5} {offered_load 0.0} {throughput_rate 0.0} {forwarding_rate
    881.4168246606325} {mbps_line_rate 0.0} {percent_loss 0.0} {max_latency_threshold_exceeded
    1} {out_of_seq_threshold_exceeded 0} {min_latency 0.0} {avg_latency 0.0} {max_latency 0.0}
    {min_jitter 0.0} {avg_jitter 0.0} {max_jitter 0.0} {rx_frame_count 1000} {tx_frame_count
    1000} {tx_frame_rate 0.0} {tx_bit_rate 0.0} {frame_loss 0} {load_iteration_num 0} {result
    Failed} {load_result Failed}}}}} {Rfc2544AsymmetricThroughputStreamGroupResult {{1 {{duration
    0.0} {frame_length_distribution {JMIX Downstream}} {frame_size 0} {frame_size_type iMIX}
    {iteration_num 1}}}}} {Rfc2544AsymmetricThroughputStreamResult {{1 {{load_passed 1}
    {load_result Passed} {result Failed} {rx_frame_count 1000} {tx_frame_count 1000}
    {streamblock_hnd 3298}}} {2 {{load_passed 0} {load_result Failed} {result Failed}
    {rx_frame_count 1000} {tx_frame_count 1000} {streamblock_hnd 3301}}}}}
    {Rfc2544AsymmetricThroughputSystemResult {{1 {{imix_distribution {JMIX Downstream}}
    {port_group Downstream} {port_line_rate 1000.0} {intended_load 0.001} {offered_load
    0.0} {throughput 1.7623447726503956} {theoretical_max_line_rate 170130.0610290555}}}
    {2 {{imix_distribution {JMIX Downstream}} {port_group Upstream} {port_line_rate
    1000.0} {intended_load 0.5} {offered_load 0.0} {throughput 881.4168246606325}
    {theoretical_max_line_rate 183810.55454909065}}}}} {status 1}

End of Procedure Header