本發(fā)明涉及擁塞控制領(lǐng)域,具體涉及一種多路徑傳輸協(xié)議擁塞控制方法。
背景技術(shù):
傳輸控制協(xié)議(transmissioncontrolprotocol,tcp)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。網(wǎng)絡(luò)中有95%的流量來自于tcp連接,tcp連接的兩端一般使用一條路徑來傳輸數(shù)據(jù)。而隨著多種接入技術(shù)的發(fā)展,現(xiàn)如今大多數(shù)的主機(jī)都配置有多個網(wǎng)絡(luò)接口,也可以通過usb接口來擴(kuò)展網(wǎng)絡(luò)接口。而且智能移動終端越來越普及,它們也往往都同時具有蜂窩網(wǎng)絡(luò)接口(如3g接口、4g接口)和wifi兩種接口。傳統(tǒng)tcp協(xié)議只能將每個連接綁定到單個接口,因此不能有效利用現(xiàn)今設(shè)備的多個接口,這將會造成大量的資源浪費(fèi)。近年來,ietf工作組提出了對傳統(tǒng)tcp協(xié)議的擴(kuò)展協(xié)議,多路徑tcp(multi-pathtcp,mptcp)。mptcp將單個tcp的數(shù)據(jù)分流到多個不同的子流,每一條子流會走不同的路徑,從而形成多條鏈路。這樣就可以充分利用設(shè)備的多個網(wǎng)絡(luò)接口,實(shí)現(xiàn)最大的吞吐量和魯棒性。
網(wǎng)絡(luò)中的擁塞現(xiàn)象是由于通信子網(wǎng)中某一部分的分組數(shù)量過多,使得該部分的網(wǎng)絡(luò)來不及處理,以致引起這部分乃至整個網(wǎng)絡(luò)性能下降的現(xiàn)象,嚴(yán)重時甚至?xí)?dǎo)致網(wǎng)絡(luò)癱瘓。擁塞控制就是防止過多的數(shù)據(jù)注入網(wǎng)絡(luò),這樣可以使網(wǎng)絡(luò)中的路由器或者鏈路不會過載。mptcp的擁塞控制機(jī)制決定在每個子流上發(fā)送多少數(shù)據(jù),這樣做的目的是將流量從比較擁擠的路徑轉(zhuǎn)移到不那么擁塞的路徑上,從而提高吞吐量。鏈接增長算法(linkedincreasesalgorithm,lia)是mptcp的默認(rèn)擁塞控制算法,在多路徑速率分配時,綜合考慮了丟包率和往返時間(roundtimetrip,rtt)。但是由于mptcp需要收到各個子流的數(shù)據(jù)并排序后才能上傳到應(yīng)用層,所以當(dāng)mptcp的子流之間速率差異較大時,快子流需要“等待”慢子流的數(shù)據(jù),如果慢子流的數(shù)據(jù)遲遲不來,而快子流的數(shù)據(jù)不停地到達(dá),則容易造成接收端的緩沖區(qū)溢出,從而導(dǎo)致來自快子流的數(shù)據(jù)包也可能被丟棄,使得網(wǎng)絡(luò)性能下降。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:正是基于以上的原因,本發(fā)明提出一種基于強(qiáng)化學(xué)習(xí)的多路徑控制協(xié)議擁塞控制方法。通過在網(wǎng)絡(luò)環(huán)境中進(jìn)行反復(fù)學(xué)習(xí),得到一組對應(yīng)于該網(wǎng)絡(luò)的從狀態(tài)到動作的映射表,從而使得網(wǎng)絡(luò)設(shè)備知道在不同網(wǎng)絡(luò)狀態(tài)下如何改變窗口大小以獲得最好的性能。
技術(shù)方案:一種基于強(qiáng)化學(xué)習(xí)的多路徑傳輸控制協(xié)議擁塞控制方法,應(yīng)用于多路徑傳輸控制協(xié)議中,包括以下步驟:
1)建立擁塞控制的馬爾可夫模型,具體包括:
設(shè)置
設(shè)置{m,b,r}作為發(fā)送端的動作,m為對當(dāng)前擁塞窗口的乘數(shù),b為對當(dāng)前擁塞窗口的加數(shù),m和b都是用于調(diào)整當(dāng)前擁塞窗口大小,r為發(fā)送子流的時間間隔,通過調(diào)節(jié)發(fā)送間隔以達(dá)到調(diào)節(jié)發(fā)送速率的目的;一般設(shè)置為m={0,0.1,0.5,1,2},b={0,+/-1,+/-4,+/-8},r={+/-0.01,+/-0.08,+/-0.64};
為了使平均吞吐量最大化并且使各個子流的平均時延最小化,設(shè)置
2)對網(wǎng)絡(luò)環(huán)境采樣,得到馬爾可夫模型的狀態(tài)參數(shù);
3)根據(jù)狀態(tài)參數(shù)對馬爾可夫模型進(jìn)行迭代訓(xùn)練,得到從狀態(tài)到動作的映射表;
4)在網(wǎng)絡(luò)中應(yīng)用狀態(tài)-動作映射表,具體為:從擁塞避免階段開始,發(fā)送端每收到一個確認(rèn),就計(jì)算當(dāng)前的狀態(tài),然后在狀態(tài)-動作映射表中找到對應(yīng)的動作并執(zhí)行該動作。
其中,所述步驟3)具體包括以下步驟:
31)將狀態(tài)空間劃分為多個區(qū)域,并設(shè)置默認(rèn)動作;
32)對所有狀態(tài)區(qū)域應(yīng)用默認(rèn)動作,找出狀態(tài)最常出現(xiàn)的區(qū)域,作為待優(yōu)化狀態(tài)區(qū)域;
33)對待優(yōu)化狀態(tài)區(qū)域應(yīng)用所有動作,選擇使目標(biāo)方程值最大的動作,形成狀態(tài)-動作映射規(guī)則,并添加到狀態(tài)-動作映射表中;
34)按照以下原則繼續(xù)尋找待優(yōu)化狀態(tài)區(qū)域:對未經(jīng)優(yōu)化的區(qū)域應(yīng)用所有動作,對優(yōu)化過的區(qū)域應(yīng)用前次優(yōu)化所得到的動作,然后找出狀態(tài)最常出現(xiàn)的區(qū)域,作為待優(yōu)化狀態(tài)區(qū)域;如果找到的是已經(jīng)優(yōu)化過的區(qū)域,則將該區(qū)域進(jìn)一步劃分,然后再次按照上述原則選取待優(yōu)化區(qū)域;
35)重復(fù)執(zhí)行步驟33)-34),直到狀態(tài)區(qū)域的數(shù)目達(dá)到指定閾值為止。
在以上過程中,本發(fā)明的方法選取狀態(tài)最常出現(xiàn)的區(qū)域作為待優(yōu)化狀態(tài)區(qū)域,這樣可以著重優(yōu)化經(jīng)常會用到的規(guī)則。這種策略更有針對性,能夠提高效率,節(jié)省時間。并且在選取待優(yōu)化狀態(tài)區(qū)域時,利用了前一次優(yōu)化的成果,可以更快地逼近最優(yōu)解。這體現(xiàn)了強(qiáng)化學(xué)習(xí)的思想。
工作原理:強(qiáng)化學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個分支,是指智能系統(tǒng)從環(huán)境到行為映射的學(xué)習(xí),以使獎勵信號函數(shù)值最大。強(qiáng)化學(xué)習(xí)通常用馬爾可夫決策過程(markovdecisionprocess,mdp)來描述。如圖1所示,機(jī)器處于環(huán)境e中,狀態(tài)空間為x,其中每個狀態(tài)x∈x是機(jī)器感知到的環(huán)境的描述,機(jī)器能夠采取的動作構(gòu)成了動作空間a,若某個動作a作用在當(dāng)前狀態(tài)x上,則轉(zhuǎn)移函數(shù)p將環(huán)境從當(dāng)前狀態(tài)按某種概率轉(zhuǎn)移到另一個狀態(tài),同時根據(jù)獎賞函數(shù)r反饋給機(jī)器一個獎賞。強(qiáng)化學(xué)習(xí)的目的就是求解馬爾可夫決策過程mdp。簡單地說,mdp就是一個機(jī)器采取行動從而改變自己的狀態(tài)并獲得獎勵與環(huán)境發(fā)生交互的循環(huán)過程。mdp的策略完全取決于當(dāng)前狀態(tài),這體現(xiàn)了它的馬爾可夫性質(zhì)。
本發(fā)明通過建立馬爾可夫決策過程,將擁塞控制形式化表示。用發(fā)送端的各個子流的擁塞窗口大小以及各個子流的rtt來表示各個子流當(dāng)前的網(wǎng)絡(luò)狀態(tài),定義發(fā)送端調(diào)整擁塞窗口和發(fā)送間隔的動作,建立目標(biāo)方程,以獲得最大平均吞吐量和最小平均時延為目的。通過建立網(wǎng)絡(luò)模型,模擬產(chǎn)生多種網(wǎng)絡(luò)環(huán)境。在不同的網(wǎng)絡(luò)環(huán)境中,通過不斷地試錯,對當(dāng)前網(wǎng)絡(luò)環(huán)境做所有的動作,然后從環(huán)境給出的反饋中學(xué)習(xí)并優(yōu)化動作。經(jīng)過大量的線下學(xué)習(xí),使得發(fā)送端可以在某一個狀態(tài)區(qū)域做出相應(yīng)的調(diào)整擁塞窗口大小和發(fā)送間隔的動作,以使得目標(biāo)方程的值最大。
有益效果:本發(fā)明利用馬爾可夫決策過程實(shí)現(xiàn)多路徑傳輸控制協(xié)議的擁塞控制,該方法以最大平均吞吐量和最小平均時延為目標(biāo),通過感知環(huán)境狀態(tài)來學(xué)習(xí)動態(tài)系統(tǒng)的最優(yōu)策略,不僅克服了現(xiàn)有技術(shù)中丟包的缺點(diǎn),而且具有速度快,穩(wěn)定性高,魯棒性強(qiáng)等優(yōu)點(diǎn)。并且對環(huán)境的先驗(yàn)知識要求低,非常適合于應(yīng)用到實(shí)時網(wǎng)絡(luò)環(huán)境中。
附圖說明
圖1為強(qiáng)化學(xué)習(xí)原理示意圖;
圖2為本發(fā)明的擁塞控制總體流程圖;
圖3為本發(fā)明的學(xué)習(xí)過程流程圖;
圖4為本發(fā)明的擁塞控制方法與lia算法的應(yīng)用效果對比圖。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明的技術(shù)方案作進(jìn)一步說明。
圖2是基于強(qiáng)化學(xué)習(xí)的多路徑傳輸協(xié)議擁塞控制的流程圖,首先建立馬爾可夫模型,然后在網(wǎng)絡(luò)中反復(fù)學(xué)習(xí),得到學(xué)習(xí)結(jié)果,最后在網(wǎng)絡(luò)中應(yīng)用該結(jié)果。在本實(shí)施例中,我們用模擬器模擬了一個網(wǎng)絡(luò)環(huán)境,基于該模擬網(wǎng)絡(luò)進(jìn)行上述學(xué)習(xí)和應(yīng)用過程。具體過程如下:
a)建立馬爾可夫模型,包括:
a1)定義發(fā)送端的狀態(tài)
a2)定義發(fā)送端的動作{m,b,r},m和b表示對當(dāng)前擁塞窗口大小的調(diào)整,m為對當(dāng)前擁塞窗口的乘數(shù),b為對當(dāng)前擁塞窗口的加數(shù),r為發(fā)送子流的時間間隔。在本實(shí)施例中,分別設(shè)置為m={0.1,0.5,1,2},b={+/-1,+/-4,+/-8},r={+/-0.01,+/-0.08,+/-0.64}。
a3)定義目標(biāo)方程
b)在模擬器中搭建網(wǎng)絡(luò)環(huán)境,包括:
b1)模擬網(wǎng)絡(luò)基本狀況,包括設(shè)置瓶頸鏈路的速度、不同網(wǎng)絡(luò)的傳輸時延、網(wǎng)絡(luò)中競爭瓶頸鏈路的用戶個數(shù)、網(wǎng)絡(luò)中競爭瓶頸鏈路的子流個數(shù)。網(wǎng)絡(luò)狀況可以根據(jù)不同的環(huán)境設(shè)置不同的參數(shù),目的是針對不同的網(wǎng)絡(luò)環(huán)境學(xué)習(xí)到不同的規(guī)則,以期在不同的網(wǎng)絡(luò)中都得到理想的結(jié)果。
b2)建立網(wǎng)絡(luò)流量模型,包括模擬網(wǎng)絡(luò)中的應(yīng)用,建立連接時產(chǎn)生流量,終止連接時停止流量;此外,不同的用戶可能會在不同的時間建立連接,連接也有可能是長連接或者是短連接。流量模型主要體現(xiàn)某個發(fā)送端是否產(chǎn)生流量,何時產(chǎn)生流量。在模擬器中,我們設(shè)置所有的發(fā)送端都隨機(jī)的產(chǎn)生流量或者終止連接,開流量或者關(guān)流量的時間服從某一個分布模式(比如指數(shù)分布),目的是模擬真實(shí)環(huán)境下不同用戶競爭瓶頸鏈路的場景。
在本實(shí)施例中,設(shè)置瓶頸鏈路的速度為15mbps,網(wǎng)絡(luò)延遲為20ms。有4個mptcp用戶競爭瓶頸鏈路,且每個用戶都同時使用wifi網(wǎng)絡(luò)和蜂窩網(wǎng)絡(luò),兩條子流在帶寬和rtt上有明顯差異,蜂窩網(wǎng)絡(luò)的rtt大約是wifi網(wǎng)絡(luò)的25倍。在流量模型中,開流量和關(guān)流量的時間服從指數(shù)分布。
c)根據(jù)馬爾可夫模型在網(wǎng)絡(luò)環(huán)境中開始學(xué)習(xí),圖3示出了學(xué)習(xí)的具體過程,包括:
c1)采樣:首先對網(wǎng)絡(luò)環(huán)境進(jìn)行采樣,確定各個狀態(tài)可能出現(xiàn)的范圍。
c2)首次劃分狀態(tài)空間:從每一個狀態(tài)范圍的中點(diǎn)將此狀態(tài)的范圍劃分為兩部分,將由三個狀態(tài)組成的狀態(tài)空間劃分為8個區(qū)域。這里選取從中點(diǎn)劃分是考慮了平均分布情況,當(dāng)然也可以根據(jù)其他劃分標(biāo)準(zhǔn)來劃分狀態(tài)空間。
c3)應(yīng)用默認(rèn)動作:第一次為所有狀態(tài)區(qū)域應(yīng)用一個統(tǒng)一的默認(rèn)動作,默認(rèn)動作設(shè)置為m=1,b=1,r=0.01,表示將當(dāng)前擁塞窗口的大小乘以1再加上1,并設(shè)置子流的發(fā)送間隔為0.01ms。
c4)選擇待優(yōu)化狀態(tài)區(qū)域:在模擬器每個發(fā)送端的每一條子流中,每當(dāng)收到一個ack,就對步驟c1)中的各個狀態(tài)進(jìn)行計(jì)算,然后更新當(dāng)前狀態(tài)。模擬器運(yùn)行一分鐘,找出狀態(tài)最經(jīng)常出現(xiàn)的狀態(tài)區(qū)域,作為待優(yōu)化狀態(tài)區(qū)域。
c5)對待優(yōu)化狀態(tài)區(qū)域的動作進(jìn)行優(yōu)化:在模擬器中的所有發(fā)送端的每一條子流上窮舉應(yīng)用所有的動作,模擬器運(yùn)行一分鐘,使用抓包工具(如tcpdump)進(jìn)行抓包,然后對包進(jìn)行分析,計(jì)算平均吞吐量以及平均時延,如果有動作提高了目標(biāo)方程的值,就用這個動作替換原來的動作。窮舉完所有的動作之后,就得到了對應(yīng)于這個區(qū)域的所有狀態(tài)的最好的動作,從而形成一條狀態(tài)區(qū)域到動作的映射規(guī)則,將該規(guī)則添加到狀態(tài)-動作映射表中。得到的映射表,在系統(tǒng)中用帶頭結(jié)點(diǎn)的單鏈表的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲,使用該數(shù)據(jù)結(jié)構(gòu)插入結(jié)點(diǎn)速度快。
c6)繼續(xù)尋找待優(yōu)化狀態(tài)區(qū)域:為了利用上次學(xué)習(xí)的結(jié)果,此時對不同的狀態(tài)區(qū)域應(yīng)用不同的動作,其中,對尚未經(jīng)過優(yōu)化的區(qū)域應(yīng)用所有動作,對優(yōu)化過的區(qū)域應(yīng)用前一次優(yōu)化得到的結(jié)果動作,然后再找出狀態(tài)最經(jīng)常出現(xiàn)的區(qū)域,作為待優(yōu)化狀態(tài)區(qū)域。有兩種情況,一種是找到了其他的區(qū)域,就按上述的優(yōu)化策略進(jìn)行優(yōu)化。還有一種是找到的還是剛剛優(yōu)化過的區(qū)域,則再沿著各個狀態(tài)的中點(diǎn)劃分此區(qū)域,再按上述的優(yōu)化策略優(yōu)化此區(qū)域?qū)?yīng)的動作。
c7)重復(fù)執(zhí)行步驟c5)-c6),理論上這種優(yōu)化可以不停地進(jìn)行下去,并且可以設(shè)置不同的狀態(tài)參數(shù)和動作來達(dá)到不同的擁塞控制精度。在本實(shí)施例中,我們規(guī)定在狀態(tài)區(qū)域的數(shù)目被劃分到50時,停止學(xué)習(xí),得到狀態(tài)-動作映射表。
d)在網(wǎng)絡(luò)中應(yīng)用學(xué)習(xí)結(jié)果:在多路徑傳輸控制協(xié)議運(yùn)行至擁塞避免階段時,每當(dāng)發(fā)送端的一個子流收到一個ack時,就查找上述步驟c)中得到的狀態(tài)-動作映射表,找到當(dāng)前狀態(tài)所對應(yīng)的動作,使用該動作對這條子流的擁塞窗口和發(fā)送間隔進(jìn)行調(diào)整。一個發(fā)送端的所有子流共用同一個狀態(tài)-動作映射表表。
本發(fā)明提出的基于強(qiáng)化學(xué)習(xí)的多路徑傳輸控制協(xié)議擁塞控制方法,從當(dāng)前網(wǎng)絡(luò)環(huán)境提取狀態(tài)特征,以最大平均吞吐量和最小平均時延為目標(biāo),通過感知環(huán)境狀態(tài)來學(xué)習(xí)網(wǎng)絡(luò)連接發(fā)送端的最優(yōu)策略,具有速度快、穩(wěn)定性高的優(yōu)點(diǎn)。通過模擬器的實(shí)驗(yàn)結(jié)果表明,在兩條子流有明顯差異的情況下,本發(fā)明的方法取得效果遠(yuǎn)遠(yuǎn)好于lia算法。如圖4所示,s1為快子流,s2為慢子流,本發(fā)明的方法將慢子流的數(shù)據(jù)轉(zhuǎn)移到了網(wǎng)絡(luò)情況更好的子流上,雖然慢子流的吞吐量比lia算法略低,但是在快子流上卻高了很多,這表明擁塞控制的效果更好。
以上詳細(xì)描述了本發(fā)明的優(yōu)選實(shí)施方式,但是,本發(fā)明并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本發(fā)明的技術(shù)構(gòu)思范圍內(nèi),可以對本發(fā)明的技術(shù)方案進(jìn)行多種等同變換,這些等同變換均屬于本發(fā)明的保護(hù)范圍。