黃聞天,孫士民,2,張新潮,徐愛鑫,汪曉凡
(1.天津工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,天津 300387;2.天津市自主智能技術(shù)與系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,天津 300387)
多源多播網(wǎng)絡(luò)即是通過一組源節(jié)點(diǎn)向一組目的地傳送相同內(nèi)容的一種通信方式。同時(shí),隨著網(wǎng)絡(luò)功能虛擬化(NFV)的快速發(fā)展與應(yīng)用,大量的虛擬網(wǎng)絡(luò)功能節(jié)點(diǎn)(VNF)分布在多播網(wǎng)絡(luò)中,為網(wǎng)絡(luò)應(yīng)用提供不同層級(jí)的多樣化服務(wù)。因此,多源多播網(wǎng)絡(luò)與網(wǎng)絡(luò)功能虛擬化(NFV)的結(jié)合迎來了全新的挑戰(zhàn)。NFV網(wǎng)絡(luò)要求在網(wǎng)絡(luò)信號(hào)傳輸?shù)侥康墓?jié)點(diǎn)前需要按順序遍歷一些布置了虛擬網(wǎng)絡(luò)功能(VNF)的節(jié)點(diǎn),通過這些節(jié)點(diǎn)上分布的網(wǎng)絡(luò)功能的按順序結(jié)合完成指定的網(wǎng)絡(luò)功能[1]。因?yàn)槠鋵⒉糠诌\(yùn)算功能分布在網(wǎng)絡(luò)節(jié)點(diǎn)上,所以NFV網(wǎng)絡(luò)的QoS需求也越來越豐富。而QoS路由算法也能夠合理分配網(wǎng)絡(luò)吞吐量、優(yōu)化網(wǎng)絡(luò)資源配置,結(jié)合所布置功能實(shí)現(xiàn)網(wǎng)絡(luò)全局資源利用率優(yōu)化[2],這使得對(duì)構(gòu)建含QoS的支持網(wǎng)絡(luò)功能虛擬化多源多播優(yōu)化網(wǎng)絡(luò)的研究成了當(dāng)務(wù)之急。
本文將虛擬源節(jié)點(diǎn)算法與蟻群算法相結(jié)合,提出了一種基于蟻群優(yōu)化的QoS多源多播路由算法Ant based Multi-Source Multicast Tree Construction(AQoSMMTC),可以有效地構(gòu)建多源多播網(wǎng)絡(luò)并對(duì)其進(jìn)行優(yōu)化。而針對(duì)其與NFV相結(jié)合的問題,本文提出一種基于VNF節(jié)點(diǎn)選擇的改進(jìn)的蟻群算法VNF based Multi-Source Multicast Tree Construction(VQoSMMTC)來對(duì)多源組播樹進(jìn)行求解,在追求路徑代價(jià)優(yōu)化的同時(shí)對(duì)VNF節(jié)點(diǎn)位置進(jìn)行了選擇。
蟻群算法[3]是意大利學(xué)者M(jìn).Dorigo等人提出來的,通過模擬自然界螞蟻群覓食尋徑來求解相似尋優(yōu)問題。主要內(nèi)容為螞蟻在覓食和返巢的過程中擁有選擇最短路徑的能力,其能力來源于螞蟻會(huì)在行走的路徑上留下自己的信息素(pheromone)。信息素會(huì)隨著時(shí)間揮發(fā),其他螞蟻對(duì)路徑上的信息素進(jìn)行識(shí)別,并在行動(dòng)時(shí)按照信息素濃度隨機(jī)選擇路線。路線選擇的概率與其信息素濃度成正比。較短的路線往返時(shí)間更短,往返次數(shù)更多,從而擁有較強(qiáng)的信息素濃度。會(huì)對(duì)覓食路徑選擇形成一種正反饋并通過這種方式挑選最佳路徑[4]。
多源多播問題是指對(duì)給定的一組目的地和一組源構(gòu)建網(wǎng)絡(luò)拓?fù)?。與單源多播的最小生成樹相比,多源多播問題是旨在構(gòu)造一個(gè)最小成本的森林(MCF)[5],即眾多最小生成樹的集合,它確保每個(gè)目的節(jié)點(diǎn)通過林中的一條路徑只連接到一個(gè)源。這是一個(gè)NP完全問題[6]。
在多源多播網(wǎng)絡(luò)中,可以通過蟻群算法與虛擬源節(jié)點(diǎn)法[7]相結(jié)合來解決多源多播問題。首先構(gòu)建一個(gè)虛擬源節(jié)點(diǎn),使得其對(duì)所有源節(jié)點(diǎn)的距離為0,所有螞蟻都從此虛擬源節(jié)點(diǎn)釋放,所有螞蟻也都對(duì)此虛擬源節(jié)點(diǎn)返回,將源節(jié)點(diǎn)視為普通中繼節(jié)點(diǎn)。此方法的多播目標(biāo)樹即可視為從虛擬源節(jié)點(diǎn)開始的單源多播最小斯坦納樹。其次待循環(huán)完成后將虛擬源節(jié)點(diǎn)摘除,留下源集合中被使用的節(jié)點(diǎn)就是蟻群優(yōu)化后的多源多播樹。在蟻群算法尋找多播樹的過程中,對(duì)螞蟻的每一次尋路都進(jìn)行一次QoS判定,自動(dòng)避開不滿足要求的路徑選擇即可完成滿足QoS需求的多播樹的構(gòu)建,如圖1所示。
圖1 通過添加虛擬源的蟻群算法解決多源多播問題
改進(jìn)的蟻群系統(tǒng)算法在對(duì)信息素的設(shè)置上增加了正向信息素和反向信息素。在螞蟻進(jìn)行正向搜索時(shí)遵循正向信息素,每當(dāng)?shù)竭_(dá)所有目標(biāo)節(jié)點(diǎn)后再從目標(biāo)節(jié)點(diǎn)釋放螞蟻根據(jù)反向信息素進(jìn)行反向搜索直到回到虛擬源節(jié)點(diǎn)(反向信息素初始值與第一次正向信息素相同)。當(dāng)螞蟻完成一次搜索循環(huán)后,檢查是否發(fā)現(xiàn)當(dāng)前最佳樹(目標(biāo)節(jié)點(diǎn)到虛擬源節(jié)點(diǎn)距離最短),若發(fā)現(xiàn)則對(duì)反向信息素進(jìn)行全局更新,之后繼續(xù)進(jìn)行循環(huán)直到到達(dá)終止條件。
在支持NFV的多源多播樹的構(gòu)建中,由于每一組流量的傳輸都需要按順序經(jīng)過一些特定的VNF節(jié)點(diǎn)。改進(jìn)的蟻群算法在反向循環(huán)的過程中添加了VNF節(jié)點(diǎn)的尋找功能。在反向?qū)ぢ返倪^程中按順序?qū)ふ襐NF節(jié)點(diǎn)的布置位置,每尋找一個(gè)VNF功能節(jié)點(diǎn)則對(duì)下一步能到達(dá)的節(jié)點(diǎn)進(jìn)行該VNF功能布置代價(jià)計(jì)算,將布置代價(jià)計(jì)入鏈路代價(jià)中,從而對(duì)傳輸代價(jià)和布置代價(jià)一同進(jìn)行優(yōu)化。使得每一個(gè)目的節(jié)點(diǎn)都有完整的VNF傳輸鏈(SFC)[8],并且獲得基于總代價(jià)最小的優(yōu)化樹,算法示意如圖2所示。
圖2 基于NFV的改進(jìn)蟻群算法多源多播樹
2.1.1 蟻群算法螞蟻轉(zhuǎn)移規(guī)則偽代碼
算法1螞蟻轉(zhuǎn)移規(guī)則
需求:無向圖G=(V,E),信息素表(Phero-mone list),開始節(jié)點(diǎn)N,禁忌表,q0,鄰居節(jié)點(diǎn)集合(P(neighber))
將禁忌表中節(jié)點(diǎn)從信息素表中刪除
q=rand(0,1)
if q≤q0
Target=arg max(P(neighber))
else
for neighber∈Phero-mone list
P(N,neighber)=P(neighber)/SUM(P)
if
(P(N,neighber)>R)
Target=min(neighber)
end if
end for
end if
將N加入禁忌表
Next skip=Target
start node=Next skip
輸出:Next skip
End
2.1.2 基于蟻群算法的多源多播樹構(gòu)建偽代碼
算法2基于蟻群算法的多源多播樹構(gòu)建
需求:無向圖G=(V,E),信息素表,禁忌表,t目標(biāo)節(jié)點(diǎn)集合{D},源節(jié)點(diǎn)集合{S},螞蟻數(shù)量M,循環(huán)次數(shù)It.
將S0加入圖G,Distance(S0,{S})=0
for i=0:It
m=0
for Di∈{D}
for m≤M以出發(fā)節(jié)點(diǎn)為S0執(zhí)行算法1
if Target=Di
Record[path(Di),cost(Di)]
為path(Di)進(jìn)行局部信息素更新
else back to do
end if
end for
Best_path(Di)=arg min(cost(Di))
end for
tree={path(Di)},record cost(tree)
Best_tree=arg min(cost(tree))
對(duì)Best_tree進(jìn)行全局信息素更新
更新信息素表
end for
輸出:Best_tree
End
2.2.1 改進(jìn)的蟻群算法螞蟻轉(zhuǎn)移規(guī)則偽代碼
算法3改進(jìn)的蟻群算法轉(zhuǎn)移規(guī)則
需求:無向圖G=(V,E),信息素概率表,出發(fā)點(diǎn)N,禁忌表,q0,當(dāng)前需要布置的VNF功能VNFnode(n),QoS標(biāo)準(zhǔn)
Start:將禁忌表中節(jié)點(diǎn)從信息素概率表中刪除
q=rand(0,1)
if q≤q0
Target=arg max(P(neighber))
else
for neighber∈Phero-mone list
P(N,neighber)=P(neighber)/SUM(P)
if(P(N,neighber)>R)
Target=min(neighber)
end if
end for
end if
If Target符合QoS標(biāo)準(zhǔn)且未被部署其他VNF功能
將N加入禁忌表
Next skip=Target
VNFnode(n)=Target
n-1
start node=Next skip
Else
將Target加入禁忌表
start node=N
重新開始循環(huán)
輸出:Next skip
End
2.2.2 基于改進(jìn)的蟻群算法的多源多播樹構(gòu)建偽代碼
算法4基于NFV的改進(jìn)蟻群算法多源多播樹構(gòu)建方法
需求:無向圖G=(V,E),正向信息素表,反向信息素表,禁忌表,目標(biāo)節(jié)點(diǎn)集合{D},源節(jié)點(diǎn)集{S},螞蟻數(shù)量M,最大循環(huán)次數(shù)It.
將S0添加入圖G中,Distance(S0,{S})=0
for i=0:It
m=0
for m≤M從S0開始根據(jù)算法1進(jìn)行循環(huán)
if Target=Di
記錄[path(Di,Cost(Di)]
對(duì)path(Di)進(jìn)行局部信息素更新
else back to do
end if
end for
for m≤M=從{Di}開始根據(jù)反向信息素表及算法3進(jìn)行循環(huán)
if Target=S0
記錄[path(Di),Cost(Di)]
對(duì)path(Di)進(jìn)行局部信息素更新
else back to do
end if
end for
Best_path(Di)=arg min(Cost(Di))
tree={path(Di)}]
end for
計(jì)算樹的代價(jià)Cost(tree)
Best_tree=arg min(Cost(tree))
進(jìn)行全局信息素更新
更新反向信息素概率表
end for
輸出:最佳樹,VNF節(jié)點(diǎn)位置
end
本實(shí)驗(yàn)采用Matlab仿真工具對(duì)AQoSMMTC算法與VQoSMMTC進(jìn)行模擬仿真,并且測(cè)試性能與分析數(shù)據(jù)與MMForest路由算法[9]、MCF路由算法[5]進(jìn)行實(shí)驗(yàn)對(duì)比。由于上述算法采用的機(jī)制、原理各不相同,為確保實(shí)驗(yàn)的準(zhǔn)確性、完整性,將仿真實(shí)驗(yàn)設(shè)置為采用同一傳統(tǒng)樹形網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、相同的節(jié)點(diǎn)鏈路參數(shù),網(wǎng)絡(luò)節(jié)點(diǎn)分布范圍為10000×10000,節(jié)點(diǎn)數(shù)量為100個(gè),鄰居節(jié)點(diǎn)距離為200,所有實(shí)驗(yàn)所用節(jié)點(diǎn)均從此100個(gè)節(jié)點(diǎn)中挑選。
對(duì)QoS約束條件設(shè)定為帶寬(bandwidth)=100,時(shí)延(delay)=80 ms,丟包率(packet_loss_rate)=0.05。在試驗(yàn)前對(duì)網(wǎng)絡(luò)中所有鄰居節(jié)點(diǎn)間鏈路QoS屬性使用偽隨機(jī)算法進(jìn)行設(shè)置,確保不滿足要求鏈路出現(xiàn)概率小于等于1%。
本次實(shí)驗(yàn)對(duì)不同網(wǎng)絡(luò)規(guī)模下多源多播樹的總代價(jià)進(jìn)行對(duì)比,設(shè)置源數(shù)量為5,網(wǎng)絡(luò)規(guī)模即節(jié)點(diǎn)數(shù)由23到73。
實(shí)驗(yàn)結(jié)果如圖3所示,AQoSMMCT算法專注于最優(yōu)樹的尋找,所以其結(jié)果優(yōu)于其他對(duì)比算法。而VQoSMMCT算法則在構(gòu)建多播樹的同時(shí)對(duì)VNF節(jié)點(diǎn)進(jìn)行尋找,故其總代價(jià)略大于AQoSMMCT算法與MMForest算法基本持平。
圖3 不同網(wǎng)絡(luò)規(guī)模下多播樹的代價(jià)
根據(jù)先前網(wǎng)絡(luò)規(guī)則構(gòu)建一個(gè)簡(jiǎn)單VNF功能網(wǎng)絡(luò),并添加干擾節(jié)點(diǎn)構(gòu)建一個(gè)網(wǎng)絡(luò)規(guī)模為20的測(cè)試網(wǎng)絡(luò),該網(wǎng)絡(luò)的最佳多播樹如圖4所示。
圖4 已標(biāo)出最佳多播樹的測(cè)試網(wǎng)絡(luò)
使用結(jié)合RMTC[9]的MMForest算法[6]和VQoSMMTC算法對(duì)該網(wǎng)絡(luò)求解。對(duì)比所得到的結(jié)果是否于最佳多播樹相等,從而確定算法的成功與否。本次實(shí)驗(yàn)采取不同的最大迭代次數(shù)進(jìn)行對(duì)比,每一組進(jìn)行100次獨(dú)立實(shí)驗(yàn),成功得到最佳多播樹的次數(shù)即為算法的成功率,如圖5所示。
圖5 不同迭代次數(shù)下算法的成功率
從實(shí)驗(yàn)結(jié)果不難看出,VQoSMMTC算法的成功率明顯優(yōu)于結(jié)合RMTC的MMForest算法,隨著最大迭代次數(shù)的增加,算法的成功率趨于穩(wěn)定。
本文基于蟻群算法和虛擬源節(jié)點(diǎn)算法提出了基于蟻群優(yōu)化的QoS多源多播路由算法。為了解決傳統(tǒng)的多播路由算法與NFV邊緣計(jì)算等網(wǎng)絡(luò)功能部署方法相結(jié)合的問題,提出了支持NFV的QoS多源多播路由算法。實(shí)驗(yàn)結(jié)果表明,在含QoS的多源多播樹的構(gòu)建上本文提出的兩種多源多播算法均可成功構(gòu)建符合QoS需求的多源多播樹,并且樹的總代價(jià)優(yōu)于許多已有的多源多播樹構(gòu)建算法。并且在對(duì)VNF節(jié)點(diǎn)布置的計(jì)算上能結(jié)合節(jié)點(diǎn)功能與網(wǎng)絡(luò)狀況構(gòu)建多源多播樹。