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