左 攀,束永安
(安徽大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,合肥 230601)
隨著互聯(lián)網(wǎng)的高速發(fā)展和各種計(jì)算機(jī)技術(shù)的不斷革新,網(wǎng)絡(luò)的傳輸任務(wù)變得越來(lái)越重,如物聯(lián)網(wǎng)技術(shù)讓所有能行使獨(dú)立功能的普通物體實(shí)現(xiàn)互聯(lián)互通,這使得接入網(wǎng)絡(luò)的設(shè)備增多,產(chǎn)生的網(wǎng)絡(luò)流量更是呈指數(shù)級(jí)增長(zhǎng)[1]。軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)作為一種新型網(wǎng)絡(luò)架構(gòu),是優(yōu)化網(wǎng)絡(luò)資源管理的新范例,其不僅實(shí)現(xiàn)了轉(zhuǎn)控分離和集中控制,而且開(kāi)放了接口,這使得第三方應(yīng)用只需要用編程的方式就可以定義一個(gè)新的網(wǎng)絡(luò)功能[2]。SDN作為未來(lái)最有發(fā)展前景的網(wǎng)絡(luò)技術(shù)之一,越來(lái)越多地被應(yīng)用在網(wǎng)絡(luò)性能更高的數(shù)據(jù)中心網(wǎng)絡(luò)(Data Center Network,DCN)中。
目前,數(shù)據(jù)中心網(wǎng)絡(luò)普遍采用基于Clos 架構(gòu)的網(wǎng)絡(luò)拓?fù)?,如Fat-Tree[3]、VL2[4]等多根拓?fù)浣Y(jié)構(gòu)。該類(lèi)拓?fù)涫挂粚?duì)主機(jī)間有多條等價(jià)路徑可達(dá),極大地緩解了數(shù)據(jù)傳輸時(shí)不同傳輸任務(wù)對(duì)帶寬資源的競(jìng)爭(zhēng)問(wèn)題,一定程度上實(shí)現(xiàn)了負(fù)載均衡。但要解決數(shù)據(jù)中心網(wǎng)絡(luò)的負(fù)載均衡問(wèn)題仍面臨一些挑戰(zhàn)。有研究表明,在數(shù)據(jù)中心網(wǎng)絡(luò)中,數(shù)據(jù)流可分為老鼠流和大象流兩類(lèi),雖然大象流在數(shù)量上少于全部網(wǎng)絡(luò)流的10%,但約80%的網(wǎng)絡(luò)帶寬資源卻被大象流占據(jù)[5],且由于大象流的生存周期長(zhǎng),老鼠流經(jīng)常被大象流阻塞,造成長(zhǎng)時(shí)間的隊(duì)列延遲[6]。因此,如何對(duì)大象流進(jìn)行識(shí)別和處理,是解決數(shù)據(jù)中心網(wǎng)絡(luò)中負(fù)載均衡問(wèn)題的關(guān)鍵。
本文提出一種基于前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Network,F(xiàn)NN)的動(dòng)態(tài)多路徑負(fù)載均衡機(jī)制FNN-LB。利用SDN 架構(gòu)分層解耦的優(yōu)勢(shì),使位于控制 層的SDN 控制器可以 通過(guò)OpenFlow 協(xié) 議[7]與數(shù)據(jù)層的交換機(jī)進(jìn)行信息交互,從而收集整個(gè)網(wǎng)絡(luò)的實(shí)時(shí)狀態(tài)信息。在以往的研究中,這些網(wǎng)絡(luò)狀態(tài)信息往往被當(dāng)作獨(dú)立變量使用,相關(guān)性很少被探究。本文基于前饋神經(jīng)網(wǎng)絡(luò),將網(wǎng)絡(luò)狀態(tài)信息作為底層特征輸入,將每段鏈路的負(fù)載作為輸出,以此建立網(wǎng)絡(luò)狀態(tài)信息與鏈路負(fù)載之間的非線性映射模型,從而通過(guò)動(dòng)態(tài)網(wǎng)絡(luò)狀態(tài)信息實(shí)時(shí)反映鏈路綜合狀況。為滿(mǎn)足大象流傳輸時(shí)高吞吐量的需求,應(yīng)將鏈路狀況好的路徑盡可能分配給大象流。因此,本文將預(yù)估的鏈路負(fù)載值與蟻群算法[8]中的啟發(fā)信息相關(guān)聯(lián),利用蟻群算法的正反饋性和自適應(yīng)性,使最優(yōu)路徑向預(yù)估低負(fù)載值路徑收斂,從而實(shí)現(xiàn)路徑的動(dòng)態(tài)負(fù)載均衡。
數(shù)據(jù)中心網(wǎng)絡(luò)中的負(fù)載均衡方案可分為靜態(tài)負(fù)載均衡和動(dòng)態(tài)負(fù)載均衡兩類(lèi)。
靜態(tài)方案根據(jù)固定標(biāo)準(zhǔn)將數(shù)據(jù)流分配給可用路徑。文獻(xiàn)[9]提出的等價(jià)多路徑(Equal-Cost Multi-Path,ECMP)算法是一種被廣泛應(yīng)用的負(fù)載均衡技術(shù),其基于哈希散列,可通過(guò)多條等價(jià)路徑傳輸數(shù)據(jù)流達(dá)到負(fù)載均衡的目的。文獻(xiàn)[10]通過(guò)在主機(jī)端部署FlowBender 程序進(jìn)行路徑擁塞檢測(cè),F(xiàn)lowBender會(huì)修改報(bào)文的生存時(shí)間(Time to Live,TTL)字段,并改進(jìn)ECMP 算法使哈希運(yùn)算基于報(bào)文頭部的更多字段,其中包括TTL 字段,從而實(shí)現(xiàn)往返時(shí)延時(shí)間粒度的數(shù)據(jù)流動(dòng)態(tài)調(diào)度。該方案利用主機(jī)端驅(qū)動(dòng)路徑規(guī)劃,但最終的路徑選擇仍基于ECMP 算法,不能確保因擁塞而重新選擇的路徑滿(mǎn)足額外的傳輸需求,從而造成數(shù)據(jù)流的多次路由并發(fā)生網(wǎng)絡(luò)動(dòng)蕩。
動(dòng)態(tài)方案則根據(jù)各種當(dāng)前網(wǎng)絡(luò)指標(biāo)自適應(yīng)地選擇路由路徑。文獻(xiàn)[11]提出了一種可擴(kuò)展的動(dòng)態(tài)流調(diào)度方案Hedera,在邊緣交換機(jī)上識(shí)別出大象流后,系統(tǒng)根據(jù)其帶寬需求,利用全局首次匹配(GFF)算法為大象流分配路徑,自適應(yīng)地調(diào)度多級(jí)交換結(jié)構(gòu)以有效利用聚合網(wǎng)絡(luò)資源。文獻(xiàn)[12]提出了一種基于隊(duì)列長(zhǎng)度的定向自適應(yīng)路由方案,根據(jù)交換機(jī)輸出端口的隊(duì)列長(zhǎng)度對(duì)數(shù)據(jù)流進(jìn)行路由。然而這兩種方案都僅根據(jù)單一網(wǎng)絡(luò)指標(biāo)進(jìn)行路由規(guī)劃,不能綜合反映鏈路狀況,當(dāng)網(wǎng)絡(luò)負(fù)載嚴(yán)重時(shí)可能會(huì)導(dǎo)致網(wǎng)絡(luò)擁塞。
此外,一些研究者試圖從分割大象流的角度來(lái)優(yōu)化數(shù)據(jù)中心網(wǎng)絡(luò)的數(shù)據(jù)流傳輸問(wèn)題。文獻(xiàn)[13]旨在解決因大流與小流之間的差異導(dǎo)致的負(fù)載不均衡,因此Presto 將數(shù)據(jù)流分割為相同大小的流單元,并結(jié)合循環(huán)調(diào)度算法尋找發(fā)送路徑,但為了防止報(bào)文接收后亂序,需要修改通用接收卸載結(jié)構(gòu),這增加了流量管理的難度與成本。
為解決ECMP 算法無(wú)法有效調(diào)度大象流的缺點(diǎn),且在不增加流管理難度的前提下引入多種網(wǎng)絡(luò)指標(biāo)進(jìn)行路由規(guī)劃,本文提出一種基于前饋神經(jīng)網(wǎng)絡(luò)的動(dòng)態(tài)多路徑負(fù)載均衡機(jī)制FNN-LB。利用前饋神經(jīng)網(wǎng)絡(luò)預(yù)估鏈路負(fù)載,對(duì)大象流和老鼠流進(jìn)行差異化路由,并通過(guò)仿真實(shí)驗(yàn)驗(yàn)證所提方案的有效性。
FNN-LB 架構(gòu)如圖1 所示。根據(jù)數(shù)據(jù)流中傳輸字節(jié)的數(shù)據(jù)大小,大象流被主機(jī)終端中的流檢測(cè)程序發(fā)現(xiàn)并標(biāo)記。拓?fù)涓兄K根據(jù)鏈路層發(fā)現(xiàn)協(xié)議(Link Layer Discovery Protocol,LLDP)獲取網(wǎng)絡(luò)的全局視圖。FNN-LB 機(jī)制是基于多種網(wǎng)絡(luò)狀態(tài)的負(fù)載均衡機(jī)制,因此在流量信息監(jiān)控模塊中,通過(guò)OpenFlow 協(xié)議實(shí)現(xiàn)控制層和數(shù)據(jù)層的信息交互,從而對(duì)底層網(wǎng)絡(luò)狀況進(jìn)行實(shí)時(shí)監(jiān)控,獲取每段鏈路的帶寬利用率、時(shí)延、丟包率等流量信息。前饋神經(jīng)網(wǎng)絡(luò)模塊則可將這些底層網(wǎng)絡(luò)特征作為輸入,預(yù)估每段鏈路對(duì)應(yīng)的負(fù)載。最終,路由計(jì)算模塊利用優(yōu)化蟻群算法,使最優(yōu)路徑向預(yù)估負(fù)載值低的鏈路收斂,從而保證大象流傳輸時(shí)高吞吐量的需求,實(shí)現(xiàn)路徑的動(dòng)態(tài)負(fù)載均衡。
圖1 FNN-LB 架構(gòu)Fig.1 Architecture of FNN-LB
在數(shù)據(jù)中心網(wǎng)絡(luò)中,由于大象流具有生存周期長(zhǎng)的特點(diǎn)和高吞吐量的需求,因此對(duì)大象流的檢測(cè)與標(biāo)記一直是數(shù)據(jù)中心網(wǎng)絡(luò)負(fù)載均衡研究工作中重要的一環(huán)。在以往研究中,對(duì)大象流的識(shí)別有多種方式。如在交換機(jī)處對(duì)每條數(shù)據(jù)流的流條目進(jìn)行監(jiān)控,定期提取統(tǒng)計(jì)信息用以標(biāo)記大象流;或?qū)粨Q機(jī)端口的數(shù)據(jù)包進(jìn)行采樣,并傳至控制器分析樣本以判斷是否為大象流。雖然這些方法能完成檢測(cè)任務(wù),但消耗了大量交換機(jī)和控制器資源。本文采用Mahout[14]所提的大象流標(biāo)記方法,在主機(jī)終端監(jiān)視套接字緩沖區(qū),判定傳輸字節(jié)數(shù)據(jù)超過(guò)100 KB 的數(shù)據(jù)流為大象流,并修改數(shù)據(jù)包包頭的區(qū)分服務(wù)字段以標(biāo)記大象流。該方法將大象流的檢測(cè)識(shí)別工作從交換機(jī)轉(zhuǎn)移到了主機(jī)終端中,以期節(jié)約網(wǎng)絡(luò)運(yùn)行時(shí)對(duì)數(shù)據(jù)層的資源消耗。
在拓?fù)涓兄K中,控制器通過(guò)LLDP 協(xié)議進(jìn)行鏈路發(fā)現(xiàn),根據(jù)交換機(jī)反饋的信息構(gòu)建網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。在軟件定義網(wǎng)絡(luò)中,控制器會(huì)通過(guò)Packet_out消息將LLDP 報(bào)文封裝進(jìn)OpenFlow 協(xié)議,并發(fā)送給所有與之相連的交換機(jī)。為減少對(duì)網(wǎng)絡(luò)資源的消耗,本文將Packet_out 消息由原來(lái)的每個(gè)端口下發(fā)一個(gè)改為每個(gè)交換機(jī)下發(fā)一個(gè)。當(dāng)交換機(jī)收到從控制器端口發(fā)來(lái)的LLDP 數(shù)據(jù)包后,會(huì)將其源MAC 地址修改為端口MAC 地址,然后從相應(yīng)的端口轉(zhuǎn)發(fā)出去。當(dāng)下一個(gè)交換機(jī)收到從非控制器端口發(fā)來(lái)的LLDP 數(shù)據(jù)包后,會(huì)再次將其封裝進(jìn)Packet_in 消息,上傳給控制器??刂破鲃t可通過(guò)解析該數(shù)據(jù)包,獲得目的交換機(jī)、目的端口、源MAC 地址、源交換機(jī)等信息,并由它們的對(duì)應(yīng)關(guān)系獲取鏈路的邏輯連接情況[15]。此模塊生成的網(wǎng)絡(luò)拓?fù)鋱D將提供給其他模塊以輔助工作。
FNN-LB 是一種基于當(dāng)前網(wǎng)絡(luò)流量信息狀況的動(dòng)態(tài)多路徑負(fù)載均衡機(jī)制,因此,對(duì)流量信息進(jìn)行實(shí)時(shí)準(zhǔn)確的監(jiān)控至關(guān)重要。本文采用周期性監(jiān)控機(jī)制,根據(jù)OpenFlow 協(xié)議,控制器可以預(yù)定周期T,向所有與之相連的交換機(jī)下發(fā)統(tǒng)計(jì)請(qǐng)求消息,獲取端口、流表、流表項(xiàng)、組表等信息,在這些底層網(wǎng)絡(luò)信息的基礎(chǔ)上進(jìn)行邏輯處理,可得到實(shí)時(shí)的網(wǎng)絡(luò)狀態(tài)信息,具體如下:
1)帶寬利用率:為一段時(shí)間內(nèi)鏈路傳輸?shù)目傋止?jié)數(shù)與該鏈路的最大帶寬的比值,如式(1)所示。
2)時(shí)延:本文通過(guò)對(duì)鏈路發(fā)現(xiàn)協(xié)議中的LLDP數(shù)據(jù)包和控制報(bào)文協(xié)議中的Echo 數(shù)據(jù)包進(jìn)行解析,獲得兩者的發(fā)送和接收時(shí)間戳,由此得到兩者的正反向傳輸時(shí)延。根據(jù)式(2)可得該段鏈路的平均傳輸時(shí)延。
3)丟包率:為鏈路間丟失數(shù)據(jù)包數(shù)目與已發(fā)送數(shù)據(jù)包數(shù)目的比值,如式(3)所示。
該模塊接收流量信息監(jiān)控模塊收集的網(wǎng)絡(luò)流量信息,并通過(guò)前饋神經(jīng)網(wǎng)絡(luò)預(yù)估每段鏈路的負(fù)載。前饋神經(jīng)網(wǎng)絡(luò)相較于其他概率統(tǒng)計(jì)類(lèi)機(jī)器學(xué)習(xí)而言,其輸入向量沒(méi)有特定概率分布或變量之間獨(dú)立性等需求限制,因此適用于處理復(fù)雜多變的網(wǎng)絡(luò)流量數(shù)據(jù)。前饋神經(jīng)網(wǎng)絡(luò)一般包含一個(gè)輸入層、一個(gè)或多個(gè)隱藏層和一個(gè)輸出層。每一層都包含若干個(gè)神經(jīng)元,各神經(jīng)元從輸入層開(kāi)始,接收前一層的輸入并輸出給下一層,直到輸出層,且位于同一層的神經(jīng)元之間不能相互連接[16]。
本文采用三層前饋神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),如圖2 所示。
圖2 前饋神經(jīng)網(wǎng)絡(luò)模塊Fig.2 Feedforward neural network module
在輸入層中,神經(jīng)元數(shù)目一般等于所需處理數(shù)據(jù)的變量數(shù),因此,本文將帶寬利用率、時(shí)延、丟包率這3 個(gè)網(wǎng)絡(luò)特征作為3 個(gè)輸入單元。對(duì)于輸出層僅設(shè)置一個(gè)神經(jīng)元,用來(lái)輸出鏈路負(fù)載。隱藏層的神經(jīng)元個(gè)數(shù)的確定在以往的研究中通常都是一個(gè)難點(diǎn),目前沒(méi)有統(tǒng)一的解決方案[17]。因此,在下文實(shí)驗(yàn)中,通過(guò)設(shè)置5 種不同隱藏層神經(jīng)元個(gè)數(shù)的前饋神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),觀察它們的均方誤差,以此選取較合適的隱藏層神經(jīng)元個(gè)數(shù)h。隱藏層神經(jīng)元的輸入輸出關(guān)系可用式(4)和式(5)表示。最終輸出的鏈路負(fù)載可用式(6)表示。
其中:xi為輸入層的輸入值;woi為輸入層和隱藏層神經(jīng)元之間的連接權(quán)重;wj為隱藏層和輸出層神經(jīng)元之間的連接權(quán)重;θo和θ分別為隱藏層和輸出層神經(jīng)元的閾值;f(x)為激活函數(shù),一般為tanh、sigmoid、ReLU 等;ao和zo分別為隱藏層的輸入值和輸出值;L為鏈路負(fù)載。
各個(gè)層次之間都采用全連接的方式進(jìn)行連接,并采用反向傳播算法不斷訓(xùn)練整個(gè)神經(jīng)網(wǎng)絡(luò)以調(diào)整權(quán)值。
在路由計(jì)算模塊中,控制器首先判斷所要處理的流是大象流還是老鼠流。若是老鼠流,則采用ECMP 算法。但對(duì)于大象流,ECMP 算法可能會(huì)發(fā)生哈希碰撞,從而使多條大象流聚集在同一條鏈路上進(jìn)行傳輸,造成網(wǎng)絡(luò)擁塞。因此,對(duì)大象流的調(diào)度,本文采用優(yōu)化蟻群算法進(jìn)行路徑計(jì)算。蟻群算法是由DORIGO 等提出的一種啟發(fā)式算法,該算法模擬了螞蟻尋找食物的過(guò)程。螞蟻在經(jīng)過(guò)路徑時(shí)會(huì)釋放一種名為信息素的特殊激素,用于種群間的信息傳遞。蟻群內(nèi)的其他螞蟻會(huì)識(shí)別路徑上留有的信息素,并選擇信息素濃度最高的路徑繼續(xù)前進(jìn)。與此同時(shí),該螞蟻在移動(dòng)過(guò)程中同樣也會(huì)釋放自己的信息素,使整個(gè)過(guò)程形成正反饋。在單位時(shí)間內(nèi),越短的路徑上信息素濃度越高,螞蟻由此得到通往食物的最優(yōu)路徑。本文中應(yīng)用蟻群算法的具體步驟如下:
1)進(jìn)行初始化設(shè)置。主要分為2 個(gè)部分:首先是對(duì)蟻群算法涉及的主要參數(shù)進(jìn)行設(shè)置,包括信息素和啟發(fā)信息的加權(quán)因子、信息素蒸發(fā)率、信息素總量、螞蟻數(shù)量、算法迭代次數(shù)以及對(duì)各路徑的信息素濃度進(jìn)行初始化;其次是網(wǎng)絡(luò)信息獲取。除了流量信息監(jiān)控模塊對(duì)底層網(wǎng)絡(luò)狀態(tài)的不斷監(jiān)控,還需要獲取大象流的源地址和目的地址,以及大象流所需帶寬大小,用于確定所需最優(yōu)路徑的數(shù)目。
2)確定當(dāng)前位置,計(jì)算轉(zhuǎn)移概率。蟻群算法是一種尋找優(yōu)化路徑的概率型算法,當(dāng)螞蟻位于起始節(jié)點(diǎn)后,可根據(jù)式(7)計(jì)算轉(zhuǎn)移概率。
3)結(jié)合輪盤(pán)賭選擇(Roulette Wheel Selection,RWS)算法[18],選擇下一跳節(jié)點(diǎn)。由式(7)可得在當(dāng)前節(jié)點(diǎn)處到下一跳所有可選節(jié)點(diǎn)的轉(zhuǎn)移概率。為了保證算法的隨機(jī)性,使具有較小轉(zhuǎn)移概率的節(jié)點(diǎn)依然有被選擇的可能性,不能直接選取轉(zhuǎn)移概率最大的節(jié)點(diǎn)作為下一跳節(jié)點(diǎn)。本文結(jié)合輪盤(pán)賭選擇算法選擇下一跳節(jié)點(diǎn)。假設(shè)螞蟻k在交換機(jī)u 處時(shí)下一跳共有m個(gè)交換機(jī)可選。首先,由式(7)可計(jì)算這m個(gè)交換機(jī)的轉(zhuǎn)移概率,再根據(jù)式(8)可計(jì)算這些交換機(jī)的累計(jì)概率qv。然后,在[0,1]區(qū)間產(chǎn)生一個(gè)隨機(jī)數(shù)r。若0 ≤r≤q1,則選擇交換機(jī)1為下一跳節(jié)點(diǎn);若qd-1 表1 累計(jì)概率統(tǒng)計(jì)表Table 1 Cumulative probability statistics table 4)判斷螞蟻是否到達(dá)目的節(jié)點(diǎn)。若螞蟻沒(méi)有到達(dá)目的節(jié)點(diǎn)則回到步驟2),繼續(xù)尋找下一跳節(jié)點(diǎn)。若已到達(dá)目的節(jié)點(diǎn),則轉(zhuǎn)向步驟5),并使到達(dá)的螞蟻數(shù)量加1。 5)根據(jù)螞蟻經(jīng)過(guò)的節(jié)點(diǎn)記錄,生成一條備選路徑。根據(jù)到達(dá)的螞蟻數(shù)量判斷是否蟻群內(nèi)所有螞蟻均到達(dá)目的節(jié)點(diǎn)。若是,則轉(zhuǎn)向步驟6),并使迭代次數(shù)加1;若否,則轉(zhuǎn)回步驟2),對(duì)下一只螞蟻進(jìn)行操作。 6)更新路徑上的信息素濃度。當(dāng)所有螞蟻到達(dá)目的節(jié)點(diǎn)且生成備選路徑后,根據(jù)式(9)和式(10)對(duì)路徑上的信息素進(jìn)行更新。 其中:0<ρ≤1 為信息素的蒸發(fā)率;1-ρ表示信息素?fù)]發(fā)后的殘留因子;Q為信息素總量;N為螞蟻數(shù)量;pathk表示螞蟻k所經(jīng)過(guò)的路徑;hk表示路徑pathk的跳數(shù),可理解為該路徑的長(zhǎng)度。 7)判斷算法是否達(dá)到最大迭代次數(shù)。若是,則停止迭代,獲得所有的備選路徑;若否,則返回步驟2)繼續(xù)迭代。 8)根據(jù)大象流的帶寬需求,從備選路徑中選擇多條部署路徑。一條路徑中包含多段鏈路,每段鏈路的剩余帶寬都不相同,將這些剩余帶寬進(jìn)行比較,最小值則為該條路徑的可傳輸帶寬量。考慮到當(dāng)網(wǎng)絡(luò)繁忙時(shí),單條路徑的可傳輸帶寬量無(wú)法滿(mǎn)足大象流的高帶寬需求,最終選擇多條路徑作為大象流的傳輸路徑。首先根據(jù)信息素濃度從大到小對(duì)備選路徑進(jìn)行排序,然后從已排序路徑中依次選擇一條路徑作為部署路徑,并判斷該路徑集合的可傳輸帶寬總量是否滿(mǎn)足大象流的傳輸需求。若不滿(mǎn)足,則繼續(xù)添加路徑;若已滿(mǎn)足,則輸出最終的部署路徑集合。 大象流的部署路徑選擇如算法1 所示。 算法1基于FNN 的優(yōu)化蟻群算法 輸入拓?fù)鋱DG(V,E),源地址src,目的地址dst,大象流所需帶寬BW_request 輸出路由部署路徑R 本文采用開(kāi)源控制器Ryu[19]和網(wǎng)絡(luò)模擬平臺(tái)Mininet[20]來(lái)仿真現(xiàn)實(shí)網(wǎng)絡(luò)環(huán)境。Fat-Tree 拓?fù)浣Y(jié)構(gòu)可分為接入層、匯聚層、核心層這3 個(gè)層次,其中接入層交換機(jī)與匯聚層交換機(jī)可組合形成多個(gè)Pod。本文采用Pod 數(shù)量為4 的Fat-Tree 拓?fù)浣Y(jié)構(gòu)進(jìn)行仿真,如圖3 所示。實(shí)驗(yàn)采用Iperf[21]工具產(chǎn)生數(shù)據(jù)流量,并服從泊松分布,其中大象流90%、老鼠流10%。網(wǎng)絡(luò)流量信息監(jiān)控模塊的監(jiān)聽(tīng)周期T設(shè)置為5 s??刂茖优c數(shù)據(jù)層之間采用OpenFlow1.3 版本的協(xié)議進(jìn)行交互。設(shè)置蟻群算法中的信息素和啟發(fā)信息加權(quán)因子分別為α=1.5 和β=2,信息素蒸發(fā)率ρ=0.5。 圖3 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)Fig.3 Network topology structure 由于網(wǎng)絡(luò)安全與隱私問(wèn)題,暫無(wú)公開(kāi)的DCN 負(fù)載數(shù)據(jù)集可用,因此本文在各主機(jī)隨機(jī)通信的基礎(chǔ)上,收集鏈路上的負(fù)載信息作為數(shù)據(jù)集,并分為訓(xùn)練集和測(cè)試集2 個(gè)部分。再分別設(shè)置隱藏層神經(jīng)元個(gè)數(shù)h為3、5、7、9、11 的5 種FNN 結(jié)構(gòu),學(xué)習(xí)率均設(shè)置為0.01,通過(guò)實(shí)驗(yàn)比較這5 種FNN 的均方誤差(Mean Square Error,MSE),以此確定較合適的隱藏層神經(jīng)元個(gè)數(shù)。均方誤差如式(11)所示。 其中:Xi和Yi分別為真實(shí)鏈路負(fù)載和預(yù)估鏈路負(fù)載;n為數(shù)據(jù)集數(shù)目。由圖4 可知,當(dāng)數(shù)據(jù)集數(shù)量較少時(shí),雖然隱藏層神經(jīng)元個(gè)數(shù)為7 時(shí)的神經(jīng)網(wǎng)絡(luò)表現(xiàn)不如隱藏層神經(jīng)元個(gè)數(shù)為5 時(shí)的神經(jīng)網(wǎng)絡(luò),但隨著數(shù)據(jù)集數(shù)量增加,隱藏層神經(jīng)元為7 時(shí)神經(jīng)網(wǎng)絡(luò)的均方誤差相對(duì)最小且保持穩(wěn)定,因此,最終確定隱藏層神經(jīng)元個(gè)數(shù)為7。 圖4 不同F(xiàn)NN 結(jié)構(gòu)下的均方誤差Fig.4 Mean square error under different FNN structures 為驗(yàn)證FNN-LB 算法的有效性,選取GFF 算法和ECMP 算法這2 種負(fù)載均衡算法來(lái)進(jìn)行實(shí)驗(yàn)對(duì)比,并觀察上述算法在不同發(fā)包速率下傳輸時(shí)延、鏈路利用率和網(wǎng)絡(luò)吞吐量這3 種網(wǎng)絡(luò)性能指標(biāo)的變化情況。 由圖5 可知,通過(guò)等價(jià)路徑傳輸數(shù)據(jù)的ECMP算法,在各種發(fā)包速率下的傳輸時(shí)延都要高于另外2 種算法。當(dāng)發(fā)包速率低于600 Mb/s 時(shí),GFF 算法與FNN-LB 算法的傳輸時(shí)延相近。而當(dāng)發(fā)包速率高于600 Mb/s 時(shí),由于FNN-LB 算法將鏈路平均傳輸時(shí)延作為底層特征輸入前饋神經(jīng)網(wǎng)絡(luò)以預(yù)估鏈路負(fù)載,故算法受此參數(shù)影響,最終部署的路由路徑具有較小的傳輸時(shí)延。 圖5 不同發(fā)包速率下的傳輸時(shí)延Fig.5 Transmission delay under different packet sending rates 由圖6 可知,當(dāng)發(fā)包速率較低時(shí),3 種算法的鏈路利用率無(wú)明顯差別。隨著發(fā)包速率的增加,3 種算法的鏈路利用率都有所增加,但ECMP 算法會(huì)產(chǎn)生大象流阻塞,因此鏈路利用率最低。GFF 算法在選取路徑時(shí)考慮了路徑是否滿(mǎn)足當(dāng)前大象流的帶寬需求,因此鏈路利用率高于ECMP 算法。而FNN-LB 算法基于各種實(shí)時(shí)網(wǎng)絡(luò)狀態(tài)參數(shù)選擇路徑,相較于另外2 種算法有動(dòng)態(tài)調(diào)節(jié)的優(yōu)勢(shì),因此當(dāng)發(fā)包速率大于500 Mb/s 時(shí),其鏈路利用率在三者中最高。 圖6 不同發(fā)包速率下的鏈路利用率Fig.6 Link utilization under different packet sending rates 圖7 為不同發(fā)包速率下3 種算法網(wǎng)絡(luò)吞吐量的變化情況??梢钥闯觯篍CMP 算法對(duì)大象流調(diào)度效果不佳,故網(wǎng)絡(luò)吞吐量最先到達(dá)瓶頸且總體低于另外2 種算法;FNN-LB 算法基于預(yù)估鏈路負(fù)載選取路徑,考慮了實(shí)時(shí)網(wǎng)絡(luò)狀況,因此當(dāng)發(fā)包速率較高時(shí),網(wǎng)絡(luò)吞吐量仍高于另外2 種算法。 圖7 不同發(fā)包速率下的網(wǎng)絡(luò)吞吐量Fig.7 Network throughput under different packet sending rates 為解決數(shù)據(jù)中心網(wǎng)絡(luò)中因大象流而引起的負(fù)載不均衡問(wèn)題,本文提出一種基于前饋神經(jīng)網(wǎng)絡(luò)的動(dòng)態(tài)多路徑負(fù)載均衡方法。利用帶寬利用率、時(shí)延、丟包率等多種網(wǎng)絡(luò)狀態(tài)參數(shù),通過(guò)前饋神經(jīng)網(wǎng)絡(luò)預(yù)估鏈路負(fù)載,結(jié)合蟻群算法為大象流尋找滿(mǎn)足高吞吐量需求的路徑。仿真結(jié)果表明,該方法能夠有效提高鏈路利用率和網(wǎng)絡(luò)吞吐量,降低傳輸時(shí)延。下一步將考慮利用更多變的拓?fù)浣Y(jié)構(gòu)和差異性更大的數(shù)據(jù)集訓(xùn)練神經(jīng)網(wǎng)絡(luò),以提高系統(tǒng)的可擴(kuò)展性并評(píng)估鏈路負(fù)載的準(zhǔn)確性。3 仿真與分析
3.1 實(shí)驗(yàn)環(huán)境與相關(guān)參數(shù)
3.2 隱藏層神經(jīng)元個(gè)數(shù)選取
3.3 實(shí)驗(yàn)結(jié)果及分析
4 結(jié)束語(yǔ)