[RFC,0/2] TCP flow classification using 4-tuple and flags

Message ID cover.1578787797.git.sowmini.varadhan@microsoft.com (mailing list archive)


Sowmini Varadhan Jan. 12, 2020, 11:08 p.m. UTC
  An interesting class of problems is  TCP flow tracking 
and classification based on TCP state, which  requires 
the ability to classify TCP flows on more packet properties 
than just the 4-tuple

This patch-set investigates the set of changes needed in the 
examples/flow_classify.c needed to achieve  one instance of
this class of problems by adding hooks to filter/classify 
on both the 4-tuple and tcp flags.

Patch 1 extends examples/flow_classify.c to allow constraints
on tcp flags. Patch 2 extends the ACL handling in  
librte_flow_classify to include keys on the properties in 
addition to the tcp 4-tuple.

Note that one particular part of this patch-set where feedback
is requested is in allocate_acl_ipv4_tcp_5tuple_rule():
we need to add a key for the 8 bit flags, but the multibit
trie lookup moves in steps of 4 bytes, so it took some hackery
to figure out what byte-ordering was expected, and there were
no documentation/examples to provide guidelines. Comments/suggestions
would be particularly helpful.

Sowmini Varadhan (2):
  Hooks to allow the setting of filters on tcp flags
  Allow the flow_classify example to add an ACL table for tcp.

 examples/flow_classify/flow_classify.c        | 113 ++++++++++++++++--
 examples/flow_classify/ipv4_rules_file.txt    |  22 ++--
 lib/librte_flow_classify/rte_flow_classify.c  |  84 +++++++++++++
 lib/librte_flow_classify/rte_flow_classify.h  |  19 +++
 .../rte_flow_classify_parse.c                 |   8 +-
 5 files changed, 221 insertions(+), 25 deletions(-)