王亞銘,唐俊勇,雷聚超
西安工業(yè)大學 計算機科學與工程學院,西安 710021
高吞吐量高帶寬鏈路日漸成為無線網(wǎng)絡接入異構網(wǎng)絡的主流趨勢。在實際異構網(wǎng)絡中,由于無線網(wǎng)絡與其他高速有線網(wǎng)絡的不同特征,采用合適的擁塞控制機制,保持異構網(wǎng)絡間較高的吞吐量和運行效果是近年來研究的重點[1]。擁塞控制機制研究主要分為四類,其典型代表為:基于可用帶寬預估計的TCP Westwood[2];基于延遲反饋的TCP Vegas[3];基于丟包反饋的TCP New Reno[4];基于學習探測的TCP Verus[5]。目前也均有將這些擁塞控制機制引入異構網(wǎng)絡,這是由于異構網(wǎng)絡的瓶頸鏈路較多,容易被高速連接流量迅速占鏈路帶寬,引發(fā)具有慢速與高延遲連接特征的無線流量頻繁丟包,造成無線鏈路增加數(shù)據(jù)流傳輸時間,極大影響整體異構網(wǎng)絡的運行效率。
目前,在眾多的擁塞控制協(xié)議中,TCP Westwood(TCPW)針對無線網(wǎng)絡時間延遲過大、傳輸可靠性弱、收發(fā)端互操作性弱等特征,是專門為高速無線網(wǎng)絡設計的,被廣泛應用于無線網(wǎng)絡環(huán)境如衛(wèi)星網(wǎng)絡[6]。TCPW通過在發(fā)送端持續(xù)不斷地檢測ACK的到達速率來進行有效帶寬估計(Bandwidth Estimate)的計算,當擁塞發(fā)生時用帶寬估計值來直接調整擁塞窗口和慢啟動閾值,采用AIAD(Additive Increase and Adaptive Decrease)擁塞控制機制,有效提高無線網(wǎng)絡TCP的傳輸質量,使其性能效果優(yōu)于其他適用有線網(wǎng)絡的擁塞控制算法[7]。同時,以TCPW為基礎,一些新的研究結合其他擁塞因素對TCPW做出了改進。文獻[8]考慮到接收端緩存區(qū)中等待確認的數(shù)據(jù)包對擁塞窗口的影響,提出了一種基于雙端協(xié)作的數(shù)據(jù)承載預估方案RbTCPW。通過在擁塞避免階段建立馬爾科夫模型對未被確認的數(shù)據(jù)包個數(shù)提前預測,計算鏈路的最大數(shù)據(jù)承載量,以此作為無線信道帶寬估計值的依據(jù)。此方案雖然能夠延長擁塞避免的時間,推遲發(fā)生擁塞的時刻,使網(wǎng)絡獲得較高吞吐量,但此方案以包往返時延為代價,在傳輸速率較大的網(wǎng)絡下性能明顯下降。文獻[9]提出了一種基于往返延遲抖動的擁塞分級改進方案,通過測量往返時延抖動對擁塞程度進行區(qū)分,其優(yōu)勢是在保證網(wǎng)絡穩(wěn)定性的基礎上,針對不同的擁塞程度采用不同的策略有效提高整體吞吐量,但僅適用于低誤碼環(huán)境,而實際網(wǎng)絡往往伴隨高誤碼,此方案普適性較差。文獻[10]從提高上升階段窗口水平方面出發(fā),提出一種非線性窗口增長方案。通過在慢啟動及擁塞避免階段使用趨勢為先快后慢的非線性代替線性增長,能夠更快到達閾值,以此在到達擁塞避免前盡量多地傳送數(shù)據(jù)。雖然該方案盡可能使用理想增長方式,但并未分析不同丟包事件對擁塞控制性能影響,且沒有給出進入上升階段時擁塞窗口及閾值的調整方式。文獻[11]將網(wǎng)絡擁塞控制轉化為具有fuzzy特征的問題,采用條件概率構造不同丟包模式下的隸屬度函數(shù),按照最大隸屬原則劃分丟包原因。此方案在帶寬利用率較低的情況下區(qū)分效果良好,但隨著帶寬利用率的增高,噪聲丟包和擁塞丟包對數(shù)據(jù)傳輸時延均會增加,高誤判率將導致機制失效。
通過上述文獻分析可知,目前的擁塞研究都關注在如何提高無線網(wǎng)絡的擁塞窗口數(shù)、判斷擁塞的準確性以及快速進行擁塞響應方面。然而TCPW存在估算帶寬時過度依賴包的反饋,缺乏區(qū)分傳輸過程中丟包類型的缺點,并未考慮噪聲干擾影響擁塞算法的性能。根據(jù)文獻[7]表明,有線鏈路上的誤碼率水平較低,其對應的報文差錯率僅為0.012%~1.2%,而無線鏈路的比特錯率一般為10-3,其對應的報文差錯率為12%,因此比特誤碼所造成的噪聲是無線環(huán)境丟包的主要原因。實際運行過程中,異構網(wǎng)絡也確實存在各種無線信號,彼此存在不可避免的干擾,具有誤碼率高等特征。TCPW未考慮在高誤碼率、碼間串擾大所產生的噪聲丟包,其結果就是隨機的短時噪聲丟包,引發(fā)TCPW機制進行了錯誤的擁塞判斷和進行不必要的擁塞避免,使得發(fā)送窗口被頻繁降低、擁塞避免的閾值不斷減小,其直接表現(xiàn)就是吞吐量不高和抖動增大。
通過上述分析,本文發(fā)現(xiàn)在異構網(wǎng)絡的無線環(huán)境下,發(fā)送方不必要的擁塞避免是由于錯誤的噪聲干擾造成的。如何能夠感知出丟包類型為噪聲丟包,并重新設置合理的新窗口參數(shù),最終達到窗口下降次數(shù)減少,以此降低時延抖動,提高實時吞吐量是本文研究的目的。
本文提出一種基于擁塞因子F的TCPW-F擁塞控制改進算法。針對無線網(wǎng)絡中干擾大及高概率產生噪聲丟包的現(xiàn)象,TCPW-F算法(TCP Westwood-Factor)定義并收集發(fā)送實際速率Cactual和發(fā)送理想速率Coptimal等相關數(shù)據(jù),在探測到數(shù)據(jù)包丟失時,計算擁塞因子F,并利用擁塞門限值細化丟包類型,為被判定為噪聲丟包情況下的新窗口參數(shù)設置提供依據(jù),使參數(shù)變化更加符合網(wǎng)絡實際情況,減少重新進入上升階段時對帶寬的浪費,進一步提高無線網(wǎng)絡的傳輸性能。仿真實驗表明,通過發(fā)送速率構建擁塞因子F,并設置合理的擁塞窗口值和閾值,克服了原機制的不足,具有良好的噪聲丟包感知能力。
TCPW擁塞控制算法分為“慢啟動”和“擁塞避免”兩個上升階段及“快速重傳”和“快速恢復”兩個下降階段。其中上升階段延用TCP New Reno方式,保持較好的傳輸質量。當出現(xiàn)以下兩種情況則表明網(wǎng)絡出現(xiàn)丟包:一是發(fā)送方接收到三個重復ACK包,二是發(fā)送方的超時重傳計時器的時限已到。TCPW認定丟包后的擁塞窗口值(CWND)和慢啟動門限閾值(ssthresh)參數(shù)設置具體如表1所示。
表1 TCPW算法參數(shù)設置
TCPW的主要特征是利用實時帶寬估算值Bk優(yōu)化下降階段的閾值設置。在TCP發(fā)送端,通過不間斷獲取ACK到達時間及與上個ACK到達間隔作為采樣周期cwnd=ssthresh所確認的字節(jié)數(shù)計算當前可用帶寬,即:
TCPW算法將一個TCP連接周期分成多個采樣周期,獲取每個采樣周期中ACK所確認過的字節(jié)數(shù)dk,除以采樣周期得到帶寬估算值Bk,以應對網(wǎng)絡波動。
估算帶寬并定位窗口應下降到多少的機制,使TCPW算法具備持續(xù)性精準控制的優(yōu)勢。相較于其他采用“移動指數(shù)平均”方式的控制機制,其表現(xiàn)最佳的應用場景是網(wǎng)絡發(fā)生了擁塞并因此頻繁出現(xiàn)擁塞丟包現(xiàn)象。
然而由于無線鏈路極易受外界環(huán)境因素影響,碼間串擾引起的解調錯誤丟包概率明顯高于有線鏈路,使實際無線網(wǎng)絡中存在高比特誤碼率特征。TCPW算法更新帶寬估計值時缺失丟包類型判決機制,導致機制誤將噪聲丟包當作擁塞丟包統(tǒng)一處理,從而引起窗口值頻繁下降到最低值,使TCP傳輸質量嚴重下降。
為了彌補TCPW算法在加性減階段[12]的不足,使其對噪聲丟包具有抵抗性,在TCPW-F算法中構建擁塞因子對丟包類型進行區(qū)分,記為F。構建擁塞因子F的步驟如下:
(1)計算發(fā)送理想速率Coptimal
在一個時間段內,發(fā)送端每接收到一個ACK,均實時記錄當前的擁塞窗口大小cwnd和往返通信時延RTT,引入變量RTTmin來保存當前記錄到的最小往返時延,則發(fā)送理想速率Coptimal如式(2):
(2)計算平滑時延RTTsmt
為了消除噪聲干擾,采用均值濾波方式對往返通信時延RTT進行平滑處理。首先對目標RTT給一個模板,模板包含當前全體時延數(shù)值和RTTall,再用模板中全體時延的平均值來代替原來的時延,記為RTTsmt,計算公式如式(3):
根據(jù)得出的平滑時延RTTsmt,計算發(fā)送實際速率Cactual,計算公式如式(4):
(3)構建擁塞因子F
當Cactual>Coptimal時,說明在瓶頸鏈路發(fā)送端的緩存中積壓了一些待發(fā)送的報文,使發(fā)送速率未能達到理想的最大速率。正是緩存積壓報文導致出現(xiàn)額外時延,通過擁塞因子F刻畫積壓報文量表示:
每當對比發(fā)現(xiàn)發(fā)送速率未達到最佳,便計算一次擁塞因子F的值。Le T等學者通過研究實際傳輸丟包時,對緩存區(qū)會積壓具有噪聲丟包特征的未被確認報文量的數(shù)據(jù)特征進行整理分析,得到不同的帶寬條件下的擁塞門限特征值 f[13]。在獲得擁塞因子F后對比 f達到劃分丟包類型的效果,當F 慢啟動和加性增長階段的處理方式與TCPW算法一致,主要在擁塞加性減小階段作出改進。當收到三個重復ACKs或重傳計時器超時時,TCPW-F算法具體參數(shù)調整偽代碼如下: 當擁塞的下降機制被觸發(fā)時,即認為網(wǎng)絡中發(fā)生擁塞,不管是噪聲丟包還是擁塞丟包。那么在慢啟動和加性增長階段不改變標準的參數(shù)設置,轉而對擁塞發(fā)生后,按丟包類型進行劃分,使進入慢啟動的閾值和擁塞窗口參數(shù)設置精細化。 在被判別為網(wǎng)絡發(fā)生擁塞而產生丟包時,將繼續(xù)使用原算法的參數(shù)設置;在被判別為噪聲丟包后,鏈路質量沒有下降,不應將參數(shù)當作發(fā)生網(wǎng)絡擁塞時大幅下降再增長,參數(shù)設置也并不依賴于帶寬估計值的計算,因此分別將新?lián)砣翱谥翟O置為cwnd和F的差值,新慢啟動閾值設置為cwnd,以此使網(wǎng)絡能夠進入合理的增長階段,其效果如圖1所示。 圖1 進入窗口增長階段方式對比 當因子判定小于門限值并且進入快速恢復或超時重傳階段時,如果不對參數(shù)調整,可能會導致窗口增長過快,真正擁塞到來的時間提前,所以考慮緩存中仍存在部分因噪聲丟包積壓的報文未被確認,將窗口值限制預留出門限值大小的足夠空間,使其能夠應對噪聲丟包,保證傳輸質量的高效性。 為了驗證新改進算法的可行性,本文使用Network Simulator Version 3(NS3)仿真軟件[14]進行仿真實驗,版本為3.29,運行環(huán)境為Ubuntu 16.04。仿真網(wǎng)絡的拓撲結構如圖2所示。 圖2 網(wǎng)絡拓撲結構圖 圖2 中,將客戶機n4、n5節(jié)點作為發(fā)送端,固定主機n0節(jié)點作為接收端,n1和n2節(jié)點為中間路由器。拓撲中路由器n1與固定主機間設置點對點有線網(wǎng)絡,路由器間采用無線橋接方式連接,路由器與所有客戶機間均為雙向無線鏈路。此網(wǎng)絡拓撲更加符合實際情況,使新改進算法在此環(huán)境中的仿真結果具有普適性。設置有線網(wǎng)絡為高速路段,其余鏈路的時延均為5 ms,帶寬為10 Mb,此時擁塞門限特征值 f取2 000。根據(jù)實際無線網(wǎng)絡環(huán)境構建傳輸錯誤模型,設置隨機錯誤模型為0.000 1,發(fā)送端從第1 s開始發(fā)送采用TCP協(xié)議的數(shù)據(jù)業(yè)務流,包生成速率設置為1Mb/s,數(shù)據(jù)包大小為1024Byte,傳輸時間為20 s。本文所做實驗以上述條件為基礎,記錄并對比在實際混合網(wǎng)絡環(huán)境情況下新TCPW-F算法與前人基于往返延遲抖動改進的擁塞分級方案RbTCPW算法及原算法的時延抖動等關鍵性能指標。 圖3反映出受到擁塞因子F的影響,TCPW-F算法的優(yōu)勢在仿真不久后顯現(xiàn)出來。在某些時刻出現(xiàn)丟包時,原算法使CWND頻繁性降低,而TCPW-F算法則使窗口值繼續(xù)保持增長趨勢。當乘性減少的機制啟動時,TCPW算法直接將窗口降到最小值,現(xiàn)在轉而降低到合適值再進入加性增長。相比原算法的激進趨勢,新算法更加緩和,并獲得更多的傳輸資源。之所以出現(xiàn)此現(xiàn)象,是因為優(yōu)化時根據(jù)擁塞因子F區(qū)分丟包類型,分析到無關噪聲丟包時,保持增長趨勢,并設置合適的新窗口參數(shù),不盲目像擁塞丟包一樣將降低窗口值,最終能夠使CWND能夠維持著較高水平。 圖3 TCPW-F算法與TCPW算法CWND變化對比 從圖4、圖5可以看出,TCPW-F算法的時延更低,震蕩幅度更小,其中抖動是用來描述延遲變化的程度,由此可見改進算法的時延相對平滑,且包的響應時間基本快于RbTCPW算法及TCPW算法。RbTCPW算法為了獲得較高吞吐量,通過在擁塞避免階段建立馬爾科夫模型對未被確認的數(shù)據(jù)包個數(shù)提前預測,計算鏈路的最大數(shù)據(jù)承載量,以此作為無線信道帶寬估計值的依據(jù),然而無線網(wǎng)絡為延遲抖動敏感網(wǎng)絡,其并未考慮噪聲丟包及造成的網(wǎng)絡不良動蕩,可以觀察到RbTCPW平均延遲抖動水平略高于TCPW-F及原算法,尤其在網(wǎng)絡中發(fā)生丟包時。仿真中忽略其物理干擾和信號強弱等原因,關鍵在于網(wǎng)絡處于高峰期時判定噪聲丟包后的參數(shù)設置能有效緩解瓶頸電路來增加報文發(fā)送量,從而服務器端能更快做出反應,提高TCP的傳輸速率,這一特點也在上述的實驗性能對比中得到驗證。 圖4 時間延遲Delay的變化對比 圖5 抖動Jitter的變化對比 從圖6、圖7可以看出,當發(fā)送端的數(shù)據(jù)傳輸速率(DataRate)設置為1 Mb/s時,由于該值遠小于信道帶寬10 Mb/s,仿真一段時間后幾種算法的實際傳輸速率幾乎同時到達1.1 Mb/s,曲線特征基本一致。當發(fā)送端的數(shù)據(jù)傳輸速率(DataRate)設置為10 Mb/s時,由于該值等于信道帶寬,受到多種干擾因素影響,實際吞吐量將不會達到最大值,這種情況更加接近實際網(wǎng)絡場景。圖中表明從3 s開始,TCPW-F算法的實時吞吐量增長趨勢明顯高于原算法,而RbTCPW則效果欠佳。RbTCPW在吞吐量趨于平穩(wěn)后以預測未到數(shù)據(jù)包的個數(shù)發(fā)揮算法優(yōu)勢,但仍未處理噪聲丟包造成的性能流失。由于在擁塞因子F判斷下,避免了窗口頻繁急速的下降,較傳統(tǒng)的激進性減小策略,保持了更加平穩(wěn)的狀態(tài),從而使整個過程的實時吞吐量性能顯著增強。 圖6 包生成速率為1 Mb/s時實時吞吐量變化對比 圖7 包生成速率為10 Mb/s時實時吞吐量變化對比 本文針對TCPW算法在無線網(wǎng)絡環(huán)境中無法區(qū)分丟包類型而頻繁降窗降閾值的不足,提出了一種改進的TCP-F擁塞控制算法。通過實時計算網(wǎng)絡中的可用帶寬,利用積壓報文量計算的擁塞因子F來區(qū)分丟包類型并在判定為噪聲丟包情況下對新窗口值重新設置。通過NS3仿真實驗表明,TCPW-F算法在時延抖動和吞吐量等方面性能都得到提升,有效地提高了TCP的網(wǎng)絡傳輸性能。4 TCPW-F算法的仿真實驗結果分析
5 結束語