CSIT-1097: Migrate Vts suite to NDRPDR 31/13531/12
authorVratko Polak <vrpolak@cisco.com>
Fri, 20 Jul 2018 11:13:06 +0000 (13:13 +0200)
committerVratko Polak <vrpolak@cisco.com>
Tue, 24 Jul 2018 08:05:38 +0000 (10:05 +0200)
Change-Id: Iaac913bb4b15d743a2e9d565e25d31c089cee3e8
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
15 files changed:
resources/libraries/python/autogen/DefaultTestcase.py
resources/libraries/python/autogen/Regenerator.py
resources/libraries/robot/performance/performance_configuration.robot
resources/libraries/robot/performance/performance_setup.robot
tests/vpp/perf/ip6/regenerate_testcases.py
tests/vpp/perf/ip6_tunnels/regenerate_testcases.py
tests/vpp/perf/srv6/regenerate_testcases.py
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-2vhostvr1024-1vm-ndrpdrdisc.robot [deleted file]
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vts/regenerate_testcases.py [new file with mode: 0755]

index 9878289..3c11cb0 100644 (file)
@@ -13,7 +13,7 @@
 
 """Module with utilities for autogeneration of non-customizable testcases."""
 
 
 """Module with utilities for autogeneration of non-customizable testcases."""
 
-from Testcase import Testcase
+from .Testcase import Testcase
 
 
 class DefaultTestcase(Testcase):
 
 
 class DefaultTestcase(Testcase):
index 30dc7b7..4ed123a 100644 (file)
@@ -36,7 +36,7 @@ class Regenerator(object):
         """
         self.testcase_class = testcase_class
 
         """
         self.testcase_class = testcase_class
 
-    def regenerate_glob(self, pattern, is_ip6=False, tc_kwargs_list=None):
+    def regenerate_glob(self, pattern, protocol="ip4", tc_kwargs_list=None):
         """Regenerate files matching glob pattern based on arguments.
 
         In the current working directory, find all files matching
         """Regenerate files matching glob pattern based on arguments.
 
         In the current working directory, find all files matching
@@ -56,6 +56,12 @@ class Regenerator(object):
         :type tc_kwargs_list: list of tuple or None
         """
 
         :type tc_kwargs_list: list of tuple or None
         """
 
+        protocol_to_min_framesize = {
+            "ip4": 64,
+            "ip6": 78,
+            "vxlan+ip4": 114
+        }
+
         def get_suite_id(filename):
             dash_split = filename.split("-", 1)
             if len(dash_split[0]) <= 4:
         def get_suite_id(filename):
             dash_split = filename.split("-", 1)
             if len(dash_split[0]) <= 4:
@@ -73,8 +79,8 @@ class Regenerator(object):
                 num = add_testcase(file_out, num, **tc_kwargs)
 
         print "Regenerator starts at {cwd}".format(cwd=getcwd())
                 num = add_testcase(file_out, num, **tc_kwargs)
 
         print "Regenerator starts at {cwd}".format(cwd=getcwd())
-        min_framesize = 78 if is_ip6 else 64
-        kwargs_list = tc_kwargs_list if tc_kwargs_list is not None else [
+        min_framesize = protocol_to_min_framesize[protocol]
+        kwargs_list = tc_kwargs_list if tc_kwargs_list else [
             {"framesize": min_framesize, "phy_cores": 1},
             {"framesize": min_framesize, "phy_cores": 2},
             {"framesize": min_framesize, "phy_cores": 4},
             {"framesize": min_framesize, "phy_cores": 1},
             {"framesize": min_framesize, "phy_cores": 2},
             {"framesize": min_framesize, "phy_cores": 4},
index f5ca1e7..2310047 100644 (file)
 | | ... | ${number}
 | | All Vpp Interfaces Ready Wait | ${nodes}
 | | Show Memif on all DUTs | ${nodes}
 | | ... | ${number}
 | | All Vpp Interfaces Ready Wait | ${nodes}
 | | Show Memif on all DUTs | ${nodes}
+
+| Configure ACLs on a single interface
+| | [Documentation]
+| | ... | Configure ACL
+| | ...
+| | ... | *Arguments:*
+| | ... | - dut - DUT node. Type: string
+| | ... | - dut_if - DUT node interface name. Type: string
+| | ... | - acl_apply_type - To what path apply the ACL - input or output.
+| | ... | - acl_action - Action for the rule - deny, permit, permit+reflect.
+| | ... | - subnets - Subnets to apply the specific ACL. Type: list
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Configure ACLs on a single interface \| ${nodes['DUT1']}
+| | ... | \| ... \| GigabitEthernet0/7/0 \| input \| permit | 0.0.0.0/0
+| | ...
+| | [Arguments] | ${dut} | ${dut_if} | ${acl_apply_type} | ${acl_action}
+| | ... | @{subnets}
+| | Set Test variable | ${acl} | ${EMPTY}
+| | :FOR | ${subnet} | IN | @{subnets}
+| | | ${acl} = | Run Keyword If | '${acl}' == '${EMPTY}'
+| | | ... | Set Variable | ipv4 ${acl_action} src ${subnet}
+| | | ... | ELSE
+| | | ... | Catenate | SEPARATOR=, | ${acl}
+| | | ... | ipv4 ${acl_action} src ${subnet}
+| | Add Replace Acl Multi Entries | ${dut} | rules=${acl}
+| | @{acl_list} = | Create List | ${0}
+| | Set Acl List For Interface | ${dut} | ${dut_if} | ${acl_apply_type}
+| | ... | ${acl_list}
index a41894c..e34e842 100644 (file)
 | | Run keyword unless | ${dut2_node}==${None}
 | | ... | Tear down guest VM with dpdk-testpmd | ${dut2} | ${dut2_vm_refs}
 
 | | Run keyword unless | ${dut2_node}==${None}
 | | ... | Tear down guest VM with dpdk-testpmd | ${dut2} | ${dut2_vm_refs}
 
+| Tear down mrr test with vhost and VM with dpdk-testpmd
+| | [Documentation] | Common test teardown for mrr tests which use
+| | ... | vhost(s) and VM(s) with dpdk-testpmd.
+| | ...
+| | ... | *Arguments:*
+| | ... | - dut1_node - Node where to clean qemu. Type: dictionary
+| | ... | - dut1_vm_refs - VM references on node. Type: dictionary
+| | ... | - dut2_node - Node where to clean qemu. Type: dictionary
+| | ... | - dut2_vm_refs - VM references on node. Type: dictionary
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Tear down performance test with vhost and VM with dpdk-testpmd \
+| | ... | \| ${node['DUT1']} \| ${dut_vm_refs} \
+| | ... | \| ${node['DUT2']} \| ${dut_vm_refs} \|
+| | ...
+| | [Arguments] | ${dut1_node}=${None} | ${dut1_vm_refs}=${None}
+| | ... | ${dut2_node}=${None} | ${dut2_vm_refs}=${None}
+| | ...
+| | Remove All Added Ports On All DUTs From Topology | ${nodes}
+| | Show VAT History On All DUTs | ${nodes}
+| | Show VPP vhost on all DUTs | ${nodes}
+| | Show statistics on all DUTs | ${nodes}
+| | Run keyword unless | ${dut1_node}==${None}
+| | ... | Tear down guest VM with dpdk-testpmd | ${dut1} | ${dut1_vm_refs}
+| | Run keyword unless | ${dut2_node}==${None}
+| | ... | Tear down guest VM with dpdk-testpmd | ${dut2} | ${dut2_vm_refs}
+
 | Tear down performance test with vhost and VM with dpdk-testpmd and ACL
 | | [Documentation] | Common test teardown for performance tests which use
 | | ... | vhost(s) and VM(s) with ACL and dpdk-testpmd.
 | Tear down performance test with vhost and VM with dpdk-testpmd and ACL
 | | [Documentation] | Common test teardown for performance tests which use
 | | ... | vhost(s) and VM(s) with ACL and dpdk-testpmd.
 | | Run Keyword If Test Failed | Run Keyword And Ignore Error
 | | ... | Vpp Log Plugin Acl Interface Assignment | ${dut1}
 
 | | Run Keyword If Test Failed | Run Keyword And Ignore Error
 | | ... | Vpp Log Plugin Acl Interface Assignment | ${dut1}
 
+| Tear down mrr test with vhost and VM with dpdk-testpmd and ACL
+| | [Documentation] | Common test teardown for mrr tests which use
+| | ... | vhost(s) and VM(s) with ACL and dpdk-testpmd.
+| | ...
+| | ... | *Arguments:*
+| | ... | - dut1_node - Node where to clean qemu. Type: dictionary
+| | ... | - dut1_vm_refs - VM references on node. Type: dictionary
+| | ... | - dut2_node - Node where to clean qemu. Type: dictionary
+| | ... | - dut2_vm_refs - VM references on node. Type: dictionary
+| | ...
+| | [Arguments] | ${dut1_node}=${None} | ${dut1_vm_refs}=${None}
+| | ... | ${dut2_node}=${None} | ${dut2_vm_refs}=${None}
+| | ...
+| | Tear down mrr test with vhost and VM with dpdk-testpmd
+| | ... | ${dut1_node} | ${dut1_vm_refs}
+| | ... | ${dut2_node} | ${dut2_vm_refs}
+| | Vpp Log Plugin Acl Settings | ${dut1}
+| | Run Keyword If Test Failed | Run Keyword And Ignore Error
+| | ... | Vpp Log Plugin Acl Interface Assignment | ${dut1}
+
 | Tear down performance pdrchk test with vhost and VM with dpdk-testpmd
 | | [Documentation] | Common test teardown for performance pdrchk tests which \
 | | ... | use vhost(s) and VM(s) with dpdk-testpmd.
 | Tear down performance pdrchk test with vhost and VM with dpdk-testpmd
 | | [Documentation] | Common test teardown for performance pdrchk tests which \
 | | ... | use vhost(s) and VM(s) with dpdk-testpmd.
index b63f55b..d98546b 100755 (executable)
@@ -15,4 +15,4 @@
 
 from resources.libraries.python.autogen.Regenerator import Regenerator
 
 
 from resources.libraries.python.autogen.Regenerator import Regenerator
 
-Regenerator().regenerate_glob("*.robot", is_ip6=True)
+Regenerator().regenerate_glob("*.robot", protocol="ip6")
index b63f55b..d98546b 100755 (executable)
@@ -15,4 +15,4 @@
 
 from resources.libraries.python.autogen.Regenerator import Regenerator
 
 
 from resources.libraries.python.autogen.Regenerator import Regenerator
 
-Regenerator().regenerate_glob("*.robot", is_ip6=True)
+Regenerator().regenerate_glob("*.robot", protocol="ip6")
index b63f55b..d98546b 100755 (executable)
@@ -15,4 +15,4 @@
 
 from resources.libraries.python.autogen.Regenerator import Regenerator
 
 
 from resources.libraries.python.autogen.Regenerator import Regenerator
 
-Regenerator().regenerate_glob("*.robot", is_ip6=True)
+Regenerator().regenerate_glob("*.robot", protocol="ip6")
diff --git a/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-2vhostvr1024-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-2vhostvr1024-1vm-ndrpdrdisc.robot
deleted file mode 100644 (file)
index ef8722b..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-# Copyright (c) 2018 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/performance_setup.robot
-| Library | resources.libraries.python.QemuUtils
-| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
-| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY
-| ... | VHOST | VM | VHOST_1024 | VTS
-| ...
-| Suite Setup | Run Keywords
-| ... | Set up 3-node performance topology with DUT's NIC model
-| ... | L3 | Intel-X520-DA2
-| ... | AND | Set up performance test suite with ACL
-| Suite Teardown | Tear down 3-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd and ACL
-| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
-| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
-| ...
-| Test Template | Local template
-| ...
-| Documentation | *RFC2544: Packet throughput L2BD test cases with VXLANoIPv4
-| ... | and vhost*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2.
-| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting
-| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M
-| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores
-| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to
-| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are 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, 253 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of the TG node
-| ... | interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
-
-*** Variables ***
-| ${perf_qemu_qsz}= | 1024
-# X520-DA2 bandwidth limit
-| ${s_limit}= | ${10000000000}
-| ${vxlan_overhead}= | ${50}
-# Socket names
-| ${dut1_bd_id1}= | 1
-| ${dut1_bd_id2}= | 2
-| ${dut2_bd_id1}= | 1
-| ${sock1}= | /tmp/sock-1-${dut1_bd_id1}
-| ${sock2}= | /tmp/sock-1-${dut1_bd_id2}
-# Traffic profile:
-| ${traffic_profile} | trex-sl-ethip4-vxlansrc253
-| ${min_rate}= | ${10000}
-
-
-*** Keywords ***
-| Configure ACLs on a single interface
-| | [Documentation]
-| | ... | Configure ACL
-| | ...
-| | ... | *Arguments:*
-| | ... | - dut - DUT node. Type: string
-| | ... | - dut_if - DUT node interface name. Type: string
-| | ... | - acl_apply_type - To what path apply the ACL - input or output.
-| | ... | - acl_action - Action for the rule - deny, permit, permit+reflect.
-| | ... | - subnets - Subnets to apply the specific ACL. Type: list
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Configure ACLs on a single interface \| ${nodes['DUT1']}
-| | ... | \| ... \| GigabitEthernet0/7/0 \| input \| permit | 0.0.0.0/0
-| | ...
-| | [Arguments] | ${dut} | ${dut_if} | ${acl_apply_type} | ${acl_action}
-| | ... | @{subnets}
-| | Set Test variable | ${acl} | ${EMPTY}
-| | :FOR | ${subnet} | IN | @{subnets}
-| | | ${acl}= | Run Keyword If | '${acl}' == '${EMPTY}'
-| | | ... | Set Variable | ipv4 ${acl_action} src ${subnet}
-| | | ... | ELSE
-| | | ... | Catenate | SEPARATOR=, | ${acl}
-| | | ... | ipv4 ${acl_action} src ${subnet}
-| | Add Replace Acl Multi Entries | ${dut} | rules=${acl}
-| | @{acl_list}= | Create List | ${0}
-| | Set Acl List For Interface | ${dut} | ${dut_if} | ${acl_apply_type}
-| | ... | ${acl_list}
-
-
-*** Keywords ***
-| Local template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config with 1 phy core,\
-| | ... | 1 receive queue per NIC port.
-| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\
-| | ... | linerate, step 10kpps.
-| | ...
-| | ... | *Arguments:*
-| | ... | - phy_cores - Number of worker threads to be used. Type: integer
-| | ... | - rxq - Number of Rx queues to be used. Type: integer
-| | ... | - pkt_framesize - L2 Frame Size [B]. Type: integer
-| | ... | - search_type - Type of the search - non drop rate (NDR) or partial
-| | ... | drop rare (PDR). Type: string
-| | ...
-| | [Arguments] | ${phy_cores} | ${pkt_framesize} | ${search_type}
-| | ... | ${acl_type}=${EMPTY} | ${rxq}=${None}
-| | ...
-| | ${binary_min}= | Set Variable | ${min_rate}
-| | ${threshold}= | Set Variable | ${min_rate}
-| | ${max_pkt_size}= | Set Variable If | '${pkt_framesize}' == 'IMIX_v4_1' |
-| | ... | ${1500 + ${vxlan_overhead}} | ${pkt_framesize + ${vxlan_overhead}}
-| | ${max_rate}= | Calculate pps | ${s_limit} | ${max_pkt_size}
-| | ${binary_max}= | Set Variable | ${max_rate}
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | Add PCI devices to all DUTs
-| | And Run Keyword If | ${max_pkt_size} < ${1522}
-| | ... | Add no multi seg to all DUTs
-| | And Apply startup configuration on all VPP DUTs
-| | &{vxlan1}= | Create Dictionary | vni=24 | vtep=172.17.0.2
-| | &{vxlan2}= | Create Dictionary | vni=24 | vtep=172.27.0.2
-| | @{dut1_vxlans}= | Create List | ${vxlan1}
-| | @{dut2_vxlans}= | Create List | ${vxlan2}
-| | ${jumbo_frames}= | Set Variable If
-| | ... | ${max_pkt_size} < ${1522} | ${False} | ${True}
-| | Set interfaces in path in 3-node circular topology up
-| | Configure vhost interfaces for L2BD forwarding | ${dut1}
-| | ... | ${sock1} | ${sock2}
-| | When Init L2 bridge domains with single DUT with Vhost-User and VXLANoIPv4 in 3-node circular topology
-| | ... | 172.16.0.1 | 16 | 172.26.0.1 | 16 | 172.16.0.2 | 172.26.0.2
-| | ... | ${dut1_vxlans} | ${dut2_vxlans} | 172.17.0.0 | 16 | 172.27.0.0 | 16
-| | @{permit_list}= | Create List | 10.0.0.1/32 | 10.0.0.2/32
-| | Run Keyword If | '${acl_type}' != '${EMPTY}'
-| | ... | Configure ACLs on a single interface | ${dut1} | ${dut1_if2} | input
-| | ... | ${acl_type} | @{permit_list}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1
-| | ... | jumbo_frames=${jumbo_frames}
-| | Set Test Variable | &{dut1_vm_refs} | DUT1_VM1=${vm1}
-| | Set Test Variable | ${framesize} | ${pkt_framesize}
-| | ${pkt_framesize}= | Set Variable If | '${pkt_framesize}' == 'IMIX_v4_1' |
-| | ... | ${pkt_framesize} | ${pkt_framesize + ${vxlan_overhead}}
-| | Run Keyword If | '${search_type}' == 'NDR'
-| | ... | Find NDR using binary search and pps
-| | ... | ${pkt_framesize} | ${binary_min} | ${binary_max} | ${traffic_profile}
-| | ... | ${min_rate} | ${max_rate} | ${threshold}
-| | ... | ELSE IF | '${search_type}' == 'PDR'
-| | ... | Find PDR using binary search and pps
-| | ... | ${pkt_framesize} | ${binary_min} | ${binary_max} | ${traffic_profile}
-| | ... | ${min_rate} | ${max_rate} | ${threshold}
-| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type}
-
-*** Test Cases ***
-| tc01-64B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc
-| | [Tags] | 64B | 2C | NDRDISC
-| | phy_cores=${2} | pkt_framesize=${64} | search_type=NDR
-
-| tc02-64B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc
-| | [Tags] | 64B | 2C | PDRDISC
-| | phy_cores=${2} | pkt_framesize=${64} | search_type=PDR
-
-| tc03-150B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc
-| | [Tags] | 150B | 2C | NDRDISC
-| | phy_cores=${2} | pkt_framesize=${150} | search_type=NDR
-
-| tc04-150B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc
-| | [Tags] | 150B | 2C | PDRDISC
-| | phy_cores=${2} | pkt_framesize=${150} | search_type=PDR
-
-| tc05-200B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc
-| | [Tags] | 200B | 2C | NDRDISC
-| | phy_cores=${2} | pkt_framesize=${200} | search_type=NDR
-
-| tc06-200B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc
-| | [Tags] | 200B | 2C | PDRDISC
-| | phy_cores=${2} | pkt_framesize=${200} | search_type=PDR
-
-| tc07-IMIX-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc
-| | [Tags] | IMIX | 2C | NDRDISC
-| | phy_cores=${2} | pkt_framesize=IMIX_v4_1 | search_type=NDR
-
-| tc08-IMIX-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc
-| | [Tags] | IMIX | 2C | PDRDISC
-| | phy_cores=${2} | pkt_framesize=IMIX_v4_1 | search_type=PDR
-
-| tc09-64B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-acl-ndrdisc
-| | [Tags] | 64B | 2C | NDRDISC | ACL_PERMIT
-| | phy_cores=${2} | pkt_framesize=${64} | search_type=NDR
-| | ... | acl_type=permit
-
-| tc10-64B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-acl-pdrdisc
-| | [Tags] | 64B | 2C | PDRDISC | ACL_PERMIT
-| | phy_cores=${2} | pkt_framesize=${64} | search_type=PDR
-| | ... | acl_type=permit
-
-| tc11-150B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-acl-ndrdisc
-| | [Tags] | 150B | 2C | NDRDISC | ACL_PERMIT
-| | phy_cores=${2} | pkt_framesize=${150} | search_type=NDR
-| | ... | acl_type=permit
-
-| tc12-150B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-acl-pdrdisc
-| | [Tags] | 150B | 2C | PDRDISC | ACL_PERMIT
-| | phy_cores=${2} | pkt_framesize=${150} | search_type=PDR
-| | ... | acl_type=permit
-
-| tc13-200B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-acl-ndrdisc
-| | [Tags] | 200B | 2C | NDRDISC | ACL_PERMIT
-| | phy_cores=${2} | pkt_framesize=${200} | search_type=NDR
-| | ... | acl_type=permit
-
-| tc14-200B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-acl-pdrdisc
-| | [Tags] | 200B | 2C | PDRDISC | ACL_PERMIT
-| | phy_cores=${2} | pkt_framesize=${200} | search_type=PDR
-| | ... | acl_type=permit
-
-| tc15-IMIX-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-acl-ndrdisc
-| | [Tags] | IMIX | 2C | NDRDISC | ACL_PERMIT
-| | phy_cores=${2} | pkt_framesize=IMIX_v4_1 | search_type=NDR
-| | ... | acl_type=permit
-
-| tc16-IMIX-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-acl-pdrdisc
-| | [Tags] | IMIX | 2C | PDRDISC | ACL_PERMIT
-| | phy_cores=${2} | pkt_framesize=IMIX_v4_1 | search_type=PDR
-| | ... | acl_type=permit
-
-| tc17-64B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-aclreflect-ndrdisc
-| | [Tags] | 64B | 2C | NDRDISC | ACL_PERMIT_REFLECT
-| | phy_cores=${2} | pkt_framesize=${64} | search_type=NDR
-| | ... | acl_type=permit+reflect
-
-| tc18-64B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-aclreflect-pdrdisc
-| | [Tags] | 64B | 2C | PDRDISC | ACL_PERMIT_REFLECT
-| | phy_cores=${2} | pkt_framesize=${64} | search_type=PDR
-| | ... | acl_type=permit+reflect
-
-| tc19-150B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-aclreflect-ndrdisc
-| | [Tags] | 150B | 2C | NDRDISC | ACL_PERMIT_REFLECT
-| | phy_cores=${2} | pkt_framesize=${150} | search_type=NDR
-| | ... | acl_type=permit+reflect
-
-| tc20-150B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-aclreflect-pdrdisc
-| | [Tags] | 150B | 2C | PDRDISC | ACL_PERMIT_REFLECT
-| | phy_cores=${2} | pkt_framesize=${150} | search_type=PDR
-| | ... | acl_type=permit+reflect
-
-| tc21-200B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-aclreflect-ndrdisc
-| | [Tags] | 200B | 2C | NDRDISC | ACL_PERMIT_REFLECT
-| | phy_cores=${2} | pkt_framesize=${200} | search_type=NDR
-| | ... | acl_type=permit+reflect
-
-| tc22-200B-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-aclreflect-pdrdisc
-| | [Tags] | 200B | 2C | PDRDISC | ACL_PERMIT_REFLECT
-| | phy_cores=${2} | pkt_framesize=${200} | search_type=PDR
-| | ... | acl_type=permit+reflect
-
-| tc23-IMIX-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-aclreflect-ndrdisc
-| | [Tags] | IMIX | 2C | NDRDISC | ACL_PERMIT_REFLECT
-| | phy_cores=${2} | pkt_framesize=IMIX_v4_1 | search_type=NDR
-| | ... | acl_type=permit+reflect
-
-| tc24-IMIX-2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-aclreflect-pdrdisc
-| | [Tags] | IMIX | 2C | PDRDISC | ACL_PERMIT_REFLECT
-| | phy_cores=${2} | pkt_framesize=IMIX_v4_1 | search_type=PDR
-| | ... | acl_type=permit+reflect
diff --git a/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr.robot b/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr.robot
new file mode 100644 (file)
index 0000000..c4491f2
--- /dev/null
@@ -0,0 +1,163 @@
+# Copyright (c) 2018 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/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY
+| ... | VHOST | VM | VHOST_1024 | VTS | ACL_PERMIT
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 3-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| ... | AND | Set up performance test suite with ACL
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down mrr test with vhost and VM with dpdk-testpmd and ACL
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with VXLANoIPv4 and vhost*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting
+| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M
+| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores
+| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to
+| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520
+| ... | Niantic by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 253 flows per flow-group) with all packets
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
+| ... | payload. MAC addresses are matching MAC addresses of the TG node
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+| ${perf_qemu_qsz}= | 1024
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Socket names
+| ${dut1_bd_id1}= | 1
+| ${dut1_bd_id2}= | 2
+| ${dut2_bd_id1}= | 1
+| ${sock1}= | /tmp/sock-1-${dut1_bd_id1}
+| ${sock2}= | /tmp/sock-1-${dut1_bd_id2}
+# Traffic profile:
+| ${traffic_profile} | trex-sl-ethip4-vxlansrc253
+
+| ${acl_type}= | permit
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - L2 Frame Size [B]. Type: integer
+| | ... | - phy_cores - Number of worker threads to be used. Type: integer
+| | ... | - rxq - Number of Rx queues to be used. Type: integer
+| | ... | - acl_type - FIXME.
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | &{vxlan1} = | Create Dictionary | vni=24 | vtep=172.17.0.2
+| | &{vxlan2} = | Create Dictionary | vni=24 | vtep=172.27.0.2
+| | @{dut1_vxlans} = | Create List | ${vxlan1}
+| | @{dut2_vxlans} = | Create List | ${vxlan2}
+| | Set interfaces in path in 3-node circular topology up
+| | Configure vhost interfaces for L2BD forwarding | ${dut1}
+| | ... | ${sock1} | ${sock2}
+| | When Init L2 bridge domains with single DUT with Vhost-User and VXLANoIPv4 in 3-node circular topology
+| | ... | 172.16.0.1 | 16 | 172.26.0.1 | 16 | 172.16.0.2 | 172.26.0.2
+| | ... | ${dut1_vxlans} | ${dut2_vxlans} | 172.17.0.0 | 16 | 172.27.0.0 | 16
+| | @{permit_list} = | Create List | 10.0.0.1/32 | 10.0.0.2/32
+| | Run Keyword If | '${acl_type}' != '${EMPTY}'
+| | ... | Configure ACLs on a single interface | ${dut1} | ${dut1_if2} | input
+| | ... | ${acl_type} | @{permit_list}
+| | ${vm1} = | And Configure guest VM with dpdk-testpmd connected via vhost-user
+| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1
+| | ... | jumbo_frames=${jumbo}
+| | Set Test Variable | &{dut1_vm_refs} | DUT1_VM1=${vm1}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-114B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr
+| | [Tags] | 114B | 1C
+| | framesize=${114} | phy_cores=${1}
+
+| tc02-114B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr
+| | [Tags] | 114B | 2C
+| | framesize=${114} | phy_cores=${2}
+
+| tc03-114B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr
+| | [Tags] | 114B | 4C
+| | framesize=${114} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr.robot b/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..6aa5a83
--- /dev/null
@@ -0,0 +1,170 @@
+# Copyright (c) 2018 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/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY
+| ... | VHOST | VM | VHOST_1024 | VTS | ACL_PERMIT
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 3-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| ... | AND | Set up performance test suite with ACL
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd and ACL
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Packet throughput L2BD test cases with VXLANoIPv4
+| ... | and vhost*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting
+| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M
+| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores
+| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to
+| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are 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 MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 253 flows per flow-group) with all packets
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
+| ... | payload. MAC addresses are matching MAC addresses of the TG node
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+| ${perf_qemu_qsz}= | 1024
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Socket names
+| ${dut1_bd_id1}= | 1
+| ${dut1_bd_id2}= | 2
+| ${dut2_bd_id1}= | 1
+| ${sock1}= | /tmp/sock-1-${dut1_bd_id1}
+| ${sock2}= | /tmp/sock-1-${dut1_bd_id2}
+# Traffic profile:
+| ${traffic_profile} | trex-sl-ethip4-vxlansrc253
+| ${min_rate}= | ${10000}
+
+| ${acl_type}= | permit
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - L2 Frame Size [B]. Type: integer
+| | ... | - phy_cores - Number of worker threads to be used. Type: integer
+| | ... | - rxq - Number of Rx queues to be used. Type: integer
+| | ... | - acl_type - FIXME.
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | &{vxlan1} = | Create Dictionary | vni=24 | vtep=172.17.0.2
+| | &{vxlan2} = | Create Dictionary | vni=24 | vtep=172.27.0.2
+| | @{dut1_vxlans} = | Create List | ${vxlan1}
+| | @{dut2_vxlans} = | Create List | ${vxlan2}
+| | Set interfaces in path in 3-node circular topology up
+| | Configure vhost interfaces for L2BD forwarding | ${dut1}
+| | ... | ${sock1} | ${sock2}
+| | When Init L2 bridge domains with single DUT with Vhost-User and VXLANoIPv4 in 3-node circular topology
+| | ... | 172.16.0.1 | 16 | 172.26.0.1 | 16 | 172.16.0.2 | 172.26.0.2
+| | ... | ${dut1_vxlans} | ${dut2_vxlans} | 172.17.0.0 | 16 | 172.27.0.0 | 16
+| | @{permit_list} = | Create List | 10.0.0.1/32 | 10.0.0.2/32
+| | Run Keyword If | '${acl_type}' != '${EMPTY}'
+| | ... | Configure ACLs on a single interface | ${dut1} | ${dut1_if2} | input
+| | ... | ${acl_type} | @{permit_list}
+| | ${vm1} = | And Configure guest VM with dpdk-testpmd connected via vhost-user
+| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1
+| | ... | jumbo_frames=${jumbo}
+| | Set Test Variable | &{dut1_vm_refs} | DUT1_VM1=${vm1}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-114B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 114B | 1C
+| | framesize=${114} | phy_cores=${1}
+
+| tc02-114B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 114B | 2C
+| | framesize=${114} | phy_cores=${2}
+
+| tc03-114B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 114B | 4C
+| | framesize=${114} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr.robot b/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr.robot
new file mode 100644 (file)
index 0000000..ff476a4
--- /dev/null
@@ -0,0 +1,163 @@
+# Copyright (c) 2018 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/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY
+| ... | VHOST | VM | VHOST_1024 | VTS | ACL_PERMIT_REFLECT
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 3-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| ... | AND | Set up performance test suite with ACL
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down mrr test with vhost and VM with dpdk-testpmd and ACL
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with VXLANoIPv4 and vhost*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting
+| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M
+| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores
+| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to
+| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520
+| ... | Niantic by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 253 flows per flow-group) with all packets
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
+| ... | payload. MAC addresses are matching MAC addresses of the TG node
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+| ${perf_qemu_qsz}= | 1024
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Socket names
+| ${dut1_bd_id1}= | 1
+| ${dut1_bd_id2}= | 2
+| ${dut2_bd_id1}= | 1
+| ${sock1}= | /tmp/sock-1-${dut1_bd_id1}
+| ${sock2}= | /tmp/sock-1-${dut1_bd_id2}
+# Traffic profile:
+| ${traffic_profile} | trex-sl-ethip4-vxlansrc253
+
+| ${acl_type}= | permit+reflect
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - L2 Frame Size [B]. Type: integer
+| | ... | - phy_cores - Number of worker threads to be used. Type: integer
+| | ... | - rxq - Number of Rx queues to be used. Type: integer
+| | ... | - acl_type - FIXME.
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | &{vxlan1} = | Create Dictionary | vni=24 | vtep=172.17.0.2
+| | &{vxlan2} = | Create Dictionary | vni=24 | vtep=172.27.0.2
+| | @{dut1_vxlans} = | Create List | ${vxlan1}
+| | @{dut2_vxlans} = | Create List | ${vxlan2}
+| | Set interfaces in path in 3-node circular topology up
+| | Configure vhost interfaces for L2BD forwarding | ${dut1}
+| | ... | ${sock1} | ${sock2}
+| | When Init L2 bridge domains with single DUT with Vhost-User and VXLANoIPv4 in 3-node circular topology
+| | ... | 172.16.0.1 | 16 | 172.26.0.1 | 16 | 172.16.0.2 | 172.26.0.2
+| | ... | ${dut1_vxlans} | ${dut2_vxlans} | 172.17.0.0 | 16 | 172.27.0.0 | 16
+| | @{permit_list} = | Create List | 10.0.0.1/32 | 10.0.0.2/32
+| | Run Keyword If | '${acl_type}' != '${EMPTY}'
+| | ... | Configure ACLs on a single interface | ${dut1} | ${dut1_if2} | input
+| | ... | ${acl_type} | @{permit_list}
+| | ${vm1} = | And Configure guest VM with dpdk-testpmd connected via vhost-user
+| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1
+| | ... | jumbo_frames=${jumbo}
+| | Set Test Variable | &{dut1_vm_refs} | DUT1_VM1=${vm1}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-114B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr
+| | [Tags] | 114B | 1C
+| | framesize=${114} | phy_cores=${1}
+
+| tc02-114B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr
+| | [Tags] | 114B | 2C
+| | framesize=${114} | phy_cores=${2}
+
+| tc03-114B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr
+| | [Tags] | 114B | 4C
+| | framesize=${114} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr.robot b/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..69b6691
--- /dev/null
@@ -0,0 +1,170 @@
+# Copyright (c) 2018 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/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY
+| ... | VHOST | VM | VHOST_1024 | VTS | ACL_PERMIT_REFLECT
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 3-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| ... | AND | Set up performance test suite with ACL
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd and ACL
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Packet throughput L2BD test cases with VXLANoIPv4
+| ... | and vhost*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting
+| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M
+| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores
+| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to
+| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are 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 MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 253 flows per flow-group) with all packets
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
+| ... | payload. MAC addresses are matching MAC addresses of the TG node
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+| ${perf_qemu_qsz}= | 1024
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Socket names
+| ${dut1_bd_id1}= | 1
+| ${dut1_bd_id2}= | 2
+| ${dut2_bd_id1}= | 1
+| ${sock1}= | /tmp/sock-1-${dut1_bd_id1}
+| ${sock2}= | /tmp/sock-1-${dut1_bd_id2}
+# Traffic profile:
+| ${traffic_profile} | trex-sl-ethip4-vxlansrc253
+| ${min_rate}= | ${10000}
+
+| ${acl_type}= | permit+reflect
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - L2 Frame Size [B]. Type: integer
+| | ... | - phy_cores - Number of worker threads to be used. Type: integer
+| | ... | - rxq - Number of Rx queues to be used. Type: integer
+| | ... | - acl_type - FIXME.
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | &{vxlan1} = | Create Dictionary | vni=24 | vtep=172.17.0.2
+| | &{vxlan2} = | Create Dictionary | vni=24 | vtep=172.27.0.2
+| | @{dut1_vxlans} = | Create List | ${vxlan1}
+| | @{dut2_vxlans} = | Create List | ${vxlan2}
+| | Set interfaces in path in 3-node circular topology up
+| | Configure vhost interfaces for L2BD forwarding | ${dut1}
+| | ... | ${sock1} | ${sock2}
+| | When Init L2 bridge domains with single DUT with Vhost-User and VXLANoIPv4 in 3-node circular topology
+| | ... | 172.16.0.1 | 16 | 172.26.0.1 | 16 | 172.16.0.2 | 172.26.0.2
+| | ... | ${dut1_vxlans} | ${dut2_vxlans} | 172.17.0.0 | 16 | 172.27.0.0 | 16
+| | @{permit_list} = | Create List | 10.0.0.1/32 | 10.0.0.2/32
+| | Run Keyword If | '${acl_type}' != '${EMPTY}'
+| | ... | Configure ACLs on a single interface | ${dut1} | ${dut1_if2} | input
+| | ... | ${acl_type} | @{permit_list}
+| | ${vm1} = | And Configure guest VM with dpdk-testpmd connected via vhost-user
+| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1
+| | ... | jumbo_frames=${jumbo}
+| | Set Test Variable | &{dut1_vm_refs} | DUT1_VM1=${vm1}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-114B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 114B | 1C
+| | framesize=${114} | phy_cores=${1}
+
+| tc02-114B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 114B | 2C
+| | framesize=${114} | phy_cores=${2}
+
+| tc03-114B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 114B | 4C
+| | framesize=${114} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr.robot b/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr.robot
new file mode 100644 (file)
index 0000000..4f055cb
--- /dev/null
@@ -0,0 +1,163 @@
+# Copyright (c) 2018 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/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY
+| ... | VHOST | VM | VHOST_1024 | VTS
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 3-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| ... | AND | Set up performance test suite with ACL
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down mrr test with vhost and VM with dpdk-testpmd and ACL
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with VXLANoIPv4 and vhost*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting
+| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M
+| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores
+| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to
+| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520
+| ... | Niantic by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 253 flows per flow-group) with all packets
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
+| ... | payload. MAC addresses are matching MAC addresses of the TG node
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+| ${perf_qemu_qsz}= | 1024
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Socket names
+| ${dut1_bd_id1}= | 1
+| ${dut1_bd_id2}= | 2
+| ${dut2_bd_id1}= | 1
+| ${sock1}= | /tmp/sock-1-${dut1_bd_id1}
+| ${sock2}= | /tmp/sock-1-${dut1_bd_id2}
+# Traffic profile:
+| ${traffic_profile} | trex-sl-ethip4-vxlansrc253
+
+| ${acl_type}= | ${EMPTY}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - L2 Frame Size [B]. Type: integer
+| | ... | - phy_cores - Number of worker threads to be used. Type: integer
+| | ... | - rxq - Number of Rx queues to be used. Type: integer
+| | ... | - acl_type - FIXME.
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | &{vxlan1} = | Create Dictionary | vni=24 | vtep=172.17.0.2
+| | &{vxlan2} = | Create Dictionary | vni=24 | vtep=172.27.0.2
+| | @{dut1_vxlans} = | Create List | ${vxlan1}
+| | @{dut2_vxlans} = | Create List | ${vxlan2}
+| | Set interfaces in path in 3-node circular topology up
+| | Configure vhost interfaces for L2BD forwarding | ${dut1}
+| | ... | ${sock1} | ${sock2}
+| | When Init L2 bridge domains with single DUT with Vhost-User and VXLANoIPv4 in 3-node circular topology
+| | ... | 172.16.0.1 | 16 | 172.26.0.1 | 16 | 172.16.0.2 | 172.26.0.2
+| | ... | ${dut1_vxlans} | ${dut2_vxlans} | 172.17.0.0 | 16 | 172.27.0.0 | 16
+| | @{permit_list} = | Create List | 10.0.0.1/32 | 10.0.0.2/32
+| | Run Keyword If | '${acl_type}' != '${EMPTY}'
+| | ... | Configure ACLs on a single interface | ${dut1} | ${dut1_if2} | input
+| | ... | ${acl_type} | @{permit_list}
+| | ${vm1} = | And Configure guest VM with dpdk-testpmd connected via vhost-user
+| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1
+| | ... | jumbo_frames=${jumbo}
+| | Set Test Variable | &{dut1_vm_refs} | DUT1_VM1=${vm1}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-114B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr
+| | [Tags] | 114B | 1C
+| | framesize=${114} | phy_cores=${1}
+
+| tc02-114B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr
+| | [Tags] | 114B | 2C
+| | framesize=${114} | phy_cores=${2}
+
+| tc03-114B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr
+| | [Tags] | 114B | 4C
+| | framesize=${114} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr.robot b/tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..e24218a
--- /dev/null
@@ -0,0 +1,170 @@
+# Copyright (c) 2018 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/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY
+| ... | VHOST | VM | VHOST_1024 | VTS
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 3-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| ... | AND | Set up performance test suite with ACL
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd and ACL
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Packet throughput L2BD test cases with VXLANoIPv4
+| ... | and vhost*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting
+| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M
+| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores
+| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to
+| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are 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 MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 253 flows per flow-group) with all packets
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
+| ... | payload. MAC addresses are matching MAC addresses of the TG node
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+| ${perf_qemu_qsz}= | 1024
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Socket names
+| ${dut1_bd_id1}= | 1
+| ${dut1_bd_id2}= | 2
+| ${dut2_bd_id1}= | 1
+| ${sock1}= | /tmp/sock-1-${dut1_bd_id1}
+| ${sock2}= | /tmp/sock-1-${dut1_bd_id2}
+# Traffic profile:
+| ${traffic_profile} | trex-sl-ethip4-vxlansrc253
+| ${min_rate}= | ${10000}
+
+| ${acl_type}= | ${EMPTY}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - L2 Frame Size [B]. Type: integer
+| | ... | - phy_cores - Number of worker threads to be used. Type: integer
+| | ... | - rxq - Number of Rx queues to be used. Type: integer
+| | ... | - acl_type - FIXME.
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | &{vxlan1} = | Create Dictionary | vni=24 | vtep=172.17.0.2
+| | &{vxlan2} = | Create Dictionary | vni=24 | vtep=172.27.0.2
+| | @{dut1_vxlans} = | Create List | ${vxlan1}
+| | @{dut2_vxlans} = | Create List | ${vxlan2}
+| | Set interfaces in path in 3-node circular topology up
+| | Configure vhost interfaces for L2BD forwarding | ${dut1}
+| | ... | ${sock1} | ${sock2}
+| | When Init L2 bridge domains with single DUT with Vhost-User and VXLANoIPv4 in 3-node circular topology
+| | ... | 172.16.0.1 | 16 | 172.26.0.1 | 16 | 172.16.0.2 | 172.26.0.2
+| | ... | ${dut1_vxlans} | ${dut2_vxlans} | 172.17.0.0 | 16 | 172.27.0.0 | 16
+| | @{permit_list} = | Create List | 10.0.0.1/32 | 10.0.0.2/32
+| | Run Keyword If | '${acl_type}' != '${EMPTY}'
+| | ... | Configure ACLs on a single interface | ${dut1} | ${dut1_if2} | input
+| | ... | ${acl_type} | @{permit_list}
+| | ${vm1} = | And Configure guest VM with dpdk-testpmd connected via vhost-user
+| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1
+| | ... | jumbo_frames=${jumbo}
+| | Set Test Variable | &{dut1_vm_refs} | DUT1_VM1=${vm1}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-114B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 114B | 1C
+| | framesize=${114} | phy_cores=${1}
+
+| tc02-114B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 114B | 2C
+| | framesize=${114} | phy_cores=${2}
+
+| tc03-114B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 114B | 4C
+| | framesize=${114} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vts/regenerate_testcases.py b/tests/vpp/perf/vts/regenerate_testcases.py
new file mode 100755 (executable)
index 0000000..adfde89
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2018 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.
+
+from resources.libraries.python.autogen.Regenerator import Regenerator
+
+Regenerator().regenerate_glob("*.robot", protocol="vxlan+ip4")