summaryrefslogtreecommitdiffstats
path: root/VNFs
AgeCommit message (Collapse)AuthorFilesLines
2023-07-24Support packets in flightHEADmasterLuc Provoost4-50/+67
The handle_esp_bulk function might enqueue packets on a QAT device. These packets are not necessarily dequeued in the same call to the handle_bulk function since they might be asynchronously processed. Therefore, in some cases, we need to call this handle_bulk function again later, even when no new packets are received on the rx queue. To achieve this, the TASK_FEATURE_ZERO_RX flag is set. The number of packets in flight are stored to decide if packets need to be dequeued or not. The handle_esp_bulk function will continue to dequeue packets till none are left, even in case no new packets arrive. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I15e5b92c2413a1d3823557f70b1f437b35ca5a12
2023-07-01fix rte_crypto_ipsec_mb dependencyLuc Provoost1-1/+2
In order to use the cryptodev API, the rte_crypto_ipsec_mb library needs to be installed. When that library is installed, the change in meson.build will now make sure that handle_esp.c is also compiled, and the 2 PROX modes (esp_enc & esp_dec) become available for use in the PROX config files. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Ida7f742cd3189437f25fc5e45cf48ba0d20ba7d1
2023-06-29Renaming of defines for clarityLuc Provoost6-25/+25
Add the prefix TBASE_FLAG to all defines that are used in the flags field of the tbase structure Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Ic7c6c1ba66fbda5a4a43e9a3bf966710157b5b17
2023-06-29Fix compilation for DPDK22.11Luc Provoost1-0/+4
ETH_LINK_SPEED_AUTONEG changed into RTE_ETH_LINK_SPEED_AUTONEG Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Iababab5ce51b618cd97f8158de2e2979747b141c
2023-06-26Addition of new test case encrypt.testLuc Provoost4-1/+127
The new test is combining a generator sending plain text traffic to another pod. This second pod is encrypting and then decrypting the packets again before sending them back to the generator for latency measurements. The encryption/decryption is done with a hard code algo and key and can be done in SW or by using QAT devices. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: If85766e546b0c3534d2eaed96a465195c1455d06
2023-06-26Adding QAT supportLuc Provoost4-1/+43
When qat devices are assigned to a pod, the code will now detect that through the qat entry in the env of the pod. The qat devices will be added to the PDK eal command line so they can by PROX. For the PCI network devices, we only search for PCIDEVICE instead of PCIDEVICE_INTEL_COM. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Ic801d20adac4a29e6c44e542121686f42778d61a
2023-06-26Add uuid to DPDK file-prefixLuc Provoost1-2/+3
When running multiple pods, the DPDK file-prefix needs to be unique, so a uuid was added to the file-prefix. This parameter is then available in the parameters.lua file. The eal parameter for setting the simd bitwidth was also added. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Iee04e54f059732a40ebdc7635dbd09631b5f2081
2023-05-29Rework of handle_esp_bulkLuc Provoost1-365/+385
Merged the 2 handle_bulk functions into 1. We had a separate function for encryption and one for decryption. The code is almost the same. The way we enqueue and dequeue the cryptodev queueus has also changed and is now inline with the dpdk demo code (l2fwd_crypto). Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Id9a9f6651884743bcdb4c0a509696489fedc554a
2023-05-25Fix socket for vdev portLuc Provoost1-0/+5
vdev socket was always set to 0. We are now setting the socket for the vdev device to the socket of the corresponding port. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: If687c5e20b7f3050d96c2fdfa94ef29db051f24c
2023-04-17remove call to rte_cryptodev_pmd_get_devLuc Provoost1-8/+0
The handle_esp is not used a lot at this point and it was not compiled by default. When integrating this back into PROX, no DPDK backwards compatibility was taken into account. The rte_cryptodev_pmd_get_dev is not supported any more in recent DPDK versions. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I97793261dd52aa869a4857716518dc1ff7d5f22f
2023-04-13Asynchronous Encryption/DecryptionLuc Provoost1-74/+72
In the handle_esp_xxx_bulk functions, we are not dequeuing every crypto_op that was enqueued in this function. The while loop has been replaced by a single call to the dequeue function. If crypto_ops are still in flight, we count on the fact they will be dequeued when the handle_esp_xxx_bulk function is called next time. Note that this will only happen if new packets are coming in. If no new packets are coming in, there might be some packets in flight that will not be dequeued. When calling the rte_crypto_op_pool_create function, we now pass the number of mbufs as specified in the PROX config file (mempool size), and not a hard coded number. The init code has also been put more in sync with recent version of the l2fwd_crypto example code. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Idfab13a273bf76831e5133cf59149fc93949f1ab
2023-02-07fix issue with fixed rate testingLuc Provoost1-0/+2
When running fixed rate tests, we are getting KeyError: 'mis_ordered'. This is now fixed. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I8df7f53a6d8c5d8d5b88215d543918ebea4d45a1
2023-02-07Start ssh properly for UbuntuLuc Provoost1-2/+5
The command to start ssh (on CentOS) seems not be working on Ubunutu. Now we start ssh with 'service ssh start' Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Ief8cd2e10443ffe99da1ed494d154edc6d8e175e
2023-02-02Use ubuntu for containersLuc Provoost2-16/+75
Changed the Dockerfile to install DPDK 22.07 and to run on Ubuntu 20.04. runrapid.py will now use the 'rapid' user to connect to the PROX instances. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I2df48f435e6d572343a02b2ab2c1db116c83ecad
2023-02-02fix machine name in DEBUG loggingLuc Provoost1-1/+1
We are logging the content of all test parameters in DEBUG mode. Since one of the test parameters (machine name) can still change to make sure we have unique machines names, the logging is done later, after the machines names are guaranteed to be unique. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I06cbdbcfd9044798ebad03ead0eca567e7f24a9d
2023-02-02Change pod names: refer to prox in stead of rapidLuc Provoost1-1/+1
In rapid_k8s_deployment.py, we are creating the pods. The name used to refer to rapid. Actually, the pods that we are creating are the prox instances. The rapid scripts need to run elsewhere. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Idcc842c4aa3a85f2232f7fa71b6482c6081cce1c
2023-02-02Remove key file checkLuc Provoost1-6/+0
A check on the name of the ssh key file for user rapid has been removed. We are now just using the name of the key file as it shows in the rapid.env file. In the past, the file name was always replaced by a hardcoded name for the rapid user. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Ie2219b33c75c54e937182e9307e16f290c82513e
2023-02-01Use meson to build port_info_appLuc Provoost1-0/+101
Adding a meson.build file for the port_info_app. This application is a dpdk app that queries the dpdk ports for its MAC address. That MAC address will then be stored in rapid.env. If needed, it will then be used by PROX e.g. in l2 test cases. The app is only used if the vim parameter in the rapid.env file is set to kubernetes. In case of OpenStack, the MAC address is obtained through the heatclient API, see stackdeployment.py for more details. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Iba2b0b98748807a0d33374644b75b4ea1bfb91cc
2023-02-01Use proper DPDK EAL parameter name: --allowLuc Provoost2-3/+19
The name of one of the EAL parameters has changed. Depending on the DPDK version, we need to use a different name. While building the PROX image, we need now to create a file /opt/rapid/dpdk_version that contains the DPDK version. When running runrapid.py, we will now check this file to decide if we use the old --whitelist, or the new --allow parameter name for the PCI address to be used. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I3e07c552d014c818138d389abce936e275108776
2023-01-30Create a unique machine nameLuc Provoost1-0/+9
Using containers, we need a unique --file-prefix parameter in the EAL DPDK configuration. The file-prefix name is the name of the PROX machine. This is defined by the name parameter in the rapid.env file. When the name parameter is not specified in the rapid.env file, the name will be defined in the test file. The machine name will still be defined in the same way, but when a name is not unique, an number will be appended to the name to make it unique. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I0b4e3be60f8ddef6c7eb30bca25c041ea270e238
2023-01-17Allow a different pod spec for each podLuc Provoost3-23/+37
A new parameter is now introduced in the [PODx] sections of the rapid.pods file. This parameter specifies the pod spec yaml file that will be used to create this specif pod. When this parameter is not available, the default pod-rapid.yaml file will be used. The parameter name is spec_file_name. Also cleaned some lines of code exceeding 80 characters. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Id26881517d45baf4bf6be2e82b4f9e049f2b2547
2023-01-17Fix issue with system_ready_for_rapid fileLuc Provoost2-3/+5
In the /opt/rapid directory, we used to check for the existance of the file system_ready_for_rapid. This file was created when all the initialization is done properly. This check was however broken and always resulted succesfully, even if the file did not exist. When executing runrapid.py, the system will now wait to connect to PROX, till this file exists. The file is created when running start.sh Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Idca52549aae40070a0b6ea1d7ccbf6c322dc631d
2023-01-09Optional MAC address and other changesLuc Provoost3-16/+50
The MAC address of the dataplane interfaces in the environment file is now optional. If not specified, the HW MAC address of that interface will be used. When using l2 tests, the parameter will be needed anyway and the test will fail if the MAC address is not specified. Starting from DPDK 20.11, the EAL --pci-whitelist parameter changed into --allow. We are now checking the DPDK version of the PROX instance to determine which parameter to use. For pods using cgroup v2, we are now using a different file to determine the cpuset available to the pod. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I7a88458406b9ae3c8cae9c583cc37121d40c5073
2023-01-09Add entry in the log file when copying filesLuc Provoost1-0/+3
Added some extra logging in the rapid log file when we copy files to or from the PROX instances. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: If9947ce87cec34f8336c69a243e9d5340ca37aef
2023-01-09fix regex expression to find IPV4 addressLuc Provoost1-1/+1
helper.lua contains code to parse the IP addresses in the parameters.lua file. The regular expression to find the IPV4 address is fixed. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I9baf2b059fa281dc408bd0ea59b77d294750c1ef
2023-01-09Fix socket_id in rte_hash_parametersLuc Provoost6-0/+6
The socket_id was either not initialized or set to 0. This fix sets the proper socket_id to the relevant NUMA node. When running on NUMA nodes other than 0, memory allocation for the hash table could fail. With this fix, it is supposed to work on all NUMA nodes. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I59887fe064a7e7c96ce2f6ce1c70791844b165b2
2023-01-06Update README and version.h (DPDK 22.11)Patrice Buriez2-53/+83
Reflect support for DPDK 22.11 and refresh compilation instructions. Signed-off-by: Patrice Buriez <patrice.buriez@chenapan.org> Change-Id: I082c630a13783ba012b4ee703b00999cac0f277b
2023-01-02Restore rw_reg and hw_direct_statsPatrice Buriez4-14/+7
Note that DPDK 21.11 and above must be built with 'enable_driver_sdk' option enabled, in order to expose the rte_eth_devices array, now marked as internal. See http://doc.dpdk.org/guides-21.11/rel_notes/release_21_11.html#abi-changes for details. This is done by supplying the '-Denable_driver_sdk=true' command line parameter, either to 'meson setup', or later on to 'meson configure', before running 'ninja' and 'ninja install'. Signed-off-by: Patrice Buriez <patrice.buriez@chenapan.org> Change-Id: I20db8971818a29ec495b6d8d79cf46f2204631a5
2022-12-31Modify code according to new dpdk variable nameLong Wu2-3/+3
Note that most of the original contents of this commit has been removed from this final patchset, because compatibility issues with DPDK 21.11 have already been addressed, although differently, by these commits: - b950110: Add initial support for DPDK 21.11 - 5efd9d8: Fix tons of deprecation warnings Many macros, structure members and dpdk args' name have been changed since dpdk 21.11 and the current latest version(22.07) still has these changes. These changes caused the prox compilation to fail. Modify the code so that prox can be compiled successfully with new dpdk variable name. Signed-off-by: Long Wu <long.wu@corigine.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Reviewed-by: Chaoyong He <chaoyong.he@corigine.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com> Signed-off-by: Patrice Buriez <patrice.buriez@chenapan.org> Change-Id: Ibaad7ac00b121ae9b12ed03bd0380400b226e805
2022-12-30Fix name-array out-of-memoryLong Wu3-4/+5
"struct prox_port_cfg" "names" buffer size is 64 and it will lead to out-of-memory when do "snprintf" operation. Modify code to enlarge buffer size to 128. Fixes: 9a1e1e9336b3 ("Added support for multiple vlans in ipv4 vdev mode") Cc: xavier.simonart@intel.com Signed-off-by: Long Wu <long.wu@corigine.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Reviewed-by: Chaoyong He <chaoyong.he@corigine.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com> Change-Id: Iafbde578688e1a59f4b6e655e45b2d2951f36162
2022-12-30Add support for DPDK 22.11Patrice Buriez2-0/+6
Note that DPDK must be built with 'enable_driver_sdk' option enabled, in order to expose the PCI driver API, now marked as internal. See http://doc.dpdk.org/guides-22.11/rel_notes/release_22_11.html#api-changes for details. This is done by supplying the '-Denable_driver_sdk=true' command line parameter, either to 'meson setup', or later on to 'meson configure', before running 'ninja' and 'ninja install'. Signed-off-by: Patrice Buriez <patrice.buriez@chenapan.org> Change-Id: I5aa57cec851a68fa2a2d2fc63d4e12311e5742f9
2022-12-28Fix tons of deprecation warningsXavier Simonart19-151/+515
reported since DPDK 20.11, 21.05, 21.11 and 22.03, and turned into undeclared symbol errors with DPDK 22.11. Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Signed-off-by: Patrice Buriez <patrice.buriez@chenapan.org> Change-Id: Ice9a0f662ee057211984f799010701cd81e5a4d0
2022-12-26Add initial support for DPDK 21.11Xavier Simonart5-11/+48
Note that this patch simplistically removes some PROX features, because they are not directly supported anymore by DPDK, since rte_eth_devices is now private: - reading and writing NIC register through PROX command line - querying ixgbe HW statistics instead of getting them from DPDK Also adjusted to following DPDK changes: * struct rte_ether_hdr fields renamed: - d_addr -> dst_addr - s_addr -> src_addr * struct rte_eth_rxmode field renamed: - max_rx_pkt_len -> mtu * --master-lcore -> --main-lcore Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Signed-off-by: Patrice Buriez <patrice.buriez@chenapan.org> Change-Id: I08445b3dd0f7fe471d9bc7cfb557bd3aeb2f50be
2022-12-16Fix linker errors with older DPDK versionsPatrice Buriez5-1/+26
when __rte_cache_aligned was defined in rte_memory.h, rather than in rte_common.h now. Signed-off-by: Patrice Buriez <patrice.buriez@chenapan.org> Change-Id: Id6fb6d9adc8b1324ef436aab3897f898a9304e9c
2022-12-14Fix meson.build dependenciesLong Wu1-0/+3
In some environments, the compile command does not have "-ldl" default. Add dl deps in meson.build to avoid compilation failures in these environments. Also add rte_bus_pci, which is a dependency for rte_pmd_ring or rte_net_ring, and was triggering linker warning. Signed-off-by: Long Wu <long.wu@corigine.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Reviewed-by: Chaoyong He <chaoyong.he@corigine.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com> Signed-off-by: Patrice Buriez <patrice.buriez@chenapan.org> Change-Id: I7ecb825ff532f1b63f79bff93470fa9203906aca
2022-12-01Fix linker errors with recent GNU ldPatrice Buriez5-3/+9
observed with: - GNU ld 2.35 (gcc 11.3.1) on CentOS Stream release 9 - GNU ld 2.38 (gcc 11.3.0) on Ubuntu 22.04.1 LTS - GNU ld 2.39 (gcc 12.2.0) on Ubuntu 22.10 Signed-off-by: Patrice Buriez <patrice.buriez@chenapan.org> Change-Id: Ie7d7a4f6c4c5f82e68d2ca4e32f96972933d190f
2022-09-15Fix thresholds for increment_till_failLuc Provoost1-1/+1
The thresholds that define a successful step of the binary search, were not read from the test file or initialised to the default value in case of the increment_till_fail test. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I8347a683f35f8fd2ff26161709bf0bd16387f2e0
2022-09-15Removing the --socket-mem eal parameterLuc Provoost1-25/+1
This parameter is not needed any more for a successful run on a Kubernetes environment. I had to remove the parameter since this was not working anymore on the K8s deployments I am currently using. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I784611d66e003f1a6e344b2d9c7a2c06c5c2b114
2022-09-14Change search success criteriumLuc Provoost2-4/+12
When running a step in the binary search, we can now change the behaviour by adding a new parameter in the [test] section of the test file: generator_threshold. The default value for this parameter is set to inf, which results in the same behaviour as before this change was implemented. The relative difference between what the cores can generate and what is actually sent into the generator's interface must be lower than the generator_threshold, for the test to be successful. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: Id3e787b3571bdb9f241763fceaffccb9ea81a264
2022-09-13Fix the core to check number of bucketsLuc Provoost1-1/+1
We need to check the number of buckets PROX is using for the irq duration distribution. In the past, the scripts sent a command to PROX to check this on core 1. This was typically a core running the the IRQ task in case of VMs. With containers, this is not the case any more and we need to query which core will run this IRQ task. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: If06295774b05d94549955cfbb0b1bb5f4eaf03e2
2022-02-21Merge "Fix issues when handling unkown ipv6 packets"0.0.2Luc Provoost5-14/+23
2022-02-20Set default crc option for meson build.Xavier Simonart1-1/+1
Fix 80eea1. Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I2ed225a903508363bb0499d9cfb35e46c8879029
2022-02-11Fix issues when handling unkown ipv6 packetsLuc Provoost5-14/+23
In order to fix this, a new parameter has been introduced: "ipv6 mask length". This can be specified in the port section of the config file. The default value is 8 (bytes). Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I88b0b3906cc247ae5653ad59b8aa425f0cddf347
2022-02-07Fix the search algorithmLuc Provoost1-9/+14
In case, we are sending less packets through than the requested amount of packets, we will now stop the binary search. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I7ddb8860d47104beffdd5ff05c0359f91f4908e9
2022-02-06Added sleep_time optional configuration in rapidXavier Simonart5-3/+13
This can for instance be useful to ensure that inter-iteration time is higher than SUT switch max_idle time. Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I3a94b022f4d38e0c97d5cbd343b36a9a3ed5fd9e
2022-02-06Added support for no warmupXavier Simonart1-0/+4
If warmup time is set to 0, there will be no warmup at all. Before this patch, generator was started and immediately stopped which could result in some packets sent. Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I7acada86c527bcde70ab0117b79f95208a382cdd
2022-02-06Added support for mis-ordered packets in rapidXavier Simonart3-11/+25
- mis-ordered packets are reported/displayed in an extra column - a treshold can be specified for mis-ordered packets, as a criterium Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I3e17f86c44e54abcec2412ec57ba5303105b7b91
2022-02-06Added scripting support for rangesXavier Simonart3-1/+77
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I532fd630498c2b00a91209ff7c3611fd09b460eb
2022-02-06Merge "Do not create (empty) latency loss file if disabled"Xavier Simonart1-6/+6
2022-01-10Do not create (empty) latency loss file if disabledXavier Simonart1-6/+6
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: Ia407e8d8bbdc19e8ca531b363c6cb0ed84ca5250