劉瑛



摘要:為了滿足云數據中心靈活多樣的網絡服務需求,提出了一種基于SDN的Openstack云數據中心系統架構,分析了SDN管理平面和業務平面的關鍵技術,研究了Openstack Neutron模塊和SDN控制器的結合方法,闡述了基于Vxlan的組網技術方案,并經過實際部署,驗證了本架構在Openstack云數據中心整體方案中的有效性。
關鍵詞:軟件定義網絡 Openstack云數據中心 Openflow協議 Vxlan
1 引言
云計算近十年來受到互聯網、IT和電信業共同的關注,云計算技術的快速發展和廣泛應用使得數據中心的業務形態產生了很大的變化。云計算利用自身所擁有的計算、存儲、網絡、軟件平臺等資源向用戶提供虛擬資源出租,高度模塊化和自動化的云計算數據中心是業界研究的熱點。目前,基于Openstack架構的云計算數據中心占領了絕對的市場份額。
云計算數據中心提供虛擬資源服務的方式具有自助、彈性、靈活和按需的特點,網絡也作為服務(Network as a Service,NaaS)面向客戶提供。為滿足云計算多樣化的業務服務需求,網絡應面向不同用戶和應用提供動態、按需、隔離的網絡環境和自定義網絡業務鏈的連接服務?;贗P的傳統網絡架構在虛擬化、靈活配置和可編程方面能力不足,存在4 k個Vlan制約用戶數量,無法解決不同用戶復用IP地址段等諸多問題。為了解決上述問題,軟件定義網絡(Software Define Network,SDN)應運而生。
SDN是一種新型網絡架構,可以實現上層業務應用對底層網絡資源的直接控制和使用,打破不同設備廠家的技術壁壘,提高網絡資源的使用效率,降低網絡方案的投資成本。與傳統的網絡架構相比,SDN把網絡設備的控制平面和轉發平面進行分離,采用控制器集中控制的方式來替代原本分散在各個網絡設備上的控制引擎功能,通過定義開放的可編程接口實現業務的靈活定制[1]。在SDN組成架構中可以分為控制層和網絡轉發層兩個層次,其中控制層即SDN控制器,實現對網絡轉發層設備的操作控制;轉發層負責網絡數據轉發。SDN控制器對外提供兩個外部接口,其中,向上為應用提供自定義業務功能的API稱為北向接口,向下控制使用底層網絡資源的API稱為南向接口。常用的北向接口標準是Restful,常用的南向接口標準是Openflow。控制器接收北向接口的業務需求,通過自身軟件處理,依靠南向接口實現數據中心的網絡設備的遠程自助配置和運行。
2 SDN在Openstack數據中心的系統架構
將業界最主流的Openstack技術和網絡新型架構SDN結合成一個整體解決方案應用在云數據中心,可以最大化呈現兩個技術的優勢。云數據中心SDN解決方案具有多級架構,包括應用層、協同層/虛擬化平臺、控制器和轉發層,如圖1所示[2]。多級架構有助于實現網絡的靈活調度,提供真正的網絡即服務。同時,為保障數據中心的網絡信息安全和流量走向的有序性,基于數據類型將系統架構劃分為管理和業務兩個平面。圖1中的虛線為系統管理流量,實線為用戶業務流量。
(1)應用層
應用層通常指云計算數據中心的運營管理平臺,它是云數據中心的訪問入口,為用戶提供產品和資源的自助服務界面。網絡方面,用戶可以自主靈活定義網絡拓撲,可自定義業務數據鏈路(如防火墻-負載均衡-路由器-交換機-子網),可提供實時網絡流量監控等。
(2)協同層
協同層在Openstack云數據中心特指Openstack平臺。Openstack是2010發起的開源項目,具有簡單、豐富、統一及可擴展的特性。Openstack最新發布的版本包含Nova、Glance、Cinder、Keystone、Horizon、Neutron等六個核心模塊,分別實現云數據中心計算資源管理、鏡像管理、存儲服務、身份驗證、Web界面管理和網絡管理等基本服務功能[3]。網絡模塊Neutron實現用戶網絡拓撲與網絡產品的抽象,如將用戶的網絡拓撲抽離并映射成虛擬機、子網、網絡、安全組規則、彈性公網IP、負載均衡等網絡產品[4]。
(3)控制層
云數據中心控制層由虛擬化平臺和SDN控制器組成,其中SDN控制器負責網絡相關功能實現。SDN控制器一方面接收來自協同層的業務請求一方面收集轉發層網絡設備的狀態、鏈路統計和告警等信息,經過綜合匯總和精準分析,完成全網業務的路徑計算、鏈路設計、策略制定和流表下發等管控操作,實現對網絡轉發層設備的管控與調度。
(4)轉發層
轉發層由具有分組轉發功能的物理網元設備或虛擬網元設備組成,包含多種網元類型,如交換機、路由器、負載均衡和防火墻等。每個轉發層設備均包含管理代理、控制代理和轉發引擎等基本單元,基于SDN控制器南向接口下發的流表完成數據轉發[4],用來滿足云計算環境下的虛擬機流量交換需求并提供靈活的流量調度。
3 管理平面的關鍵技術
SDN在Openstack數據中心的整體解決方案基于數據流量類型可以劃分為管理和業務兩個平面。管理平面是系統平臺為滿足用戶需求進行的命令控制流轉平面,如圖1中的應用層、協同層、控制層和轉發層之間的控制數據流進路徑。業務平面是用戶業務數據在轉發層網絡設備間的運行流轉平面,它與用戶信息關聯緊密。在解決方案的管理平面中,協同層的Neutron模塊和控制器層的SDN控制器的無縫結合是技術要點也是技術難點。
3.1 Neutron
Neutron是Openstack的網絡管理模塊。Neutron對上與應用層交互,在協同層通過消息隊列與Nova、Keystone等Openstack模塊交互,面向用戶提供浮動IP、路由、子網、虛擬端口等網絡產品服務。Neutron主要由Neutron Server、插件代理(Plugin Agent)構成。
Neutron Server包含守護進程Neutron-server和各種插件Neutron-*-plugin。守護進程Neutron-server對外暴露API接口,配置管理網絡插件,并把來自API的調用請求傳給已經配置好的插件進行后續處理[5]。插件需要訪問數據庫來維護各種配置數據和對應關系,如路由器、網絡、子網、端口、浮動IP、安全組等[5]。為了實現功能多樣化的云網絡服務,Plugin的種類也極為豐富,有提供二、三層網絡基本功能的L2/L3 Plugin,提供防火墻服務的FWaaS Plugin,提供負載均衡服務的LBaaS Plugin以及提供VPN服務的VPNaaS Plugin等。
插件代理(Plugin Agent)Neutron支持多種類型的插件代理,名字為Neutron-*-agent,通常與Neutron上的各種插件Neutron-*-plugin相對應。云數據中心中用戶業務數據包的處理都是由插件代理來完成的。插件代理通過消息隊列與Neutron-server守護進程及其插件進行信息交互。
Neutron上關于同一類型的插件可以兼容適配多種選擇。比如L2 Plugin可以配置為Linux Bridge模式,也可以配置為Openvswitch或者商用虛擬交換機模式。不同的Plugin配置,后端技術實現方案也不一樣。若配置為Linux Bridge模式,在網絡實現方面仍然是使用傳統的Vlan技術;若配置為支持SDN的Openvswitch,在網絡實現方面可以使用Openflow流表來進行控制轉發,數據流可以使用Vxlan、GRE等技術進行隧道封裝。SDN與Openstack結合應用的一個極大優勢在于Plugin的選擇具有多樣性,這樣就可以靈活實現自定義的后端網絡API。
3.2 Openflow
SDN控制器的常用南向接口是Openflow。Openflow協議的核心思想就是將原本完全由交換機獨立控制的數據包轉發過程轉化為由Openflow交換機和控制器分別完成。
在傳統IP網絡中,交換機基于MAC地址表進行數據轉發,路由器基于路由表進行數據轉發。而在SDN網絡中,Openflow網絡設備基于控制器下發的流表來進行數據轉發。Openflow協議的1.3版本支持多級流表,每張流表包含多個流表項。在單個流表項中,主要關注匹配字段、優先級、計數器、指令、超時時間、Cookie這六個關鍵字段[6]。匹配字段定義了很多具體細項,如源IP地址、目的IP地址、源MAC地址、目的MAC地址、出入端口號、Vlan ID等。匹配字段可以由一個或者多個匹配構成。例如一個匹配字段可以包含TCP協議端口、源IP地址和目的MAC這三個匹配細項。跟傳統交換機只能基于MAC地址轉發的模式相比,流表匹配字段的控制實現方式極為靈活。優先級字段決定在同一個流表中流表項的執行順序,優先級高的流表項可以優先執行。計數器用來統計數據流的計量信息。指令是對數據包動作集的操作。超時時間定義流表存活時間。Cookie通常用于控制器對于流表項的標識。在Openflow交換機的數據包轉發過程中,首先是將數據包包頭的信息與流表項中的匹配字段進行匹配分析,若完全匹配流表項中的指令會更新數據包的動作集,通過動作集實現對數據包的轉發控制。Openflow交換機基于流表處理數據包的工作流程如圖2所示[6]。
通常云數據中心服務器的規模都是千臺及千臺以上,轉發層網絡設備數量也比較多。云數據中心轉發層的網絡設備基于Openflow流表進行數據轉發,若流表超時,網絡設備會向SDN控制器發出請求,獲取新的流表。若流表超時時間設置得過小,網絡設備會頻繁向控制器發起請求,極易導致控制器與網絡設備間的鏈路擁塞,影響控制器的正常運行。因此流表超時時間的大小值需謹慎選取。業界也存在一些其他的解決方案,比如將流表設計為靜態流表和動態流表兩種類型,其中靜態流表會一直存在,這種模式下網絡設備的請求會大量減少。
4 業務平面的關鍵技術
為確保不同用戶在同一物理網絡架構中擁有各自隔離的網絡環境,在SDN整體解決方案的業務平面就不得不提到Overlay技術。Overlay的大體框架是在物理網絡不進行大規模修改的條件下,在現有的物理網絡之上構建一個虛擬網絡,用戶業務數據與虛擬網絡緊密相關。當前主流的Overlay技術都是基于隧道封裝模式,即將原始數據包封裝至隧道里面進行傳輸,主要有Vxlan(虛擬可擴展局域網)、NVGRE(使用通用路由封裝的網絡虛擬技術)和STT(無狀態傳輸隧道)這三種技術形態,差異性在于選擇和構造隧道的技術不同[7]??傮w來看,Vxlan利用了現有通用的UDP傳輸,成熟性極高,具有優勢。Vxlan的數據報文如圖3所示[8]。
Vxlan網絡設備主要有兩種類型,分別是VTEP(Vxlan Tunnel End Point)和Vxlan硬件網關(Vxlan Gateway)。在云數據中心VTEP通常是虛擬交換機,它直接與云數據中心虛擬機相連,負責把原始數據包封裝到Vxlan隧道和對應的隧道解封裝。Vxlan硬件網關除了具備VTEP的功能外,同時也是數據中心內部服務向外發布業務的出口。受限于高性能的轉發需求,Vxlan硬件網關通常是高性能物理交換機。對于Openstack云數據中心的用戶系統而言,具體網絡實現只與Vxlan網絡設備相關,而與底層物理網絡無關。結合前面提到的Openflow,在業務平面的網元設備中通常只有這兩種設備基于流表實現數據轉發。
4.1 VTEP的技術關鍵點
在Openstack數據中心中直接與終端虛擬機(VM)連接的VTEP通常是位于每個物理服務器上的虛擬交換機。虛擬交換機支持Openflow,接受SDN控制器的統一管控。本文以開源虛擬交換機為例,給出物理服務器虛擬化層的組網拓撲,如圖4所示:
虛擬機數據流量到物理服務器的網卡會經過qbr、Br-int和Br-tun三個虛擬網元設備。虛擬機以及三個虛擬網元設備通過Tap設備(Linux內核虛擬化出來的一個網絡接口)進行邏輯連接。
qbr是一個Linux Bridge,主要用于實現虛擬機的安全組規則。安全組規則是通過Iptables技術來實現的。Openstack把安全組的規則定義為由Tap設備實現,但是Openvswitch的Tap端口并不支持Iptable。所以采用一個折衷的方式,在虛擬化層引入Linux Bridge來實現安全組的規則,與Openvswitch聯動工作。
Br-int和Br-tun是由Openvswitch虛擬化出來的網橋。Br-int類似于交換機的功能,它的主要職責就是把這臺物理服務器上所有VM都連接在一起。Br-tun與Br-int的交換機功能有一定差異,它的主要職責是用來充當一個通道層,通過Br-tun Tap設備與其他物理機上的Br-tun構成一個統一的通信層。基于Br-tun,所有物理服務器就可以點對點地形成多個基于Vxlan的隧道通信網絡從而進行大量的數據交換。Br-tun通常是按需建立Vxlan隧道,只有承載同一用戶同一邏輯子網虛擬機的物理服務器之間才會建立Vxlan隧道。通過Br-tun的穿透功能,實現了不同物理服務器上的VM連接在同一個邏輯上的虛擬交換機上。
本文以同一用戶同一邏輯子網的兩臺虛擬機進行數據通信為例,分析數據包的流經路徑和封裝過程如下:
(1)物理服務器A上的VM1(192.168.1.3/24)發出的數據包,經過Linux Bridge到達Br-int,被打上Vlan ID Tag。
(2)數據包到達Br-tun,進行原始以太報文的Vxlan封裝,將Vlan ID轉化為Vxlan隧道ID,并經過Vxlan隧道到達物理服務器B。
(3)數據包到達服務器B的Br-tun,進行Vxlan的解封裝,將Vxlan隧道ID轉化為Vlan ID。
(4)數據包到達到Br-int,剝離Vlan ID Tag,經
Linux Bridge送達物理服務器B上的VM2(192.168.
1.5/24)。
(5)數據包的回程類似。
4.2 Vxlan硬件網關的技術關鍵點
Overlay網絡中的Vxlan硬件網關通常是物理交換機,受SDN控制器的統一管控,也支持Openflow和Netconf兩種配置模式。從冗余性考慮,支持多個網元設備組成網關組實現備份。Vxlan硬件網關組對Overlay網絡提供統一的VTEP IP地址,能夠與物理服務器上的Openvswitch構建Vxlan隧道進行數據轉發??刂破鹘y一管理網關成員的狀態和信息同步,真正實現了無狀態網關組。網關組成員可以動態增減,也可以支持部署多個Vxlan網關組,靈活支持Overlay網絡的動態擴容。
5 結束語
SDN技術是一項全局性、顛覆性的網絡變革技術,它采用IT技術的模式來改造傳統的封閉網絡,為網絡發展帶來新的機遇[6]。SDN在Openstack云數據中心的應用,提供了靈活、擴展和簡單的網絡即服務,已經初步展示了兩大技術相結合的巨大優勢。本文提到的SDN解決方案已經應用在某運營商的千臺服務器規模的公有云數據中心上,能夠面向用戶提供浮動IP、路由、子網等多種網絡服務。但是,SDN在上萬臺超大規模云數據中心組網、跨云數據中心融合組網、網絡運維模式方面仍然需要不斷地進行探索和實踐。
參考文獻:
[1] 熊雄. 面向未來,把握機遇——電信網絡轉型升級需尋求政策突破[J]. 中國電信業, 2015(10): 29-35.
[2] 段曉東. 云數據中心SDN/NFV應用分析[J]. 電信技術, 2015(7): 33-38.
[3] 李莉,李紀成,張超然,等. 基于OpenStack云平臺Neutron關鍵技術研究[J]. 長春理工大學學報:自然科學版, 2015(6): 114-117.
[4] 李晨,段曉東,黃璐. 基于SDN和NFV的云數據中心網絡服務[J]. 電信網技術, 2014(6): 1-5.
[5] 劉志聰,李秦偉,王勝俊. OpenStack云平臺Neutron的研究與測試[J]. 自動化與儀器儀表, 2015(6): 91-93.
[6] 任晶晶,戴錦友,劉瓊,等. 基于OpenStack的SDN相關技術研究[J]. 光通信研究, 2016(1): 11-14.
[7] 謝勝軍,蔡利平,殷鋒. Overlay解決虛擬化難題[J]. 中國教育網絡, 2015(7): 54-56.
[8] 趙輝,丁鳴,程青松,等. SDN與NFV技術在云數據中心的規模應用[J]. 電信科學, 2016(1): 144-151.
[9] 顧戎,王瑞雪,李晨,等. 云數據中心SDN/NFV組網方案、測試及問題分析[J]. 電信科學, 2016,32(1): 126-130.
[10] 張學亮,陳金勇,陳勇. 基于Hadoop云計算平臺的海量文本處理研究[J]. 無線電通信技術, 2014,40(1): 54-57. ★