summaryrefslogtreecommitdiffstats
path: root/VNFs
AgeCommit message (Collapse)AuthorFilesLines
2020-05-29Improve performance in l3 submodeXavier Simonart3-13/+17
Two cases where performance has been improved - When using a gateway from a routing table (l3 submode), store the mac within the next hop table, to avoid a hash_lookup. This gives ~10% improvement. - Read tsc only once per bulk (of up to 64 packets). This gives ~10% improvement to swap, 4% to gen. In addition a small fix has been added, preventig "No route" Error to be written too aften. Change-Id: I8a7ab74a32f09c8ff47f751ee91e84afee1b2147 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-05-29Added initial support for BGPXavier Simonart13-160/+594
Through this commit BGP messages are forwarded to tap device Netlink messages are enabled to receive route Updates. In addition, generating tasks can also specify a routing table which will be used when sending packets The routes initialized by the routing table can be changed through the reception of BGP messages Change-Id: I187ba9a921885cbc9b209aae5fb654309e3388b8 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-05-29Fix ctrlplane handling vdevXavier Simonart1-21/+20
Change-Id: I8f570940d2c4e1fc09ebae03105e436f5caebbd3 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-05-29Improve ctrlplane performanceXavier Simonart4-13/+36
The crlplane performance has been improved. This is necessary when handling many IP in L3 mode (i.e. many ARP Requests/Replies). Before this change, arp timer was updated as soon as an arp request was tentativaly sent to the master. This means that, if the request failed to be sent (e.g. ring full) we had to wait arp_update_time (default 1sec) before trying again. Now arp_update_time is only used when an arp reply is received. If a request has been successfully sent, then the arp timer is updated by 1 second (i.e. we will not send any arp reuest for this IP within this second) If we failed to send the request, then the timer is updated by 100 msec which means we will wait 100 msec before trying again. A too high value here would have meant that we have to wait a long time before trying again. A too short value overload the master ring with request to transmit ARP requests, so that master is unable to handle arp replies. arp_update_time is now also partly randomized to avoid all IPs to request arp request at the beginning of the test. So if arp_update_time is 10 sec then the configuration sets it to 5 to 15 sec. As a final note the following parameter (already implemented before) can be changed to improve ctrlplane performance (at the cost of dataplane) ctrl path polling frequency=10000 Change-Id: I9660458a22e7442eaa0c83aaa0c9893a15069f98 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-05-29Added support for netlinkXavier Simonart8-71/+438
Through this commit ARP and ICMP messages are forwarded to the kernel when vdev tap devices are enabled, as well as PROX l3 mode. ICMP support has also been added to master (i.e. PROX L3 mode) and to swap (so when L3 submode is not enabled). Change-Id: Ie6bf52cbae7171bfca041ff18651d4ec866f44cd Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-05-29Add support for vdev tap devicesXavier Simonart10-12/+277
This commit adds support for the creation of tap devices. To create a tap device, and associate it with a DPDK port, add within the port section: vdev=<tap_name> local ipv4=<ip_assigned_to_port> <tap_name> will appear as a kernel network device, with an IP <ip_assigned_to_port> ARP packets received from the network on the DPDK interface will be forwarded to the kernel. 1st packet which needs to be generated to a new IP will cause an IP packet to be sent to the kernel (using socket sendto) forcing the kernel to send an ARP_REQUEST. In this commit, there is no notification from the kernel about ARP table changes. This is subject to further commits. Two config files, gen_tap.cfg and swap_tap.cfg have been created. They work one against each other. *** Note however that they do not work if running within the same host (with the port being connected back to back) *** This is due to the fact that the kernel would bypass the ports and use local interface... Change-Id: Iadeec0d99e3c693472ea44bdb9163a3bf97df2fa Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-05-29Fix for container .env file and small updatesLuc Provoost17-104/+69
Since runrapid.py is now supporting more than 1 dataplane interface, we need to use a port index in the rapid.env file for the dataplane ports. In k8sdeployment.py, we only support 1 dataplane port, but we are writing dp_ip1 and dp_mac1 in the environment file. The copyright dates are also updated. Some references to VM have also been changed to instance. Change-Id: Ie1d036c13ef5d6f0aa1f35aa068a9760a1cfc2a9 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2020-05-28IPV6 testing & minor changes and fixesLuc Provoost20-92/+362
IPV6 test has been added. The generator will now generate IPV6 packets using NDP to resolve MAC addresses. The hex IP addresses in the inline definition of the packets in the cfg files is now calculated by a lua function called in parameters.lua. The hard-coded path /home/centos has been replaced by ~. An error in the speed calculations has been fixed. See the RapidTest class for details. The actual number of generated flows is now reported. If the requested number of flows is not a power of 2, the lowest power of 2 that is larger than the requested number of flows will be used and reported. Change-Id: I36b8d345b4a03c2cf358c19ec353ca8ad2831293 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2020-05-15Support for imix packet sizesLuc Provoost18-41/+69
All packet size in the *.test files have been replaces with imix sizes. imix is now a list of packet sizes. If you want to run with only a pakcet size of 64, you need to specify a list containing only 1 size: [64]. You can also specify multiple imix values by specifying a list of list of sizes. The keyworkds in the test files are now imix & imixs. Change-Id: Iea47c0266b022133b7bbfc9a6811e3199ae41521 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2020-05-15createrapid.py is now using heat templates yamlLuc Provoost17-465/+523
yaml files have been added to the repo as an example. Please check the README explaining the output section reqs for this yaml file. There is also a new file (config_file): it also specifies which yaml files to use. multiple dataplane interfaces per VM can now be specified and will appear in the <STACK>.env file. An error in setting the packet size has been fixed (see set_udp_packet_size for packet size setting details) Change-Id: Ie89a4940521dac7dd3652acca477739abb9f5497 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2020-05-15Code rewrite and Python3 supportLuc Provoost35-1415/+1860
The code has been rewritten in multiple classes and files for better readability and maintainability. You should now also use Python3 to run the scripts. Some of the variables in the config files have moved to other sections. The pushgateway parameter moved to the [varia] section of the rapid environment file. Change-Id: Ic61a1bc3baa39447d42b21dfcc0f16c28fcdfa6e Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2020-04-29Fix configuration of arp_timeout and arp_update_timeXavier Simonart1-2/+2
Change-Id: I9e90c9bdd4d6e83ce0533fd38e1980dca1841bdb Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-04-24Fix dump packets commandXavier Simonart2-3/+2
dump packets (e.g. dump 1 0 1) was in some cases dumping more packets than expected. Proper count of packets is now dumped. Change-Id: I0974465d617eda00e77ee87148bf96991ecd3ed7 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-04-20Added support for DPDK 19.11Xavier Simonart7-4/+87
Change-Id: I58fa7a0ab7aaa27e9f9383f7995bb71bf0952618 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-03-23Improved variable init and bug fixesLuc Provoost1-62/+41
Variables were initiales based on the file name of the PROX configuration files. These decisions are now based on the content of these files and other variables, rather than just the name of a file. This commit also fixes some bugs: irq test was not executing any more, some issues with the push gateway reporting. Change-Id: I39308effad3c80cf52d96e4d85d92d4b5f0be9a5 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2020-01-31Add support for kubernetes deployment in rapid scripts.Yury Kylulin26-95/+1251
In case of kubernetes based deployments procedure for test environment creation is different. Please refer to README.k8s file for more details. Dockerfile and dockerimage.sh files can be used to create a docker image with prox. There is separate createrapidk8s.py script which is used to create appropriate number of PODs for testing based on the rapid.pods configuration. port_info is a helper application to identify port MAC address. Change-Id: I73611f066ac54260aa11dd17c173379df06f46a5 Signed-off-by: Yury Kylulin <yury.kylulin@intel.com> Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
2020-01-31Merge changes from topic "TST009_benchmark"Xavier Simonart8-303/+650
* changes: New PROX commit ID and bug fix code review comments and PROX commit ID Code review feedback & back-ground traffic support Fix run_iteration when not using the sut_sock Specify latency bucket size & correct calculation Initial support for percentile latency measurements Combine code for fixed rate and variable rate tests Better Latency accuray warning message Support for ETSI GS NFV-TST 009
2020-01-31New PROX commit ID and bug fixLuc Provoost2-2/+2
Updated deploycentos.sh with latest PROX commit ID and took another code review comment into account. Change-Id: Iedfa695be7496459d990f36e2dc00c8890b19fb3 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2020-01-31Merge "Update PROX version to (preprod) 1908 to reflect DPDK 19.08 support"Xavier Simonart2-3/+3
2020-01-29code review comments and PROX commit IDLuc Provoost2-28/+15
Implemented the code review comments I got on previous commits and using commit ID 2cd03b7 to select the PROX version that will be installed in the VMs through deploycentostools.sh Change-Id: Ifc4c18c657a8bd57c68a7fc9d885c75ffdcb7b5d Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2020-01-29Update PROX version to (preprod) 1908 to reflect DPDK 19.08 supportXavier Simonart2-3/+3
Change-Id: I04e0bdc6679a74a8ace26eb30d6f8d2857d6c1c7 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-01-29PROX: print panic message on screenXavier Simonart4-0/+11
When PROX detects an error condition at startup, it calls PROX_PANIC which prints an message before calling rte_panic to end the application. If ncurses was already started, this results in the message being printed in ncurses (and prox.log) then leaving ncurses; hence the message is usually not visible to the user (until it open prox.log), giving the impression of an unexpected crash. With this fix, the error message is repeated after closing ncurses, hence the message will be printed on stdout. Note that it might also be printed twice on stdout if ncurses was not already started. As part of this fix, prox.log is now properly closed. Change-Id: If41875843f1a39bc715f4264b3992c3fa018394e Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-01-29Added command lat all statsXavier Simonart3-154/+161
lat all stats <core_id> <task_id> combines "lat stats" and "lat packets" within one command. This command returns: - One line in case the core_task parser fails. In that case the line will start with: "error: invalid syntax" - One set of lines for each core task: - if core/task is invalid, or not running lat mode, the line will contain (start with) "error...". this will be the only line for that core/task. - Otherwise the set of lines will be: - One line as returned by "lat stats". This line will be - One line starting with "error" in case of error, or - One line containing lat_min_usec, lat_max_usec, lat_avg_usec, tot_lat_min_usec, tot_lat_max_usec, last_tsc, rte_get_tsc_hz(), lcore_id, task_id - The return from lat packets i.e. - One line starting with "error" in case of error, or - 128 lines - one for each bucket - as returned by "lat packets" command This command is more useful then lat packets, as it contains the tsc - needed to see whether the sample is new or not. Change-Id: I04231aa7c5bd2d352ed6f94d40e88d3b411ce744 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-01-29Add Latency Distribution displayXavier Simonart10-18/+278
- Latency Distribution (i.e. histograms) has been added when latency is enabled. - Histograms are now compiled by default. - A bug has also been fixed, which was causing strange behavior in the histograms (due to bucket size being overwritten). - The default bucket size has been changed to "11" which means that the size of each bucket is now (1 cycle << 11) = 2048 cycles = 1 microsecond at 2GHz. It was (1 << (10 - 1)). As there are 128 latency buckets, it is not possible to show all of them on the display. Hence the latency buckets are displayed based on on the assumption that the minimum latency is usually relatively stable and that the maximum latency change more often. - The first empty buckets are not shown (i.e. buckets empty for all tasks) - If more than 15 buckets are non empty, then the buckets are combined, so that a maximum of 15 (bigger) buckets are shown - If less than 15 buckets are non empty, the following (empty) buckets are shown (this avoid seeing every x seconds some columns being added and removed). Change-Id: I27fe6ac0e513a5558e42ff2e74255c55ba79516d Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-01-29Added support for DPDK 19.08Xavier Simonart7-12/+61
Change-Id: I090bf8f1cd5a5d2dfa4f336bc66c46cc03d6c5bb Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-01-29Prepare for DPDK 19.08 supportXavier Simonart63-571/+609
This commit prepares PROX for supporting changes from DPDK 19.08 Mainly, the "sed" listed below were run. In addition, - some forward definition have been removed, - prox_compat.h has been updated - prox_compat.h has been included where necessary. Hence such a commit is rather easy to review and to reapply on other branches if necessary. sed -i 's/struct ether_hdr/prox_rte_ether_hdr/g' *.h sed -i 's/struct ether_hdr/prox_rte_ether_hdr/g' *.c sed -i 's/struct ether_addr/prox_rte_ether_addr/g' *.c sed -i 's/struct ether_addr/prox_rte_ether_addr/g' *.h sed -i 's/prox_rte_ether_addr_port/struct ether_addr_port/g' *.c sed -i 's/prox_rte_ether_addr_port/struct ether_addr_port/g' *.h sed -i 's/struct vlan_hdr/prox_rte_vlan_hdr/g' *.c sed -i 's/struct vlan_hdr/prox_rte_vlan_hdr/g' *.h sed -i 's/struct ipv4_hdr/prox_rte_ipv4_hdr/g' *.h sed -i 's/struct ipv4_hdr/prox_rte_ipv4_hdr/g' *.c sed -i 's/struct ipv6_hdr/prox_rte_ipv6_hdr/g' *.c sed -i 's/struct ipv6_hdr/prox_rte_ipv6_hdr/g' *.h sed -i 's/struct udp_hdr/prox_rte_udp_hdr/g' *.c sed -i 's/struct udp_hdr/prox_rte_udp_hdr/g' *.h sed -i 's/struct tcp_hdr/prox_rte_tcp_hdr/g' *.c sed -i 's/struct tcp_hdr/prox_rte_tcp_hdr/g' *.h sed -i 's/struct prox_rte_ether_addr_copy/ether_addr_copy/g' *.c sed -i 's/struct prox_rte_ether_addr_copy/ether_addr_copy/g' *.h sed -i 's/struct prox_rte_ether_addr_copy/prox_rte_ether_addr_copy/g' *.c sed -i 's/struct prox_rte_ether_addr_copy/ether_addr_copy/g' *.h sed -i 's/prox_rte_ether_addr_copy/ether_addr_copy/g' *.h sed -i 's/prox_rte_ether_addr_copy/ether_addr_copy/g' *.c sed -i 's/ether_addr_copy/prox_rte_ether_addr_copy/g' *.c sed -i 's/ether_addr_copy/prox_rte_ether_addr_copy/g' *.h sed -i 's/prox_rte_ether_hdr_arp/struct ether_hdr_arp/g' *.h sed -i 's/prox_rte_ether_hdr_arp/struct ether_hdr_arp/g' *.c sed -i 's/struct vxlan_gpe_hdr/prox_rte_vxlan_gpe_hdr/g' *.h sed -i 's/struct vxlan_gpe_hdr/prox_rte_vxlan_gpe_hdr/g' *.c sed -i 's/eth_random_addr/prox_rte_eth_random_addr/g' *.c sed -i 's/eth_random_addr/prox_rte_eth_random_addr/g' *.h sed -i 's/ETHER_CRC_LEN/PROX_RTE_ETHER_CRC_LEN/g' *.c sed -i 's/ETHER_CRC_LEN/PROX_RTE_ETHER_CRC_LEN/g' *.h sed -i 's/ETHER_HDR_LEN/PROX_RTE_ETHER_HDR_LEN/g' *.c sed -i 's/ETHER_HDR_LEN/PROX_RTE_ETHER_HDR_LEN/g' *.h sed -i 's/ETHER_MAX_LEN/PROX_RTE_ETHER_MAX_LEN/g' *.c sed -i 's/ETHER_MAX_LEN/PROX_RTE_ETHER_MAX_LEN/g' *.h sed -i 's/ETHER_MIN_LEN/PROX_RTE_ETHER_MIN_LEN/g' *.c sed -i 's/ETHER_MIN_LEN/PROX_RTE_ETHER_MIN_LEN/g' *.h sed -i 's/TCP_SYN_FLAG/PROX_RTE_TCP_SYN_FLAG/g' *.c sed -i 's/TCP_RST_FLAG/PROX_RTE_TCP_RST_FLAG/g' *.c sed -i 's/TCP_FIN_FLAG/PROX_RTE_TCP_FIN_FLAG/g' *.c sed -i 's/TCP_ACK_FLAG/PROX_RTE_TCP_ACK_FLAG/g' *.c Change-Id: I4dfe8be68e618c94dcaae28754579fbeb571bb00 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2020-01-27Code review feedback & back-ground traffic supportLuc Provoost1-117/+162
Various code review comments taken into account. We also support now background traffic, meaning the scripts will start a test between machines and monitor packet loss, latency, etc., but at the same time, the script will also start traffic on background machines. That traffic will not be monitored. Each generator will generate the same ammoung of traffic. Change-Id: I5cd495be230a526f91de965f3d4dd0581681f5ca Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2020-01-23Fix run_iteration when not using the sut_sockLuc Provoost4-9/+33
When no sut_sock monitoring the swap, the while loop would never come to an end. Also added heartbeat timeout in the generator config files. Change-Id: I3c36991c65b9b826faf3d051a1354ca7eb34c24e Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2020-01-17Specify latency bucket size & correct calculationLuc Provoost4-20/+61
A new parameter bucket_size_exp in the *.test file specifies the bucket size for latency measurement. The default is 11 which corresponds to a bucket size of 1 usec for a 2GHz processor. This fix is also calculating the bucket size based on the reported frequency. Before it was assuming a 2GHz processor. Change-Id: I70d15e90e151a7e474cd05c9ac91b71a11fd5c78 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2020-01-13Initial support for percentile latency measurementsLuc Provoost3-38/+130
We are now reporting a percentile number for the round-trip latency. The numbers are only correct for processors running at 2GHz. Will fix this next so it runs for any freqency. We only report 1-127 usec. If the latency goes higher, we are now reporting "VERY HIGH". Change-Id: If9fda63cea8616febcc0f24dc52590976cf39f3d Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2020-01-08Combine code for fixed rate and variable rate testsLuc Provoost2-241/+251
Previously, there were 2 functions: run_flow_size_test and run_fixed_rate. The functionality of run_fixed_rate is now added to run_flow_size_test. Change-Id: Ifda70b8088b9131cc6c034d8007825e6d0917682 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2019-12-31Better Latency accuray warning messageLuc Provoost1-9/+9
The lacency accuracy warning is now given only taking into account packets that were not dropped. Also fixed an error with the value of r in the run_iteration function Change-Id: Ic05fd2e4b8c59a4b7bcc131e981c08e0001436a6 Signed-off-by: Luc Provoos <luc.provoost@intel.com>
2019-12-30Support for ETSI GS NFV-TST 009Luc Provoost3-101/+249
New test added TST009_Throughput.test allowing to run the throughput benchmark as defined in ETSI GS NFV-TST 009. This change adds the binary search algorithm as defined in the specification document. Change-Id: I00e81a811a9c42b06136694fc1387bc59e954a28 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2019-12-02Remove UUIDs in centos.jsonLuc Provoost2-13/+12
Removed the remaining UUIDs from the centos.json file, making it easier to reuse this file. This does require a recent version of the packer tool. Updated the README accordingly and also added the --env option in the packer alias, so that the OS_CLOUD variable is set when running packer in the container. Updated rapid.vms with the security group name used in the centos.json file. Change-Id: I4f6815a3250811e336c14857e0ec5e7793a77acf Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2019-12-02Fix mempool size for swap.cfgLuc Provoost2-2/+2
Fixing an error re-introduced in the swap.cfg file. The mempool size needs to be bigger than the number of rx and tx descriptors (we need some extra buffers in the mempool for other things than rx and tx descriptors). The default number of tx and rx descriptors has been changed in PROX to 2K. This initially went through the testing since this is just giving a warning in the prox.log file for some PMDs. For other PMDs, PROX will not start. Also fixed an inconsistency in rapid.vms: name of the security group. Change-Id: If95677bd6169a16da1b3b2a56d13936a854c385e Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2019-11-26rapid november release combining changesLuc Provoost23-316/+473
-Renamed monitorswap.test into corestats.test. This is a more generic test case that can monitor the core statistics of all PROX instances -New portstats.test which can monitor the port statistics of all PROX instances -Removed the tasks parameter in the [DEFAULT] section of the *.test files. Runrapid.py is now scaning the PROX configuration files to automatically detect the PROX tasks that are being used. -There is now an option to add the PushGateway parameter in the [Default] section of some *.test files. This will push the measurements to the Gateway, so they can be used by tools like Grafana. The logging of the data in a csv file has also been improved. Results can now be found on the screen, in the RUN*.log files, in the *.csv files and are being pushed to the PushGateway. -In the *.test files, replaced the swapcores, irqcores and impaircores by the cores parameter since they are not treated differently by the code. For a generator, we are still using the gencores and latcores parameters since we need to treat them differently in runrapid.py -devbind.sh is removed from the repository since this file is now created by runrapid.py -renamed the rapidVMs.vms file into rapid.vms -image is now built without ssh access for root. Only using centos user. runrapid.py is now using centos user for ssh sessions. PROX tools are strted using sudo -using new DPDK, mb_lib and PROX versions as defined in deploycentostools.sh -installing missing yum-utils package in image -added flowsize parameter to the impairtest -added list of flowsizes to the fixed_rate testing (l3framerate.test) -the irqtest can now loop through multiple Test Machines in stead of only checking the irq of one. Note that we should have the same cores parameter for all Test machines -changes in prox_ctrl.py to support setting the speed of a generator on a combination of mulitple cores and tasks. Also added the multi_port_stats function to support the new portstats.test -Updated version to 19.11.21 -Fixed some power of 2 in the flow table Change-Id: Ia14543bf3195a2b1bd4184b455da6940f1777fc9 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2019-11-25Update RAPID readme about packer detailsIllia Polliul2-8/+34
Change-Id: Ieff72073fff06818a5c5bc8fb9116461c95c2901 Signed-off-by: Illia Polliul <ipolliul@juniper.net>
2019-10-23Added support for DPDK 19.05 / IPSecXavier Simonart3-28/+52
Note that since 6073b359 (April 2018) IPsec PROX support requires at least DPDK 17.11. Hence README has been updated. Change-Id: I34b7a968c16db5c3a3fc7bb6af111fdb49ad6b91 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2019-10-21Fix two strncpy issues introduced by fb0c44a8Xavier Simonart2-2/+2
Change-Id: Ic452b22dc2522a1b49e3091cb25f2784bc505b41 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2019-10-17Update PROX version to (preprod) 1905 to reflect DPDK 19.05 supportXavier Simonart2-3/+3
Change-Id: I7ae7d9f2f5f3058df032062e0b2f6e3207086930 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2019-10-17Merge "Increase the default number of rx and tx descriptors to 2K"Xavier Simonart12-17/+38
2019-10-17Fix support for old DPDK (such as 16.04)Xavier Simonart1-0/+6
When support for DPDK 18.05 was added it prevented supporting some much older DPDK such as 16.04. This has been fixed. Change-Id: Idd7ddd7e485c54c41def0540b8c126c097a05941 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2019-10-13Increase the default number of rx and tx descriptors to 2KXavier Simonart12-17/+38
A high number of RX descriptor can be helpful in avoiding packet loss due to the core being interrupted. This commit increases the default number of descriptors from 256 to 2K. Those values are checked versus the minimum and maximum supported by the pmd. Number of mbufs (mempool size) have been updated n config files to support this default number of dsescriptors. The number of descriptors can still be overwritten by the config file. However those values must always remain within the limits reported by the pmd. Change-Id: I5f7999eca886dad68f3c0733da0d796bf4c06a56 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2019-10-13Disable TX checksum offload in some virtio casesXavier Simonart1-0/+7
Some OVS versions reports that they support UDP offload and no IPv4 offload, but fails when UDP offload is enabled. Hence, now, when virtio reports that it supports UDP checksum and no IPV4 checksum offload, we disable UDP checksum offload. Change-Id: I4f22f6be4d97b0aedf267ebeaa498c0dacef3317 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2019-10-11Merge "Fix generation through pcap file"Xavier Simonart4-25/+26
2019-10-11Fix generation through pcap fileXavier Simonart4-25/+26
- When using "pcap file" argument in PROX config file in the gen mode (and no submode), packets were truncated to 8 bytes (and a warning printed) This has been fixed. - "Set value" command was checking whether offset was within first 1518 bytes unrespective to the mtu (e.g. jumbo packets). This has been fixed. - There was a limit of 64K packets loaded from a pcap file (which could be overwritten through PROX config). This limit has been removed - by default all packets from pcap are loaded - When pcap was loaded, memory was allocated to store the packet. However just enough memory was allocated, so that there was no way to change (increase) packet size through command line after that. Now memory is allocated to store up to mtu size - While "set value" command was acting on all packets, "pkt size" command was only changing the first packet. This has now been changed and both commands change all the packets. - A few other minor cleanups. Change-Id: I7264cee8d57e3e6a405dfd7e7a52a95b99399d99 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2019-10-11Fix port throughput related statistics for i40e virtual functionsXavier Simonart1-3/+3
When CRC stripping is enabled (default PROX behavior), the number of rx bytes received by the NIC returned by DPDK usually does not take the CRC 4 bytes into account. However, for i40e virtual functions those 4 bytes are counted as part of the received bytes. This resulted in both DPDK and PROX taking those 4 bytes into account causing the RX % to be above 100%. Change-Id: I59883b638ed67a6778f80c4dd6bfbfc4f9f2f528 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2019-10-10Update PROX to CRC STRIP default bahavior change in DPDKXavier Simonart6-3/+60
Change-Id: I7c3e2981692d823c86787b77d61190327d6448e4 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2019-10-09Fix strncpy issue introduced by fb0c44a8Xavier Simonart1-1/+4
Change-Id: I833d753bd5c426d50c0c9fdee5668f3b9fff13b9 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2019-10-09Add support for igmp and multicastXavier Simonart15-70/+543
Multicast can be enabled through configuration or through command line - Through configuration Add multicast=mcast_address (e.g. multicast=01:00:5e:01:02:03) in the port section - Through command line run enable multicast port_id mcast_address (e.g. enable multicast 1 01:00:5e:01:02:03) IGMP join message is sent unsollicited through command line: join igmp core_id task_id ip (e.g. join igmp 1 0 224.1.1.3) To enable swap answering IGMP Query (w/ IGMP Join) - Through configuration Add igmp ipv4=ip_address within the core/task section - Through command line join igmp core_id task_id ip (e.g. join igmp 1 0 224.1.1.3) (this will 1st initiate an unsollicated join, then answer any subsequent query) UDP/TCP packets received on a multicast address (224.0.0.0 => 239.255.255.255) are discarded To stop sending responses to IGMP query: leave igmp core_id task_id Change-Id: I3808ccabf3b38b5a1e10e1b044db63aa05bcd7b5 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>