Add ipsec crypto test for Denverton platform 46/18446/3
authorYulong Pei <yulong.pei@intel.com>
Thu, 21 Mar 2019 10:24:46 +0000 (18:24 +0800)
committerJan Gelety <jgelety@cisco.com>
Thu, 28 Mar 2019 13:29:49 +0000 (13:29 +0000)
add ipsec cryto test to support Denverton hardware crypto device C3xxx.
replace HW_cryptodev keyword to HW_DH895xcc or HW_C3xxx, or add more other
hardware crypto device type support in the future.

Change-Id: I181bca4095757fde7ca45ab3856273ac5930d902
Signed-off-by: Yulong Pei <yulong.pei@intel.com>
45 files changed:
resources/libraries/python/DUTSetup.py
resources/libraries/robot/performance/performance_setup.robot
resources/libraries/robot/shared/default.robot
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-mrr.robot
tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdr.robot

index 69594ef..67edefb 100644 (file)
@@ -206,17 +206,19 @@ class DUTSetup(object):
         return pids
 
     @staticmethod
         return pids
 
     @staticmethod
-    def crypto_device_verify(node, force_init=False, numvfs=32):
+    def crypto_device_verify(node, crypto_type, numvfs, force_init=False):
         """Verify if Crypto QAT device virtual functions are initialized on all
         DUTs. If parameter force initialization is set to True, then try to
         initialize or remove VFs on QAT.
 
         :param node: DUT node.
         """Verify if Crypto QAT device virtual functions are initialized on all
         DUTs. If parameter force initialization is set to True, then try to
         initialize or remove VFs on QAT.
 
         :param node: DUT node.
-        :param force_init: If True then try to initialize to specific value.
+        :crypto_type: Crypto device type - HW_DH895xcc or HW_C3xxx.
         :param numvfs: Number of VFs to initialize, 0 - disable the VFs.
         :param numvfs: Number of VFs to initialize, 0 - disable the VFs.
+        :param force_init: If True then try to initialize to specific value.
         :type node: dict
         :type node: dict
-        :type force_init: bool
+        :type crypto_type: string
         :type numvfs: int
         :type numvfs: int
+        :type force_init: bool
         :returns: nothing
         :raises RuntimeError: If QAT VFs are not created and force init is set
                               to False.
         :returns: nothing
         :raises RuntimeError: If QAT VFs are not created and force init is set
                               to False.
@@ -227,26 +229,38 @@ class DUTSetup(object):
         if sriov_numvfs != numvfs:
             if force_init:
                 # QAT is not initialized and we want to initialize with numvfs
         if sriov_numvfs != numvfs:
             if force_init:
                 # QAT is not initialized and we want to initialize with numvfs
-                DUTSetup.crypto_device_init(node, numvfs)
+                DUTSetup.crypto_device_init(node, crypto_type, numvfs)
             else:
                 raise RuntimeError('QAT device failed to create VFs on {host}'.
                                    format(host=node['host']))
 
     @staticmethod
             else:
                 raise RuntimeError('QAT device failed to create VFs on {host}'.
                                    format(host=node['host']))
 
     @staticmethod
-    def crypto_device_init(node, numvfs):
+    def crypto_device_init(node, crypto_type, numvfs):
         """Init Crypto QAT device virtual functions on DUT.
 
         :param node: DUT node.
         """Init Crypto QAT device virtual functions on DUT.
 
         :param node: DUT node.
+        :crypto_type: Crypto device type - HW_DH895xcc or HW_C3xxx.
         :param numvfs: Number of VFs to initialize, 0 - disable the VFs.
         :type node: dict
         :param numvfs: Number of VFs to initialize, 0 - disable the VFs.
         :type node: dict
+        :type crypto_type: string
         :type numvfs: int
         :returns: nothing
         :raises RuntimeError: If failed to stop VPP or QAT failed to initialize.
         """
         :type numvfs: int
         :returns: nothing
         :raises RuntimeError: If failed to stop VPP or QAT failed to initialize.
         """
+        if crypto_type == "HW_DH895xcc":
+            kernel_mod = "qat_dh895xcc"
+            kernel_drv = "dh895xcc"
+        elif crypto_type == "HW_C3xxx":
+            kernel_mod = "qat_c3xxx"
+            kernel_drv = "c3xxx"
+        else:
+            raise RuntimeError('Unsupported crypto device type on {host}'.
+                               format(host=node['host']))
+
         pci_addr = Topology.get_cryptodev(node)
 
         # QAT device must be re-bound to kernel driver before initialization.
         pci_addr = Topology.get_cryptodev(node)
 
         # QAT device must be re-bound to kernel driver before initialization.
-        DUTSetup.verify_kernel_module(node, 'qat_dh895xcc', force_load=True)
+        DUTSetup.verify_kernel_module(node, kernel_mod, force_load=True)
 
         # Stop VPP to prevent deadlock.
         DUTSetup.stop_service(node, Constants.VPP_UNIT)
 
         # Stop VPP to prevent deadlock.
         DUTSetup.stop_service(node, Constants.VPP_UNIT)
@@ -257,7 +271,7 @@ class DUTSetup(object):
             DUTSetup.pci_driver_unbind(node, pci_addr)
 
         # Bind to kernel driver.
             DUTSetup.pci_driver_unbind(node, pci_addr)
 
         # Bind to kernel driver.
-        DUTSetup.pci_driver_bind(node, pci_addr, 'dh895xcc')
+        DUTSetup.pci_driver_bind(node, pci_addr, kernel_drv)
 
         # Initialize QAT VFs.
         if numvfs > 0:
 
         # Initialize QAT VFs.
         if numvfs > 0:
index ae3e03a..f484eeb 100644 (file)
 | | ... | *Arguments:*
 | | ... | - topology_type - Topology type. Type: string
 | | ... | - nic_model - Interface model. Type: string
 | | ... | *Arguments:*
 | | ... | - topology_type - Topology type. Type: string
 | | ... | - nic_model - Interface model. Type: string
-| | ... | - crypto_type - Crypto device type - HW_cryptodev or SW_cryptodev
-| | ... | (Optional). Type: string, default value: HW_cryptodev
+| | ... | - crypto_type - Crypto device type - HW_DH895xcc or HW_C3xxx or
+| | ... | SW_cryptodev. Type: string, default value: HW_DH895xcc
 | | ...
 | | ... | *Example:*
 | | ...
 | | ... | \| Set up IPSec performance test suite \| L2 \
 | | ...
 | | ... | *Example:*
 | | ...
 | | ... | \| Set up IPSec performance test suite \| L2 \
-| | ... | \| Intel-X520-DA2 \|
+| | ... | \| Intel-X520-DA2 \| HW_DH895xcc \|
 | | ...
 | | ...
-| | [Arguments] | ${topology_type} | ${nic_model} | ${crypto_type}=HW_cryptodev
+| | [Arguments] | ${topology_type} | ${nic_model} | ${crypto_type}=HW_DH895xcc
 | | ...
 | | Set up 3-node performance topology with DUT's NIC model
 | | ... | ${topology_type} | ${nic_model}
 | | ...
 | | Set up 3-node performance topology with DUT's NIC model
 | | ... | ${topology_type} | ${nic_model}
+| | Return From Keyword If | '${crypto_type}' == 'SW_cryptodev'
 | | ${numvfs}= | Set Variable If
 | | ${numvfs}= | Set Variable If
-| | ... | '${crypto_type}' == 'HW_cryptodev' | ${32}
-| | Run Keyword If | '${crypto_type}' == 'HW_cryptodev'
-| | ... | Configure crypto device on all DUTs | force_init=${True}
-| | ... | numvfs=${numvfs}
-| | Run Keyword If | '${crypto_type}' == 'HW_cryptodev'
-| | ... | Configure kernel module on all DUTs | vfio_pci | force_load=${True}
+| | ... | '${crypto_type}' == 'HW_DH895xcc' | ${32}
+| | ... | '${crypto_type}' == 'HW_C3xxx' | ${16}
+| | Configure crypto device on all DUTs | ${crypto_type} | numvfs=${numvfs}
+| | ... | force_init=${True}
+| | Configure kernel module on all DUTs | vfio_pci | force_load=${True}
 
 | Set up performance test suite with MEMIF
 | | [Documentation]
 
 | Set up performance test suite with MEMIF
 | | [Documentation]
index 954f881..70f5da8 100644 (file)
 | | ... | try to initialize/disable.
 | | ...
 | | ... | *Arguments:*
 | | ... | try to initialize/disable.
 | | ...
 | | ... | *Arguments:*
-| | ... | - force_init - Force to initialize. Type: boolean
+| | ... | - crypto_type - Crypto device type - HW_DH895xcc or HW_C3xxx.
+| | ... | Type: string, default value: HW_DH895xcc
 | | ... | - numvfs - Number of VFs to initialize, 0 - disable the VFs
 | | ... | - numvfs - Number of VFs to initialize, 0 - disable the VFs
-| | ... | (Optional). Type: integer, default value: ${32}
+| | ... | Type: integer, default value: ${32}
+| | ... | - force_init - Force to initialize. Type: boolean
 | | ...
 | | ... | *Example:*
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Configure crypto device on all DUTs \| ${True} \|
+| | ... | \| Configure crypto device on all DUTs \| HW_DH895xcc \| ${32} \|
 | | ...
 | | ...
-| | [Arguments] | ${force_init}=${False} | ${numvfs}=${32}
+| | [Arguments] | ${crypto_type} | ${numvfs} | ${force_init}=${False}
 | | ...
 | | ${duts}= | Get Matches | ${nodes} | DUT*
 | | :FOR | ${dut} | IN | @{duts}
 | | ...
 | | ${duts}= | Get Matches | ${nodes} | DUT*
 | | :FOR | ${dut} | IN | @{duts}
-| | | Crypto Device Verify | ${nodes['${dut}']} | force_init=${force_init}
-| | | ... | numvfs=${numvfs}
+| | | Crypto Device Verify | ${nodes['${dut}']} | ${crypto_type}
+| | | ... | ${numvfs} | force_init=${force_init}
 
 | Configure AVF interfaces on all DUTs
 | | [Documentation] | Configure virtual functions for AVF interfaces on PCI
 
 | Configure AVF interfaces on all DUTs
 | | [Documentation] | Configure virtual functions for AVF interfaces on PCI
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr.robot
new file mode 100644 (file)
index 0000000..7548df7
--- /dev/null
@@ -0,0 +1,160 @@
+# 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 | MRR
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance mrr test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 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:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${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
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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 VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | 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}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..34fd80d
--- /dev/null
@@ -0,0 +1,165 @@
+# 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
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput 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 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 or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${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
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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 VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | 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}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr.robot
new file mode 100644 (file)
index 0000000..b6e40ad
--- /dev/null
@@ -0,0 +1,155 @@
+# 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 | MRR
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance mrr test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 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:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${58}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling CBC-SHA1 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${encr_alg} = | Crypto Alg AES CBC 128
+| | ${auth_alg} = | Integ Alg SHA1 96
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr.robot
new file mode 100644 (file)
index 0000000..d6747e0
--- /dev/null
@@ -0,0 +1,160 @@
+# 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
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput 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 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 or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${58}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling CBC-SHA1 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${encr_alg} = | Crypto Alg AES CBC 128
+| | ${auth_alg} = | Integ Alg SHA1 96
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr.robot
new file mode 100644 (file)
index 0000000..5c48610
--- /dev/null
@@ -0,0 +1,166 @@
+# 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 | MRR
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| ...
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance mrr test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 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:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${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
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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 VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | 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}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..2628d62
--- /dev/null
@@ -0,0 +1,171 @@
+# 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
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| ...
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 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 or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number
+| ... | of packets transmitted. NDR is discovered for different
+| ... | number of IPsec tunnels 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${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
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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 VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | 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}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr.robot
new file mode 100644 (file)
index 0000000..21e2609
--- /dev/null
@@ -0,0 +1,160 @@
+# 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 | MRR
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| ...
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance mrr test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 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:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${58}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${encr_alg} = | Crypto Alg AES CBC 128
+| | ${auth_alg} = | Integ Alg SHA1 96
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr.robot
new file mode 100644 (file)
index 0000000..b9eed98
--- /dev/null
@@ -0,0 +1,165 @@
+# 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
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| ...
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 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 or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number
+| ... | of packets transmitted. NDR is discovered for different
+| ... | number of IPsec tunnels using MLRsearch library.
+| ... | 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${58}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${encr_alg} = | Crypto Alg AES CBC 128
+| | ${auth_alg} = | Integ Alg SHA1 96
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr.robot
new file mode 100644 (file)
index 0000000..d7ff1da
--- /dev/null
@@ -0,0 +1,162 @@
+# 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 | MRR
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | SW_cryptodev
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance mrr test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${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
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_gcm | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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 VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | 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}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..5e430f0
--- /dev/null
@@ -0,0 +1,167 @@
+# 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
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | SW_cryptodev
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput 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 or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${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
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_gcm | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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 VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | 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}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnlsw-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr.robot
new file mode 100644 (file)
index 0000000..c0a9059
--- /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 | MRR
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | SW_cryptodev
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance mrr test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling CBC-SHA1 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${encr_alg} = | Crypto Alg AES CBC 128
+| | ${auth_alg} = | Integ Alg SHA1 96
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_mb | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr.robot
new file mode 100644 (file)
index 0000000..85ec0a6
--- /dev/null
@@ -0,0 +1,162 @@
+# 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
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | SW_cryptodev
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput 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 or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling CBC-SHA1 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${encr_alg} = | Crypto Alg AES CBC 128
+| | ${auth_alg} = | Integ Alg SHA1 96
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_mb | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnlsw-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr.robot
new file mode 100644 (file)
index 0000000..e96b307
--- /dev/null
@@ -0,0 +1,171 @@
+# 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 | MRR
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | SW_cryptodev
+| ...
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance mrr test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - search_type - NDR or PDR. Type: string
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ... | - min_rate - Min rate for binary search, default value: ${50000}.
+| | ... | Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${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
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_gcm | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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 VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | 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}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..28c68a7
--- /dev/null
@@ -0,0 +1,176 @@
+# 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
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | SW_cryptodev
+| ...
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - search_type - NDR or PDR. Type: string
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ... | - min_rate - Min rate for binary search, default value: ${50000}.
+| | ... | Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${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
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_gcm | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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 VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | 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}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnlsw-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr.robot
new file mode 100644 (file)
index 0000000..1a9802e
--- /dev/null
@@ -0,0 +1,166 @@
+# 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 | MRR
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | SW_cryptodev
+| ...
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance mrr test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling CBC-SHA1 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - search_type - NDR or PDR. Type: string
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ... | - min_rate - Min rate for binary search, default value: ${50000}.
+| | ... | Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${encr_alg} = | Crypto Alg AES CBC 128
+| | ${auth_alg} = | Integ Alg SHA1 96
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_mb | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr.robot
new file mode 100644 (file)
index 0000000..31fd30b
--- /dev/null
@@ -0,0 +1,171 @@
+# 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
+| ... | IP4FWD | IPSEC | IPSECSW | IPSECTUN | NIC_Intel-X553 | BASE
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | SW_cryptodev
+| ...
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling CBC-SHA1 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - search_type - NDR or PDR. Type: string
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ... | - min_rate - Min rate for binary search, default value: ${50000}.
+| | ... | Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${encr_alg} = | Crypto Alg AES CBC 128
+| | ${auth_alg} = | Integ Alg SHA1 96
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add DPDK SW cryptodev on DUTs in 3-node single-link circular topology
+| | ... | aesni_mb | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecbasetnlsw-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr.robot
new file mode 100644 (file)
index 0000000..d4f7ec3
--- /dev/null
@@ -0,0 +1,162 @@
+# 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 | SCALE | MRR
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | TNL_1000
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance mrr test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 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:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${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
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | And Apply startup configuration on all VPP DUTs
+| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
+| | And VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | 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}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..c84588e
--- /dev/null
@@ -0,0 +1,167 @@
+# 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 | SCALE | NDRPDR
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | TNL_1000
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput 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 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 or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling AES GCM config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${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
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | And Apply startup configuration on all VPP DUTs
+| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
+| | And VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | 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}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr.robot
new file mode 100644 (file)
index 0000000..dd1bdaf
--- /dev/null
@@ -0,0 +1,155 @@
+# 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 | SCALE | MRR
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | TNL_1000
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance mrr test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 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:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${58}
+| ${n_tunnels}= | ${1000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling CBC-SHA1 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${encr_alg} = | Crypto Alg AES CBC 128
+| | ${auth_alg} = | Integ Alg SHA1 96
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr.robot
new file mode 100644 (file)
index 0000000..cc3ab93
--- /dev/null
@@ -0,0 +1,160 @@
+# 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 | SCALE | NDRPDR
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | TNL_1000
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput 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 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 or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${58}
+| ${n_tunnels}= | ${1000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPSec tunneling CBC-SHA1 config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${encr_alg} = | Crypto Alg AES CBC 128
+| | ${auth_alg} = | Integ Alg SHA1 96
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr.robot
new file mode 100644 (file)
index 0000000..09cae0b
--- /dev/null
@@ -0,0 +1,168 @@
+# 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 | SCALE | MR
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | TNL_1000
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| ...
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance mrr test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 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:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${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
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | And Apply startup configuration on all VPP DUTs
+| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
+| | And VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | 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}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr.robot
new file mode 100644 (file)
index 0000000..c0c9f52
--- /dev/null
@@ -0,0 +1,173 @@
+# 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 | SCALE | NDRPDR
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | TNL_1000
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| ...
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 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 or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${54}
+| ${n_tunnels}= | ${1000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${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
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | And Apply startup configuration on all VPP DUTs
+| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg}
+| | And VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | And VPP IPsec Select Backend | ${dut1} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Select Backend | ${dut2} | ${ipsec_proto} | index=${1}
+| | And VPP IPsec Backend Dump | ${dut1}
+| | And VPP IPsec Backend Dump | ${dut2}
+| | 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}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr.robot
new file mode 100644 (file)
index 0000000..072a74c
--- /dev/null
@@ -0,0 +1,161 @@
+# 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 | SCALE | MRR
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | TNL_1000
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| ...
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance mrr test
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 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:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${58}
+| ${n_tunnels}= | ${1000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${encr_alg} = | Crypto Alg AES CBC 128
+| | ${auth_alg} = | Integ Alg SHA1 96
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x553-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr.robot
new file mode 100644 (file)
index 0000000..d5bef4f
--- /dev/null
@@ -0,0 +1,166 @@
+# 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 | SCALE | NDRPDR
+| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-X553 | TNL_1000
+| ...
+| Suite Setup | Set up IPSec performance test suite | L3 | Intel-X553
+| ... | HW_C3xxx
+| ...
+| Suite Teardown | Tear down 3-node performance topology
+| ...
+| Test Setup | Set up performance test
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
+| ...
+| ... | *[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 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 or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 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 ***
+# X553 bandwidth limit 20Gbps/2=10Gbps
+| ${s_10G}= | ${10000000000}
+# X553 Mpps limit 29.76Mpps/2=14.88Mpps
+| ${s_14.88Mpps}= | ${14880952}
+| ${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
+| ${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}
+| ${overhead}= | ${58}
+| ${n_tunnels}= | ${1000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${encr_alg} = | Crypto Alg AES CBC 128
+| | ${auth_alg} = | Integ Alg SHA1 96
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_10G} | ${framesize} | overhead=${overhead}
+| | ... | pps_limit=${s_14.88Mpps}
+| | And Add cryptodev to all DUTs | ${phy_cores}
+| | And Add DPDK dev default RXD to all DUTs | 2048
+| | And Add DPDK dev default TXD to all DUTs | 2048
+| | 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}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
index 90b0bf5..c757fd7 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
index 09e762b..bf73186 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
index eaf38d9..ae029c6 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
index 1c89ea2..2c698a5 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
index d16102d..907273e 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
index bd1ad40..1cd17b4 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
index f5e3c25..c967034 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
index e737738..4df6946 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
index 1b03141..4a24131 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
index 112b6ed..a4b544d 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
index 6ed1ee0..b05bd78 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
index c07e999..9d83520 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
index 691bd51..212c717 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
index a9ff5b3..dc15f5a 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
index f820240..80cc921 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
index 63518a1..f87d9c4 100644 (file)
@@ -19,7 +19,7 @@
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
index 864d24f..c6ff69c 100644 (file)
@@ -22,7 +22,7 @@
 | ... | NIC_Intel-XL710
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | NIC_Intel-XL710
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
index b43586e..ceec058 100644 (file)
@@ -22,7 +22,7 @@
 | ... | NIC_Intel-XL710
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
 | ... | NIC_Intel-XL710
 | ...
 | Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
-| ... | HW_cryptodev
+| ... | HW_DH895xcc
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | ...
 | Suite Teardown | Tear down 3-node performance topology
 | ...