On 8/13/25 1:02 AM, Mark Michelson via dev wrote:
> This patch series seeks to refactor how northbound datapath types are
> synced with southbound Datapath_Bindings.
> 
> In current OVN, the en-northd node is responsible for creating, updating
> and deleting all southbound Datapath_Bindings. This means that if you
> have a new type of Datapath_Binding that you want to add to OVN, it
> needs to be added to the en-northd node.
> 
> An upcoming feature (composable services) will be adding new types of
> southbound Datapath_Bindings. However, it does not fit well into the
> current en_northd environment and would do better separated into its own
> set of engine nodes. In order to allow this, the Datapath_Binding 
> syncing code needs to be extracted to separate nodes.
> 
> This series does just that. The en_northd node is stripped of its
> previous functionality of creating, updating, and deleting southbound
> Datapath_Bindings. These are now accomplished in dedicated incremental
> engine nodes that are inputs to the en_northd engine node.
> 
> Lorenzo Bianconi (3):
>   northd: Add IP for new logical switches in en-datapath-logical-switch
>     node.
>   northd: datapath-sync: Move dp_tnlids map in ovn_synced_datapaths.
>   northd: datapath-sync: Add IP for LS and LR inputs.
> 
> Mark Michelson (5):
>   Datapath_Binding: Separate type and UUID external-ids.
>   northd: Refactor datapath syncing.
>   en-datapath-logical-router: Incrementally process unsynced routers.
>   datapaths: Add incremental processing for synced datapaths.
>   northd: Use synced datapaths everywhere.
> 

Hi Mark,

As mentioned earlier on the v14 thread [0], I think the approach from
v16's patch 1/8 "Datapath_Binding: Separate type and UUID external-ids."
will create a significant performance problem on upgrades of OpenStack +
OVN large deployments.

The "enum" schema change in the same patch is also problematic and
breaks ovn-kubernetes (not our bug but still a bit annoying) [1].

Also, there was still a use after free due to an I-P bug in v16's patch
6/8 "northd: datapath-sync: Add IP for LS and LR inputs.".

As we're getting close to branching for 25.09, Ales and I thought it
might be useful to be proactive and prepare a v17 branch that
essentially combines the first part of the v15 series with the second
part of the v16 one.  It also addresses the I-P bug mentioned above.

I pushed it in my fork here:
https://github.com/dceara/ovn/commits/refs/heads/review-datapath-i-p-v17/

I added v17 changelog messages to all commits.  In summary the changes
we did were:

v17:
- patch 1: cherry picked the v15 version
- patch 2: cherry picked the v15 version
- patch 3: cherry picked the v15 version
- patch 4: cherry picked the v15 version
- patch 5: cherry picked the v15 version
- patch 6:
  - cherry picked the v16 version
  - cherry picked some of the v16 patch 8/8 to avoid use after free
  - fix I-P bug in en_datapath_sync_run()
- patch 7:
  - cherry picked the v16 version
- patch 8:
  - cherry picked the v16 version

I'm also running ovn-heater control plane performance tests with this
branch as we speak but I'm quite confident they'll be OK based on how
they look until now.

If the new branch looks OK to you and if you agree with the comments I
had about the NB -> SB UUID sync performance problem and about the
schema change, feel free to post a v17 based on that.  The only things
that need to happen before posting v17 are:
- update changelogs for v1-v16 in each of the commits (git-pw removed
  those in my branch)
- squash https://github.com/dceara/ovn/commit/acf726d into patch 6/8
  (I kept it as a separate commit so the incremental changes are easy
   to review)
- update commit messages for patches 6/8 and 8/8

If so, I can work with Ales on getting this fully reviewed and merged
tomorrow morning.

Regards,
Dumitru

[0] https://mail.openvswitch.org/pipermail/ovs-dev/2025-August/425293.html
[1] https://mail.openvswitch.org/pipermail/ovs-dev/2025-August/425296.html

>  TODO.rst                            |  12 +
>  controller/local_data.c             |   2 +-
>  ic/ovn-ic.c                         |   3 +-
>  lib/ovn-util.c                      |  50 +++
>  lib/ovn-util.h                      |  11 +
>  northd/aging.c                      |   8 +-
>  northd/automake.mk                  |   8 +
>  northd/datapath-sync.c              | 143 +++++++
>  northd/datapath-sync.h              | 125 ++++++
>  northd/en-advertised-route-sync.c   |  12 +-
>  northd/en-datapath-logical-router.c | 383 ++++++++++++++++++
>  northd/en-datapath-logical-router.h |  67 ++++
>  northd/en-datapath-logical-switch.c | 382 ++++++++++++++++++
>  northd/en-datapath-logical-switch.h |  64 +++
>  northd/en-datapath-sync.c           | 598 ++++++++++++++++++++++++++++
>  northd/en-datapath-sync.h           |  36 ++
>  northd/en-global-config.c           |  11 +
>  northd/en-lb-data.c                 | 267 ++++++++-----
>  northd/en-lb-data.h                 |   4 +-
>  northd/en-multicast.c               |   4 +-
>  northd/en-northd.c                  |  12 +-
>  northd/en-port-group.c              |   3 +-
>  northd/inc-proc-northd.c            |  52 ++-
>  northd/lflow-mgr.c                  |   4 +-
>  northd/northd.c                     | 463 +++++----------------
>  northd/northd.h                     |  21 +-
>  ovn-sb.ovsschema                    |   6 +-
>  ovn-sb.xml                          |  20 +-
>  tests/ovn-controller.at             |   4 +
>  tests/ovn-northd.at                 | 208 ++++++++--
>  tests/ovn.at                        |   6 +-
>  utilities/ovn-sbctl.c               |  31 +-
>  utilities/ovn-trace.c               |   3 +-
>  33 files changed, 2445 insertions(+), 578 deletions(-)
>  create mode 100644 northd/datapath-sync.c
>  create mode 100644 northd/datapath-sync.h
>  create mode 100644 northd/en-datapath-logical-router.c
>  create mode 100644 northd/en-datapath-logical-router.h
>  create mode 100644 northd/en-datapath-logical-switch.c
>  create mode 100644 northd/en-datapath-logical-switch.h
>  create mode 100644 northd/en-datapath-sync.c
>  create mode 100644 northd/en-datapath-sync.h
> 

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to