云计算最重要的技术实现就是虚拟化技术,计算虚拟化商用的解决方案得到了较成熟的应用,而存储虚拟化已经在SAN上实现得很好了,在网络虚拟化技术方面。业界主流厂商都提出了自己的解决方案,本文分析了数据中心中网络虚拟化的实现相关技术和发展思路。
最早的网络虚拟化技术代表是交换机集群(Cluster)技术,多以盒式小交换机为主,较为古老,当前数据中心里面已经很少见了。而新的技术则主要分为两个方向,控制平面虚拟化与数据平面虚拟化。
在探讨网络虚拟化技术之前,先定义一下云计算数据中心中各种网络类型的定义,数据中心中网络流量的根本出发点是服务器,结合云计算最适合的核心——接入二层网络结构,可以把各种网络分类:
Network1:VM本地互访网络,边界是AccessSwitch,包括物理服务器本机VM互访和跨AccessSwitch的不同物理服务器VM互访两个层面。
Network2:Ethemet与FC融合就是FCoE,边界仍然是AccessSwitch。
Network3:跨核心层服务器互访网络,边界是AccessSwitch与Core Switch。
Network4:数据中心跨站点二层网络,边界是Core Switch。
Network5:数据中心外部网络,边界是CoreSwitch与ISP IP网络。
在大规模数据中心部署虚拟化计算和虚拟化存储以后,对网络产生了新的需求:虚拟机(VM)之间的互通,在DC内部和DC间任意互通,迁移和扩展资源-更多的接口,更多的带宽,至少按照10000个l0Gbit/s端口容量构建资源池。二层网络规模扩大,保证业务与底层硬件的透明和随需部署,数据中心站点间二层互联。DC资源整合,地域无差别。构建真正的大云。服务器前后端网络融合,DC内部网络整合。
1 控制平面虚拟化
顾名思义,控制平面虚拟化是将所有设备的控制平面合而为一,只有一个主体去处理整个虚拟交换机的协议处理,表项同步等工作。从结构上来说,控制平面虚拟化又可以分为纵向与横向虚拟化两种方向。
纵向虚拟化指不同层次设备之间通过虚拟化合多为一,相当于将下游交换机设备作为上游设备的接口扩展而存在,虚拟化后的交换机控制平面和转发平面都在上游设备上,下游设备只有一些简单的同步处理特性,报文转发也都需要上送到上游设备进行。可以理解为集中式转发的虚拟交换机。
横向虚拟化多是将同一层次上的同类型交换机设备虚拟合一,控制平面工作如纵向一般,都由一个主体去完成,但转发平面上所有的机框和盒子都可以对流量进行本地转发和处理,是典型分布式转发结构的虚拟交换机。控制平面虚拟化从一定意义上来说是真正的虚拟交换机,能够同时解决统一管理与接口扩展的需求。
2 数据平面虚拟化
数据通信的两个维度,一个是控制平面,另一个就是数据平面,也就是数据转发平面。为实现数据平面的虚拟化,于是有了TRILL和SPB这两个新的协议的推出。两个协议都是用L2 ISIS作为控制协议在所有设备上进行拓扑路径计算,转发的时候会对原始报文进行外层封装,以不同的目的Tag在TRILL/SPB区域内部进行转发。
对外界来说,可以认为TRILL/SPB区域网络就是一个大的虚拟交换机,Ethemet报文从人口进去后,完整的从出口吐出来,内部的转发过程对外是不可见且无意义的。
这种数据平面虚拟化多合一已经是广泛意义上的多虚一了,此方式在二层Ethemet转发时可以有效的扩展规模范围,作为网络节点的多个节点虚拟成一个节点来说,控制平面虚拟化目前还在个位到十位数级别,数据平面虚拟化已经可以轻松达到百位的范畴。但其缺点也很明显,引入了控制协议报文处理,增加了网络的复杂度,同时由于转发时对数据报文多了外层头的封包解包动作,降低了Ethemet的转发效率。
在构建数据中心二层网络模型中,核心层与接入层设备有两个问题是必须要解决的,一是拓扑无环路,二是多路径转发。但在传统Ethemet转发中只有使用STP才能确保无环,但STP导致了多路径冗余中部分路径被阻塞浪费带宽,给整网转发能力带来了瓶颈。因此云计算中需要新的技术在避免环路的基础上提升多路径带宽利用率,网络虚拟化技术提到了两个解决上述需求的思路。
首先是控制平面多虚一,将核心层虚拟为一个逻辑设备,通过链路聚合使此逻辑设备与每个接入层物理或逻辑节点设备均只有一条逻辑链路连接,将整个网络逻辑拓扑形成无环的树状连接结构,从而满足无环与多路径转发的需求。
另一个思路是数据平面多虚一,在接入层与核心层交换机引入外层封装标识和动态寻址协议来解决L2MP(Layer2 MultiPath)需求,可以理解这个思路相当于在Ethemet外面搞出一套类似IP+OSPF的协议机制来。
对接入层以下设备来说,整个接入层与核心层交换机虚拟成了一台逻辑的框式交换机,Ethemet报文进Ethemet报文出,中间系统就是个黑盒,就好像IP层面用不着了解到Ethemet是怎么转发处理的一样。这种思路的代表技术是IETF(Intemet EngineeringTask Force)标准组织提出的TRILL和IEEE提出的802.1aq SPB两套标准控制平面多虚一技术。
3 控制平面多虚一技术
目前业界应用最广泛的控制平面多虚一技术就是VSS和IRF,VSS(Virtual Switching System)是Cisco的私有技术,IRF(Intellig叽t ResilientFramework)是在H3C所有数据中心交换机中实现的私有技术。二者的关键技术点如下:
(1)专用链路跑私有协议:Vss使用VSL(Virtual Switch Link),IRF使用IRF link来承载各自的控制平面私有交互协议VsLP和IRF。专用链路使用私有协议来初始化建立邻接、协商主备(描绘拓扑)、同步协议状态,同时会在虚拟化完成后,传输跨机框转发的数据流量;
(2)基于引擎的主备模式:二者的控制平面都是只有一块主控引擎作为虚拟交换机的主控制引擎,其它的引擎都是备份。
所有的协议学习,表项同步等工作都是由这一块引擎独立完成。好在这些设备大都是分布式交换,数据转发的工作由交换板自己完成了,只要不是类似OsPF邻居太多,拓扑太大等应用情况,一块主控大部分也都能完成了。
(3)跨设备链路聚合:前面说了网络虚拟化主要是应对二层多路径环境下防止环路,因此跨设备链路聚合就是必须的了;
(4)双活检测处理:当VSL或IRF link故障后,组成虚拟化的两个物理设备由于配置完全相同会在网络中出现双活节点,对上下游设备造成IP网关混乱。因此VSS/IRF都设计了一些双活处理机制以应对专用链路故障。
首先网络中如果有跨设备链路聚合时,VSS使用PAgP,IRF使用LACP扩展报文来互相检测通知,如果有富裕接口在虚拟化的两台物理设备间可以单独再拉根直连线路专门用做监控,Vss使用VSLP FastHello、IRF使用BFD机制进行检测通知。
另外vss还可以使用IP BFD通过互联的三层链路进行监控,IRF则支持使用免费ARP通过二层链路进行监控。
上述几种方式都是监控报文传输的链路或者外层承载协议不同。当发现专用链路故障时,VSS/IRF操作结果目前都是会将处于备份状态的物理机框设备的所有接口全部关闭,直到专用链路恢复时再重新协商。
需要注意这两种虚拟化技术在进行初始协商时都需要将角色为备份的机框设备进行重启才能完成虚拟化部署。下面以ciscoVss的3种故障检测方式举例,IRF也差不多。如图1所示。
除了上述4个关键技术点外,Vss/IRF还有一些小的相似技术设定,如Domain的设定、版本一致性检查、三层虚接口MAC协商等,都是基于各方面的细节需求来的。由于应用环境相似,因此实现的东西也区别不大。VSs和IRF都是当前较为成熟的虚拟化技术,其优点是可以简化组网,便捷管理,目前IRF技术已经可以支持4个框式核心设备虚拟化一个核心设备,提供单节点超过2000个10Gbit/s接口,具有很强的系统扩展性。
4 数据平面多虚一技术
数据平面多虚一技术的统一特征就是在二层Ethemet报文外面再封装一层标识用于寻址转发,这样基于外层标识就可叭做些多路径负载均衡和环路避免等处理工作了。目前正在推动的公有标准协议主要有TRILL/SPB。
4.1 TRILL协议及其技术实现
TRILL(TRansDarent Interconnect of Lots ofLinks)全称透明多链路互连,在2010年3月时TRlLL已经提交了IETF RFC 5556规范(TRILL:Problemand Applicability Statement),此RFc只是描述了TRILL要解决的问题以及应用范围,定义协议细节的文档目前都还处于Draft阶段,形成完整的协议标准体系应该还得1~2年。TRILL是专门为数据中心开发的技术,其定义的是在大型Ethemet网络中解决多路径问题的方案。
控制平面上TRILL引入了L2 ISIS作为寻址协议,运行在所有的TRILL RB(Routing Bridge)之间,部署于一个可自定义的独立协议VLAN内,做的还是建立邻接、绘制拓扑和传递Tag那几件事。
数据平面在内外层Ethemet报头之间引入了TRILL报头,使用NickName作为转发标识,用于报文在TRILL网络中的寻址转发(可理解为类似IP地址在IP网络里面转发时的作用)。每个RB都具有唯一的Nickname,同时维护其它RB的TRILL公共区域MAC地址、Nickname和私有区域内部MAC地址的对应关系表。
因为TRILL封装是MACinMAC方式,因此在TRILL公共区域数据报文可以经过传统Bridge和Hub依靠外部Ethemet报头转发。
普通Ethemet报文在首次从TRILL边缘RB设备进入TRILL区域时,作为未知单播还是依照传统以太网传播方式,广播给所有其它的RB节点。但是除了边缘RB外,TRILL区域中间的RB和传统Bridge都不会学习此数据报文中私有区域内部MAC地址信息,有效的降低了中间设备的MAC地址表压力。
为了防止环路同时做到多路径负载均衡,TRILL的每个RB在初始建立邻接绘制拓扑时,都会构造出多个多播树,分别以不同的Nickname为根,将不同的未知单播/多播/广播流量Hash到不同的树,分发给其它所有RB。
由于全网拓扑唯一且构造树时采用的算法一致,可保证全网RB的多播/广播树一致。在RB发送报文时,通过将报文TRILL头中的M标志位置l来标识此报文为多播,并填充树根Nickname到目的Nickname字段,来确保沿途所有RB采用同一颗树进行广播。多播与广播报文的转发方式与未知单播相同。已知单播报文再发送的时候,会根据目的RB的Nickname进行寻路,如果RB问存在多条路径时,会逐流进行Hash发送,以确保多路径负载分担。
另外TRILL除了支持外层Ethemet封装在传统以太网中传输外,还规定了一种外层PPP封装方式可以跨广域网技术传输。
TRILL的主要技术结构就是上面这些了,目前各个芯片厂商都已经进入TRILL Ready的阶段,随着技术标准完善发布并被广泛客户所接受,相关产品商用是很快的。
4.2 SPB协议及其技术实现
要说SPB需要先谈PBB(Provider BackboneBridging)。PBB是IEEE于2008年完成的802.1ah标准,为运营商城域以太网定义了一整套MACinMAC的转发机制。但PBB只定义了转发平面的封装内容,当报文封装上外层Ethemet报头在运营商骨干区域二层网络中时,仍然需要依靠传统的STP进行环路避免和转发控制。
于是IEEE在2009年又定义了802.1QayPBB—TE(Provider Backbone Bridge TrafficEngineering),用于在运营商的骨干区域中进行拓扑管理与环路保护,说白了就是通过手工方式配置一堆指定路径取代STP的自动收敛。目前IEEE还有个相关的标准P802.1Qbf,PBB—TE infraStructure protection处于草案阶段,预计2011年发布。
PBB—TE静态规划转发路径,明显无法适用于大型二层网络扩展,于是IEEE再搞出个P802.1aq SPB(ShoIrtest Path Bridging)来,当前也还处于草案阶段。
从IEEE的资料上看SPB主要是为了解决STP阻塞链路浪费带宽的问题而研究出来的。从实现上来看,同样是采用了L2 ISIS作为其控制平面协议进行拓扑学习计算,用MACinMAC封装方式在SPB区域内部进行报文传输。
SPB可细分为SPBV(VLAN QinQ)和SPBM(MACinMAC)两个部分,目前看主要用到的是SPBM。
SPBM是标准的MACinMAC封装,在SPB区域中数据报文也都是依靠外层MAC做传统Ethemet转发。外层Ethemet报头中的源目的MAC就代表了SPB区域边缘的UNI设备,此设备MAC是由L2 ISIS在SPB区域中传递的。
由于在SPB网络中还是采用传统Ethemet进行转发,因此需要定义一系列的软件算法以保证多路径的广播无环和单播负载均衡。下面介绍几个主要的部分:
(1)首先SPB定义了I—SID来区分多个拓扑,I—SID信息在数据报文中以BVID(外层Ethemet报头中的VLAN Tag)形式携带,这样可以解决不同业务多拓扑转发的问题;
(2)每个SPB节点都会为每个I—SID计算3棵树:到达所有相关UNI节点的SPT(Shortest Path Tree)用于单播与多播报文的转发l ECT(Equal Cost Tree)以处理两个UNI间存在多条等价路径时负载均衡转发,自己为根的多播树MT(Multicast Tree)用于未知单播与广播报文转发。
表 SPB和TRILL相比主要不同
(3)任意两点间的Shortest Path一定是对称的IECT的负载均衡是基于不同I—SID分担的。
总的来说,SPB和TRILL相比主要不同如表1所示。SPB目前的最大困扰是转发路径靠软件算法保障,尤其在多路径负载分担时,对CPU计算压力远远超过TRILL和FabricPath。因此实际转发效率还有待验证。
5 小结
从云计算数据中心网络虚拟化技术发展来看,控制平面的虚拟化技术,如已经得到广泛商用的VSS/IRF,这个技术的使用,作为网络虚拟化技术的第一步,目前能够将数据中心单节点的端口容量扩展到2000个10Gbit/s端口,后续会向3000个10Gbit/s端口的规模升级。
随着云计算网络规模的增大,如运营商提出在云基地建设40万台服务器规模的数据中心,势必要引入新的技术,其中本文提到的数据平面虚拟化技术TRILL/SPB都是下一步网络虚拟化实施中可能的选择,这些技术比以前的STP在带宽上多了一倍的扩充,组网规模上也得到扩展,可以构建多层次,面向l~5万个10Gbit/s端口级别的数据中心网络,更适用于云计算超大规模的网络需求。