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 <[email protected]>
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
[email protected]
http://openvswitch.org/mailman/listinfo/dev