荊有波,曹清越,朱瑞
(1.鄭州大學(xué)河南先進(jìn)技術(shù)研究院,河南 鄭州 450003;2.中國(guó)科學(xué)院微電子研究所,北京 100029)
微電網(wǎng)是指由分布式電源、儲(chǔ)能裝置、能量轉(zhuǎn)換裝置等組成的小型配電系統(tǒng),它以分布式電源為主,利用儲(chǔ)能和控制裝置進(jìn)行調(diào)節(jié),實(shí)現(xiàn)網(wǎng)絡(luò)內(nèi)部的電力平衡。微電網(wǎng)的出現(xiàn)豐富了傳統(tǒng)電網(wǎng)的運(yùn)行模式,提高了供電系統(tǒng)的靈活性和可靠性[1]。由于其發(fā)電設(shè)備多為分布式[2],具有分布稀疏、發(fā)電不連續(xù)且不確定、運(yùn)行隨機(jī)性大等缺陷,傳統(tǒng)的集中式優(yōu)化方式難以揭示多主體之間的交互行為[3],因此對(duì)微電網(wǎng)運(yùn)行情況的調(diào)度控制需要全局動(dòng)態(tài)信息,同時(shí)還要保證在電網(wǎng)災(zāi)變等特殊情況下供電不受影響。
軟件定義網(wǎng)絡(luò)(SDN,software defined network)是一種網(wǎng)絡(luò)虛擬化方法,被譽(yù)為下一代網(wǎng)絡(luò)的關(guān)鍵技術(shù)[4],其通過(guò)OpenFlow 分離網(wǎng)絡(luò)的控制平面和數(shù)據(jù)平面,從而實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)的可編程性。近年來(lái),隨著網(wǎng)絡(luò)應(yīng)用的迅速發(fā)展,SDN 逐漸在學(xué)術(shù)界和工業(yè)界備受關(guān)注[4-6]。SDN 通過(guò)將網(wǎng)絡(luò)設(shè)備的控制平面與數(shù)據(jù)平面分離,以及邏輯上的集中控制,可以實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)流量的靈活控制,促使網(wǎng)絡(luò)資源得到更充分的利用,推動(dòng)網(wǎng)絡(luò)創(chuàng)新的進(jìn)一步發(fā)展。
SDN 的控制轉(zhuǎn)發(fā)分離技術(shù)能很好地滿足微電網(wǎng)全局調(diào)度、及時(shí)處置突發(fā)情況的需求,通過(guò)集中控制特性,能夠感知全局網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)及通信資源使用情況,具有合理分配帶寬、靈活調(diào)度業(yè)務(wù)、改善服務(wù)質(zhì)量(QoS,quality of service)的功能[7],突發(fā)的、不在預(yù)設(shè)方案內(nèi)的網(wǎng)絡(luò)情況會(huì)觸發(fā)packet-in 消息,從而通過(guò)控制器下發(fā)流表解決實(shí)際網(wǎng)絡(luò)問(wèn)題,但在SDN 應(yīng)用中這種OpenFlow被動(dòng)式插入流表項(xiàng)[6]的控制方式容易導(dǎo)致存儲(chǔ)占用和調(diào)度資源過(guò)頻,從而影響微電網(wǎng)中網(wǎng)絡(luò)的健康狀況。
在SDN 中,通常在網(wǎng)絡(luò)的初始化階段采用主動(dòng)式放置流表項(xiàng)以滿足對(duì)網(wǎng)絡(luò)帶寬和網(wǎng)絡(luò)時(shí)延方面有要求的應(yīng)用,而被動(dòng)式放置流表項(xiàng)的方式通常被側(cè)重負(fù)載均衡的應(yīng)用所采用,2 種方式結(jié)合起來(lái)能夠讓SDN 充分調(diào)整網(wǎng)絡(luò)中的負(fù)載壓力,讓擁擠的路由得到及時(shí)的緩解,讓空閑的設(shè)備得到更充分的利用。然而,每臺(tái)OpenFlow 交換機(jī)所能存儲(chǔ)的流表項(xiàng)數(shù)目和流條目處理能力有限[8],導(dǎo)致現(xiàn)有的流量調(diào)度方案存在以下問(wèn)題。1) 負(fù)載均衡得不到保證:目前商用OpenFlow 交換機(jī)至多能支持存儲(chǔ)數(shù)萬(wàn)條流表項(xiàng),突發(fā)流量的激增、流處理能力的不足和流表溢出[9]會(huì)導(dǎo)致活動(dòng)路由的流量分布不均,部分路由過(guò)分擁擠甚至堵塞,影響負(fù)載均衡的實(shí)現(xiàn)。2) 服務(wù)質(zhì)量產(chǎn)生波動(dòng):隨著涌入網(wǎng)絡(luò)的流量增加,丟包率也不斷提升,那些沒(méi)有主動(dòng)式配置流表項(xiàng)的流量會(huì)促發(fā)packet-in 消息風(fēng)暴,導(dǎo)致控制器不得不做出大量響應(yīng)處理這些攜帶流信息的數(shù)據(jù)包,與此同時(shí),交換機(jī)設(shè)備的流表項(xiàng)也無(wú)法及時(shí)進(jìn)行增刪改操作,進(jìn)一步延緩了后續(xù)流量的處理,惡化了網(wǎng)絡(luò)服務(wù)質(zhì)量。
為了解決以上問(wèn)題,實(shí)現(xiàn)微電網(wǎng)中活動(dòng)路由的負(fù)載均衡和服務(wù)質(zhì)量,SDN 控制器需要考慮每條路由的鏈路負(fù)載和每個(gè)流帶來(lái)的負(fù)載,并且主動(dòng)式地插入引導(dǎo)式流表項(xiàng)使瞬間大量涌入的流量可以按照網(wǎng)絡(luò)中的已有路由均勻分發(fā),在多個(gè)節(jié)點(diǎn)對(duì)這些流量進(jìn)行引導(dǎo)將極大提升網(wǎng)絡(luò)的負(fù)載均衡性能以及網(wǎng)絡(luò)服務(wù)質(zhì)量,最后階段利用細(xì)粒度的被動(dòng)式調(diào)度插入相應(yīng)流表項(xiàng)完成流的運(yùn)輸任務(wù)。
為研究在保持網(wǎng)絡(luò)設(shè)備正常負(fù)載的情況下,減少各設(shè)備的存儲(chǔ)占用和冗余損耗,國(guó)內(nèi)外的諸多學(xué)者已經(jīng)做了大量的研究。Shirali-Shahreza 等[10]提出了延遲安裝與加速驅(qū)逐2 種技術(shù),通過(guò)使用TCP RST/FIN 數(shù)據(jù)包預(yù)測(cè)TCP 流何時(shí)終止來(lái)模擬及時(shí)驅(qū)逐流表規(guī)則以及利用延遲安裝來(lái)彌補(bǔ)針對(duì)非TCP 流方案的缺陷,從而極大地減少了流表項(xiàng)占用率。Guo 等[11]提出了動(dòng)態(tài)流調(diào)度方案(AggreFlow),通過(guò)流集路由、延遲重路由和自適應(yīng)重路由3 種技術(shù)靈活地對(duì)流進(jìn)行調(diào)度,并且將大量同時(shí)進(jìn)行的重路由操作分?jǐn)傇谝欢蜗鄬?duì)較長(zhǎng)的時(shí)間內(nèi),實(shí)現(xiàn)了在較低開(kāi)銷內(nèi)活動(dòng)路由的負(fù)載均衡和較低功耗與延遲。Soliman 等[12]提出了一種基于多協(xié)議標(biāo)簽交換(MPLS)標(biāo)簽的轉(zhuǎn)發(fā)方案,交換機(jī)根據(jù)這些攜帶路由信息的MPLS 標(biāo)簽來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)包,從而降低了對(duì)流表項(xiàng)的占用,但也帶來(lái)了額外的損耗,尤其在小數(shù)據(jù)流情況下更加明顯。文獻(xiàn)[13]提出利用數(shù)據(jù)包包頭的可用VLAN 標(biāo)識(shí)符(VID)來(lái)攜帶路由信息,并且在指定的交換機(jī)上放置流表項(xiàng)減少了SDN 中流表的使用,在不同新流量到達(dá)的單播和多播場(chǎng)景,降低了流拒絕率,極大地推遲了第一次流量拒絕時(shí)間。李佳[14]提出的自適應(yīng)兩級(jí)流表超時(shí)機(jī)制,采用了兩級(jí)流表架構(gòu),根據(jù)流的到達(dá)時(shí)間特征不斷修改流表項(xiàng)中主流表的空閑超時(shí)與次級(jí)流表的硬超時(shí),從而減少了packet-in 消息的產(chǎn)生,并且提高了流表空間的利用率。劉振鵬等[15]提出了基于時(shí)序與集合的SDN 流表更新策略,將網(wǎng)絡(luò)中的交換機(jī)按照新舊路由分類,分類集合按次序分別更新流表,保證了流表更新的一致性,并且減少了流表空間的占用。曾友雯等[16]采用OpenFlow 交換機(jī)的服務(wù)器負(fù)載均衡策略,利用多地址定向流表對(duì)服務(wù)請(qǐng)求進(jìn)行分類,通過(guò)蟻群算法求解最佳負(fù)載重定向方案,降低了流表項(xiàng)數(shù)目規(guī)模,比傳統(tǒng)負(fù)載策略的性能更優(yōu)越。馬曉航[17]通過(guò)動(dòng)態(tài)調(diào)節(jié)流表項(xiàng)的超時(shí)時(shí)間和超時(shí)方式,對(duì)控制通道占用率、流表項(xiàng)存活數(shù)、大象流偵測(cè)精度3個(gè)目標(biāo)進(jìn)行聯(lián)立優(yōu)化,其設(shè)計(jì)的混合超時(shí)機(jī)制的優(yōu)化效果優(yōu)于硬超時(shí)和空閑超時(shí)。嚴(yán)可意[18]提出的區(qū)分大象流和老鼠流的檢測(cè)算法以及動(dòng)態(tài)預(yù)測(cè)并設(shè)置流表項(xiàng)超時(shí)時(shí)間,不僅減少了交換機(jī)與控制器的頻繁通信開(kāi)銷,還提升了流表利用率。齊嬋等[19]針對(duì)SDN 配置更新所引起的數(shù)據(jù)包處理不一致問(wèn)題,提出一種基于分類和時(shí)序的SDN 流表更新一致性方案,有效控制了交換機(jī)存儲(chǔ)空間的占用率并降低了控制器的負(fù)載。
以上方案在微電網(wǎng)場(chǎng)景下的應(yīng)用中都存在不足。Shirali-Shahreza 等[10]提出的方案針對(duì)TCP 流具有良好的節(jié)省表項(xiàng)占用效率,但對(duì)于非TCP 流的處理方案不能滿足微電網(wǎng)設(shè)備運(yùn)行間歇性大、具有隨機(jī)性的需求。Guo 等[11]提出的AggreFlow對(duì)微電網(wǎng)設(shè)備出現(xiàn)的隨機(jī)性流進(jìn)行聚合不夠高效。Soliman 等[12]提出的方案處理分布稀疏的設(shè)備產(chǎn)生的小流量時(shí)會(huì)導(dǎo)致更大的資源損耗。李佳[14]提出的方案能夠減少重定向流的調(diào)度資源,但比傳統(tǒng)OpenFlow 方式又增加了流表項(xiàng)數(shù)量。劉振鵬等[15]提出的流表更新一致性策略減少了控制負(fù)載和流表項(xiàng)占用,但不適于微電網(wǎng)場(chǎng)景下復(fù)雜的網(wǎng)絡(luò)環(huán)境。曾友雯等[16]提出的負(fù)載均衡策略較傳統(tǒng)算法有更優(yōu)的性能,但是要求預(yù)先部署多地址定向流表;文獻(xiàn)[17-19]分別提出的動(dòng)態(tài)優(yōu)化機(jī)制和流表更新一致性能夠提升流表的利用率,但對(duì)具備相同特征的流表項(xiàng)沒(méi)有聚合利用。
針對(duì)微電網(wǎng)設(shè)備容易帶來(lái)的調(diào)度指令過(guò)頻和存儲(chǔ)占用問(wèn)題,本文提出了一種通過(guò)延遲排序和多重聚合分流的數(shù)據(jù)流(MgdFlow,multi-granularity data flow)管理算法,在保證良好網(wǎng)絡(luò)通暢的情況下,比傳統(tǒng)OpenFlow方案[6]和自適應(yīng)兩級(jí)流表方案[14]減少了交換機(jī)中平均流表項(xiàng)的安裝數(shù)目和調(diào)度指令下發(fā)次數(shù),在負(fù)載均衡和降低流表項(xiàng)占有率方面的性能更優(yōu)越。
1) 負(fù)載均衡。負(fù)載均衡主要考慮2 個(gè)指標(biāo):交換機(jī)的平均負(fù)載情況和交換機(jī)的平均表項(xiàng)占有率[20-22]。交換機(jī)的最大負(fù)載均衡路由決定了自身負(fù)載均衡表項(xiàng)的上限,而通過(guò)粗粒度聚合的流表劃分,將路由盡可能均勻地發(fā)送到網(wǎng)絡(luò)中的各臺(tái)交換機(jī),避免極端情況下交換機(jī)超出最大負(fù)載利用率。由網(wǎng)絡(luò)平均負(fù)載與各交換機(jī)負(fù)載的均方根誤差(RMSE)來(lái)評(píng)估網(wǎng)絡(luò)中整體負(fù)載均衡,計(jì)算式為
交換機(jī)的硬件條件限制了其存儲(chǔ)空間的大小,因而對(duì)流表項(xiàng)的存儲(chǔ)存在著嚴(yán)重的限制[8-9,23]。通過(guò)聚合與分流可以極大限度地減少交換機(jī)中流表項(xiàng)的插入,以交換機(jī)平均表項(xiàng)占有率衡量該算法的效果,計(jì)算式為
2) ImproveQoS。通常QoS 考慮的指標(biāo)為可用性、吞吐量、時(shí)延變化等,在本文SDN 應(yīng)用場(chǎng)景下,主要考慮2 個(gè)指標(biāo):丟包率、控制器下發(fā)消息總數(shù)量。一是因?yàn)榭刂破飨掳l(fā)控制新流消息的開(kāi)銷會(huì)帶來(lái)路由開(kāi)銷,在聚合與分流策略的作用下,可以盡可能減少新流加入時(shí)控制器的相應(yīng)消息,在入口交換機(jī)中用于粗粒度聚合的流表項(xiàng)增多時(shí)效果更明顯。二是因?yàn)閬G包率與流集匹配路由有關(guān),更多的流能夠直接匹配流集路由進(jìn)入網(wǎng)絡(luò)中,而不需要等待控制器下發(fā)指令,網(wǎng)絡(luò)的處理能力更好。因此本文提出一種新的考量指標(biāo)ImproveQoS,即需要重路由的流占所有流的比例為
其中,f表示進(jìn)入網(wǎng)絡(luò)中的任意一個(gè)流,fsn表示對(duì)網(wǎng)絡(luò)中的流聚合成的第n個(gè)流集?!苀表示進(jìn)入網(wǎng)絡(luò)的所有流,用其減去在流集中匹配處理的流后得到需要控制器指令下發(fā)調(diào)度的流數(shù)量。
1) 交換機(jī)負(fù)載限制。S表示交換機(jī)的集合,si∈S表示每臺(tái)交換機(jī),Routei表示在時(shí)間t經(jīng)過(guò)交換機(jī)si的路由,每臺(tái)交換機(jī)處理流的總速率不能超過(guò)上限v,則有
2) 交換機(jī)存儲(chǔ)空間限制。SO 表示所有交換機(jī)流表項(xiàng)的集合,每臺(tái)交換機(jī)存儲(chǔ)的流表項(xiàng)soi∈SO不能超過(guò)上限r(nóng),則有
3) 交換機(jī)數(shù)量限制。粗粒度聚合階段交換機(jī)總數(shù)和細(xì)粒度分流階段交換機(jī)總數(shù)之和等于網(wǎng)絡(luò)總交換機(jī)數(shù),則有
針對(duì)當(dāng)前微電網(wǎng)場(chǎng)景下的實(shí)際問(wèn)題,通過(guò)減少交換機(jī)平均流表項(xiàng)占有率和減小交換機(jī)的平均負(fù)載,從而達(dá)到網(wǎng)絡(luò)整體負(fù)載均衡;同時(shí)還需要減少丟包率和控制消息的下發(fā)數(shù)目,從而提高ImproveQos 整體表現(xiàn)。因此,針對(duì)這3 個(gè)優(yōu)化目標(biāo),問(wèn)題可以被量化為
以單個(gè)數(shù)據(jù)包為粒度,將進(jìn)入網(wǎng)絡(luò)的流先重定向加入一個(gè)200 μs 的緩沖隊(duì)列,設(shè)置隊(duì)列中可以緩沖的最大數(shù)據(jù)包個(gè)數(shù)為16 個(gè),在該緩沖時(shí)間內(nèi)對(duì)隊(duì)列中的數(shù)據(jù)包進(jìn)行排序,初步聚合屬于同一流的數(shù)據(jù)包,從而降低同一流的數(shù)據(jù)包中交換機(jī)中匹配表項(xiàng)的miss 概率,減少CPU 調(diào)度指令的數(shù)量進(jìn)而增加吞吐量、提高網(wǎng)絡(luò)的負(fù)載均衡性能。針對(duì)加入一段時(shí)延緩沖隊(duì)列排序是否會(huì)對(duì)整體時(shí)延造成更大影響的問(wèn)題,Hamid 等[24]所構(gòu)建的reframer 工具中已經(jīng)充分驗(yàn)證了數(shù)據(jù)包排序能夠極大地提高服務(wù)器內(nèi)存層次的利用率,從而提升了時(shí)延、CPU 利用率等性能指標(biāo),因此在后續(xù)的求解算法中不再考慮這一問(wèn)題。
圖1 展示了一個(gè)延時(shí)排序的簡(jiǎn)單示例。在設(shè)定的200 μs 的緩沖隊(duì)列中,充斥著屬于不同流A、B、C 的數(shù)據(jù)包,通過(guò)對(duì)亂序數(shù)據(jù)包打上不同的標(biāo)簽進(jìn)行分類,隨后將這三類標(biāo)簽對(duì)于流的處理規(guī)則寫入入口交換機(jī)中,從而完成了不同流中交織的亂序數(shù)據(jù)包的處理。
圖1 延時(shí)排序示例
以主要業(yè)務(wù)功能為條件,將經(jīng)過(guò)初步時(shí)延排序的不同流再次進(jìn)行基于流的粗粒度聚合和細(xì)粒度分流。在粗粒度聚合階段,以目的IP 地址為分流依據(jù),將不同的流分為N個(gè)流集,分別指向N個(gè)中轉(zhuǎn)交換機(jī),同時(shí)在入口邊緣交換機(jī)處插入N個(gè)用作粗粒度聚合流的流表項(xiàng),從入口交換機(jī)到N個(gè)不同的交換機(jī)之間共存在M條路由,并在這些路由經(jīng)過(guò)的交換機(jī)上插入指向相應(yīng)中轉(zhuǎn)交換機(jī)的流表項(xiàng),從而實(shí)現(xiàn)粗粒度聚合階段流到達(dá)中轉(zhuǎn)交換機(jī)的功能。在細(xì)粒度分流階段,以源IP 地址為分流依據(jù),將所需大業(yè)務(wù)下的不同小業(yè)務(wù)流進(jìn)行分發(fā),在中轉(zhuǎn)交換機(jī)處插入細(xì)粒度分流的流表項(xiàng);同時(shí),對(duì)于中轉(zhuǎn)交換機(jī)可能存在的流表項(xiàng)占用率高以及網(wǎng)絡(luò)中mice flow 占據(jù)了絕大多數(shù)的流表項(xiàng)的情況[18,25],將所有中轉(zhuǎn)交換機(jī)的流表項(xiàng)的idle_time 從一般的5 s 修改為1 s,達(dá)到快速淘汰mice flow 對(duì)應(yīng)表項(xiàng)。
圖2 展示了聚合與分流示例,在經(jīng)過(guò)初步時(shí)延排序處理后,當(dāng)前網(wǎng)絡(luò)的處理對(duì)象由有各種具備不同屬性(如源IP 地址、目的IP 地址、源MAC地址、目的MAC 地址等)的屬于不同流A、B、C、D、E、F 的數(shù)據(jù)包組成,通過(guò)主動(dòng)式放置在入口交換機(jī)的流表項(xiàng)粗粒度聚合成流集,在本例中,流集a包括流A、C、D,流集b包括流B、E、F,在第一步的粗粒度聚合中,根據(jù)流集分成兩大類;在第二步的細(xì)粒度分流中,由交換機(jī)響應(yīng)式細(xì)粒度地插入流表項(xiàng)完成轉(zhuǎn)發(fā)到終端的任務(wù),經(jīng)過(guò)N次粗粒度聚合的篩選,最終流集中的其他流也發(fā)送到了終端。
圖2 聚合與分流示例
本文將微電網(wǎng)場(chǎng)景下的負(fù)載、存儲(chǔ)占用和指令調(diào)度抽象為一個(gè)多目標(biāo)優(yōu)化問(wèn)題,MgdFlow 模型的符號(hào)及含義如表1 所示。使用N=(S,L)來(lái)描述網(wǎng)絡(luò),其中,S表示交換機(jī)集合包含h臺(tái)交換機(jī),并將其分別劃分給j個(gè)粗粒度階段網(wǎng)絡(luò)和k個(gè)細(xì)粒度階段網(wǎng)絡(luò),故;L表示S中交換機(jī)之間的q條鏈路,故。
表1 MgdFlow 模型的符號(hào)及含義
其中,x=1表示流集被分配給routem,x=0表示流集沒(méi)有被分配給routem。
在細(xì)粒度分流階段,在n臺(tái)中轉(zhuǎn)交換機(jī)處,對(duì)已經(jīng)粗粒度過(guò)濾的流集再進(jìn)行細(xì)粒度的劃分,將其分為g個(gè)流集,并在每臺(tái)中轉(zhuǎn)交換機(jī)處將g個(gè)用于進(jìn)一步分流的流表項(xiàng)插入,此時(shí)將有ng個(gè)流表項(xiàng)插入;網(wǎng)絡(luò)中所有設(shè)備和鏈路組成了m′條傳輸路由,即Route′=。
對(duì)流集 fsn進(jìn)行再次劃分,則有。
細(xì)粒度分流階段的所有交換機(jī)流表項(xiàng)數(shù)量SO=[so1,so2,…,sok],任一臺(tái)交換機(jī)中流表項(xiàng)數(shù)量表示為
根據(jù)微電網(wǎng)場(chǎng)景下整體路由建立的過(guò)程,可以概括如下。
1) SDN 控制器根據(jù)流表項(xiàng)占用和網(wǎng)絡(luò)鏈路負(fù)載更新粗粒度聚合節(jié)點(diǎn)的表項(xiàng)和整體動(dòng)態(tài)視圖拓?fù)洹?/p>
2) 粗粒度聚合節(jié)點(diǎn)發(fā)出路由請(qǐng)求,轉(zhuǎn)到步驟3),否則轉(zhuǎn)到步驟1)。
3) SDN 控制器依次響應(yīng)插入流表項(xiàng)引導(dǎo)達(dá)到每一跳的節(jié)點(diǎn)并記錄該條路由的表項(xiàng)數(shù)量。
4) 重復(fù)步驟1)~步驟3),直至獲取所有鏈路和路由的流表項(xiàng)占用和負(fù)載情況。
5) 更新粗粒度聚合節(jié)點(diǎn)的流表項(xiàng)并生成新的流集。
6) 當(dāng)表項(xiàng)空間不足或負(fù)載指標(biāo)達(dá)到閾值時(shí),增大粗粒度聚合節(jié)點(diǎn)的范圍并在損耗多的鏈路路由進(jìn)行再次聚合與分流。
7) 網(wǎng)絡(luò)節(jié)點(diǎn)根據(jù)插入的表項(xiàng)完成路由。
為模擬微電網(wǎng)場(chǎng)景下的SDN 設(shè)備情況,研究在ubuntu 環(huán)境下利用2.3.0 版本的Mininet 網(wǎng)絡(luò)仿真器搭建SDN 仿真環(huán)境,并且采用基于Java 的15.0.0 版本的OpenDayLight(ODL)作為SDN 控制器,Open vSwitch 作為虛擬交換機(jī),軟件版本和硬件配置如表2 和表3 所示。
表2 軟件版本
表3 硬件配置
構(gòu)建實(shí)驗(yàn)網(wǎng)絡(luò)拓?fù)淙鐖D3 所示。實(shí)驗(yàn)網(wǎng)絡(luò)由18 個(gè)節(jié)點(diǎn)組成,其中包含9 臺(tái)交換機(jī)、8 臺(tái)終端主機(jī)和一臺(tái)控制器c0。網(wǎng)絡(luò)拓?fù)渲械膕1為入口交換機(jī),插入了不同粗粒度的聚合流集的流表項(xiàng),用來(lái)對(duì)進(jìn)入流量進(jìn)行初步聚合發(fā)送;s4、s5、s6為中轉(zhuǎn)交換機(jī),插入了進(jìn)行第二次聚合的粗粒度的流表項(xiàng),用來(lái)對(duì)進(jìn)入的流量進(jìn)行二次分流發(fā)送;s7、s8、s9為出口交換機(jī),插入了精確的細(xì)粒度流表項(xiàng),完成最后的傳輸任務(wù)。h8主機(jī)以固定速率向h1~h7主機(jī)發(fā)送數(shù)據(jù)包,網(wǎng)絡(luò)的傳輸速率控制在500~800 Mbit/s,對(duì)實(shí)驗(yàn)節(jié)點(diǎn)進(jìn)行10 次仿真測(cè)試,并利用Wireshark 在各個(gè)節(jié)點(diǎn)進(jìn)行抓包分析與記錄。
1) 交換機(jī)平均負(fù)載RMSE。交換機(jī)與鏈路的負(fù)載決定了整個(gè)網(wǎng)絡(luò)的最大流量的容載上限,每條鏈路和交換機(jī)的負(fù)載都影響到整體的最大容載率,某條鏈路的過(guò)載可能導(dǎo)致某條路由甚至幾條路由的擁塞和崩潰,因此針對(duì)已有網(wǎng)絡(luò)中的交換機(jī)負(fù)載和鏈路承載上限,本文通過(guò)計(jì)算每條路由上的交換機(jī)平均負(fù)載情況,并計(jì)算整體的RMSE 來(lái)評(píng)估網(wǎng)絡(luò)中整體鏈路的承載狀態(tài)。
2) 交換機(jī)平均流表項(xiàng)占有率。在具備一定規(guī)模的SDN 中,OpenFlow 交換機(jī)需要通過(guò)存儲(chǔ)大量的流表項(xiàng)來(lái)應(yīng)對(duì)處理進(jìn)入網(wǎng)絡(luò)的流量,受限于三態(tài)內(nèi)容尋址存儲(chǔ)器(TCAM,ternary content addressable memory)內(nèi)存容量,流表所能存儲(chǔ)的流表項(xiàng)數(shù)目也是有限的,而TCAM 造價(jià)昂貴且耗能,所以通過(guò)增加TCAM 容量來(lái)應(yīng)對(duì)大流量的流表項(xiàng)數(shù)目是不現(xiàn)實(shí)的[8-9,26],因此針對(duì)一臺(tái)OpenFlow 交換機(jī)的存儲(chǔ)空間十分有限的現(xiàn)狀,聚焦于通過(guò)盡可能減少流表項(xiàng)占用,以最精簡(jiǎn)的存儲(chǔ)策略來(lái)完成網(wǎng)絡(luò)流量的處理。交換機(jī)流表項(xiàng)的占用空間反映了維持一個(gè)網(wǎng)絡(luò)正常運(yùn)行下該節(jié)點(diǎn)所需要占用的空間代價(jià),平均流表項(xiàng)占用率則反映了整個(gè)網(wǎng)絡(luò)設(shè)備中所有節(jié)點(diǎn)的平均存儲(chǔ)空間占用情況,這一指標(biāo)不同于最大流表項(xiàng)占用率和中位數(shù)流表項(xiàng)占用率可能受制于極大值或者極小值存儲(chǔ)占用的影響,而是由整體設(shè)備的存儲(chǔ)占用所決定,能夠真實(shí)地反映出網(wǎng)絡(luò)各設(shè)備的存儲(chǔ)情況。
3) ImproveQoS。隨著網(wǎng)絡(luò)負(fù)載的增加,涌入的流量逐漸增多,超過(guò)了原本設(shè)定的閾值,導(dǎo)致丟包率增大,流量因得不到及時(shí)的處理而阻塞在各個(gè)節(jié)點(diǎn)。同時(shí),沒(méi)有匹配流表項(xiàng)的流量會(huì)激發(fā)table-miss表項(xiàng),使交換機(jī)向控制器發(fā)送packet-in 消息并將這種類型的數(shù)據(jù)包發(fā)給控制器處理,導(dǎo)致控制器調(diào)度信息的下發(fā)[27],增加了資源的損耗與負(fù)載。通過(guò)關(guān)注丟包率與控制器下發(fā)消息的數(shù)目,并將其歸結(jié)為需要重定向處理消息的流占總流的比例,從而衡量在不同策略下網(wǎng)絡(luò)的服務(wù)質(zhì)量。
1) 負(fù)載均衡性能
通過(guò)對(duì)比傳統(tǒng)OpenFlow 方案[6]、自適應(yīng)兩級(jí)流表方案[14]以及本文提出的MgdFlow,得到3 種方案下網(wǎng)絡(luò)鏈路負(fù)載情況,如圖4 所示。其中,RMSE 越小則性能越好。箱線圖的上橫線和下橫線分別代表第三四分位數(shù)(Q3)和第一四分位數(shù)(Q1),也就是數(shù)據(jù)的上下分位,箱線圖的高度表示數(shù)據(jù)的分位;同時(shí),每個(gè)箱線圖數(shù)據(jù)的平均數(shù)用三角形標(biāo)出,可以看出不同方案下得出的指標(biāo)數(shù)據(jù)的總體分布。
圖4 3 種方案不同方案下網(wǎng)絡(luò)鏈路負(fù)載情況
2) 平均流表項(xiàng)占有率
通過(guò)對(duì)比傳統(tǒng)OpenFlow 方案、自適應(yīng)兩級(jí)流表方案以及MgdFlow,得到3 種方案在不同路由節(jié)點(diǎn)數(shù)量下的網(wǎng)絡(luò)所需流表項(xiàng),如圖5 所示。從圖5可知,隨著網(wǎng)絡(luò)規(guī)模逐漸擴(kuò)大,路由節(jié)點(diǎn)數(shù)量逐漸增多,被添加到各臺(tái)交換機(jī)中的流表項(xiàng)數(shù)量不斷增加,自適應(yīng)兩級(jí)流表方案對(duì)流表項(xiàng)的損耗最多,傳統(tǒng)OpenFlow 方案其次,MgdFlow 方案損耗的流表項(xiàng)數(shù)始終低于這2 種方案。
圖5 3 種方案在不同路由節(jié)點(diǎn)數(shù)量下的網(wǎng)絡(luò)所需流表項(xiàng)
3) ImproveQoS
通過(guò)對(duì)比傳統(tǒng)OpenFlow 方案、自適應(yīng)兩級(jí)流表方案以及MgdFlow,得到3 種方案在不同路由節(jié)點(diǎn)數(shù)量下出現(xiàn)網(wǎng)絡(luò)擁塞時(shí)需要重定向流量占比,如圖6 所示。從圖6 可知,MgdFlow 的ImproveQoS指標(biāo)始終低于另外2 種方案。當(dāng)流量激增時(shí),網(wǎng)絡(luò)的丟包率增加,對(duì)交織在不同流中的數(shù)據(jù)包進(jìn)行訪問(wèn)就會(huì)反復(fù)調(diào)用線程,此時(shí)會(huì)增加對(duì)調(diào)度信息的需求,在需要重定向的流中,大象流占比越少、老鼠流占比越多,則同一丟包率下的ImproveQoS 越高。
圖6 3 種方案在不同路由節(jié)點(diǎn)數(shù)量下出現(xiàn)網(wǎng)絡(luò)擁塞時(shí)需要重定向流量占比
3 種方案對(duì)比如表4 所示。從表4 可以看出,與傳統(tǒng)OpenFlow 方案和自適應(yīng)兩級(jí)流表方案相比,在負(fù)載均衡方面,MgdFlow 分別提升了25%和18%;在平均流表項(xiàng)占有率方面,MgdFlow 分別提升了9%和16%;在ImproveQoS 方面,MgdFlow分別提升了24%和12%。
表4 3 種方案對(duì)比
針對(duì)微電網(wǎng)需要全局調(diào)度、及時(shí)處理突發(fā)情況的需求,結(jié)合SDN 的控制轉(zhuǎn)發(fā)分離技術(shù),提出了針對(duì)微電網(wǎng)業(yè)務(wù)場(chǎng)景下的多粒度數(shù)據(jù)管理算法MgdFlow,通過(guò)對(duì)數(shù)據(jù)包進(jìn)行延時(shí)排序和對(duì)數(shù)據(jù)流完成聚合與分流,在SDN 中有效提高負(fù)載均衡性能和服務(wù)質(zhì)量,降低平均交換機(jī)流表項(xiàng)的占有率和調(diào)度指令的下發(fā)次數(shù),提高整體網(wǎng)絡(luò)對(duì)于流量的處理能力。對(duì)比傳統(tǒng)OpenFlow 方案和自適應(yīng)兩級(jí)流表方案,本文方案在負(fù)載均衡性能、存儲(chǔ)表項(xiàng)利用和調(diào)度指令占用方面都有明顯的改進(jìn)和較高的可用性。雖然延時(shí)緩沖隊(duì)列排序會(huì)增加一段時(shí)延,但對(duì)整體網(wǎng)絡(luò)性能的提升卻是巨大的,本文中加入的緩沖隊(duì)列是靜態(tài)設(shè)置的,未來(lái)的工作將研究在微電網(wǎng)場(chǎng)景下的自適應(yīng)延時(shí)緩沖隊(duì)列排序,從而進(jìn)一步提升性能。