骆怡航 房秉毅 张志明 亓亚烜
1 清华大学 北京 100083
2 中国联通研究院 北京 100032
3 北京云杉世纪网络科技有限公司 北京 100083
随着云服务的不断成熟,企业IT逐步转型为云计算环境。根据Wikipedia对云计算的定义[1],企业有本地的IT基础设施,外部的IT基础设施由公有云等第三方服务提供商提供。由企业本地IT和外部云环境所构成的混合IT基础设施,形成混合云,如图1所示。
图1 云计算定义及混合云中的网络互连
混合云,需要实现两类网络互联。首先,在云端创建满足多租户业务的虚拟网络,并建立企业网络到云端网络的安全接入;其次,建立云端网络间的弹性互联,包含多云间的网络互联。如此复杂的网络结构,难以通过物理连线的调整或传统的网络技术快速实现。
根据研究机构Gartner的预测,到2017年将有50%的企业部署混合云[2]。在企业IT转型的驱动下,混合云为企业迈入云端构建桥梁,实现企业网络在云端的延伸。要实现混合云的部署,首先需要网络虚拟化架构的支撑;其次,在复杂的网络环境和网络传输要求下,虚拟网络的性能成为保障多租户混合云运行的关键;最后,运营混合云服务需要大规模基础资源的加入和管理,由此需要解决大规模虚拟网络的扩展性问题。
在当前的研究中,学术界和工业界提出了较充分的虚拟化架构研究[3-6],但对虚拟化架构的性能和扩展性问题的研究较少。
在云架构中,用户的业务构建在虚拟环境中。承载用户业务的逻辑网络如图2所示。一个用户可构建多个虚拟网络(Virtual Net,VNet),每个虚拟网络包含多个虚拟机(Virtual Machine,VM),虚拟网络之间通过虚拟网关(Virtual Gateway,VG)实现三层互联。分处多地的虚拟网络通过VPN接入实现三层互联[5]。
在实际部署中,同一个虚拟网络可以构建在单台物理服务器内、多台物理服务器间、机架之间,甚至是在不同的数据中心。如图2所示,虚拟网络VNet1包含4台虚拟机,其中3台虚拟机部署在服务器Server1上,虚拟机VM4部署在服务器Server2上。在Server1上,通过OVS(Open vSwitch)技术构建出虚拟交换机(Virtual Switch, VS)vs1,实现VM1、VM2和VM3在Server1内部的互联互通,并通过VLAN与其它虚拟网络实现隔离。不同服务器内的虚拟机,经过Fabric实现互联,由Fabric为虚拟网络构建vFabric(Virtual Fabric,VF)。Fabric是一个扁平化的二层通信网络,由交换机通过多种技术搭建而成。在该网络虚拟化架构中的Fabric,使用了链路汇聚技术(LAG)、等价多路径路由技术(ECMP)和GRE/VxLAN隧道技术等[6]。
图2 虚拟化网络
物理部署由控制器、网关设备、虚拟机服务器和物理交换机构成。如图3中的部署示例,虚拟网络包含两台虚拟机和一台虚拟网关,它们通过虚拟交换机(vs)和vFabric实现互联;而Fabric由交换机和GRE/VxLAN隧道组成。隧道两端所连接的机架可以位于同一数据中心,也可以分布在不同的数据中心。不同的虚拟网络间实现二层隔离,通过虚拟网关实现不同虚拟网络间的三层互联,通过隧道技术实现跨机架和跨数据中心间虚拟网络的三层互联。
图3 物理部署
网络虚拟化的三层架构实现了多租户虚拟网络跨机器、跨机架和跨地域互联。但是,虚拟化本身要占用一定的计算、缓存等资源,每个虚拟设备的性能远不及原始的物理设备。网络虚拟化同样存在性能问题,在混合云中保证虚拟网络性能,需要尽可能地减少对物理资源的耗损,并保障虚拟网络内和虚拟网络间的网络性能。如图4所示,分别从网关、交换机和服务器层进行性能优化。
图4 虚拟网络性能优化
在网络虚拟化架构中,将物理网关转化为多个虚拟网关。为保证虚拟网关的网络处理性能接近物理设备,从两方面进行设计和优化。
1) 通过硬件加速卡和软件多线程加速网关性能。硬件加速卡包括带硬件加解密TSO/UFO/GRO/RSS等功能的物理网卡,通过将占用计算资源的网包进行加解密和分片等操作,分配给物理网卡进行硬件加速处理,可以极大地降低网络虚拟化带来的资源损耗。通过硬件将接收到的多个TCP网包聚合成一个大的网包后,传递给上层网络协议栈,从而减少虚拟网关的处理开销,提高设备处理网包的性能。通过硬件将不同的网流分成不同队列,并分配到多个CPU核心,并行处理以提高处理效率。
软件多线程包括基于DPDK(Data Plan Develop Kit)的多线程加速,通过DPDK优化将虚拟网关的软件协议栈设计为多线程处理和流水线操作,从而提高虚拟网关的网络处理性能。
此外,通过改进MTU等网络参数,进一步优化东西方向的网络转发性能。
2) 通过消除冗余的虚拟中间层,减少资源损耗。在网络虚拟化架构中,网关设备并没有通过虚拟机方式来实现虚拟网关,因为单纯的网络七层协议处理并不需要靠完整的操作系统来实现。在此,通过灵活的虚拟接口和高效的网络策略实现多租户虚拟网关,虚拟网关直接利用的是物理设备的能力,完全消除Hypervisor等虚拟化中间层,避免了计算虚拟化所带来的额外资源消耗。
基于上述的优化方法,每个虚拟网关的处理能力上限能接近物理设备,即能共享硬件性能;同时,通过策略设计能够保证每个虚拟网关的最低性能。
在网络虚拟化架构中,物理交换机转化为多个虚拟子网。物理交换机主要依赖其TCAM转发芯片实现高速的流表查找及网包转发。在正常的网络规模下,vFabric相关的流表数不多,能够完全部署在TCAM转发芯片上,此时交换机的转发处理完全集中在快速的TCAM转发芯片上,软件层面并未介入,此情形下的性能可以达到线速的10/40Gb/s。然而,当vFabric相关的流表数过大,无法全部在TCAM转发芯片上部署时,交换机会不断要求更新TCAM流表以处理不同的网络流量,使得软件层面的流表查找及计算下发等慢速操作流程介入,交换机的整体性能会急剧下降。为保证vFabric的网络性能,可以从算法和硬件两方面解决性能问题。
1) 通过分配与调度算法,控制交换机流表数。一方面,根据机架内物理服务器当前的资源使用状态,控制器将同一vFabric的虚拟机节点部署到同一物理服务器或数目尽可能少的物理服务器上。该分配机制使得vFabric所对应的物理交换机的接口尽量最少,相应地减少了对应VLAN的流表数。另一方面,将需要跨服务器部署的不同vFabric的虚拟机节点尽可能地部署到相同范围内的几台物理服务器上。该分配机制使得多个vFabric可以聚合为粗粒度的流表,从而减少整体的流表数。该分配和调度算法的目标是减少物理交换机上的流表数。
另外,控制器还将根据资源分配情况动态调度优化,严格控制物理交换机上所部署的流表数低于TCAM转发芯片的容量大小,始终保证10/40Gb/s的线速转发。
2) 通过硬件隧道技术,实现二层高速互联。vFabric通过物理交换机的硬件VxLAN/NvGRE实现二层的高速互联互通,因此,VxLAN/NvGRE隧道数也会对交换机的性能产生影响。例如,100个机架间实现全网状的二层互联,最多需要建立2 450个隧道,每个机架上的交换机要处理99个隧道,相应地还会产生广播包过多、MAC表过大、隧道流表过多等性能问题。
通过分配和调度算法,控制器将严格控制物理交换机的隧道数在硬件支持范围以内,并按需为各机架动态分配隧道,分配策略是:当且仅当跨机架的vFabric部署发生时,才在该机架间建立隧道,保证尽量少的隧道数;同时,灵活调度各vFabric的虚拟机节点,全局优化隧道数。
基于上述的优化方法,保障物理交换机始终能在一个正常的高速转发状态下工作。
在网络虚拟化架构中,物理服务器通过网络虚拟化转化出多个虚拟交换机(Virtual Switch,VS/vSwitch)。为了实现高性能的vSwitch处理,从分类算法和动态流表注入来提升性能。
由于单台物理服务器上可能有多达30个虚拟机节点,考虑到虚拟机节点的接口数以及各种服务、安全等策略,vSwitch要处理的流表数可能在1K、甚至10K以上。对于如此大规模的流表查找,软件分类算法的性能至关重要。
基于作者已有的研究[7-8],通过Hypersplit算法[8]进行流表的分类和查找,在保持现有区间查找算法的高效分类能力的前提下,大幅降低已有算法的内存使用,支持大规模流表下的高速网包分类转发。对于突发的网络事件,vSwitch可以通过算法动态加入megaflow流表来响应突发事件的处理,让突发事件不至于影响系统总体性能。通过在vSwitch中动态注入流表,能极大地优化流表数,而且可以减少用户空间与内核交互的代价。
另外,由于硬件要比通用CPU的处理效率高很多,通过将隧道功能交给物理交换机来实现,路由功能交给物理网关来实现,加解密等功能交给物理网关的硬件网卡或专用设备来处理,不仅可以提高网络处理效率,而且还能进一步解放物理服务器的CPU资源。
总之,为提高虚拟网络性能,物理服务器上避免做过多的网络协议相关处理,而是将CPU资源集中用于支撑二层流表的查找转发处理,由此获得最佳的网络性能。
虚拟网络的可扩展性问题包含二层网络数量的扩展性,二层网络规模的扩展性以及三层网络性能的扩展性。
传统网络通常使用VLAN对二层网络进行隔离,但是在云数据中心中有明显的局限性:一方面,可用VLAN的总数量受限于4 096,难以满足云环境中大量租户的隔离需求;另一方面,VLAN并不是二层网络的终结点,大量租户设备的MAC地址可能涌入数据中心的汇聚及核心设备,给数据中心网络带来沉重负担。
为解决二层网络数量扩展性问题,学术界和工业界提出一系列架构和技术,例如在三层Overlay网络之上利用STT、NvGRE、VxLAN、Geneve等协议建立隧道,打通隧道两端属于同一个虚拟二层网络的多个分布式虚拟交换机(Distributed Virtual Switch,DVS),如图5所示。其中,VxLAN最为成熟和普遍,也是IETF RFC的方案。
图5 利用VxLAN实现分布式虚拟交换机(DVS)
VxLAN利用VNI(VxLAN Network Identif i er)唯一标示一个虚拟二层网络,在隧道端点(VxLAN Tunnel End Point,VTEP)上独立配置VNI和VLAN的映射关系,即可在二层打通隧道两端两个不同VLAN中的设备。由于VxLAN包头中VNI的长度为24比特,理论上能支持1 600多万个二层网络,高达VLAN总数的4 096倍。另外,由于Overlay网络通过三层互联,客户设备的MAC地址不会进入Fabric汇聚层,降低了Fabric的负载。
除了能够承载大量DVS,一个DVS的规模也需要足够的弹性,以支持用户业务的增长。除了能够在同一个数据中心内弹性扩展,用户业务的灾备和负载均衡需求也对DVS的跨地域扩展提出了要求。由于VxLAN对底层Overlay网络没有特殊要求,在同一数据中心内,利用动态路由协议(如BGP)即能高效管理Fabric,不同数据中心之间也能直接利用现有的大量MPLS专线进行互联,如图6所示。
图6 基于VxLAN构建规模可扩展的Fabric网络
随着DVS规模的增大,简单利用VxLAN的组播或广播机制承载客户设备的广播报文,将很快遇到性能瓶颈。得益于SDN控制器对全局网络拓扑的掌控,通过在ToR交换机上设置精细规则,可以实现客户广播报文在隧道网络上的定向发送。另外,为解决ToR单点失效问题,一般会利用MLAG将两个ToR交换机堆叠。在MLAG开启的情况下,若希望同时使用两个ToR交换机的隧道封装能力,也需要设置精细规则以防止隧道环路。
另一方面,当DVS通过Fabric中的VxLAN隧道互联时,Fabric需要提供足够的数据交换能力以实现DVS内设备之间的无差别通信。在理想情况下,整个Fabric的收敛比需要趋近1:1。在机架范围内,基于普通的10Gb/s接入交换机和LAG/MLAG技术,通过控制器对虚拟机数量的合理分配,由此可提供1Gb/s接入带宽的DVS,但是当DVS跨越多个机架时,网络的瓶颈会出现在Fabric中。
机框式交换设备的超强交换能力是Fabric汇聚层的一种选择,但这样的投入成本通常很高,而且机框的存在也制约了汇聚层的大小。
Clos交换架构[9-10]是一个多级架构,具有无限扩展的能力。本研究中针对的网络虚拟化架构,利用大量普通交换机来搭建Clos无阻塞Fabric,如图7所示。
图7 利用3N个N×B的普通交换机搭建Fabric汇聚层
当每个交换机拥有N个带宽为B的接口时,利用3N/2个这样的交换机可以搭建出N×N/2个带宽为B的接口的Fabric。例如,当N=32、B=40G时,利用48个32x40G的交换机可搭建出512个40G接口的Fabric,可以为2 048个万兆服务器网卡提供无阻塞互联。
然而,1:1无阻塞网络仅仅是理想追求。在SDN控制器的智能调度下,通过合理分配资源和动态迁移跨机架流量热点,在牺牲收敛比的情况下也能让DVS实现无阻塞交换。利用常见的48x10G+6x40G ToR交换机,当使用4个40G接口连接汇聚时可实现3:1收敛比。在汇聚层,利用28个32x40G交换机也能搭建3:1收敛比的Clos网络。
在解决了DVS的可扩展性问题之后,整个虚拟网络的瓶颈出现在虚拟网关上。VG的作用在于连通东西向跨二层流量以及南北向流量。此时,需要利用多个VG搭建出性能更高的分布式虚拟网关(Distributed Virtual Gateway,DVG),如图8所示。这方面的挑战主要在于控制平面上的规则状态同步,以及数据平面上的网络流量负载分发。
图8 分布式虚拟网关(DVG)
当DVS规模增大时,不同DVS之间如果都需要通过一个VG交换流量,VG容易成为整个IDC的流量热点。如图9所示,两个不同DVS内的VM通信时,即使VM处于同一台宿主机上,流量也要经过VG所在的服务器。通过分布式部署VG,可以直接将同一台宿主机的跨DVS通信终结在服务器内部,从而降低了跨服务器流量。
图9 分布式部署VG
另外,为支撑南北向的突发大规模访问,在VF上利用端口汇聚(LAG)、OpenFlow流量调度,以及二层网络包头改写技术,可以将同一个VG的南北向流量分发到他的多个运行体(DVG)上,从而实现三层负载均衡,如图10所示。
图10 DVG实现三层负载均衡
将多个DVG虚拟化为一个性能更高的VG,正是利用了SDN对网络的灵活控制,实现了网络资源多虚一。
混合云为企业提供跨越企业网络和云端网络的混合IT基础架构。混合云所提供的企业网络与云端网络的安全接入,以及云端网络互联,需要解决多租户、异构网络环境下的复杂管理问题。本文基于网络虚拟化的三层架构(“vSwitch + vFabric + vGateway”),实现大规模跨域混合云的部署需求。针对虚拟化网络的转发性能,分别从网关层、交换机层和服务器层设计不同的性能优化策略,极大地提高虚拟网络性能。针对虚拟化网络的扩展性,通过分布式虚拟交换机(DVS)和分布式虚拟网关(DVG)的设计,解决二层网络数量和规模的扩展性,以及三层网络性能的扩展性问题。
参考文献
[1]Wikipedia:cloud computing type[EB/OL].[2015-01-31].http://en.wikipedia.org/wiki/Cloud_computing
[2]Gartner:hybrid cloud analysis and prediction[EB/OL].(2013-10-1)[2015-01-31].http://www.networkcomputing.com/cloud-infrastructure/gartner-50--of-enterprises-usehybrid-cloud-by-2017/d/d-id/1111769?%20
[3]Matias J,Jacob E,Sanchez D,et al.An openflow based network virtualization framework for the cloud[C]//Cloud Computing Technology and Science(CloudCom),2011
[4]Donadio P,Parladori G.Network virtualization in the cloud computing era[C]//Telecommunications Network Strategy and Planning Symposium(NETWORKS),2012
[5]Qi Yaxuan,Wang Kai,Yang Baohua,et al.LiveSec:OpenFlow-based security management for production networks[C]//INFOCOM, 2011
[6]Liu Zhi.LiveCloud:A lucid orchestrator for cloud datacenters[C]//CloudCom,2012
[7]Qi Yaxuan,Xu Bo,He Fei,et al.Towards highperformance flow-level packet processing on multicore network processors [C]//IEEE Symposium on Architectures for Networking and Communications Systems (ANCS),2007
[8]Qi Yaxuan,Xu Lianghong,Yang Baohua,et al.Packet classification algorithms: from theory to practice [C]//IEEE INFOCOM,2009
[9]Clos C.A study of non-blocking switching networks[J].Bell System Technical Journal,2011,32(2):406–424
[10]Wei Song,Edward D,Liu Zhi,et al.Routing of asynchronous Clos networks[J].IET Computers & Digital Techniques,2011,5 (6):452-467