蘇旭東,衷璐潔
(首都師范大學 信息工程學院,北京 100048)
MPTCP(MultiPath TCP)是一種基于多接口的傳輸控制協議,允許在多條鏈路同時傳輸數據,旨在提高吞吐量的同時更充分地利用網絡資源。在移動網絡環境下,帶寬、延遲、丟包率等網絡參數動態變化,終端的移動性會引發網絡鏈路間的頻繁切換,造成數據包不能按序到達接收端,引起數據包亂序問題。亂序數據包在接收端緩沖區滯留等待,嚴重時會導致接收端緩存阻塞,造成網絡延遲,降低網絡吞吐量。在該問題背景下,如何針對移動異構網絡特點,減少數據包亂序發生可能,實現高效移動多路傳輸調度具有重要意義。對此,本文提出一種基于BP神經網絡(back propagation neural network,BPNN)端到端(傳輸)時延預測的移動多路傳輸調度方法,綜合考慮鏈路丟包率、RTT、吞吐量等性能參數,通過BP神經網絡的訓練與學習,提取輸入性能參數與端到端時延間的有效規則,在更準確預測端到端時延的基礎上,對路徑擁塞狀況進行計算評估,并基于路徑綜合評估結果實施數據包調度,以使數據包盡可能按序到達接收端,進而有效避免緩沖區阻塞,實現負載均衡,提高多路傳輸網絡吞吐量。
MPTCP數據調度:Ke等[1]利用自定義的排序算法對路徑狀態信息進行排序,之后基于排序結果實現數據包的傳輸。黃輝等[2]提出一種將RTT與丟包率相結合,運用綜合效用函數作為評估指標的數據調度機制。Luo等[3]提出一種基于強化學習DQN的數據調度算法,通過強化模型完成路徑的選擇判斷,并借助路徑獎懲值計算實現路徑選擇的更新。
基于端到端時延的調度:Xue等[4]通過計算在接收端不發生亂序的前提下應為每條路徑分配的數據包個數,為各路徑分配DSN連續的數據包。王振朝等[5]利用路徑帶寬、往返時延和擁塞窗口預測數據包到達時間,并以此為基礎完成數據包的分發。Dong等[6]根據子流是否丟包對端到端時延采用不同的計算方法進行估算。Froemmgen等[7]通過主動探測未使用的子流并根據傳統TCP時間戳選項得到的端到端時延來調度數據包。
數據包亂序減少:Han等[8]通過預測數據包到達時間,將數據包調度到最早到達時間的子流上,以保證數據包到達的順序。Shi等[9]選擇慢路徑發送序列號較大的數據包。Kim等[10]通過估算無序數據包數量及傳輸所需的緩沖區大小來減少數據包亂序的發生可能。Ling等[11]對路徑阻塞時延進行評估,選擇不易造成阻塞的子流集進行數據傳輸。
基于BP神經網絡端到端時延預測的多路傳輸調度(multipath scheduling based on BP neural network EET prediction,MSBPEET)通過綜合考慮丟包率、吞吐量、RTT等路徑性能參數,構建BP神經網絡對數據包在各路徑上的端到端時延實施預測,隨后選擇時延小且擁塞狀況良好的路徑進行傳輸,以使數據包在盡可能短的時間內按順序到達接收端。方法總體框架如圖1所示,包括:(Ⅰ)RTT預測;(Ⅱ)基于BP神經網絡的端到端時延預測;(Ⅲ)子流擁塞狀況評估;(Ⅳ)網絡狀態綜合評估及有效路徑集排序調度4個部分。其中:RTT預測部分將RTT及RTT高頻變化分別建模為常量信號和噪聲,然后結合卡爾曼濾波,對當前RTT測量值進行評估和糾正;基于BP神經網絡的端到端時延預測部分主要通過BP神經網絡的構建、訓練和學習完成對端到端時延的更準確預測;子流擁塞狀況評估部分主要完成對各個子流的擁塞狀況評估;網絡狀態綜合評估及有效路徑集排序調度部分主要負責在對路徑完成綜合評估后,選擇最優路徑進行數據包調度。

圖1 基于BP神經網絡端到端時延預測的多路傳輸調度
RTT是路徑質量評估的重要參數。在本文中,RTT作為BP神經網絡的輸入,其預測準確性將直接影響端到端時延預測的準確性。在路徑參數高度動態變化的移動無線網絡環境下,為進一步提高RTT預測的準確性,本文采用卡爾曼濾波方法,利用前一時刻的RTT與當前時刻RTT的測量值來更新對RTT的預測估計,進而獲得當前時刻RTT更準確的估計值。
首先將RTT及RTT高頻變化分別建模為常量信號及噪聲,如式(1)和式(2)所示
RTTk=RTTk-1+wk
(1)
RTT′k=RTTk+vk
(2)
其中,RTTk和RTTk-1分別表示當前時刻k和上一時刻k-1的RTT;wk表示過程噪聲,服從高斯分布;RTT′k表示當前時刻RTT的測量值;vk是測量噪聲,服從高斯分布。RTT卡爾曼濾波預測過程如下:
(1)初始化測量噪聲R、 過程噪聲Q和誤差協方差P;
(2)對任一MPTCP子流j,若子流j收到ACK或發生超時,獲取子流j當前時刻RTT測量值RTTk及上一時刻最優RTT估計值RTT(k-1|k-1)。 初次預測時,將子流j上一時刻的RTT測量值RTTk-1視作上一時刻的最優RTT估計值,然后轉步驟(3)~步驟(7)。
時間更新階段:
(3)計算當前時刻RTT的預測值,記作RTT(k|k-1), 如式(3)所示
RTT(k|k-1)=RTT(k-1|k-1)
(3)
(4)計算當前時刻誤差協方差的預測值,記作P(k|k-1), 如式(4)所示
P(k|k-1)=P(k-1|k-1)+Q
(4)
其中,P(k-1|k-1) 為上一時刻誤差估計協方差;Q為過程噪聲,服從高斯分布。
評估更新階段:
(5)根據當前時刻誤差估計協方差更新卡爾曼增益Kk, 如式(5)所示
Kk=P(k|k-1)(P(k|k-1)+R)-1
(5)
其中,R為測量噪聲,服從高斯分布。
(6)根據卡爾曼增益Kk和當前時刻RTT預測值RTT(k|k-1) 及當前時刻RTT測量值RTTk計算當前時刻最優RTT估計值,如式(6)所示
RTT(k|k)=RTT(k|k-1)+Kk(RTTk-RTT(k|k-1)
(6)
(7)根據當前時刻誤差估計協方差P(k|k-1) 和卡爾曼增益Kk更新誤差估計協方差P(k|k), 如式(7)所示
P(k|k)=(1-Kk)P(k|k-1)
(7)
(8)最終輸出經卡爾曼濾波處理后的RTT(k|k), 即為子流j當前時刻的最優RTT估計值,將其作為端到端時延預測BP神經網絡的輸入之一。
端到端時延預測的準確性對減少數據包亂序發生具有重要的指導意義。影響鏈路端到端時延的主要因素包括鏈路丟包率、吞吐量、RTT等,為實現端到端時延的更準確預測,本文提出構建服務于端到端時延預測的BP神經網絡模型,以RTT、丟包率、吞吐量等端到端時延特征參數為輸入,端到端時延為期望輸出,對設計的多層BP神經網絡實施訓練,使其通過訓練和學習,提高端到端時延預測的準確性。
基于BP神經網絡的端到端時延預測主要分為BP神經網絡端到端時延預測模型構建和端到端時延預測兩部分。其中模型構建部分主要負責構建基于BP神經網絡的端到端時延預測模型,通過實驗收集的數據樣本集對設計的多層BP神經網絡模型進行訓練,并實施優化,提高端到端時延預測的準確性。
模型構建部分主要由樣本數據獲取、BP神經網絡構建與訓練和訓練優化3個部分組成。圖2給出了這3個部分的組成示意。當應用層有數據傳輸需求時,端到端時延預測部分將在BP神經網絡端到端時延預測模型的基礎上,以鏈路丟包率、吞吐量、RTT等參數為輸入,獲得鏈路端到端時延的預測輸出。

圖2 基于BP神經網絡的端到端時延預測模型
2.2.1 樣本數據獲取
(1)計算、獲取丟包率Loss、 吞吐量Th及RTT。 其中RTT由RTT預測部分獲取,丟包率Loss、 吞吐量Th的計算方法如式(8)和式(9)所示
(8)
(9)
其中,Cwndpre表示擁塞窗口收縮之前的值,Cwnd表示當前時刻的擁塞窗口值。
(2)計算端到端傳輸時延EET, 計算方法如式(10)所示[12]
EET=Tr-Ts-Te
(10)
在式(10)中,Tr表示接收端發送SACK的時間;Ts表示發送端發送數據包的時間;Te表示接收端從接收到數據包到發送SACK的間隔時間。
(3)對訓練數據和測試數據進行劃分。為避免過擬合問題,將經由(1)獲取到的樣本集劃分為訓練集和測試集,并設置訓練集占比85%,驗證集占比15%。考慮到不同維度間的樣本數據差距及同維度樣本數據間的相差范圍,在訓練前采用Min-max方法[13]對數據進行歸一化處理,將數據映射至區間[-1,1],以減少數據波動對神經網絡訓練時間及收斂效果的影響。
2.2.2 BP神經網絡構建與訓練
(1)設置權重、閾值、學習速率、訓練最大迭次數等相關參數。初始化權重和閾值在[-1,1]之間。對于學習速率,從較大學習速率開始訓練,然后逐漸減小速率,直至損失值不再發散。訓練最大迭代次數設置為50 000。在多次試算的基礎上,兼顧網絡穩定性及訓練時長考慮,具體參數設置見表1。

表1 參數設置
(2)輸入、輸出層神經元個數選擇。輸入層神經元分別為Th、RTT、Loss,輸出層神經元為EET。相應地,輸入層神經元個數I設為3,輸出層神經元個數J設為1。
(3)隱含層層數和節點數設置。通過獲取的樣本集,對設置不同隱含層數和節點數的BP神經網絡進行訓練測試,根據不同神經元個數訓練的均方誤差來確定隱含層層數和節點數。隱含層節點個數K參考式(11)及測試結果綜合選定
(11)
在式(11)中,J為輸出層節點個數,I為輸入層節點個數,a為1~10間的常數。
(4)隨機選取第m個輸入樣本及其對應的期望輸出,將輸入樣本作為正向傳播輸入,其中第m個輸入樣本如式(12)所示,其對應的期望輸出如式(13)所示
xi(m)=(Th(m),Loss(m),RTT(m))
(12)
H(m)=EET(m)
(13)
(5)判斷訓練樣本是否用盡,若否,轉步驟(6)~步驟(7);否則轉步驟(8)。
(6)前向計算各p隱含層及輸出層神經元的輸入和輸出。
1)輸入層神經元Th、RTT、Loss計算隱含層輸出值Dk(m), 計算方法如式(14)~式(16)所示,其中k表示隱含層節點;i表示輸入層節點;I為輸入層節點數;xi(m) 表示輸入層輸入;oi(m) 表示輸入層輸出;wik表示輸入層到隱含層的神經元權值;dk(m) 表示隱含層輸入;Bk表示輸入層到隱含層的閾值;f為輸入層和隱含層激活函數,為正切S形函數(tansig)
oi(m)=f(xi(m))
(14)
(15)
Dk(m)=f(dk(m))
(16)
2)將隱含層神經元的輸出值傳遞給輸出層
(17)
Y(m)=g(y(m))
(18)
在式(17)和式(18)中,k表示隱含層節點;K為隱含層節點數;wk表示隱含層到輸出層的神經元權值;B表示隱含層到輸出層的閾值;y(m) 為輸出層輸入;Y(m) 為輸出層輸出。g為輸出層激活函數,為線性函數。
(7)誤差反向傳播,調整連接權值和閾值。計算神經網絡輸出Y(m) 與期望值H(m) 之間的誤差,如式(19)所示
(19)
之后運用梯度下降法,通過反向傳播不斷調整各層神經元的權值和閾值,使誤差函數沿著負梯度方向下降,輸出值不斷接近實際值。
(8)計算網絡全局誤差,如式(20)所示
(20)
其中,M代表樣本數,H(m),Y(m) 分別代表第m個樣本的神經網絡輸出與期望值。
(9)判斷網絡全局誤差是否滿足要求,若滿足,預測過程結束;否則查看是否達到設定的迭代次數上限,若已達到,預測過程結束,否則轉步驟(4)~步驟(7)。
2.2.3 訓練優化
針對權值在學習過程中發生震蕩、收斂速度慢等問題,使用動量BP和學習速率可變的BP方法,不斷調整各層神經元的權值和閾值,以減小誤差,提高BP神經網絡的收斂速度。