From: Jan Gelety Date: Fri, 11 May 2018 08:36:41 +0000 (+0200) Subject: DPDK link bonding: xor mode X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=commitdiff_plain;h=b5782684055409315412d94d1de2e5f78cffac4d DPDK link bonding: xor mode CSIT-1073 CSIT-1074 CSIT-1077 Change-Id: I248e079021c30988210fd792b32d5afdca71aadb Signed-off-by: Jan Gelety --- diff --git a/docs/tag_documentation.rst b/docs/tag_documentation.rst index c649bcd440..8a8a277283 100644 --- a/docs/tag_documentation.rst +++ b/docs/tag_documentation.rst @@ -405,6 +405,22 @@ Interface tags All test cases which uses Memif. +.. topic:: LBOND + + All test cases which uses link bonding (BondEthernet interface). + +.. topic:: LBOND_DPDK + + All test cases which uses DPDK link bonding. + +.. topic:: LBOND_MODE_XOR + + All test cases which uses link bonding with mode XOR. + +.. topic:: LBOND_LB_L34 + + All test cases which uses link bonding with load-balance mode l34. + Feature tags ------------ diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index aac78c9e44..6c3aa46a40 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -908,6 +908,29 @@ class InterfaceUtil(object): raise RuntimeError('Create loopback failed on node "{}"' .format(node['host'])) + @staticmethod + def add_bond_eth_interface(node, ifc_name): + """Add BondEthernet interface to current topology. + + :param node: Node to add BondEthernet interface for. + :param ifc_name: Name of the BondEthernet interface. + :type node: dict + :type ifc_name: str + """ + if_key = Topology.add_new_port(node, 'eth_bond') + Topology.update_interface_name(node, if_key, ifc_name) + + vat_executor = VatExecutor() + vat_executor.execute_script_json_out("dump_interfaces.vat", node) + interface_dump_json = vat_executor.get_script_stdout() + + sw_if_idx = VatJsonUtil.get_interface_sw_index_from_json( + interface_dump_json, ifc_name) + Topology.update_interface_sw_if_index(node, if_key, sw_if_idx) + ifc_mac = VatJsonUtil.get_interface_mac_from_json( + interface_dump_json, sw_if_idx) + Topology.update_interface_mac_address(node, if_key, ifc_mac) + @staticmethod def vpp_enable_input_acl_interface(node, interface, ip_version, table_index): diff --git a/resources/libraries/python/VatJsonUtil.py b/resources/libraries/python/VatJsonUtil.py index 4db4eb641a..8414838715 100644 --- a/resources/libraries/python/VatJsonUtil.py +++ b/resources/libraries/python/VatJsonUtil.py @@ -148,14 +148,46 @@ class VatJsonUtil(object): try: if interface['sw_if_index'] == sw_if_index: interface_name = interface['interface_name'] - logger.debug('Interface with name {} has sw_if_index {}.' - .format(interface_name, sw_if_index)) + logger.debug('Interface with sw_if_index {idx} has name' + ' {name}.'.format(idx=sw_if_index, + name=interface_name)) return interface_name except KeyError: pass raise ValueError('Interface with sw_if_index {} not found.' .format(sw_if_index)) + @staticmethod + def get_interface_mac_from_json(interface_dump_json, sw_if_index): + """Get interface MAC address from given JSON output by sw_if_index. + + :param interface_dump_json: JSON output from dump_interface_list VAT + command. + :param sw_if_index: SW interface index. + :type interface_dump_json: str + :type sw_if_index: int + :returns: Interface MAC address. + :rtype: str + :raises ValueError: If interface not found in interface_dump_json. + """ + logger.trace(interface_dump_json) + interface_list = JsonParser().parse_data(interface_dump_json) + for interface in interface_list: + try: + if interface['sw_if_index'] == sw_if_index: + mac_from_json = interface['l2_address'][:6] \ + if 'l2_address' in interface.keys() else '' + mac_address = ':'.join('{:02x}'.format(item) + for item in mac_from_json) + logger.debug('Interface with sw_if_index {idx} has MAC' + ' address {addr}.'.format(idx=sw_if_index, + addr=mac_address)) + return mac_address + except KeyError: + pass + raise ValueError('Interface with sw_if_index {idx} not found.' + .format(idx=sw_if_index)) + @staticmethod def verify_vat_retval(vat_out, exp_retval=0, err_msg='VAT cmd failed'): """Verify return value of VAT command. diff --git a/resources/libraries/python/VppConfigGenerator.py b/resources/libraries/python/VppConfigGenerator.py index d1fc32ef9d..e9933f2a18 100644 --- a/resources/libraries/python/VppConfigGenerator.py +++ b/resources/libraries/python/VppConfigGenerator.py @@ -25,6 +25,23 @@ from resources.libraries.python.topology import Topology __all__ = ['VppConfigGenerator'] +def pci_dev_check(pci_dev): + """Check if provided PCI address is in correct format. + + :param pci_dev: PCI address (expected format: xxxx:xx:xx.x). + :type pci_dev: str + :returns: True if PCI address is in correct format. + :rtype: bool + :raises ValueError: If PCI address is in incorrect format. + """ + pattern = re.compile("^[0-9A-Fa-f]{4}:[0-9A-Fa-f]{2}:" + "[0-9A-Fa-f]{2}\\.[0-9A-Fa-f]$") + if not pattern.match(pci_dev): + raise ValueError('PCI address {addr} is not in valid format ' + 'xxxx:xx:xx.x'.format(addr=pci_dev)) + return True + + class VppConfigGenerator(object): """VPP Configuration File Generator.""" @@ -100,6 +117,9 @@ class VppConfigGenerator(object): return if path[0] not in config: config[path[0]] = {} + elif isinstance(config[path[0]], str): + config[path[0]] = {} if config[path[0]] == '' \ + else {config[path[0]]: ''} self.add_config_item(config[path[0]], value, path[1:]) def dump_config(self, obj, level=-1): @@ -205,17 +225,25 @@ class VppConfigGenerator(object): :param devices: PCI device(s) (format xxxx:xx:xx.x) :type devices: tuple - :raises ValueError: If PCI address format is not valid. """ - pattern = re.compile("^[0-9A-Fa-f]{4}:[0-9A-Fa-f]{2}:" - "[0-9A-Fa-f]{2}\\.[0-9A-Fa-f]$") for device in devices: - if not pattern.match(device): - raise ValueError('PCI address {} to be added to host {} ' - 'is not in valid format xxxx:xx:xx.x'. - format(device, self._hostname)) - path = ['dpdk', 'dev {0}'.format(device)] - self.add_config_item(self._nodeconfig, '', path) + if pci_dev_check(device): + path = ['dpdk', 'dev {0}'.format(device)] + self.add_config_item(self._nodeconfig, '', path) + + def add_dpdk_dev_parameter(self, device, parameter, value): + """Add parameter for DPDK device. + + :param device: PCI device (format xxxx:xx:xx.x). + :param parameter: Parameter name. + :param value: Parameter value. + :type device: str + :type parameter: str + :type value: str + """ + if pci_dev_check(device): + path = ['dpdk', 'dev {0}'.format(device), parameter] + self.add_config_item(self._nodeconfig, value, path) def add_dpdk_cryptodev(self, count): """Add DPDK Crypto PCI device configuration. @@ -247,6 +275,29 @@ class VppConfigGenerator(object): path = ['dpdk', cryptodev_config] self.add_config_item(self._nodeconfig, '', path) + def add_dpdk_eth_bond_dev(self, ethbond_id, mode, xmit_policy, *slaves): + """Add DPDK Eth_bond device configuration. + + :param ethbond_id: Eth_bond device ID. + :param mode: Link bonding mode. + :param xmit_policy: Transmission policy. + :param slaves: PCI device(s) to be bonded (format xxxx:xx:xx.x). + :type ethbond_id: str or int + :type mode: str or int + :type xmit_policy: str + :type slaves: list + """ + slaves_config = ',slave=' + \ + ',slave='.join(slave if pci_dev_check(slave) else '' + for slave in slaves) + ethbond_config = 'vdev eth_bond{id},mode={mode}{slaves},' \ + 'xmit_policy={xmit_pol}'.format(id=ethbond_id, + mode=mode, + slaves=slaves_config, + xmit_pol=xmit_policy) + path = ['dpdk', ethbond_config] + self.add_config_item(self._nodeconfig, '', path) + def add_dpdk_dev_default_rxq(self, value): """Add DPDK dev default rxq configuration. diff --git a/resources/libraries/python/topology.py b/resources/libraries/python/topology.py index 2f4fd023ba..d60bed1b5b 100644 --- a/resources/libraries/python/topology.py +++ b/resources/libraries/python/topology.py @@ -138,7 +138,7 @@ class Topology(object): :returns: Nothing """ port_types = ('subinterface', 'vlan_subif', 'memif', 'tap', 'vhost', - 'loopback', 'gre_tunnel', 'vxlan_tunnel') + 'loopback', 'gre_tunnel', 'vxlan_tunnel', 'eth_bond') for node_data in nodes.values(): if node_data['type'] == NodeType.DUT: diff --git a/resources/libraries/robot/performance/performance_configuration.robot b/resources/libraries/robot/performance/performance_configuration.robot index a864a023bf..c795fc85d2 100644 --- a/resources/libraries/robot/performance/performance_configuration.robot +++ b/resources/libraries/robot/performance/performance_configuration.robot @@ -921,6 +921,45 @@ | | Configure L2XC | ${dut2} | ${subif_index_2} | ${vhost_if1} | | Configure L2XC | ${dut2} | ${dut2_if2} | ${vhost_if2} +| Initialize L2 xconnect with Vhost-User and VLAN with DPDK link bonding in 3-node circular topology +| | [Documentation] +| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Setup VLAN +| | ... | on EthernetBond interfaces between DUTs. Cross connect one Vhost +| | ... | interface with physical interface towards TG and other Vhost interface +| | ... | with VLAN sub-interface. All interfaces are brought up. +| | ... +| | ... | *Arguments:* +| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string +| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string +| | ... | - subid - ID of the sub-interface to be created. Type: string +| | ... | - tag_rewrite - Method of tag rewrite. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Initialize L2 xconnect with Vhost-User and VLAN with DPDK link\ +| | ... | bonding in 3-node circular topology \| /tmp/sock1 \| /tmp/sock2 \ +| | ... | \| 10 \| pop-1 \| +| | ... +| | [Arguments] | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ... +| | Set interfaces in path in 3-node circular topology up +| | Set Interface State | ${dut1} | ${dut1_eth_bond_if1} | up +| | Set Interface State | ${dut2} | ${dut2_eth_bond_if1} | up +| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_eth_bond_if1} | ${dut2} | ${dut2_eth_bond_if1} +| | ... | ${subid} +| | Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | Configure vhost interfaces for L2BD forwarding | ${dut1} +| | ... | ${sock1} | ${sock2} +| | Configure L2XC | ${dut1} | ${dut1_if1} | ${vhost_if1} +| | Configure L2XC | ${dut1} | ${subif_index_1} | ${vhost_if2} +| | Configure vhost interfaces for L2BD forwarding | ${dut2} +| | ... | ${sock1} | ${sock2} +| | Configure L2XC | ${dut2} | ${subif_index_2} | ${vhost_if1} +| | Configure L2XC | ${dut2} | ${dut2_if2} | ${vhost_if2} + | Initialize L2 bridge domain in 3-node circular topology | | [Documentation] | | ... | Setup L2 DB topology by adding two interfaces on each DUT into BD @@ -1471,8 +1510,8 @@ | | ... | *Example:* | | ... | | ... | \| L2 bridge domains with Vhost-User and VLAN initialized in a 3-node\ -| | ... | circular topology \| 1 \| 2 \| /tmp/sock1 \| /tmp/sock2 \| 10\ -| | ... | pop-1 \| +| | ... | circular topology \| 1 \| 2 \| /tmp/sock1 \| /tmp/sock2 \| 10 \ +| | ... | \| pop-1 \| | | ... | | [Arguments] | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} | | ... | ${tag_rewrite} @@ -1496,6 +1535,54 @@ | | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2} | | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2} +| Initialize L2 bridge domains with Vhost-User and VLAN with DPDK link bonding in a 3-node circular topology +| | [Documentation] +| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Setup VLAN +| | ... | on EthernetBond interfaces between DUTs. Add one Vhost-User interface +| | ... | into L2 bridge domains with learning enabled with physical interface +| | ... | towards TG and other Vhost-User interface into L2 bridge domains with +| | ... | learning enabled with VLAN sub-interface. All interfaces are brought +| | ... | up. +| | ... +| | ... | *Arguments:* +| | ... | - bd_id1 - Bridge domain ID. Type: integer +| | ... | - bd_id2 - Bridge domain ID. Type: integer +| | ... | - sock1 - Sock path for first Vhost-User interface. Type: string +| | ... | - sock2 - Sock path for second Vhost-User interface. Type: string +| | ... | - subid - ID of the sub-interface to be created. Type: string +| | ... | - tag_rewrite - Method of tag rewrite. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Initialize L2 bridge domains with Vhost-User and VLAN with DPDK\ +| | ... | link bonding in a 3-node circular topology \| 1 \| 2 \| /tmp/sock1 \ +| | ... | \| /tmp/sock2 \| 10 \| pop-1 \| +| | ... +| | [Arguments] | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ... +| | Set interfaces in path in 3-node circular topology up +| | Set Interface State | ${dut1} | ${dut1_eth_bond_if1} | up +| | Set Interface State | ${dut2} | ${dut2_eth_bond_if1} | up +| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_eth_bond_if1} | ${dut2} | ${dut2_eth_bond_if1} +| | ... | ${subid} +| | Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | Configure vhost interfaces for L2BD forwarding | ${dut1} +| | ... | ${sock1} | ${sock2} +| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2} +| | Add interface to bridge domain | ${dut1} | ${subif_index_1} | ${bd_id2} +| | Configure vhost interfaces for L2BD forwarding | ${dut2} +| | ... | ${sock1} | ${sock2} +| | Add interface to bridge domain | ${dut2} | ${subif_index_2} | ${bd_id1} +| | Add interface to bridge domain | ${dut2} | ${vhost_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2} +| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2} + | Add PCI devices to DUTs in 3-node single link topology | | [Documentation] | | ... | Add PCI devices to VPP configuration file. @@ -1506,6 +1593,10 @@ | | ${dut2_if2_pci}= | Get Interface PCI Addr | ${dut2} | ${dut2_if2} | | Run keyword | DUT1.Add DPDK Dev | ${dut1_if1_pci} | ${dut1_if2_pci} | | Run keyword | DUT2.Add DPDK Dev | ${dut2_if1_pci} | ${dut2_if2_pci} +| | Set Test Variable | ${dut1_if1_pci} +| | Set Test Variable | ${dut1_if2_pci} +| | Set Test Variable | ${dut2_if1_pci} +| | Set Test Variable | ${dut2_if2_pci} | Add PCI devices to DUTs in 2-node single link topology | | [Documentation] @@ -1514,6 +1605,30 @@ | | ${dut1_if1_pci}= | Get Interface PCI Addr | ${dut1} | ${dut1_if1} | | ${dut1_if2_pci}= | Get Interface PCI Addr | ${dut1} | ${dut1_if2} | | Run keyword | DUT1.Add DPDK Dev | ${dut1_if1_pci} | ${dut1_if2_pci} +| | Set Test Variable | ${dut1_if1_pci} +| | Set Test Variable | ${dut1_if2_pci} + +| Add VLAN Strip Offload switch off between DUTs in 3-node single link topology +| | [Documentation] +| | ... | Add VLAN Strip Offload switch off on PCI devices between DUTs to VPP +| | ... | configuration file. +| | ... +| | Run keyword | DUT1.Add DPDK Dev Parameter | ${dut1_if2_pci} +| | ... | vlan-strip-offload | off +| | Run keyword | DUT2.Add DPDK Dev Parameter | ${dut2_if1_pci} +| | ... | vlan-strip-offload | off + +| Add DPDK bonded ethernet interfaces to DUTs in 3-node single link topology +| | [Documentation] +| | ... | Add DPDK bonded Ethernet interfaces with mode XOR and transmit policy +| | ... | l34 to VPP configuration file. +| | ... +| | Run keyword | DUT1.Add DPDK Eth Bond Dev | 0 | 2 | l34 | ${dut1_if2_pci} +| | Run keyword | DUT2.Add DPDK Eth Bond Dev | 0 | 2 | l34 | ${dut2_if1_pci} + +| Add DPDK bonded ethernet interfaces to topology file in 3-node single link topology +| | Add Bond Eth Interface | ${dut1} | ${dut1_eth_bond_if1_name} +| | Add Bond Eth Interface | ${dut2} | ${dut2_eth_bond_if1_name} | Configure guest VM with dpdk-testpmd connected via vhost-user | | [Documentation] diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot new file mode 100644 index 0000000000..565150e3b0 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot @@ -0,0 +1,263 @@ +# 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 | DOT1Q | L2BDMACLRN | BASE | VHOST | 1VM +| ... | VHOST_1024 | LBOND | LBOND_DPDK | LBOND_MODE_XOR | LBOND_LB_L34 +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *Raw results L2BD test cases with vhost and dpdk link bonding* +| ... +| ... | *[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. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK +| ... | link bonding (mode XOR, transmit policy l34) on link between DUT1 and +| ... | DUT2 and L2 bridge-domain with 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=1024, 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, 254 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. + +*** Variables *** +| ${dut1_eth_bond_if1}= | eth_bond1 +| ${dut1_eth_bond_if1_name}= | BondEthernet0 +| ${dut2_eth_bond_if1}= | eth_bond1 +| ${dut2_eth_bond_if1_name}= | BondEthernet0 +| ${perf_qemu_qsz}= | 1024 +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${vlan_overhead}= | ${4} +# Socket names +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize} frames using single\ +| | ... | trial throughput test. +| | ... +| | [Arguments] | ${framesize} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${max_rate}= | Calculate pps | ${s_limit} +| | ... | ${get_framesize + ${vlan_overhead}} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | ${jumbo_frames}= | Set Variable If +| | ... | ${get_framesize + ${vlan_overhead}} < ${1522} | ${False} | ${True} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add VLAN Strip Offload switch off between DUTs in 3-node single link topology +| | And Add DPDK bonded Ethernet interfaces to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize + ${vlan_overhead}} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Add DPDK bonded ethernet interfaces to topology file in 3-node single link topology +| | When Initialize L2 bridge domains with Vhost-User and VLAN with DPDK link bonding in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Traffic should pass with maximum rate | ${perf_trial_duration} +| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} + +*** Test Cases *** +| tc01-64B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${64} | wt=1 | rxq=1 + +| tc02-1518B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${1518} | wt=1 | rxq=1 + +| tc03-9000B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${9000} | wt=1 | rxq=1 + +| tc04-IMIX-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for IMIX_v4_1 frames using single\ +| | ... | trial throughput test. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=IMIX_v4_1 | wt=1 | rxq=1 + +| tc05-64B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${64} | wt=2 | rxq=1 + +| tc06-1518B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${1518} | wt=2 | rxq=1 + +| tc07-9000B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${9000} | wt=2 | rxq=1 + +| tc08-IMIX-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for IMIX_v4_1 frames using single\ +| | ... | trial throughput test. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=IMIX_v4_1 | wt=2 | rxq=1 + +| tc09-64B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${64} | wt=4 | rxq=2 + +| tc10-1518B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${1518} | wt=4 | rxq=2 + +| tc11-9000B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${9000} | wt=4 | rxq=2 + +| tc12-IMIX-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for IMIX_v4_1 frames using single\ +| | ... | trial throughput test. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=IMIX_v4_1 | wt=4 | rxq=2 diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..f87515369b --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdrdisc.robot @@ -0,0 +1,429 @@ +# 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 | DOT1Q | L2BDMACLRN | BASE | VHOST | VM +| ... | VHOST_1024 | LBOND | LBOND_DPDK | LBOND_MODE_XOR | LBOND_LB_L34 +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| 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 +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput L2BD test cases with vhost and +| ... | dpdk link bonding* +| ... +| ... | *[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. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK +| ... | link bonding (mode XOR, transmit policy l34) on link between DUT1 and +| ... | DUT2 and L2 bridge-domain with 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=1024, 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. + +*** Variables *** +| ${dut1_eth_bond_if1}= | eth_bond1 +| ${dut1_eth_bond_if1_name}= | BondEthernet0 +| ${dut2_eth_bond_if1}= | eth_bond1 +| ${dut2_eth_bond_if1_name}= | BondEthernet0 +| ${perf_qemu_qsz}= | 1024 +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${vlan_overhead}= | ${4} +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# Socket names +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Discover NDR or PDR for ${framesize} frames using xxx\ +| | ... | trial throughput test. +| | ... +| | [Arguments] | ${wt} | ${rxq} | ${framesize} | ${min_rate} | ${search_type} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${max_rate}= | Calculate pps | ${s_limit} +| | ... | ${get_framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | ${jumbo_frames}= | Set Variable If +| | ... | ${get_framesize + ${vlan_overhead}} < ${1522} | ${False} | ${True} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add VLAN Strip Offload switch off between DUTs in 3-node single link topology +| | And Add DPDK bonded Ethernet interfaces to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize + ${vlan_overhead}} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Add DPDK bonded ethernet interfaces to topology file in 3-node single link topology +| | When Initialize L2 bridge domains with Vhost-User and VLAN with DPDK link bonding in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Run Keyword If | '${search_type}' == 'NDR' +| | ... | Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ELSE IF | '${search_type}' == 'PDR' +| | ... | Find PDR using binary search and pps +| | ... | ${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-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=NDR + +| tc02-64B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=PDR + +| tc03-1518B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=NDR + +| tc04-1518B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=PDR + +| tc05-9000B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=NDR + +| tc06-9000B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=PDR + +| tc07-IMIX-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=NDR + +| tc08-IMIX-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=PDR + +| tc09-64B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=NDR + +| tc10-64B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=PDR + +| tc11-1518B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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] | 1518B | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=NDR + +| tc12-1518B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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] | 1518B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=PDR + +| tc13-9000B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps. +| | ... +| | [Tags] | 9000B | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=NDR + +| tc14-9000B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=PDR + +| tc15-IMIX-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=NDR + +| tc16-IMIX-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=PDR + +| tc17-64B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps. +| | ... +| | [Tags] | 64B | 4T4C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${64} | min_rate=${10000} | search_type=NDR + +| tc18-64B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${64} | min_rate=${10000} | search_type=PDR + +| tc19-1518B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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] | 1518B | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${1518} | min_rate=${10000} | search_type=NDR + +| tc20-1518B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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] | 1518B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${1518} | min_rate=${10000} | search_type=PDR + +| tc21-9000B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps. +| | ... +| | [Tags] | 9000B | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${9000} | min_rate=${10000} | search_type=NDR + +| tc22-9000B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${9000} | min_rate=${10000} | search_type=PDR + +| tc23-IMIX-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=NDR + +| tc24-IMIX-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=PDR diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot new file mode 100644 index 0000000000..5aae73d514 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot @@ -0,0 +1,260 @@ +# 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 | DOT1Q | L2XCFWD | BASE | VHOST | 1VM +| ... | VHOST_1024 | LBOND | LBOND_DPDK | LBOND_MODE_XOR | LBOND_LB_L34 +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *Raw results L2XC test cases with vhost and dpdk link bonding* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK +| ... | link bonding (mode XOR, transmit policy l34) on link between DUT1 and +| ... | DUT2 and L2 cross- connect. 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=1024, 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, 254 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. + +*** Variables *** +| ${dut1_eth_bond_if1}= | eth_bond1 +| ${dut1_eth_bond_if1_name}= | BondEthernet0 +| ${dut2_eth_bond_if1}= | eth_bond1 +| ${dut2_eth_bond_if1_name}= | BondEthernet0 +| ${perf_qemu_qsz}= | 1024 +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${vlan_overhead}= | ${4} +# Socket names +| ${sock1}= | /tmp/sock-1 +| ${sock2}= | /tmp/sock-2 +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize} frames using single\ +| | ... | trial throughput test. +| | ... +| | [Arguments] | ${framesize} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${max_rate}= | Calculate pps | ${s_limit} +| | ... | ${get_framesize + ${vlan_overhead}} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | ${jumbo_frames}= | Set Variable If +| | ... | ${get_framesize + ${vlan_overhead}} < ${1522} | ${False} | ${True} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add VLAN Strip Offload switch off between DUTs in 3-node single link topology +| | And Add DPDK bonded Ethernet interfaces to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize + ${vlan_overhead}} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Add DPDK bonded ethernet interfaces to topology file in 3-node single link topology +| | When Initialize L2 xconnect with Vhost-User and VLAN with DPDK link bonding in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Traffic should pass with maximum rate | ${perf_trial_duration} +| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} + +*** Test Cases *** +| tc01-64B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${64} | wt=1 | rxq=1 + +| tc02-1518B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${1518} | wt=1 | rxq=1 + +| tc03-9000B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${9000} | wt=1 | rxq=1 + +| tc04-IMIX-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for IMIX_v4_1 frames using single\ +| | ... | trial throughput test. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=IMIX_v4_1 | wt=1 | rxq=1 + +| tc05-64B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${64} | wt=2 | rxq=1 + +| tc06-1518B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${1518} | wt=2 | rxq=1 + +| tc07-9000B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${9000} | wt=2 | rxq=1 + +| tc08-IMIX-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for IMIX_v4_1 frames using single\ +| | ... | trial throughput test. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=IMIX_v4_1 | wt=2 | rxq=1 + +| tc09-64B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${64} | wt=4 | rxq=2 + +| tc10-1518B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${1518} | wt=4 | rxq=2 + +| tc11-9000B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${9000} | wt=4 | rxq=2 + +| tc12-IMIX-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for IMIX_v4_1 frames using single\ +| | ... | trial throughput test. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=IMIX_v4_1 | wt=4 | rxq=2 diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..1077d1859b --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdrdisc.robot @@ -0,0 +1,428 @@ +# 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 | DOT1Q | L2XCFWD | BASE | VHOST | VM +| ... | VHOST_1024 | LBOND | LBOND_DPDK | LBOND_MODE_XOR | LBOND_LB_L34 +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| 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 +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput L2XC test cases with vhost and +| ... | dpdk link bonding* +| ... +| ... | *[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. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK +| ... | link bonding (mode XOR, transmit policy l34) on link between DUT1 and +| ... | DUT2 and L2 cross- connect. 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=1024, 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. + +*** Variables *** +| ${dut1_eth_bond_if1}= | eth_bond1 +| ${dut1_eth_bond_if1_name}= | BondEthernet0 +| ${dut2_eth_bond_if1}= | eth_bond1 +| ${dut2_eth_bond_if1_name}= | BondEthernet0 +| ${perf_qemu_qsz}= | 1024 +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${vlan_overhead}= | ${4} +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# Socket names +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize} frames using single\ +| | ... | trial throughput test. +| | ... +| | [Arguments] | ${wt} | ${rxq} | ${framesize} | ${min_rate} | ${search_type} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${max_rate}= | Calculate pps | ${s_limit} +| | ... | ${get_framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | ${jumbo_frames}= | Set Variable If +| | ... | ${get_framesize + ${vlan_overhead}} < ${1522} | ${False} | ${True} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add VLAN Strip Offload switch off between DUTs in 3-node single link topology +| | And Add DPDK bonded Ethernet interfaces to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize + ${vlan_overhead}} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Add DPDK bonded ethernet interfaces to topology file in 3-node single link topology +| | When Initialize L2 xconnect with Vhost-User and VLAN with DPDK link bonding in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Run Keyword If | '${search_type}' == 'NDR' +| | ... | Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ELSE IF | '${search_type}' == 'PDR' +| | ... | Find PDR using binary search and pps +| | ... | ${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-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=NDR + +| tc02-64B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=PDR + +| tc03-1518B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=NDR + +| tc04-1518B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=PDR + +| tc05-9000B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=NDR + +| tc06-9000B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=PDR + +| tc07-IMIX-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=NDR + +| tc08-IMIX-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=PDR + +| tc09-64B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=NDR + +| tc10-64B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=PDR + +| tc11-1518B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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] | 1518B | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=NDR + +| tc12-1518B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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] | 1518B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=PDR + +| tc13-9000B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps. +| | ... +| | [Tags] | 9000B | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=NDR + +| tc14-9000B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=PDR + +| tc15-IMIX-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=NDR + +| tc16-IMIX-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=PDR + +| tc17-64B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps. +| | ... +| | [Tags] | 64B | 4T4C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${64} | min_rate=${10000} | search_type=NDR + +| tc18-64B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${64} | min_rate=${10000} | search_type=PDR + +| tc19-1518B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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] | 1518B | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${1518} | min_rate=${10000} | search_type=NDR + +| tc20-1518B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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] | 1518B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${1518} | min_rate=${10000} | search_type=PDR + +| tc21-9000B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps. +| | ... +| | [Tags] | 9000B | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${9000} | min_rate=${10000} | search_type=NDR + +| tc22-9000B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${9000} | min_rate=${10000} | search_type=PDR + +| tc23-IMIX-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=NDR + +| tc24-IMIX-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=PDR diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot b/tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot new file mode 100644 index 0000000000..f3f0593299 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot @@ -0,0 +1,263 @@ +# 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-X710 | DOT1Q | L2BDMACLRN | BASE | VHOST | 1VM +| ... | VHOST_1024 | LBOND | LBOND_DPDK | LBOND_MODE_XOR | LBOND_LB_L34 +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *Raw results L2BD test cases with vhost and dpdk link bonding* +| ... +| ... | *[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. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK +| ... | link bonding (mode XOR, transmit policy l34) on link between DUT1 and +| ... | DUT2 and L2 bridge-domain with 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=1024, burst=64. DUT1, DUT2 are +| ... | tested with 2p10GE NIC X710 Fortville 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, 254 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. + +*** Variables *** +| ${dut1_eth_bond_if1}= | eth_bond1 +| ${dut1_eth_bond_if1_name}= | BondEthernet0 +| ${dut2_eth_bond_if1}= | eth_bond1 +| ${dut2_eth_bond_if1_name}= | BondEthernet0 +| ${perf_qemu_qsz}= | 1024 +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${vlan_overhead}= | ${4} +# Socket names +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# X710 bandwidth limit +| ${s_limit}= | ${10000000000} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize} frames using single\ +| | ... | trial throughput test. +| | ... +| | [Arguments] | ${framesize} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${max_rate}= | Calculate pps | ${s_limit} +| | ... | ${get_framesize + ${vlan_overhead}} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | ${jumbo_frames}= | Set Variable If +| | ... | ${get_framesize + ${vlan_overhead}} < ${1522} | ${False} | ${True} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add VLAN Strip Offload switch off between DUTs in 3-node single link topology +| | And Add DPDK bonded Ethernet interfaces to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize + ${vlan_overhead}} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Add DPDK bonded ethernet interfaces to topology file in 3-node single link topology +| | When Initialize L2 bridge domains with Vhost-User and VLAN with DPDK link bonding in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Traffic should pass with maximum rate | ${perf_trial_duration} +| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} + +*** Test Cases *** +| tc01-64B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${64} | wt=1 | rxq=1 + +| tc02-1518B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${1518} | wt=1 | rxq=1 + +| tc03-9000B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${9000} | wt=1 | rxq=1 + +| tc04-IMIX-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for IMIX_v4_1 frames using single\ +| | ... | trial throughput test. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=IMIX_v4_1 | wt=1 | rxq=1 + +| tc05-64B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${64} | wt=2 | rxq=1 + +| tc06-1518B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${1518} | wt=2 | rxq=1 + +| tc07-9000B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${9000} | wt=2 | rxq=1 + +| tc08-IMIX-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for IMIX_v4_1 frames using single\ +| | ... | trial throughput test. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=IMIX_v4_1 | wt=2 | rxq=1 + +| tc09-64B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${64} | wt=4 | rxq=2 + +| tc10-1518B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${1518} | wt=4 | rxq=2 + +| tc11-9000B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=${9000} | wt=4 | rxq=2 + +| tc12-IMIX-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for IMIX_v4_1 frames using single\ +| | ... | trial throughput test. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | framesize=IMIX_v4_1 | wt=4 | rxq=2 diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..9810012120 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdrdisc.robot @@ -0,0 +1,429 @@ +# 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-X710 | DOT1Q | L2BDMACLRN | BASE | VHOST | VM +| ... | VHOST_1024 | LBOND | LBOND_DPDK | LBOND_MODE_XOR | LBOND_LB_L34 +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X710 +| 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 +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput L2BD test cases with vhost and +| ... | dpdk link bonding* +| ... +| ... | *[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. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK +| ... | link bonding (mode XOR, transmit policy l34) on link between DUT1 and +| ... | DUT2 and L2 bridge-domain with 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=1024, burst=64. DUT1, DUT2 are +| ... | tested with 2p10GE NIC X710 Fortville 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. + +*** Variables *** +| ${dut1_eth_bond_if1}= | eth_bond1 +| ${dut1_eth_bond_if1_name}= | BondEthernet0 +| ${dut2_eth_bond_if1}= | eth_bond1 +| ${dut2_eth_bond_if1_name}= | BondEthernet0 +| ${perf_qemu_qsz}= | 1024 +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${vlan_overhead}= | ${4} +# X710 bandwidth limit +| ${s_limit}= | ${10000000000} +# Socket names +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Discover NDR or PDR for ${framesize} frames using xxx\ +| | ... | trial throughput test. +| | ... +| | [Arguments] | ${wt} | ${rxq} | ${framesize} | ${min_rate} | ${search_type} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${max_rate}= | Calculate pps | ${s_limit} +| | ... | ${get_framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | ${jumbo_frames}= | Set Variable If +| | ... | ${get_framesize + ${vlan_overhead}} < ${1522} | ${False} | ${True} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add VLAN Strip Offload switch off between DUTs in 3-node single link topology +| | And Add DPDK bonded Ethernet interfaces to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize + ${vlan_overhead}} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Add DPDK bonded ethernet interfaces to topology file in 3-node single link topology +| | When Initialize L2 bridge domains with Vhost-User and VLAN with DPDK link bonding in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Run Keyword If | '${search_type}' == 'NDR' +| | ... | Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ELSE IF | '${search_type}' == 'PDR' +| | ... | Find PDR using binary search and pps +| | ... | ${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-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=NDR + +| tc02-64B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=PDR + +| tc03-1518B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=NDR + +| tc04-1518B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=PDR + +| tc05-9000B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=NDR + +| tc06-9000B-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=PDR + +| tc07-IMIX-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=NDR + +| tc08-IMIX-1t1c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=PDR + +| tc09-64B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=NDR + +| tc10-64B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=PDR + +| tc11-1518B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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] | 1518B | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=NDR + +| tc12-1518B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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] | 1518B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=PDR + +| tc13-9000B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps. +| | ... +| | [Tags] | 9000B | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=NDR + +| tc14-9000B-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=PDR + +| tc15-IMIX-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=NDR + +| tc16-IMIX-2t2c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=PDR + +| tc17-64B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps. +| | ... +| | [Tags] | 64B | 4T4C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${64} | min_rate=${10000} | search_type=NDR + +| tc18-64B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${64} | min_rate=${10000} | search_type=PDR + +| tc19-1518B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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] | 1518B | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${1518} | min_rate=${10000} | search_type=NDR + +| tc20-1518B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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] | 1518B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${1518} | min_rate=${10000} | search_type=PDR + +| tc21-9000B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps. +| | ... +| | [Tags] | 9000B | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${9000} | min_rate=${10000} | search_type=NDR + +| tc22-9000B-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${9000} | min_rate=${10000} | search_type=PDR + +| tc23-IMIX-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=NDR + +| tc24-IMIX-4t4c-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=PDR diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot b/tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot new file mode 100644 index 0000000000..5f9ad2b8cf --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot @@ -0,0 +1,260 @@ +# 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-X710 | DOT1Q | L2XCFWD | BASE | VHOST | 1VM +| ... | VHOST_1024 | LBOND | LBOND_DPDK | LBOND_MODE_XOR | LBOND_LB_L34 +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *Raw results L2XC test cases with vhost and dpdk link bonding* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK +| ... | link bonding (mode XOR, transmit policy l34) on link between DUT1 and +| ... | DUT2 and L2 cross- connect. 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=1024, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X710 +| ... | Fortville 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, 254 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. + +*** Variables *** +| ${dut1_eth_bond_if1}= | eth_bond1 +| ${dut1_eth_bond_if1_name}= | BondEthernet0 +| ${dut2_eth_bond_if1}= | eth_bond1 +| ${dut2_eth_bond_if1_name}= | BondEthernet0 +| ${perf_qemu_qsz}= | 1024 +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${vlan_overhead}= | ${4} +# Socket names +| ${sock1}= | /tmp/sock-1 +| ${sock2}= | /tmp/sock-2 +# X710 bandwidth limit +| ${s_limit}= | ${10000000000} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize} frames using single\ +| | ... | trial throughput test. +| | ... +| | [Arguments] | ${framesize} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${max_rate}= | Calculate pps | ${s_limit} +| | ... | ${get_framesize + ${vlan_overhead}} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | ${jumbo_frames}= | Set Variable If +| | ... | ${get_framesize + ${vlan_overhead}} < ${1522} | ${False} | ${True} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add VLAN Strip Offload switch off between DUTs in 3-node single link topology +| | And Add DPDK bonded Ethernet interfaces to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize + ${vlan_overhead}} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Add DPDK bonded ethernet interfaces to topology file in 3-node single link topology +| | When Initialize L2 xconnect with Vhost-User and VLAN with DPDK link bonding in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Traffic should pass with maximum rate | ${perf_trial_duration} +| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} + +*** Test Cases *** +| tc01-64B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${64} | wt=1 | rxq=1 + +| tc02-1518B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${1518} | wt=1 | rxq=1 + +| tc03-9000B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${9000} | wt=1 | rxq=1 + +| tc04-IMIX-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for IMIX_v4_1 frames using single\ +| | ... | trial throughput test. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=IMIX_v4_1 | wt=1 | rxq=1 + +| tc05-64B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${64} | wt=2 | rxq=1 + +| tc06-1518B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${1518} | wt=2 | rxq=1 + +| tc07-9000B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${9000} | wt=2 | rxq=1 + +| tc08-IMIX-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for IMIX_v4_1 frames using single\ +| | ... | trial throughput test. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=IMIX_v4_1 | wt=2 | rxq=1 + +| tc09-64B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${64} | wt=4 | rxq=2 + +| tc10-1518B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${1518} | wt=4 | rxq=2 + +| tc11-9000B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=${9000} | wt=4 | rxq=2 + +| tc12-IMIX-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for IMIX_v4_1 frames using single\ +| | ... | trial throughput test. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | framesize=IMIX_v4_1 | wt=4 | rxq=2 diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..47c5c2ddc3 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdrdisc.robot @@ -0,0 +1,428 @@ +# 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-X710 | DOT1Q | L2XCFWD | BASE | VHOST | VM +| ... | VHOST_1024 | LBOND | LBOND_DPDK | LBOND_MODE_XOR | LBOND_LB_L34 +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X710 +| 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 +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput L2XC test cases with vhost and +| ... | dpdk link bonding* +| ... +| ... | *[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. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK +| ... | link bonding (mode XOR, transmit policy l34) on link between DUT1 and +| ... | DUT2 and L2 cross- connect. 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 +| ... | forwarding mode is set to io, rxd/txd=1024, burst=64. DUT1, DUT2 are +| ... | core and 4 cores dedicated for io), tested with 2p10GE NIC X710 +| ... | Fortville 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. + +*** Variables *** +| ${dut1_eth_bond_if1}= | eth_bond1 +| ${dut1_eth_bond_if1_name}= | BondEthernet0 +| ${dut2_eth_bond_if1}= | eth_bond1 +| ${dut2_eth_bond_if1_name}= | BondEthernet0 +| ${perf_qemu_qsz}= | 1024 +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${vlan_overhead}= | ${4} +# X710 bandwidth limit +| ${s_limit}= | ${10000000000} +# Socket names +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize} frames using single\ +| | ... | trial throughput test. +| | ... +| | [Arguments] | ${wt} | ${rxq} | ${framesize} | ${min_rate} | ${search_type} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${max_rate}= | Calculate pps | ${s_limit} +| | ... | ${get_framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | ${jumbo_frames}= | Set Variable If +| | ... | ${get_framesize + ${vlan_overhead}} < ${1522} | ${False} | ${True} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add VLAN Strip Offload switch off between DUTs in 3-node single link topology +| | And Add DPDK bonded Ethernet interfaces to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize + ${vlan_overhead}} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Add DPDK bonded ethernet interfaces to topology file in 3-node single link topology +| | When Initialize L2 xconnect with Vhost-User and VLAN with DPDK link bonding in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | ... | jumbo_frames=${jumbo_frames} +| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Run Keyword If | '${search_type}' == 'NDR' +| | ... | Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ELSE IF | '${search_type}' == 'PDR' +| | ... | Find PDR using binary search and pps +| | ... | ${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-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=NDR + +| tc02-64B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=PDR + +| tc03-1518B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=NDR + +| tc04-1518B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=PDR + +| tc05-9000B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=NDR + +| tc06-9000B-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=PDR + +| tc07-IMIX-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=NDR + +| tc08-IMIX-1t1c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=1 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=PDR + +| tc09-64B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=NDR + +| tc10-64B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${64} | min_rate=${10000} | search_type=PDR + +| tc11-1518B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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] | 1518B | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=NDR + +| tc12-1518B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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] | 1518B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${1518} | min_rate=${10000} | search_type=PDR + +| tc13-9000B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps. +| | ... +| | [Tags] | 9000B | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=NDR + +| tc14-9000B-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=${9000} | min_rate=${10000} | search_type=PDR + +| tc15-IMIX-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=NDR + +| tc16-IMIX-2t2c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=2 | rxq=1 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=PDR + +| tc17-64B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps. +| | ... +| | [Tags] | 64B | 4T4C | STHREAD | NDRDISC +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${64} | min_rate=${10000} | search_type=NDR + +| tc18-64B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${64} | min_rate=${10000} | search_type=PDR + +| tc19-1518B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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] | 1518B | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${1518} | min_rate=${10000} | search_type=NDR + +| tc20-1518B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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] | 1518B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${1518} | min_rate=${10000} | search_type=PDR + +| tc21-9000B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps. +| | ... +| | [Tags] | 9000B | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${9000} | min_rate=${10000} | search_type=NDR + +| tc22-9000B-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching 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 10kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=${9000} | min_rate=${10000} | search_type=PDR + +| tc23-IMIX-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=NDR + +| tc24-IMIX-4t4c-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | [Template] | Discover NDR or PDR for 1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| | wt=4 | rxq=2 | framesize=IMIX_v4_1 | min_rate=${10000} | search_type=PDR