Age | Commit message (Collapse) | Author | Files | Lines |
|
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com>
Change-Id: I8186703b8ea3e88f91cd929898033eafecd686aa
|
|
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
|
|
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com>
Change-Id: I460e269926726aaaf495e751d8753cf8ab94877d
|
|
mlx4 requires key_len to be 40. Other NICS seems fine with it.
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com>
Change-Id: Ifc36ce2f0a80be74e9f957eb1ede3f98c756bfb2
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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>
|
|
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>
|
|
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
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
When building the qcow2 image, we are not automatically getting the
latest version of the samplevnf code. Since this might have to do with
caches, a parameter with the workspace directory is now passed to
disk-image-create using the --image-cache option.
Also removed verify-image.sh since this is done using build-image.sh
with the -v option.
Change-Id: I661c543102258929bdfe53af6c6ea0ff72eab33d
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
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>
|
|
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>
|
|
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com>
Change-Id: I93bc98069bf60d8b727fd877bf89087c57ad2dd9
|
|
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
|
|
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>
|
|
- 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>
|
|
Removing trailing spaces
Change-Id: I8d06b7413444843f0bdaa890189929f0e5e2e0f8
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
Rework of some of the code for better readability
Change-Id: I559e88faba31d93e593d39cf436f3e114ba4528a
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
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>
|
|
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>
|
|
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>
|
|
Change-Id: Ie2532fdb6339dc447ae122136088d6a1ca2c80f2
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
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>
|
|
Fixes compilation issues seen on gcc 9.3.0 on dpdk 20.05.
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com>
Change-Id: Ib7989c1bac66e82551165ab49e06941ebc772347
|
|
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>
|
|
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>
|
|
The -i option is now specifying the appendix for the the image name. The
name of the image will be rapid-<appendix>.qcow2. The -i option could then
be used to specify 'latest' or 'stable'.
The -g option specifies the google storage url where the qcow2 will be
stored.
The -v option is still existing in case we want to only verify the qcow2
image creation process.
An example:
buils-image.sh -g artifacts.opnfv.org/samplevnf/images -i latest -v
Change-Id: Ie07a89eff029f4e9fd3e1f2ebff1eaea05c580a6
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
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>
|
|
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
Change-Id: Id2a3fc69d097024cff608103ba7310388a273976
|
|
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>
|
|
Changed to Xavier's new email address
Change-Id: I3b5a0e00c41abcbca405dbea33a87c56688a5289
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
Signed-off-by: Xavier Simonart <simonartxavier@gmail.com>
Change-Id: I3eeacb550d1ef51a13802d06f06973437afe7d9b
|
|
|