On Thu, Dec 05, 2013 at 04:27:26PM -0800, Jarno Rajahalme wrote: > Add a prefix tree (trie) structure for tracking the used address > space, enabling skipping classifier tables containing longer masks > than necessary for an address field value in a packet header being > classified. This enables less unwildcarding for datapath flows in > parts of the address space without host routes. > > Trie lookup is interwoven to the staged lookup, so that a trie is > searched only when the configured trie field becomes relevant > for the lookup. The trie lookup results are retained so that each > trie is checked at most once for each classifier lookup. > > This implementation tracks the number of rules at each address prefix > for the whole classifier. More aggressive table skipping would be > possible by maintaining lists of tables that have prefixes at the > lengths encountered on tree traversal, or by maintaining separate > tries for subsets of rules separated by metadata fields. > > Prefix tracking is configured via OVSDB. A new column "prefixes" is > added to the database table "Flow_Table". "prefixes" is a set of > string values listing the field names for which prefix lookup should > be used. > > As of now, the fields for which prefix lookup can be enabled are: > - tun_id, tun_src, tun_dst > - nw_src, nw_dst (or aliases ip_src and ip_dst) > - ipv6_src, ipv6_dst > > There is a maximum number of fields that can be enabled for any one > flow table. Currently this limit is 3. > > Examples: > > ovs-vsctl set Bridge br0 flow_tables:0=@N1 -- \ > --id=@N1 create Flow_Table name=table0 > ovs-vsctl set Bridge br0 flow_tables:1=@N1 -- \ > --id=@N1 create Flow_Table name=table1 > > ovs-vsctl set Flow_Table table0 prefixes=ip_dst,ip_src > ovs-vsctl set Flow_Table table1 prefixes=[] > > Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com>
Clang reports: ../lib/classifier.c:1570:40: error: bad constant expression referring to this line in trie_remove(): struct trie_node *nodes[trie->field->n_bytes]; I'll have more comments later today. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev