mbox series

[ovs-dev,0/5] Optimize load balancer hairpin logical flows.

Message ID 20201021072447.3750661-1-numans@ovn.org
Headers show
Series Optimize load balancer hairpin logical flows. | expand

Message

Numan Siddique Oct. 21, 2020, 7:24 a.m. UTC
From: Numan Siddique <numans@ovn.org>

This patch series optimizes the load balancer hairpin logical flows.
Presently, ovn-northd generates a lot of these logical flows.

Suppose there are 'm' load balancers associated to a logical switch and each load balancer
has 'n' VIPs and each VIP has 'p' backends then ovn-northd adds (m * ((n * p) + n))
hairpin logical flows.

With this patch series, ovn-northd adds just 5 hairpin logical flows.

To reduce the number of lflows, load balancer information is now pushed
to the Southbound database using a new 'Load_Balancer' table.
ovn-controller programs the OF flows required for handling the load
balancer hairpin traffic directly and new OVN actions are added to
abstract the hairpining from ovn-northd.

Numan Siddique (5):
  Add new table Load_Balancer in Southbound database.
  northd: Refactor load balancer vip parsing.
  controller:  Add load balancer hairpin OF flows.
  actions: Add new actions chk_lb_hairpin, chk_lb_hairpin_reply and
    ct_snat_to_vip.
  northd: Make use of new hairpin actions.

 controller/lflow.c           | 259 ++++++++++++++++
 controller/lflow.h           |   6 +-
 controller/ovn-controller.c  |  27 +-
 include/ovn/actions.h        |  15 +-
 include/ovn/logical-fields.h |   3 +
 lib/actions.c                | 115 ++++++-
 lib/automake.mk              |   4 +-
 lib/lb.c                     | 236 ++++++++++++++
 lib/lb.h                     |  77 +++++
 lib/ovn-util.c               |  28 ++
 lib/ovn-util.h               |   2 +
 northd/ovn-northd.8.xml      |  65 +++-
 northd/ovn-northd.c          | 586 ++++++++++++++---------------------
 ovn-sb.ovsschema             |  27 +-
 ovn-sb.xml                   |  84 +++++
 tests/ovn-northd.at          | 109 ++++++-
 tests/ovn.at                 | 544 ++++++++++++++++++++++++++++++--
 tests/test-ovn.c             |   3 +
 utilities/ovn-sbctl.c        |   3 +
 utilities/ovn-trace.c        |  65 +++-
 20 files changed, 1832 insertions(+), 426 deletions(-)
 create mode 100644 lib/lb.c
 create mode 100644 lib/lb.h