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