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