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
