[ovs-dev] Use more than 200000 flows in datapath/kernel cache flows

William Tu u9012063 at gmail.com
Thu Oct 31 18:10:42 UTC 2019


On Wed, Oct 30, 2019 at 10:16:58AM -0700, Ben Pfaff wrote:
> On Mon, Oct 28, 2019 at 09:39:55PM -0700, Zhiwei Cen wrote:
> > It seems I can change the limit for Openflow flows.
> > This works:
> > $ovs-vsctl --no-wait set Open_vSwitch . other_config:flow-limit=200001
> > 
> > $ovs-vsctl --no-wait get Open_vSwitch . other_config:flow-limit
> > "200001"
> 
> That sets the kernel (datapath) flow limit.
Hi Zhiwei,

Looking at the source code, OVS seems to limit the flow number to
max 200,000. Setting flow-limit larger than 200,000 will be capped
to 200,000.

At udpif_revalidator, 
       flow_limit = MIN(ofproto_flow_limit, MAX(flow_limit, 1000));

and ofproto_flow_limit is 200,000
user can set 'flow_limit' to any value, but in the end
flow_limit is between 1000 to 200,000

If you want to experiment, try increase it to 400,000

diff --git a/ofproto/ofproto.h b/ofproto/ofproto.h
index 033c4cf93e94..ed0d3475cad2 100644
--- a/ofproto/ofproto.h
+++ b/ofproto/ofproto.h
@@ -307,7 +307,7 @@ int ofproto_port_dump_done(struct ofproto_port_dump *);
           : (ofproto_port_dump_done(DUMP), false));         \
         )
 
-#define OFPROTO_FLOW_LIMIT_DEFAULT 200000
+#define OFPROTO_FLOW_LIMIT_DEFAULT 400000
 #define OFPROTO_MAX_IDLE_DEFAULT 10000 /* ms */
 #define OFPROTO_MAX_REVALIDATOR_DEFAULT 500 /* ms */
 #define OFPROTO_MIN_REVALIDATE_PPS_DEFAULT 5

and 
boxes:~/ovs# ovs-appctl upcall/set-flow-limit 300000
set flow_limit to 300000

boxes:~/ovs# ovs-appctl upcall/show
get flow_limit from 0x938ce0
netdev at ovs-netdev:
  flows         : (current 4) (avg 4) (max 11) (limit 300000)


Regards,
William


More information about the dev mailing list