陳澤嬋 張建豐 林少興



【摘要】? ? 在軟件定義網絡(SDN)中,為構建應用于任意單點對多點場景的虛擬網絡,可采用的常規實現方式有點對點直連或服務器代理,但兩種方式均存在流表規模巨大、帶寬消耗較高、QoS能力不足等缺點,使用三層組播方式構建虛擬網絡則可有效解決以上問題。“SDN虛擬網絡控制器”利用單源最短路徑Dijkstra算法計算所有成員之間的點對點最短路徑,以每個成員作為源節點合并重復路徑,生成所有成員的組播轉發樹,應用OpenFlow協議的組表概念配置SDN交換機流表,實現虛擬網絡構建。同時,在SDN交換機的端口制定QoS策略,實現區分服務。通過搭建物理設備測試系統,驗證了該“SDN虛擬網絡控制器”構建虛擬網絡的可行性,且具備一定粒度的組播QoS能力,可根據用戶需求保障虛擬網絡中各成員節點間的數據傳輸業務。
【關鍵詞】? ? 軟件定義網絡? ? 組播? ? OpenFlow 組表? ? 虛擬網絡
引言:
隨著互聯網的高速發展,網絡用戶的需求呈現多樣化趨勢。如何根據用戶需求構建網絡,并保證不同業務的網絡傳輸質量,是互聯網研究者面臨的新難題。
網絡虛擬化為解決這個問題提供了便利條件,網絡虛擬化使多個邏輯上隔離的虛擬網絡(下文簡稱虛網)可以共存于同一個物理網絡之上,各個虛擬網絡實現不同的功能,彼此的拓撲結構、業務流量和管理互不影響。但網絡虛擬化在傳統網絡設備上的部署需要復雜的軟件平臺支持,或需要專用可編程硬件設備實現,且需要對每臺設備進行配置,操作繁瑣。
而SDN的架構特點在實現網絡虛擬化時具有天然的優勢,SDN最大的特點就是將設備的控制邏輯與轉發功能分離,采取集中控制和軟件編程實現網絡控制,在通用的硬件轉發設備上部署虛擬網絡將變得靈活高效。
當發送者發送同一數據包給多個接收者時,組播可使網絡中任何一條鏈路只傳送單一的報文,從而有效利用帶寬,降低網絡負載,同時避免了單播和廣播中可能出現的廣播風暴問題。
本文基于上述技術的特點,探討了在SDN網絡中虛網的實現方式,設計并實現了一個基于組播方式的“SDN虛擬網絡控制器”(簡稱虛網控制器),虛網中任一成員發送數據,其他所有成員均可接收到,且根據用戶需求為虛網通信預留一定的帶寬資源,具有一定的QoS保障能力。
一、SDN虛網構建方式分析
在構建虛網時,可采用點對點直連、服務器代理以及組播等方式。若全網節點數為,用戶設定的虛網成員個數為、預留帶寬為,有如下分析。
1.1點對點直連方式
點對點直連方式在任意兩個虛網成員之間創建邏輯專用通道,在路徑節點下發源地址到目標地址的流表。因節點間是雙向通信,則需要構建條邏輯專用通道。但根據實際網絡拓撲,將單條邏輯通道映射到物理網絡上時,無法確定中間物理節點,因此SDN實際配置的流表數可能遠遠大于,最大可達。
如圖1所示,圖中只簡單標識了節點A對其它節點D、E、F和H的單向通道,理論上只需要創建4條邏輯專用通道,但實際需要配置12條流表才能實現理想狀態,且節點的帶寬預留值最高為。
由此可見,通過點對點直連方式,隨著拓撲的復雜性增大,需要下發的流表規模急劇增大,并且節點間可能存在多條帶寬資源預留配置,如圖1所示。在此情況下,為節省帶寬資源,控制面需要將節點間多條帶寬資源預留配置映射到同一轉發隊列,同時固定轉發隊列帶寬為。
此種方式下,節點間多條資源配置復用同一轉發隊列,QoS無法得到保障。
1.2服務器代理方式
通過服務器代理方式構建虛網,即選擇某個節點作為服務器。任意虛網成員發送數據時,數據首先發往服務器,由服務器根據虛網成員列表進行數據分發,完成點到多點的數據傳輸。
相對于點對點直連方式,從邏輯專用通道看,服務器代理方式只需要構建數據集中處理點和各節點間的邏輯專用通道,即條,同樣,邏輯專用通道映射到物理網絡上時,服務器代理方式也無法確定中間物理節點,因此SDN實際配置的流表數最多可達。
由此可見,通過服務器代理方式構建通道方式,同樣存在流表規模較大、節點間可能存在多條帶寬預留配置的問題。若為節省帶寬資源,將節點間多條帶寬資源預留配置映射到同一轉發隊列,同時固定轉發隊列帶寬,則存在QoS無法保障的問題。
此種方式對服務器的處理能力、可靠性和帶寬要求極高。數據包必須經過服務器轉發給接收者,因此轉發路徑不是最短路徑。
1.3組播方式
通過組播方式構建虛網時,對所構建虛網分配組播地址,所有虛網節點作為組播成員,計算各節點到組播IP地址的組播轉發樹,并向路徑節點下發組播流表及端口帶寬預留。
從邏輯專用通道看,組播方式只需要構建條組播成員到組播地址通道,如圖2所示。同樣,邏輯專用通道映射到物理網絡上時,組播方式也無法確定中間物理節點,因此SDN實際配置的流表數最多可達條,但數量小于點對點直連方式以及服務器代理方式,如圖2所示。
1.4構建虛網方式對比
通過點對點直連方式或服務器代理方式構建虛網,其實現都是通過應用層的點對點數據分發方式,而組播方式的實現與應用層數據分發方式的區別主要有:
1.路徑計算復雜化,需要計算組播轉發樹;
2.虛網中的終端需支持組播功能;
3. SDN交換機需支持組表,SDN交換機可復制數據包并同時向多個輸出端口轉發,在交換層實現點對多點數據分發;
4.保障QoS效果,組播方式在單個輸出端口只發送一個數據包,有效利用預約的帶寬資源。
3種虛網構建方式的對比見表1。
二、系統設計
2.1總體設計
虛網控制器主要包含資源調度、組網控制、資源池等模塊,如圖3所示。
服務質量保證(QoS)可以通過設置IP首部的TOS字段做到區分業務服務。但由于傳統交換機端口上難以支持多個隊列,因而無法實現多用戶、多虛網情況下的帶寬預約和隔離。所以本系統中利用openvswitch(OVS)交換機的隊列調度機制實現虛擬網絡的帶寬預約與隔離。
2.2控制流程
虛網控制器啟動后,組網控制實時收集并匯總節點資源信息,匯報給資源池,構建并維護實時更新的全局網絡資源池。
構建虛網時,用戶指定組播地址、組播端口,選擇虛網業務類型及加入到虛網的骨干節點,虛網中的骨干節點下掛的所有接入設備均為組播組成員。
資源調度接收到用戶的虛網構建請求后,計算每個組播成員的組播轉發樹,按路徑節點逐個向組網控制發起虛網構建請求。
組網控制負責控制各路徑節點OVS的組播流表安裝。
虛網構建的控制流程如圖4所示。
三、模塊詳細設計
3.1資源調度模塊
資源調度在虛網構建過程中涉及的功能有資源調度管理、路徑計算管理、點對點路徑計算、組播轉發樹生成。
資源調度管理接收用戶的虛網構建請求,并向路徑計算查詢請求計算路徑。
路徑計算管理接收資源調度的組播路徑請求,分解為兩兩虛網成員的點對點路徑請求,并請求點對點路徑計算單元完成路徑計算,同時根據計算結果通知組播轉發樹生成計算虛網成員節點的組播轉發樹。
點對點路徑計算以網絡拓撲骨干節點作為圖的節點,根據用戶指定的業務類型和全局資源池信息確定邊的權值,利用單源最短路徑Dijkstra算法計算組播組兩兩虛網成員節點之間的最優路徑。
組播轉發樹生成采用逐個在組播組成員上構建源樹的方式,實現所有組播成員間的雙向數據收發。在單個組播成員上,將最優路徑合并,生成該成員的最優轉發樹。再根據組播成員信息更改目標路徑,其中組播成員地址與目標路徑中的節點地址匹配時,需要增加該節點接入接口作為此路徑條目的出口,用于將數據包轉發到接入接口處的終端。然后將組播轉發樹分解為每個路徑成員(每個虛網成員有各自的組播轉發樹,路徑成員指所有組播轉發樹包含的路徑節點集合)的資源預留條目,逐個封裝結果發往組網控制進行流表下發。
3.2組網控制模塊
組網控制模塊軟件構成如圖5所示。
資源信息采集通過收集并匯總節點設備參數、鄰居、帶寬等信息,匯報給資源池,構建并維護全局網絡資源池。
虛網構建接收到資源調度發出的虛網構建請求后,通過QoS配置通知OVS創建對應出端口的QoS策略,并根據業務類型配置隊列的優先級、根據預留帶寬范圍配置隊列的最大/最小速率。
QoS策略創建成功后,虛網構建調用流表管理向OVS發送協議,創建類型為all的組表,并安裝對應的流表,實現數據包的克隆和多端口轉發。
四、系統測試
4.1測試環境
測試環境如圖6示,switchA/B/C/D構成骨干網絡、PC1/2/3/4為接入終端。左下框中的PC5+E負責產生QoS業務數據,可視為接入終端。
4.2組播功能測試
1.用戶向A的虛網控制器發送申請,將A、C、D加入虛網,業務類型選擇“普通”,組播地址為224.0.0.100,組播端口為5002。
2. PC1、PC2、PC3、PC4啟動測試工具,加入IP為224.0.0.100、端口為5002的組播組;
3.在任意PC發送數據,組播組中的PC均能收到。
4.3 QoS測試
系統中所有網卡限速10M,使用iperf3軟件測試。
4.3.1? 無QoS能力測試
繼續執行如下步驟:
4. PC4上打開分別監聽5001、5002端口。
5. PC1首先向PC4的5001端口發起60s點對點灌包。啟動10s后,再向組播組224.0.0.100的5002端口發起20s組播灌包。
測試結果為:忽略起始5s,點對點灌包平均帶寬約為9.7 Mbps,組播灌包平均帶寬為0。
該結果表明在未設置QoS策略時,OVS將優先分配帶寬給先傳輸的業務數據,帶寬耗盡后,后傳輸的數據將無法保障QoS。
4.3.2? QoS能力測試
為獲得具有dscp值的業務數據,在E上設置匹配udp端口號為5002則執行動作SET_DSCP:46的流表。則發往組播端口5002的數據,經過E后dscp值將被設置為46。
詳細測試步驟如下:
1.用戶向A的虛網控制器發送申請,將A、C、D加入虛網,業務類型選擇“交互話音”,組播地址為224.0.0.100,組播端口為5002。
以D為例,增加隊列id為1、最小速率1Mbps、最大速率5Mbps的隊列配置;增加匹配dscp值為46則動作為SET_QUEUE:1的流表項。
2. PC1、PC2、PC3、PC4加入目標IP為224.0.0.100、端口為5002的組播組。
3. PC4上監聽5001、5002端口。
4. PC5首先向PC4的5001端口發起60s點對點灌包。啟動10s后,再向224.0.0.100的5002端口發起20s組播灌包。
測試結果為:忽略起始5s,點對點灌包平均帶寬約為7.2 Mbps,組播灌包平均帶寬約為4.7 Mbps。
該結果表明,在網絡發生擁塞時,通過在OVS交換機上設置QoS策略,可以限制低優先級數據流占用帶寬,保障高優先級數據流的傳輸。