summaryrefslogtreecommitdiffstats
path: root/VNFs/DPPD-PROX
AgeCommit message (Collapse)AuthorFilesLines
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
2022-01-10Fix warning when compiling with ninjaXavier Simonart1-1/+1
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I1d90cf8b06544b9e220726fade506275f872a037
2022-01-03Use crc offload by default when building with mesonXavier Simonart1-1/+1
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I8a004f2843273a56a3f724a4dca747da9f7f77c2
2022-01-03Fix keyboard related issues when building with mesonXavier Simonart3-3/+10
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I8186703b8ea3e88f91cd929898033eafecd686aa
2022-01-03Add support for detection of misordered packets per flowXavier Simonart4-23/+263
Only flows from ranges are supported so far. This means that flows generated through randoms are not supported yet. Misordered packets can now be detected per flow. flow definition is hard-coded as 5 tuple (proto, ip/udp src/dst). The generator writes flow_id and packet_id within the packets (4 + 5 bytes). This means that, if all latency, packet_id, signature, accuracy, flow_id and packet_id_in_flow parameters are set, the minimum packet size is 72 bytes. This feature is enabled through the following parameters: On the gen side: - packet id in flow pos: position (5 bytes) for packet id - flow id pos: flow id pos (4 bytes) On the lat side - flow_count: the number of flows received by the latency core. If not enough flows are configured, then an error message is displayed (once) and packet_reordering count is only measured for those flows - packet id in flow pos: position (5 bytes) for packet id - flow id pos: flow id pos (4 bytes) Misordered packets (and extent) are reported per core as before. No change related to duplicate packets (not measured per flow as a duplicate packet is not per flow...). Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I07517df87dfebec81408baf1decb647d9a0edd94
2022-01-02Fix potential crash when executing in backgroundXavier Simonart1-1/+1
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I460e269926726aaaf495e751d8753cf8ab94877d
2022-01-02Fix toeplitz initialization key and rss key len for mlx4Xavier Simonart2-4/+2
mlx4 requires key_len to be 40. Other NICS seems fine with it. Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: Ifc36ce2f0a80be74e9f957eb1ede3f98c756bfb2
2021-12-30Prevent rapid considering delayed packets as lostXavier Simonart1-0/+1
In case of high latency in SUT, rapid was considering those packets as lost Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: Ifd52bb0f41e1995105bf216ed1068a50250403d8
2021-12-30Increase maximum latency supported by Early Loss DetectionXavier Simonart4-3/+39
Early Loss Detection was supporting a maximum latency of 16k packets i.e. 1ms at 64 Bytes / 10Gbps. This has been increased by 64. Drawback is that early loss detection might take much longer (1 million packets) Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I3e8dae6a27e72e48757a66e0097d17be924211ad
2021-12-20Add support for preventing rapid to change flowsXavier Simonart2-5/+8
By default, in flowsize and warmup tests, rapid will set the flows by changing some fields. However, rapid only support some types of flows. Using this patch, one can let PROX define the flows, and prevent rapid to do it. This is done by specifying number of flows to 0 in rapid configuration. Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I69c7e223aaf536ebcfe9fb52e8305d5625e79fa6
2021-12-20swap: add option to prevent swapping geneve packetsXavier Simonart3-6/+24
Now a warning will only be printed for the first geneve packet not swapped Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: Ied424ce8fef9019ce2d4409391dc8001ed0b5ff7
2021-12-20store packet id in gen and swapXavier Simonart4-1/+119
Support configuration option for specifying number of packets which we will store (gen and swap). Packets are stored runtime in a buffer and written to disk at exit. Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: Iab1c9c13048b6919f77392953675cb8c48aad8e4
2021-11-02Create combined image and add helm chartYury Kylulin11-4/+131
Changes in this commit: 1) Create self contained image, rapid scripts can be executed from the management pod and create other testing pods in the cluster. 2) Helm chart to automate rapid deployment and proper service account configuration to be able to start management pod. 3) Fix for migration to paramiko. Signed-off-by: Yury Kylulin <yury.kylulin@intel.com> Change-Id: I0281871cce392b3003e0274602a5c90c29af9b23
2021-09-13Use updated DPDK scheduling schema in ProxHeinrich Kuhn3-0/+54
The scheduling infrastructure in DPDK has changed somewhat in DPDK 20.11 and up. This patch adds the needed compatibly code to make use of the new layout in DPDK. The bulk of the changes revolve around moving tb/tc rates and period fields from rte_sched_subport_params to a new struct called rte_sched_subport_profile_params Signed-off-by: Heinrich Kuhn <heinrich.kuhn@corigine.com> Signed-off-by: Simon Horman <simon.horman@corigine.com> Change-Id: Ie365903b972528eaa9324c707fe3868610f51993
2021-09-13Use mbuf dynfield1 array in ProxHeinrich Kuhn4-0/+58
The udata64 field in the rte_mbuf struct has been removed to make more space for the dynfield1 array. Prox used the udata64 field for various use cases. From DPDK v20.11 and beyond use the dynfield1 field in the rte_mbuf struct for the same functionality. Signed-off-by: Heinrich Kuhn <heinrich.kuhn@corigine.com> Signed-off-by: Simon Horman <simon.horman@corigine.com> Change-Id: I0c2ba2f24bf5649ae809a54a9b0f9d6bebdd7056
2021-09-11Basic support for ranges in generatorXavier Simonart3-1/+70
This commit add initial support for ranges. Ranges can now be specified using an offset and a range, in a similar way as random. e.g.: range=2-16001 range_offset=28 The two previous lines will range the src IP address from x.x.0.2 to x.x.3e.81 in an IPv4 packet. The range option will write as many bytes as the bytes needed for the max (2 bytes in the example above), up to 4 bytes. Runtime, the generator will iterate through the range in a linear way, starting from the min. No check are done whether range overlap themselves or whether they overlap with randoms. As of now, no support for command line or script option. Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I98a1757998955f48631a5929bd7534481975eedc
2021-09-11swap: prevent printing continuous warning messages for STP and LLDPXavier Simonart1-0/+24
Some switches send frequent STP (Spanning Tree) and LLDP (Link Layer Discovery Protocol) messages. Handle_swap was printing a warning message for each of them. Now a warning will only be printed for the first message of each type. Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I5a8ef7b76c492451aae66fd1533c61927bc6d8f1
2021-09-09Add support for building Prox with MesonHeinrich Kuhn6-6/+257
DPDK has deprecated the use of the make system in versions 20.11 and beyond. Following the deprecation it is non-trivial to keep using make to build projects that depend on DPDK. A cleaner solution is to adopt Meson as a building framework. This commit adds support for Meson in Prox. The meson.build file mirrors the functionality that is available in the current Makefile. The make build system will exit if it detects that DPDK was built using meson (testing for the RTE_TARGET directory) Signed-off-by: Heinrich Kuhn <heinrich.kuhn@corigine.com> Signed-off-by: Simon Horman <simon.horman@corigine.com> Change-Id: I6ebffa2199993fd6eb46c2f31961fe7dc38e727c
2021-09-06Changes from ViNePerfSridhar K. N. Rao4-15/+31
This patch adds changes to support using rapid to run tests only. 1. Fix format.yaml path. Add format.yaml as datafile in setup.cfg 2. Do not call generate lua if starting prox is not required. 3. Move logs to results directory - if present 4. Machines should not be used in del, if not created. Fix syntax error. Signed-off-by: Sridhar K. N. Rao <sridhar.rao@spirent.com> Change-Id: I580716573d0be2a8da02035f4d180e81b63b3fc8