蘇旭東,衷璐潔
(首都師范大學(xué) 信息工程學(xué)院,北京 100048)
MPTCP(MultiPath TCP)是一種基于多接口的傳輸控制協(xié)議,允許在多條鏈路同時(shí)傳輸數(shù)據(jù),旨在提高吞吐量的同時(shí)更充分地利用網(wǎng)絡(luò)資源。在移動(dòng)網(wǎng)絡(luò)環(huán)境下,帶寬、延遲、丟包率等網(wǎng)絡(luò)參數(shù)動(dòng)態(tài)變化,終端的移動(dòng)性會(huì)引發(fā)網(wǎng)絡(luò)鏈路間的頻繁切換,造成數(shù)據(jù)包不能按序到達(dá)接收端,引起數(shù)據(jù)包亂序問(wèn)題。亂序數(shù)據(jù)包在接收端緩沖區(qū)滯留等待,嚴(yán)重時(shí)會(huì)導(dǎo)致接收端緩存阻塞,造成網(wǎng)絡(luò)延遲,降低網(wǎng)絡(luò)吞吐量。在該問(wèn)題背景下,如何針對(duì)移動(dòng)異構(gòu)網(wǎng)絡(luò)特點(diǎn),減少數(shù)據(jù)包亂序發(fā)生可能,實(shí)現(xiàn)高效移動(dòng)多路傳輸調(diào)度具有重要意義。對(duì)此,本文提出一種基于BP神經(jīng)網(wǎng)絡(luò)(back propagation neural network,BPNN)端到端(傳輸)時(shí)延預(yù)測(cè)的移動(dòng)多路傳輸調(diào)度方法,綜合考慮鏈路丟包率、RTT、吞吐量等性能參數(shù),通過(guò)BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練與學(xué)習(xí),提取輸入性能參數(shù)與端到端時(shí)延間的有效規(guī)則,在更準(zhǔn)確預(yù)測(cè)端到端時(shí)延的基礎(chǔ)上,對(duì)路徑擁塞狀況進(jìn)行計(jì)算評(píng)估,并基于路徑綜合評(píng)估結(jié)果實(shí)施數(shù)據(jù)包調(diào)度,以使數(shù)據(jù)包盡可能按序到達(dá)接收端,進(jìn)而有效避免緩沖區(qū)阻塞,實(shí)現(xiàn)負(fù)載均衡,提高多路傳輸網(wǎng)絡(luò)吞吐量。
MPTCP數(shù)據(jù)調(diào)度:Ke等[1]利用自定義的排序算法對(duì)路徑狀態(tài)信息進(jìn)行排序,之后基于排序結(jié)果實(shí)現(xiàn)數(shù)據(jù)包的傳輸。黃輝等[2]提出一種將RTT與丟包率相結(jié)合,運(yùn)用綜合效用函數(shù)作為評(píng)估指標(biāo)的數(shù)據(jù)調(diào)度機(jī)制。Luo等[3]提出一種基于強(qiáng)化學(xué)習(xí)DQN的數(shù)據(jù)調(diào)度算法,通過(guò)強(qiáng)化模型完成路徑的選擇判斷,并借助路徑獎(jiǎng)懲值計(jì)算實(shí)現(xiàn)路徑選擇的更新。
基于端到端時(shí)延的調(diào)度:Xue等[4]通過(guò)計(jì)算在接收端不發(fā)生亂序的前提下應(yīng)為每條路徑分配的數(shù)據(jù)包個(gè)數(shù),為各路徑分配DSN連續(xù)的數(shù)據(jù)包。王振朝等[5]利用路徑帶寬、往返時(shí)延和擁塞窗口預(yù)測(cè)數(shù)據(jù)包到達(dá)時(shí)間,并以此為基礎(chǔ)完成數(shù)據(jù)包的分發(fā)。Dong等[6]根據(jù)子流是否丟包對(duì)端到端時(shí)延采用不同的計(jì)算方法進(jìn)行估算。Froemmgen等[7]通過(guò)主動(dòng)探測(cè)未使用的子流并根據(jù)傳統(tǒng)TCP時(shí)間戳選項(xiàng)得到的端到端時(shí)延來(lái)調(diào)度數(shù)據(jù)包。
數(shù)據(jù)包亂序減少:Han等[8]通過(guò)預(yù)測(cè)數(shù)據(jù)包到達(dá)時(shí)間,將數(shù)據(jù)包調(diào)度到最早到達(dá)時(shí)間的子流上,以保證數(shù)據(jù)包到達(dá)的順序。Shi等[9]選擇慢路徑發(fā)送序列號(hào)較大的數(shù)據(jù)包。Kim等[10]通過(guò)估算無(wú)序數(shù)據(jù)包數(shù)量及傳輸所需的緩沖區(qū)大小來(lái)減少數(shù)據(jù)包亂序的發(fā)生可能。Ling等[11]對(duì)路徑阻塞時(shí)延進(jìn)行評(píng)估,選擇不易造成阻塞的子流集進(jìn)行數(shù)據(jù)傳輸。
基于BP神經(jīng)網(wǎng)絡(luò)端到端時(shí)延預(yù)測(cè)的多路傳輸調(diào)度(multipath scheduling based on BP neural network EET prediction,MSBPEET)通過(guò)綜合考慮丟包率、吞吐量、RTT等路徑性能參數(shù),構(gòu)建BP神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)包在各路徑上的端到端時(shí)延實(shí)施預(yù)測(cè),隨后選擇時(shí)延小且擁塞狀況良好的路徑進(jìn)行傳輸,以使數(shù)據(jù)包在盡可能短的時(shí)間內(nèi)按順序到達(dá)接收端。方法總體框架如圖1所示,包括:(Ⅰ)RTT預(yù)測(cè);(Ⅱ)基于BP神經(jīng)網(wǎng)絡(luò)的端到端時(shí)延預(yù)測(cè);(Ⅲ)子流擁塞狀況評(píng)估;(Ⅳ)網(wǎng)絡(luò)狀態(tài)綜合評(píng)估及有效路徑集排序調(diào)度4個(gè)部分。其中:RTT預(yù)測(cè)部分將RTT及RTT高頻變化分別建模為常量信號(hào)和噪聲,然后結(jié)合卡爾曼濾波,對(duì)當(dāng)前RTT測(cè)量值進(jìn)行評(píng)估和糾正;基于BP神經(jīng)網(wǎng)絡(luò)的端到端時(shí)延預(yù)測(cè)部分主要通過(guò)BP神經(jīng)網(wǎng)絡(luò)的構(gòu)建、訓(xùn)練和學(xué)習(xí)完成對(duì)端到端時(shí)延的更準(zhǔn)確預(yù)測(cè);子流擁塞狀況評(píng)估部分主要完成對(duì)各個(gè)子流的擁塞狀況評(píng)估;網(wǎng)絡(luò)狀態(tài)綜合評(píng)估及有效路徑集排序調(diào)度部分主要負(fù)責(zé)在對(duì)路徑完成綜合評(píng)估后,選擇最優(yōu)路徑進(jìn)行數(shù)據(jù)包調(diào)度。
圖1 基于BP神經(jīng)網(wǎng)絡(luò)端到端時(shí)延預(yù)測(cè)的多路傳輸調(diào)度
RTT是路徑質(zhì)量評(píng)估的重要參數(shù)。在本文中,RTT作為BP神經(jīng)網(wǎng)絡(luò)的輸入,其預(yù)測(cè)準(zhǔn)確性將直接影響端到端時(shí)延預(yù)測(cè)的準(zhǔn)確性。在路徑參數(shù)高度動(dòng)態(tài)變化的移動(dòng)無(wú)線網(wǎng)絡(luò)環(huán)境下,為進(jìn)一步提高RTT預(yù)測(cè)的準(zhǔn)確性,本文采用卡爾曼濾波方法,利用前一時(shí)刻的RTT與當(dāng)前時(shí)刻RTT的測(cè)量值來(lái)更新對(duì)RTT的預(yù)測(cè)估計(jì),進(jìn)而獲得當(dāng)前時(shí)刻RTT更準(zhǔn)確的估計(jì)值。
首先將RTT及RTT高頻變化分別建模為常量信號(hào)及噪聲,如式(1)和式(2)所示
RTTk=RTTk-1+wk
(1)
RTT′k=RTTk+vk
(2)
其中,RTTk和RTTk-1分別表示當(dāng)前時(shí)刻k和上一時(shí)刻k-1的RTT;wk表示過(guò)程噪聲,服從高斯分布;RTT′k表示當(dāng)前時(shí)刻RTT的測(cè)量值;vk是測(cè)量噪聲,服從高斯分布。RTT卡爾曼濾波預(yù)測(cè)過(guò)程如下:
(1)初始化測(cè)量噪聲R、 過(guò)程噪聲Q和誤差協(xié)方差P;
(2)對(duì)任一MPTCP子流j,若子流j收到ACK或發(fā)生超時(shí),獲取子流j當(dāng)前時(shí)刻RTT測(cè)量值RTTk及上一時(shí)刻最優(yōu)RTT估計(jì)值RTT(k-1|k-1)。 初次預(yù)測(cè)時(shí),將子流j上一時(shí)刻的RTT測(cè)量值RTTk-1視作上一時(shí)刻的最優(yōu)RTT估計(jì)值,然后轉(zhuǎn)步驟(3)~步驟(7)。
時(shí)間更新階段:
(3)計(jì)算當(dāng)前時(shí)刻RTT的預(yù)測(cè)值,記作RTT(k|k-1), 如式(3)所示
RTT(k|k-1)=RTT(k-1|k-1)
(3)
(4)計(jì)算當(dāng)前時(shí)刻誤差協(xié)方差的預(yù)測(cè)值,記作P(k|k-1), 如式(4)所示
P(k|k-1)=P(k-1|k-1)+Q
(4)
其中,P(k-1|k-1) 為上一時(shí)刻誤差估計(jì)協(xié)方差;Q為過(guò)程噪聲,服從高斯分布。
評(píng)估更新階段:
(5)根據(jù)當(dāng)前時(shí)刻誤差估計(jì)協(xié)方差更新卡爾曼增益Kk, 如式(5)所示
Kk=P(k|k-1)(P(k|k-1)+R)-1
(5)
其中,R為測(cè)量噪聲,服從高斯分布。
(6)根據(jù)卡爾曼增益Kk和當(dāng)前時(shí)刻RTT預(yù)測(cè)值RTT(k|k-1) 及當(dāng)前時(shí)刻RTT測(cè)量值RTTk計(jì)算當(dāng)前時(shí)刻最優(yōu)RTT估計(jì)值,如式(6)所示
RTT(k|k)=RTT(k|k-1)+Kk(RTTk-RTT(k|k-1)
(6)
(7)根據(jù)當(dāng)前時(shí)刻誤差估計(jì)協(xié)方差P(k|k-1) 和卡爾曼增益Kk更新誤差估計(jì)協(xié)方差P(k|k), 如式(7)所示
P(k|k)=(1-Kk)P(k|k-1)
(7)
(8)最終輸出經(jīng)卡爾曼濾波處理后的RTT(k|k), 即為子流j當(dāng)前時(shí)刻的最優(yōu)RTT估計(jì)值,將其作為端到端時(shí)延預(yù)測(cè)BP神經(jīng)網(wǎng)絡(luò)的輸入之一。
端到端時(shí)延預(yù)測(cè)的準(zhǔn)確性對(duì)減少數(shù)據(jù)包亂序發(fā)生具有重要的指導(dǎo)意義。影響鏈路端到端時(shí)延的主要因素包括鏈路丟包率、吞吐量、RTT等,為實(shí)現(xiàn)端到端時(shí)延的更準(zhǔn)確預(yù)測(cè),本文提出構(gòu)建服務(wù)于端到端時(shí)延預(yù)測(cè)的BP神經(jīng)網(wǎng)絡(luò)模型,以RTT、丟包率、吞吐量等端到端時(shí)延特征參數(shù)為輸入,端到端時(shí)延為期望輸出,對(duì)設(shè)計(jì)的多層BP神經(jīng)網(wǎng)絡(luò)實(shí)施訓(xùn)練,使其通過(guò)訓(xùn)練和學(xué)習(xí),提高端到端時(shí)延預(yù)測(cè)的準(zhǔn)確性。
基于BP神經(jīng)網(wǎng)絡(luò)的端到端時(shí)延預(yù)測(cè)主要分為BP神經(jīng)網(wǎng)絡(luò)端到端時(shí)延預(yù)測(cè)模型構(gòu)建和端到端時(shí)延預(yù)測(cè)兩部分。其中模型構(gòu)建部分主要負(fù)責(zé)構(gòu)建基于BP神經(jīng)網(wǎng)絡(luò)的端到端時(shí)延預(yù)測(cè)模型,通過(guò)實(shí)驗(yàn)收集的數(shù)據(jù)樣本集對(duì)設(shè)計(jì)的多層BP神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,并實(shí)施優(yōu)化,提高端到端時(shí)延預(yù)測(cè)的準(zhǔn)確性。
模型構(gòu)建部分主要由樣本數(shù)據(jù)獲取、BP神經(jīng)網(wǎng)絡(luò)構(gòu)建與訓(xùn)練和訓(xùn)練優(yōu)化3個(gè)部分組成。圖2給出了這3個(gè)部分的組成示意。當(dāng)應(yīng)用層有數(shù)據(jù)傳輸需求時(shí),端到端時(shí)延預(yù)測(cè)部分將在BP神經(jīng)網(wǎng)絡(luò)端到端時(shí)延預(yù)測(cè)模型的基礎(chǔ)上,以鏈路丟包率、吞吐量、RTT等參數(shù)為輸入,獲得鏈路端到端時(shí)延的預(yù)測(cè)輸出。
圖2 基于BP神經(jīng)網(wǎng)絡(luò)的端到端時(shí)延預(yù)測(cè)模型
2.2.1 樣本數(shù)據(jù)獲取
(1)計(jì)算、獲取丟包率Loss、 吞吐量Th及RTT。 其中RTT由RTT預(yù)測(cè)部分獲取,丟包率Loss、 吞吐量Th的計(jì)算方法如式(8)和式(9)所示
(8)
(9)
其中,Cwndpre表示擁塞窗口收縮之前的值,Cwnd表示當(dāng)前時(shí)刻的擁塞窗口值。
(2)計(jì)算端到端傳輸時(shí)延EET, 計(jì)算方法如式(10)所示[12]
EET=Tr-Ts-Te
(10)
在式(10)中,Tr表示接收端發(fā)送SACK的時(shí)間;Ts表示發(fā)送端發(fā)送數(shù)據(jù)包的時(shí)間;Te表示接收端從接收到數(shù)據(jù)包到發(fā)送SACK的間隔時(shí)間。
(3)對(duì)訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)進(jìn)行劃分。為避免過(guò)擬合問(wèn)題,將經(jīng)由(1)獲取到的樣本集劃分為訓(xùn)練集和測(cè)試集,并設(shè)置訓(xùn)練集占比85%,驗(yàn)證集占比15%??紤]到不同維度間的樣本數(shù)據(jù)差距及同維度樣本數(shù)據(jù)間的相差范圍,在訓(xùn)練前采用Min-max方法[13]對(duì)數(shù)據(jù)進(jìn)行歸一化處理,將數(shù)據(jù)映射至區(qū)間[-1,1],以減少數(shù)據(jù)波動(dòng)對(duì)神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)間及收斂效果的影響。
2.2.2 BP神經(jīng)網(wǎng)絡(luò)構(gòu)建與訓(xùn)練
(1)設(shè)置權(quán)重、閾值、學(xué)習(xí)速率、訓(xùn)練最大迭次數(shù)等相關(guān)參數(shù)。初始化權(quán)重和閾值在[-1,1]之間。對(duì)于學(xué)習(xí)速率,從較大學(xué)習(xí)速率開(kāi)始訓(xùn)練,然后逐漸減小速率,直至損失值不再發(fā)散。訓(xùn)練最大迭代次數(shù)設(shè)置為50 000。在多次試算的基礎(chǔ)上,兼顧網(wǎng)絡(luò)穩(wěn)定性及訓(xùn)練時(shí)長(zhǎng)考慮,具體參數(shù)設(shè)置見(jiàn)表1。
表1 參數(shù)設(shè)置
(2)輸入、輸出層神經(jīng)元個(gè)數(shù)選擇。輸入層神經(jīng)元分別為Th、RTT、Loss,輸出層神經(jīng)元為EET。相應(yīng)地,輸入層神經(jīng)元個(gè)數(shù)I設(shè)為3,輸出層神經(jīng)元個(gè)數(shù)J設(shè)為1。
(3)隱含層層數(shù)和節(jié)點(diǎn)數(shù)設(shè)置。通過(guò)獲取的樣本集,對(duì)設(shè)置不同隱含層數(shù)和節(jié)點(diǎn)數(shù)的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練測(cè)試,根據(jù)不同神經(jīng)元個(gè)數(shù)訓(xùn)練的均方誤差來(lái)確定隱含層層數(shù)和節(jié)點(diǎn)數(shù)。隱含層節(jié)點(diǎn)個(gè)數(shù)K參考式(11)及測(cè)試結(jié)果綜合選定
(11)
在式(11)中,J為輸出層節(jié)點(diǎn)個(gè)數(shù),I為輸入層節(jié)點(diǎn)個(gè)數(shù),a為1~10間的常數(shù)。
(4)隨機(jī)選取第m個(gè)輸入樣本及其對(duì)應(yīng)的期望輸出,將輸入樣本作為正向傳播輸入,其中第m個(gè)輸入樣本如式(12)所示,其對(duì)應(yīng)的期望輸出如式(13)所示
xi(m)=(Th(m),Loss(m),RTT(m))
(12)
H(m)=EET(m)
(13)
(5)判斷訓(xùn)練樣本是否用盡,若否,轉(zhuǎn)步驟(6)~步驟(7);否則轉(zhuǎn)步驟(8)。
(6)前向計(jì)算各p隱含層及輸出層神經(jīng)元的輸入和輸出。
1)輸入層神經(jīng)元Th、RTT、Loss計(jì)算隱含層輸出值Dk(m), 計(jì)算方法如式(14)~式(16)所示,其中k表示隱含層節(jié)點(diǎn);i表示輸入層節(jié)點(diǎn);I為輸入層節(jié)點(diǎn)數(shù);xi(m) 表示輸入層輸入;oi(m) 表示輸入層輸出;wik表示輸入層到隱含層的神經(jīng)元權(quán)值;dk(m) 表示隱含層輸入;Bk表示輸入層到隱含層的閾值;f為輸入層和隱含層激活函數(shù),為正切S形函數(shù)(tansig)
oi(m)=f(xi(m))
(14)
(15)
Dk(m)=f(dk(m))
(16)
2)將隱含層神經(jīng)元的輸出值傳遞給輸出層
(17)
Y(m)=g(y(m))
(18)
在式(17)和式(18)中,k表示隱含層節(jié)點(diǎn);K為隱含層節(jié)點(diǎn)數(shù);wk表示隱含層到輸出層的神經(jīng)元權(quán)值;B表示隱含層到輸出層的閾值;y(m) 為輸出層輸入;Y(m) 為輸出層輸出。g為輸出層激活函數(shù),為線性函數(shù)。
(7)誤差反向傳播,調(diào)整連接權(quán)值和閾值。計(jì)算神經(jīng)網(wǎng)絡(luò)輸出Y(m) 與期望值H(m) 之間的誤差,如式(19)所示
(19)
之后運(yùn)用梯度下降法,通過(guò)反向傳播不斷調(diào)整各層神經(jīng)元的權(quán)值和閾值,使誤差函數(shù)沿著負(fù)梯度方向下降,輸出值不斷接近實(shí)際值。
(8)計(jì)算網(wǎng)絡(luò)全局誤差,如式(20)所示
(20)
其中,M代表樣本數(shù),H(m),Y(m) 分別代表第m個(gè)樣本的神經(jīng)網(wǎng)絡(luò)輸出與期望值。
(9)判斷網(wǎng)絡(luò)全局誤差是否滿足要求,若滿足,預(yù)測(cè)過(guò)程結(jié)束;否則查看是否達(dá)到設(shè)定的迭代次數(shù)上限,若已達(dá)到,預(yù)測(cè)過(guò)程結(jié)束,否則轉(zhuǎn)步驟(4)~步驟(7)。
2.2.3 訓(xùn)練優(yōu)化
針對(duì)權(quán)值在學(xué)習(xí)過(guò)程中發(fā)生震蕩、收斂速度慢等問(wèn)題,使用動(dòng)量BP和學(xué)習(xí)速率可變的BP方法,不斷調(diào)整各層神經(jīng)元的權(quán)值和閾值,以減小誤差,提高BP神經(jīng)網(wǎng)絡(luò)的收斂速度。