Hi

I am trying to understand DPDK cache architecture for pmd threads. There are 
three hash tables (flow_cache, cls and flow_table) in the dp_netdev_pmd_thread 
structure. First, dp_netdev_input() calls emc_processing() and it tries to 
match the packet in flow_cache for the related pmd thread. If it's 
unsuccessful, it performs a classifier lookup using dpcls_lookup() for cls in 
fast_path_processing(). If still unsuccessful, it executes an upcall using 
dp_netdev_upcall().

Now the cache issues are not clear for me.

1) Are flow_cache, cls and flow_table in the real CPU caches like L1, L2 etc?
2) flow_cache does not have wildcarding, does it only depends on exact match? 
3) Does cls have wildcarding? If not, why we use mask while inserting? in the 
line: dpcls_insert(&pmd->cls, &flow->cr, &mask)
4) What is the difference between cls and flow_table?

Thanks in advance

- Volkan
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to