summaryrefslogtreecommitdiffstats
path: root/VNFs/DPPD-PROX
AgeCommit message (Collapse)AuthorFilesLines
2018-12-13Fix arp handling when master core is on socket 1Xavier Simonart1-1/+1
When master core was on socket 1, the rings setup to exchange messages related to arp between dataplane cores and master core was not properly setup, resulting in arp not working. Change-Id: Icc08df81f2e39e53de7c212248cdc7b78d7e2618 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-12-13Add support for zero packet loss in PROX L3 mode.Xavier Simonart3-24/+109
In L3 mode, prox is extracting IP destination address in the packets. It uses this destination address to find the MAC address. If the MAC address is not found, it sends a ARP request. It also sends ARP request when it realizes that some timeout expired. However, PROX was using the mbuf of the existing packets (to be forwarded) to send the ARP. This resulted in packet loss. Now PROX is generating ARP requests using mbuf from an ARP mempool. Some clean up was also done. Change-Id: Icb6083a8cdf88789553ad23c32ca12d6b7ba7f08 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-12-13Fix issue in l3 mode when no arp reply was receivedXavier Simonart1-7/+26
When no arp reply was received in l3 mode, the requesting core continuously sends ARP requests every seconds (which is correct). But master core was keeping a list of all requests, while all those requests are the same, resulting in potential table overflow. Change-Id: I13aa1ec4ea88404a690a25678fb6ec72df19a9b9 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-12-13Clean up debugging messagesXavier Simonart6-15/+16
Print IP address in a.b.c.d format instead of one 32-bit number. Better align debugging information in log file Change-Id: Icfab30836ba83d53f700fcfbdfbd7cf238ed7bf8 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-12-06Merge "Fix potential crash when getting device info"Deepak S1-10/+12
2018-12-05Add support for VLAN insert and strippingXavier Simonart2-0/+19
JIRA: SAMPLEVNF-149 VLAN can be enabled on a port by adding "vlan=yes" in the port section. When VLAN is enabled on a port, then DEV_RX_OFFLOAD_VLAN_STRIP and DEV_TX_OFFLOAD_VLAN_INSERT are enabled (if device supports it). This will cause VLAN to be stripped from any packets received with the proper tag, and VLAN to be added for any packets being transmitted. The VLAN ID themselves are configured through the physical function using something like (where ens801f1 isthe PF): ip link set ens801f1 vf 0 vlan 1111 Change-Id: I945c87b0c18565da479ecaa08e5ffce91232a7ce Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-11-04Fix potential crash when getting device infoXavier Simonart1-10/+12
In some cases, like when using virtual functions, getting device info return a NULL device, which was potentially causing a crash. Change-Id: Icc65f35bb54cd7d9bd8d837b3d6ec7ebb48b7c5e Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-10-31Merge "Add support for counting non dataplane related packets"Deepak S8-5/+114
2018-10-31Merge "Fix potential crash when shuffling mbufs"Deepak S1-2/+3
2018-10-31Support for DPDK 18.05 and DPDK 18.08Xavier Simonart22-109/+456
Improve DPDK 18.05 support introduced by 3e532aca. Support for DPDK 18.08. Change-Id: Ide712ee94254b506a0ad88c95a7e01b789f99d48 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-10-30Fix potential crash when shuffling mbufsXavier Simonart1-2/+3
Change-Id: I70de6345afc6a696906f006c1b0f44540ae4ecec Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-10-28Add support for counting non dataplane related packetsXavier Simonart8-5/+114
When performing some zero packet loss performance testing on dataplane, it is important (not) to count non dataplane packets. For instance, one might receive uexpected packets from a switch, or ARP packets. Or one might need to transmit ARP packets. Such packets should not be counted as dataplane packets as for thse packets there is no 1:1 mapping between transmitted packets and received packets. To support this, the counters reporting numbers of transmitted and received packets remain unchanged but two new counters have been added to PROX, counting respectively number of received and number of transmitted non-dataplane packets. On RX side, packets are counsidered as non-dataplane if being ARP or if they do not countain the proper signature On TX side, ARP packets are not considered as dataplane packets. This feature requires configuration of signature. "dp core stats" command has been added Change-Id: I98e113cd02f36d540383d343a433592867ad86a9 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-10-11test improvements and fixes for image creationLuc Provoost13-69/+150
Updated and corrected the creation of an image containing the PROX tool with packer. Test will now only be declared successful when average and maximum latency are below a certain threshold. The start speed is now also a parameter of the *.test files. Change-Id: I1112555c87e7a857e1c699921ae08f61281642e1 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2018-09-14Improve l3fwd performanceXavier Simonart1-9/+3
JIRA: SAMPLEVNF-128 Improve performance of l3fwd use-case. L3fwd did not disable TX offload flags, which resulted in non-vector mode to be used in pmd in some cases like bare-metal. Note that in some cases such as virtio, vector mode was already used as OVS reports that it does not support TX-offload, hence TX-offload was already disabled on virtio. Using vector mode usually brings higher performance. Change-Id: I102b846d604a9cf28c6b7dae8bedbe918ccfcf6c Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-09-04Workaround DPDK net/virtio queue setup issuePatrice Buriez1-14/+14
JIRA: SAMPLEVNF-127 PROX was crashing in the VM with vector mode enabled and multiple OVS queues. This was not really a PROX bug, but a DPDK issue, which has been fixed by DPDK commit https://git.dpdk.org/dpdk/commit/?id=efc83a1e7fc3 This "net/virtio: fix queue setup consistency" is included in DPDK 17.11 and subsequent versions, and has been backported into: - DPDK 16.11.4: https://git.dpdk.org/dpdk-stable/commit/?h=16.11&id=516447a5056c - DPDK 17.08.1: https://git.dpdk.org/dpdk-stable/commit/?h=17.08&id=907fe4fc263e This means the fix is not included into any DPDK 17.02.x used by NSB. Fortunately, a simple workaround consists of calling rte_eth_tx_queue_setup() before rte_eth_rx_queue_setup(). This change implements this simple workaround, in order to make PROX work, even with unfixed DPDK versions. Change-Id: I818e9bb812babe023c6b7225c8b9769a359d9bec Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
2018-07-27Merge "Initial support for DPDK 18.05"Deepak S5-8/+42
2018-07-26Initial support for DPDK 18.05Xavier Simonart5-8/+42
This patch makes PROX compile with DPDK 18.05. However some features are disabled or will not work as expected such as: "mem info" command "police" mode Those will need to be fixed later (see DPDK1805 within code). Change-Id: Ie7d72f6ab3db68bc093c42d60d125fe86f8fbda7 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com> Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
2018-07-07Fix potential crash with latency accuracyPatrice Buriez1-45/+73
Detect, remember and skip bad/unexpected packets: - too short to hold the latency-related values - with bad signature - with invalid generator_id using a uint64_t-based bitmap. Also moved variable declarations closer to usage, added some likely/unlikely hints, reworked some return statements, and fixed 32-bit overflow (every ~4s) of rx_time_err computation. Change-Id: Ib2aadc1af6b7a68601cc080ba66b10d41ff9a64e Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
2018-06-17Adding centos.json to be used with packer to generate a VM with PROXLuc Provoost16-84/+328
Based on a CentOS cloud image downloadable from the web, you can now use packer to create an image that has DPDK and PROX installed in the proper directories. The VM is also tuned for guest VNFs. A service is also created to deal with the proper isolated_cpu settings for tuned. The service will also make sure uio and igb_uio are loaded. The prox_user_data.sh is not needed any more and hence deleted. ctrl-c of runrapid.py will now also stop prox in all the VMs so a new test can be started. Change-Id: I16cc59878e2d4912757f42e05f98d51dff5feb89 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2018-06-07Get multiple port stats simultaneouslyPatrice Buriez1-0/+44
JIRA: YARDSTICK-1220 Implemented new "multi port stats <port list>" command, which returns a semi-colon-separated list of comma-separated values: - port id - total (at last_tsc) for rx_pkts, tx_pkts, no_mbufs, ierrors + imissed - last_tsc Change-Id: I8a8da79cb4ccb245ccb38b50b561da51a40a359d Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
2018-05-25Increase default mbuf size and code simplification/cleanupXavier Simonart18-98/+126
mbuf size was setup to achieve the best performance i.e. using the smallest mbuf and not segmenting packets. However this resulted in complex code, much dependent of the way the pmd are working e.g. a change(fix) in recent dpdk i40e implementation caused a 1782 (=1518+8+256) bytes mbuf to be too small to hold a 1518 bytes packets. Hence this change simplifies the mbuf size selection at the price of a potential decreases in performance - as more memory is now used. Except if jumbo frames are used, the mbuf size will now be the same for all modes. The packets will not be segmented except if jumbo frames are enabled. If jumbo frames are enabled, packets are by default segmented, except if the mbuf size is configured big enough in the config file. Change-Id: I222fcac7a65c0d221d5d422f419deb9c0f864172 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com> Signed-off-by: Deepak S <deepak.s@linux.intel.com>
2018-05-15fix code standard in VNFs/DPPD-PROX/handle_esp.cIgor Shaula1-447/+443
Change-Id: I6c1a8f6d8e3bc84f7eb8e5780cde98dd9c03c805 Signed-off-by: Igor Shaula <igor.shaula@intel.com>
2018-04-26Merge "Fix crc offloads."Deepak S2-8/+8
2018-04-26Merge "Add support for multiple variables in core definition"Deepak S1-3/+4
2018-04-26Merge "Fix memory leak introduced by 4a65cd84"Deepak S1-1/+4
2018-04-26Merge "Support for dpdk-stable-17.11.1 crypto"Deepak S2-314/+312
2018-04-26Merge "Add support for generation of jumbo frames"Deepak S1-21/+59
2018-04-26Fix crc offloads.Xavier Simonart2-8/+8
When configuring a port, prox configures queue flags. For historitical reasons, offloads had to be disabled on some pmds. There is now an API to query the ports and gets their capabilities. This fix sets now the flags based on the capabilities, and not the driver name. Change-Id: Ic72d15001992f26910f653c70d31e4381fff8089 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-04-26Support reading inline jumbo frame and dump themXavier Simonart6-8/+11
Add support for pkt_inline of jumbo frames. Dump the whole packet, and not a truncated packet. This might have a small impact on performance as the memory footprint is increased (by ~640K * number of tasks), resulting in potential higher DTLB misses. Change-Id: I4ed02be7ca899db4f8f97355c180a92d69d39d8f Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-04-26Add support for generation of jumbo framesXavier Simonart1-21/+59
Change-Id: I63af4e5c5c01a4412d517e33fc7111481fd0524a Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-04-24Support for dpdk-stable-17.11.1 cryptoIgor Shaula2-314/+312
Change-Id: I1a4aee3d550d007046be9d1677dd0ad980cb9817 Signed-off-by: Igor Shaula <igor.shaula@intel.com>
2018-04-23Fix memory leak introduced by 4a65cd84Xavier Simonart1-1/+4
Change-Id: I937bb38baa51d1902793fa8720a3ea740a583473 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-04-23Add support for multiple variables in core definitionXavier Simonart1-3/+4
In the [core] definition we were able to use one variable such as $core1 in [core $core1] but not [core ${core1}]. The second syntax is used when we want multiple variables such as in [core ${first_core}-${last_core}]. This second syntax is now supported. Change-Id: Ic94b84cb8cf827acb6697789cd180f41c3bdb028 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-04-20Merge "Add support for reception of jumbo frames"Deepak S3-39/+81
2018-04-20Merge "Support async operation in handle_esp"Deepak S1-35/+102
2018-04-17Fix link speed when link is down at startup.Xavier Simonart2-8/+40
When link is down at startup, the link_speed returned by DPDK is 0. This results in un-optimized latency estimates in gen and lat. With this fix, lat and gen do nothing until link_speed is properly initialized, and use the right link speed in the fast path. Change-Id: Id2d14b6966ccfac7cc78db3c5a74e704b42edae7 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-04-16Support async operation in handle_espXavier Simonart1-35/+102
Change-Id: Ibee77e31c0eb7a0e14e7aa0df092a278dfe75d6b Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-04-15Add support for reception of jumbo framesXavier Simonart3-39/+81
Jumbo frames are now supported through the addition of a "mtu" parameter of the port in the config file. Setting the mtu to a value higher than 1500 bytes will enable the reception of jumbo frames. In addition, the rte_eth_dev_set_mtu is now set for all pmds. Finally, setting mbuf_size does not set MEMPOOL_F_NO_SPREAD anymore. This option was only used for pure debugging. Big packets can be received using two ways - Using multiple "small" mbufs, i.e. around 2K. This is the default. - Using one big mbuf holding the whole packet. This can be enabled by setting a parameter mbuf_size in the receiving core configuration Change-Id: Idd60ad31f41c89f9522dff4d894af2696b7a2ea1 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-04-06Merge "Added missing file: rapidVMs.vms"Deepak S1-0/+31
2018-04-06Merge "Add support for multiple GEN tasks running on the same core"Deepak S1-1/+1
2018-04-06Merge "Add support for crypto on multiple cores"Deepak S1-17/+95
2018-04-03Added missing file: rapidVMs.vmsLuc Provoost1-0/+31
This file describes flavors, flavor meta data and boot info. All this info can be defined in the [Default] section and will then be used by to create all VMs. This data can also be specified in individual VM sections to overule the deault values per VM. Change-Id: I9d59208360eacec2790e5c467d7afcbeba301251 Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2018-03-30Support additional MAC format in config fileIgor Shaula1-0/+2
Add support for space-divided bytes in MAC string. Support the same format as in "pkt inline". Change-Id: I7f2136c4424c45ce4abad4082470c9c9b1b3ab05 Signed-off-by: Igor Shaula <igor.shaula@intel.com>
2018-03-30Add support for multiple GEN tasks running on the same coreIgor Shaula1-1/+1
resolve memory allocation issue Change-Id: I90bbf711a6a7a4869e5024c061470d9779839a60 Signed-off-by: Igor Shaula <igor.shaula@intel.com>
2018-03-30Add support for crypto on multiple coresIgor Shaula1-17/+95
* Experimental, for dpdk-stable-17.05.2 * New improved ESP decapsulation function Change-Id: If4862dacb3fcf53e21eb5932a195664f80c7c192 Signed-off-by: Igor Shaula <igor.shaula@intel.com>
2018-03-27Replaced heat stack yaml files by individual server creationLuc Provoost14-928/+188
There is now a new file (rapidVMs.vms) describing how many VMs need to be created. You can specify the same flavor values in the [DEFAULT] section or specify specific flavors per VM. The heat stack yaml files are removed. Change-Id: Ic5ec485e8344a35e9ac9f6e8347adbc70520d10a Signed-off-by: Luc Provoost <luc.provoost@intel.com>
2018-03-23Trivial: fix trailing white-spacesPatrice Buriez1-2/+2
Makefile checks for some coding style rules. Previous commit introduced trailing white-spaces, which broke compilation. Change-Id: Ia57fc9b1428b4a9f8537dce4875e62ac55265fe3 Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
2018-03-16Merge "Fix potential crash if link speed is null"Deepak S2-2/+2
2018-03-05Fix minimum latencyXavier Simonart1-5/+11
Revert back part of commit 9fa316261d7d9 The function abs_diff was erroneously changed to diff_or_zero. This function was supposed to measure the difference between rx and tx time; when rx time overflowed and tx time not yet (i.e. rx time ~= 0 and tx_time ~=UINT32_MAX, this function added UINT32_MAX to rx_time. The name of the function was confusing and caused the previous commit. Net effect of previous commit was that every four seconds the minimum latency was 0 This commit reverse back to the original behavior, with a function name diff_time. Change-Id: Ia1b80e48a756cf5df411dcf58ca1cbc835214d13 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
2018-02-27Fix potential crash if link speed is nullXavier Simonart2-2/+2
Link_speed could be null when prox started with the ports down. This was potentially causing a crash. Another task will need to update link speed when the port come up. Failing to do this results in less accurate latencies (no extrapolation) Change-Id: I597b68e30117e6edb9ccb4732c2acedd5eb8ac80 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>