摘 要: 基于SDN技術的虛擬租戶網絡(VTN)能夠使得數據中心網絡向多個租戶提供互相隔離的虛擬網絡。VTN提供了VLAN映射、端口映射用于將虛擬網絡節點與物理網絡節點進行映射。其中VLAN映射需要對每個主機配置VLAN id,增加了映射的復雜性;端口映射時一旦出現交換機端口故障便不能成功映射。為解決上述問題,本文提出了基于MAC地址映射方法,即通過主機的MAC地址直接與虛擬節點進行映射。通過搭建OpenDaylight實驗平臺驗證了該方法的可行性。結果表明,該方法能夠解決以上映射中的不足,簡化了VTN網絡與底層網絡映射配置,提高了VTN的性能。
關鍵詞: SDN;VTN;VLAN映射;端口映射;MAC地址
0 引言
隨著云服務規模的擴大,云計算服務提供商需要向大量租戶提供相互隔離的、具有質量保證的虛擬網絡,即實現網絡即服務(NaaS)模式[1]。傳統構建虛擬網絡具有一定的局限性。其中VLAN具有個數限制以及配置VLAN的交換機需要處理大量的虛擬機使得轉發表變得非常巨大[2]。IP覆蓋方法如VXLAN[3]、GRE方法[4],這些方法在新增虛擬機時,虛擬交換機就要更新,缺少糾錯工具使得覆蓋網絡管理復雜。
基于SDN技術的虛擬租戶網絡(Virtual Tenant Network,VTN)能夠很好地使得數據中心向多個租戶提供互相隔離的虛擬網絡,借助于SDN控制器掌握全網網絡拓撲便于進行集中化控制[5]。解決虛擬網絡與物理網絡的映射問題是實現VTN的核心環節,也是本文的研究重點。
目前對VTN提供的端口映射、VLAN映射的研究相對成熟。參考文獻[5]提出的端口映射是指通過物理交換機的端口與虛擬網絡的虛擬交換機接口進行映射,但網絡易受到物理交換機端口故障或主機入網位置變動的影響。參考文獻[6]提出的VLAN映射是指根據數據流的VLAN id與虛擬交換機進行映射,但需要對每個主機配置VLAN id且VLAN存在個數限制。
本文在現有映射技術的基礎上,針對基于SDN技術的虛擬租戶網絡技術,提出了基于主機MAC地址進行虛擬網絡的映射,并對基于主機MAC地址的映射方案進行設計以及實現。實驗結果表明,基于MAC地址的映射機制具有一定的可行性,解決了物理交換機故障對網絡的影響,簡化了VTN網絡與底層網絡映射的配置,提高了VTN的性能。
1 基于SDN的VTN技術
1.1 VTN簡介
虛擬租戶網絡(VTN)所解決的場景就是現在數據中心網絡的場景。不同租戶需要不同的網絡配置,運行不同的應用程序。而這些需求將在同一個物理網絡中實現,達到資源的共用。如果不建立虛擬網絡,那么在同一物理網絡中分別針對不同租戶進行配置和管理,情況將變得十分復雜[7]。
本節主要介紹了VTN的網絡架構。租戶將通過VTN應用程序建立所需的虛擬網絡,該虛擬網絡能夠自動與物理網絡進行映射。其中與物理網絡映射是VTN的核心問題,也是本文研究的重點。
如1圖所示,VTN由兩個關鍵部分組成:VTN Coordinator和VTN manager。其中VTN manager向VTN Coordinator提供了建立虛擬網絡的APIs。該虛擬網絡由虛擬節點、虛擬鏈路、虛擬接口組成,如表1所示。
VTN協調組件向VTN應用程序提供REST API,供用戶建立虛擬網絡,當虛擬網絡跨越多個SDN控制器網絡時,支持多個控制器之間的合作配置,支持動態添加控制器和刪除控制器。
1.2 VTN網絡與物理網絡映射
一旦租戶通過調用VTN接口建立虛擬網絡,該虛擬網絡就能夠與物理網絡進行映射,VTN通過這些映射關系調用SDN控制器routing功能接口計算節點間的轉發路徑,然后告訴SDN控制器的forwarding rules轉發規則功能模塊添加什么樣的流表,并通過SDN控制協議向各個交換機下發轉發規則。
VTN映射分為兩個方面:虛擬節點映射以及虛擬鏈路映射。VTN的鏈路映射問題由SDN控制器決定,SDN控制器掌握全網網絡拓撲以及資源信息,根據自身的路徑計算功能,指定節點之間的路徑。因此本文只討論VTN的節點映射問題。目前VTN節點映射方法包括以下兩種:
(1)VLAN映射:利用網包的VLAN id與vBridge進行映射。
?。?)端口映射:利用網包到達的物理交換機號、端口號、網包的VLAN號(如果沒有劃分VLAN,則VLAN id默認為0)與虛擬網絡中的虛擬節點vBridge的接口進行映射。
這些映射配置完成后,VTN manager存儲這些映射關系,判斷數據流所屬的虛擬網絡,并按照相應的虛擬網絡轉發規則進行轉發。
圖2所示為虛擬交換機通過VLAN映射、端口映射與底層物理網絡的交換機進行映射。
通過VLAN映射與端口映射都能夠使物理交換機與虛擬交換機相對應,但都具有一定的缺點。VLAN映射的缺點是每個主機都要進行VLAN的配置,且VLAN有個數限制,使得網絡容量受限,不易擴展。端口映射的缺點是當虛擬網絡的數量和規模增大時,端口映射表巨大,而且該種映射配置屬于靜態配置,一旦與物理交換機相連的主機位置改變或者物理交換機發生故障都會相應地影響虛擬網絡的可靠性和安全性。
為了改善以上映射的不足,本文提出基于MAC地址的映射。
2 設計與實現
2.1 MAC地址映射模塊設計目標
MAC地址映射,就是根據主機的MAC地址與虛擬交換機vBridge進行映射。MAC地址映射過程如下:
(1)與主機直接接入的物理交換機第一次收到來自主機的數據流時,會將其封裝在packet-in中發給控制器。
?。?)控制器根據VTN manager中存儲的映射關系,判斷該數據流屬于哪個虛擬網絡,根據該虛擬網絡的路徑規則以流表的形式下發到物理交換機上。
其中虛擬網絡的路徑是由VTN manager根據映射關系調用SDN控制器提供的路徑計算routing功能來計算,并把計算結果通過API調用SDN控制器提供的forwarding rules模塊,添加相應的流表信息,然后forwarding rules模塊把要求發給相對應的協議插件(protocol plugin),由協議插件打包信息發給底層交換機。
?。?)當交換機收到轉發規則后,對該主機的數據流進行轉發。具體流程如圖3所示。
因此要實現MAC地址映射,VTN manager需要添加如下功能:
?。?)獲取主機信息,即SDN網絡下主機的MAC地址。
?。?)記錄分配給虛擬網絡的主機MAC地址信息以及未分配的主機MAC地址。
?。?)為了防止其中一個已經分配的主機再次分配給新的虛擬網絡,需要對主機進行標記。
(4)在已有的MapType中添加MacMap,即VTN manager可實現的三種類型的映射。前兩種是端口映射、VLAN映射。
(5)實現MacMap啟動程序。
當MacMap機制啟動后,屬于VTN網絡的主機向Openflow交換機發送數據包,VTN管理組件通過控制器向該Openflow交換機下發流表轉發規則,虛擬交換機vBridge具有自學習終端信息的能力,并配置MAC轉發表。最終使得VTN網絡中的主機能夠互相到達。
2.2 MAC地址模塊實現
本文在研究Opendaylight開源控制器功能以及VTN manager功能基礎上,實現了基于MAC地址虛擬網絡資源與物理網絡資源的映射。其中Opendaylight控制器提供了拓撲管理、routing路由計算、forwarding rules流表添加模塊、Arphandler模塊等功能[8];VTN manager向用戶提供了構建虛擬網絡的資源,包括虛擬交換機、虛擬鏈路等,存儲用戶的物理資源與虛擬資源的映射信息,根據這些映射信息通過API調用routing功能接口,計算相應的路徑,并通過控制器中的流表添加模塊添加相應的流表,最后打包給底層物理交換機[9]。
其中,在VTN manager中實現基于MAC地址映射需要實現如下功能:
?。?)獲取SDN網絡下主機信息,該功能通過調用SDN控制器提供的HostTrack功能接口實現。部分實現代碼如下:
public class host {
public void GetHost() throws IOException, JSONException{
JSONObject response=
client.json(odl.resolve("hosttracker/default/hosts/active")).toObject();//解析控制器中hosttrack的信息
JSONArray data=response.getJSONArray
("hostConfig");
?。?)因為物理交換機處理的是幀,因此獲取主機信息后,需要記錄所有的主機MAC地址。然后對屬于或不屬于VTN網絡的主機進行記錄,創建MacMapConfig類,該類作為MacMap機制的配置信息,指出了已經分配的主機和沒有進行分配的主機。通過列表來實現部分代碼如下:
Public class MacMapConfig implements Serializable
{Private final Set<DataLinkHost>allowedHosts=
New HashSet<DataLinkHost>();//分配的主機
Private final Set<DataLinkHost>deniedHosts=
New HashSet<DataLinkHost>();//未分配的主機
?。?)應用MacMapPortBusyLog類來記錄該主機有沒有其他的映射。
Public final class MacMapPortBusyLog{
Private final MacVlan host;
Private final NodeConnector port;
//與主機相連的交換機端口
Private final MapReferenceotherMap;
//判斷該端口有無別的映射
(4)在VTN manager提供的MapType中添加MacMap。部分代碼如下:
Enummaptype
{portmapping,vlanmapping,macmapping}
?。?)實現MacMap啟動程序。當與主機直接接入的物理交換機端口已經映射,且該端口不存在其他映射則可啟動。部分代碼如下:
Public MacMapActivation(NodeConnectorport,PortMapreleased,boolean activated){...}
以上功能是MacMap機制的主要功能,除此之外還需要其他一些補充,限于篇幅不再贅述。將MacMap一系列代碼結合VTNmanager功能以及Opendaylight控制器,可實現簡單的MacMap機制,最終以接口的形式供租戶進行調用,即通過調用MacMap機制使得虛擬節點與物理網絡設備進行映射。
3 測試與分析
3.1 測試環境
服務器端:物理主機上運行ubuntu12.04系統,配置Java環境,安裝Opendaylight控制器,安裝VTN Manager。數據轉發網絡采用Mininet進行模擬[10]。
客戶端:物理主機上運行ubuntu12.04系統,配置Java環境,安裝myeclipse。其中myeclipse中導入了必要的控制器jar包、VTN manager.jar包以及MacMap機制下的代碼。
3.2 測試步驟與結果分析
?。?)在服務器端運行Opendaylight控制器,運行VTN manager并用Mininet創建轉發網絡(包括4臺主機、3臺openflow交換機),關閉Opendaylight控制器默認的網絡轉發應用,使得四臺主機彼此不可達。建立網絡的命令如下:
Sudomn--controller=remote,ip=<controller-ip>--topotree,2
?。?)配置網絡使得客戶端與服務器端可連接,通過運行myeclipse,打開MacMap機制,使之運行。通過調用控制器HostTrack功能接口得到四臺主機的MAC地址。
?。?)在服務器端的終端輸入命令實現如下流程:
建立VTN1→在VTN中建立虛擬交換機vBridge1→建立MacMap。
即調用MacMap接口使得h1的MAC地址、h3的MAC地址與虛擬交換機vBridge進行映射,如圖4所示。命令如下:
Curl-X PUT http://localhost:8080/controller/nb/v2/vtn/default/vtns/Tenant1/vBridge1/macmap-d′{“host1mac”:{4e:3a:e0:40:2c:5b},“host3mac”:{9e:3b:56:a7:4a:e7}}′
然后應用mininet執行h1和h3的ping操作。最終兩臺主機可以ping通,如圖5所示,h1和h3已被劃分在同一個VTN虛擬網絡中。
實驗結果表明,VTN虛擬網絡可以通過指定的主機MAC地址使得與主機直接接入的物理交換機與虛擬交換機進行映射,即使租戶的主機接入位置發生改變也不影響VTN網絡,使得租戶可以靈活接入網絡。由于不需要額外對端口進行固定配置,簡化了VTN manager的能力。由于獲取主機信息可直接通過調用控制器提供的功能接口,使得虛擬網絡與物理網絡之間的映射變得簡單。同時網絡的容量也得到一定的提高。
4 結束語
本文通過研究基于SDN的虛擬租戶網絡VTN技術,分析了虛擬網絡與物理網絡之間的映射,提出了基于主機的MAC地址的映射方法,該方法解決了終端主機的移動性問題,對基于主機MAC地址的映射方案進行了系統的描述,對MAC地址模塊進行了技術實現。實驗結果表明,所提出的基于MAC地址的映射方案具有一定的可行性,提高了VTN網絡的可靠性,簡化了VTN映射機制。目前研究僅限于在單SDN控制器下租戶網絡的建立,未來還需繼續研究在多租戶技術下基于MAC地址映射機制建立VTN虛擬網絡。
參考文獻
[1] KEMPF J, ZHANG Y, MISHRA R, et al. Zeppelin-a third generation data center network virtualization technology based on SDN and MPLS[C]. Cloud Networking (CloudNet), 2013 IEEE 2nd International Conference on. IEEE, 2013:1-9.
[2] BARI M F, BOUTABA R, ESTEVES R, et al. Data center network virtualization: a survey[J]. Communications Surveys & Tutorials, IEEE, 2013,15(2):909-928.
[3] KANG S H, KWAK J Y, LEE B Y, et al. The study on configuration of multi-tenant networks in SDN controller[C].Advanced Communication Technology (ICACT), 2014 16th International Conference on, 2014:1223-1226.
[4] LARA A, KOLASANI A, RAMAMURTHY B. Network innovation using OpenFlow: a survey[J]. OmmnaonRvy& Oral, 2014, 16(1):493-512.
[5] 陳琳,吳強.基于SDN技術構建數據中心虛擬網絡[J].互聯網天地,2013(1):40-44.
[6] DAS S, SHARAFAT A R, PARULKAR G, et al. MPLS with a simple OPEN control plane[J]. Optical Fiber Communication Conference and Exposition(OFC/NFOEC),2011(10):1-3.
[7] MUDIGONDA J, YALAGANDULA P, MOGUL J, et al. NetLord: a scalable multi-tenant network architecture for virtualized datacenters[J]. ACM SIGCOMM Computer Communication Review, 2011, 41(4): 62-73.
[8] CASADO M, KOPONEN T, RAMANATHAN R, et al. Virtualizing the network forwarding plane[C]. Proceedings of the Workshop on Programmable Routers for Extensible Services of Tomorrow, ACM, 2010: 8.
[9] ELFERKOUSS O, CORREIA S, BEN A R, et al. Opendaylight: towards a model-driven SDN controller architecture[C]. Global Telecommunications Conference(GLOBECOM 2012), IEEE, 2012:1-6.
[10] CHEN Z, DONG W, LI H, et al. Collaborative network security in multi-tenant data center for cloud computing[J]. Tsinghua Science and Technology, 2014,19(1):82-94.