在VXLAN网络中,同子网虚拟机的互通是通过查找MAC表进行转发。如下图所示,VM1给VM2发送报文时,经过VTEP1转发,VTEP1上需要学习到VM2的MAC地址。
最初的VXLAN标准并没有定义控制平面,VTEP之间无法传递学习到的主机MAC地址。但是VXLAN有着与传统以太网非常相似的MAC学习机制,当VTEP接收到VXLAN报文后,会记录源VTEP的IP、虚拟机MAC和VNI到本地MAC表中,这样当VTEP接收到目的MAC为此虚拟机的MAC时,就可以进行VXLAN封装并转发。
图7-5 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会通过泛洪的方式转发流量。
图7-6 BUM报文转发示意图
以上图中VM1想向VM2发送报文为例,因为VM1不知道VM2的MA