駱怡航 房秉毅 張志明 亓亞烜
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