Add VXLAN scale perf tests 30/14730/49
authorJan Gelety <jgelety@cisco.com>
Fri, 7 Sep 2018 13:32:06 +0000 (15:32 +0200)
committerJan Gelety <jgelety@cisco.com>
Wed, 10 Oct 2018 06:45:42 +0000 (08:45 +0200)
Jira: CSIT-1273

Change-Id: Ic2a41661c158384a5aaa7d4e73f30ffca13ddf82
Signed-off-by: Jan Gelety <jgelety@cisco.com>
34 files changed:
docs/tag_documentation.rst
resources/libraries/python/IPv4Util.py
resources/libraries/python/InterfaceUtil.py
resources/libraries/python/L2Util.py
resources/libraries/python/VatExecutor.py
resources/libraries/python/ssh.py
resources/libraries/robot/ip/ip4.robot
resources/libraries/robot/performance/performance_configuration.robot
resources/libraries/robot/performance/performance_setup.robot
resources/templates/vat/show_ip_fib.vat [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-3n-dot1qip4-vlan100ip4src254ip4dst254.py [new file with mode: 0755]
resources/traffic_profiles/trex/trex-sl-3n-dot1qip4-vlan10ip4src254ip4dst254.py [new file with mode: 0755]
resources/traffic_profiles/trex/trex-sl-3n-dot1qip4-vlan1ip4src254ip4dst254.py [new file with mode: 0755]
resources/traffic_profiles/trex/trex-sl-3n-dot1qip4-vlan1kip4src254ip4dst254.py [new file with mode: 0755]
tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-mrr.robot
tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdr.robot
tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/ip4_tunnels/10ge2p1x710-ethip4vxlan-l2bdbasemaclrn-mrr.robot
tests/vpp/perf/ip4_tunnels/10ge2p1x710-ethip4vxlan-l2bdbasemaclrn-ndrpdr.robot

index 55a15b4..33d38cf 100644 (file)
@@ -98,6 +98,54 @@ Scaling TAGs
 
     2x1,000,000 entries in single fib table
 
+.. topic:: L2BD_1
+
+    Test with 1 L2 bridge domain.
+
+.. topic:: L2BD_10
+
+    Test with 10 L2 bridge domains.
+
+.. topic:: L2BD_100
+
+    Test with 100 L2 bridge domains.
+
+.. topic:: L2BD_1K
+
+    Test with 1000 L2 bridge domains.
+
+.. topic:: VLAN_1
+
+    Test with 1 VLAN sub-interface.
+
+.. topic:: VLAN_10
+
+    Test with 10 VLAN sub-interfaces.
+
+.. topic:: VLAN_100
+
+    Test with 100 VLAN sub-interfaces.
+
+.. topic:: VLAN_1K
+
+    Test with 1000 VLAN sub-interfaces.
+
+.. topic:: VXLAN_1
+
+    Test with 1 VXLAN tunnel.
+
+.. topic:: VXLAN_10
+
+    Test with 10 VXLAN tunnels.
+
+.. topic:: VXLAN_100
+
+    Test with 100 VXLAN tunnels.
+
+.. topic:: VXLAN_1K
+
+    Test with 1000 VXLAN tunnels.
+
 .. topic:: TNL_1000
 
     IPSec in tunnel mode - 1000 tunnels.
index fa9d0fe..c40e391 100644 (file)
@@ -18,6 +18,7 @@ from robot.api.deco import keyword
 
 from resources.libraries.python.topology import Topology
 from resources.libraries.python.IPv4Setup import get_node
+from resources.libraries.python.VatExecutor import VatTerminal
 from resources.libraries.python.ssh import exec_cmd
 
 
@@ -227,3 +228,13 @@ class IPv4Util(object):
         if ret_code != 0:
             raise RuntimeError("Arp set not successful, reason:{}".
                                format(stderr))
+
+    @staticmethod
+    def vpp_show_ip_table(node):
+        """Get IP FIB table data from a VPP node.
+
+        :param node: VPP node.
+        :type node: dict
+        """
+        with VatTerminal(node, json_param=False) as vat:
+            vat.vat_terminal_exec_cmd_from_template("show_ip_fib.vat")
index 7fc7f85..c0f37f3 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""Interface util library"""
+"""Interface util library."""
 
 from time import time, sleep
 
 from robot.api import logger
 
-from resources.libraries.python.ssh import SSH
-from resources.libraries.python.IPUtil import convert_ipv4_netmask_prefix
+from resources.libraries.python.CpuUtils import CpuUtils
 from resources.libraries.python.DUTSetup import DUTSetup
-from resources.libraries.python.ssh import exec_cmd_no_error
+from resources.libraries.python.IPUtil import convert_ipv4_netmask_prefix
+from resources.libraries.python.IPUtil import IPUtil
+from resources.libraries.python.parsers.JsonParser import JsonParser
+from resources.libraries.python.ssh import SSH, exec_cmd_no_error
 from resources.libraries.python.topology import NodeType, Topology
 from resources.libraries.python.VatExecutor import VatExecutor, VatTerminal
 from resources.libraries.python.VatJsonUtil import VatJsonUtil
 from resources.libraries.python.VPPUtil import VPPUtil
-from resources.libraries.python.parsers.JsonParser import JsonParser
-from resources.libraries.python.CpuUtils import CpuUtils
+
 
 class InterfaceUtil(object):
     """General utilities for managing interfaces"""
@@ -587,15 +588,15 @@ class InterfaceUtil(object):
                             else:
                                 raise ValueError
                     except ValueError:
-                        logger.trace('Reading numa location failed for: {0}'\
-                            .format(if_pci))
+                        logger.trace('Reading numa location failed for: {0}'
+                                     .format(if_pci))
                     else:
                         Topology.set_interface_numa_node(node, if_key,
                                                          numa_node)
                         break
             else:
-                raise RuntimeError('Update numa node failed for: {0}'\
-                    .format(if_pci))
+                raise RuntimeError('Update numa node failed for: {0}'
+                                   .format(if_pci))
 
     @staticmethod
     def update_all_numa_nodes(nodes, skip_tg=False):
@@ -663,13 +664,13 @@ class InterfaceUtil(object):
                                                sw_if_index=sw_if_index,
                                                vlan=vlan)
         if output[0]["retval"] == 0:
-            sw_subif_idx = output[0]["sw_if_index"]
+            sw_vlan_idx = output[0]["sw_if_index"]
             logger.trace('VLAN subinterface with sw_if_index {} and VLAN ID {} '
-                         'created on node {}'.format(sw_subif_idx,
+                         'created on node {}'.format(sw_vlan_idx,
                                                      vlan, node['host']))
             if_key = Topology.add_new_port(node, "vlan_subif")
-            Topology.update_interface_sw_if_index(node, if_key, sw_subif_idx)
-            ifc_name = InterfaceUtil.vpp_get_interface_name(node, sw_subif_idx)
+            Topology.update_interface_sw_if_index(node, if_key, sw_vlan_idx)
+            ifc_name = InterfaceUtil.vpp_get_interface_name(node, sw_vlan_idx)
             Topology.update_interface_name(node, if_key, ifc_name)
         else:
             raise RuntimeError('Unable to create VLAN subinterface on node {}'
@@ -678,7 +679,7 @@ class InterfaceUtil(object):
         with VatTerminal(node, False) as vat:
             vat.vat_terminal_exec_cmd('exec show interfaces')
 
-        return '{}.{}'.format(interface, vlan), sw_subif_idx
+        return '{}.{}'.format(interface, vlan), sw_vlan_idx
 
     @staticmethod
     def create_vxlan_interface(node, vni, source_ip, destination_ip):
@@ -840,12 +841,12 @@ class InterfaceUtil(object):
                                                type_subif=type_subif)
 
         if output[0]["retval"] == 0:
-            sw_subif_idx = output[0]["sw_if_index"]
+            sw_vlan_idx = output[0]["sw_if_index"]
             logger.trace('Created subinterface with index {}'
-                         .format(sw_subif_idx))
+                         .format(sw_vlan_idx))
             if_key = Topology.add_new_port(node, "subinterface")
-            Topology.update_interface_sw_if_index(node, if_key, sw_subif_idx)
-            ifc_name = InterfaceUtil.vpp_get_interface_name(node, sw_subif_idx)
+            Topology.update_interface_sw_if_index(node, if_key, sw_vlan_idx)
+            ifc_name = InterfaceUtil.vpp_get_interface_name(node, sw_vlan_idx)
             Topology.update_interface_name(node, if_key, ifc_name)
         else:
             raise RuntimeError('Unable to create sub-interface on node {}'
@@ -855,7 +856,7 @@ class InterfaceUtil(object):
             vat.vat_terminal_exec_cmd('exec show interfaces')
 
         name = '{}.{}'.format(interface, sub_id)
-        return name, sw_subif_idx
+        return name, sw_vlan_idx
 
     @staticmethod
     def create_gre_tunnel_interface(node, source_ip, destination_ip):
@@ -1317,13 +1318,13 @@ class InterfaceUtil(object):
         driver testing on DUT.
 
         :param node: DUT node.
-        :param iface_key: Interface key from topology file.
+        :param ifc_key: Interface key from topology file.
         :param numvfs: Number of VFs to initialize, 0 - disable the VFs.
         :param topology_type: Topology type.
         :type node: dict
-        :iface_key: str
+        :type ifc_key: str
         :type numvfs: int
-        :typ topology_type: str
+        :type topology_type: str
         :returns: Virtual Function topology interface keys.
         :rtype: list
         """
@@ -1335,8 +1336,8 @@ class InterfaceUtil(object):
         pf_mac_addr = Topology.get_interface_mac(node, ifc_key).split(":")
         uio_driver = Topology.get_uio_driver(node)
         kernel_driver = Topology.get_interface_driver(node, ifc_key)
-        current_driver = DUTSetup.get_pci_dev_driver(node,\
-            pf_pci_addr.replace(':', r'\:'))
+        current_driver = DUTSetup.get_pci_dev_driver(
+            node, pf_pci_addr.replace(':', r'\:'))
 
         VPPUtil.stop_vpp_service(node)
         if current_driver != kernel_driver:
@@ -1382,3 +1383,235 @@ class InterfaceUtil(object):
             vf_ifc_keys.append(vf_ifc_key)
 
         return vf_ifc_keys
+
+    @staticmethod
+    def vpp_create_multiple_vxlan_ipv4_tunnels(
+            node, node_vxlan_if, node_vlan_if, op_node, op_node_if,
+            n_tunnels, vni_start, src_ip_start, dst_ip_start, ip_step, ip_limit,
+            bd_id_start):
+        """Create multiple VXLAN tunnel interfaces and VLAN sub-interfaces on
+        VPP node.
+
+        Put each pair of VXLAN tunnel interface and VLAN sub-interface to
+        separate bridge-domain.
+
+        :param node: VPP node to create VXLAN tunnel interfaces.
+        :param node_vxlan_if: VPP node interface key to create VXLAN tunnel
+            interfaces.
+        :param node_vlan_if: VPP node interface key to create VLAN
+            sub-interface.
+        :param op_node: Opposite VPP node for VXLAN tunnel interfaces.
+        :param op_node_if: Opposite VPP node interface key for VXLAN tunnel
+            interfaces.
+        :param n_tunnels: Number of tunnel interfaces to create.
+        :param vni_start: VNI start ID.
+        :param src_ip_start: VXLAN tunnel source IP address start.
+        :param dst_ip_start: VXLAN tunnel destination IP address start.
+        :param ip_step: IP address incremental step.
+        :param ip_limit: IP address limit.
+        :param bd_id_start: Bridge-domain ID start.
+        :type node: dict
+        :type node_vxlan_if: str
+        :type node_vlan_if: str
+        :type op_node: dict
+        :type op_node_if: str
+        :type n_tunnels: int
+        :type vni_start: int
+        :type src_ip_start: str
+        :type dst_ip_start: str
+        :type ip_step: int
+        :type ip_limit: str
+        :type bd_id_start: int
+        """
+        # configure IPs, create VXLAN interfaces and VLAN sub-interfaces
+        vxlan_count = InterfaceUtil.vpp_create_vxlan_and_vlan_interfaces(
+            node, node_vxlan_if, node_vlan_if, n_tunnels, vni_start,
+            src_ip_start, dst_ip_start, ip_step, ip_limit)
+
+        # update topology with VXLAN interfaces and VLAN sub-interfaces data
+        # and put interfaces up
+        InterfaceUtil.vpp_put_vxlan_and_vlan_interfaces_up(
+            node, vxlan_count, node_vlan_if)
+
+        # configure bridge domains, ARPs and routes
+        InterfaceUtil.vpp_put_vxlan_and_vlan_interfaces_to_bridge_domain(
+            node, node_vxlan_if, vxlan_count, op_node, op_node_if, dst_ip_start,
+            ip_step, bd_id_start)
+
+    @staticmethod
+    def vpp_create_vxlan_and_vlan_interfaces(
+            node, node_vxlan_if, node_vlan_if, vxlan_count, vni_start,
+            src_ip_start, dst_ip_start, ip_step, ip_limit):
+        """
+        Configure IPs, create VXLAN interfaces and VLAN sub-interfaces on VPP
+        node.
+
+        :param node: VPP node.
+        :param node_vxlan_if: VPP node interface key to create VXLAN tunnel
+            interfaces.
+        :param node_vlan_if: VPP node interface key to create VLAN
+            sub-interface.
+        :param vxlan_count: Number of tunnel interfaces to create.
+        :param vni_start: VNI start ID.
+        :param src_ip_start: VXLAN tunnel source IP address start.
+        :param dst_ip_start: VXLAN tunnel destination IP address start.
+        :param ip_step: IP address incremental step.
+        :param ip_limit: IP address limit.
+        :type node: dict
+        :type node_vxlan_if: str
+        :type node_vlan_if: str
+        :type vxlan_count: int
+        :type vni_start: int
+        :type src_ip_start: str
+        :type dst_ip_start: str
+        :type ip_step: int
+        :type ip_limit: str
+        :returns: Number of created VXLAN interfaces.
+        :rtype: int
+        """
+        commands = list()
+
+        src_ip_start_int = IPUtil.ip_to_int(src_ip_start)
+        dst_ip_start_int = IPUtil.ip_to_int(dst_ip_start)
+        ip_limit_int = IPUtil.ip_to_int(ip_limit)
+
+        tmp_fn = '/tmp/create_vxlan_interfaces.config'
+        for i in range(0, vxlan_count):
+            src_ip_int = src_ip_start_int + i * ip_step
+            dst_ip_int = dst_ip_start_int + i * ip_step
+            if src_ip_int > ip_limit_int or dst_ip_int > ip_limit_int:
+                logger.warn("Can't do more iterations - IPv4 address limit "
+                            "has been reached.")
+                vxlan_count = i
+                break
+            src_ip = IPUtil.int_to_ip(src_ip_int)
+            dst_ip = IPUtil.int_to_ip(dst_ip_int)
+            commands.append(
+                'sw_interface_add_del_address sw_if_index {sw_idx} {ip}/32\n'
+                .format(sw_idx=Topology.get_interface_sw_index(
+                    node, node_vxlan_if), ip=src_ip))
+            commands.append(
+                'vxlan_add_del_tunnel src {src_ip} dst {dst_ip} vni {vni}\n'
+                .format(src_ip=src_ip, dst_ip=dst_ip, vni=vni_start+i))
+            commands.append(
+                'create_vlan_subif sw_if_index {sw_idx} vlan {vlan}\n'
+                .format(sw_idx=Topology.get_interface_sw_index(
+                    node, node_vlan_if), vlan=i+1))
+
+        VatExecutor().write_and_execute_script(node, tmp_fn, commands)
+
+        return vxlan_count
+
+    @staticmethod
+    def vpp_put_vxlan_and_vlan_interfaces_up(node, vxlan_count, node_vlan_if):
+        """
+        Update topology with VXLAN interfaces and VLAN sub-interfaces data
+        and put interfaces up.
+
+        :param node: VPP node.
+        :param vxlan_count: Number of tunnel interfaces.
+        :param node_vlan_if: VPP node interface key where VLAN sub-interfaces
+            have been created.
+        :type node: dict
+        :type vxlan_count: int
+        :type node_vlan_if: str
+        """
+        with VatTerminal(node) as vat_ter:
+            if_data = vat_ter.vat_terminal_exec_cmd_from_template(
+                'interface_dump.vat')[0]
+
+        tmp_fn = '/tmp/put_subinterfaces_up.config'
+        commands = list()
+        for i in range(0, vxlan_count):
+            vxlan_subif_key = Topology.add_new_port(node, 'vxlan_tunnel')
+            vxlan_subif_name = 'vxlan_tunnel{nr}'.format(nr=i)
+            vxlan_found = False
+            vxlan_subif_idx = None
+            vlan_subif_key = Topology.add_new_port(node, 'vlan_subif')
+            vlan_subif_name = '{if_name}.{vlan}'.format(
+                if_name=Topology.get_interface_name(
+                    node, node_vlan_if), vlan=i+1)
+            vlan_found = False
+            vlan_idx = None
+            for data in if_data:
+                if_name = data['interface_name']
+                if not vxlan_found and if_name == vxlan_subif_name:
+                    vxlan_subif_idx = data['sw_if_index']
+                    vxlan_found = True
+                elif not vlan_found and if_name == vlan_subif_name:
+                    vlan_idx = data['sw_if_index']
+                    vlan_found = True
+                if vxlan_found and vlan_found:
+                    break
+            Topology.update_interface_sw_if_index(
+                node, vxlan_subif_key, vxlan_subif_idx)
+            Topology.update_interface_name(
+                node, vxlan_subif_key, vxlan_subif_name)
+            commands.append(
+                'sw_interface_set_flags sw_if_index {sw_idx} admin-up link-up\n'
+                .format(sw_idx=vxlan_subif_idx))
+            Topology.update_interface_sw_if_index(
+                node, vlan_subif_key, vlan_idx)
+            Topology.update_interface_name(
+                node, vlan_subif_key, vlan_subif_name)
+            commands.append(
+                'sw_interface_set_flags sw_if_index {sw_idx} admin-up link-up\n'
+                .format(sw_idx=vlan_idx))
+
+        VatExecutor().write_and_execute_script(node, tmp_fn, commands)
+
+    @staticmethod
+    def vpp_put_vxlan_and_vlan_interfaces_to_bridge_domain(
+            node, node_vxlan_if, vxlan_count, op_node, op_node_if, dst_ip_start,
+            ip_step, bd_id_start):
+        """
+        Configure ARPs and routes for VXLAN interfaces and put each pair of
+        VXLAN tunnel interface and VLAN sub-interface to separate bridge-domain.
+
+        :param node: VPP node.
+        :param node_vxlan_if: VPP node interface key where VXLAN tunnel
+            interfaces have been created.
+        :param vxlan_count: Number of tunnel interfaces.
+        :param op_node: Opposite VPP node for VXLAN tunnel interfaces.
+        :param op_node_if: Opposite VPP node interface key for VXLAN tunnel
+            interfaces.
+        :param dst_ip_start: VXLAN tunnel destination IP address start.
+        :param ip_step: IP address incremental step.
+        :param bd_id_start: Bridge-domain ID start.
+        :type node: dict
+        :type node_vxlan_if: str
+        :type vxlan_count: int
+        :type op_node: dict
+        :type op_node_if:
+        :type dst_ip_start: str
+        :type ip_step: int
+        :type bd_id_start: int
+        """
+        sw_idx_vxlan = Topology.get_interface_sw_index(node, node_vxlan_if)
+
+        dst_ip_start_int = IPUtil.ip_to_int(dst_ip_start)
+
+        tmp_fn = '/tmp/configure_routes_and_bridge_domains.config'
+        commands = list()
+        for i in range(0, vxlan_count):
+            dst_ip = IPUtil.int_to_ip(dst_ip_start_int + i * ip_step)
+            commands.append(
+                'ip_neighbor_add_del sw_if_index {sw_idx} dst {ip} mac {mac}\n'
+                .format(sw_idx=sw_idx_vxlan, ip=dst_ip,
+                        mac=Topology.get_interface_mac(op_node, op_node_if)))
+            commands.append(
+                'ip_add_del_route {ip}/32 via {ip} sw_if_index {sw_idx}'
+                ' resolve-attempts 10 count 1\n'.format(
+                    ip=dst_ip, sw_idx=sw_idx_vxlan))
+            bd_id = bd_id_start + i
+            subif_id = i + 1
+            commands.append(
+                'sw_interface_set_l2_bridge sw_if_index {sw_idx} bd_id {bd_id} '
+                'shg 0 enable\n'.format(sw_idx=Topology.get_interface_sw_index(
+                    node, 'vxlan_tunnel{nr}'.format(nr=subif_id)), bd_id=bd_id))
+            commands.append(
+                'sw_interface_set_l2_bridge sw_if_index {sw_idx} bd_id {bd_id} '
+                'shg 0 enable\n'.format(sw_idx=Topology.get_interface_sw_index(
+                    node, 'vlan_subif{nr}'.format(nr=subif_id)), bd_id=bd_id))
+
+        VatExecutor().write_and_execute_script(node, tmp_fn, commands)
index 2acb6db..97cef61 100644 (file)
@@ -43,9 +43,9 @@ class L2Util(object):
         to string format (01:02:03:04:05:06).
 
         :param mac_int: MAC address in integer representation.
-        :type mac_int: str
+        :type mac_int: int
         :returns: String representation of MAC address.
-        :rtype: int
+        :rtype: str
         """
         return ':'.join(wrap("{:012x}".format(mac_int), width=2))
 
index 8b9d632..03379ba 100644 (file)
@@ -14,6 +14,7 @@
 """VAT executor library."""
 
 import json
+from os import remove
 
 from paramiko.ssh_exception import SSHException
 from robot.api import logger
@@ -133,6 +134,28 @@ class VatExecutor(object):
         self._stderr = stderr
         self._script_name = vat_name
 
+    def write_and_execute_script(self, node, tmp_fn, commands, timeout=300,
+                                 json_out=False):
+        """Write VAT commands to the script, copy it to node and execute it.
+
+        :param node: VPP node.
+        :param tmp_fn: Path to temporary file script.
+        :param commands: VAT command list.
+        :param timeout: Seconds to allow the script to run.
+        :param json_out: Require JSON output.
+        :type node: dict
+        :type tmp_fn: str
+        :type commands: list
+        :type timeout: int
+        :type json_out: bool
+        """
+        with open(tmp_fn, 'w') as tmp_f:
+            tmp_f.writelines(commands)
+
+        self.execute_script(tmp_fn, node, timeout=timeout, json_out=json_out,
+                            copy_on_execute=True)
+        remove(tmp_fn)
+
     def execute_script_json_out(self, vat_name, node, timeout=120):
         """Pass all arguments to 'execute_script' method, then cleanup returned
         json output.
index 5e33a7c..4bcfe65 100644 (file)
@@ -22,7 +22,6 @@ from paramiko import RSAKey
 from paramiko.ssh_exception import SSHException
 from scp import SCPClient
 from robot.api import logger
-from robot.utils.asserts import assert_equal
 
 __all__ = ["exec_cmd", "exec_cmd_no_error"]
 
index 0396418..8fff084 100644 (file)
 
 *** Keywords ***
 
+| Show IP FIB On All DUTs
+| | [Documentation] | Show IP FIB on all DUTs.
+| | ...
+| | ${duts}= | Get Matches | ${nodes} | DUT*
+| | :FOR | ${dut} | IN | @{duts}
+| | | VPP Show IP Table | ${nodes['${dut}']}
+
 | Configure IPv4 addresses on all DUTs
 | | [Documentation] | Setup IPv4 address on all DUTs in topology
 | | [Arguments] | ${nodes} | ${nodes_addr}
index de60cea..e812f56 100644 (file)
 | | Configure L2BD forwarding | ${dut1} | ${dut1_if1} | ${dut1s_vxlan}
 | | Configure L2BD forwarding | ${dut2} | ${dut2_if2} | ${dut2s_vxlan}
 
+| Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | [Documentation]
+| | ... | Setup L2 bridge domain topology with VLAN and VXLANoIPv4 by connecting
+| | ... | pairs of VLAN sub-interface and VXLAN interface to separate L2 bridge
+| | ... | domain on each DUT. All interfaces are brought up. IPv4 addresses
+| | ... | with prefix /32 are configured on interfaces between DUTs. VXLAN
+| | ... | sub-interfaces has same IPv4 address as interfaces.
+| | ...
+| | ... | *Arguments:*
+| | ... | - vxlan_count - VXLAN count. Type: integer
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node \
+| | ... | \| circular topology \| ${1} \|
+| | ...
+| | [Arguments] | ${vxlan_count}=${1}
+| | ...
+| | Set interfaces in path up
+| | ...
+| | ${bd_id_start}= | Set Variable | ${1}
+| | ${vni_start} = | Set Variable | ${20}
+| | ...
+| | ${ip_step} = | Set Variable | ${2}
+| | ${dut1_ip_start}= | Set Variable | 172.16.0.1
+| | ${dut2_ip_start}= | Set Variable | 172.16.0.2
+| | ...
+| | ${ip_limit} = | Set Variable | 255.255.255.255
+| | ...
+| | Vpp create multiple VXLAN IPv4 tunnels | node=${dut1}
+| | ... | node_vxlan_if=${dut1_if2} | node_vlan_if=${dut1_if1}
+| | ... | op_node=${dut2} | op_node_if=${dut2_if1} | n_tunnels=${vxlan_count}
+| | ... | vni_start=${vni_start} | src_ip_start=${dut1_ip_start}
+| | ... | dst_ip_start=${dut2_ip_start} | ip_step=${ip_step}
+| | ... | ip_limit=${ip_limit} | bd_id_start=${bd_id_start}
+| | Vpp create multiple VXLAN IPv4 tunnels | node=${dut2}
+| | ... | node_vxlan_if=${dut2_if1} | node_vlan_if=${dut2_if2}
+| | ... | op_node=${dut1} | op_node_if=${dut1_if2} | n_tunnels=${vxlan_count}
+| | ... | vni_start=${vni_start} | src_ip_start=${dut2_ip_start}
+| | ... | dst_ip_start=${dut1_ip_start} | ip_step=${ip_step}
+| | ... | ip_limit=${ip_limit} | bd_id_start=${bd_id_start}
+
 | Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology
 | | [Documentation]
 | | ... | Create two Vhost-User interfaces on all defined VPP nodes. Add each
index f92f88b..83f5bc9 100644 (file)
 | | Run Keyword If Test Failed
 | | ... | Traffic should pass with no loss | ${perf_trial_duration} | ${rate}
 | | ... | ${framesize} | ${topology_type} | fail_on_loss=${False}
+| | Show IP FIB On All DUTs
 
 | Tear down performance mrr test
 | | [Documentation] | Common test teardown for max-received-rate performance
 | | ...
 | | Remove All Added Ports On All DUTs From Topology | ${nodes}
 | | Show VAT History On All DUTs | ${nodes}
+| | Show IP FIB On All DUTs
 
 | Tear down performance test with wrk
 | | [Documentation] | Common test teardown for ndrdisc and pdrdisc performance \
diff --git a/resources/templates/vat/show_ip_fib.vat b/resources/templates/vat/show_ip_fib.vat
new file mode 100644 (file)
index 0000000..4023460
--- /dev/null
@@ -0,0 +1 @@
+exec show ip fib
\ No newline at end of file
diff --git a/resources/traffic_profiles/trex/trex-sl-3n-dot1qip4-vlan100ip4src254ip4dst254.py b/resources/traffic_profiles/trex/trex-sl-3n-dot1qip4-vlan100ip4src254ip4dst254.py
new file mode 100755 (executable)
index 0000000..ed37a37
--- /dev/null
@@ -0,0 +1,133 @@
+# 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.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / DOT1Q / IP /
+ - Direction 0 --> 1:
+   - VLAN range:                    1 - 100
+   - Source IP address range:       10.0.0.1 - 10.0.0.254
+   - Destination IP address range:  20.0.0.1 - 20.0.0.254
+ - Direction 1 --> 0:
+   - VLAN range:                    1 - 100
+   - Source IP address range:       20.0.0.1 - 20.0.0.254
+   - Destination IP address range:  10.0.0.1 - 10.0.0.254
+"""
+
+from trex_stl_lib.api import *
+from profile_trex_stateless_base_class import TrafficStreamsBaseClass
+
+
+class TrafficStreams(TrafficStreamsBaseClass):
+    """Stream profile."""
+
+    def __init__(self):
+        """Initialization and setting of streams' parameters."""
+
+        super(TrafficStreamsBaseClass, self).__init__()
+
+        # VLAN IDs
+        self.vlans = 100
+
+        self.p1_vlan_start = 1
+        self.p1_vlan_end = self.p1_vlan_start + self.vlans - 1
+
+        self.p2_vlan_start = 1
+        self.p2_vlan_end = self.p2_vlan_start + self.vlans - 1
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.0.0.1'
+        self.p1_src_end_ip = '10.0.0.254'
+
+        self.p1_dst_start_ip = '20.0.0.1'
+        self.p1_dst_end_ip = '20.0.0.254'
+
+        self.p2_src_start_ip = '20.0.0.1'
+        self.p2_src_end_ip = '20.0.0.254'
+
+        self.p2_dst_start_ip = '10.0.0.1'
+        self.p2_dst_end_ip = '10.0.0.254'
+
+    def define_packets(self):
+        """Defines the packets to be sent from the traffic generator.
+
+        Packet definition: | ETH | DOT1Q | IP |
+
+        :returns: Packets to be sent from the traffic generator.
+        :rtype: tuple
+        """
+
+        # Direction 0 --> 1
+        base_pkt_a = (Ether() /
+                      Dot1Q(vlan=self.p1_vlan_start) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether() /
+                      Dot1Q(vlan=self.p2_vlan_start) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="vlan",
+                                       min_value=self.p1_vlan_start,
+                                       max_value=self.p1_vlan_end,
+                                       size=2, op="inc"),
+                          STLVmWrFlowVar(fv_name="vlan",
+                                         pkt_offset="Dot1Q.vlan"),
+                          STLVmFlowVar(name="ip_src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_src", pkt_offset="IP.src"),
+                          STLVmFlowVar(name="ip_dst",
+                                       min_value=self.p1_dst_start_ip,
+                                       max_value=self.p1_dst_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_dst", pkt_offset="IP.dst"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="vlan",
+                                       min_value=self.p2_vlan_start,
+                                       max_value=self.p2_vlan_end,
+                                       size=2, op="inc"),
+                          STLVmWrFlowVar(fv_name="vlan",
+                                         pkt_offset="Dot1Q.vlan"),
+                          STLVmFlowVar(name="ip_src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_src", pkt_offset="IP.src"),
+                          STLVmFlowVar(name="ip_dst",
+                                       min_value=self.p2_dst_start_ip,
+                                       max_value=self.p2_dst_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_dst", pkt_offset="IP.dst"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :returns: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-3n-dot1qip4-vlan10ip4src254ip4dst254.py b/resources/traffic_profiles/trex/trex-sl-3n-dot1qip4-vlan10ip4src254ip4dst254.py
new file mode 100755 (executable)
index 0000000..e75ab1c
--- /dev/null
@@ -0,0 +1,134 @@
+# 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.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / DOT1Q / IP /
+ - Direction 0 --> 1:
+   - VLAN range:                    1 - 10
+   - Source IP address range:       10.0.0.1 - 10.0.0.254
+   - Destination IP address range:  20.0.0.1 - 20.0.0.254
+ - Direction 1 --> 0:
+   - VLAN range:                    1 - 10
+   - Source IP address range:       20.0.0.1 - 20.0.0.254
+   - Destination IP address range:  10.0.0.1 - 10.0.0.254
+"""
+
+from trex_stl_lib.api import *
+from profile_trex_stateless_base_class import TrafficStreamsBaseClass
+
+
+class TrafficStreams(TrafficStreamsBaseClass):
+    """Stream profile."""
+
+    def __init__(self):
+        """Initialization and setting of streams' parameters."""
+
+        super(TrafficStreamsBaseClass, self).__init__()
+
+        # VLAN IDs
+        self.vlans = 10
+
+        self.p1_vlan_start = 1
+        self.p1_vlan_end = self.p1_vlan_start + self.vlans - 1
+
+        self.p2_vlan_start = 1
+        self.p2_vlan_end = self.p2_vlan_start + self.vlans - 1
+
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.0.0.1'
+        self.p1_src_end_ip = '10.0.0.254'
+
+        self.p1_dst_start_ip = '20.0.0.1'
+        self.p1_dst_end_ip = '20.0.0.254'
+
+        self.p2_src_start_ip = '20.0.0.1'
+        self.p2_src_end_ip = '20.0.0.254'
+
+        self.p2_dst_start_ip = '10.0.0.1'
+        self.p2_dst_end_ip = '10.0.0.254'
+
+    def define_packets(self):
+        """Defines the packets to be sent from the traffic generator.
+
+        Packet definition: | ETH | DOT1Q | IP |
+
+        :returns: Packets to be sent from the traffic generator.
+        :rtype: tuple
+        """
+
+        # Direction 0 --> 1
+        base_pkt_a = (Ether() /
+                      Dot1Q(vlan=self.p1_vlan_start) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether() /
+                      Dot1Q(vlan=self.p2_vlan_start) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="vlan",
+                                       min_value=self.p1_vlan_start,
+                                       max_value=self.p1_vlan_end,
+                                       size=2, op="inc"),
+                          STLVmWrFlowVar(fv_name="vlan",
+                                         pkt_offset="Dot1Q.vlan"),
+                          STLVmFlowVar(name="ip_src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_src", pkt_offset="IP.src"),
+                          STLVmFlowVar(name="ip_dst",
+                                       min_value=self.p1_dst_start_ip,
+                                       max_value=self.p1_dst_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_dst", pkt_offset="IP.dst"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="vlan",
+                                       min_value=self.p2_vlan_start,
+                                       max_value=self.p2_vlan_end,
+                                       size=2, op="inc"),
+                          STLVmWrFlowVar(fv_name="vlan",
+                                         pkt_offset="Dot1Q.vlan"),
+                          STLVmFlowVar(name="ip_src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_src", pkt_offset="IP.src"),
+                          STLVmFlowVar(name="ip_dst",
+                                       min_value=self.p2_dst_start_ip,
+                                       max_value=self.p2_dst_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_dst", pkt_offset="IP.dst"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :returns: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-3n-dot1qip4-vlan1ip4src254ip4dst254.py b/resources/traffic_profiles/trex/trex-sl-3n-dot1qip4-vlan1ip4src254ip4dst254.py
new file mode 100755 (executable)
index 0000000..9493144
--- /dev/null
@@ -0,0 +1,118 @@
+# 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.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / DOT1Q / IP /
+ - Direction 0 --> 1:
+   - VLAN range:                    1
+   - Source IP address range:       10.0.0.1 - 10.0.0.254
+   - Destination IP address range:  20.0.0.1 - 20.0.0.254
+ - Direction 1 --> 0:
+   - VLAN range:                    1
+   - Source IP address range:       20.0.0.1 - 20.0.0.254
+   - Destination IP address range:  10.0.0.1 - 10.0.0.254
+"""
+
+from trex_stl_lib.api import *
+from profile_trex_stateless_base_class import TrafficStreamsBaseClass
+
+
+class TrafficStreams(TrafficStreamsBaseClass):
+    """Stream profile."""
+
+    def __init__(self):
+        """Initialization and setting of streams' parameters."""
+
+        super(TrafficStreamsBaseClass, self).__init__()
+
+        # VLAN IDs
+        self.p1_vlan_start = 1
+
+        self.p2_vlan_start = 1
+
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.0.0.1'
+        self.p1_src_end_ip = '10.0.0.254'
+
+        self.p1_dst_start_ip = '20.0.0.1'
+        self.p1_dst_end_ip = '20.0.0.254'
+
+        self.p2_src_start_ip = '20.0.0.1'
+        self.p2_src_end_ip = '20.0.0.254'
+
+        self.p2_dst_start_ip = '10.0.0.1'
+        self.p2_dst_end_ip = '10.0.0.254'
+
+    def define_packets(self):
+        """Defines the packets to be sent from the traffic generator.
+
+        Packet definition: | ETH | DOT1Q | IP |
+
+        :returns: Packets to be sent from the traffic generator.
+        :rtype: tuple
+        """
+
+        # Direction 0 --> 1
+        base_pkt_a = (Ether() /
+                      Dot1Q(vlan=self.p1_vlan_start) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether() /
+                      Dot1Q(vlan=self.p2_vlan_start) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="ip_src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_src", pkt_offset="IP.src"),
+                          STLVmFlowVar(name="ip_dst",
+                                       min_value=self.p1_dst_start_ip,
+                                       max_value=self.p1_dst_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_dst", pkt_offset="IP.dst"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="ip_src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_src", pkt_offset="IP.src"),
+                          STLVmFlowVar(name="ip_dst",
+                                       min_value=self.p2_dst_start_ip,
+                                       max_value=self.p2_dst_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_dst", pkt_offset="IP.dst"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :returns: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-3n-dot1qip4-vlan1kip4src254ip4dst254.py b/resources/traffic_profiles/trex/trex-sl-3n-dot1qip4-vlan1kip4src254ip4dst254.py
new file mode 100755 (executable)
index 0000000..6e6337c
--- /dev/null
@@ -0,0 +1,133 @@
+# 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.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / DOT1Q / IP /
+ - Direction 0 --> 1:
+   - VLAN range:                    1 - 1000
+   - Source IP address range:       10.0.0.1 - 10.0.0.254
+   - Destination IP address range:  20.0.0.1 - 20.0.0.254
+ - Direction 1 --> 0:
+   - VLAN range:                    1 - 1000
+   - Source IP address range:       20.0.0.1 - 20.0.0.254
+   - Destination IP address range:  10.0.0.1 - 10.0.0.254
+"""
+
+from trex_stl_lib.api import *
+from profile_trex_stateless_base_class import TrafficStreamsBaseClass
+
+
+class TrafficStreams(TrafficStreamsBaseClass):
+    """Stream profile."""
+
+    def __init__(self):
+        """Initialization and setting of streams' parameters."""
+
+        super(TrafficStreamsBaseClass, self).__init__()
+
+        # VLAN IDs
+        self.vlans = 1000
+
+        self.p1_vlan_start = 1
+        self.p1_vlan_end = self.p1_vlan_start + self.vlans - 1
+
+        self.p2_vlan_start = 1
+        self.p2_vlan_end = self.p2_vlan_start + self.vlans - 1
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.0.0.1'
+        self.p1_src_end_ip = '10.0.0.254'
+
+        self.p1_dst_start_ip = '20.0.0.1'
+        self.p1_dst_end_ip = '20.0.0.254'
+
+        self.p2_src_start_ip = '20.0.0.1'
+        self.p2_src_end_ip = '20.0.0.254'
+
+        self.p2_dst_start_ip = '10.0.0.1'
+        self.p2_dst_end_ip = '10.0.0.254'
+
+    def define_packets(self):
+        """Defines the packets to be sent from the traffic generator.
+
+        Packet definition: | ETH | DOT1Q | IP |
+
+        :returns: Packets to be sent from the traffic generator.
+        :rtype: tuple
+        """
+
+        # Direction 0 --> 1
+        base_pkt_a = (Ether() /
+                      Dot1Q(vlan=self.p1_vlan_start) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether() /
+                      Dot1Q(vlan=self.p2_vlan_start) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="vlan",
+                                       min_value=self.p1_vlan_start,
+                                       max_value=self.p1_vlan_end,
+                                       size=2, op="inc"),
+                          STLVmWrFlowVar(fv_name="vlan",
+                                         pkt_offset="Dot1Q.vlan"),
+                          STLVmFlowVar(name="ip_src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_src", pkt_offset="IP.src"),
+                          STLVmFlowVar(name="ip_dst",
+                                       min_value=self.p1_dst_start_ip,
+                                       max_value=self.p1_dst_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_dst", pkt_offset="IP.dst"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="vlan",
+                                       min_value=self.p2_vlan_start,
+                                       max_value=self.p2_vlan_end,
+                                       size=2, op="inc"),
+                          STLVmWrFlowVar(fv_name="vlan",
+                                         pkt_offset="Dot1Q.vlan"),
+                          STLVmFlowVar(name="ip_src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_src", pkt_offset="IP.src"),
+                          STLVmFlowVar(name="ip_dst",
+                                       min_value=self.p2_dst_start_ip,
+                                       max_value=self.p2_dst_end_ip,
+                                       size=4, op="random"),
+                          STLVmWrFlowVar(fv_name="ip_dst", pkt_offset="IP.dst"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :returns: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr.robot
new file mode 100644 (file)
index 0000000..4c517df
--- /dev/null
@@ -0,0 +1,132 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | SCALE | L2BD_100 | DOT1Q | VLAN_100
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_100
+| ...
+| 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
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD with IEEE 802.1Q and VXLANoIPv4 test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 100 L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 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, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header,\
+| ... | IEEE 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan100ip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${100}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr.robot
new file mode 100644 (file)
index 0000000..fd05759
--- /dev/null
@@ -0,0 +1,139 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | SCALE | L2BD_100 | DOT1Q | VLAN_100
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_100
+| ...
+| 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 discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD with IEEE 802.1Q and VXLANoIPv4
+| ... | test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 100 L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains two L3 flow-groups (flow-group per direction, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header, IEEE\
+| ... | 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan100ip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${100}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr.robot
new file mode 100644 (file)
index 0000000..862bba7
--- /dev/null
@@ -0,0 +1,132 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | SCALE | L2BD_10 | DOT1Q | VLAN_10
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_10
+| ...
+| 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
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD with IEEE 802.1Q and VXLANoIPv4 test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 10 L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 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, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header,\
+| ... | IEEE 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan10ip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${10}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr.robot
new file mode 100644 (file)
index 0000000..c567c5e
--- /dev/null
@@ -0,0 +1,139 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | SCALE | L2BD_10 | DOT1Q | VLAN_10
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_10
+| ...
+| 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 discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD with IEEE 802.1Q and VXLANoIPv4
+| ... | test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 10 L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains two L3 flow-groups (flow-group per direction, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header, IEEE\
+| ... | 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan10ip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${10}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr.robot
new file mode 100644 (file)
index 0000000..b7f1c4d
--- /dev/null
@@ -0,0 +1,132 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | SCALE | L2BD_1K | DOT1Q | VLAN_1K
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_1K
+| ...
+| 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
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD with IEEE 802.1Q and VXLANoIPv4 test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 1k L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 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, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header,\
+| ... | IEEE 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan1kip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${1000}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr.robot
new file mode 100644 (file)
index 0000000..86a177f
--- /dev/null
@@ -0,0 +1,139 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | SCALE | L2BD_1K | DOT1Q | VLAN_1K
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_1K
+| ...
+| 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 discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD with IEEE 802.1Q and VXLANoIPv4
+| ... | test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 1k L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains two L3 flow-groups (flow-group per direction, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header, IEEE\
+| ... | 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan1kip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${1000}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr.robot
new file mode 100644 (file)
index 0000000..6b45e3f
--- /dev/null
@@ -0,0 +1,132 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | SCALE | L2BD_1 | DOT1Q | VLAN_1
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_1
+| ...
+| 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
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD with IEEE 802.1Q and VXLANoIPv4 test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 1 L2\
+| ... | bridge domain. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 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, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header,\
+| ... | IEEE 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan1ip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${1}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr.robot
new file mode 100644 (file)
index 0000000..d02121c
--- /dev/null
@@ -0,0 +1,139 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | SCALE | L2BD_1 | DOT1Q | VLAN_1
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_1
+| ...
+| 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 discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD with IEEE 802.1Q and VXLANoIPv4
+| ... | test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 1 L2\
+| ... | bridge domain. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains two L3 flow-groups (flow-group per direction, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header, IEEE\
+| ... | 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X520-DA2 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan1ip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${1}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
index 9ff7069..b7b2144 100644 (file)
 | ...
 | Documentation | *Raw results L2BD with VXLANoIPv4 test cases*
 | ...
-| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
 | ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain on TG-DUTn.
-| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2.
-| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge
-| ... | domain. VXLAN tunnels are configured between L2BDs on DUT1 and DUT2.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4 on\
+| ... | TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge\
+| ... | domain. VXLAN tunnels are configured between L2BDs on DUT1 and DUT2.\
 | ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel.
-| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
-| ... | at line rate and reports total received/sent packets over trial period.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 253 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | *[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.
 | ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
 
@@ -56,8 +56,8 @@
 | Local Template
 | | ...
 | | [Documentation]
-| | ... | [Cfg] DUT runs L2BD forwarding config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VXLAN and uses\
+| | ... | ${phy_cores} physical core(s) for worker threads.
 | | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
 | | ... | trial throughput test.
 | | ...
index 1d2eb5a..595394a 100644 (file)
 | ...
 | Documentation | *RFC2544: Pkt throughput L2BD with VXLANoIPv4 test cases*
 | ...
-| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
 | ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain on TG-DUTn.
-| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2.
-| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge
-| ... | domain. VXLAN tunnels are configured between L2BDs on DUT1 and DUT2.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4 on\
+| ... | TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge\
+| ... | domain. VXLAN tunnels are configured between L2BDs on DUT1 and DUT2.\
 | ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel.
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
-| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
-| ... | of packets transmitted. NDR and PDR are discovered for different
-| ... | Ethernet L2 frame sizes using MLRsearch library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 253 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains two L3 flow-groups (flow-group per direction, 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.
 | ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
 
@@ -60,9 +60,9 @@
 | Local Template
 | | ...
 | | [Documentation]
-| | ... | [Cfg] DUT runs L2BD forwarding config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VXLAN and uses\
+| | ... | ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
 | | ...
 | | ... | *Arguments:*
 | | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr.robot
new file mode 100644 (file)
index 0000000..ff62345
--- /dev/null
@@ -0,0 +1,132 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | L2BDMACLRN | SCALE | L2BD_100 | DOT1Q | VLAN_100
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_100
+| ...
+| 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
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD with IEEE 802.1Q and VXLANoIPv4 test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 100 L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 tested with 2p10GE NIC X710 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, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header,\
+| ... | IEEE 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan100ip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${100}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr.robot
new file mode 100644 (file)
index 0000000..6e27552
--- /dev/null
@@ -0,0 +1,139 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | L2BDMACLRN | SCALE | L2BD_100 | DOT1Q | VLAN_100
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_100
+| ...
+| 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 discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD with IEEE 802.1Q and VXLANoIPv4
+| ... | test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 100 L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains two L3 flow-groups (flow-group per direction, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header, IEEE\
+| ... | 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan100ip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${100}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale100l2bd100vlan100vxlan-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr.robot
new file mode 100644 (file)
index 0000000..01b4059
--- /dev/null
@@ -0,0 +1,132 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | L2BDMACLRN | SCALE | L2BD_10 | DOT1Q | VLAN_10
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_10
+| ...
+| 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
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD with IEEE 802.1Q and VXLANoIPv4 test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 10 L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 tested with 2p10GE NIC X710 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, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header,\
+| ... | IEEE 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan10ip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${10}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr.robot
new file mode 100644 (file)
index 0000000..bfc4f8d
--- /dev/null
@@ -0,0 +1,139 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | L2BDMACLRN | SCALE | L2BD_10 | DOT1Q | VLAN_10
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_10
+| ...
+| 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 discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD with IEEE 802.1Q and VXLANoIPv4
+| ... | test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 10 L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains two L3 flow-groups (flow-group per direction, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header, IEEE\
+| ... | 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan10ip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${10}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale10l2bd10vlan10vxlan-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr.robot
new file mode 100644 (file)
index 0000000..ce4be1c
--- /dev/null
@@ -0,0 +1,132 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | L2BDMACLRN | SCALE | L2BD_1K | DOT1Q | VLAN_1K
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_1K
+| ...
+| 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
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD with IEEE 802.1Q and VXLANoIPv4 test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 1k L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 tested with 2p10GE NIC X710 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, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header,\
+| ... | IEEE 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan1kip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${1000}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr.robot
new file mode 100644 (file)
index 0000000..66d34be
--- /dev/null
@@ -0,0 +1,139 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | L2BDMACLRN | SCALE | L2BD_1K | DOT1Q | VLAN_1K
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_1K
+| ...
+| 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 discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD with IEEE 802.1Q and VXLANoIPv4
+| ... | test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 1k L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains two L3 flow-groups (flow-group per direction, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header, IEEE\
+| ... | 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan1kip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${1000}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale1kl2bd1kvlan1kvxlan-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr.robot
new file mode 100644 (file)
index 0000000..74398e4
--- /dev/null
@@ -0,0 +1,132 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | L2BDMACLRN | SCALE | L2BD_1 | DOT1Q | VLAN_1
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_1
+| ...
+| 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
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD with IEEE 802.1Q and VXLANoIPv4 test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 1 L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 tested with 2p10GE NIC X710 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, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header,\
+| ... | IEEE 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan1ip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${1}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x710-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr.robot
new file mode 100644 (file)
index 0000000..c3b4fef
--- /dev/null
@@ -0,0 +1,139 @@
+# 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
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | L2BDMACLRN | SCALE | L2BD_1 | DOT1Q | VLAN_1
+| ... | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY | VXLAN_1
+| ...
+| 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 discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD with IEEE 802.1Q and VXLANoIPv4
+| ... | test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-Dot1Q-IPv4 for L2 switching of IPv4\
+| ... | on TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with 1 L2\
+| ... | bridge domains. VXLAN tunnels are configured between L2BDs on DUT1 and\
+| ... | DUT2. DUT1 and DUT2 tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains two L3 flow-groups (flow-group per direction, up to 64,5k\
+| ... | flows per flow-group) with all packets containing Ethernet header, IEEE\
+| ... | 802.1Q header, IPv4 header with IP protocol=61 and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+| ${overhead}= | ${50}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-dot1qip4-vlan1ip4src254ip4dst254
+# Number of VXLAN tunnels
+| ${vxlan_count}= | ${1}
+
+*** Keywords ***
+| Local Template
+| | ...
+| | [Documentation]
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VLAN and VXLAN and\
+| | ... | uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize} | overhead=${overhead}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
+| | ... | vxlan_count=${vxlan_count}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-dot1q--ethip4vxlan-l2bdscale1l2bd1vlan1vxlan-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
index db41ca5..829cc46 100644 (file)
 | ...
 | Documentation | *Raw results L2BD with VXLANoIPv4 test cases*
 | ...
-| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
 | ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain on TG-DUTn.
-| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2.
-| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge
-| ... | domain. VXLAN tunnels are configured between L2BDs on DUT1 and DUT2.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4 on\
+| ... | TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge\
+| ... | domain. VXLAN tunnels are configured between L2BDs on DUT1 and DUT2.\
 | ... | DUT1 and DUT2 tested with 2p10GE NIC X710 by Intel.
-| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
-| ... | at line rate and reports total received/sent packets over trial period.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 253 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | *[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.
 | ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
 
@@ -55,8 +55,8 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Cfg] DUT runs L2BD forwarding config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VXLAN and uses\
+| | ... | ${phy_cores} physical core(s) for worker threads.
 | | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
 | | ... | trial throughput test.
 | | ...
index a68b5c4..6f87803 100644 (file)
 | ...
 | Documentation | *RFC2544: Pkt throughput L2BD with VXLANoIPv4 test cases*
 | ...
-| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
 | ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain on TG-DUTn.
-| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2.
-| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge
-| ... | domain. VXLAN tunnels are configured between L2BDs on DUT1 and DUT2.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4 on\
+| ... | TG-DUTn. Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUTs.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge\
+| ... | domain. VXLAN tunnels are configured between L2BDs on DUT1 and DUT2.\
 | ... | DUT1 and DUT2 tested with 2p10GE NIC X710 by Intel.
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
-| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
-| ... | of packets transmitted. NDR and PDR are discovered for different
-| ... | Ethernet L2 frame sizes using MLRsearch library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 253 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains two L3 flow-groups (flow-group per direction, 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.
 | ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
 
@@ -59,9 +59,9 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Cfg] DUT runs L2BD forwarding config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ... | [Cfg] Each DUT runs L2BD forwarding config with VXLAN and uses\
+| | ... | ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.
 | | ...
 | | ... | *Arguments:*
 | | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).

©2016 FD.io a Linux Foundation Collaborative Project. All Rights Reserved.
Linux Foundation is a registered trademark of The Linux Foundation. Linux is a registered trademark of Linus Torvalds.
Please see our privacy policy and terms of use.