CSIT-169 IPv4 Scale - performance 13/1613/52
authorpmikus <pmikus@cisco.com>
Fri, 17 Jun 2016 07:08:08 +0000 (08:08 +0100)
committerMiroslav Miklus <mmiklus@cisco.com>
Thu, 28 Jul 2016 11:02:14 +0000 (11:02 +0000)
- Add libraries for ipv4 scale setup
- Add test cases for testing 10k/100k/1M fib entries
- Add t-rex profiles for large scale testing

Change-Id: If085e0d834e5ffe5538ba76756e8b9d0e8255cb2
Signed-off-by: pmikus <pmikus@cisco.com>
docs/tag_documentation.rst
resources/libraries/python/TrafficGenerator.py
resources/libraries/robot/performance.robot
resources/tools/t-rex/t-rex-stateless.py
tests/perf/Long_IPv4_Fib_200k_Intel-X520-DA2.robot [new file with mode: 0644]
tests/perf/Long_IPv4_Fib_20k_Intel-X520-DA2.robot [new file with mode: 0644]
tests/perf/Long_IPv4_Fib_2M_Intel-X520-DA2.robot [new file with mode: 0644]
tests/perf/Short_IPv4_Fib_200k_Intel-X520-DA2.robot [new file with mode: 0644]
tests/perf/Short_IPv4_Fib_20k_Intel-X520-DA2.robot [new file with mode: 0644]
tests/perf/Short_IPv4_Fib_2M_Intel-X520-DA2.robot [new file with mode: 0644]

index 1cb8147..de97c6c 100644 (file)
@@ -97,3 +97,15 @@ PDR
 NDR
     Non Drop Rate evaluation of results. Loss acceptance of dropped packets is
     set to zero lost packets.
 NDR
     Non Drop Rate evaluation of results. Loss acceptance of dropped packets is
     set to zero lost packets.
+
+Scaling TAGs
+------------
+
+FIB_20K
+    2x10,000 entries in single fib table
+
+FIB_200K
+    2x100,000 entries in single fib table
+
+FIB_2M
+    2x1,000,000 entries in single fib table
index 6f642c7..a640c1d 100644 (file)
@@ -346,6 +346,51 @@ class TrafficGenerator(object):
                                                     _p0, _p1, _async, _latency,
                                                     warmup_time),
                 timeout=int(duration)+60)
                                                     _p0, _p1, _async, _latency,
                                                     warmup_time),
                 timeout=int(duration)+60)
+        elif traffic_type in ["3-node-IPv4-dst-10000"]:
+            (ret, stdout, stderr) = ssh.exec_command(
+                "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+                "--duration={1} -r {2} -s {3} "
+                "--p{4}_src_start_ip 10.0.0.1 "
+                "--p{4}_dst_start_ip 20.0.0.0 "
+                "--p{4}_dst_end_ip 20.0.39.15 "
+                "--p{5}_src_start_ip 20.0.0.1 "
+                "--p{5}_dst_start_ip 10.0.0.0 "
+                "--p{5}_dst_end_ip 10.0.39.15 "
+                "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+                                                    duration, rate, framesize,
+                                                    _p0, _p1, _async, _latency,
+                                                    warmup_time),
+                timeout=int(duration)+60)
+        elif traffic_type in ["3-node-IPv4-dst-100000"]:
+            (ret, stdout, stderr) = ssh.exec_command(
+                "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+                "--duration={1} -r {2} -s {3} "
+                "--p{4}_src_start_ip 10.0.0.1 "
+                "--p{4}_dst_start_ip 20.0.0.0 "
+                "--p{4}_dst_end_ip 20.1.134.159 "
+                "--p{5}_src_start_ip 20.0.0.1 "
+                "--p{5}_dst_start_ip 10.0.0.0 "
+                "--p{5}_dst_end_ip 10.1.134.159 "
+                "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+                                                    duration, rate, framesize,
+                                                    _p0, _p1, _async, _latency,
+                                                    warmup_time),
+                timeout=int(duration)+60)
+        elif traffic_type in ["3-node-IPv4-dst-1000000"]:
+            (ret, stdout, stderr) = ssh.exec_command(
+                "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
+                "--duration={1} -r {2} -s {3} "
+                "--p{4}_src_start_ip 10.0.0.1 "
+                "--p{4}_dst_start_ip 20.0.0.0 "
+                "--p{4}_dst_end_ip 20.15.66.63 "
+                "--p{5}_src_start_ip 20.0.0.1 "
+                "--p{5}_dst_start_ip 10.0.0.0 "
+                "--p{5}_dst_end_ip 10.15.66.63 "
+                "{6} {7} --warmup_time={8}'".format(Constants.REMOTE_FW_DIR,
+                                                    duration, rate, framesize,
+                                                    _p0, _p1, _async, _latency,
+                                                    warmup_time),
+                timeout=int(duration)+60)
         elif traffic_type in ["3-node-IPv6"]:
             (ret, stdout, stderr) = ssh.exec_command(
                 "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
         elif traffic_type in ["3-node-IPv6"]:
             (ret, stdout, stderr) = ssh.exec_command(
                 "sh -c '{0}/resources/tools/t-rex/t-rex-stateless.py "
index f9fbfc7..78cdd8b 100644 (file)
 | | dut2_v4.set_route | 10.10.10.0 | 24 | 1.1.1.1 | ${dut2_if1}
 | | All Vpp Interfaces Ready Wait | ${nodes}
 
 | | dut2_v4.set_route | 10.10.10.0 | 24 | 1.1.1.1 | ${dut2_if1}
 | | All Vpp Interfaces Ready Wait | ${nodes}
 
+| Scale IPv4 forwarding initialized in a 3-node circular topology
+| | [Documentation]
+| | ... | Custom setup of IPv4 topology with scalability of ip routes on all
+| | ... | DUT nodes in 3-node circular topology
+| | ...
+| | ... | *Arguments:*
+| | ... | - ${count} - IP route count. Type: integer
+| | ...
+| | ... | *Return:*
+| | ... | - No value returned
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Scale IPv4 forwarding initialized in a 3-node circular topology \
+| | ... | \| 100000 \|
+| | [Arguments] | ${count}
+| | Set Interface State | ${dut1} | ${dut1_if1} | up
+| | Set Interface State | ${dut1} | ${dut1_if2} | up
+| | Set Interface State | ${dut2} | ${dut2_if1} | up
+| | Set Interface State | ${dut2} | ${dut2_if2} | up
+| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
+| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
+| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2}
+| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1}
+| | Add arp on dut | ${dut1} | ${dut1_if1} | 1.1.1.1 | ${tg1_if1_mac}
+| | Add arp on dut | ${dut1} | ${dut1_if2} | 2.2.2.2 | ${dut2_if1_mac}
+| | Add arp on dut | ${dut2} | ${dut2_if1} | 2.2.2.1 | ${dut1_if2_mac}
+| | Add arp on dut | ${dut2} | ${dut2_if2} | 3.3.3.1 | ${tg1_if2_mac}
+| | IP addresses are set on interfaces | ${dut1} | ${dut1_if1} | 1.1.1.2 | 30
+| | IP addresses are set on interfaces | ${dut1} | ${dut1_if2} | 2.2.2.1 | 30
+| | IP addresses are set on interfaces | ${dut2} | ${dut2_if1} | 2.2.2.2 | 30
+| | IP addresses are set on interfaces | ${dut2} | ${dut2_if2} | 3.3.3.2 | 30
+| | Vpp Route Add | ${dut1} | 10.0.0.0 | 32 | 1.1.1.1 | ${dut1_if1}
+| | ...           | count=${count}
+| | Vpp Route Add | ${dut1} | 20.0.0.0 | 32 | 2.2.2.2 | ${dut1_if2}
+| | ...           | count=${count}
+| | Vpp Route Add | ${dut2} | 10.0.0.0 | 32 | 2.2.2.1 | ${dut2_if1}
+| | ...           | count=${count}
+| | Vpp Route Add | ${dut2} | 20.0.0.0 | 32 | 3.3.3.1 | ${dut2_if2}
+| | ...           | count=${count}
+| | All Vpp Interfaces Ready Wait | ${nodes}
+
 | IPv6 forwarding initialized in a 3-node circular topology
 | | [Documentation]
 | | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular
 | IPv6 forwarding initialized in a 3-node circular topology
 | | [Documentation]
 | | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular
index 04f7a25..9ee34f6 100755 (executable)
@@ -194,29 +194,45 @@ def create_streams(traffic_options, frame_size=64):
     p2_src_end_ip = traffic_options['p2_src_end_ip']
     p2_dst_start_ip = traffic_options['p2_dst_start_ip']
 
     p2_src_end_ip = traffic_options['p2_src_end_ip']
     p2_dst_start_ip = traffic_options['p2_dst_start_ip']
 
+    p1_dst_end_ip = traffic_options['p1_dst_end_ip']
+    p2_dst_end_ip = traffic_options['p2_dst_end_ip']
+
     base_pkt_a = Ether()/IP(src=p1_src_start_ip, dst=p1_dst_start_ip, proto=61)
     base_pkt_b = Ether()/IP(src=p2_src_start_ip, dst=p2_dst_start_ip, proto=61)
 
     base_pkt_a = Ether()/IP(src=p1_src_start_ip, dst=p1_dst_start_ip, proto=61)
     base_pkt_b = Ether()/IP(src=p2_src_start_ip, dst=p2_dst_start_ip, proto=61)
 
-    # The following code applies raw instructions to packet (IP src increment).
-    # It splits the generated traffic by "ip_src" variable to cores and fix
-    # IPv4 header checksum.
-    vm1 = STLScVmRaw([STLVmFlowVar(name="src",
-                                   min_value=p1_src_start_ip,
-                                   max_value=p1_src_end_ip,
-                                   size=4, op="inc"),
-                      STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
-                      STLVmFixIpv4(offset="IP"),
-                     ], split_by_field="src")
-    # The following code applies raw instructions to packet (IP src increment).
-    # It splits the generated traffic by "ip_src" variable to cores and fix
-    # IPv4 header checksum.
-    vm2 = STLScVmRaw([STLVmFlowVar(name="src",
-                                   min_value=p2_src_start_ip,
-                                   max_value=p2_src_end_ip,
-                                   size=4, op="inc"),
-                      STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
-                      STLVmFixIpv4(offset="IP"),
-                     ], split_by_field="src")
+    # The following code applies raw instructions to packet (IP src/dst
+    # increment). It splits the generated traffic by "ip_src"/"ip_dst" variable
+    # to cores and fix IPv4 header checksum.
+    if p1_dst_end_ip and p2_dst_end_ip:
+        vm1 = STLScVmRaw([STLVmFlowVar(name="dst",
+                                       min_value=p1_dst_start_ip,
+                                       max_value=p1_dst_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"),
+                          STLVmFixIpv4(offset="IP"),
+                         ], split_by_field="dst")
+        vm2 = STLScVmRaw([STLVmFlowVar(name="dst",
+                                       min_value=p2_dst_start_ip,
+                                       max_value=p2_dst_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"),
+                          STLVmFixIpv4(offset="IP"),
+                         ], split_by_field="dst")
+    else:
+        vm1 = STLScVmRaw([STLVmFlowVar(name="src",
+                                       min_value=p1_src_start_ip,
+                                       max_value=p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP"),
+                         ], split_by_field="src")
+        vm2 = STLScVmRaw([STLVmFlowVar(name="src",
+                                       min_value=p2_src_start_ip,
+                                       max_value=p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP"),
+                         ], split_by_field="src")
 
     return create_streams_v46(base_pkt_a, base_pkt_b, vm1, vm2, frame_size)
 
 
     return create_streams_v46(base_pkt_a, base_pkt_b, vm1, vm2, frame_size)
 
@@ -451,24 +467,28 @@ def parse_args():
 #                        help="Port 1 destination MAC address")
     parser.add_argument("--p1_src_start_ip", required=True,
                         help="Port 1 source start IP address")
 #                        help="Port 1 destination MAC address")
     parser.add_argument("--p1_src_start_ip", required=True,
                         help="Port 1 source start IP address")
-    parser.add_argument("--p1_src_end_ip", required=True,
+    parser.add_argument("--p1_src_end_ip",
+                        default=False,
                         help="Port 1 source end IP address")
     parser.add_argument("--p1_dst_start_ip", required=True,
                         help="Port 1 destination start IP address")
                         help="Port 1 source end IP address")
     parser.add_argument("--p1_dst_start_ip", required=True,
                         help="Port 1 destination start IP address")
-#    parser.add_argument("--p1_dst_end_ip",
-#                        help="Port 1 destination end IP address")
+    parser.add_argument("--p1_dst_end_ip",
+                        default=False,
+                        help="Port 1 destination end IP address")
 #    parser.add_argument("--p2_src_mac",
 #                        help="Port 2 source MAC address")
 #    parser.add_argument("--p2_dst_mac",
 #                        help="Port 2 destination MAC address")
     parser.add_argument("--p2_src_start_ip", required=True,
                         help="Port 2 source start IP address")
 #    parser.add_argument("--p2_src_mac",
 #                        help="Port 2 source MAC address")
 #    parser.add_argument("--p2_dst_mac",
 #                        help="Port 2 destination MAC address")
     parser.add_argument("--p2_src_start_ip", required=True,
                         help="Port 2 source start IP address")
-    parser.add_argument("--p2_src_end_ip", required=True,
+    parser.add_argument("--p2_src_end_ip",
+                        default=False,
                         help="Port 2 source end IP address")
     parser.add_argument("--p2_dst_start_ip", required=True,
                         help="Port 2 destination start IP address")
                         help="Port 2 source end IP address")
     parser.add_argument("--p2_dst_start_ip", required=True,
                         help="Port 2 destination start IP address")
-#    parser.add_argument("--p2_dst_end_ip",
-#                        help="Port 2 destination end IP address")
+    parser.add_argument("--p2_dst_end_ip",
+                        default=False,
+                        help="Port 2 destination end IP address")
 
     return parser.parse_args()
 
 
     return parser.parse_args()
 
diff --git a/tests/perf/Long_IPv4_Fib_200k_Intel-X520-DA2.robot b/tests/perf/Long_IPv4_Fib_200k_Intel-X520-DA2.robot
new file mode 100644 (file)
index 0000000..07634aa
--- /dev/null
@@ -0,0 +1,492 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PERFTEST_LONG
+| ...        | FIB_200K | NIC_Intel-X520-DA2
+| Suite Setup | 3-node Performance Suite Setup with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| Suite Teardown | 3-node Performance Suite Teardown
+| Test Setup | Setup all DUTs before test
+| Test Teardown | Run Keyword | Remove startup configuration of VPP from all DUTs
+| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4
+| ... | routing and 2x100k static IPv4 /32 route entries. DUT1 and DUT2 tested
+| ... | with 2p10GE NIC X520 Niantic by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using either binary search or linear search
+| ... | algorithms with configured starting rate and final step that determines
+| ... | throughput measurement resolution. Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 100k flows per flow-group) with all packets
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and
+| ... | generated payload. MAC addresses are matching MAC addresses of the TG
+| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${rts_per_flow}= | 100000
+
+*** Test Cases ***
+| TC01: 64B NDR binary search - DUT IPv4 Fib 2x100k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC02: 64B PDR binary search - DUT IPv4 Fib 2x100k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | PDR
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC03: 1518B NDR binary search - DUT IPv4 Fib 2x100k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC04: 1518B PDR binary search - DUT IPv4 Fib 2x100k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | PDR
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC05: 9000B NDR binary search - DUT IPv4 Fib 2x100k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC06: 9000B PDR binary search - DUT IPv4 Fib 2x100k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | PDR
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC07: 64B NDR binary search - DUT IPv4 Fib 2x100k - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC08: 64B PDR binary search - DUT IPv4 Fib 2x100k - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | PDR
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC09: 1518B NDR binary search - DUT IPv4 Fib 2x100k - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC10: 1518B PDR binary search - DUT IPv4 Fib 2x100k - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | PDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC11: 9000B NDR binary search - DUT IPv4 Fib 2x100k - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC12: 9000B PDR binary search - DUT IPv4 Fib 2x100k - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | PDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC13: 64B NDR binary search - DUT IPv4 Fib 2x100k - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC14: 64B PDR binary search - DUT IPv4 Fib 2x100k - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | PDR
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC15: 1518B NDR binary search - DUT IPv4 Fib 2x100k - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC16: 1518B PDR binary search - DUT IPv4 Fib 2x100k - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | PDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC17: 9000B NDR binary search - DUT IPv4 Fib 2x100k - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC18: 9000B PDR binary search - DUT IPv4 Fib 2x100k - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | PDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
diff --git a/tests/perf/Long_IPv4_Fib_20k_Intel-X520-DA2.robot b/tests/perf/Long_IPv4_Fib_20k_Intel-X520-DA2.robot
new file mode 100644 (file)
index 0000000..543f1d9
--- /dev/null
@@ -0,0 +1,492 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PERFTEST_LONG
+| ...        | FIB_20K | NIC_Intel-X520-DA2
+| Suite Setup | 3-node Performance Suite Setup with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| Suite Teardown | 3-node Performance Suite Teardown
+| Test Setup | Setup all DUTs before test
+| Test Teardown | Run Keyword | Remove startup configuration of VPP from all DUTs
+| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4
+| ... | routing and 2x10k static IPv4 /32 route entries. DUT1 and DUT2 tested
+| ... | with 2p10GE NIC X520 Niantic by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using either binary search or linear search
+| ... | algorithms with configured starting rate and final step that determines
+| ... | throughput measurement resolution. Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 10k flows per flow-group) with all packets
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and
+| ... | generated payload. MAC addresses are matching MAC addresses of the TG
+| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${rts_per_flow}= | 10000
+
+*** Test Cases ***
+| TC01: 64B NDR binary search - DUT IPv4 Fib 2x10k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC02: 64B PDR binary search - DUT IPv4 Fib 2x10k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | PDR
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC03: 1518B NDR binary search - DUT IPv4 Fib 2x10k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC04: 1518B PDR binary search - DUT IPv4 Fib 2x10k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | PDR
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC05: 9000B NDR binary search - DUT IPv4 Fib 2x10k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC06: 9000B PDR binary search - DUT IPv4 Fib 2x10k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | PDR
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC07: 64B NDR binary search - DUT IPv4 Fib 2x10k - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC08: 64B PDR binary search - DUT IPv4 Fib 2x10k - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | PDR
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC09: 1518B NDR binary search - DUT IPv4 Fib 2x10k - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC10: 1518B PDR binary search - DUT IPv4 Fib 2x10k - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | PDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC11: 9000B NDR binary search - DUT IPv4 Fib 2x10k - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC12: 9000B PDR binary search - DUT IPv4 Fib 2x10k - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | PDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC13: 64B NDR binary search - DUT IPv4 Fib 2x10k - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC14: 64B PDR binary search - DUT IPv4 Fib 2x10k - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | PDR
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC15: 1518B NDR binary search - DUT IPv4 Fib 2x10k - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC16: 1518B PDR binary search - DUT IPv4 Fib 2x10k - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | PDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC17: 9000B NDR binary search - DUT IPv4 Fib 2x10k - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC18: 9000B PDR binary search - DUT IPv4 Fib 2x10k - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | PDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
diff --git a/tests/perf/Long_IPv4_Fib_2M_Intel-X520-DA2.robot b/tests/perf/Long_IPv4_Fib_2M_Intel-X520-DA2.robot
new file mode 100644 (file)
index 0000000..1944ba4
--- /dev/null
@@ -0,0 +1,492 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PERFTEST_LONG
+| ...        | FIB_2M | NIC_Intel-X520-DA2
+| Suite Setup | 3-node Performance Suite Setup with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| Suite Teardown | 3-node Performance Suite Teardown
+| Test Setup | Setup all DUTs before test
+| Test Teardown | Run Keyword | Remove startup configuration of VPP from all DUTs
+| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4
+| ... | routing and 2x1M static IPv4 /32 route entries. DUT1 and DUT2 tested
+| ... | with 2p10GE NIC X520 Niantic by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using either binary search or linear search
+| ... | algorithms with configured starting rate and final step that determines
+| ... | throughput measurement resolution. Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 1M flows per flow-group) with all packets
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and
+| ... | generated payload. MAC addresses are matching MAC addresses of the TG
+| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${rts_per_flow}= | 1000000
+
+*** Test Cases ***
+| TC01: 64B NDR binary search - DUT IPv4 Fib 2x1M - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC02: 64B PDR binary search - DUT IPv4 Fib 2x1M - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | PDR
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC03: 1518B NDR binary search - DUT IPv4 Fib 2x1M - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC04: 1518B PDR binary search - DUT IPv4 Fib 2x1M - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | PDR
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC05: 9000B NDR binary search - DUT IPv4 Fib 2x1M - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC06: 9000B PDR binary search - DUT IPv4 Fib 2x1M - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | PDR
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC07: 64B NDR binary search - DUT IPv4 Fib 2x1M - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC08: 64B PDR binary search - DUT IPv4 Fib 2x1M - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | PDR
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC09: 1518B NDR binary search - DUT IPv4 Fib 2x1M - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC10: 1518B PDR binary search - DUT IPv4 Fib 2x1M - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | PDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC11: 9000B NDR binary search - DUT IPv4 Fib 2x1M - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC12: 9000B PDR binary search - DUT IPv4 Fib 2x1M - 2threads 2cores 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | PDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC13: 64B NDR binary search - DUT IPv4 Fib 2x1M - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC14: 64B PDR binary search - DUT IPv4 Fib 2x1M - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames
+| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | PDR
+| | ${framesize}= | Set Variable | 64
+| | ${min_rate}= | Set Variable | 100000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_64B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC15: 1518B NDR binary search - DUT IPv4 Fib 2x1M - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC16: 1518B PDR binary search - DUT IPv4 Fib 2x1M - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames
+| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | PDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 1518
+| | ${min_rate}= | Set Variable | 10000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_1518B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
+
+| TC17: 9000B NDR binary search - DUT IPv4 Fib 2x1M - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+
+| TC18: 9000B PDR binary search - DUT IPv4 Fib 2x1M - 4threads 4cores 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames
+| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | PDR | SKIP_PATCH
+| | ${framesize}= | Set Variable | 9000
+| | ${min_rate}= | Set Variable | 5000
+| | ${max_rate}= | Set Variable | ${10Ge_linerate_pps_9000B}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ...                                       | ${binary_max}
+| | ...                                       | 3-node-IPv4-dst-${rts_per_flow}
+| | ...                                       | ${min_rate} | ${max_rate}
+| | ...                                       | ${threshold}
+| | ...                                       | ${glob_loss_acceptance}
+| | ...                                       | ${glob_loss_acceptance_type}
diff --git a/tests/perf/Short_IPv4_Fib_200k_Intel-X520-DA2.robot b/tests/perf/Short_IPv4_Fib_200k_Intel-X520-DA2.robot
new file mode 100644 (file)
index 0000000..845036b
--- /dev/null
@@ -0,0 +1,213 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PERFTEST_SHORT
+| ...        | FIB_200K | NIC_Intel-X520-DA2
+| Suite Setup | 3-node Performance Suite Setup with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| Suite Teardown | 3-node Performance Suite Teardown
+| Test Setup | Setup all DUTs before test
+| Test Teardown | Run Keyword | Remove startup configuration of VPP from all DUTs
+| Documentation | *Reference NDR throughput IPv4 routing verify test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4
+| ... | routing and 2x100k static IPv4 /32 route entries. DUT1 and DUT2 tested
+| ... | with 2p10GE NIC X520 Niantic by Intel.
+| ... | *[Ver] TG verification:* In short performance tests, TG verifies
+| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet
+| ... | loss tolerance. Ref-NDR value is periodically updated acording to
+| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long
+| ... | performance tests for the same DUT confiiguration. Test packets are
+| ... | generated by TG on links to DUTs. TG traffic profile contains two L3
+| ... | flow-groups (flow-group per direction, 100k flows per flow-group) with
+| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61
+| ... | and generated payload. Incrementing of IP.dst (IPv4 destination address)
+| ... | field is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${rts_per_flow}= | 100000
+
+*** Test Cases ***
+| TC01: Verify 64B ref-NDR at 2x 3.5Mpps - DUT IPv4 Fib 2x100k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR
+| | ${framesize}= | Set Variable | 64
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 3.5mpps
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC02: Verify 1518B ref-NDR at 2x 812.74kpps - DUT IPv4 Fib 2x100k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR
+| | ${framesize}= | Set Variable | 1518
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 812743pps
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC03: Verify 9000B ref-NDR at 2x 138.58kpps - DUT IPv4 Fib 2x100k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR
+| | ${framesize}= | Set Variable | 9000
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 138580pps
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC04: Verify 64B ref-NDR at 2x 7.5Mpps - DUT IPv4 Fib 2x100k - 2threads, 2cores, 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 64
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 7.5mpps
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC05: Verify 1518B ref-NDR at 2x 812.74kpps - DUT IPv4 Fib 2x100k - 2threads, 2cores, 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 1518
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 812743pps
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC06: Verify 9000B ref-NDR at 2x 138.58kpps - DUT IPv4 Fib 2x100k - 2threads, 2cores, 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 9000
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 138580pps
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC07: Verify 64B ref-NDR at 2x 10.0Mpps - DUT IPv4 Fib 2x100k - 4threads, 4cores, 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 64
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 10.0mpps
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC08: Verify 1518B ref-NDR at 2x 812.74kpps - DUT IPv4 Fib 2x100k - 4threads, 4cores, 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 1518
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 812743pps
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC09: Verify 9000B ref-NDR at 2x 138.58kpps - DUT IPv4 Fib 2x100k - 4threads, 4cores, 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 9000
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 138580pps
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
diff --git a/tests/perf/Short_IPv4_Fib_20k_Intel-X520-DA2.robot b/tests/perf/Short_IPv4_Fib_20k_Intel-X520-DA2.robot
new file mode 100644 (file)
index 0000000..9ac8c81
--- /dev/null
@@ -0,0 +1,213 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PERFTEST_SHORT
+| ...        | FIB_20K | NIC_Intel-X520-DA2
+| Suite Setup | 3-node Performance Suite Setup with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| Suite Teardown | 3-node Performance Suite Teardown
+| Test Setup | Setup all DUTs before test
+| Test Teardown | Run Keyword | Remove startup configuration of VPP from all DUTs
+| Documentation | *Reference NDR throughput IPv4 routing verify test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4
+| ... | routing and 2x10k static IPv4 /32 route entries. DUT1 and DUT2 tested
+| ... | with 2p10GE NIC X520 Niantic by Intel.
+| ... | *[Ver] TG verification:* In short performance tests, TG verifies
+| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet
+| ... | loss tolerance. Ref-NDR value is periodically updated acording to
+| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long
+| ... | performance tests for the same DUT confiiguration. Test packets are
+| ... | generated by TG on links to DUTs. TG traffic profile contains two L3
+| ... | flow-groups (flow-group per direction, 10k flows per flow-group) with
+| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61
+| ... | and generated payload. Incrementing of IP.dst (IPv4 destination address)
+| ... | field is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${rts_per_flow}= | 10000
+
+*** Test Cases ***
+| TC01: Verify 64B ref-NDR at 2x 3.5Mpps - DUT IPv4 Fib 2x10k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR
+| | ${framesize}= | Set Variable | 64
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 3.5mpps
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC02: Verify 1518B ref-NDR at 2x 812.74kpps - DUT IPv4 Fib 2x10k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR
+| | ${framesize}= | Set Variable | 1518
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 812743pps
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC03: Verify 9000B ref-NDR at 2x 138.58kpps - DUT IPv4 Fib 2x10k - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR
+| | ${framesize}= | Set Variable | 9000
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 138580pps
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC04: Verify 64B ref-NDR at 2x 7.5Mpps - DUT IPv4 Fib 2x10k - 2threads, 2cores, 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 64
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 7.5mpps
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC05: Verify 1518B ref-NDR at 2x 812.74kpps - DUT IPv4 Fib 2x10k - 2threads, 2cores, 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 1518
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 812743pps
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC06: Verify 9000B ref-NDR at 2x 138.58kpps - DUT IPv4 Fib 2x10k - 2threads, 2cores, 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 9000
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 138580pps
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC07: Verify 64B ref-NDR at 2x 10.0Mpps - DUT IPv4 Fib 2x10k - 4threads, 4cores, 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 64
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 10.0mpps
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC08: Verify 1518B ref-NDR at 2x 812.74kpps - DUT IPv4 Fib 2x10k - 4threads, 4cores, 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 1518
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 812743pps
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC09: Verify 9000B ref-NDR at 2x 138.58kpps - DUT IPv4 Fib 2x10k - 4threads, 4cores, 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 9000
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 138580pps
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
diff --git a/tests/perf/Short_IPv4_Fib_2M_Intel-X520-DA2.robot b/tests/perf/Short_IPv4_Fib_2M_Intel-X520-DA2.robot
new file mode 100644 (file)
index 0000000..7caa56a
--- /dev/null
@@ -0,0 +1,213 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PERFTEST_SHORT
+| ...        | FIB_2M | NIC_Intel-X520-DA2
+| Suite Setup | 3-node Performance Suite Setup with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| Suite Teardown | 3-node Performance Suite Teardown
+| Test Setup | Setup all DUTs before test
+| Test Teardown | Run Keyword | Remove startup configuration of VPP from all DUTs
+| Documentation | *Reference NDR throughput IPv4 routing verify test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4
+| ... | routing and 2x1M static IPv4 /32 route entries. DUT1 and DUT2 tested
+| ... | with 2p10GE NIC X520 Niantic by Intel.
+| ... | *[Ver] TG verification:* In short performance tests, TG verifies
+| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet
+| ... | loss tolerance. Ref-NDR value is periodically updated acording to
+| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long
+| ... | performance tests for the same DUT confiiguration. Test packets are
+| ... | generated by TG on links to DUTs. TG traffic profile contains two L3
+| ... | flow-groups (flow-group per direction, 1M flows per flow-group) with
+| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61
+| ... | and generated payload. Incrementing of IP.dst (IPv4 destination address)
+| ... | field is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${rts_per_flow}= | 1000000
+
+*** Test Cases ***
+| TC01: Verify 64B ref-NDR at 2x 3.5Mpps - DUT IPv4 Fib 2x1M - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR
+| | ${framesize}= | Set Variable | 64
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 3.5mpps
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC02: Verify 1518B ref-NDR at 2x 812.74kpps - DUT IPv4 Fib 2x1M - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | Verify ref-NDR for 1518 Byte frames using single trial throughput
+| | ... | test. DUT runs IPv4 routing config with 1 thread, 1 phy core, 1
+| | ... | receive queue per NIC port.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR
+| | ${framesize}= | Set Variable | 1518
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 812743pps
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC03: Verify 9000B ref-NDR at 2x 138.58kpps - DUT IPv4 Fib 2x1M - 1thread 1core 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 1_THREAD_NOHTT_RXQUEUES_1 | SINGLE_THREAD | NDR
+| | ${framesize}= | Set Variable | 9000
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 138580pps
+| | Given Add '1' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC04: Verify 64B ref-NDR at 2x 7.5Mpps - DUT IPv4 Fib 2x1M - 2threads, 2cores, 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 64
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 7.5mpps
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC05: Verify 1518B ref-NDR at 2x 812.74kpps - DUT IPv4 Fib 2x1M - 2threads, 2cores, 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 1518
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 812743pps
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC06: Verify 9000B ref-NDR at 2x 138.58kpps - DUT IPv4 Fib 2x1M - 2threads, 2cores, 1rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \
+| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 2_THREAD_NOHTT_RXQUEUES_1 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 9000
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 138580pps
+| | Given Add '2' worker threads and rxqueues '1' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC07: Verify 64B ref-NDR at 2x 10.0Mpps - DUT IPv4 Fib 2x1M - 4threads, 4cores, 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 64
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 10.0mpps
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC08: Verify 1518B ref-NDR at 2x 812.74kpps - DUT IPv4 Fib 2x1M - 4threads, 4cores, 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 1518
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 812743pps
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Add No Multi Seg to all DUTs
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}
+
+| TC09: Verify 9000B ref-NDR at 2x 138.58kpps - DUT IPv4 Fib 2x1M - 4threads, 4cores, 2rxq
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \
+| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte
+| | ... | frames using single trial throughput test.
+| | [Tags] | 4_THREAD_NOHTT_RXQUEUES_2 | MULTI_THREAD | NDR
+| | ${framesize}= | Set Variable | 9000
+| | ${duration}= | Set Variable | 10
+| | ${rate}= | Set Variable | 138580pps
+| | Given Add '4' worker threads and rxqueues '2' without HTT to all DUTs
+| | And   Add PCI devices to DUTs from 3-node single link topology
+| | And   Apply startup configuration on all VPP DUTs
+| | And   Scale IPv4 forwarding initialized in a 3-node circular topology
+| | ...   | ${rts_per_flow}
+| | Then  Traffic should pass with no loss | ${duration} | ${rate}
+| | ...                                    | ${framesize}
+| | ...                                    | 3-node-IPv4-dst-${rts_per_flow}