首页 > 代码库 > VXLAN简明学习笔记(原创)

VXLAN简明学习笔记(原创)

一、为什么需要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地址。

二、VXLAN实现机制

        如上图,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的粗浅了解加上文档的总结,请高手多多指教:)


VXLAN简明学习笔记(原创)