mbox series

[ovs-dev,v3,0/4] uuid-based conjunction id generation.

Message ID 20211111223825.1757021-1-hzhou@ovn.org
Headers show
Series uuid-based conjunction id generation. | expand

Message

Han Zhou Nov. 11, 2021, 10:38 p.m. UTC
It is important to keep conjunction IDs consistent between runs to avoid
unnecessary OVS flows deletion and reinstallation. However, There are two
problems of the current lflow-cache based conjunction id peristent approach.

1) When n_conjs changes, the cached conj_id_ofs can overlap with other lflows.
2) When lflow-cache is not enabled, conjunction id is not consistent across
runs.

This series replace the lflow-cache based approach by a new way of conjunction
id generation which keeps the ids consistent regardless of the lflow-cache
enablement.

v1 -> v2: adding the missing patch 1.
v2 -> v3: adding more tests, and minor changes for error logging and coverage
counters.

Han Zhou (4):
  lflow-cache.h: Fix comment about lflow-cache.
  lflow-cache: Remove conjunction id cache.
  test-utils: Add test_read_uint_hex_value helper.
  lflow: Consistent conjunction id generation.

 controller/automake.mk           |   2 +
 controller/lflow-cache.c         |  30 +--
 controller/lflow-cache.h         |  20 +-
 controller/lflow-conj-ids.c      | 259 +++++++++++++++++++++
 controller/lflow-conj-ids.h      |  41 ++++
 controller/lflow.c               | 154 ++++++-------
 controller/lflow.h               |   4 +-
 controller/ovn-controller.c      |  32 +--
 controller/test-lflow-cache.c    |  44 ++--
 controller/test-lflow-conj-ids.c | 128 +++++++++++
 tests/automake.mk                |   3 +
 tests/ovn-lflow-cache.at         | 383 +++++++++++--------------------
 tests/ovn-lflow-conj-ids.at      | 112 +++++++++
 tests/ovn.at                     | 271 ++++++++--------------
 tests/test-utils.c               |  22 +-
 tests/test-utils.h               |   2 +
 tests/testsuite.at               |   1 +
 17 files changed, 909 insertions(+), 599 deletions(-)
 create mode 100644 controller/lflow-conj-ids.c
 create mode 100644 controller/lflow-conj-ids.h
 create mode 100644 controller/test-lflow-conj-ids.c
 create mode 100644 tests/ovn-lflow-conj-ids.at

Comments

Numan Siddique Nov. 19, 2021, 6:55 p.m. UTC | #1
On Thu, Nov 11, 2021 at 5:38 PM Han Zhou <hzhou@ovn.org> wrote:
>
> It is important to keep conjunction IDs consistent between runs to avoid
> unnecessary OVS flows deletion and reinstallation. However, There are two
> problems of the current lflow-cache based conjunction id peristent approach.
>
> 1) When n_conjs changes, the cached conj_id_ofs can overlap with other lflows.
> 2) When lflow-cache is not enabled, conjunction id is not consistent across
> runs.
>
> This series replace the lflow-cache based approach by a new way of conjunction
> id generation which keeps the ids consistent regardless of the lflow-cache
> enablement.
>
> v1 -> v2: adding the missing patch 1.
> v2 -> v3: adding more tests, and minor changes for error logging and coverage
> counters.
>

Hi Han,

I've a few small comments for patch 4.  Please see my reply in patch 4.

With those addressed for the entire series:

Acked-by: Numan Siddique <numans@ovn.org>

Thanks
Numan

> Han Zhou (4):
>   lflow-cache.h: Fix comment about lflow-cache.
>   lflow-cache: Remove conjunction id cache.
>   test-utils: Add test_read_uint_hex_value helper.
>   lflow: Consistent conjunction id generation.
>
>  controller/automake.mk           |   2 +
>  controller/lflow-cache.c         |  30 +--
>  controller/lflow-cache.h         |  20 +-
>  controller/lflow-conj-ids.c      | 259 +++++++++++++++++++++
>  controller/lflow-conj-ids.h      |  41 ++++
>  controller/lflow.c               | 154 ++++++-------
>  controller/lflow.h               |   4 +-
>  controller/ovn-controller.c      |  32 +--
>  controller/test-lflow-cache.c    |  44 ++--
>  controller/test-lflow-conj-ids.c | 128 +++++++++++
>  tests/automake.mk                |   3 +
>  tests/ovn-lflow-cache.at         | 383 +++++++++++--------------------
>  tests/ovn-lflow-conj-ids.at      | 112 +++++++++
>  tests/ovn.at                     | 271 ++++++++--------------
>  tests/test-utils.c               |  22 +-
>  tests/test-utils.h               |   2 +
>  tests/testsuite.at               |   1 +
>  17 files changed, 909 insertions(+), 599 deletions(-)
>  create mode 100644 controller/lflow-conj-ids.c
>  create mode 100644 controller/lflow-conj-ids.h
>  create mode 100644 controller/test-lflow-conj-ids.c
>  create mode 100644 tests/ovn-lflow-conj-ids.at
>
> --
> 2.30.2
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
Han Zhou Nov. 19, 2021, 8:44 p.m. UTC | #2
On Fri, Nov 19, 2021 at 10:55 AM Numan Siddique <numans@ovn.org> wrote:
>
> On Thu, Nov 11, 2021 at 5:38 PM Han Zhou <hzhou@ovn.org> wrote:
> >
> > It is important to keep conjunction IDs consistent between runs to avoid
> > unnecessary OVS flows deletion and reinstallation. However, There are
two
> > problems of the current lflow-cache based conjunction id peristent
approach.
> >
> > 1) When n_conjs changes, the cached conj_id_ofs can overlap with other
lflows.
> > 2) When lflow-cache is not enabled, conjunction id is not consistent
across
> > runs.
> >
> > This series replace the lflow-cache based approach by a new way of
conjunction
> > id generation which keeps the ids consistent regardless of the
lflow-cache
> > enablement.
> >
> > v1 -> v2: adding the missing patch 1.
> > v2 -> v3: adding more tests, and minor changes for error logging and
coverage
> > counters.
> >
>
> Hi Han,
>
> I've a few small comments for patch 4.  Please see my reply in patch 4.
>
> With those addressed for the entire series:
>
> Acked-by: Numan Siddique <numans@ovn.org>

Thanks Numan! I addressed your comments and applied to the main branch.

Han

>
> Thanks
> Numan
>
> > Han Zhou (4):
> >   lflow-cache.h: Fix comment about lflow-cache.
> >   lflow-cache: Remove conjunction id cache.
> >   test-utils: Add test_read_uint_hex_value helper.
> >   lflow: Consistent conjunction id generation.
> >
> >  controller/automake.mk           |   2 +
> >  controller/lflow-cache.c         |  30 +--
> >  controller/lflow-cache.h         |  20 +-
> >  controller/lflow-conj-ids.c      | 259 +++++++++++++++++++++
> >  controller/lflow-conj-ids.h      |  41 ++++
> >  controller/lflow.c               | 154 ++++++-------
> >  controller/lflow.h               |   4 +-
> >  controller/ovn-controller.c      |  32 +--
> >  controller/test-lflow-cache.c    |  44 ++--
> >  controller/test-lflow-conj-ids.c | 128 +++++++++++
> >  tests/automake.mk                |   3 +
> >  tests/ovn-lflow-cache.at         | 383 +++++++++++--------------------
> >  tests/ovn-lflow-conj-ids.at      | 112 +++++++++
> >  tests/ovn.at                     | 271 ++++++++--------------
> >  tests/test-utils.c               |  22 +-
> >  tests/test-utils.h               |   2 +
> >  tests/testsuite.at               |   1 +
> >  17 files changed, 909 insertions(+), 599 deletions(-)
> >  create mode 100644 controller/lflow-conj-ids.c
> >  create mode 100644 controller/lflow-conj-ids.h
> >  create mode 100644 controller/test-lflow-conj-ids.c
> >  create mode 100644 tests/ovn-lflow-conj-ids.at
> >
> > --
> > 2.30.2
> >
> > _______________________________________________
> > dev mailing list
> > dev@openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> >