diff options
author | Vratko Polak <vrpolak@cisco.com> | 2024-05-29 15:20:02 +0200 |
---|---|---|
committer | Vratko Polak <vrpolak@cisco.com> | 2024-05-31 14:07:11 +0000 |
commit | 9c708c91e04540a6aa46a24b33d344181b58092c (patch) | |
tree | 7f9076a717d67d2d2e8363af37794cbb20e0899f | |
parent | 7b335c86d80b2225e4ba7cd325ec8863adef8527 (diff) |
feat(ipsec): Add suites for more algs
+ Add suite with UDP encap.
+ Add suite with anti replay enabled.
+ Add new enums where needed by the new suites.
+ Apply trimming in enum_util to support "3DES".
+ All 10ktnl suites written and tested.
+ New robot tags added.
+ Fix one comment from the parent.
Change-Id: I2581814dbb327891d8658dd009c4e52ffd318e3b
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
(cherry picked from commit b9dff484de0725bca3f65739519d952e3be55cbe)
15 files changed, 2108 insertions, 13 deletions
diff --git a/docs/content/overview/csit/test_tags.md b/docs/content/overview/csit/test_tags.md index de38945c17..23e09f925e 100644 --- a/docs/content/overview/csit/test_tags.md +++ b/docs/content/overview/csit/test_tags.md @@ -774,23 +774,43 @@ For traffic between DUTs, or for "secondary" traffic, see ${overhead} value. **AES** - IPSec using AES algorithms. + IPSec using AES encrytion algorithms. **AES_128_CBC** IPSec using AES 128 CBC algorithms. +**AES_128_CTR** + + IPSec using AES 128 CTR algorithms. + **AES_128_GCM** IPSec using AES 128 GCM algorithms. +**AES_128_NULL_GMAC** + + IPSec using AES 128 NULL GMAC algorithms. + +**AES_256_CBC** + + IPSec using AES 256 CBC algorithms. + **AES_256_GCM** IPSec using AES 256 GCM algorithms. +**AES_256_NULL_GMAC** + + IPSec using AES 256 NULL GMAC algorithms. + **HMAC** - IPSec using HMAC integrity algorithms. + IPSec using HMAC integrity/authorization algorithms. + +**HMAC_SHA_96** + + IPSec using HMAC SHA 96 integrity algorithms. **HMAC_SHA_256** @@ -800,6 +820,14 @@ For traffic between DUTs, or for "secondary" traffic, see ${overhead} value. IPSec using HMAC SHA 512 integrity algorithms. +**UDP_ENCAP** + + Encapsulate IPsec traffic in UDP. + +**ANTI_REPLAY** + + Enable IPsec Anti-Replay functionality. + **SCHEDULER** IPSec using crypto sw scheduler engine. diff --git a/resources/libraries/python/IPsecUtil.py b/resources/libraries/python/IPsecUtil.py index 59374ab73f..1abfee2cec 100644 --- a/resources/libraries/python/IPsecUtil.py +++ b/resources/libraries/python/IPsecUtil.py @@ -85,13 +85,35 @@ class IpsecSpdAction(Enum): class CryptoAlg(Enum): - """Encryption algorithms.""" + """Encryption algorithms. + + API names and numeric enums from ipsec_types.api (enum ipsec_crypto_alg). + + Lowercase names from ipsec_sa.h (foreach_ipsec_crypto_alg). + + Scapy names are from: + https://github.com/secdev/scapy/blob/master/scapy/layers/ipsec.py + + Key lengths from crypto.h + (foreach_crypto_cipher_alg and foreach_crypto_aead_alg). + """ NONE = ("none", 0, "none", 0) AES_CBC_128 = ("aes-cbc-128", 1, "AES-CBC", 16) + AES_CBC_192 = ("aes-cbc-192", 2, "AES-CBC", 24) AES_CBC_256 = ("aes-cbc-256", 3, "AES-CBC", 32) + AES_CTR_128 = ("aes-ctr-128", 4, "AES-CTR", 16) + AES_CTR_192 = ("aes-ctr-192", 5, "AES-CTR", 24) + AES_CTR_256 = ("aes-ctr-256", 6, "AES-CTR", 32) AES_GCM_128 = ("aes-gcm-128", 7, "AES-GCM", 16) + AES_GCM_192 = ("aes-gcm-192", 8, "AES-GCM", 24) AES_GCM_256 = ("aes-gcm-256", 9, "AES-GCM", 32) + DES_CBC = ("des-cbc", 10, "DES", 7) + _3DES_CBC = ("3des-cbc", 11, "3DES", 24) + CHACHA20_POLY1305 = ("chacha20-poly1305", 12, "CHACHA20-POLY1305", 32) + AES_NULL_GMAC_128 = ("aes-null-gmac-128", 13, "AES-NULL-GMAC", 16) + AES_NULL_GMAC_192 = ("aes-null-gmac-192", 14, "AES-NULL-GMAC", 24) + AES_NULL_GMAC_256 = ("aes-null-gmac-256", 15, "AES-NULL-GMAC", 32) def __init__( self, alg_name: str, alg_int_repr: int, scapy_name: str, key_len: int @@ -108,10 +130,30 @@ class CryptoAlg(Enum): class IntegAlg(Enum): - """Integrity algorithm.""" + """Integrity algorithms. + + API names and numeric enums from ipsec_types.api (enum ipsec_integ_alg). + + Lowercase names from ipsec_sa.h (foreach_ipsec_integ_alg). + + Scapy names are from: + https://github.com/secdev/scapy/blob/master/scapy/layers/ipsec.py + Among those, "AES-CMAC-96" may be a mismatch, + but there is no sha2-related item with "96" in it. + + Key lengths seem to be given double of digest length + from crypto.h (foreach_crypto_link_async_alg), + but data there is not complete + (e.g. it does not distinguish sha-256-96 from sha-256-128). + The missing values are chosen based on last number (e.g. 192 / 4 = 48). + """ NONE = ("none", 0, "none", 0) + MD5_96 = ("md5-96", 1, "HMAC-MD5-96", 24) + SHA1_96 = ("sha1-96", 2, "HMAC-SHA1-96", 24) + SHA_256_96 = ("sha-256-96", 3, "AES-CMAC-96", 24) SHA_256_128 = ("sha-256-128", 4, "SHA2-256-128", 32) + SHA_384_192 = ("sha-384-192", 5, "SHA2-384-192", 48) SHA_512_256 = ("sha-512-256", 6, "SHA2-512-256", 64) def __init__( @@ -1226,6 +1268,8 @@ class IPsecUtil: addr_incr: int, spi_d: dict, existing_tunnels: int = 0, + udp_encap: bool = False, + anti_replay: bool = False, ) -> Tuple[List[bytes], List[bytes]]: """Create multiple IPsec tunnel interfaces on DUT1 node using PAPI. @@ -1247,6 +1291,8 @@ class IPsecUtil: :param addr_incr: IP / IPv6 address incremental step. :param existing_tunnels: Number of tunnel interfaces before creation. Useful mainly for reconf tests. Default 0. + :param udp_encap: Whether to apply UDP_ENCAP flag. + :param anti_replay: Whether to apply USE_ANTI_REPLAY flag. :type nodes: dict :type tun_ips: dict :type if1_key: str @@ -1258,6 +1304,8 @@ class IPsecUtil: :type addr_incr: int :type spi_d: dict :type existing_tunnels: int + :type udp_encap: bool + :type anti_replay: bool :returns: Generated ckeys and ikeys. :rtype: List[bytes], List[bytes] """ @@ -1331,6 +1379,10 @@ class IPsecUtil: c_key = dict(length=0, data=None) i_key = dict(length=0, data=None) common_flags = IPsecSadFlags.IPSEC_API_SAD_FLAG_NONE + if udp_encap: + common_flags |= IPsecSadFlags.IPSEC_API_SAD_FLAG_UDP_ENCAP + if anti_replay: + common_flags |= IPsecSadFlags.IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY sad_entry = dict( sad_id=None, spi=None, @@ -1470,6 +1522,8 @@ class IPsecUtil: addr_incr: int, spi_d: dict, existing_tunnels: int = 0, + udp_encap: bool = False, + anti_replay: bool = False, ) -> None: """Create multiple IPsec tunnel interfaces on DUT2 node using PAPI. @@ -1493,6 +1547,8 @@ class IPsecUtil: :param addr_incr: IP / IPv6 address incremental step. :param existing_tunnels: Number of tunnel interfaces before creation. Useful mainly for reconf tests. Default 0. + :param udp_encap: Whether to apply UDP_ENCAP flag. + :param anti_replay: Whether to apply USE_ANTI_REPLAY flag. :type nodes: dict :type tun_ips: dict :type if2_key: str @@ -1505,6 +1561,8 @@ class IPsecUtil: :type addr_incr: int :type spi_d: dict :type existing_tunnels: int + :type udp_encap: bool + :type anti_replay: bool """ crypto_alg = get_enum_instance(CryptoAlg, crypto_alg) integ_alg = get_enum_instance(IntegAlg, integ_alg) @@ -1569,6 +1627,10 @@ class IPsecUtil: c_key = dict(length=0, data=None) i_key = dict(length=0, data=None) common_flags = IPsecSadFlags.IPSEC_API_SAD_FLAG_NONE + if udp_encap: + common_flags |= IPsecSadFlags.IPSEC_API_SAD_FLAG_UDP_ENCAP + if anti_replay: + common_flags |= IPsecSadFlags.IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY sad_entry = dict( sad_id=None, spi=None, @@ -1718,6 +1780,8 @@ class IPsecUtil: raddr_ip2: str, raddr_range: int, existing_tunnels: int = 0, + udp_encap: bool = False, + anti_replay: bool = False, return_keys: bool = False, ) -> Optional[Tuple[List[bytes], List[bytes], int, int]]: """Create multiple IPsec tunnel interfaces between two VPP nodes. @@ -1747,6 +1811,8 @@ class IPsecUtil: :param existing_tunnels: Number of tunnel interfaces before creation. Useful mainly for reconf tests. Default 0. :param return_keys: Whether generated keys should be returned. + :param udp_encap: Whether to apply UDP_ENCAP flag. + :param anti_replay: Whether to apply USE_ANTI_REPLAY flag. :type nodes: dict :type tun_if1_ip_addr: str :type tun_if2_ip_addr: str @@ -1760,6 +1826,8 @@ class IPsecUtil: :type raddr_range: int :type existing_tunnels: int :type return_keys: bool + :type udp_encap: bool + :type anti_replay: bool :returns: Ckeys, ikeys, spi_1, spi_2. :rtype: Optional[Tuple[List[bytes], List[bytes], int, int]] """ @@ -1791,6 +1859,8 @@ class IPsecUtil: addr_incr, spi_d, existing_tunnels, + udp_encap, + anti_replay, ) if "DUT2" in nodes.keys(): IPsecUtil._ipsec_create_tunnel_interfaces_dut2_papi( @@ -1806,6 +1876,8 @@ class IPsecUtil: addr_incr, spi_d, existing_tunnels, + udp_encap, + anti_replay, ) if return_keys: @@ -2150,7 +2222,8 @@ class IPsecUtil: # The proto argument does not correspond to IPsecProto. # The allowed values come from src/vnet/ip/protocols.def # and we do not have a good enum for that yet. - # FlowUti. and FlowUtil. are close but not exactly the same. + # FlowUtil.FlowType and FlowUtil.FlowProto are close, + # but not exactly the same. # TODO: to be fixed to use full PAPI when it is ready in VPP cmd = ( diff --git a/resources/libraries/python/enum_util.py b/resources/libraries/python/enum_util.py index 41dfd8a459..f721936ee4 100644 --- a/resources/libraries/python/enum_util.py +++ b/resources/libraries/python/enum_util.py @@ -31,13 +31,15 @@ def get_enum_instance( to convert string into the corresponding Enum instance. Aliases are also recognized. - As an added benefit, support various Robot-like niceties, - like lower case, or dash or space instead of underscore. - As a common shortcut, value is returned it it already is an instance. Another convenience: None or empty string is processed as "NONE". + As an added benefit, support various Robot-like niceties, + like lower case, or dash or space instead of underscore. + Also strip the identifiers, this is mostly due to "3DES". + Enum instance cannot start with a number, so "_3DES" + strip is needed. + If the class is a subclass of IntEnum, int values and (string) values convertable to int are also accepted as input. @@ -59,9 +61,10 @@ def get_enum_instance( return value if not value: value = "NONE" - normalized_name = str(value).upper().replace("-", "_").replace(" ", "_") + normalized_name = str(value).upper().replace("-", " ").replace("_", " ") members = enum_class.__members__ # Includes aliases, useful for NONE. - if normalized_name not in members: - msg = f"Enum class {enum_class} does not have value {normalized_name!r}" - raise ValueError(msg) - return members[normalized_name] + for member_name in members: + if normalized_name.strip() == member_name.replace("_", " ").strip(): + return members[member_name] + msg = f"Enum class {enum_class} does not have value {normalized_name!r}" + raise ValueError(msg) diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot new file mode 100644 index 0000000000..05cae3d6f1 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr.robot @@ -0,0 +1,166 @@ +# Copyright (c) 2024 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/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | AES | HMAC_SHA_256 | UDP_ENCAP | ANTI_REPLAY +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance | ipsec_sa +| +| 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. UDP encapsulation is used between DUTs. \ +| ... | Anti-replay is enabled. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \ +| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \ +| ... | expressed in percentage of packets transmitted. NDR and PDR are \ +| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \ +| ... | library. +| ... | Test packets are generated by TG on \ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups \ +| ... | (flow-group per direction, number of flows per flow-group equals to \ +| ... | number of IPSec tunnels) with all packets \ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and \ +| ... | static payload. MAC addresses are matching MAC addresses of the TG \ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) \ +| ... | is applied to both streams. +| ... | +| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ... | crypto_native_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${encr_alg}= | AES CBC 128 +| ${auth_alg}= | SHA 256 128 +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${70} +| ${tg_if1_ip4}= | 192.168.10.254 +| ${dut1_if1_ip4}= | 192.168.10.11 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.102 +| ${dut2_if2_ip4}= | 192.168.20.11 +| ${tg_if2_ip4}= | 192.168.20.254 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +# Traffic profile: +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPSec tunneling AES_CBC_128+SHA_256_128 config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${DUT1_${int}2}[0] +| | ... | ${DUT2_${int}1}[0] | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | udp_encap=${True} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac256sha-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr.robot new file mode 100644 index 0000000000..a420e3a831 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr.robot @@ -0,0 +1,166 @@ +# Copyright (c) 2024 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/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | AES | HMAC_SHA_96 | UDP_ENCAP | ANTI_REPLAY +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance | ipsec_sa +| +| 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. UDP encapsulation is used between DUTs. \ +| ... | Anti-replay is enabled. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \ +| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \ +| ... | expressed in percentage of packets transmitted. NDR and PDR are \ +| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \ +| ... | library. +| ... | Test packets are generated by TG on \ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups \ +| ... | (flow-group per direction, number of flows per flow-group equals to \ +| ... | number of IPSec tunnels) with all packets \ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and \ +| ... | static payload. MAC addresses are matching MAC addresses of the TG \ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) \ +| ... | is applied to both streams. +| ... | +| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ... | crypto_native_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${encr_alg}= | AES CBC 128 +| ${auth_alg}= | SHA1 96 +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.254 +| ${dut1_if1_ip4}= | 192.168.10.11 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.102 +| ${dut2_if2_ip4}= | 192.168.20.11 +| ${tg_if2_ip4}= | 192.168.20.254 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +# Traffic profile: +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPSec tunneling AES_CBC_128+SHA1_96 config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${DUT1_${int}2}[0] +| | ... | ${DUT2_${int}1}[0] | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | udp_encap=${True} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128cbc-hmac96sha-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr.robot new file mode 100644 index 0000000000..f39560deed --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr.robot @@ -0,0 +1,166 @@ +# Copyright (c) 2024 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/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CTR | AES | HMAC_SHA_256 | UDP_ENCAP | ANTI_REPLAY +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance | ipsec_sa +| +| 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. UDP encapsulation is used between DUTs. \ +| ... | Anti-replay is enabled. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \ +| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \ +| ... | expressed in percentage of packets transmitted. NDR and PDR are \ +| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \ +| ... | library. +| ... | Test packets are generated by TG on \ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups \ +| ... | (flow-group per direction, number of flows per flow-group equals to \ +| ... | number of IPSec tunnels) with all packets \ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and \ +| ... | static payload. MAC addresses are matching MAC addresses of the TG \ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) \ +| ... | is applied to both streams. +| ... | +| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ... | crypto_native_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${encr_alg}= | AES CTR 128 +| ${auth_alg}= | SHA 256 128 +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.254 +| ${dut1_if1_ip4}= | 192.168.10.11 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.102 +| ${dut2_if2_ip4}= | 192.168.20.11 +| ${tg_if2_ip4}= | 192.168.20.254 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +# Traffic profile: +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPSec tunneling AES_CTR_128+SHA_256_128 config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${DUT1_${int}2}[0] +| | ... | ${DUT2_${int}1}[0] | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | udp_encap=${True} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac256sha-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr.robot new file mode 100644 index 0000000000..956b5072cf --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr.robot @@ -0,0 +1,166 @@ +# Copyright (c) 2024 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/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CTR | AES | HMAC_SHA_96 | UDP_ENCAP | ANTI_REPLAY +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance | ipsec_sa +| +| 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. UDP encapsulation is used between DUTs. \ +| ... | Anti-replay is enabled. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \ +| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \ +| ... | expressed in percentage of packets transmitted. NDR and PDR are \ +| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \ +| ... | library. +| ... | Test packets are generated by TG on \ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups \ +| ... | (flow-group per direction, number of flows per flow-group equals to \ +| ... | number of IPSec tunnels) with all packets \ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and \ +| ... | static payload. MAC addresses are matching MAC addresses of the TG \ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) \ +| ... | is applied to both streams. +| ... | +| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ... | crypto_native_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${encr_alg}= | AES CTR 128 +| ${auth_alg}= | SHA1 96 +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${58} +| ${tg_if1_ip4}= | 192.168.10.254 +| ${dut1_if1_ip4}= | 192.168.10.11 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.102 +| ${dut2_if2_ip4}= | 192.168.20.11 +| ${tg_if2_ip4}= | 192.168.20.254 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +# Traffic profile: +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPSec tunneling AES_CTR_128+SHA1_96 config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${DUT1_${int}2}[0] +| | ... | ${DUT2_${int}1}[0] | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | udp_encap=${True} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128ctr-hmac96sha-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr.robot new file mode 100644 index 0000000000..2430ead45b --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr.robot @@ -0,0 +1,166 @@ +# Copyright (c) 2024 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/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_GCM | AES | UDP_ENCAP | ANTI_REPLAY +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance | ipsec_sa +| +| 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. UDP encapsulation is used between DUTs. \ +| ... | Anti-replay is enabled. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \ +| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \ +| ... | expressed in percentage of packets transmitted. NDR and PDR are \ +| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \ +| ... | library. +| ... | Test packets are generated by TG on \ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups \ +| ... | (flow-group per direction, number of flows per flow-group equals to \ +| ... | number of IPSec tunnels) with all packets \ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and \ +| ... | static payload. MAC addresses are matching MAC addresses of the TG \ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) \ +| ... | is applied to both streams. +| ... | +| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ... | crypto_native_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${encr_alg}= | AES GCM 128 +| ${auth_alg}= | NONE +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.254 +| ${dut1_if1_ip4}= | 192.168.10.11 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.102 +| ${dut2_if2_ip4}= | 192.168.20.11 +| ${tg_if2_ip4}= | 192.168.20.254 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +# Traffic profile: +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPSec tunneling AES_GCM_128 config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${DUT1_${int}2}[0] +| | ... | ${DUT2_${int}1}[0] | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | udp_encap=${True} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128gcm-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr.robot new file mode 100644 index 0000000000..2f98d56d86 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr.robot @@ -0,0 +1,166 @@ +# Copyright (c) 2024 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/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_NULL_GMAC | AES | UDP_ENCAP | ANTI_REPLAY +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance | ipsec_sa +| +| 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. UDP encapsulation is used between DUTs. \ +| ... | Anti-replay is enabled. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \ +| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \ +| ... | expressed in percentage of packets transmitted. NDR and PDR are \ +| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \ +| ... | library. +| ... | Test packets are generated by TG on \ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups \ +| ... | (flow-group per direction, number of flows per flow-group equals to \ +| ... | number of IPSec tunnels) with all packets \ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and \ +| ... | static payload. MAC addresses are matching MAC addresses of the TG \ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) \ +| ... | is applied to both streams. +| ... | +| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ... | crypto_native_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${encr_alg}= | AES NULL GMAC 128 +| ${auth_alg}= | NONE +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.254 +| ${dut1_if1_ip4}= | 192.168.10.11 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.102 +| ${dut2_if2_ip4}= | 192.168.20.11 +| ${tg_if2_ip4}= | 192.168.20.254 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +# Traffic profile: +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPSec tunneling AES_NULL_GMAC_128 config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${DUT1_${int}2}[0] +| | ... | ${DUT2_${int}1}[0] | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | udp_encap=${True} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes128nullgmac-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr.robot new file mode 100644 index 0000000000..51fa96a135 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr.robot @@ -0,0 +1,166 @@ +# Copyright (c) 2024 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/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_CBC | AES | HMAC_SHA_256 | UDP_ENCAP | ANTI_REPLAY +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance | ipsec_sa +| +| 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. UDP encapsulation is used between DUTs. \ +| ... | Anti-replay is enabled. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \ +| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \ +| ... | expressed in percentage of packets transmitted. NDR and PDR are \ +| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \ +| ... | library. +| ... | Test packets are generated by TG on \ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups \ +| ... | (flow-group per direction, number of flows per flow-group equals to \ +| ... | number of IPSec tunnels) with all packets \ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and \ +| ... | static payload. MAC addresses are matching MAC addresses of the TG \ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) \ +| ... | is applied to both streams. +| ... | +| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ... | crypto_native_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${encr_alg}= | AES CBC 256 +| ${auth_alg}= | SHA 256 128 +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${70} +| ${tg_if1_ip4}= | 192.168.10.254 +| ${dut1_if1_ip4}= | 192.168.10.11 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.102 +| ${dut2_if2_ip4}= | 192.168.20.11 +| ${tg_if2_ip4}= | 192.168.20.254 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +# Traffic profile: +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPSec tunneling AES_CBC_256+SHA_256_128 config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${DUT1_${int}2}[0] +| | ... | ${DUT2_${int}1}[0] | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | udp_encap=${True} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac256sha-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr.robot new file mode 100644 index 0000000000..19e2196d56 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr.robot @@ -0,0 +1,166 @@ +# Copyright (c) 2024 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/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_CBC | AES | HMAC_SHA_96 | UDP_ENCAP | ANTI_REPLAY +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance | ipsec_sa +| +| 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. UDP encapsulation is used between DUTs. \ +| ... | Anti-replay is enabled. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \ +| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \ +| ... | expressed in percentage of packets transmitted. NDR and PDR are \ +| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \ +| ... | library. +| ... | Test packets are generated by TG on \ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups \ +| ... | (flow-group per direction, number of flows per flow-group equals to \ +| ... | number of IPSec tunnels) with all packets \ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and \ +| ... | static payload. MAC addresses are matching MAC addresses of the TG \ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) \ +| ... | is applied to both streams. +| ... | +| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ... | crypto_native_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${encr_alg}= | AES CBC 256 +| ${auth_alg}= | SHA1 96 +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${66} +| ${tg_if1_ip4}= | 192.168.10.254 +| ${dut1_if1_ip4}= | 192.168.10.11 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.102 +| ${dut2_if2_ip4}= | 192.168.20.11 +| ${tg_if2_ip4}= | 192.168.20.254 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +# Traffic profile: +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPSec tunneling AES_CBC_256+SHA1_96 config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${DUT1_${int}2}[0] +| | ... | ${DUT2_${int}1}[0] | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | udp_encap=${True} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256cbc-hmac96sha-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr.robot new file mode 100644 index 0000000000..8031732a7c --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr.robot @@ -0,0 +1,166 @@ +# Copyright (c) 2024 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/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_GCM | AES | UDP_ENCAP | ANTI_REPLAY +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance | ipsec_sa +| +| 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. UDP encapsulation is used between DUTs. \ +| ... | Anti-replay is enabled. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \ +| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \ +| ... | expressed in percentage of packets transmitted. NDR and PDR are \ +| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \ +| ... | library. +| ... | Test packets are generated by TG on \ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups \ +| ... | (flow-group per direction, number of flows per flow-group equals to \ +| ... | number of IPSec tunnels) with all packets \ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and \ +| ... | static payload. MAC addresses are matching MAC addresses of the TG \ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) \ +| ... | is applied to both streams. +| ... | +| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ... | crypto_native_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${encr_alg}= | AES GCM 256 +| ${auth_alg}= | NONE +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.254 +| ${dut1_if1_ip4}= | 192.168.10.11 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.102 +| ${dut2_if2_ip4}= | 192.168.20.11 +| ${tg_if2_ip4}= | 192.168.20.254 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +# Traffic profile: +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPSec tunneling AES_GCM_256 config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${DUT1_${int}2}[0] +| | ... | ${DUT2_${int}1}[0] | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | udp_encap=${True} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr.robot new file mode 100644 index 0000000000..facccd5d9d --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr.robot @@ -0,0 +1,166 @@ +# Copyright (c) 2024 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/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_NULL_GMAC | AES | UDP_ENCAP | ANTI_REPLAY +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance | ipsec_sa +| +| 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. UDP encapsulation is used between DUTs. \ +| ... | Anti-replay is enabled. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \ +| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \ +| ... | expressed in percentage of packets transmitted. NDR and PDR are \ +| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \ +| ... | library. +| ... | Test packets are generated by TG on \ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups \ +| ... | (flow-group per direction, number of flows per flow-group equals to \ +| ... | number of IPSec tunnels) with all packets \ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and \ +| ... | static payload. MAC addresses are matching MAC addresses of the TG \ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) \ +| ... | is applied to both streams. +| ... | +| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ... | crypto_native_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${encr_alg}= | AES NULL GMAC 256 +| ${auth_alg}= | NONE +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.254 +| ${dut1_if1_ip4}= | 192.168.10.11 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.102 +| ${dut2_if2_ip4}= | 192.168.20.11 +| ${tg_if2_ip4}= | 192.168.20.254 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +# Traffic profile: +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPSec tunneling AES_NULL_GMAC_256 config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${DUT1_${int}2}[0] +| | ... | ${DUT2_${int}1}[0] | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | udp_encap=${True} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-aes256nullgmac-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr.robot new file mode 100644 index 0000000000..979d5f2510 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr.robot @@ -0,0 +1,166 @@ +# Copyright (c) 2024 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/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | HMAC_SHA_96 | UDP_ENCAP | ANTI_REPLAY +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance | ipsec_sa +| +| 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. UDP encapsulation is used between DUTs. \ +| ... | Anti-replay is enabled. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \ +| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \ +| ... | expressed in percentage of packets transmitted. NDR and PDR are \ +| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \ +| ... | library. +| ... | Test packets are generated by TG on \ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups \ +| ... | (flow-group per direction, number of flows per flow-group equals to \ +| ... | number of IPSec tunnels) with all packets \ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and \ +| ... | static payload. MAC addresses are matching MAC addresses of the TG \ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) \ +| ... | is applied to both streams. +| ... | +| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ... | crypto_native_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${encr_alg}= | NONE +| ${auth_alg}= | SHA1 96 +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${50} +| ${tg_if1_ip4}= | 192.168.10.254 +| ${dut1_if1_ip4}= | 192.168.10.11 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.102 +| ${dut2_if2_ip4}= | 192.168.20.11 +| ${tg_if2_ip4}= | 192.168.20.254 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +# Traffic profile: +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPSec tunneling SHA1_96 config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${DUT1_${int}2}[0] +| | ... | ${DUT2_${int}1}[0] | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | udp_encap=${True} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4ipsec10000tnlsw-udp-ar-ip4base-int-none-hmac96sha-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr.robot new file mode 100644 index 0000000000..0f5f13fde9 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr.robot @@ -0,0 +1,165 @@ +# Copyright (c) 2024 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/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_GCM | AES | UDP_ENCAP +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance | ipsec_sa +| +| 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. UDP encapsulation is used between DUTs. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \ +| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \ +| ... | expressed in percentage of packets transmitted. NDR and PDR are \ +| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \ +| ... | library. +| ... | Test packets are generated by TG on \ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups \ +| ... | (flow-group per direction, number of flows per flow-group equals to \ +| ... | number of IPSec tunnels) with all packets \ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and \ +| ... | static payload. MAC addresses are matching MAC addresses of the TG \ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) \ +| ... | is applied to both streams. +| ... | +| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ... | crypto_native_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${encr_alg}= | AES GCM 256 +| ${auth_alg}= | NONE +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.254 +| ${dut1_if1_ip4}= | 192.168.10.11 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.102 +| ${dut2_if2_ip4}= | 192.168.20.11 +| ${tg_if2_ip4}= | 192.168.20.254 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +# Traffic profile: +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPSec tunneling AES_GCM_256 config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${DUT1_${int}2}[0] +| | ... | ${DUT2_${int}1}[0] | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | udp_encap=${True} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4ipsec10000tnlsw-udp-ip4base-int-aes256gcm-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} |