[ovs-dev] Why save a flow structure in dp_netdev_key?

贺鹏 xnhp0320 at gmail.com
Fri Jul 9 16:01:25 UTC 2021


Hi,

I am investigating the code of revalidator and the DPDK netdev
datapath for OVS.
I have some questions:

1) why save a whole flow in the dp_nedev_key? Currently, the size of
flow is around 670 bytes, and the full size of dp_netdev_key is around
1500 (meaning that this flow takes 50% of the full dp_netdev_key
size). This large size makes the dataplane hash key a little bit
expensive for the hash lookup.

Meanwhile, I find that in fact, the revalidator only uses ufid to
index the dp_netdev_flow to the corresponding ukey in the udpif.
Nornally it will not touch the full flow structure in the
dp_netdev_key at all. The only exception is that when revaldiator
cannot find the ukey accroding to the ufid, it will instead try to use
the full flow dump and install ukey for the flow, this seems the only
usage of this flow structure.

This scenario seems purely for kernel datapath, since in DPDK, the pmd
and revalidator are just two kinds of threads, they share the same
fate, and thus it's not possible that a dp_netdev_flow exists while
the ukey does not, unless you manually insert a dp_netdev_flow in the
dataplane for testing and debuging.

thanks.


-- 
hepeng


More information about the dev mailing list