Re: [opencontrail-dev] Elastic Flow Distributor

2017-04-14 Thread Deepak Tiwari
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


[opencontrail-dev] Elastic Flow Distributor

2017-04-13 Thread CARVER, PAUL
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.

___
Dev mailing list
Dev@lists.opencontrail.org
http://lists.opencontrail.org/mailman/listinfo/dev_lists.opencontrail.org