什么是VXLAN?

序言VXLAN即虚拟扩展局域网,是大二层网络中广泛使用的网络虚拟化技术 。在源网络设备与目的网络设备之间建立一条逻辑VXLAN隧道,采用mac in UDP(User Datagram Protocol)封装方式,即,将虚拟机发出的原始以太报文完整的封装在UDP报文中,然后在外层使用物理网络的IP报文头和以太报文头封装,这样,封装后的报文就像普通IP报文一样,可以通过路由网络转发,这就像给二层网络的虚拟机插上了路由的翅膀,使虚拟机彻底摆脱了二、三层网络的结构限制 。
为什么需要VXLAN?为什么需要VXLAN呢?这和服务器的虚拟化趋势紧密相关,一方面出现了虚拟机动态迁移,要求虚拟机在迁移前后的IP和MAC地址不能改变;另一方面,租户数量激增,需要网络提供隔离海量租户的能力 。
虚拟机动态迁移服务器虚拟化技术是把一台物理服务器虚拟化成多台逻辑服务器,这种逻辑服务器被称为虚拟机(VM) 。通过服务器虚拟化,可以有效地提高服务器的利用率,降低能源消耗,降低运营成本,所以虚拟化技术目前得到了广泛的应用 。
在服务器虚拟化后,虚拟机动态迁移变得常态化,为了保证迁移时业务不中断,就要求在虚拟机迁移时,不仅虚拟机的IP地址不变,而且虚拟机的运行状态也必须保持原状(例如TCP会话状态),所以虚拟机的动态迁移只能在同一个二层域中进行,而不能跨二层域迁移 。
传统的三层网络架构限制了虚拟机的动态迁移范围,如下图所示,迁移只能在一个较小的局部范围内进行,应用受到了极大的限制 。

什么是VXLAN?

文章插图
传统的三层网络架构限制了虚拟机的动态迁移范围
为了打破这种限制,实现虚拟机的大范围甚至跨地域的动态迁移,就要求把VM迁移可能涉及的所有服务器都纳入同一个二层网络域,这样才能实现VM的大范围无障碍迁移 。
众所周知,同一台二层交换机可以实现下挂服务器之间的二层通信,而且服务器从该二层交换机的一个端口迁移到另一个端口时,IP地址是可以保持不变的 。这样就可以满足虚拟机动态迁移的需求了 。VXLAN的设计理念和目标正是由此而来的 。
VXLAN提供一套方法论,在IP网络基础上,当源和目的之间有通信需求时,便在IP网络之上创建一条虚拟的隧道,透明转发用户数据 。任意两点之间都能通过VXLAN隧道来通信,忽略底层网络的结构和细节 。从服务器的角度看,VXLAN为它们将整个基础网络虚拟成了一台巨大的“二层交换机”,所有服务器都连接在这台虚拟二层交换机上 。而基础网络之内如何转发都是这台“巨大交换机”内部的事情,服务器完全无需关心 。
什么是VXLAN?

文章插图
VXLAN将整个基础网络虚拟成了一台巨大的“二层交换机”
基于这种“二层交换机”的模型,就很容易理解为什么VXLAN可以实现VM动态迁移了:将虚拟机从“二层交换机”的一个端口换到另一个端口,完全无需变更IP地址 。
租户数量激增,要求提供一个可隔离海量租户的网络在传统的VLAN网络中,标准定义所支持的可用VLAN数量只有4000个左右 。服务器虚拟化后,一台物理服务器中承载了多台虚拟机,每个虚拟机都有独立的IP地址和MAC地址,相当于服务器成倍扩大了 。例如,公有云或其它大型虚拟化云数据中心动辄需容纳上万甚至更多租户,VLAN的能力显然已经力不从心 。
VXLAN如何来解决上述问题呢?VXLAN在VXLAN帧头中引入了类似VLAN ID的网络标识,称为VXLAN网络标识VNI(VXLAN.NETwork ID),由24比特组成,理论上可支持多达16M的VXLAN段,从而满足了大规模不同租户之间的标识、隔离需求 。
VXLAN与VLAN之间有何不同?VLAN作为传统的网络隔离技术,在标准定义中VLAN的数量只有4000个左右,无法满足大二层网络的租户间隔离需求 。另外,VLAN的二层范围一般较小且固定,无法支持虚拟机大范围的动态迁移 。
VXLAN完美地弥补了VLAN的上述不足,一方面通过VXLAN中的24比特VNI字段,提供多达16M租户的标识能力,远大于VLAN的4000;另一方面,VXLAN本质上在两台交换机之间构建了一条穿越基础IP网络的虚拟隧道,将IP基础网络虚拟成一个巨型“二层交换机”,即大二层网络,满足虚拟机大范围动态迁移的需求 。
虽然从名字上看,VXLAN是VLAN的一种扩展协议,但VXLAN构建虚拟隧道的本领已经与VLAN迥然不同了 。
下面来介绍下,VXLAN报文到底长啥样 。


推荐阅读