[ovs-dev] [RFC v2 5/5] ofproto-dpif-upcall: Add instant revalidation.

Joe Stringer joe at ovn.org
Wed Sep 21 01:54:45 UTC 2016


On 30 August 2016 at 18:47, Daniele Di Proietto <diproiettod at vmware.com> wrote:
> Sometimes the ofproto layer creates a flow which is not liked by the
> revalidation for various reasons.  This behavior, while not critical
> might impact the performance.  This commit adds a facility to detect
> this issue early and log a warning.
>
> The detection is done by revalidating a flow as soon as it is installed.
> Since this extra revalidation might be expensive it is disabled by
> default.  It can be enabled using the undocumented unixctl:
>
> `ovs-appctl upcall/instant-revalidation sample_rate`
>
> where 'sample_rate' is a number between 0 and 100, meaning the
> percentage of newly installed flows that are instantly revalidated.
>
> We explicitly enable the feature in the unit and system tests (except
> for three MPLS unit tests, which expose a problem that hasn't been fixed
> yet);
>
> Signed-off-by: Daniele Di Proietto <diproiettod at vmware.com>

This is great idea, and it's clearly showing itself to be useful for
finding real bugs.

I think that for the kernel datapath codepath, there's still cases
where the ukey exists in the upcall but wasn't installed -
(upcall->ukey && !upcall->ukey_persists). Is it intended to also run
in this case?

revalidate_ukey() is already kinda hard to track, and I feel like
adding an extra "instant_revalidation" bool complicates it further. I
took a stab at trying to refactor this code, which I hoped would allow
you to simplify your logic by just using the logic for translating a
ukey into a translated flow. I think the resulting revalidate_ukey__()
is pretty close to what you want here, but I would appreciate any
feedback on that:

http://openvswitch.org/pipermail/dev/2016-September/079778.html



More information about the dev mailing list