diff options
43 files changed, 6222 insertions, 101 deletions
diff --git a/resources/libraries/python/IPsecUtil.py b/resources/libraries/python/IPsecUtil.py index 7da1c55f82..e8fdad3901 100644 --- a/resources/libraries/python/IPsecUtil.py +++ b/resources/libraries/python/IPsecUtil.py @@ -1,4 +1,4 @@ -# Copyright (c) 2019 Cisco and/or its affiliates. +# Copyright (c) 2020 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: @@ -753,7 +753,8 @@ class IPsecUtil: @staticmethod def vpp_ipsec_create_tunnel_interfaces( nodes, if1_ip_addr, if2_ip_addr, if1_key, if2_key, n_tunnels, - crypto_alg, integ_alg, raddr_ip1, raddr_ip2, raddr_range): + crypto_alg, integ_alg, raddr_ip1, raddr_ip2, raddr_range, + existing_tunnels=0): """Create multiple IPsec tunnel interfaces between two VPP nodes. :param nodes: VPP nodes to create tunnel interfaces. @@ -761,7 +762,7 @@ class IPsecUtil: :param if2_ip_addr: VPP node 2 interface IPv4/IPv6 address. :param if1_key: VPP node 1 interface key from topology file. :param if2_key: VPP node 2 interface key from topology file. - :param n_tunnels: Number of tunnel interfaces to create. + :param n_tunnels: Number of tunnel interfaces to be there at the end. :param crypto_alg: The encryption algorithm name. :param integ_alg: The integrity algorithm name. :param raddr_ip1: Policy selector remote IPv4/IPv6 start address for the @@ -771,6 +772,8 @@ class IPsecUtil: :param raddr_range: Mask specifying range of Policy selector Remote IPv4/IPv6 addresses. Valid values are from 1 to 32 in case of IPv4 and to 128 in case of IPv6. + :param existing_tunnels: Number of tunnel interfaces before creation. + Useful mainly for reconf tests. Default 0. :type nodes: dict :type if1_ip_addr: str :type if2_ip_addr: str @@ -782,8 +785,10 @@ class IPsecUtil: :type raddr_ip1: string :type raddr_ip2: string :type raddr_range: int + :type existing_tunnels: int """ n_tunnels = int(n_tunnels) + existing_tunnels = int(existing_tunnels) spi_1 = 100000 spi_2 = 200000 if1_ip = ip_address(if1_ip_addr) @@ -793,7 +798,7 @@ class IPsecUtil: addr_incr = 1 << (128 - raddr_range) if if1_ip.version == 6 \ else 1 << (32 - raddr_range) - if n_tunnels > 10: + if n_tunnels - existing_tunnels > 10: tmp_fn1 = u"/tmp/ipsec_create_tunnel_dut1.config" tmp_fn2 = u"/tmp/ipsec_create_tunnel_dut2.config" if1_n = Topology.get_interface_name(nodes[u"DUT1"], if1_key) @@ -803,17 +808,20 @@ class IPsecUtil: vat = VatExecutor() with open(tmp_fn1, 'w') as tmp_f1, open(tmp_fn2, 'w') as tmp_f2: rmac = Topology.get_interface_mac(nodes[u"DUT2"], if2_key) - tmp_f1.write( - f"exec create loopback interface\n" - f"exec set interface state loop0 up\n" - f"exec set interface ip address " - f"{if1_n} {if2_ip - 1}/{mask}\n" - f"exec set ip neighbor {if1_n} {if2_ip}/{mask2} {rmac} static\n" - ) - tmp_f2.write( - f"exec set interface ip address {if2_n} {if2_ip}/{mask}\n" - ) - for i in range(n_tunnels): + if not existing_tunnels: + tmp_f1.write( + f"exec create loopback interface\n" + f"exec set interface state loop0 up\n" + f"exec set interface ip address " + f"{if1_n} {if2_ip - 1}/{mask}\n" + f"exec set ip neighbor {if1_n} {if2_ip}/{mask2} {rmac}" + f" static\n" + ) + tmp_f2.write( + f"exec set interface ip address {if2_n}" + f" {if2_ip}/{mask}\n" + ) + for i in range(existing_tunnels, n_tunnels): ckey = gen_key( IPsecUtil.get_crypto_alg_key_len(crypto_alg) ).hex() @@ -861,10 +869,12 @@ class IPsecUtil: os.remove(tmp_fn2) with open(tmp_fn1, 'w') as tmp_f1, open(tmp_fn2, 'w') as tmp_f2: - tmp_f2.write( - f"exec ip route add {if1_ip}/8 via {if2_ip - 1} {if2_n}\n" - ) - for i in range(n_tunnels): + if not existing_tunnels: + tmp_f2.write( + f"exec ip route add {if1_ip}/8 via {if2_ip - 1}" + f" {if2_n}\n" + ) + for i in range(existing_tunnels, n_tunnels): tmp_f1.write( f"exec set interface unnumbered ipip{i} use {if1_n}\n" f"exec set interface state ipip{i} up\n" @@ -891,55 +901,62 @@ class IPsecUtil: os.remove(tmp_fn2) return - with PapiSocketExecutor(nodes[u"DUT1"]) as papi_exec: - # Create loopback interface on DUT1, set it to up state - cmd1 = u"create_loopback" - args1 = dict( - mac_address=0 - ) - err_msg = f"Failed to create loopback interface " \ - f"on host {nodes[u'DUT1'][u'host']}" - loop_sw_if_idx = papi_exec.add(cmd1, **args1).\ - get_sw_if_index(err_msg) - cmd1 = u"sw_interface_set_flags" - args1 = dict( - sw_if_index=loop_sw_if_idx, - flags=InterfaceStatusFlags.IF_STATUS_API_FLAG_ADMIN_UP.value - ) - err_msg = f"Failed to set loopback interface state up " \ - f"on host {nodes[u'DUT1'][u'host']}" - papi_exec.add(cmd1, **args1).get_reply(err_msg) - # Set IP address on VPP node 1 interface - cmd1 = u"sw_interface_add_del_address" - args1 = dict( - sw_if_index=InterfaceUtil.get_interface_index( - nodes[u"DUT1"], if1_key - ), - is_add=True, - del_all=False, - prefix=IPUtil.create_prefix_object( - if2_ip - 1, 96 if if2_ip.version == 6 else 24 + if not existing_tunnels: + with PapiSocketExecutor(nodes[u"DUT1"]) as papi_exec: + # Create loopback interface on DUT1, set it to up state + cmd1 = u"create_loopback" + args1 = dict( + mac_address=0 ) - ) - err_msg = f"Failed to set IP address on interface {if1_key} " \ - f"on host {nodes[u'DUT1'][u'host']}" - papi_exec.add(cmd1, **args1).get_reply(err_msg) - cmd4 = u"ip_neighbor_add_del" - args4 = dict( - is_add=1, - neighbor=dict( - sw_if_index=Topology.get_interface_sw_index( + err_msg = f"Failed to create loopback interface " \ + f"on host {nodes[u'DUT1'][u'host']}" + loop_sw_if_idx = papi_exec.add(cmd1, **args1).\ + get_sw_if_index(err_msg) + cmd1 = u"sw_interface_set_flags" + args1 = dict( + sw_if_index=loop_sw_if_idx, + flags=InterfaceStatusFlags.IF_STATUS_API_FLAG_ADMIN_UP.value + ) + err_msg = f"Failed to set loopback interface state up " \ + f"on host {nodes[u'DUT1'][u'host']}" + papi_exec.add(cmd1, **args1).get_reply(err_msg) + # Set IP address on VPP node 1 interface + cmd1 = u"sw_interface_add_del_address" + args1 = dict( + sw_if_index=InterfaceUtil.get_interface_index( nodes[u"DUT1"], if1_key ), - flags=1, - mac_address=str( - Topology.get_interface_mac(nodes[u"DUT2"], if2_key) - ), - ip_address=str(ip_address(if2_ip_addr)) + is_add=True, + del_all=False, + prefix=IPUtil.create_prefix_object( + if2_ip - 1, 96 if if2_ip.version == 6 else 24 + ) ) - ) - err_msg = f"Failed to add IP neighbor on interface {if1_key}" - papi_exec.add(cmd4, **args4).get_reply(err_msg) + err_msg = f"Failed to set IP address on interface {if1_key} " \ + f"on host {nodes[u'DUT1'][u'host']}" + papi_exec.add(cmd1, **args1).get_reply(err_msg) + cmd4 = u"ip_neighbor_add_del" + args4 = dict( + is_add=1, + neighbor=dict( + sw_if_index=Topology.get_interface_sw_index( + nodes[u"DUT1"], if1_key + ), + flags=1, + mac_address=str( + Topology.get_interface_mac(nodes[u"DUT2"], if2_key) + ), + ip_address=str(ip_address(if2_ip_addr)) + ) + ) + err_msg = f"Failed to add IP neighbor on interface {if1_key}" + papi_exec.add(cmd4, **args4).get_reply(err_msg) + else: + # Executor not open, as InterfaceUtil will open its own. + loop_sw_if_idx = InterfaceUtil.vpp_get_interface_sw_index( + nodes[u"DUT1"], u"loop0") + cmd1 = u"sw_interface_add_del_address" + with PapiSocketExecutor(nodes[u"DUT1"]) as papi_exec: # Configure IPsec tunnel interfaces args1 = dict( sw_if_index=loop_sw_if_idx, @@ -968,10 +985,10 @@ class IPsecUtil: ) err_msg = f"Failed to add IPsec tunnel interfaces " \ f"on host {nodes[u'DUT1'][u'host']}" - ipsec_tunnels = list() - ckeys = list() - ikeys = list() - for i in range(n_tunnels): + ipsec_tunnels = [None] * existing_tunnels + ckeys = [None] * existing_tunnels + ikeys = [None] * existing_tunnels + for i in range(existing_tunnels, n_tunnels): ckeys.append( gen_key(IPsecUtil.get_crypto_alg_key_len(crypto_alg)) ) @@ -1026,7 +1043,7 @@ class IPsecUtil: ) err_msg = f"Failed to add IP routes " \ f"on host {nodes[u'DUT1'][u'host']}" - for i in range(n_tunnels): + for i in range(existing_tunnels, n_tunnels): args1[u"unnumbered_sw_if_index"] = ipsec_tunnels[i] args2[u"sw_if_index"] = ipsec_tunnels[i] args3[u"route"] = IPUtil.compose_vpp_route_structure( @@ -1041,21 +1058,22 @@ class IPsecUtil: papi_exec.get_replies(err_msg) with PapiSocketExecutor(nodes[u"DUT2"]) as papi_exec: - # Set IP address on VPP node 2 interface - cmd1 = u"sw_interface_add_del_address" - args1 = dict( - sw_if_index=InterfaceUtil.get_interface_index( - nodes[u"DUT2"], if2_key - ), - is_add=True, - del_all=False, - prefix=IPUtil.create_prefix_object( - if2_ip, 96 if if2_ip.version == 6 else 24 + if not existing_tunnels: + # Set IP address on VPP node 2 interface + cmd1 = u"sw_interface_add_del_address" + args1 = dict( + sw_if_index=InterfaceUtil.get_interface_index( + nodes[u"DUT2"], if2_key + ), + is_add=True, + del_all=False, + prefix=IPUtil.create_prefix_object( + if2_ip, 96 if if2_ip.version == 6 else 24 + ) ) - ) - err_msg = f"Failed to set IP address on interface {if2_key} " \ - f"on host {nodes[u'DUT2'][u'host']}" - papi_exec.add(cmd1, **args1).get_reply(err_msg) + err_msg = f"Failed to set IP address on interface {if2_key} " \ + f"on host {nodes[u'DUT2'][u'host']}" + papi_exec.add(cmd1, **args1).get_reply(err_msg) # Configure IPsec tunnel interfaces cmd2 = u"ipsec_tunnel_if_add_del" args2 = dict( @@ -1078,8 +1096,8 @@ class IPsecUtil: ) err_msg = f"Failed to add IPsec tunnel interfaces " \ f"on host {nodes[u'DUT2'][u'host']}" - ipsec_tunnels = list() - for i in range(n_tunnels): + ipsec_tunnels = [None] * existing_tunnels + for i in range(existing_tunnels, n_tunnels): args2[u"local_spi"] = spi_2 + i args2[u"remote_spi"] = spi_1 + i args2[u"local_ip"] = IPUtil.create_ip_address_object(if2_ip) @@ -1100,20 +1118,21 @@ class IPsecUtil: for reply in replies: if u"sw_if_index" in reply: ipsec_tunnels.append(reply[u"sw_if_index"]) - # Configure IP routes - cmd1 = u"ip_route_add_del" - route = IPUtil.compose_vpp_route_structure( - nodes[u"DUT2"], if1_ip.compressed, - prefix_len=32 if if1_ip.version == 6 else 8, - interface=if2_key, - gateway=(if2_ip - 1).compressed - ) - args1 = dict( - is_add=1, - is_multipath=0, - route=route - ) - papi_exec.add(cmd1, **args1) + if not existing_tunnels: + # Configure IP routes + cmd1 = u"ip_route_add_del" + route = IPUtil.compose_vpp_route_structure( + nodes[u"DUT2"], if1_ip.compressed, + prefix_len=32 if if1_ip.version == 6 else 8, + interface=if2_key, + gateway=(if2_ip - 1).compressed + ) + args1 = dict( + is_add=1, + is_multipath=0, + route=route + ) + papi_exec.add(cmd1, **args1) cmd1 = u"sw_interface_set_unnumbered" args1 = dict( is_add=True, @@ -1135,7 +1154,7 @@ class IPsecUtil: ) err_msg = f"Failed to add IP routes " \ f"on host {nodes[u'DUT2'][u'host']}" - for i in range(n_tunnels): + for i in range(existing_tunnels, n_tunnels): args1[u"unnumbered_sw_if_index"] = ipsec_tunnels[i] args2[u"sw_if_index"] = ipsec_tunnels[i] args3[u"route"] = IPUtil.compose_vpp_route_structure( diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index 0f18f8f807..bd3652b22f 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -1425,6 +1425,8 @@ class InterfaceUtil: def get_sw_if_index(node, interface_name): """Get sw_if_index for the given interface from actual interface dump. + FIXME: Delete and redirect callers to vpp_get_interface_sw_index. + :param node: VPP node to get interface data from. :param interface_name: Name of the specific interface. :type node: dict diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot new file mode 100644 index 0000000000..86fd8c3807 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot new file mode 100644 index 0000000000..6a6f31b433 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${78} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot new file mode 100644 index 0000000000..6d4196d870 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot new file mode 100644 index 0000000000..c5ee2174a3 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_10000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${10000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 256 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec10000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot new file mode 100644 index 0000000000..d7a6cf8e3d --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_1000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${1000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot new file mode 100644 index 0000000000..afe2e83dfc --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_1000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${78} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${1000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot new file mode 100644 index 0000000000..2964176f9c --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_1000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${1000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot new file mode 100644 index 0000000000..ffc5f42c44 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_1000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${1000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 256 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec1000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot new file mode 100644 index 0000000000..80c2ce7a99 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_1 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | BASE +| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${1} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot new file mode 100644 index 0000000000..d44a41fae8 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_1 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | BASE +| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${78} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${1} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot new file mode 100644 index 0000000000..3e079fb5f2 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_1 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | BASE +| ... | AES_128_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${1} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot new file mode 100644 index 0000000000..3b952fab08 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_1 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | BASE +| ... | AES_256_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${1} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 256 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec1tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot new file mode 100644 index 0000000000..701d553a40 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_20000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${20000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot new file mode 100644 index 0000000000..588de81112 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_20000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${78} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${20000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot new file mode 100644 index 0000000000..3e4e9a0c03 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_20000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${20000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot new file mode 100644 index 0000000000..d25f69af84 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_20000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${20000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 256 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec20000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot new file mode 100644 index 0000000000..618d418ef6 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_40000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${40000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot new file mode 100644 index 0000000000..b23ea186cb --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_40000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${78} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${40000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot new file mode 100644 index 0000000000..63c68aa95e --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_40000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${40000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot new file mode 100644 index 0000000000..7f8c294276 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_40000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${40000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 256 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec40000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot new file mode 100644 index 0000000000..93917de67a --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_400 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${400} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot new file mode 100644 index 0000000000..d1ac95b521 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_400 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${78} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${400} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot new file mode 100644 index 0000000000..3c1f578e8f --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_400 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${400} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot new file mode 100644 index 0000000000..7bea870724 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_400 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${400} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 256 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec400tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot new file mode 100644 index 0000000000..7df67a1ddb --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_40 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${40} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot new file mode 100644 index 0000000000..abf011dfe4 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_40 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${78} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${40} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot new file mode 100644 index 0000000000..c6feb5bcdf --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_40 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${40} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot new file mode 100644 index 0000000000..03d4e9ae4d --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_40 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${40} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 256 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec40tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot new file mode 100644 index 0000000000..1a7d208caa --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_4 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${4} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot new file mode 100644 index 0000000000..c9aa1e1992 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_4 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${78} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${4} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot new file mode 100644 index 0000000000..da7d814a7b --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_4 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${4} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot new file mode 100644 index 0000000000..19e27c553d --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_4 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${4} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 256 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec4tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-ip4base-int-aes128gcm-ndrpdr.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-ip4base-int-aes128gcm-ndrpdr.robot index 38ad55a174..ce1321dfad 100644 --- a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-ip4base-int-aes128gcm-ndrpdr.robot +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec4tnlsw-ip4base-int-aes128gcm-ndrpdr.robot @@ -91,7 +91,7 @@ | | | | # These are enums (not strings) so they cannot be in Variables table. | | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Set Variable | ${NONE} +| | ${auth_alg}= | Set Variable | ${NONE} | | ${ipsec_proto} = | IPsec Proto ESP | | | | Given Set Max Rate And Jumbo diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot new file mode 100644 index 0000000000..1884249312 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_5000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${5000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot new file mode 100644 index 0000000000..fca8e955d3 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_5000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${78} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${5000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot new file mode 100644 index 0000000000..70324388cf --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_5000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${5000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot new file mode 100644 index 0000000000..77cd9c19ef --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_5000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${5000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 256 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec5000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot new file mode 100644 index 0000000000..86fe2d4524 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_60000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_256 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${62} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${60000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_256 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac256sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot new file mode 100644 index 0000000000..9ec64eca0b --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf.robot @@ -0,0 +1,152 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_60000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${78} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${60000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_CBC / HMAC_SHA_512 config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128cbc-hmac512sha-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot new file mode 100644 index 0000000000..039876e6fe --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_60000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_128_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${60000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_128_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes128gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot new file mode 100644 index 0000000000..10d5856ff5 --- /dev/null +++ b/tests/vpp/perf/crypto/10ge2p1x710-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm-reconf.robot @@ -0,0 +1,153 @@ +# Copyright (c) 2020 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 +| Resource | resources/libraries/robot/crypto/ipsec.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | RECONF | TNL_60000 +| ... | IP4FWD | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE +| ... | AES_256_GCM | AES | 1_ADDED_TUNNEL | DRV_VFIO_PCI +| ... | ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm +| +| Suite Setup | Setup suite single link | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | *RFC2544: Packet loss IPv4 IPsec tunnel mode.* +| +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple\ +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it\ +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds throughput NDR (Non Drop Rate)\ +| ... | with zero packet loss tolerance, then measures loss at this load\ +| ... | while additional chain is configured.\ +| ... | Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so +| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${osi_layer}= | L3 +| ${overhead}= | ${54} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 100.0.0.1 +| ${dut2_if1_ip4}= | 200.0.0.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${24} +| ${n_tunnels}= | ${60000} +| ${n_added_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] DUT runs IPSec tunneling AES_256_GCM config.\ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | [Ver] Measure packet loss during reconfig at NDR load.\ +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | # These are enums (not strings) so they cannot be in Variables table. +| | ${encr_alg}= | Crypto Alg AES GCM 256 +| | ${auth_alg}= | Set Variable | ${NONE} +| | ${ipsec_proto} = | IPsec Proto ESP +| | +| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels} +| | 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_if2} +| | ... | ${dut2_if1} | ${n_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} +| | ${bidirectional_throughput}= | Find Throughput Using MLRsearch +| | ${unidirectional_throughput}= | Evaluate | ${bidirectional_throughput} / 2.0 +| | Start Traffic on Background | ${unidirectional_throughput}pps +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${dut1_if2} +| | ... | ${dut2_if1} | ${n_total_tunnels} | ${encr_alg} | ${auth_alg} +| | ... | ${laddr_ip4} | ${raddr_ip4} | ${addr_range} | ${n_tunnels} +| | ${result}= | Stop Running Traffic +| | Display Reconfig Test Message | ${result} + +*** Test Cases *** +| tc01-64B-1c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| tc02-64B-2c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| tc03-64B-4c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| tc04-1518B-1c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| tc05-1518B-2c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| tc06-1518B-4c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| tc10-IMIX-1c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-ethip4ipsec60000tnlsw-1atnl-ip4base-int-aes256gcm-reconf +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} |