一、VXLAN报文封装
VXLAN是IETF定义的NVO3(Network Virtualization over Layer3)标准技术之一。
采用Mac in UDP封装方式将二层报文用三层协议进行封装。
支持24bits的VNI ID ,满足数据中心大二层VM迁移和多租户的需求。
VXLAN头封装:
VNI:VXLAN网络标识,24比特,用于区分VXLAN段。
Reserved:24比特和8比特,必须设置为0。
外层UDP头封装:
目的UDP端口号是4789。源端口号是内层以太报文头通过哈希算法计算后的值。
外层IP头封装:
源IP地址为发送报文的虚拟机所属VTEP的IP地址;目的IP地址是目的虚拟机所属VTEP的IP地址。
外层Ethernet头封装:
SA:发送报文的虚拟机所属VTEP的MAC地址。
DA:目的虚拟机所属VTEP上路由表中直连的下一跳MAC地址。
VLAN Type:可选字段,当报文中携带VLAN Tag时,该字段取值为0x8100。
Ethernet Type:以太报文类型,IP协议报文该字段取值为0x0800。
二、VXLAN数据封装过程
三、VXLAN通信流程
vSwitch为虚拟机工具Hypervisor层中集成的虚拟交换机。
VTEP是在虚拟机所属服务器的Hypervisor中的vSwitch间进行建立的。
控制器为可选组件。
VTEP—Virtual Tunnel End Point 虚拟隧道端点,即VXLAN隧道的入口和出口。在这里VM流量经过vSwtich交换后会导入到VXLAN隧道里,入口是VTEP。
VNI— Virtual Network Instance 虚拟网络实例,一个VNI就是一个虚拟网络,一个VNI用一个VNI ID标识。例子里VM1和VM2在同一个虚拟网络里,VNI ID为1。
VM1地址为IP1,VM3地址为IP3,IP1与IP3为同一子网。
ARP协议交互过程:
- VM1先发送ARP报文,请求VM3的MAC地址。
- ARP报文通过OpenFlow报文封装发给AC,AC上使能ARP代理。
- AC通过IP3找到MAC3,响应ARP报文,SIP为IP3,SMAC为MAC3。
- vSwtich将ARP响应报文发给VM1。
报文转发过程:
VM1发送数据报文,SIP为IP1,DIP为IP3,SMAC为MAC1,DMAC为MAC3。
VXLAN封装,内层SIP为IP1,DIP为IP3,外层SIP为VTEP1 IP,外层DIP为VTEP2 IP。
解封装VXLAN头部,发往VM3。