Hi, Dumitru, thanks for the proposal!

On Thu, Jul 9, 2026 at 8:04 AM Dumitru Ceara <[email protected]> wrote:
>
> 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.

I think the reason is that "distributed gateway port" is a confusing
shortening of "distributed [router's] gateway port" or "gateway port
on a distributed router". In other words, the port itself is not
distributed, but the router is.

>
> 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"?

YES!! As you have pointed out, there is much confusion about the term,
and it's not just gatewaying that such ports have use for.

>
> 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!

I would steer clear of any options that use the word "local" since we
already have terminology like "localnet" and "localport". There's also
the issue of local vs. remote ports when talking about ovn-ic setups.
Therefore, I think "local" is overloaded and doesn't need to be
expanded further.

I think "chassis-specific" gets the point across better than "pinned",
but "chassis-specific" is also more of a mouthful than "pinned". I
would be happy if either of these were chosen.

Another option might be to use the word "bind/bound" for these
options, since we already use this term for other types of ports. In
my view, binding a VIF logical switch port to a chassis is not really
any different than binding a logical router port or logical router to
a specific chassis. The method is different, but the result is the
same. That's another option to consider.

>
> Thank you,
> Dumitru
>

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

Reply via email to