]> git.proxmox.com Git - mirror_ovs.git/commit - lib/ofp-actions.c
ofproto-dpif: Do not count resubmit to later tables against limit.
authorBen Pfaff <blp@ovn.org>
Thu, 21 Apr 2016 17:50:17 +0000 (10:50 -0700)
committerBen Pfaff <blp@ovn.org>
Mon, 9 May 2016 15:09:15 +0000 (08:09 -0700)
commit790c5d2694bb3ddc3927b2e3617157ba2b19dc39
treeb25bbeb9abd0eb8517b2c9709beaee1d68ae04a1
parent9a9b001a5831516bafddefd60d31bafb09548457
ofproto-dpif: Do not count resubmit to later tables against limit.

Open vSwitch must ensure that flow translation takes a finite amount of
time.  Until now it has implemented this by limiting the depth of
recursion.  The initial limit, in version 1.0.1, was no recursion at all,
and then over the years it has increased to 8 levels, then 16, then 32,
and 64 for the last few years.  Now reports are coming in that 64 levels
are inadequate for some OVN setups.  The natural inclination would be to
double the limit again to 128 levels.

This commit attempts another approach.  Instead of increasing the limit,
it reduces the class of resubmits that count against the limit.  Since the
goal for the depth limit is to prevent an infinite amount of work, it's
not necessary to count resubmits that can't lead to infinite work.  In
particular, a resubmit from a table numbered x to a table y > x cannot do
this, because any OpenFlow switch has a finite number of tables.  Because
in fact a resubmit (or goto_table) from one table to a later table is the
most common form of an OpenFlow pipeline, I suspect that this will greatly
alleviate the pressure to increase the depth limit.

Reported-by: Guru Shetty <guru@ovn.org>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Ryan Moats <rmoats@us.ibm.com>
lib/ofp-actions.c
ofproto/ofproto-dpif-xlate.c
ofproto/ofproto-dpif-xlate.h
ofproto/ofproto-dpif.c
ofproto/ofproto-dpif.h
tests/ofproto-dpif.at
utilities/ovs-ofctl.8.in