对于每个配置的 DLR 实例,每个 ESXi 主机具有自己的副本。每个 DLR 实例具有自己的一组独特的表,其中包含转发数据包所需的信息。将在该 DLR 实例所在的所有主机之间同步该信息。不同主机上的单个 DLR 实例具有完全相同的信息。

路由始终是由运行源虚拟机的相同主机上的 DLR 实例处理的。这意味着,在源和目标虚拟机位于不同的主机上时,在它们之间提供路由的 DLR 实例仅在一个方向(从源虚拟机到目标虚拟机)上看到数据包。仅目标虚拟机的主机上的相同 DLR 的相应实例看到返回流量。

如果源和目标虚拟机位于不同的主机上,在 DLR 完成路由后,DVS 负责通过 L2(VXLAN 或 VLAN)传送到最终目标;如果源和目标虚拟机位于相同的主机上,则 DVS 在本地进行传送。

简要 DLR 数据包流 说明了在不同主机上运行并连接到两个不同逻辑交换机(VXLAN 5000 和 VXLAN 5001)的两个虚拟机(虚拟机 1 和虚拟机 2)之间的数据流。

图 1. 简要 DLR 数据包流
数据包流(跳过 ARP 解析):
  1. 虚拟机 1 向虚拟机 2 发送一个数据包,它将发送到虚拟机 2 子网的虚拟机 1 网关(或默认位置)。该网关是 DLR 上的 VXLAN 5000 LIF。
  2. ESXi 主机 A 上的 DVS 将数据包传送到该主机上的 DLR,将在其中执行查找并确定输出 LIF(此处为 VXLAN 5001 LIF)。
  3. 然后,从该目标 LIF 中发出数据包,这实际上将数据包返回到 DVS,但位于不同的逻辑交换机 (5001) 上。
  4. 接下来,DVS 执行 L2 传送以将该数据包传送到目标主机(ESXi 主机 B),DVS 在其中将数据包转发到虚拟机 2。

返回流量将采用相同的顺序,来自虚拟机 2 的流量转发到 ESXi 主机 B 上的 DLR 实例,然后通过 VXLAN 5000 上的 L2 进行传送。