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