局域网SDN技术硬核内幕 8 从二层交换到三层路由

2022-07-22 19:40:32 浏览数 (3)

昨天,我们在《从二层到大二层》中介绍了VXLAN二层转发的机制。同一个网段的虚拟机需要跨越三层网络通信时,可以将二层以太网数据包封装在VXLAN隧道中穿越三层网络。那么,当不同网段的虚拟需要通信时应当如何实现呢? 在Neutron中的实现如下图:

当网段100的VM,和网段200的VM互联互通的时候,会在VXLAN隧道的两端VTEP各更改一次网段ID (VNI, Virtual Network Index),使用公用的VNI互通。这种机制叫做对称IRB。更改VNI的操作,叫做VXLAN路由 (VXLAN Routing),或RIOT(Routing In/Out Tunnel)。

在VMWare NSX中,则使用另一种叫做非对称IRB的方式实现互通:

注意到图中存在两条VXLAN隧道,其VNI是不一样的。在非对称IRB中,在入隧道方向的VTEP进行VXLAN Routing,将VNI更换为目标网段的VNI,而出隧道方向的VTEP进行VXLAN Bridging,拆除VXLAN隧道包头。由于往返的VNI、封装点均不一样,因此被称为非对称IRB。

我们发现,在对称IRB的场景下,每个VTEP只需要维护自身所在的各个网段下的所有VM的MAC和FIB信息即可。而非对称IRB场景下,每个VTEP不但需要维护所有VM的MAC和FIB信息,还需要维护ARP信息。

VTEP可以通过MAC/ARP学习等方式,得到所在宿主机下VM的MAC和FIB信息。当VTEP需要获取同一网段内其他VM的MAC/FIB信息的时候,它是如何得知的呢?

明天我们将继续详解VTEP之间信息互通的机制。

0 人点赞