在VXLAN网络中,同子网虚拟机的互通是通过查找MAC表进行转发。如下图所示,VM1给VM2发送报文时,经过VTEP1转发,VTEP1上需要学习到VM2的MAC地址。
最初的VXLAN标准并没有定义控制平面,VTEP之间无法传递学习到的主机MAC地址。但是VXLAN有着与传统以太网非常相似的MAC学习机制,当VTEP接收到VXLAN报文后,会记录源VTEP的IP、虚拟机MAC和VNI到本地MAC表中,这样当VTEP接收到目的MAC为此虚拟机的MAC时,就可以进行VXLAN封装并转发。

MAC学习示意图
以VTEP2学习到VM1的MAC过程为例:
- VM1发送目的地址为VM2的报文。
- VTEP1接收到报文后,进行VXLAN封装,并将其转发至VTEP2。同时,VTEP1可以学习到VM1的MAC地址、VNI、入接口。
- VTEP2接收到报文后,对报文进行解封装。同时,VTEP2可以学习到VM1的MAC地址、VNI、入接口(为VTEP1)。
经过上述流程,VTEP1和VTEP2可以学习到VM1的MAC地址。VTEP1和VTEP2学习到VM2的MAC地址过程与之类似。
BUM报文转发
前面描述的报文转发过程都是已知单播报文转发,如果VTEP收到一个未知地址的BUM报文(广播、组播、未知单播)如何处理呢。与传统以太网BUM报文转发类似,VTEP会通过泛洪的方式转发流量。

BUM报文转发示意图
以上图中VM1想向VM2发送报文为例,因为VM1不知道VM2的MAC地址,所以会发送ARP广播报文请求VM2的MAC地址。
- VM1发送ARP广播请求,请求VM2的MAC地址。
- VTEP1收到ARP请求后,因为是广播报文,VTEP1会在该VNI内查找所有的隧道列表,依据获取的隧道列表进行报文封装后,向所有隧道发送报文,从而将报文转发至同子网的VTEP2和VTEP3。
- VTEP2和VTEP3接收到报文后,进行解封装,得到VM1发送的原始ARP报文,然后转发至VM2和VM3。
- VM2和VM3接收到ARP请求后,比较报文中的目的IP地址是否为本机的IP地址。VM3发现目的IP不是本机IP,故将报文丢弃;VM2发现目的IP是本机IP,则对ARP请求做出应答。由于此时VM2上已经学习到了VM1的MAC地址,所以ARP应答报文为已知单播报文,转发流程与前文描述的一致,此处不在赘述。
- VM1收到VM2的ARP应答后,就可以学习到VM2的MAC地址。后续的转发流程同已知单播转发流程一致。
历史文章...
关于VxLAN的理解
一分钟了解VXLAN网络模型概念
本文介绍了VXLAN网络中BUM(Broadcast, Unknown Unicast, Multicast)报文的学习与转发机制。当VTEP接收到VXLAN报文时,会学习源MAC地址和VNI,并在遇到未知地址的BUM报文时,通过泛洪方式转发,以实现虚拟机间的通信。"
117920908,9540298,浏览器工作原理与HTTP/HTTPS安全详解,"['前端开发', 'HTTP', 'HTTPS', 'TCP/IP', 'WebSocket', 'Web Accessibility']
1440

被折叠的 条评论
为什么被折叠?



