[ovs-discuss] OpenVSwitch flow forwarding

Masoud Moshref Javadi masood.moshref.j at gmail.com
Tue Feb 7 21:52:33 UTC 2012

Aha, so let's see if I understood their difference correctly.
OpenFlow tables are the ones that we can see using "ovs-ofctl 
dump-tables br0" and by default are 255 (set by ofproto_dpif) but the 
current ofproto_dpif just uses the first one. (I added a rule to the 
second table and it did not match the packet as handle_flow_miss method 
calls rule_dpif_lookup method with table_id=0 always).

On the other hand, tables inside classifier.c represent a unique set of 
wildcards bits (is the hash function really without conflict?). In the 
lookup process, for each table, the classifier zeros the wildcards bits 
for the flow and uses the hashmap to find the rule.

Now, the code makes sense to me.

Thank you for you clarification

On 2/7/2012 1:21 PM, Jesse Gross wrote:
> On Mon, Feb 6, 2012 at 9:25 PM, Masoud Moshref Javadi
> <masood.moshref.j at gmail.com>  wrote:
>> Thanks,
>> It seems that the bottleneck can be the lookup in these userspace when we
>> have lots of new flows.
>> My question is how many table we can have in the userspace?
> I think you're confusing OpenFlow tables with unique sets of
> wildcards.  The former has a limit but each one is not scanned on flow
> lookup.  The later depends on the wildcards in the flows that are
> written.
>> How many entry the kernel table can have?
> Like I said, it is primarily restricted by userspace.
>> Why did you use one table for each wildcards set, and not use tree based
>> data structures like R+ - trees?
> The number of bits that can be wildcarded is large but the number of
> unique sets of wildcards is usually small in practice.

More information about the discuss mailing list