尴尬的VXLAN

VXLAN(Virtual eXtensible Local Area Network)技术是由VMware、思科、Arista、Broadcom、Citrix和红帽共同提出的IETF草案,用以解决数据中心多租户间通信和隔离时解决vlan不够的问题;Vxlan草案里给出的封装格式是MAC-IN-UDP,即将原始报文封装在UDP报文里,其本意是在用于不同数据中心之间的VM(Virtual Machine)之间进行通信时数据报文封装格式。但是这种技术到底是否是一种完美的解决方案哪?

先对VXLAN的技术的提出其标准里主要想解决以下几个问题进行说明:

1)STP协议缺陷和VLAN ID数目少带来的限制

对于国内互联网的公司如BAT的数据中心,STP协议多数是不开启的,明显的缺陷是vxlan标准中所提及的,会导致链路带宽的大量浪费,并且一旦拓扑变化到二三百台网络设备的时候,收敛性能会明显变慢;所以大型数据中心会通过对网络的合理规划,来避免环路。

2)云计算[注]中多租户环境下的通信和隔离

对于为了提高CPU的使用率以及服务器维护/迁移等操作便捷的云计算来说,不同租户的云主机需要进行私网隔离,对于同一个租户的多个云主机私网内需要二层数据隔离而可以通过三层转发进行通信,并且当云主机在多个数据中心之间的进行热迁移时为了保持其提供服务的不间断需要保证迁移前后在一个vlan内,即多个数据中心组成的二层某个VLAN网路有多大,那么着里面的VM就能迁移有多远,也就是所谓的大二层技术。然而一个数据中心的物理服务器规模十万级在国内已经出现,国外Google等已有百万级规模的数据中心,此类环境下仅有12bit的VLAN数目对于云计算的租户数目来讲是远远不够的;其实vlan数目不够很早就被意识到,并提出了 Q-IN-Q之类的技术(还有灵活Q-IN-Q等),为什么这些技术不直接被拿来在云计算虚拟网络环境里使用哪?因为虽然我们可以在数据中心内部控制报文的TAG情况,但是一旦报文到了公网,其路径经过的网络设备是路由器还是交换机无法得知,根本无法保证让带各种不同TAG的报文安然通过公网达到对端数据中心;然后就看有了vxlan的技术被提出和应用。

3)TOR交换机的MAC地址表不充足

再讨论一下云计算环境下TOR交换机MAC地址表不足的问题,在以前TOR因为走三层转发,只会学习到与其之恋直连设备及二层相连设备的MAC;而随着大二层的出现,不仅要学习本数据中心二层的设备MAC地址,还有更多其他数据中心二层范围内的地址,包括海量的虚拟机的MAC地址都有可能要被TOR学习到,这无疑大大增加了TOR的MAC表项容量的要求。我们知道对于传统的商业交换芯片如Broadcom的ESW系列芯片,基本都有128K的MAC表项大小,这个容量相对于现代一个数据中心十万级甚至百万级设备的数据量真不算太大。

4)针对VXLAN技术的内容有以下几点讨论:

a)没有说明同一个租户下不同VNID之间如何通信;以前对于同一个vlan或不同的vlan来说两个主机通过交换机进行通信,需要添加或删除报文的vlan TAG;但是对于同一个同一个VNID或不同的VNID的主机进行通信,封装VXLAN报文还需要额外提供一个从L2以太网到L4 UDP的头部,始终让人感觉非常的怪异;

b)VLXAN技术将隔离区域数目从原来的12bit的VLAN ID扩展到现在24bit的VNI,可能犹如原先VLAN提出时看待其12bit的大小觉得已经很多了,但是现在网络规模越来越大,随着业务的需求扩展比如多个行星之间的星际通信发展后,可能很快又无法满足需求;这种扩展的方式始终是有缺陷的;

c)对原有VLAN技术的兼容

Vxlan技术如其他革命性的网络技术的出现(OSPF代替RIP或IPV6代替IPV4),应该取代vlan,并且兼容vlan,这点VXLAN技术标准文档里也有提及,即如何让VXLAN里的设备与VLAN里的设备进行通信,也可以考虑将vlan作为VXLAN一个子域的PVLAN技术;但是兼容性其他方面依然是个值得考虑的问题,比如三层交换机现有的IP转发时基于vlan创建三层接口的,可以简单理解为DIP VLAN进行查找表项,然后更改报文的VLAN ID号转发到另一个VLAN里转出;当VXLAN代替VLAN后,如何芯片基于VXLAN的VNID进行三层转发时VXLAN标准里没有提及的内容(+微信关注网络世界),还有如QOS中vlan shapping的映射等技术也存在这个问题;而且封装后还会有报文转发效率、对转发负载均衡性能等方面的影响;

d)对于vxlan技术的出现,现有网络设备支持度也不够;仅有盛科、BCM的T2等芯片,值得一提的是Openvswitch是支持的;VXLAN技术应该常规的传统L3芯片类似,应提供同一个VNI范围内的主机二层互通,不同VNI范围内的主机通过IP地址三层转发互通(一个租户有两个VNID),跨数据中心的主机流量进行二层或三层通信时需要添加含有公网IP地址的outer ip header来走外网进行通信,当然有需求可以提出在VXLAN下trunk、hybrid、access的端口属性,但是这些都没有做出规定;这个功能安装基于vlan的三层转发来讲不是什么高级的特性;但是这个技术都必须在新的交换芯片上来做,而新出的芯片都是比较高级的,比如broadcom的trident系列和Marvell的lion系列,如果在上面加这些功能,暂时没有出现Vxlan与某些技术比如MPLS、TRILL等技术兼容的方案,即如果用了vxlan,这些技术虽然被芯片支持,但很大可能是芯片的表项及其支持的功能就被浪费了;硬件支持工作还有相当大的。

为了解决vlan不够的问题,类似VXLAN的技术还有微软的NVGER和STT等,个人意见是这种技术解决问题方式是非常不彻底的,是革命性替代技术,但是兼容性不足且治标不治本。最当初利用vlan技术对网络进行隔离的选择可能是网络技术发展史上最大的一个错误,现在因为在其基础上建立的三层转发和受其限制而引发的一系列挽救技术都显得蹩脚,尤其在现在得云计算趋势下;我们是不是应该考虑从根上解决该问题而不是每次都做补丁,因为这样导致了技术的复杂性越来越大,报文的这种天价头部的多次封装又导致了传输效率的降低,慢慢的又会引入新的限制从而影响新技术被应用到各种领域,比如逐渐成熟的移动互联网。所以让我们回到二层,回到vlan没有出现的时候所遇到的网络广播风暴和安全隔离的问题上,可能会提出更好的解决办法,衍生更多的好技术,以避免今天网络的痛苦和无奈。


你可能感兴趣的:(尴尬的VXLAN)