On 8/13/25 7:20 PM, Mark Michelson via dev wrote: > In current OVN, the en-northd node (via code in northd.c) takes full > control of syncing logical switches and logical routers with southbound > datapath bindings. This is fine, so long as: > 1) These are the only datapath types to sync. > 2) northd will always be the arbiter of datapath syncing. > > However, future commits will introduce new types of datapaths. These are > not good fits for the en-northd node, since they have completely > independent processing rules, and trying to shoehorn them into a struct > ovn_datapath would be wasteful. > > This patch introduces a new way of syncing datapaths. Each datapath type > has a node that is responsible for creating an ovn_unsynced_datapath_map > for the type of datapath it creates. Then a type-agnostic datapath > syncing node syncs these datapaths with the southbound Datapath_Binding > type. Then, these synced datapaths are fed back into type-specific > datapath nodes, which translate these synced datapaths into specific > types. > > Nodes can then use these as inputs if they need synced datapaths (i.e. a > northbound type with its corresponding southbound type). In this case, > en_northd uses the synced logical switch and logical router types in > order to create its ovn_datapath structures. > > Doing this will provide an easy way to sync new datapath types to the > southbound database. > > Signed-off-by: Mark Michelson <[email protected]> > Acked-by: Ales Musil <[email protected]> > --- > V17: > - cherry picked from v15 > ---
Hi Mark, > TODO.rst | 12 + > northd/automake.mk | 8 + > northd/datapath-sync.c | 90 +++++++ > northd/datapath-sync.h | 86 +++++++ > northd/en-datapath-logical-router.c | 188 ++++++++++++++ > northd/en-datapath-logical-router.h | 48 ++++ > northd/en-datapath-logical-switch.c | 182 ++++++++++++++ > northd/en-datapath-logical-switch.h | 47 ++++ > northd/en-datapath-sync.c | 320 ++++++++++++++++++++++++ > northd/en-datapath-sync.h | 27 ++ > northd/en-global-config.c | 11 + > northd/en-northd.c | 6 + > northd/inc-proc-northd.c | 28 +++ > northd/northd.c | 366 +++------------------------- > northd/northd.h | 15 +- > 15 files changed, 1096 insertions(+), 338 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 > > diff --git a/TODO.rst b/TODO.rst > index 85208bfe3..07dca71af 100644 > --- a/TODO.rst > +++ b/TODO.rst > @@ -153,3 +153,15 @@ OVN To-do List > monitoring conditions to update before we actually try to learn routes. > Otherwise we could try to add duplicated Learned_Routes and the ovnsb > commit would fail. > + > +* Datapath sync nodes > + > + * Add incremental processing to the en-datapath-logical-switch, > + en-datapath-logical-router, en-datapath-sync, and possibly the > + en-datapath-synced-logical-router and en-datapath-synced-logical-switch > + nodes. > + I removed this entry before applying the patch. The next patches in the series actually implement the incremental processing for these nodes. I then applied the patch to main. Thanks a lot for the hard work on this one! Regards, Dumitru _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
