Hashing the DPDK way!!
Hashing is an important aspect when you need fast-lookups.
Fast lookups are inheritently important when you need fast packet performance.
Just to give you a metric
1Gbps throughput for 64byte pkt requires 1,488,095 pps(packets per sec).aka 1,488,095 lookups/sec
A std latest linux kernel would give you 153840 pps for 64byte pkt.
So more than 10x performance hike needs a very fast-lookup.
Time taken to do a lookup depends highly on lookup table size.
Networking gears are asic based with firmware designed and optimised for veryfast lookup,Hence very fastlookups.
When General purpose computing is used to implement telecom solutions, Hashing is a tradeoff.
Larger the hash table slower is the lookup, this is where a proper design is required.
Design aspects include.
- Hash key.
- Hashing algorithm.
- Bucket size.
- Hash function.
Usecase for DPDK -hashing :So where do we use hashing in genral purpose computing?
1.OPenVswitch!! Our OVS datapath implementation requires matching a ingress pkt to
2.Data-Plane for LTE, 5G requires very fast lookups to map pdcp, and gtpu headers.
- Sample Application Like L3 Lookup
What is Hash key?
What is Hash algorithm
What is Bucket-size
What is Cuckoo Hash? and Why!
Design your DPDK Hashing Application.
1.Hash table size <32k>
3.Hash KEY<> //Need C structure, else default struct will be used.
4.Hash Node <> // Need C struct
6.Cmd line arguments for application