Hi everyone,

this is the active-active part of the OVN Fabric integration series
https://mail.openvswitch.org/pipermail/ovs-dev/2024-November/418554.html.

This is separate from the other northd and ovn-controller series about
route advertisement and learning.
The goal of this series is rather to allow users to easily setup an
architecture that allows for a deep routing integration into the fabric.

Additionally the information we learn using this integration allows us
to improve the routing of packets in OVN.

---

The feature is intended to be used in deployments that have multiple
gateway chassis, potentially with multiple nics, connected to one
external network.
The users could then configure point-to-point links with BGP from their
network fabric to each of the nics. They would then be plugged into an
OVS bridge which is mapped using ovn-bridge-mappings. It can then be
mapped to the overlay with a LS (physnet) and a localnet port.

Now instead of the CMS directly using the LS physnet to connect e.g. VMs
or Router we introduce another layer.

The LS physnet will be connected to an LR (fabricrouter) which is connected to
another LS (e.g. my-net-for-cms). The CMS would then use the "my-net-for-cms"
LS as "external" network instead of LS physnet.

The LR fabricrouter will then be connected via individual LRPs to each
of the fabric switches outside of OVN. The LRPs is bound to the
appropriate gateway chassis where the nic actually resides. The
routing-protocol-redirect as well as the Route learning/advertising features
of the other parts of this patchset can then be used to integrate to the fabric
from a routing perspective.

The LR fabricrouter has one other LRP towards the LS "my-net-for-cms".
It effectively takes the previous position of the fabric switches on
this LS.

The previously mentioned individual LRPs on LR fabricrouter for each nic
are needed so that we get accurate routing information to and from the
fabric. It allows us to install separate default routes for the LR via
each of the nics. This means that e.g. a single nic failure will
directly impact the routing decission taken by the LR.
This mirrors the logic of phyiscal routers and switches that learn ECMP
routes.
Also this means that a route in the OVN overlay will actually be
propagated from each of the nics. This allows the fabric to do ECMP.

---

To now get to the main goal of this patchset:
The ip and mac setting on each of the LRPs of fabricrouter that are
connected to the nics must be in sync with the configuration and routing
daemons running on the gateway chassis hosting the respective nic.
In order for BGP to run the mac and ip address of the linux interface
running the bgp daemon and the settings on the matching LRP must be in
sync.

This information is specific to each individual gateway chassis and is
also not of much relevance outside of this gateay chassis.

In the past such chassis specific settings have been handled locally on
each chassis instead of requiring the CMS to handle them. E.g. for
ovn-bridge-mappings, ovn-chassis-mac-mappings, ovn-transport-zones.

This patchset proposes a similar mechansim for configuring the LRPs.
It introduces "ovn-active-active-mappings" which allows northd to
generated the required LRPs with the appropriate settings.

Additionally the CMS can still use a single LS as an "external network".
We just change from LS physnet to LS "my-net-for-cms". This means that
the effort to use all these features on the CMS side is greatly reduced.

---

Felix Huettner (4):
  controller: Publish ovn-active-active-mappings.
  northd: Support active-active lrps.
  northd: Support active-active bgp redirects.
  northd: ECMP prefer local routes if possible.

 NEWS                            |  10 +
 controller/chassis.c            |  22 ++
 controller/ovn-controller.8.xml |  30 +++
 lib/automake.mk                 |   2 +
 lib/lrp-index.c                 |  43 +++
 lib/lrp-index.h                 |  25 ++
 lib/ovn-util.c                  |  97 +++++++
 lib/ovn-util.h                  |  11 +
 northd/en-northd.c              |   4 +
 northd/inc-proc-northd.c        |   6 +
 northd/northd.c                 | 456 ++++++++++++++++++++++++++++++--
 northd/northd.h                 |  10 +
 ovn-nb.xml                      |  31 +++
 tests/ovn-macros.at             |  17 ++
 tests/ovn-northd.at             |  65 ++---
 tests/ovn.at                    | 353 ++++++++++++++++++++++++
 16 files changed, 1124 insertions(+), 58 deletions(-)
 create mode 100644 lib/lrp-index.c
 create mode 100644 lib/lrp-index.h


base-commit: ebe5d70122ce0f74067858f5cb19276c852a81da
-- 
2.47.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to