This patch set covers removal of expressions which are subsets of other
wider expressions and aggregation of a few granular expressions into
wider expressions that cover all of them at once.  This allows to avoid
flow explosion in case of negative matches and reduce the total number
of flows required for address sets.  More details are in commit messages.

Version 2:
  * Became a patch set.
  * Added tests and missing bitmap.h include.
  * Code switched to work with bitwise maskable fields only (ORDINAL).
  * Added a new patch to combine smaller expressions into wider ones.
  * Added a patch to fix a crash uncovered with expression aggregation.

Version 3:
  * Dropped patch 3 for performance reasons for now, because it doesn't
    allow to make use of I-P in many cases.
  * Patch 1 re-worked to not cause performance issues for normal
    address sets generated in OVN.
  * Performance of the patch 1 significantly improved by not perfroming
    a full n^2 search and not comparing huge empty parts of subvalues.
    The patch became a bit less straightforward, but I hope it's still
    fairly readable.

Ilya Maximets (2):
  expr: Remove supersets from OR expressions.
  expr: Avoid crash if all sub-expressions crushed down to 'true'.

 include/ovn/expr.h |   1 +
 lib/expr.c         | 240 ++++++++++++++++++++++++++++++++++-----------
 tests/ovn.at       |  12 +++
 3 files changed, 197 insertions(+), 56 deletions(-)

-- 
2.39.2

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to