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
 
 
     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.
 .. 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.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
 
 
 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))
         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.
 
 # 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 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.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.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"""
 
 class InterfaceUtil(object):
     """General utilities for managing interfaces"""
@@ -587,15 +588,15 @@ class InterfaceUtil(object):
                             else:
                                 raise ValueError
                     except ValueError:
                             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:
                     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):
 
     @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_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 {} '
             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")
                                                      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 {}'
             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')
 
         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):
 
     @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:
                                                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 {}'
             logger.trace('Created subinterface with index {}'
-                         .format(sw_subif_idx))
+                         .format(sw_vlan_idx))
             if_key = Topology.add_new_port(node, "subinterface")
             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 {}'
             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)
             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):
 
     @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.
         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
         :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
         :type numvfs: int
-        :typ topology_type: str
+        :type topology_type: str
         :returns: Virtual Function topology interface keys.
         :rtype: list
         """
         :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)
         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:
 
         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
             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.
         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.
         :returns: String representation of MAC address.
-        :rtype: int
+        :rtype: str
         """
         return ':'.join(wrap("{:012x}".format(mac_int), width=2))
 
         """
         return ':'.join(wrap("{:012x}".format(mac_int), width=2))
 
index 8b9d632..03379ba 100644 (file)
@@ -14,6 +14,7 @@
 """VAT executor library."""
 
 import json
 """VAT executor library."""
 
 import json
+from os import remove
 
 from paramiko.ssh_exception import SSHException
 from robot.api import logger
 
 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
 
         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.
     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 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"]
 
 
 __all__ = ["exec_cmd", "exec_cmd_no_error"]
 
index 0396418..8fff084 100644 (file)
 
 *** Keywords ***
 
 
 *** 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}
 | 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}
 
 | | 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
 | 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}
 | | 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
 
 | 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}
 | | ...
 | | 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 \
 
 | 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*
 | ...
 | ...
 | 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.
 | ... | 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.
 | ... | 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.
 
 | ... | addresses of the TG node interfaces.
 | ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
 
@@ -56,8 +56,8 @@
 | Local Template
 | | ...
 | | [Documentation]
 | 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.
 | | ...
 | | ... | [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*
 | ...
 | ...
 | 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.
 | ... | 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.
 | ... | 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.
 
 | ... | addresses of the TG node interfaces.
 | ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
 
@@ -60,9 +60,9 @@
 | Local Template
 | | ...
 | | [Documentation]
 | 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).
 | | ...
 | | ... | *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*
 | ...
 | ...
 | 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.
 | ... | 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.
 | ... | 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.
 
 | ... | addresses of the TG node interfaces.
 | ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
 
@@ -55,8 +55,8 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** 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.
 | | ...
 | | ... | [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*
 | ...
 | ...
 | 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.
 | ... | 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.
 | ... | 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.
 
 | ... | addresses of the TG node interfaces.
 | ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348.
 
@@ -59,9 +59,9 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** 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).
 | | ...
 | | ... | *Arguments:*
 | | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).