Hi Paul,
I tried to look into EFD featureas described on DPDK site. Following links provide a good overview of EFD library and its usage:- EFD Library overview http://dpdk.org/doc/guides/prog_guide/efd_lib.html#efd-library EFD Sample application: http://dpdk.org/doc/guides/sample_app_ug/server_node_efd.html >From above, in summary, EFD optimizes the flow distribution process by using >"perfect hashing" and not having to store the flow key. Lesser storage >requirement (than hash-based flow tables) makes the flow table more suitable >to fit into CPU cache improving performance. To quote from the DPDK >programmer's guide:- "EFD is a distributor library that uses perfect hashing to determine a target/value for a given incoming flow key. It has the following advantages: first, because it uses perfect hashing it does not store the key itself and hence lookup performance is not dependent on the key size. Second, the target/value can be any arbitrary value hence the system designer and/or operator can better optimize service rates and inter-cluster network traffic locating. Third, since the storage requirement is much smaller than a hash-based flow table (i.e. better fit for CPU cache), EFD can scale to millions of flow keys. Finally, with the current optimized library implementation, performance is fully scalable with any number of CPU cores" In Contrail-vrouter code, hash-based flow table has been used (utils/flow.c). vRouter as of now doesn't use DPDK hash-table APIs, rather it uses its own hash-implementation for flow table. So if we want to utilize EFD library for enhancing vrouter performance then the hash-based flow table and its associated wrapper functions would need to be rewritten as per EFD library APIs, i.e. - utils/flow.c - dp-core/vr_flow.c However, on a second thought, EFD uses perfect hashing which in my understanding can only be useful in load balancing use-case scenarios only. For flow-tables used for routing purposes, I am not sure if EFD could serve any purpose? Ref: https://github.com/Juniper/contrail-controller/wiki/Flow-processing https://github.com/Juniper/contrail-controller/wiki/Flow-Handling Br, Deepak ________________________________ From: Dev <dev-boun...@lists.opencontrail.org> on behalf of CARVER, PAUL <pc2...@att.com> Sent: Thursday, April 13, 2017 6:13:46 PM To: dev@lists.opencontrail.org Subject: [opencontrail-dev] Elastic Flow Distributor In DPDK 1702 Intel added support for Elastic Flow Distributor which might be able to boost Contrail vRouter performance. When Contrail upgrades from DPDK 2.1 to 1702 or later it would be worth looking at adding support. Has anyone looked at EFD? If not I can get some more information on it from some of my contacts. "DISCLAIMER: This message is proprietary to Aricent and is intended solely for the use of the individual to whom it is addressed. It may contain privileged or confidential information and should not be circulated or used for any purpose other than for what it is intended. If you have received this message in error, please notify the originator immediately. If you are not the intended recipient, you are notified that you are strictly prohibited from using, copying, altering, or disclosing the contents of this message. Aricent accepts no responsibility for loss or damage arising from the use of the information transmitted by this email including damage from virus."
_______________________________________________ Dev mailing list Dev@lists.opencontrail.org http://lists.opencontrail.org/mailman/listinfo/dev_lists.opencontrail.org