Age | Commit message (Collapse) | Author | Files | Lines |
|
Added a dot in front of the python files that are imported, so the code
can also be called from other directories
Signed-off-by: Luc Provoost <luc.provoost@gmail.com>
Change-Id: I18d4925fcf68c27c91d5e489178bac79edfcf5f4
|
|
'prox_socket' 'prox_launch_exit' and 'monitor' will be set to 'True' if
not in the configration file for that specific test machine. The code is
now cleaner.
Signed-off-by: Luc Provoost <luc.provoost@gmail.com>
Change-Id: I8f05a4eac884896139b2fb6deabbce4d3edfd2ae
|
|
In order to collect pwoer of the system under test, one can now define a
power helper function that will retrieve System, CPU, and RAM power. This
function will then be called at the end of a test iteration. The actual
function to collect the power is not provided in this github.
Signed-off-by: Luc Provoost <luc.provoost@gmail.com>
Change-Id: Ic33881326f9318f1669fdef69a872596cc8e6dbc
|
|
Check out https://github.com/kubernetes/kubernetes/issues/119669
That describes the problem. The solution can be found in this change.
Signed-off-by: Luc Provoost <luc.provoost@gmail.com>
Change-Id: Id4d47e5d36b1c4acefea8dbe13d7a1e7c499c70d
|
|
Simplified some of the code to deal with the differrent core options
Signed-off-by: Luc Provoost <luc.provoost@gmail.com>
Change-Id: I4f33563b51370efe807e8ace807acc3fdcd2bfc4
|
|
Logging wrong parameter
Signed-off-by: Luc Provoost <luc.provoost@gmail.com>
Change-Id: I7ca4b1b0eba93eadbd5289d51a2a3fb259af7938
|
|
We support now the use of K8s Nodeport services and non standard ssh and
prox socket ports.
In order to use Nodeport service, you need to specify the name of the
service for each prox pod in the rapid.pods file.
Signed-off-by: Luc Provoost <luc.provoost@gmail.com>
Change-Id: I2873b7e22fee042a14b575e772267a9128b7c4f2
|
|
Apply i40e_vf CRC offload code to iavf ports
Signed-off-by: Luc Provoost <luc.provoost@gmail.com>
Change-Id: Ife50c99447ede118941d50c320038f716f08a301
|
|
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
|
|
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
|
|
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
|
|
ETH_LINK_SPEED_AUTONEG changed into RTE_ETH_LINK_SPEED_AUTONEG
Signed-off-by: Luc Provoost <luc.provoost@gmail.com>
Change-Id: Iababab5ce51b618cd97f8158de2e2979747b141c
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
Reflect support for DPDK 22.11 and refresh compilation instructions.
Signed-off-by: Patrice Buriez <patrice.buriez@chenapan.org>
Change-Id: I082c630a13783ba012b4ee703b00999cac0f277b
|
|
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
|
|
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
|
|
"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
|
|
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
|
|
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
|
|
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
|
|
Many reStructuredText issues
Signed-off-by: Patrice Buriez <patrice.buriez@chenapan.org>
Change-Id: I07e6af54d2ea15fa1ab1a08ad3c0b22643e7462e
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
|