思科与VMware在本月提出的虚拟可扩展VLAN(Virtual Extensible VLAN,VXLAN)标准将创建一个逻辑网络(或扩展VLAN),支持地理分散的数据中心之间实现远距离虚拟机(VM)迁移。VXLAN最终会实现多租户云网络所需要的远距离分割支持。
思科与VMware已经合作将VXLAN标准整合到产品中,但是这个由思科、VMware、Arista网络、Broadcom公司、Citrix系统和红帽等公司共同制定的VXLAN草案仍然有待互联网工程工作小组(IETF)标准化。
为什么需要VXLAN标准?
VLAN很早就被用来分隔数据流,但是IEEE 802.1Q VLAN规范仅支持4,094个VLAN标识符。一个顶级机架交换机可能会连接40多台服务器。每一台服务器可能运行多个VM,每一个VM都会与多个VLAN通信。而数据中心可能包含许多个机架交换机,所以VLAN总数可能会超过4,094。此外,由一个应用程序组成的VM可能位于地理位置不同的数据中心。这些VM必须通过2层网络连接,所以VLAN标识符必须在地理上保证唯一性。
VXLAN标准实现应用程序数据分离
这个RFC草案所描述的VXLAN标准使用一个名为VXLAN网络标识符(VNI)的24位标识符,将与应用程序关联的VLAN分组到一个片段中。每一个管理域能够定义多达1600万个VNI,而每一个VNI可能最多包含4,094个VLAN。客户数据会保证分离,因为只有运行在同一个VNI的VM可以进行通信。
对VM可见的2层网络是通过3层网络的UDP数据报文进行传输的。这使数据中心可以在不同的IP子网中运行。VM只能访问2层网络,所以应用程序中的VM可以从一个数据中心迁移到另一个数据中心,而不需要对重新分配VM或者其他应用程序的VM可见。
VXLAN环境中的VM通信
VM软件不需要修改就能够在一个VXLAN环境中运行。通过一个虚拟通道终端(VTEP),就可以将VNI分配给服务器上所运行的VM。VTEP位于服务器的虚拟机管理程序上,负责生成指定VNI及进行3层网络通信的头信息。
为了与片段中其他的VM进行通信,VM会创建与非VXLAN和非虚拟环境相同的数据包。数据包由标准MAC帧及以太网头信息、源与目标MAC地址和以太网类型构成。如果VM使用多个VLAN,则会加入一个VLAN标记。
然后,支持VM的VTEP将数据包封闭在一个8位VXLAN头信息中。这个头信息包含一位VXLAN标记,而24位VNI以及另外39位则保留为将来使用。返回的数据包会封装在一个UDP数据包中。目标IP地址是一个VTEP地址,数据包可以到达这个地址。源IP是发送端VTEP的地址。
最后,数据包被封装在一个外在以太网数据包中,它带有目标服务器或转发数据包的路由器的目标MAC。
VM之间的通信需要IP多路广播技术支持
当VM与其他VM进行通信时,它运行的环境与非VXLAN环境类似。如果目标子网位于同一个子网,它会为目标生成一个ARP请求广播。如果它们位于不同的子网,它会向第一跳路由器发出一个ARP。VTEP在VXLAN和UDP头信息封装了ARP请求,然后将广播数据包发到通信VM所在的VXLAN片段的关联IP多路广播分组。
支持目标VM的VTEP会去掉UDP和VXLAN头信息。将这个ARP请求发送到VM,然后由它响应这个请求。当响应到达源VTEP和VM时,VTEP和VM都会获得需要进行通信的IP和MAC地址。后续的通信会在VTEP之间进行传输,而不需要使用多路广播。
在其他一些情况下,VM需要进行VXLAN环境以外的通信。VXLAN网关会取下VXLAN和UDP的头信息,将这个数据包转发到VM所发数据包的目标MAC上。无论是源VM或是目标设备都需要在修改之后才可参与这个交互。而VXLAN网站可以在软件、交换机或路由器上实现。