[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:
>> 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
>> 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