summaryrefslogtreecommitdiffstats
path: root/VNFs/DPPD-PROX
AgeCommit message (Collapse)AuthorFilesLines
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
2021-08-20Fix ssh timeout issueLuc Provoost1-1/+1
Moving to paramiko for ssh introduced a bug: when starting PROX through ssh, a default timeout of 15 seconds was started. The timer is now disable since we need to run PROX as long as the test will take. Change-Id: I65162fff33beb6d30d2f5ee2b83f9bef7880ce4b Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-07-16Using paramiko for all ssh & scpLuc Provoost6-118/+118
By using paramiko, we can now also use differnt credentials to login into the PROX instances. In the ssh section of the environment file, you can now also add the password parameter. Change-Id: I08d31cbf0d02d7e82b7fbe34268851f73ff5dde0 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-06-21Add support for multisocket memory reservationYury Kylulin3-16/+38
Automatic detection of allowed NUMA nodes for memory allocation added to Kubernetes environment. Signed-off-by: Yury Kylulin <yury.kylulin@intel.com> Change-Id: I4f8b2f64971d43414bbd290f7fcbc6210c1d6d71
2021-06-09Fixing eal parameter issue when more than 64 bytesLuc Provoost1-2/+2
Using prox_strncpy to copy eal parameters, so PROX will abort in case the parameter exceeds the maximum string length. Also increased the string length from 64 to 256 bytes. Change-Id: Id7cee03f6b625e165342129e9c2c71216d1144e6 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-06-08fix container image and use latest codeLuc Provoost1-10/+4
The container image was not containing a working prox executable any more. Also took out the commit id, so we always have the latest prox code in the latest container image Change-Id: I4336e06031d5bf5b3f08f4bc32b76703fde34040 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-05-12Fix latency buckets with multiple lat coresLuc Provoost3-66/+98
The bucket data of the last latency core was taken into account when collecting the latency stats. We are now adding the bucket data for all cores. Also changed the error reporting when PROX instance is breaking the pipe connection (e.g. when the dataplane network is overloaded). Cleaning up some trailing spaces in pox_ctrl.py Change-Id: I09ba01ac65e7e4e9ff03ad47da83aa4f83250a67 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-05-10Reinstate installation of igb_uioLuc Provoost2-1/+9
For good performance on some platforms, we need the igb_uio driver. With this change, the driver is compiled and insmod done during boot time. When running the rapid scripts, the devbind.sh script is sent to the instances (after replacing the string "MACADDRESS"). Make sure you uncomment the proper line to chose which driver you want to use. Change-Id: I69549400a97f29e06add6ab44515e96ffa9ce0e8 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-05-10Fixing rapidxt for XtestingLuc Provoost5-4/+25
Changes were needed for installing the python rapid python package by adding 2 new files: pyproject.toml & setup.cfg. Also fixed a bug in rapidxt.py Change-Id: Iac98b6068afef4a5f1a97459ea1109211607d53d Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-05-05New test case: gen versus swap via gatewayLuc Provoost4-10/+134
A new test was added: tests/basicrapid_gw.test. Traffic generated will now go to the reflector (swap instance) via the Gateway. The swap instance will also send the traffic back via the gateway. This use case is created to support GCP testing where the interfaces are defined with a /32 netmask, and hence all traffic is routed via the gateway. Change-Id: I60142d650072ab345cd47a0f32cb6a8275da0542 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-04-30Do not run after_boot.sh by defaultLuc Provoost1-10/+12
In the definition of the stack in openstack-rapid.yaml, we define a CloudConfig resource. after_boot.sh is called automatically by a service (check-prox-system-setup.service), after each boot. In this file, defined in the CloudConfig resource, you can put instructions needed for succesful operation and to fix certain issues in your environment. By default, this file should NOT be executed, hence we should not have this in the CloudConfig. Change the name back to after_boot.sh if you need to execute this code. Change-Id: Ifd3f86fe6dfd31444b799833d6b435a310708f25 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-04-28Default use of rapid_rsa_keyLuc Provoost6-23/+35
A secret and public key pair is available in the rapid directory: rapid_rsa_key and rapid_rsa_key.pub. createrapid.py is now modified to upload this key into OpenStack if the keypair does not already exist in OpenStack. Which keypair to use is now only defined in params_rapid.yaml. You can still define a key pair with a different name in params_rapid.yaml. If the secret and public key files are not available, a new keypair will be created and the secret key file will be saved. The name of the secret key file is the name as the OpenStack keypair name. The name of the public file is the same, with the pub extension. Change-Id: Ib8b5e4bf3a3d3138216698dc588a6908248220c0 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-04-22Fix error in sut throughput measurementLuc Provoost1-1/+1
In the fomula to calculate the sut throughput measurement, we used the frequency of the wrong machine: the generator. This issue showed up when testing with generator and sut on a different type of compute node, with different processor frequency. Change-Id: Ib42bb8a30924d6bc6bb2773aed5dcc9145bb50fc Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-04-20Fix reorder count after resetXavier Simonart1-0/+1
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I93bc98069bf60d8b727fd877bf89087c57ad2dd9
2021-04-16Fix spurious discarded packets in CGNat.Xavier Simonart1-1/+1
CGNat was discarding packets in some cases. Some run were fine, others were seeing many packets discarded. Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I63b2df993e31443bc4b5168611fcdcfa454e2137
2021-04-16Adding documentation in the test filesLuc Provoost16-15/+239
a README file in the tests subdirectory is now describing the parameters used in the test description files. Each test files has a comment pointing to the README file for more information. Change-Id: I49b9b3e1fac0a65c43e7f2d7dc90612923e28f78 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-04-15Rework of statistics reportingLuc Provoost28-200/+305
- Cleanup of the format.yaml file. - Adding of the packet mis-ordering statistics - Added a warmup phase to get the correct mis-ordering statistics since ARP messages need to be dealt with before we can collect correct misordering stats - Code cleanup avoiding some long lines - Removing background traffic control from rapid_flowsizetest.py since this is already done in the iteration code in rapid_test.py Change-Id: I4c60a90353f27b8e2d0b62505e8f1cd886a17f0a Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-04-12Code improvementsLuc Provoost5-280/+268
Rework of some of the code for better readability Change-Id: I559e88faba31d93e593d39cf436f3e114ba4528a Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-04-08cgnat test case addedLuc Provoost6-20/+346
A cgnat test can now be executed. This test needs 3 PROX instances. The first one, the generator needs to have an interface on the private dataplane network. The second instance, the cgnat needs to have it's first dataplane interface on the private network, while the second data plane needs to be on the public network. The third instance will be playing the role of internet server that the generator is connecting to. It will have one dataplane interface on the public network. This third instance will increase the packet size of the received packets by padding it with zeros and it will send the packets back to the cgnat mutliple times. How many times is defined by a multiplier in the cgnat.cfg file. In that cgnat file, we also define a range of IP addresses that will be used for the dynamic source IP NAT-ing. Make sure that the ports are allowed to accept other IP addresses than their own (e.g. allowed address pairs) and that the range of IP addresses is not overlapping with other machines in the public network. Change-Id: Ibc1c8513ac4e8a304378814fceb28c090dff895f Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-04-07Log ssh & scp related issues also on screenLuc Provoost1-10/+3
When scripts are doing an ssh or scp to the PROX instances, errors were sometimes hidden. E.g. when we try to upload a config file to the PROX instance that is already existing but owned by another user, we would not see the error on the screen. Note this will only happen if you build your own image. In case you use the pre-canned PROX images, this should not cause issues. Change-Id: I94176b737cd548c93afc71450a85910d7eca2b0c Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-04-06Avoid seg fault in rte_hash_lookup_bulkLuc Provoost1-78/+83
In case we receive a NON-IPv4 packet, we discard the packet. However, this made the rte_hash_lookup_bulk crash. Hence the keys parameter has changed to avoid the crash. Change-Id: I093688a0b59d44667a42147fd67fbc7901d6dba4 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-03-31Fix ref counter bugLuc Provoost1-1/+1
Fixed the error in the calculation of the rte_pktmbuf_refcnt_update parameter Change-Id: I858d9e0b8cf158f9c24807197df34f69217a1b1c Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-03-29Minor update to fix compilation issues on recent gcc and dpdkXavier Simonart10-17/+17
Fixes compilation issues seen on gcc 9.3.0 on dpdk 20.05. Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: Ib7989c1bac66e82551165ab49e06941ebc772347
2021-03-25Do not request IPV6 routing infoLuc Provoost1-5/+5
PROX is not yet dealing with IPV6 routing info (only IPV4). Hence we got a segmentation fault when receiving such information. In a previous commit, we are checking for IPV4 routing info and we do not continue processing of any other routing information. With this fix, we ask the Linux OS NOT to provide IPV6 routing info. The checks when receiving routing information have changed so that we only treat IPV4 and nothing else. Change-Id: I428a036c31014377c8de08da17e51740be0e1de5 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-03-22Ignoring IPV6 routing messagesLuc Provoost1-0/+4
The code was only written to deal with IPV4 routing messages. If we receive an IPV6 routing message, we are now ignoring that message. Change-Id: I0f8044a0331235639bf5cab9abb9c8ce55c3522d Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-03-15Fix the tuned optimizationsLuc Provoost9-31/+56
tuned-adm is now run through check_prox_system_setup.sh at the first system startup/reboot. This will result in the correct grub cmdline parameters. We are also coying the default rapid_rsa_key in the authorized_keys of the rapid user, which is now the default user to run the tests. Fixed also an issue in handle_mirror.c: using now ETYPE_IPv4. Changed deploycentostools.sh to reflect the changes done when building the image with disk-image-create. Change-Id: I5933d21faef9fe02b56c01d0b96e2c143cc5476d Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-03-10Remove useless site.retry from treeCédric Ollivier1-1/+0
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> Change-Id: Id2a3fc69d097024cff608103ba7310388a273976
2021-02-25Preparation for packet mis-ordering statsLuc Provoost6-24/+34
Changed PROX and the python scripts so that the "lat all stats" command also returns the mis_ordered, extent and duplicate statistics. In order to make this work properly, we need now to also stop and restart the latency cores, every time we stop and start the generator cores, since the sequence numbers are reinitialised every time we start the generator core. Change-Id: Ic4212a989c8ee9d0f026a34ca63a08b982c32b71 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-02-25Fix mbuf corruption when handling icmp messages.Xavier Simonart1-1/+1
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com> Change-Id: I3eeacb550d1ef51a13802d06f06973437afe7d9b
2021-02-11Add support for native Kubernetes CPU Manager0.0.1Yury Kylulin33-21/+132
For Kubernetes environment core ids in the config and test files are relative and automatically remapped to the allowed cores allocated for container. There is no change to the baremetal or VM environment. Signed-off-by: Yury Kylulin <yury.kylulin@intel.com> Change-Id: I63e499723e8213de1b05d4175eb3eddc4492ccf5
2021-02-10Improve prefetching in handle_mirrorLuc Provoost1-3/+3
Some of the prefetching code was commented out, which was wrong. The prefetching is back in. Change-Id: Id7e7f09bd62faa7b9faf3d677962a99ba2a71080 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-02-10Expand mirror functionalityLuc Provoost3-24/+67
In order to deal with non-symmetrical load, the mirror function can now change the packet size of each packet it receives. It can also send the incoming packet multiple times on each of the tx ports. To support this feature, 2 new parameters in the cfg file have been added for the mirror mode: - multiplier: specifies how many times a packet needs to be sent on each tx port. Default is 1. - mirror_size: the size of the packets that need to be sent. This will just change (increase) the packet size of each incoming packet. If not specified or invalid value (e.g. <64), the size will not be changed. The packet size will only be changed for IPv4 UDP and IPv4 TCP. Note that these parameters have no effect on the mirror copy submode. Change-Id: Ic46b52abdd80ed51cffee667bd04ade9ec23ff6d Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-02-01Fix the default test fileLuc Provoost1-1/+1
In a previous change, all test files were moved to the tests subdirectory. When not specifying the test file on the command line as a parameter, the default test file is used, as specified in rapid_defaults.py It did not reflect the fact that all test files were moved to this directory. Change-Id: I5c77b75dbdde040d0e30dda2b97e981dff572f2f Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2021-01-29Add rapid script sources in the imageYury Kylulin2-17/+22
Make image more universal and add rapid scripts for mgmt from the container. Signed-off-by: Yury Kylulin <yury.kylulin@intel.com> Change-Id: Ia46a8e147f978dd64bfe6c7b44f7dff92e241855
2021-01-27creation of tests and configs subdirectoriesLuc Provoost40-58/+136
All test files are now in the tests directory. All PROX config files moved to the configs directory. When specifying a test on the runrapid.py command line, you should now also mention the directory: e.g. --test tests/basicrapid.test In these test files, you need now to also include the configs subdirectory when specifying the prox configuration that needs to be used. The --map parameter has also changed. It can still take the file name of the map file, that specifies which PROX instance to use during a test. On top of that, you can now also specify a list of indices of the machines to be used during a test: e.g. --map [1,3]. Change-Id: I887cba59834dd8c903a22bc80959b10da2775398 Signed-off-by: Luc Provoost <luc.provoost@intel.com>