Even more Crypto combinations 25/19825/14
authorPeter Mikus <pmikus@cisco.com>
Fri, 24 May 2019 18:16:41 +0000 (18:16 +0000)
committerPeter Mikus <pmikus@cisco.com>
Wed, 5 Jun 2019 05:31:09 +0000 (05:31 +0000)
Change-Id: I10eeb4ee30a57712824e68176d92d1ecb5f0d1b0
Signed-off-by: Peter Mikus <pmikus@cisco.com>
48 files changed:
resources/libraries/python/IPsecUtil.py
resources/libraries/robot/performance/performance_configuration.robot
resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst4.py [new file with mode: 0755]
resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst40.py [new file with mode: 0755]
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnl-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnl-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnl-ip4base-int-aes128gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnl-ip4base-int-aes256gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnl-ip4base-tnl-aes128cbc-hmac256sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnl-ip4base-tnl-aes128cbc-hmac512sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnl-ip4base-tnl-aes128gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnl-ip4base-tnl-aes256gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnlsw-ip4base-int-aes128gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnlsw-ip4base-int-aes256gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnlsw-ip4base-tnl-aes128cbc-hmac256sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnlsw-ip4base-tnl-aes128cbc-hmac512sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnlsw-ip4base-tnl-aes128gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecbasetnlsw-ip4base-tnl-aes256gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnl-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnl-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnl-ip4base-int-aes128gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnl-ip4base-int-aes256gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnl-ip4base-tnl-aes128cbc-hmac256sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnl-ip4base-tnl-aes128cbc-hmac512sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnl-ip4base-tnl-aes128gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnl-ip4base-tnl-aes256gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnlsw-ip4base-int-aes128gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnlsw-ip4base-int-aes256gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnlsw-ip4base-tnl-aes128cbc-hmac256sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnlsw-ip4base-tnl-aes128cbc-hmac512sha-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnlsw-ip4base-tnl-aes128gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale1000tnlsw-ip4base-tnl-aes256gcm-ndrpdr.robot
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr.robot [new file with mode: 0644]

index b08c2a6..9ba1b3f 100644 (file)
@@ -14,6 +14,8 @@
 """IPsec utilities library."""
 
 import os
+from random import choice
+from string import letters
 from ipaddress import ip_network, ip_address
 
 from enum import Enum, IntEnum
@@ -24,6 +26,16 @@ from resources.libraries.python.VatExecutor import VatExecutor
 from resources.libraries.python.VatJsonUtil import VatJsonUtil
 
 
+def gen_key(length):
+    """Generate random string as a key.
+
+    :param length: Length of generated payload.
+    :type length: int
+    :returns: The generated payload.
+    :rtype: str
+    """
+    return ''.join(choice(letters) for _ in range(length)).encode('hex')
+
 class PolicyAction(Enum):
     """Policy actions."""
     BYPASS = 'bypass'
@@ -374,22 +386,77 @@ class IPsecUtil(object):
         :type tunnel_dst: str
         """
         tmp_filename = '/tmp/ipsec_sad_{0}_add_del_entry.script'.format(sad_id)
-        ckey = crypto_key.encode('hex')
-        ikey = integ_key.encode('hex')
-        tunnel = 'tunnel-src {0} tunnel-dst {1}'.format(tunnel_src, tunnel_dst)\
-            if tunnel_src is not None and tunnel_dst is not None else ''
 
-        integ = 'integ-alg {0} integ-key {1}'.format(integ_alg.alg_name, ikey)\
-            if crypto_alg.alg_name != 'aes-gcm-128' and \
-               crypto_alg.alg_name != 'aes-gcm-256' else ''
+        addr_incr = 1 << (32 - 24)
 
         with open(tmp_filename, 'w') as tmp_file:
             for i in range(0, n_entries):
-                buf_str = 'exec ipsec sa add {0} esp spi {1} ' \
-                          'crypto-alg {2} crypto-key {3} {4} {5}\n'.format(
-                              sad_id+i, spi+i, crypto_alg.alg_name, ckey, integ,
-                              tunnel)
-                tmp_file.write(buf_str)
+                integ = ''
+                if not crypto_alg.alg_name.startswith('aes-gcm-'):
+                    integ = (
+                        'integ-alg {integ_alg} integ-key {integ_key}'.
+                        format(
+                            integ_alg=integ_alg.alg_name,
+                            integ_key=integ_key))
+                tunnel = (
+                    'tunnel-src {laddr} tunnel-dst {raddr}'.
+                    format(
+                        laddr=ip_address(unicode(tunnel_src)) + i * addr_incr,
+                        raddr=ip_address(unicode(tunnel_dst)) + i * addr_incr)
+                    if tunnel_src and tunnel_dst is not None else '')
+                conf = (
+                    'exec ipsec sa add {sad_id} esp spi {spi} '
+                    'crypto-alg {crypto_alg} crypto-key {crypto_key} '
+                    '{integ} {tunnel}\n'.
+                    format(
+                        sad_id=sad_id + i,
+                        spi=spi + i,
+                        crypto_alg=crypto_alg.alg_name,
+                        crypto_key=crypto_key,
+                        integ=integ,
+                        tunnel=tunnel))
+                tmp_file.write(conf)
+        vat = VatExecutor()
+        vat.execute_script(tmp_filename, node, timeout=300, json_out=False,
+                           copy_on_execute=True)
+        os.remove(tmp_filename)
+
+    @staticmethod
+    def vpp_ipsec_set_ip_route(node, n_tunnels, tunnel_src, traffic_addr,
+                               tunnel_dst, interface, raddr_range):
+        """Set IP address and route on interface.
+
+        :param node: VPP node to add config on.
+        :param n_tunnels: Number of tunnels to create.
+        :param tunnel_src: Tunnel header source IPv4 or IPv6 address.
+        :param traffic_addr: Traffic destination IP address to route.
+        :param tunnel_dst: Tunnel header destination IPv4 or IPv6 address.
+        :param interface: Interface key on node 1.
+        :param raddr_range: Mask specifying range of Policy selector Remote IPv4
+            addresses. Valid values are from 1 to 32.
+        :type node: dict
+        :type n_tunnels: int
+        :type tunnel_src: str
+        :type traffic_addr: str
+        :type tunnel_dst: str
+        :type interface: str
+        :type raddr_range: int
+        """
+        tmp_filename = '/tmp/ipsec_set_ip.script'
+
+        addr_incr = 1 << (32 - raddr_range)
+
+        with open(tmp_filename, 'w') as tmp_file:
+            for i in range(0, n_tunnels):
+                conf = (
+                    'exec set interface ip address {interface} {laddr}/24\n'
+                    'exec ip route add {taddr}/32 via {raddr} {interface}\n'.
+                    format(
+                        interface=Topology.get_interface_name(node, interface),
+                        laddr=ip_address(unicode(tunnel_src)) + i * addr_incr,
+                        raddr=ip_address(unicode(tunnel_dst)) + i * addr_incr,
+                        taddr=ip_address(unicode(traffic_addr)) + i))
+                tmp_file.write(conf)
         vat = VatExecutor()
         vat.execute_script(tmp_filename, node, timeout=300, json_out=False,
                            copy_on_execute=True)
@@ -534,7 +601,7 @@ class IPsecUtil(object):
 
     @staticmethod
     def vpp_ipsec_spd_add_entries(node, n_entries, spd_id, priority, inbound,
-                                  sa_id, raddr_ip, raddr_range):
+                                  sa_id, raddr_ip):
         """Create multiple Security Policy Database entries on the VPP node.
 
         :param node: VPP node to add SPD entries on.
@@ -549,8 +616,6 @@ class IPsecUtil(object):
             entry. Remote IPv4 end address will be calculated depending on
             raddr_range parameter. Each subsequent entry will have start address
             next after IPv4 end address of previous entry.
-        :param raddr_range: Mask specifying range of Policy selector Remote IPv4
-            addresses. Valid values are from 1 to 32.
         :type node: dict
         :type n_entries: int
         :type spd_id: int
@@ -558,177 +623,179 @@ class IPsecUtil(object):
         :type inbound: bool
         :type sa_id: int
         :type raddr_ip: string
-        :type raddr_range: int
         """
         tmp_filename = '/tmp/ipsec_spd_{0}_add_del_entry.script'.format(sa_id)
 
-        direction = 'inbound' if inbound else 'outbound'
-        addr_incr = 1 << (32 - raddr_range)
-        addr_ip = int(ip_address(unicode(raddr_ip)))
-        start_str = 'exec ipsec policy add spd {0} priority {1} {2} ' \
-                    'action protect sa'.format(spd_id, priority, direction)
         with open(tmp_filename, 'w') as tmp_file:
             for i in range(0, n_entries):
-                r_ip_s = ip_address(addr_ip + addr_incr * i)
-                r_ip_e = ip_address(addr_ip + addr_incr * (i+1) - 1)
-                buf_str = '{0} {1} remote-ip-range {2} - {3}\n'.format(
-                    start_str, sa_id+i, r_ip_s, r_ip_e)
-                tmp_file.write(buf_str)
+                raddr_s = ip_address(unicode(raddr_ip)) + i
+                raddr_e = ip_address(unicode(raddr_ip)) + (i + 1) - 1
+                tunnel = (
+                    'exec ipsec policy add spd {spd_id} priority {priority} '
+                    '{direction} action protect sa {sa_id} '
+                    'remote-ip-range {raddr_s} - {raddr_e}\n'.
+                    format(
+                        spd_id=spd_id,
+                        priority=priority,
+                        direction='inbound' if inbound else 'outbound',
+                        sa_id=sa_id+i,
+                        raddr_s=raddr_s,
+                        raddr_e=raddr_e))
+                tmp_file.write(tunnel)
         vat = VatExecutor()
         vat.execute_script(tmp_filename, node, timeout=300, json_out=False,
                            copy_on_execute=True)
         os.remove(tmp_filename)
 
     @staticmethod
-    def vpp_ipsec_create_tunnel_interfaces(node1, node2, if1_ip_addr,
-                                           if2_ip_addr, if1_key, if2_key,
-                                           n_tunnels, crypto_alg, crypto_key,
-                                           integ_alg, integ_key, raddr_ip1,
+    def vpp_ipsec_create_tunnel_interfaces(nodes, if1_ip_addr, if2_ip_addr,
+                                           if1_key, if2_key, n_tunnels,
+                                           crypto_alg, integ_alg, raddr_ip1,
                                            raddr_ip2, raddr_range):
         """Create multiple IPsec tunnel interfaces between two VPP nodes.
 
-        :param node1: VPP node 1 to create tunnel interfaces.
-        :param node2: VPP node 2 to create tunnel interfaces.
+        :param nodes: VPP nodes to create tunnel interfaces.
         :param if1_ip_addr: VPP node 1 interface IP4 address.
         :param if2_ip_addr: VPP node 2 interface IP4 address.
         :param if1_key: VPP node 1 interface key from topology file.
         :param if2_key: VPP node 2 interface key from topology file.
         :param n_tunnels: Number of tunnell interfaces to create.
         :param crypto_alg: The encryption algorithm name.
-        :param crypto_key: The encryption key string.
         :param integ_alg: The integrity algorithm name.
-        :param integ_key: The integrity key string.
         :param raddr_ip1: Policy selector remote IPv4 start address for the
             first tunnel in direction node1->node2.
         :param raddr_ip2: Policy selector remote IPv4 start address for the
             first tunnel in direction node2->node1.
         :param raddr_range: Mask specifying range of Policy selector Remote IPv4
             addresses. Valid values are from 1 to 32.
-        :type node1: dict
-        :type node2: dict
+        :type nodes: dict
         :type if1_ip_addr: str
         :type if2_ip_addr: str
         :type if1_key: str
         :type if2_key: str
         :type n_tunnels: int
         :type crypto_alg: CryptoAlg
-        :type crypto_key: str
         :type integ_alg: IntegAlg
-        :type integ_key: str
         :type raddr_ip1: string
         :type raddr_ip2: string
         :type raddr_range: int
         """
-        spi_1 = 10000
-        spi_2 = 20000
-
-        raddr_ip1_i = int(ip_address(unicode(raddr_ip1)))
-        raddr_ip2_i = int(ip_address(unicode(raddr_ip2)))
+        spi_1 = 100000
+        spi_2 = 200000
         addr_incr = 1 << (32 - raddr_range)
 
         tmp_fn1 = '/tmp/ipsec_create_tunnel_dut1.config'
         tmp_fn2 = '/tmp/ipsec_create_tunnel_dut2.config'
 
-        ckey = crypto_key.encode('hex')
-        ikey = integ_key.encode('hex')
-
         vat = VatExecutor()
+
         with open(tmp_fn1, 'w') as tmp_f1, open(tmp_fn2, 'w') as tmp_f2:
             for i in range(0, n_tunnels):
+                ckey = gen_key(IPsecUtil.get_crypto_alg_key_len(crypto_alg))
+                ikey = gen_key(IPsecUtil.get_integ_alg_key_len(integ_alg))
                 integ = ''
                 if not crypto_alg.alg_name.startswith('aes-gcm-'):
-                    integ = 'integ_alg {integ_alg} '\
-                            'local_integ_key {local_integ_key} '\
-                            'remote_integ_key {remote_integ_key} '\
-                            .format(integ_alg=integ_alg.alg_name,
-                                    local_integ_key=ikey,
-                                    remote_integ_key=ikey)
-                dut1_tunnel = 'ipsec_tunnel_if_add_del '\
-                              'local_spi {local_spi} '\
-                              'remote_spi {remote_spi} '\
-                              'crypto_alg {crypto_alg} '\
-                              'local_crypto_key {local_crypto_key} '\
-                              'remote_crypto_key {remote_crypto_key} '\
-                              '{integ} '\
-                              'local_ip {local_ip} '\
-                              'remote_ip {remote_ip}\n'\
-                              .format(local_spi=spi_1+i,
-                                      remote_spi=spi_2+i,
-                                      crypto_alg=crypto_alg.alg_name,
-                                      local_crypto_key=ckey,
-                                      remote_crypto_key=ckey,
-                                      integ=integ,
-                                      local_ip=if1_ip_addr,
-                                      remote_ip=if2_ip_addr)
-                dut2_tunnel = 'ipsec_tunnel_if_add_del '\
-                              'local_spi {local_spi} '\
-                              'remote_spi {remote_spi} '\
-                              'crypto_alg {crypto_alg} '\
-                              'local_crypto_key {local_crypto_key} '\
-                              'remote_crypto_key {remote_crypto_key} '\
-                              '{integ} '\
-                              'local_ip {local_ip} '\
-                              'remote_ip {remote_ip}\n'\
-                              .format(local_spi=spi_2+i,
-                                      remote_spi=spi_1+i,
-                                      crypto_alg=crypto_alg.alg_name,
-                                      local_crypto_key=ckey,
-                                      remote_crypto_key=ckey,
-                                      integ=integ,
-                                      local_ip=if2_ip_addr,
-                                      remote_ip=if1_ip_addr)
-                tmp_f1.write(dut1_tunnel)
-                tmp_f2.write(dut2_tunnel)
-        vat.execute_script(tmp_fn1, node1, timeout=300, json_out=False,
+                    integ = (
+                        'integ_alg {integ_alg} '
+                        'local_integ_key {local_integ_key} '
+                        'remote_integ_key {remote_integ_key} '
+                        .format(
+                            integ_alg=integ_alg.alg_name,
+                            local_integ_key=ikey,
+                            remote_integ_key=ikey))
+                tmp_f1.write(
+                    'exec set interface ip address {uifc} {laddr}/24\n'
+                    'ipsec_tunnel_if_add_del '
+                    'local_spi {local_spi} '
+                    'remote_spi {remote_spi} '
+                    'crypto_alg {crypto_alg} '
+                    'local_crypto_key {local_crypto_key} '
+                    'remote_crypto_key {remote_crypto_key} '
+                    '{integ} '
+                    'local_ip {laddr} '
+                    'remote_ip {raddr}\n'
+                    .format(
+                        local_spi=spi_1 + i,
+                        remote_spi=spi_2 + i,
+                        crypto_alg=crypto_alg.alg_name,
+                        local_crypto_key=ckey,
+                        remote_crypto_key=ckey,
+                        integ=integ,
+                        laddr=ip_address(unicode(if1_ip_addr)) + i * addr_incr,
+                        raddr=ip_address(unicode(if2_ip_addr)) + i * addr_incr,
+                        uifc=Topology.get_interface_name(nodes['DUT1'],
+                                                         if1_key)))
+                tmp_f2.write(
+                    'exec set interface ip address {uifc} {laddr}/24\n'
+                    'ipsec_tunnel_if_add_del '
+                    'local_spi {local_spi} '
+                    'remote_spi {remote_spi} '
+                    'crypto_alg {crypto_alg} '
+                    'local_crypto_key {local_crypto_key} '
+                    'remote_crypto_key {remote_crypto_key} '
+                    '{integ} '
+                    'local_ip {laddr} '
+                    'remote_ip {raddr}\n'
+                    .format(
+                        local_spi=spi_2 + i,
+                        remote_spi=spi_1 + i,
+                        crypto_alg=crypto_alg.alg_name,
+                        local_crypto_key=ckey,
+                        remote_crypto_key=ckey,
+                        integ=integ,
+                        laddr=ip_address(unicode(if2_ip_addr)) + i * addr_incr,
+                        raddr=ip_address(unicode(if1_ip_addr)) + i * addr_incr,
+                        uifc=Topology.get_interface_name(nodes['DUT2'],
+                                                         if2_key)))
+        vat.execute_script(tmp_fn1, nodes['DUT1'], timeout=300, json_out=False,
                            copy_on_execute=True)
-        vat.execute_script(tmp_fn2, node2, timeout=300, json_out=False,
+        vat.execute_script(tmp_fn2, nodes['DUT2'], timeout=300, json_out=False,
                            copy_on_execute=True)
         os.remove(tmp_fn1)
         os.remove(tmp_fn2)
 
         with open(tmp_fn1, 'w') as tmp_f1, open(tmp_fn2, 'w') as tmp_f2:
             for i in range(0, n_tunnels):
-                raddr_ip1 = ip_address(raddr_ip1_i + addr_incr*i)
-                raddr_ip2 = ip_address(raddr_ip2_i + addr_incr*i)
-                dut1_if = Topology.get_interface_name(node1, if1_key)
-                dut1 = 'exec ip route add {raddr}/{mask} via {addr} ipsec{i}\n'\
-                       'exec set interface unnumbered ipsec{i} use {uifc}\n'\
-                       'exec set interface state ipsec{i} up\n'\
-                       .format(raddr=raddr_ip2, mask=raddr_range,
-                               addr=if2_ip_addr, i=i, uifc=dut1_if)
-                dut2_if = Topology.get_interface_name(node2, if2_key)
-                dut2 = 'exec ip route add {raddr}/{mask} via {addr} ipsec{i}\n'\
-                       'exec set interface unnumbered ipsec{i} use {uifc}\n'\
-                       'exec set interface state ipsec{i} up\n'\
-                       .format(raddr=raddr_ip1, mask=raddr_range,
-                               addr=if1_ip_addr, i=i, uifc=dut2_if)
-                tmp_f1.write(dut1)
-                tmp_f2.write(dut2)
-
-        vat.execute_script(tmp_fn1, node1, timeout=300, json_out=False,
+                tmp_f1.write(
+                    'exec set interface unnumbered ipsec{i} use {uifc}\n'
+                    'exec set interface state ipsec{i} up\n'
+                    'exec ip route add {taddr}/32 via {raddr} ipsec{i}\n'
+                    .format(
+                        taddr=ip_address(unicode(raddr_ip2)) + i,
+                        raddr=ip_address(unicode(if2_ip_addr)) + i * addr_incr,
+                        i=i,
+                        uifc=Topology.get_interface_name(nodes['DUT1'],
+                                                         if1_key)))
+                tmp_f2.write(
+                    'exec set interface unnumbered ipsec{i} use {uifc}\n'
+                    'exec set interface state ipsec{i} up\n'
+                    'exec ip route add {taddr}/32 via {raddr} ipsec{i}\n'
+                    .format(
+                        taddr=ip_address(unicode(raddr_ip1)) + i,
+                        raddr=ip_address(unicode(if1_ip_addr)) + i * addr_incr,
+                        i=i,
+                        uifc=Topology.get_interface_name(nodes['DUT2'],
+                                                         if2_key)))
+        vat.execute_script(tmp_fn1, nodes['DUT1'], timeout=300, json_out=False,
                            copy_on_execute=True)
-        vat.execute_script(tmp_fn2, node2, timeout=300, json_out=False,
+        vat.execute_script(tmp_fn2, nodes['DUT2'], timeout=300, json_out=False,
                            copy_on_execute=True)
         os.remove(tmp_fn1)
         os.remove(tmp_fn2)
 
     @staticmethod
-    def vpp_ipsec_add_multiple_tunnels(node1, node2, interface1, interface2,
-                                       n_tunnels, crypto_alg, crypto_key,
-                                       integ_alg, integ_key, tunnel_ip1,
-                                       tunnel_ip2, raddr_ip1, raddr_ip2,
-                                       raddr_range):
+    def vpp_ipsec_add_multiple_tunnels(nodes, interface1, interface2,
+                                       n_tunnels, crypto_alg, integ_alg,
+                                       tunnel_ip1, tunnel_ip2, raddr_ip1,
+                                       raddr_ip2, raddr_range):
         """Create multiple IPsec tunnels between two VPP nodes.
 
-        :param node1: VPP node 1 to create tunnels.
-        :param node2: VPP node 2 to create tunnels.
+        :param nodes: VPP nodes to create tunnels.
         :param interface1: Interface name or sw_if_index on node 1.
         :param interface2: Interface name or sw_if_index on node 2.
         :param n_tunnels: Number of tunnels to create.
         :param crypto_alg: The encryption algorithm name.
-        :param crypto_key: The encryption key string.
         :param integ_alg: The integrity algorithm name.
-        :param integ_key: The integrity key string.
         :param tunnel_ip1: Tunnel node1 IPv4 address.
         :param tunnel_ip2: Tunnel node2 IPv4 address.
         :param raddr_ip1: Policy selector remote IPv4 start address for the
@@ -737,15 +804,12 @@ class IPsecUtil(object):
             first tunnel in direction node2->node1.
         :param raddr_range: Mask specifying range of Policy selector Remote IPv4
             addresses. Valid values are from 1 to 32.
-        :type node1: dict
-        :type node2: dict
+        :type nodes: dict
         :type interface1: str or int
         :type interface2: str or int
         :type n_tunnels: int
         :type crypto_alg: CryptoAlg
-        :type crypto_key: str
         :type integ_alg: str
-        :type integ_key: str
         :type tunnel_ip1: str
         :type tunnel_ip2: str
         :type raddr_ip1: string
@@ -755,57 +819,70 @@ class IPsecUtil(object):
         spd_id = 1
         p_hi = 100
         p_lo = 10
-        sa_id_1 = 10000
-        sa_id_2 = 20000
-        spi_1 = 30000
-        spi_2 = 40000
-        proto = 50
-
-        IPsecUtil.vpp_ipsec_add_spd(node1, spd_id)
-        IPsecUtil.vpp_ipsec_spd_add_if(node1, spd_id, interface1)
-        IPsecUtil.vpp_ipsec_policy_add(node1, spd_id, p_hi, PolicyAction.BYPASS,
-                                       inbound=False, proto=proto)
-        IPsecUtil.vpp_ipsec_policy_add(node1, spd_id, p_hi, PolicyAction.BYPASS,
-                                       inbound=True, proto=proto)
-
-        IPsecUtil.vpp_ipsec_add_spd(node2, spd_id)
-        IPsecUtil.vpp_ipsec_spd_add_if(node2, spd_id, interface2)
-        IPsecUtil.vpp_ipsec_policy_add(node2, spd_id, p_hi, PolicyAction.BYPASS,
-                                       inbound=False, proto=proto)
-        IPsecUtil.vpp_ipsec_policy_add(node2, spd_id, p_hi, PolicyAction.BYPASS,
-                                       inbound=True, proto=proto)
-
-        IPsecUtil.vpp_ipsec_add_sad_entries(node1, n_tunnels, sa_id_1, spi_1,
-                                            crypto_alg, crypto_key, integ_alg,
-                                            integ_key, tunnel_ip1, tunnel_ip2)
-
-        IPsecUtil.vpp_ipsec_spd_add_entries(node1, n_tunnels, spd_id, p_lo,
-                                            False, sa_id_1, raddr_ip2,
-                                            raddr_range)
-
-        IPsecUtil.vpp_ipsec_add_sad_entries(node2, n_tunnels, sa_id_1, spi_1,
-                                            crypto_alg, crypto_key, integ_alg,
-                                            integ_key, tunnel_ip1, tunnel_ip2)
-
-        IPsecUtil.vpp_ipsec_spd_add_entries(node2, n_tunnels, spd_id, p_lo,
-                                            True, sa_id_1, raddr_ip2,
-                                            raddr_range)
-
-        IPsecUtil.vpp_ipsec_add_sad_entries(node2, n_tunnels, sa_id_2, spi_2,
-                                            crypto_alg, crypto_key, integ_alg,
-                                            integ_key, tunnel_ip2, tunnel_ip1)
-
-        IPsecUtil.vpp_ipsec_spd_add_entries(node2, n_tunnels, spd_id, p_lo,
-                                            False, sa_id_2, raddr_ip1,
-                                            raddr_range)
-
-        IPsecUtil.vpp_ipsec_add_sad_entries(node1, n_tunnels, sa_id_2, spi_2,
-                                            crypto_alg, crypto_key, integ_alg,
-                                            integ_key, tunnel_ip2, tunnel_ip1)
-
-        IPsecUtil.vpp_ipsec_spd_add_entries(node1, n_tunnels, spd_id, p_lo,
-                                            True, sa_id_2, raddr_ip1,
-                                            raddr_range)
+        sa_id_1 = 100000
+        sa_id_2 = 200000
+        spi_1 = 300000
+        spi_2 = 400000
+
+        crypto_key = gen_key(IPsecUtil.get_crypto_alg_key_len(crypto_alg))
+        integ_key = gen_key(IPsecUtil.get_integ_alg_key_len(integ_alg))
+
+        IPsecUtil.vpp_ipsec_set_ip_route(
+            nodes['DUT1'], n_tunnels, tunnel_ip1, raddr_ip2, tunnel_ip2,
+            interface1, raddr_range)
+        IPsecUtil.vpp_ipsec_set_ip_route(
+            nodes['DUT2'], n_tunnels, tunnel_ip2, raddr_ip1, tunnel_ip1,
+            interface2, raddr_range)
+
+        IPsecUtil.vpp_ipsec_add_spd(
+            nodes['DUT1'], spd_id)
+        IPsecUtil.vpp_ipsec_spd_add_if(
+            nodes['DUT1'], spd_id, interface1)
+        IPsecUtil.vpp_ipsec_policy_add(
+            nodes['DUT1'], spd_id, p_hi, PolicyAction.BYPASS, inbound=False,
+            proto=50)
+        IPsecUtil.vpp_ipsec_policy_add(
+            nodes['DUT1'], spd_id, p_hi, PolicyAction.BYPASS, inbound=True,
+            proto=50)
+
+        IPsecUtil.vpp_ipsec_add_spd(
+            nodes['DUT2'], spd_id)
+        IPsecUtil.vpp_ipsec_spd_add_if(
+            nodes['DUT2'], spd_id, interface2)
+        IPsecUtil.vpp_ipsec_policy_add(
+            nodes['DUT2'], spd_id, p_hi, PolicyAction.BYPASS, inbound=False,
+            proto=50)
+        IPsecUtil.vpp_ipsec_policy_add(
+            nodes['DUT2'], spd_id, p_hi, PolicyAction.BYPASS, inbound=True,
+            proto=50)
+
+        IPsecUtil.vpp_ipsec_add_sad_entries(
+            nodes['DUT1'], n_tunnels, sa_id_1, spi_1, crypto_alg, crypto_key,
+            integ_alg, integ_key, tunnel_ip1, tunnel_ip2)
+
+        IPsecUtil.vpp_ipsec_spd_add_entries(
+            nodes['DUT1'], n_tunnels, spd_id, p_lo, False, sa_id_1, raddr_ip2)
+
+        IPsecUtil.vpp_ipsec_add_sad_entries(
+            nodes['DUT2'], n_tunnels, sa_id_1, spi_1, crypto_alg, crypto_key,
+            integ_alg, integ_key, tunnel_ip1, tunnel_ip2)
+
+        IPsecUtil.vpp_ipsec_spd_add_entries(
+            nodes['DUT2'], n_tunnels, spd_id, p_lo, True, sa_id_1, raddr_ip2)
+
+        IPsecUtil.vpp_ipsec_add_sad_entries(
+            nodes['DUT2'], n_tunnels, sa_id_2, spi_2, crypto_alg, crypto_key,
+            integ_alg, integ_key, tunnel_ip2, tunnel_ip1)
+
+        IPsecUtil.vpp_ipsec_spd_add_entries(
+            nodes['DUT2'], n_tunnels, spd_id, p_lo, False, sa_id_2, raddr_ip1)
+
+        IPsecUtil.vpp_ipsec_add_sad_entries(
+            nodes['DUT1'], n_tunnels, sa_id_2, spi_2, crypto_alg, crypto_key,
+            integ_alg, integ_key, tunnel_ip2, tunnel_ip1)
+
+        IPsecUtil.vpp_ipsec_spd_add_entries(
+            nodes['DUT1'], n_tunnels, spd_id, p_lo, True, sa_id_2, raddr_ip1)
 
     @staticmethod
     def vpp_ipsec_show(node):
index bd6a56e..4701b23 100644 (file)
 | | Set Test Variable | ${dut2_if2_mac}
 | | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1}
 | | ... | ${dut1_if1_ip4} | 24
-| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2}
-| | ... | ${dut1_if2_ip4} | 24
-| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1}
-| | ... | ${dut2_if1_ip4} | 24
 | | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2}
 | | ... | ${dut2_if2_ip4} | 24
 | | Add arp on dut | ${dut1} | ${dut1_if1} | ${tg_if1_ip4} | ${tg_if1_mac}
-| | Add arp on dut | ${dut1} | ${dut1_if2} | ${dut2_if1_ip4} | ${dut2_if1_mac}
 | | Add arp on dut | ${dut2} | ${dut2_if2} | ${tg_if2_ip4} | ${tg_if2_mac}
-| | Add arp on dut | ${dut2} | ${dut2_if1} | ${dut1_if2_ip4} | ${dut1_if2_mac}
 | | Vpp Route Add | ${dut1} | ${laddr_ip4} | 8 | gateway=${tg_if1_ip4}
 | | ... | interface=${dut1_if1}
 | | Vpp Route Add | ${dut2} | ${raddr_ip4} | 8 | gateway=${tg_if2_ip4}
diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst4.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst4.py
new file mode 100755 (executable)
index 0000000..f036cd6
--- /dev/null
@@ -0,0 +1,94 @@
+# Copyright (c) 2019 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 / IP /
+ - Direction 0 --> 1:
+   - Source IP address range:      10.0.0.1
+   - Destination IP address range: 20.0.0.0 - 20.0.0.3
+ - Direction 1 --> 0:
+   - Source IP address range:      20.0.0.1
+   - Destination IP address range: 10.0.0.0 - 10.0.0.3
+"""
+
+from trex.stl.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__()
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.0.0.1'
+        self.p1_dst_start_ip = '20.0.0.0'
+        self.p1_dst_end_ip = '20.0.0.3'
+
+        self.p2_src_start_ip = '20.0.0.1'
+        self.p2_dst_start_ip = '10.0.0.0'
+        self.p2_dst_end_ip = '10.0.0.3'
+
+    def define_packets(self):
+        """Defines the packets to be sent from the traffic generator.
+
+        Packet definition: | ETH | IP |
+
+        :returns: Packets to be sent from the traffic generator.
+        :rtype: tuple
+        """
+
+        # Direction 0 --> 1
+        base_pkt_a = (Ether() /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether() /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="dst",
+                                       min_value=self.p1_dst_start_ip,
+                                       max_value=self.p1_dst_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="dst",
+                                       min_value=self.p2_dst_start_ip,
+                                       max_value=self.p2_dst_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="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.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst40.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst40.py
new file mode 100755 (executable)
index 0000000..eaf2bd6
--- /dev/null
@@ -0,0 +1,94 @@
+# Copyright (c) 2019 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 / IP /
+ - Direction 0 --> 1:
+   - Source IP address range:      10.0.0.1
+   - Destination IP address range: 20.0.0.0 - 20.0.0.39
+ - Direction 1 --> 0:
+   - Source IP address range:      20.0.0.1
+   - Destination IP address range: 10.0.0.0 - 10.0.0.39
+"""
+
+from trex.stl.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__()
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.0.0.1'
+        self.p1_dst_start_ip = '20.0.0.0'
+        self.p1_dst_end_ip = '20.0.0.39'
+
+        self.p2_src_start_ip = '20.0.0.1'
+        self.p2_dst_start_ip = '10.0.0.0'
+        self.p2_dst_end_ip = '10.0.0.39'
+
+    def define_packets(self):
+        """Defines the packets to be sent from the traffic generator.
+
+        Packet definition: | ETH | IP |
+
+        :returns: Packets to be sent from the traffic generator.
+        :rtype: tuple
+        """
+
+        # Direction 0 --> 1
+        base_pkt_a = (Ether() /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether() /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="dst",
+                                       min_value=self.p1_dst_start_ip,
+                                       max_value=self.p1_dst_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="dst",
+                                       min_value=self.p2_dst_start_ip,
+                                       max_value=self.p2_dst_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="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.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
index cbd78d8..7990275 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index a7bf3d5..95ca0c2 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index d81c4bd..4fe12ae 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index f288a32..e373be7 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index aa39e4f..8d2a14e 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 68c3309..c21d75c 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 5fc6899..aaaec0b 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index b53cbca..586c99c 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index ed2592c..5cd3291 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_mb | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index cb6a80f..1d1dcb2 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_mb | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 6e15833..3915452 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_gcm | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 509cded..6a7ebdf 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_gcm | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 0ac671e..711ed8e 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_mb | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 24ff45e..e706cd2 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_mb | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 56aa897..2d47f5c 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_gcm | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 4c813f4..0e77df9 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_gcm | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 451f85b..ec407fd 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index abccd55..61a973d 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 49be13e..d1bf0c4 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index a71f9dc..dc93163 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 5ab0161..cf95d83 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 123768c..c0ef246 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index d08ba1e..3a8b77a 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 2f325a8..61b3006 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | Set Max Rate And Jumbo And Handle Multi Seg
 | | And Add cryptodev to all DUTs | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 6bd6e14..3dd4826 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_mb | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index b637992..92e3bd6 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_mb | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 7b52d5e..837c827 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_gcm | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index a30272d..3dab350 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_gcm | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
 | | And VPP IPsec Create Tunnel Interfaces
-| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
-| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 656a56f..526b352 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_mb | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 2ba2a74..90f6f3b 100644 (file)
 | ${overhead}= | ${58}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_mb | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index d4d014d..96af3ef 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_gcm | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 297e0c8..74c8e2e 100644 (file)
 | ${overhead}= | ${54}
 | ${tg_if1_ip4}= | 192.168.10.2
 | ${dut1_if1_ip4}= | 192.168.10.1
-| ${dut1_if2_ip4}= | 172.168.1.1
-| ${dut2_if1_ip4}= | 172.168.1.2
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
 | ${dut2_if2_ip4}= | 192.168.20.1
 | ${tg_if2_ip4}= | 192.168.20.2
 | ${raddr_ip4}= | 20.0.0.0
 | ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${32}
+| ${addr_range}= | ${24}
 | ${n_tunnels}= | ${1000}
 # Traffic profile:
 | ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
 | | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
 | | ... | aesni_gcm | ${phy_cores}
 | | And Apply startup configuration on all VPP DUTs
-| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
 | | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
 | | And Initialize IPSec in 3-node circular topology
-| | And Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | gateway=${dut2_if1_ip4}
-| | ... | interface=${dut1_if2}
-| | And Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | gateway=${dut1_if2_ip4}
-| | ... | interface=${dut2_if1}
 | | And VPP IPsec Add Multiple Tunnels
-| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
-| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range}
+| | ... | ${nodes} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
+| | ... | ${encr_alg} | ${auth_alg} | ${dut1_if2_ip4} | ${dut2_if1_ip4}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot
new file mode 100644 (file)
index 0000000..a2d07b5
--- /dev/null
@@ -0,0 +1,154 @@
+# Copyright (c) 2019 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
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_100
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE
+| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up IPSec performance test suite | L3 | ${nic_name} | SW_cryptodev
+| ... | AND | Set up performance test suite with crypto ipsecmb
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput IPv4 IPsec tunnel mode.*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
+| ... | Eth-IPv4-IPSec on DUT1-DUT2
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK SW
+| ... | crypto devices and multiple IPsec tunnels between them.
+| ... | DUTs get IPv4 traffic from TG, encrypt it
+| ... | and send to another DUT, where packets are decrypted and sent back to TG
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and 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, number of flows per flow-group equals to
+| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${58}
+| ${tg_if1_ip4}= | 192.168.10.2
+| ${dut1_if1_ip4}= | 192.168.10.1
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
+| ${dut2_if2_ip4}= | 192.168.20.1
+| ${tg_if2_ip4}= | 192.168.20.2
+| ${raddr_ip4}= | 20.0.0.0
+| ${laddr_ip4}= | 10.0.0.0
+| ${addr_range}= | ${24}
+| ${n_tunnels}= | ${100}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | # These are enums (not strings) so they cannot be in Variables table.
+| | ${encr_alg}= | Crypto Alg AES CBC 128
+| | ${auth_alg}= | Integ Alg SHA 256 128
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_mb | ${phy_cores}
+| | And Apply startup configuration on all VPP DUTs
+| | And Initialize IPSec in 3-node circular topology
+| | And VPP IPsec Create Tunnel Interfaces
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot
new file mode 100644 (file)
index 0000000..eef1ff6
--- /dev/null
@@ -0,0 +1,154 @@
+# Copyright (c) 2019 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
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_100
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE
+| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up IPSec performance test suite | L3 | ${nic_name} | SW_cryptodev
+| ... | AND | Set up performance test suite with crypto ipsecmb
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput IPv4 IPsec tunnel mode.*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
+| ... | Eth-IPv4-IPSec on DUT1-DUT2
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK SW
+| ... | crypto devices and multiple IPsec tunnels between them.
+| ... | DUTs get IPv4 traffic from TG, encrypt it
+| ... | and send to another DUT, where packets are decrypted and sent back to TG
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and 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, number of flows per flow-group equals to
+| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${58}
+| ${tg_if1_ip4}= | 192.168.10.2
+| ${dut1_if1_ip4}= | 192.168.10.1
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
+| ${dut2_if2_ip4}= | 192.168.20.1
+| ${tg_if2_ip4}= | 192.168.20.2
+| ${raddr_ip4}= | 20.0.0.0
+| ${laddr_ip4}= | 10.0.0.0
+| ${addr_range}= | ${24}
+| ${n_tunnels}= | ${100}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | # These are enums (not strings) so they cannot be in Variables table.
+| | ${encr_alg}= | Crypto Alg AES CBC 128
+| | ${auth_alg}= | Integ Alg SHA 512 256
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_mb | ${phy_cores}
+| | And Apply startup configuration on all VPP DUTs
+| | And Initialize IPSec in 3-node circular topology
+| | And VPP IPsec Create Tunnel Interfaces
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..a57edc6
--- /dev/null
@@ -0,0 +1,157 @@
+# Copyright (c) 2019 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
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_100
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE
+| ... | AES_128_GCM | AES
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up IPSec performance test suite | L3 | ${nic_name} | SW_cryptodev
+| ... | AND | Set up performance test suite with crypto ipsecmb
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput IPv4 IPsec tunnel mode.*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
+| ... | Eth-IPv4-IPSec on DUT1-DUT2
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK SW
+| ... | crypto devices and multiple IPsec tunnels between them.
+| ... | DUTs get IPv4 traffic from TG, encrypt it
+| ... | and send to another DUT, where packets are decrypted and sent back to TG
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and 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, number of flows per flow-group equals to
+| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${54}
+| ${tg_if1_ip4}= | 192.168.10.2
+| ${dut1_if1_ip4}= | 192.168.10.1
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
+| ${dut2_if2_ip4}= | 192.168.20.1
+| ${tg_if2_ip4}= | 192.168.20.2
+| ${raddr_ip4}= | 20.0.0.0
+| ${laddr_ip4}= | 10.0.0.0
+| ${addr_range}= | ${24}
+| ${n_tunnels}= | ${100}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | # These are enums (not strings) so they cannot be in Variables table.
+| | ${encr_alg}= | Crypto Alg AES GCM 128
+| | ${auth_alg}= | Integ Alg AES GCM 128
+| | ${ipsec_proto} = | IPsec Proto ESP
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_gcm | ${phy_cores}
+| | And Apply startup configuration on all VPP DUTs
+| | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
+| | And Initialize IPSec in 3-node circular topology
+| | And VPP IPsec Create Tunnel Interfaces
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..8223726
--- /dev/null
@@ -0,0 +1,157 @@
+# Copyright (c) 2019 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
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_100
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE
+| ... | AES_256_GCM | AES
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up IPSec performance test suite | L3 | ${nic_name} | SW_cryptodev
+| ... | AND | Set up performance test suite with crypto ipsecmb
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput IPv4 IPsec tunnel mode.*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
+| ... | Eth-IPv4-IPSec on DUT1-DUT2
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK SW
+| ... | crypto devices and multiple IPsec tunnels between them.
+| ... | DUTs get IPv4 traffic from TG, encrypt it
+| ... | and send to another DUT, where packets are decrypted and sent back to TG
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and 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, number of flows per flow-group equals to
+| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${54}
+| ${tg_if1_ip4}= | 192.168.10.2
+| ${dut1_if1_ip4}= | 192.168.10.1
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
+| ${dut2_if2_ip4}= | 192.168.20.1
+| ${tg_if2_ip4}= | 192.168.20.2
+| ${raddr_ip4}= | 20.0.0.0
+| ${laddr_ip4}= | 10.0.0.0
+| ${addr_range}= | ${24}
+| ${n_tunnels}= | ${100}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | # These are enums (not strings) so they cannot be in Variables table.
+| | ${encr_alg}= | Crypto Alg AES GCM 256
+| | ${auth_alg}= | Integ Alg AES GCM 256
+| | ${ipsec_proto} = | IPsec Proto ESP
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_gcm | ${phy_cores}
+| | And Apply startup configuration on all VPP DUTs
+| | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
+| | And Initialize IPSec in 3-node circular topology
+| | And VPP IPsec Create Tunnel Interfaces
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale100tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot
new file mode 100644 (file)
index 0000000..cd0c00e
--- /dev/null
@@ -0,0 +1,154 @@
+# Copyright (c) 2019 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
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_40
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE
+| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up IPSec performance test suite | L3 | ${nic_name} | SW_cryptodev
+| ... | AND | Set up performance test suite with crypto ipsecmb
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput IPv4 IPsec tunnel mode.*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
+| ... | Eth-IPv4-IPSec on DUT1-DUT2
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK SW
+| ... | crypto devices and multiple IPsec tunnels between them.
+| ... | DUTs get IPv4 traffic from TG, encrypt it
+| ... | and send to another DUT, where packets are decrypted and sent back to TG
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and 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, number of flows per flow-group equals to
+| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${58}
+| ${tg_if1_ip4}= | 192.168.10.2
+| ${dut1_if1_ip4}= | 192.168.10.1
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
+| ${dut2_if2_ip4}= | 192.168.20.1
+| ${tg_if2_ip4}= | 192.168.20.2
+| ${raddr_ip4}= | 20.0.0.0
+| ${laddr_ip4}= | 10.0.0.0
+| ${addr_range}= | ${24}
+| ${n_tunnels}= | ${40}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | # These are enums (not strings) so they cannot be in Variables table.
+| | ${encr_alg}= | Crypto Alg AES CBC 128
+| | ${auth_alg}= | Integ Alg SHA 256 128
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_mb | ${phy_cores}
+| | And Apply startup configuration on all VPP DUTs
+| | And Initialize IPSec in 3-node circular topology
+| | And VPP IPsec Create Tunnel Interfaces
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot
new file mode 100644 (file)
index 0000000..e784afa
--- /dev/null
@@ -0,0 +1,154 @@
+# Copyright (c) 2019 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
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_40
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE
+| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up IPSec performance test suite | L3 | ${nic_name} | SW_cryptodev
+| ... | AND | Set up performance test suite with crypto ipsecmb
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput IPv4 IPsec tunnel mode.*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
+| ... | Eth-IPv4-IPSec on DUT1-DUT2
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK SW
+| ... | crypto devices and multiple IPsec tunnels between them.
+| ... | DUTs get IPv4 traffic from TG, encrypt it
+| ... | and send to another DUT, where packets are decrypted and sent back to TG
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and 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, number of flows per flow-group equals to
+| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${58}
+| ${tg_if1_ip4}= | 192.168.10.2
+| ${dut1_if1_ip4}= | 192.168.10.1
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
+| ${dut2_if2_ip4}= | 192.168.20.1
+| ${tg_if2_ip4}= | 192.168.20.2
+| ${raddr_ip4}= | 20.0.0.0
+| ${laddr_ip4}= | 10.0.0.0
+| ${addr_range}= | ${24}
+| ${n_tunnels}= | ${40}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | # These are enums (not strings) so they cannot be in Variables table.
+| | ${encr_alg}= | Crypto Alg AES CBC 128
+| | ${auth_alg}= | Integ Alg SHA 512 256
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_mb | ${phy_cores}
+| | And Apply startup configuration on all VPP DUTs
+| | And Initialize IPSec in 3-node circular topology
+| | And VPP IPsec Create Tunnel Interfaces
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..12d5651
--- /dev/null
@@ -0,0 +1,157 @@
+# Copyright (c) 2019 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
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_40
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE
+| ... | AES_128_GCM | AES
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up IPSec performance test suite | L3 | ${nic_name} | SW_cryptodev
+| ... | AND | Set up performance test suite with crypto ipsecmb
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput IPv4 IPsec tunnel mode.*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
+| ... | Eth-IPv4-IPSec on DUT1-DUT2
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK SW
+| ... | crypto devices and multiple IPsec tunnels between them.
+| ... | DUTs get IPv4 traffic from TG, encrypt it
+| ... | and send to another DUT, where packets are decrypted and sent back to TG
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and 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, number of flows per flow-group equals to
+| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${54}
+| ${tg_if1_ip4}= | 192.168.10.2
+| ${dut1_if1_ip4}= | 192.168.10.1
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
+| ${dut2_if2_ip4}= | 192.168.20.1
+| ${tg_if2_ip4}= | 192.168.20.2
+| ${raddr_ip4}= | 20.0.0.0
+| ${laddr_ip4}= | 10.0.0.0
+| ${addr_range}= | ${24}
+| ${n_tunnels}= | ${40}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | # These are enums (not strings) so they cannot be in Variables table.
+| | ${encr_alg}= | Crypto Alg AES GCM 128
+| | ${auth_alg}= | Integ Alg AES GCM 128
+| | ${ipsec_proto} = | IPsec Proto ESP
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_gcm | ${phy_cores}
+| | And Apply startup configuration on all VPP DUTs
+| | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
+| | And Initialize IPSec in 3-node circular topology
+| | And VPP IPsec Create Tunnel Interfaces
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..0e8c902
--- /dev/null
@@ -0,0 +1,157 @@
+# Copyright (c) 2019 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
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_40
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE
+| ... | AES_256_GCM | AES
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up IPSec performance test suite | L3 | ${nic_name} | SW_cryptodev
+| ... | AND | Set up performance test suite with crypto ipsecmb
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput IPv4 IPsec tunnel mode.*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
+| ... | Eth-IPv4-IPSec on DUT1-DUT2
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK SW
+| ... | crypto devices and multiple IPsec tunnels between them.
+| ... | DUTs get IPv4 traffic from TG, encrypt it
+| ... | and send to another DUT, where packets are decrypted and sent back to TG
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and 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, number of flows per flow-group equals to
+| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${54}
+| ${tg_if1_ip4}= | 192.168.10.2
+| ${dut1_if1_ip4}= | 192.168.10.1
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
+| ${dut2_if2_ip4}= | 192.168.20.1
+| ${tg_if2_ip4}= | 192.168.20.2
+| ${raddr_ip4}= | 20.0.0.0
+| ${laddr_ip4}= | 10.0.0.0
+| ${addr_range}= | ${24}
+| ${n_tunnels}= | ${40}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | # These are enums (not strings) so they cannot be in Variables table.
+| | ${encr_alg}= | Crypto Alg AES GCM 256
+| | ${auth_alg}= | Integ Alg AES GCM 256
+| | ${ipsec_proto} = | IPsec Proto ESP
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_gcm | ${phy_cores}
+| | And Apply startup configuration on all VPP DUTs
+| | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
+| | And Initialize IPSec in 3-node circular topology
+| | And VPP IPsec Create Tunnel Interfaces
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale40tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot
new file mode 100644 (file)
index 0000000..40b6c19
--- /dev/null
@@ -0,0 +1,154 @@
+# Copyright (c) 2019 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
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_4
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE
+| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up IPSec performance test suite | L3 | ${nic_name} | SW_cryptodev
+| ... | AND | Set up performance test suite with crypto ipsecmb
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput IPv4 IPsec tunnel mode.*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
+| ... | Eth-IPv4-IPSec on DUT1-DUT2
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK SW
+| ... | crypto devices and multiple IPsec tunnels between them.
+| ... | DUTs get IPv4 traffic from TG, encrypt it
+| ... | and send to another DUT, where packets are decrypted and sent back to TG
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and 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, number of flows per flow-group equals to
+| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${58}
+| ${tg_if1_ip4}= | 192.168.10.2
+| ${dut1_if1_ip4}= | 192.168.10.1
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
+| ${dut2_if2_ip4}= | 192.168.20.1
+| ${tg_if2_ip4}= | 192.168.20.2
+| ${raddr_ip4}= | 20.0.0.0
+| ${laddr_ip4}= | 10.0.0.0
+| ${addr_range}= | ${24}
+| ${n_tunnels}= | ${4}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | # These are enums (not strings) so they cannot be in Variables table.
+| | ${encr_alg}= | Crypto Alg AES CBC 128
+| | ${auth_alg}= | Integ Alg SHA 256 128
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_mb | ${phy_cores}
+| | And Apply startup configuration on all VPP DUTs
+| | And Initialize IPSec in 3-node circular topology
+| | And VPP IPsec Create Tunnel Interfaces
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac256sha-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr.robot
new file mode 100644 (file)
index 0000000..fa42af9
--- /dev/null
@@ -0,0 +1,154 @@
+# Copyright (c) 2019 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
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_4
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE
+| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up IPSec performance test suite | L3 | ${nic_name} | SW_cryptodev
+| ... | AND | Set up performance test suite with crypto ipsecmb
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput IPv4 IPsec tunnel mode.*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
+| ... | Eth-IPv4-IPSec on DUT1-DUT2
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK SW
+| ... | crypto devices and multiple IPsec tunnels between them.
+| ... | DUTs get IPv4 traffic from TG, encrypt it
+| ... | and send to another DUT, where packets are decrypted and sent back to TG
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and 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, number of flows per flow-group equals to
+| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${58}
+| ${tg_if1_ip4}= | 192.168.10.2
+| ${dut1_if1_ip4}= | 192.168.10.1
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
+| ${dut2_if2_ip4}= | 192.168.20.1
+| ${tg_if2_ip4}= | 192.168.20.2
+| ${raddr_ip4}= | 20.0.0.0
+| ${laddr_ip4}= | 10.0.0.0
+| ${addr_range}= | ${24}
+| ${n_tunnels}= | ${4}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | # These are enums (not strings) so they cannot be in Variables table.
+| | ${encr_alg}= | Crypto Alg AES CBC 128
+| | ${auth_alg}= | Integ Alg SHA 512 256
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_mb | ${phy_cores}
+| | And Apply startup configuration on all VPP DUTs
+| | And Initialize IPSec in 3-node circular topology
+| | And VPP IPsec Create Tunnel Interfaces
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes128cbc-hmac512sha-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..236e343
--- /dev/null
@@ -0,0 +1,157 @@
+# Copyright (c) 2019 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
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_4
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE
+| ... | AES_128_GCM | AES
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up IPSec performance test suite | L3 | ${nic_name} | SW_cryptodev
+| ... | AND | Set up performance test suite with crypto ipsecmb
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput IPv4 IPsec tunnel mode.*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
+| ... | Eth-IPv4-IPSec on DUT1-DUT2
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK SW
+| ... | crypto devices and multiple IPsec tunnels between them.
+| ... | DUTs get IPv4 traffic from TG, encrypt it
+| ... | and send to another DUT, where packets are decrypted and sent back to TG
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and 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, number of flows per flow-group equals to
+| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${54}
+| ${tg_if1_ip4}= | 192.168.10.2
+| ${dut1_if1_ip4}= | 192.168.10.1
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
+| ${dut2_if2_ip4}= | 192.168.20.1
+| ${tg_if2_ip4}= | 192.168.20.2
+| ${raddr_ip4}= | 20.0.0.0
+| ${laddr_ip4}= | 10.0.0.0
+| ${addr_range}= | ${24}
+| ${n_tunnels}= | ${4}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | # These are enums (not strings) so they cannot be in Variables table.
+| | ${encr_alg}= | Crypto Alg AES GCM 128
+| | ${auth_alg}= | Integ Alg AES GCM 128
+| | ${ipsec_proto} = | IPsec Proto ESP
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_gcm | ${phy_cores}
+| | And Apply startup configuration on all VPP DUTs
+| | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
+| | And Initialize IPSec in 3-node circular topology
+| | And VPP IPsec Create Tunnel Interfaces
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes128gcm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..dae4dd1
--- /dev/null
@@ -0,0 +1,157 @@
+# Copyright (c) 2019 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
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| ...
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_4
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE
+| ... | AES_256_GCM | AES
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up IPSec performance test suite | L3 | ${nic_name} | SW_cryptodev
+| ... | AND | Set up performance test suite with crypto ipsecmb
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput IPv4 IPsec tunnel mode.*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
+| ... | Eth-IPv4-IPSec on DUT1-DUT2
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with DPDK SW
+| ... | crypto devices and multiple IPsec tunnels between them.
+| ... | DUTs get IPv4 traffic from TG, encrypt it
+| ... | and send to another DUT, where packets are decrypted and sent back to TG
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and 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, number of flows per flow-group equals to
+| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
+| ... | is applied to both streams.
+| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${54}
+| ${tg_if1_ip4}= | 192.168.10.2
+| ${dut1_if1_ip4}= | 192.168.10.1
+| ${dut1_if2_ip4}= | 100.0.0.1
+| ${dut2_if1_ip4}= | 100.0.0.2
+| ${dut2_if2_ip4}= | 192.168.20.1
+| ${tg_if2_ip4}= | 192.168.20.2
+| ${raddr_ip4}= | 20.0.0.0
+| ${laddr_ip4}= | 10.0.0.0
+| ${addr_range}= | ${24}
+| ${n_tunnels}= | ${4}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | # These are enums (not strings) so they cannot be in Variables table.
+| | ${encr_alg}= | Crypto Alg AES GCM 256
+| | ${auth_alg}= | Integ Alg AES GCM 256
+| | ${ipsec_proto} = | IPsec Proto ESP
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_gcm | ${phy_cores}
+| | And Apply startup configuration on all VPP DUTs
+| | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
+| | And Initialize IPSec in 3-node circular topology
+| | And VPP IPsec Create Tunnel Interfaces
+| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2}
+| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg}
+| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale4tnlsw-ip4base-int-aes256gcm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}

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