Hi all,

The currently established terminology we use in OVN for various types of
routers and router ports is:

- gateway routers
- distributed routers
  - these can optionally have "distributed gateway ports" (DGP)

Our architecture docs describe them to some extent:
https://github.com/ovn-org/ovn/blob/main/ovn-architecture.7.xml#L619-L752

However, while established contributors/users might be used to the
terminology and how the different types of routers/ports behave in
practice, the naming is in my opinion extremely confusing.

Let's start with the "Gateway Router":

At a first glance one might think that this is the only type of router
that can be used as a gateway out of the cluster.  That's not true, we
also can use DGPs (I'll go to those later).  I didn't check but I assume
the naming was chosen back when the implementation for such routers was
added and it was the only way to implement OVN gateways.  But that's not
necessarily true anymore.

The way they work is through a NB database
logical_router.options:chassis configuration which specifies on which
chassis the router is "bound".  That means the router's logical pipeline
only gets executed on that chassis.  Whenever traffic that's being
processed on a different hypervisor needs to logically enter the
"gateway router's" pipeline, the traffic will be tunneled towards the
chassis the router is bound to.

Then the DGP, "distributed gateway port":

At a first glance one might think that the port (and corresponding
router pipeline) implementation is somehow distributed across multiple
OVN hypervisors.

That's definitely not true, it's actually the opposite.  This is a
router port that's part of a distributed router with the restriction
that traffic that needs to be logically forwarded out that port and
traffic that is received on that port will be first tunneled to the
chassis the DGP is "bound" to.  Binding the DGP to a chassis happens
either by configuring a NB.Gateway_Chassis or a NB.Ha_Chassis_Group (for
HA) for that port.

Then there's the "gateway" part of the DGP name.  I didn't check the
history closely but I assume this is something that was chosen just
because processing traffic on that router port is very similar to the
"Gateway Router" case.

Moreover, we know we have users that configure DGPs that are not really
gateways out of the cluster.

For example, ovn-kubernetes configures uses a distributed "cluster
router" (in ovn-kubernetes terminology) whose main purpose is to connect
per-node logical switches together.  The router ports attached to those
switches are all configured as DGPs for the sole purpose of reducing the
amount of local datapaths ovn-controllers on each node need to create
OpenFlow rules for.  In the ovn-kubernetes case, there are actually
dedicated "gateway routers", one per node, that are used as real
gateways out of the OVN cluster.

This brings me to the proposal part..

Would it make sense to update the terminology across the OVN tree's
documentation (and code) and stop using "gateway router" and
"distributed gateway port"?

We could instead use (and encourage our users to do the same) more
explicit alternatives based on the real behavior of the router/router ports.

One that comes to mind is:
- "pinned" router/router-port

Alternatives could be:
- "chassis-specific" router/router-port
- "chassis-local" router/router-port

Looking forward to hearing opinions from the community!

Thank you,
Dumitru

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

Reply via email to