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