一、为什么需要VXLAN,传统的VLAN技术无法解决什么问题?
1. 因为现在虚拟化技术的发展,在数据中心里服务器都模拟成虚拟机,这样就可以方便的在物理服务器上移动、新增、删除服务器。
这样数据中心就会有成千上万的VM,而且VM一般都会需要分割成组,
或者数据中心租用给很多的用户,而每个用户所租用的VM也需要划分成组,这样的二层隔离,目前大多通过VLAN技术实现的。
但是VLAN技术有一个缺陷就是VLAN头预留的长度太短只有12位,最多只能支持4096个,是无法满足日益增长的VLAN占用需求的。
VXLAN的报文头内有24位,可以支持2的24次方的VNI个数。(VXLAN中通过VNI来标识,相当于VLAN ID)
2.虚拟机要求能够移动,也就是在用户不感知的情况下,从这个服务器迁移到另外一台服务器,还可能直接迁移到异地的数据中心(可 以自行google一下vMotion技术)。
传统的VLAN无法解决这个问题,因为如果要用户不感知虚拟机迁移,那么VM的IP地址不能改变,传统的VLAN无法解决VM迁移不改 变IP地址,因为不同VLAN的IP地址段不同。
但VNI相同的VXLAN内,IP地址在一个网段内,只是使用了不同的IP地址。
如上图,VM1与VM3可以是异地的两个VM,但使用VXLAN它们之间可以进行二层传输,尽管实际上中间跨越了千山万水,但VM1只觉得与VM3之间近在咫尺只有一台交换机。
VM发送的数据帧通过VTEP(Virtual Tunnel End Point)封装/解封装,在原始的数据帧上添加了VXLAN头、外层UDP、外层IP头、外层以太头,如下图:
封装说明:
1.外层目的MAC填的是下一跳的MAC,通常是下一跳路由器的MAC
2.外层目的IP是目的VTEP的IP,源IP地址是本地VTEP的地址。
3.外层UDP的目的端口是一个VXLAN特定的端口。
假设VTEP1与VTEP2之间为初始状态,且两端地址如下:
1.配置好VXLAN后,管理员为每个VNI分配一个组播地址,每个VETP都加入到相应的组播转发树中。(具体可以参考PIM-SM的组播转 发树建立)
2.VM1需要发送目的地址为VM2的192.168.0.101的报文,首先发送一个ARP查询报文。
3.VTEP1收到该ARP查询报文,因为ARP查询的目的地址为全F,封装成组播报文发送到组播组中。
4.VNI内其它VTEP收到该组播报文,解封装后学习了VM1的MAC地址与VTEP1地址的映射关系。
5.VTEP2将解封装后的ARP查询报文广播到本地的VNI内所有端口,VM2收到该ARP查询报文,学习192.168.0.100与VM1的MAC的关 系,并回复一个单播的ARP应答。
6.VTEP2收到ARP应答,封装成发送给VTEP1的单播报文,发送给VTEP1,VTEP1进而学到VNI 864 -- VTEP2 -- MAC2的映射关系, VM1也学到了192.168.0.101 -- MAC2的映射关系。
参考资料:
《软件定义网络: OpenFlow 和 VxLAN》
《Arista Networks VXLAN White Paper》
以下是我个人对VXLAN的粗浅了解加上文档的总结,请高手多多指教:)
原文地址:http://jlins.blog.51cto.com/4487484/1587329