VXLAN 转发原理
本文最后更新于 2024年3月26日 下午
介绍
VXLAN工作原理如下:
- 在每个数据中心的交换机上都配置一个VTEP(VXLAN Tunnel Endpoints),用于封装和解封装VXLAN报文。
- 在两个VTEP之间建立一个VXLAN隧道,用于在两个数据中心之间传输封装后的VXLAN报文。
- 当虚拟机之间需要通信时,它们的报文会被发送到所在数据中心的交换机上。交换机上的VTEP会将报文封装成VXLAN报文,并通过VXLAN隧道发送到另一个数据中心的交换机上。
- 另一个数据中心的交换机上的VTEP会将VXLAN报文解封装,还原成原始报文,并发送给目标虚拟机。
这样,虚拟机之间就可以通过VXLAN隧道进行通信了。
本文章介绍了其工作原理和配置方案。
本文章是针对华为系列网络设备的学习笔记。
VXLAN隧道的建立方式
VXLAN隧道由一对VTEP确定,报文在VTEP设备进行封装之后在VXLAN隧道中依靠路由进行传输。只要VXLAN隧道的两端VTEP是三层路由可达的,VXLAN隧道就可以建立成功。
根据VXLAN隧道的创建方式将VXLAN隧道分为以下两种:
- 静态隧道:通过用户手工配置本端和远端的VNI、VTEP IP地址和头端复制列表(head-end peer-list)来完成。
- 动态隧道:通过BGP EVPN(Ethernet VPN,以太网虚拟私有网络)方式动态建立VXLAN隧道。在VTEP之间建立BGP EVPN对等体,然后对等体之间利用BGP EVPN路由来互相传递VNI和VTEP IP地址信息,从而实现动态地建立VXLAN隧道。
静态VXLAN隧道
- 静态VXLAN隧道并不是一个有状态的隧道(如IPsec VPN),只是数据传输时的隧道封装,类似于GRE VPN。
- 头端复制列表中的地址,即进行隧道封装传输时可封装的隧道目的地址。
VXLAN MAC地址表项
- VXLAN实现的是在Overlay网络中进行二层转发,转发单播数据帧依赖的依旧是MAC地址表项。
- VTEP接收到BD内来自本地的数据帧,将数据帧的源MAC地址添加到该BD的MAC地址表中,出接口为收到数据帧的接口。
- 该表项用于指导发往本VTEP下连接终端的数据帧的转发。
1 |
|
MAC地址动态学习 (1)
- 转发属于远端VTEP下所连接设备的数据帧,需要先学习到远端设备的MAC地址。
- 该过程与传统MAC地址表形成过程类似,依赖于主机之间的报文交互,一般通过ARP报文交互形成MAC地址表项。
- PC1与PC2通信过程如下:
- PC1要与PC2通信,PC1发送ARP请求广播帧,试图请求PC2的MAC地址。
- SW1收到该帧后,根据VAP信息判断出流量所属的BD ID、需进入的VXLAN隧道及对应的VNI;同时学习PC1的MAC地址,将其与该BD ID、接收帧的接口等绑定。
- SW1对ARP请求广播帧进行VXLAN封装,按头端复制列表进行转发。
- SW2收到VXLAN报文后,将其解封装,得到原始数据帧;同时学习PC1的MAC地址,将该地址与SW1的VTEP地址进行绑定。
- SW2将该ARP帧在本地广播域内泛洪。然后,PC2收到了该帧并学习到了PC1的ARP信息。
MAC地址动态学习 (2)
PC2发送单播的ARP回应。
6. SW2此时已经拥有PC1的MAC地址表项,因此将会单播转发,并且学习PC2的源MAC地址到MAC地址表项中。
7. SW2为该ARP响应加上VXLAN封装,发送到远端VTEP 1.1.1.1。
8. SW1收到VXLAN报文之后解封装,将PC2的源MAC地址记录到MAC地址表,出接口为远端VTEP。
9. SW1将数据帧转发给PC1。
至此PC1、2相互学习到了对方的ARP信息,SW1、SW2完成了PC1、PC2的MAC地址学习,该过程也叫做Flood and Learn。
同子网已知目的地址单播报文转发
BUM流量转发
- 传输BUM(Broadcast、Unknown、Multicast)流量时,VTEP会将流量复制多份发送到头端复制列表中的对端VTEP,从而在Overlay网络中实现泛洪转发的效果。
- BUM,广播、未知、组播以太网帧
跨子网三层转发
- PC1希望与PC2进行通信,本地计算发现对端与自身不在同一个子网,此时将报文发送给网关。
- PC1发往PC2的数据帧,目的MAC为:00AB-09FF-1111(网关MAC地址),SW1收到之后执行L2查表发现出接口为远端VTEP(即L3网关),将报文加上VXLAN头部封装(VNI =1000)之后发往SW3。
- SW3收到报文之后解VXLAN封装发现,内部原始数据帧其目的MAC为:00AB-09FF-1111,为自身接口VBDIF 10的MAC地址,此时需要执行L3查表转发。
- SW3查找路由表,发现目的IP:192.168.2.1,与本地接口VBDIF 20产生的直连路由相匹配,查找ARP表项确定报文目的MAC,再查找MAC地址表确定报文的出接口。SW3中前往192.168.2.1所对应MAC地址的出接口为远端VTEP 2.2.2.2,将报文加上VXLAN封装,送往SW2。
- SW2收到报文之后解VXLAN封装发现目的MAC并非自身任何接口的MAC地址,执行L2查表转发,依据MAC地址表将报文从本地接口转发出去。
VXLAN 转发原理
https://songxwn.com/VXLAN_Principle/