虚拟化和云有各种各样的网络问题,但是最令人沮丧的是在复杂的虚拟环境里缺乏有效的VLAN,造成数据中心之间延伸远距离网络片段也困难重重。
要解决这些问题,VMware和微软采取了封装和隧道2大策略,分别是:VXLAN和NVGRE。
VXLAN和NVGRE都使用封装和隧道方式来创建大量的VLAN子网,这些子网可以扩展到2层和3层网络。这是为了解决IEEE802.1Q定义的数量有限的VLAN,实现云和专有网络中共享负载均衡的多租赁网络。
如果VXLAN和NVGRE都采取相同的措施,哪个更好?或者它们都能正常使用吗?这没有统一答案。
VXLAN标准:扩展VLAN,支持远距离VM迁移
VMware的VXLAN是为了实现多租户云网络所需要的远距离分割支持, 它使用一个名为VXLAN网络标识符(VNI)的24位标识符,将与应用程序关联的VLAN分组到一个片段中,来分离应用程序数据。这可以使虚拟机在多租户的数据中心间进行迁移。
虚拟机软件不需要修改就能够在VXLAN环境中运行。虚拟机会创建与非VXLAN和非虚拟环境相同的数据包。在VXLAN环境里,数据包被封装在一个外在以太网数据包中,它带有目标服务器或转发数据包的路由器的目标MAC 。然而,在VXLAN环境里,虚拟机间通信需要将广播数据包用通信虚拟机所在的VXLAN片段发到关联IP多路广播分组。
虚拟机也需要进行VXLAN环境以外的通信,这种情况不需要对源虚拟机或目标设备做修改。VXLAN网关会取下VXLAN和UDP的头信息,将这个数据包转发到虚拟机所发数据包的目标MAC上。
VXLAN标准看起来代表着虚拟网络天堂,但是SearchNetworking.com的Fast Packet博主Ivan Pepelnjak持怀疑态度。在他的Fast Packet 博客中,Pepelnjak提出了严肃的问题,网络专业人员在承认这项技术前应该先问下自己:是否真正需要VXLAN,他建议很多人根本不需要VXLAN。
Pepelnjak还指出了VXLAN的不足之处,包括它在如交换机,负载均衡器或防火墙等物理设备的环境内缺乏有效通信。在任何IP网络的VXLAN里, IP多路广播的2层网络洪泛都必须进行这类通信。
和VXLAN标准一样,微软的NVGRE标准提案都使用封装策略来创建大量的VLAN子网,这些子网可以扩展到分散的数据中心和2、3层网络。二者都旨在实现在云和专有网络中共享负载均衡的多租赁网络。然而它们还是有一些区别的。
一些NVGRE标准的重要特点包括指定24位的租赁网络标识符(TNI),NVGRE解决了一些和多租户网络相关的问题。并且使用GRE来创建一个独立的虚拟2层网络,限制物理2层网络或扩展超过子网边界。NVGRE终端通过在GRE头插入INT指示符的方式分隔各个TNI。
两个标准的不同之处在于存储目标地址的位置。VXLAN标准描述了数据包是如何通过通道寻找到目标终端。而NVGRE标准将定位目标的方法延迟到后续版本。
两种提案都认为负载均衡是实现有效运营的必要条件,但是VXLAN可以随机分配端口号来分散负载,而NVGRE使用GRE关键域中的保留8位。
关于NVGRE、VXLAN,微软做了什么?
博主Martìn Casado认为,VXLAN和NVGRE还是有发展空间的。但他同时指出没有哪个标准完全成熟——网络虚拟化没有完整的答案。目前两种标准的多点传送功能有限,并且只支持2层的逻辑网络。随着标准的成熟,它们非常有可能提高控制能力。
【编辑推荐】