本發(fā)明屬于無線通信技術(shù)領(lǐng)域,具體涉及一種異構(gòu)無線網(wǎng)絡(luò)環(huán)境下可抵抗多路徑傳輸控制協(xié)議(MPTCP)接收緩沖區(qū)阻塞的數(shù)據(jù)包調(diào)度方法。
背景技術(shù):
無線技術(shù)正處在一個(gè)高速發(fā)展的過程中,在我們周圍部署著多種不同的無線接入網(wǎng)絡(luò),包括公眾無線局域網(wǎng)WiFi,車載無線網(wǎng)WAVE,城域網(wǎng)WiMax和移動(dòng)網(wǎng)4G/LTE等,也預(yù)示著無線網(wǎng)絡(luò)向?qū)拵М悩?gòu)并行接入的方向發(fā)展。無線接入網(wǎng)絡(luò)的不斷壯大和多媒體業(yè)務(wù)的蓬勃發(fā)展,給多模終端的發(fā)展指明了方向——支持多個(gè)網(wǎng)絡(luò)接口,具備更強(qiáng)大的計(jì)算能力,擁有更龐大的存儲(chǔ)空間。終端不斷增強(qiáng)的處理能力和通信能力能支持豐富多彩的多媒體業(yè)務(wù),從而更加適應(yīng)異構(gòu)無線網(wǎng)絡(luò)的通信環(huán)境。多模終端數(shù)量的增加,使多路徑并行傳輸(CMT)技術(shù)的應(yīng)用更加廣泛。CMT支持多種網(wǎng)絡(luò)并行接入,利用多個(gè)網(wǎng)絡(luò)接口和多條路徑并行地傳輸數(shù)據(jù),從而獲得較大的聚合吞吐量,提高傳輸效率。現(xiàn)有的CMT傳輸協(xié)議主要有兩類:流傳輸控制協(xié)議(SCTP)和多路徑TCP(MPTCP)協(xié)議。SCTP具有多宿性,常用于CMT;MPTCP是一種結(jié)合了TCP協(xié)議和CMT優(yōu)點(diǎn)的方案,在研究領(lǐng)域被廣泛關(guān)注。
然而,在異構(gòu)無線網(wǎng)絡(luò)環(huán)境下,現(xiàn)有的MPTCP協(xié)議并沒有達(dá)到理想的傳輸效果,接收端的數(shù)據(jù)重組使得多路徑并行傳輸存在很嚴(yán)重的問題。由于無線路徑的時(shí)變性以及各路徑之間的差異性(帶寬、時(shí)延和丟包率等),使得通過多路徑傳輸?shù)臄?shù)據(jù)包不能按序到達(dá)接收端,而應(yīng)用層面對數(shù)據(jù)包次序性的要求使得接收端不得不對數(shù)據(jù)包進(jìn)行緩存重組,再按序提交給應(yīng)用層。傳統(tǒng)的多路傳輸調(diào)度策略,如時(shí)間片輪轉(zhuǎn)調(diào)度策略,會(huì)使得有限的接收緩沖區(qū)因?yàn)榇罅繑?shù)據(jù)包的重排而被阻塞,接收緩沖區(qū)阻塞會(huì)限制部分路徑的數(shù)據(jù)傳輸使其空閑,不僅降低了吞吐量,還增加了傳輸時(shí)延并會(huì)導(dǎo)致大量的數(shù)據(jù)包重傳。因此,迫切需要一種有效的數(shù)據(jù)包調(diào)度方法來解決MPTCP接收緩沖區(qū)阻塞的問題。
本發(fā)明涉及了MPTCP方面內(nèi)容,介紹如下:
MPTCP系統(tǒng)模型:如圖1所示,MPTCP中存在一個(gè)發(fā)送端和一個(gè)接收端,發(fā)送端和接收端之間通過P條路徑進(jìn)行數(shù)據(jù)傳輸,將每條路徑上建立的連接稱為MPTCP的子流,所有子流的集合用p表示。發(fā)送端的數(shù)據(jù)包在發(fā)送緩沖區(qū)通過統(tǒng)一編號后由調(diào)度模塊將數(shù)據(jù)包分發(fā)到各條子流上;各條子流通過TCP協(xié)議將數(shù)據(jù)包發(fā)送到接收端;接收端通過統(tǒng)一的接收緩沖區(qū),將各條子流發(fā)送來的數(shù)據(jù)包進(jìn)行緩存并重新排序,然后按序地將數(shù)據(jù)包遞交給應(yīng)用。
帶寬測量:帶寬是指通信路徑單位時(shí)間內(nèi)能發(fā)送的數(shù)據(jù)量,是衡量網(wǎng)速的指標(biāo)。文獻(xiàn)《pathChirp:Efficient Available Bandwidth Estimation for Network Paths》提供了一種稱為pathChirp的帶寬估計(jì)方法,pathChirp中每一個(gè)chirp由N個(gè)數(shù)據(jù)包組成,每個(gè)數(shù)據(jù)包的大小為S,數(shù)據(jù)包之間的發(fā)送間隔呈指數(shù)增長,記第k個(gè)數(shù)據(jù)包的發(fā)送間隔為△k,傳輸延時(shí)為qk,這個(gè)包的瞬時(shí)發(fā)送速率Rk=S/Δk,如果qk=qk-1,說明此時(shí)的發(fā)送速率小于等于路徑帶寬,否則,此時(shí)的發(fā)送速率大于路徑帶寬。pathChirp通過發(fā)送少量的探測數(shù)據(jù)可以準(zhǔn)確地估計(jì)路徑的可用帶寬。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對現(xiàn)有MPTCP協(xié)議中數(shù)據(jù)包調(diào)度方法不當(dāng)使得接收緩沖區(qū)阻塞從而導(dǎo)致傳輸性能不佳的問題,提出了一種抵抗MPTCP接收緩沖區(qū)阻塞的數(shù)據(jù)包調(diào)度方法,該方法首先基于網(wǎng)絡(luò)狀況分析接收緩沖區(qū)的數(shù)據(jù)包亂序情況,再進(jìn)行數(shù)據(jù)包調(diào)度使得數(shù)據(jù)包在接收端順序到達(dá)。
本發(fā)明方法具體步驟是:
步驟(1)獲取子流i的帶寬μi、往返時(shí)間RTTi和丟包率πi;具體是:
通過pathChirp算法獲取子流i的帶寬μi,通過TCP協(xié)議的SRTT機(jī)制獲取子流i的往返時(shí)間RTTi,通過統(tǒng)計(jì)丟失的數(shù)據(jù)包個(gè)數(shù)和發(fā)送的數(shù)據(jù)包個(gè)數(shù)獲取子流i的丟包率πi。
步驟(2)對原始子流集合p中的各個(gè)子流按照往返時(shí)間RTT的值從大到小排序組成排序子流集合pavailable。
步驟(3)選取pavailable中RTT值最大的子流imax,獲得調(diào)度序號Seqselect和子流imax傳輸數(shù)據(jù)包的個(gè)數(shù)發(fā)送端從序號為Seqselect的數(shù)據(jù)包開始調(diào)度個(gè)數(shù)據(jù)包分配給子流imax。
獲得調(diào)度序號Seqselect和子流imax傳輸數(shù)據(jù)包的個(gè)數(shù)的方法是:
將發(fā)送端的發(fā)送緩沖區(qū)內(nèi)未發(fā)送數(shù)據(jù)包中的最小數(shù)據(jù)包序號記為Seqmin,從序號Seqmin開始(包括Seqmin)連續(xù)未發(fā)送數(shù)據(jù)包中的最大數(shù)據(jù)包序號記為Seqmax,如果發(fā)送緩沖區(qū)中沒有未發(fā)送的數(shù)據(jù)包,則將序號Seqmin置為下一個(gè)到達(dá)的數(shù)據(jù)包序號,序號Seqmax置為-1;
獲得調(diào)度序號Seqselect:
j為原始子流集合p中往返時(shí)間小于子流imax往返時(shí)間的子流;MSS為最大報(bào)文段長度,確立為每個(gè)數(shù)據(jù)包的大??;
獲得子流imax傳輸數(shù)據(jù)包的個(gè)數(shù)
其中為子流imax的發(fā)送窗口大小。
步驟(4)將子流imax從集合pavailable中刪除,重復(fù)執(zhí)行步驟(3),直到pavailable為空。
本發(fā)明綜合考慮了MPTCP中各子流的網(wǎng)絡(luò)狀況,通過分析各子流的差異性做出合理的數(shù)據(jù)包調(diào)度使得數(shù)據(jù)包順序到達(dá)接收緩沖區(qū)。與現(xiàn)有的MPTCP調(diào)度方法相比,其優(yōu)點(diǎn)體現(xiàn)在:
1、傳統(tǒng)的MPTCP調(diào)度方法,如時(shí)間片輪轉(zhuǎn)和最小RTT等方法,不根據(jù)接收緩沖區(qū)的阻塞情況進(jìn)行調(diào)度,而且對數(shù)據(jù)包到達(dá)接收端的順序不做規(guī)劃,因此這些調(diào)度方法不能解決接收緩沖區(qū)阻塞的問題。而本發(fā)明綜合考慮各條子流的網(wǎng)絡(luò)狀況,分析數(shù)據(jù)包通過各條子流到達(dá)接收端的時(shí)間,在發(fā)送端對數(shù)據(jù)包調(diào)度時(shí)進(jìn)行合理規(guī)劃,能有效解決接收緩沖區(qū)阻塞問題,提升MPTCP的傳輸性能;
2、新提出的一些DAPS和OTIAS等MPTCP數(shù)據(jù)包調(diào)度方法,在發(fā)送端對數(shù)據(jù)包的調(diào)度提前做出判決以解決接收緩沖區(qū)擁塞的問題,這些方法的弊端是提前做出判決后,子流不能及時(shí)地將分發(fā)到的數(shù)據(jù)包發(fā)送出去,特別是當(dāng)子流發(fā)生丟包時(shí)會(huì)有大量的數(shù)據(jù)包阻塞在子流的發(fā)送緩沖區(qū)中,因此不能有效地應(yīng)對網(wǎng)絡(luò)的變化。而本發(fā)明充分從帶寬、丟包率和時(shí)延等多方面考慮了各條子流的網(wǎng)絡(luò)狀況,對接收緩沖區(qū)阻塞進(jìn)行充分分析然后做出合理的調(diào)度,同時(shí)考慮了網(wǎng)絡(luò)變化的影響,因此能夠有效地應(yīng)對網(wǎng)絡(luò)變化,從而提升MPTCP的傳輸性能。
附圖說明
圖1為抵抗MPTCP接收緩沖區(qū)阻塞的數(shù)據(jù)包調(diào)度方法系統(tǒng)架構(gòu)圖。
圖2為本發(fā)明提供的MPTCP數(shù)據(jù)包調(diào)度流程圖;
圖3為兩條子流的MPTCP模型示例圖;
圖4為MPTCP數(shù)據(jù)包調(diào)度序號示意圖;
圖5為兩條子流的MPTCP數(shù)據(jù)包調(diào)度方法示例圖。
具體實(shí)施方式
以下結(jié)合附圖并舉例對本發(fā)明做進(jìn)一步詳細(xì)說明。
如圖1所示,本發(fā)明首先通過路徑狀態(tài)監(jiān)測動(dòng)態(tài)獲取各子流的網(wǎng)絡(luò)狀況(帶寬、時(shí)延和丟包率等)交由參數(shù)控制單元管理,數(shù)據(jù)包調(diào)度模塊根據(jù)獲取的網(wǎng)絡(luò)狀況對各子流進(jìn)行數(shù)據(jù)包調(diào)度。
一種抵抗MPTCP接收緩沖區(qū)阻塞的數(shù)據(jù)包調(diào)度方法,具體流程如圖2所示。
以兩條子流的MPTCP傳輸模型為例進(jìn)行說明,如圖3所示,MPTCP中存在兩條子流,編號為子流1和子流2,即所有子流集合p={1,2},發(fā)送端和接收端通過這兩條子流相連。其中子流1的帶寬μ1為6Mbps,往返時(shí)間RTT1為40ms;子流2的帶寬μ2為1.5Mbps,往返時(shí)間RTT2為80ms,為了簡化說明,這里暫不考慮丟包問題,假設(shè)兩條子流的丟包率為零。MPTCP中的子流根據(jù)擁塞控制機(jī)制調(diào)整擁塞窗口,每個(gè)時(shí)刻擁塞窗口大小都有可能不同,在此選取某一時(shí)刻為代表進(jìn)行舉例說明。假定此時(shí)發(fā)送緩沖區(qū)中未發(fā)送的數(shù)據(jù)包最小序號Seqmin為101,最大序號為140,此時(shí)子流1的發(fā)送窗口為20(單位數(shù)據(jù)包),子流2的發(fā)送窗口為10(單位數(shù)據(jù)包),每個(gè)數(shù)據(jù)包的大小MSS為1500字節(jié)。調(diào)度示意過程參照附圖5,本發(fā)明具體通過以下步驟實(shí)現(xiàn):
步驟(1)獲取子流帶寬、往返時(shí)間和丟包率,得到子流1的帶寬μ1為6Mbps,往返時(shí)間RTT1為40ms,丟包率π1為0;子流2的帶寬μ2為1.5Mbps,往返時(shí)間RTT2為80ms,丟包率π2為0;
步驟(2)對原始子流集合p={1,2}集合中的子流按照RTT值從大到小排序得到排序子流集合pavailable={2,1};
如圖4所示,步驟(3)選取排序子流集合pavailable={2,1}中RTT值最大的子流2,發(fā)送端從序號為Seqselect的數(shù)據(jù)包開始調(diào)度Num2個(gè)數(shù)據(jù)包分配給子流2,其中:
Num2=min{Seqmax-Seqselect+1,SWND2}
=min{140-121+1,10}=10
步驟(4)將子流2從集合pavailable中刪除得到pavailable={1},重復(fù)執(zhí)行步驟(3);
如圖4所示,步驟(3)選取集合pavailable={1}中RTT值最大的子流1,發(fā)送端從序號為Seqselect的數(shù)據(jù)包開始調(diào)度Num1個(gè)數(shù)據(jù)包分配給子流1,其中:
Num1=min{Seqmax-Seqselect+1,SWND1}
=min{120-101+1,20}=20
步驟(4)將子流1從集合pavailable中刪除得到pavailable為空集,此次調(diào)度結(jié)束。
等待子流1這一輪次傳輸完成,經(jīng)過RTT1時(shí)間后,子流1的發(fā)送窗口為21(單位數(shù)據(jù)包),繼續(xù)執(zhí)行本發(fā)明的調(diào)度方法,具體如下:
步驟(1)獲取子流帶寬、往返時(shí)間和丟包率,得到子流1的帶寬μ1為6Mbps,往返時(shí)間RTT1為40ms,丟包率π1為0;子流2的帶寬μ2為1.5Mbps,往返時(shí)間RTT2為80ms,丟包率π2為0;
步驟(2)對原始子流集合p={1,2}集合中的子流根據(jù)RTT值從大到小排序得到排序子流集合pavailable={2,1};
如圖4所示,步驟(3)選取集合pavailable={2,1}中RTT值最大的子流2,發(fā)送端從序號為Seqselect的數(shù)據(jù)包開始調(diào)度Num2個(gè)數(shù)據(jù)包分配給子流2,其中:
Num2=0,Seqselect>Seqmax
步驟(4)將子流2從集合pavailable中刪除得到pavailable={1},重復(fù)執(zhí)行步驟(3);
如圖4所示,步驟(3)選取集合pavailable={1}中RTT值最大的子流1,發(fā)送端從序號為Seqselect的數(shù)據(jù)包開始調(diào)度Num1個(gè)數(shù)據(jù)包分配給子流1,其中:
Num1=min{Seqmax-Seqselect+1,SWND1}
=min{140-131+1,21}=10
步驟(4)將子流1從集合pavailable中刪除得到pavailable為空集,此次調(diào)度結(jié)束。
至此,發(fā)送緩沖區(qū)中的數(shù)據(jù)已全部調(diào)度完畢,需要等待應(yīng)用層數(shù)據(jù)到達(dá),而后繼續(xù)執(zhí)行本發(fā)明的數(shù)據(jù)包調(diào)度方法。