mbox series

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

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

Message

Numan Siddique Nov. 17, 2020, 2:26 p.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.

v4 -> v5
----
  * Incorporated Dumitru's changes on top of v4 patch 2 and squashed it
    into one patch - v5 p2.

v3 -> v4
----
  * Addressed review comments from Dumitru which was missed out in v3.
  * Separate lb structures for northd and ovn-controller in lib/lb.c.
  * Incorporated Dumitru's code suggestions in patch 1 for syncing
    the NB load balancer to SB load balancer.

v2 -> v3
----
  * Addressed most of the review comments from Dumitru.
  * Modified the test cases to make use of the newly added helper test
    functions.

v1 -> v2
-----
  * Addressed the review comments from Mark Michelson.
  * Added 2 more patches to the series to have SB Load balancer support
    ovn-detrace and 'ovn-sbctl --vflows' as pointed by Dumitru Ceara.


Dumitru Ceara (1):
  northd: Refactor load balancer vip parsing.

Numan Siddique (6):
  Add new table Load_Balancer in Southbound database.
  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.
  ovn-detrace: Add SB Load Balancer cookier handler.
  sbctl: Add Load Balancer support for vflows option.

 controller/lflow.c           | 234 +++++++++++++
 controller/lflow.h           |   6 +-
 controller/ovn-controller.c  |  27 +-
 include/ovn/actions.h        |  15 +-
 include/ovn/logical-fields.h |   3 +
 lib/actions.c                | 116 ++++++-
 lib/automake.mk              |   4 +-
 lib/lb.c                     | 301 +++++++++++++++++
 lib/lb.h                     |  97 ++++++
 northd/ovn-northd.8.xml      |  65 +++-
 northd/ovn-northd.c          | 632 ++++++++++++++---------------------
 ovn-sb.ovsschema             |  27 +-
 ovn-sb.xml                   |  82 +++++
 tests/ovn-northd.at          | 115 ++++++-
 tests/ovn.at                 | 510 +++++++++++++++++++++++++++-
 tests/test-ovn.c             |   3 +
 utilities/ovn-detrace.in     |  11 +-
 utilities/ovn-sbctl.c        |  59 ++++
 utilities/ovn-trace.c        |  65 +++-
 19 files changed, 1940 insertions(+), 432 deletions(-)
 create mode 100644 lib/lb.c
 create mode 100644 lib/lb.h

Comments

Mark Michelson Nov. 20, 2020, 2:33 a.m. UTC | #1
For the series:

Acked-by: Mark Michelson <mmichels@redhat.com>

On 11/17/20 9:26 AM, numans@ovn.org wrote:
> 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.
> 
> v4 -> v5
> ----
>    * Incorporated Dumitru's changes on top of v4 patch 2 and squashed it
>      into one patch - v5 p2.
> 
> v3 -> v4
> ----
>    * Addressed review comments from Dumitru which was missed out in v3.
>    * Separate lb structures for northd and ovn-controller in lib/lb.c.
>    * Incorporated Dumitru's code suggestions in patch 1 for syncing
>      the NB load balancer to SB load balancer.
> 
> v2 -> v3
> ----
>    * Addressed most of the review comments from Dumitru.
>    * Modified the test cases to make use of the newly added helper test
>      functions.
> 
> v1 -> v2
> -----
>    * Addressed the review comments from Mark Michelson.
>    * Added 2 more patches to the series to have SB Load balancer support
>      ovn-detrace and 'ovn-sbctl --vflows' as pointed by Dumitru Ceara.
> 
> 
> Dumitru Ceara (1):
>    northd: Refactor load balancer vip parsing.
> 
> Numan Siddique (6):
>    Add new table Load_Balancer in Southbound database.
>    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.
>    ovn-detrace: Add SB Load Balancer cookier handler.
>    sbctl: Add Load Balancer support for vflows option.
> 
>   controller/lflow.c           | 234 +++++++++++++
>   controller/lflow.h           |   6 +-
>   controller/ovn-controller.c  |  27 +-
>   include/ovn/actions.h        |  15 +-
>   include/ovn/logical-fields.h |   3 +
>   lib/actions.c                | 116 ++++++-
>   lib/automake.mk              |   4 +-
>   lib/lb.c                     | 301 +++++++++++++++++
>   lib/lb.h                     |  97 ++++++
>   northd/ovn-northd.8.xml      |  65 +++-
>   northd/ovn-northd.c          | 632 ++++++++++++++---------------------
>   ovn-sb.ovsschema             |  27 +-
>   ovn-sb.xml                   |  82 +++++
>   tests/ovn-northd.at          | 115 ++++++-
>   tests/ovn.at                 | 510 +++++++++++++++++++++++++++-
>   tests/test-ovn.c             |   3 +
>   utilities/ovn-detrace.in     |  11 +-
>   utilities/ovn-sbctl.c        |  59 ++++
>   utilities/ovn-trace.c        |  65 +++-
>   19 files changed, 1940 insertions(+), 432 deletions(-)
>   create mode 100644 lib/lb.c
>   create mode 100644 lib/lb.h
>
Numan Siddique Nov. 20, 2020, 7:05 a.m. UTC | #2
On Fri, Nov 20, 2020 at 8:04 AM Mark Michelson <mmichels@redhat.com> wrote:
>
> For the series:
>
> Acked-by: Mark Michelson <mmichels@redhat.com>

Thanks Dumitru and Mark for the reviews. I applied this series to master.

@Ben - There are changes in ovn-northd in this series which would
break the ddlog tests.
When you respin another version of ddlog, you can skip the failing
tests with northd-ddlog.
I will work on the ddlog changes.

Thanks
Numan

>
> On 11/17/20 9:26 AM, numans@ovn.org wrote:
> > 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.
> >
> > v4 -> v5
> > ----
> >    * Incorporated Dumitru's changes on top of v4 patch 2 and squashed it
> >      into one patch - v5 p2.
> >
> > v3 -> v4
> > ----
> >    * Addressed review comments from Dumitru which was missed out in v3.
> >    * Separate lb structures for northd and ovn-controller in lib/lb.c.
> >    * Incorporated Dumitru's code suggestions in patch 1 for syncing
> >      the NB load balancer to SB load balancer.
> >
> > v2 -> v3
> > ----
> >    * Addressed most of the review comments from Dumitru.
> >    * Modified the test cases to make use of the newly added helper test
> >      functions.
> >
> > v1 -> v2
> > -----
> >    * Addressed the review comments from Mark Michelson.
> >    * Added 2 more patches to the series to have SB Load balancer support
> >      ovn-detrace and 'ovn-sbctl --vflows' as pointed by Dumitru Ceara.
> >
> >
> > Dumitru Ceara (1):
> >    northd: Refactor load balancer vip parsing.
> >
> > Numan Siddique (6):
> >    Add new table Load_Balancer in Southbound database.
> >    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.
> >    ovn-detrace: Add SB Load Balancer cookier handler.
> >    sbctl: Add Load Balancer support for vflows option.
> >
> >   controller/lflow.c           | 234 +++++++++++++
> >   controller/lflow.h           |   6 +-
> >   controller/ovn-controller.c  |  27 +-
> >   include/ovn/actions.h        |  15 +-
> >   include/ovn/logical-fields.h |   3 +
> >   lib/actions.c                | 116 ++++++-
> >   lib/automake.mk              |   4 +-
> >   lib/lb.c                     | 301 +++++++++++++++++
> >   lib/lb.h                     |  97 ++++++
> >   northd/ovn-northd.8.xml      |  65 +++-
> >   northd/ovn-northd.c          | 632 ++++++++++++++---------------------
> >   ovn-sb.ovsschema             |  27 +-
> >   ovn-sb.xml                   |  82 +++++
> >   tests/ovn-northd.at          | 115 ++++++-
> >   tests/ovn.at                 | 510 +++++++++++++++++++++++++++-
> >   tests/test-ovn.c             |   3 +
> >   utilities/ovn-detrace.in     |  11 +-
> >   utilities/ovn-sbctl.c        |  59 ++++
> >   utilities/ovn-trace.c        |  65 +++-
> >   19 files changed, 1940 insertions(+), 432 deletions(-)
> >   create mode 100644 lib/lb.c
> >   create mode 100644 lib/lb.h
> >
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
Ben Pfaff Nov. 20, 2020, 5:01 p.m. UTC | #3
On Fri, Nov 20, 2020 at 12:35:18PM +0530, Numan Siddique wrote:
> On Fri, Nov 20, 2020 at 8:04 AM Mark Michelson <mmichels@redhat.com> wrote:
> >
> > For the series:
> >
> > Acked-by: Mark Michelson <mmichels@redhat.com>
> 
> Thanks Dumitru and Mark for the reviews. I applied this series to master.
> 
> @Ben - There are changes in ovn-northd in this series which would
> break the ddlog tests.
> When you respin another version of ddlog, you can skip the failing
> tests with northd-ddlog.
> I will work on the ddlog changes.

That's very kind of you, thanks.