Each ESXi host has its own copy of each configured DLR instance. Each DLR instance has its own unique set of tables containing the information needed to forward packets. This information is synchronized across all hosts where this DLR instance exists. Instances of an individual DLR across different hosts have exactly the same information.
Routing is always handled by a DLR instance on the same host where the source VM is running. This means that when source and destination VMs are on different hosts, the DLR instance that provides routing between them sees packets only in one direction, from source VM to destination. Return traffic is only seen by the corresponding instance of the same DLR on the destination VM’s host.
After the DLR has completed routing, delivery to the final destination is the responsibility of the DVS via L2 – VXLAN or VLAN if the source and destination VMs are on different hosts, or by the DVS locally if they are on the same host.
Figure 1 illustrates data flow between two VMs, VM1 and VM2, running on different hosts and connected to two different Logical Switches, VXLAN 5000 and VXLAN 5001.
- VM1 sends a packet toward VM2, which is addressed to VM1’s gateway for VM2’s subnet (or default). This gateway is a VXLAN 5000 LIF on the DLR.
- The DVS on ESXi Host A delivers the packet to the DLR on that host, where the lookup is performed, and the egress LIF is determined (in this case – VXLAN 5001 LIF).
- The packet is then sent out of that destination LIF, which essentially returns the packet to the DVS, but on a different Logical Switch (5001).
- The DVS then performs L2 delivery of that packet to the destination host (ESXi Host B), where the DVS will forward the packet to VM2.
Return traffic will follow in the same order, where traffic from VM2 is forwarded to the DLR instance on ESXi Host B, and then delivered via L2 on VXLAN 5000.