[ovs-dev] Question: why ovs flush all datapath flows when destroying br/ofproto?

Lilijun (Jerry, Cloud Networking) jerry.lilijun at huawei.com
Fri May 18 03:04:33 UTC 2018


Hi all,

In my test, there are many VMs sending and receiving random flows using ovs. Per VM has one virtio-net NIC and connect to ovs bridge named such as br-plyXXX. These ovs bridges br-plyXXX are all connected to br-int using patch port.
All VM's traffic can generate about 200 thousand datapath flows. I found that all datapath flows were flushed when deleting one VM and it's own br-plyXXX. 
And the implementation is in the function  ofproto_destroy() calling ofproto_flush__(). The flush work will delete all datapath flows and recreate the upcall and revalidator threads.
As a result, other VM's all traffic will miss the datapath flows and make upcall to match in the slow path in upcall threads.  Their packet will be dropped or get worse latency.

So, why ovs flush all datapath flows when destroying br/ofproto?  Can we only flush the datapath flows related the destroying ofprotos?


B.R.
Jerry


More information about the dev mailing list