曹瑞娟 邢 凱
1(中國科學技術大學軟件學院 江蘇 蘇州 215123)2(中國科學技術大學計算機科學與技術學院 安徽 合肥 230026)
中國信息通信研究院(CAICT)最新的中國互聯網絡發展狀況統計報告表明,截至2017年12月,我國互聯網規模已激增至7.72億人,互聯網普及率高達55.8%[1]。而且CAICT最新的互聯網發展趨勢報告指出,移動互聯網用戶數量以超過20%的年增長率遞增[2]。思科(Cisco)的統計分析報告指出互聯網游戲、虛擬現實(VR)和虛擬增強技術(AR)應用、視頻監控等實時通信應用未來五年內將增長10~20倍[3]。然而寬帶發展聯盟發布的中國寬帶速率狀況報告數據表明,我國互聯網用戶中達到2 M帶寬標準的用戶比率只有16.5%,4 M帶寬標準的用戶比率只有8.8%[4]。多個統計分析報告[1-4]表明,互聯網用戶和網絡應用規模的遞增,導致網絡負載與網絡承載能力之間的沖突更加嚴峻。
由于網絡基礎設施承載能力的有限性,當傳輸所需帶寬超過鏈路可用帶寬時,網絡將會產生擁塞。Google最新研究表明,當前網絡擁塞控制算法對鏈路傳輸帶寬及其波動性的估計仍有較大優化空間[12]。隨著網絡負載的進一步增加,擁塞現象愈加嚴重。網絡擁塞會導致網絡性能下降(延遲加大、丟包嚴重等),甚至造成網絡擁塞崩潰[5]。在傳輸過程中,若不能實時有效地檢測擁塞現象,并即時調整,會不斷擁塞,加劇網絡需求和負載能力間的沖突。所以在傳輸過程中進行實時有效的擁塞控制,是解決用戶網絡需求和網絡承載能力之間沖突的關鍵。傳統擁塞控制算法[6-7,9,11]是基于擁塞信號檢測的擁塞控制方法,主要包括基于丟包的擁塞控制、基于延遲的擁塞控制和混合式擁塞控制。
基于丟包的擁塞控制算法[6-8]主要依據反饋的丟包情況進行擁塞控制。這類算法是被動式的擁塞控制機制,不能及時地檢測擁塞,調整過程也缺乏實時性。一方面,在網絡帶寬接近飽和時,只要尚未產生擁塞丟包,便不會主動降低發送速率,在最大程度上利用網絡剩余帶寬的同時會加劇網絡的抖動性。另一方面,會把非鏈路丟包誤認為擁塞信號,過于保守地降低速率,導致帶寬利用率低。
基于延遲的擁塞控制算法[9-11]主要通過延遲估計網絡帶寬來進行擁塞控制。由于TCP傳輸協議固有的面向連接、ACK反饋、丟包重傳機制等屬性,TCP在保證數據包的順序性和可靠性的同時,會加大網絡傳輸延遲。這類算法以延遲估計帶寬,會降低擁塞檢測的有效性。所以它們往往會低估鏈路帶寬,造成帶寬利用率和數據傳輸效率過低,在與基于丟包的數據流共享瓶頸帶寬時,會因為缺乏競爭力而導致帶寬分配的不公平。
混合式擁塞控制算法[12-16]通過結合丟包、延遲等多種因素,估計網絡狀況進行擁塞控制。但是這類算法主要適用于穩定性強的網絡環境。因為它們無法解耦丟包、延遲等鏈路狀況指標,擁塞檢測過程中參照的多種因素間會相互影響。當網絡狀況發生較大波動時,難以準確地估計網絡狀況,對擁塞現象不能做出實時有效的調整。
還有一些擁塞控制算法[17-20]不依賴任何擁塞信號。例如Sprout[20]在接收端觀察數據包到達的時間間隔,使用概率論來推測鏈路的瓶頸帶寬,反饋給發送端,進行發送速率的調整。因為發送端和接收端的固有延遲,導致反饋的調整結果嚴重缺乏實時性。而且這種算法在網絡環境發送重大變化時,對瓶頸鏈路帶寬的預測會產生較大誤差,難以有效地進行擁塞控制。Remy[17]、Verus[18]和PCC[19]等算法采用機器學習和探測的方法,針對不同的網絡狀況調整發送速率。但是當學習結果與真實環境存在顯著差異時,算法的有效性會大幅度下降。而且PCC算法面對網絡環境的變動收斂速度慢,造成擁塞控制的實時性較差。
為了提高擁塞控制的實時性和有效性,本文提出了一種基于連續統計估計的源端擁塞控制方法。基于網絡延遲和丟包的正態性[21-22],采用統計檢驗方法[34-35,37-38],針對不同網絡狀況對鏈路傳輸帶寬及其波動性進行較為實時和準確的估計。該方法添加了異步ACK反饋機制,在一定程度上解耦延遲、丟包和速率對網絡擁塞的影響。基于對鏈路傳輸狀況的在線連續統計估計,針對不同網絡狀況,對不同指標進行調整,實現實時有效的擁塞控制。
本文的關鍵貢獻如下:
(1) 提出了一種針對鏈路傳輸狀況的在線連續統計估計方法,針對不同網絡狀況能夠對鏈路傳輸帶寬及其波動性進行較為實時和準確的估計。
(2) 提出了一種基于源端的實時擁塞控制方法,初步實現了網絡傳輸中對于丟包、延遲和傳輸速率這三個關鍵指標一定程度上的解耦,在不同網絡狀況下實現實時有效的擁塞控制,同時保證公平性。
(3) 實驗證明,該方法在吞吐速率、丟包容忍、延遲相比已有的擁塞控制算法如Reno、Cubic以及BBR有顯著提升。
很多研究表明,網絡擁塞控制是網絡傳輸層檢測和控制網絡擁塞的重要方法[23-25]。Yang和Reddy將擁塞控制分為擁塞避免(開環擁塞控制)和擁塞恢復(閉環擁塞控制)兩種[26]。其中擁塞避免策略本質上是預防性的,目的是合理分配資源,降低網絡擁塞的發生率;而擁塞恢復的目標是在擁塞發生后將網絡恢復到正常狀態。由于傳輸過程中網絡狀況的多變性,單純的擁塞避免策略往往難以有效地避免擁塞,所以擁塞控制的重點是在傳輸過程中采用閉環策略,動態地檢測擁塞情況,并以此進行擁塞控制。
經典的擁塞控制算法主要包含基于丟包的擁塞控制算法、基于延遲的擁塞控制算法和混合式擁塞控制算法[23]。基于丟包的擁塞控制算法以Reno[6]和Cubic[7]為代表,以擁塞作為擁塞信號,在傳輸過程中檢測到丟包情況后通過調整發送窗口的大小來規避擁塞。但它們收斂于一個邏輯滯后的收斂點,尚未出現丟包時會不斷填充緩沖區,使緩沖區長期保持過滿狀態,間接加大網絡丟包率,加劇整體網絡的抖動。而在存在一定錯誤丟包率的長肥管道[41]中,會收斂于很小的速率,無法有效利用網絡帶寬,會造成帶寬的閑置和浪費。基于延遲的擁塞控制算法如Vegas[9]、Fast TCP[10]等,使用延遲作為擁塞信號,比較實際吞吐速率和期望吞吐速率,估算網絡的可用帶寬,調整擁塞窗口大小來實現擁塞控制。很多擁塞控制算法也使用類似估計帶寬的方法[11,13]。但是這類方法在與基于丟包的數據流共享瓶頸帶寬時,會因為缺乏帶寬競爭力而導致帶寬分配的不公平。此外,如果網絡中已經存在數據流或者已經擁塞,新加入的數據流會檢測到比真實值更小的延遲,進而奪取更多的帶寬分配。
為了解決帶寬利用率低和帶寬分配不公平的問題,很多混合式擁塞控制算法結合丟包、延遲等多種鏈路傳輸狀況評估指標進行擁塞控制[12-16]。TCP-Africa[16]、Compound TCP[13]和HCC TCP[15]都是基于丟包和延遲的擁塞控制算法,保持速率提升的激進性與公平性之間的平衡。TCP-fusion[14]是基于丟包、延遲和可用帶寬估計的擁塞控制算法,結合WestWood[11]的帶寬測量和Vegas[9]的網絡緩存預測機制,通過動態調整發送速率來控制擁塞。Cardwell等[12]假設并驗證了丟包與網絡擁塞的弱相關,提出了基于瓶頸帶寬的和往返時間乘積(BDP)的擁塞控制算法BBR。BBR通過估計瓶頸帶寬和往返傳輸時間判斷擁塞情況,以最大化吞吐速率和最小化延遲為目標進行擁塞控制。但是這種機制在特定場景下容易造成激進加速、排隊延遲增加、大量丟包重傳等問題[40]。
此外,還有一些擁塞控制算法[17-20]實現網絡擁塞控制過程不依賴于任何擁塞信號。例如,基于鏈路容量預測的Sprout擁塞控制算法[20],并沒有在發送端進行擁塞控制,而是在接收端通過觀察數據包到達的時間間隔,采用概率論相關方法推測鏈路帶寬,然后將該預測值反饋給發送端。該算法在抖動性比較大的網絡環境中,對瓶頸鏈路帶寬的預測會產生較大誤差,進而導致算法性能大幅下降。還有一些基于機器學習的擁塞控制算法,如Remy[17]、Verus[18]等。這些算法沒有設置特定的擁塞信號,而是借助評價函數,使用學習或探測的方法生成一組網絡狀況到調節方式的映射。在真實環境中根據當前網絡狀況直接選取對應的調節方式進行擁塞控制。但是這種控制算法依賴于大量數據的訓練結果,當真實網絡情況有所差異時,算法的有效性會大幅度下降。PCC[19]是面向性能的網絡擁塞控制算法,發送端在傳輸過程中持續觀測發送速率與傳輸性能之間的關系,基于效用函數進行發送速率的優化,不斷提高網絡傳輸性能。該算法面對網絡環境的變動時算法收斂速度較慢,造成網絡傳輸性能下降,在一定程度上會加劇網絡擁塞情況。
為了解決當前擁塞控制算法的瓶頸問題,提高擁塞控制的實時性和有效性,本文提出了一種基于連續統計估計的源端擁塞控制方法。通過對鏈路傳輸狀況的在線連續統計估計,對鏈路傳輸帶寬及其波動性進行實時估計,并在一定程度上對網絡丟包、延遲和速率進行解耦。然后基于鏈路傳輸狀況的估計結果,對不同指標進行調整,實現實時有效的擁塞控制,同時保證公平性。
本節主要闡述對鏈路傳輸狀況的連續實時統計估計方法。在傳輸過程中,發送端通過接收端實時反饋的ACK包,實時計算數據包的往返傳輸時間,采用統計檢驗方法,對鏈路延遲波動性、丟包趨勢、及其傳輸速率變化趨勢進行實時估計。
理論證明鏈路延遲的波動對鏈路整體傳輸速率有極大的影響,即使只有小部分數據包延遲過大,鏈路整體的性能也會下降[33]。所以在傳輸過程中,對延遲波動性進行實時估計,是保證鏈路傳輸的低延遲,提升鏈路傳輸速率的關鍵。
在網絡傳輸過程中,發送端通過接收端的實時反饋得到對應數據包的往返延遲。設置一個固定的統計窗口,滑動性地對每個統計窗口內的往返延遲序列進行統計分析。基于鏈路傳輸過程中往返延遲的正態分布的性質[21],分別統計每個統計窗口的方差,其反映統計窗口內往返延遲的波動性。而且通過對滑動窗口對應的往返延遲序列進行連續統計檢驗,可以實時分析網絡延遲的變化趨勢。
正態分布的3σ準則[28]表明在符合正態分布的一組數據中數值分布在(μ-σ,μ+σ)范圍內的概率為68.27%,數值分布在(μ-2σ,μ+2σ)范圍內的概率為95.45%。基于網絡延遲的正態性[21],理論上可以得出:約50%數據包的往返延遲不超過μ,68%數據包的往返延遲在(μ-σ,μ+σ)范圍內,95%數據包的往返延遲在(μ-2σ,μ+2σ)范圍內。所以以固定數量數據包為統計周期,以周期內中間位置數據包的發送時間為基準,在傳輸過程中連續性地統計本周期內接收到50%、68%、95%數量反饋包的時刻與基準發送時刻的時間差t50、t68、t95。然后與理論值μ、μ+σ、μ+2σ進行對比。通過統計檢驗方法分析實際時間序列和理論時間序列的分布差異性。本方法采用非參數檢驗中的卡方檢驗[29]來量化兩者的差異性,該卡方檢驗公式如下:
(1)
式中:xi為實際值,這里指各周期內的t50、t68、t95;mi為理論值,即每個統計周期內收到50%、68%、95%數量反饋包時的理論時間μ、μ+σ、μ+2σ;k表示樣本區間的大小,X2表示實際值與理論值之間的偏離程度。
實驗證明:實際時間序列和理論時間序列的偏差情況與丟包率之間存在正相關關系。如圖1所示,當實際時間序列和理論時間序列的偏差情況小于10%時,丟包率基本為0;反之,隨著兩者偏差情況的增大,丟包率會逐漸變大。所以根據實際時間序列和理論時間序列的偏差情況(如卡方檢驗結果),可以有效估計出丟包概率及趨勢變化情況。

圖1 時間序列偏差情況與丟包率的關系圖
經典的Mathis公式表明RTT和吞吐速率之間存在一定的負相關關系[27],如圖2所示。所以通過對延遲變化趨勢的實時統計檢驗,可以估計吞吐速率的變化趨勢,其在檢測網絡擁塞時起到重要作用。當網絡出現擁塞情況時,排隊隊列長度會超過緩沖區容量,接下來傳輸的數據包將會遇到大的排隊延遲。那么通過對網絡延遲的統計分析,可以推測出吞吐速率的變化趨勢,并以分析當前的鏈路傳輸狀況,進而對擁塞現象進行檢測和控制。

圖2 吞吐速率與RTT的關系圖
基于連續實時統計檢驗對鏈路傳輸狀況的實時統計估計,本文提供了一種基于連續實時統計估計的源端擁塞控制方法,有效地解耦丟包、延遲和傳輸速率對網絡擁塞的影響,實現實時有效的網絡擁塞控制。
為了提高擁塞控制在不同網絡狀況下的有效性,避免對擁塞的控制影響其他指標,造成網絡的波動性,本方法主要通過Erasure Code和異步ACK反饋機制來解耦丟包、延遲和傳輸速率對網絡擁塞的影響,在不同網絡狀況下對不同指標進行針對性調整,實現實時有效的擁塞控制。
3.1.1 基于Erasure Code的解耦設計
本方法通過Erasure Code技術[30]實現鏈路丟包、延遲和傳輸速率的一定程度上的解耦。如圖3所示,其基本原理是將若干相同大小的數據包通過矩陣運算產生一定數量與原始數據相關的冗余數據塊。采用基于Cauchy矩陣的快速Reed-Solomon糾刪碼[31],理論上能夠提供18.75%的丟包容錯率。

圖3 Erasure Code編碼示意圖[30]
通過Erasure Code編解碼,在傳輸過程中只要丟失數據包的數量不超過冗余數據包的數量即可還原出完整數據,能在一定程度上解耦丟包。而且在N個數據包組成的一組數據包中,接收端不必等到全部數據包到達,只需收到提前到達的K個數據包,即可還原整組的原始數據包,減少了整組數據包的延遲,在一定程度上解耦網絡延遲。
3.1.2 基于異步ACK反饋機制的解耦設計
為了解決TCP傳輸協議固有屬性(面向連接、ACK反饋、丟包重傳機制等)對傳輸速率的影響,提高網絡擁塞控制方法的實時性和有效性,本文在傳輸層采用非面向連接的UDP協議進行傳輸,添加基于異步ACK反饋的可靠傳輸機制,減少傳輸過程中的延遲。在發送端和接收端通過并行隊列[32]實現高性能無鎖并行訪問,盡量將所有線程間隊列延遲最小化,進一步減少非傳輸過程的延遲。同時,摒棄傳輸層的丟包重傳和ACK反饋等可靠傳輸機制,通過異步ACK反饋機制實現可靠傳輸,解耦丟包對傳輸速率的影響。綜上所述,異步ACK反饋機制能進一步在一定程度上解耦丟包、延遲和傳輸速率。
本文第2節中提到,通過在傳輸過程中發送端對鏈路指標的連續實時分析,運用統計檢驗方法,可以對鏈路延遲波動性、丟包趨勢及其傳輸速率變化趨勢進行實時估計。通過對鏈路傳輸狀況的連續實時統計估計結果,可以在發送端對鏈路擁塞情況進行實時檢測。
3.2.1 基于延遲分布的源端擁塞檢測
理論證明延遲的波動性對鏈路的整體性能有著重大影響[33],而且鏈路延遲和吞吐速率之間存在一定的負相關關系[27],所以,通過對延遲分布的在線統計檢驗,可以對擁塞情況進行檢測。本方法在傳輸過程中,通過實時監測鏈路延遲變化趨勢來推測鏈路傳輸狀況,保持低延遲,避免傳輸過程中因延遲過大造成鏈路擁塞,從而解耦延遲對整體傳輸速率的影響。
如圖4所示,基于網絡延遲的正態性[21],對前后延遲序列進行連續性統計檢驗。間歇性地統計每段延遲序列的中位數和方差,得到對應的中位數序列和方差序列。其中中位數序列可以平滑一些意外突變的網絡延遲,體現每段延遲列的基本水平;方差序列可以衡量每段延遲序列的波動情況,反映網絡延遲的波動性。

圖4 延遲序列分析示意圖
首先通過對當前方差序列的連續性統計,分析目前網絡延遲波動情況,避免大的波動造成網絡擁塞。如圖5所示,逐步判斷當前方差序列的均值是否與之前多個方差序列的均值是否有顯著差異。若判斷出當前方差序列與以前的方差序列存在顯著差異,即證明當前網絡出現了比較大的延遲波動,需要降低發送速率,避免造成更大的鏈路波動。

圖5 方差序列分析圖
然后進一步對中位數序列進行分布一致性檢驗。如圖6所示,對當前中位數序列與之前的中位數序列進行前后狀態的一致性檢驗,從而分析中位數的前后變化情況。設置零假設H0為兩個樣本無顯著差異,然后采用假設檢驗方法進行兩個獨立樣本的一致性檢驗[34-35,37-38]。將檢驗結果的p值與選定的顯著性水平進行對比[36]。若p值比選定的顯著性水平更小,則拒絕零檢驗,證明前后中位數序列存在顯著性差異,否則無顯著差異。若中位數序列前后無顯著差異,證明當前網絡延遲沒有發生顯著變化,可以提高發送速率。

圖6 中位數序列分析圖
3.2.2 基于丟包趨勢估計的源端擁塞檢測
如本文2.2節所述,通過傳輸過程中的實時連續統計可以有效估計丟包趨勢。多種基于丟包的擁塞控制算法[6-8]表明,丟包是個明顯的擁塞信號,可以通過估計丟包趨勢檢測鏈路擁塞情況。
本方法基于兩個相似度閾值a、b,對本文2.2節中提到的實際時間序列和理論時間序列的卡方檢驗值進行雙邊檢驗[39]。當卡方檢驗值小于等于a時,則證明沒有丟包趨勢;大于等于b時,則證明有丟包趨勢;介于兩者之間時則繼續累計觀察,估計丟包趨勢。
本擁塞控制方法通過對延遲分布情況進行統計檢驗,估計鏈路傳輸過程中的丟包趨勢,若檢測到丟包趨勢,則證明鏈路中存在一定程度的擁塞,需要進行擁塞控制。
當源端檢測到鏈路的擁塞后,需要進行實時的擁塞控制,避免加劇鏈路擁塞。
3.3.1 源端擁塞控制原理設計
本擁塞控制方法的基本策略是基于一個初始化的發送速率,在傳輸過程中實時調整發送速率進行鏈路擁塞控制。
為了使整個擁塞控制過程基于一個相對合理的發送速率,需要在發送數據包之前通過測試包進行初始化。首先連續發送100個數據包作為測試包,接收端每當收到一個數據包均反饋一個ACK,發送端收到ACK后估計出即時帶寬。然后取所有即時帶寬的中位數作為實際數據包發送的初始速率。
通過連續實時的在線統計檢驗,可以檢測出鏈路傳輸過程中的實時擁塞情況。理論證明,網絡擁塞往往是由于源端帶寬遠大于鏈路瓶頸帶寬引起的[5]。所以擁塞控制的主要策略是在檢測到鏈路擁塞后,即時降低發送速率,以免較高的發送速率繼續增大鏈路負載,避免加劇鏈路擁塞。而且,為了提高擁塞控制的實時性,在速率調整過程中需要注意以下兩點:在提高發送速率的時候需要減少激進性;在檢測到鏈路擁塞后需要及時降低發送速率,避免加劇擁塞情況。
3.3.2 源端擁塞控制算法
根據源端擁塞控制的原理設計,在傳輸過程中,需要周期性地根據鏈路傳輸狀況實時估計發送速率,并以此作為調整過程中的參照發送速率。如算法1所示,當需要提高發送速率時,以1.25倍的速率梯度遞增發送速率,避免緊急加速造成的網絡抖動;當需要降低發送速率時,為了避免更大的網絡擁塞,以自然對數e的倒數1/e為遞減因子進行遞減。若減速后的速率小于實時統計出的參照發送速率,則以1/2的遞減因子遞減,若遞減后仍然小于參照發送速率,則最終以參照速率為準。

為了證明本擁塞控制算法的有效性和實時性,在不同地區的不同Linux服務器間進行多次實驗評估。首先在不同時間段和不同網絡狀況下運行本方法,測試其擁塞控制效果;然后與已有的經典擁塞控制算法Reno、Cubic和BBR在相同環境下進行實驗對比。本節主要從性能、實時性和公平性三方面對本方法進行整體分析。
本方法的主要關注指標是吞吐速率、丟包率和延遲波動情況,當延遲和吞吐速率存在沖突時,通過犧牲少量吞吐速率的代價來保持較低的延遲,以免過大的延遲加劇網絡擁塞。所以在實驗中基于關注指標,觀察傳輸過程中的吞吐速率、丟包率和延遲波動情況。其中接收端以10 ms為周期統計吞吐速率和丟包率,發送端實時統計延遲波動并記錄發送速率調整過程,分析網絡速率調整的即時性。
本節實驗一律采用以下參數:傳輸過程中數據包大小均設置為512 B;Erasure Code編解碼比例設置為13∶16,即對13個原始包進行Erasure Code冗余編碼,得出3個冗余包,最終形成包含16個數據包的數據組。
為了體現本擁塞控制方法對鏈路傳輸性能優化的效果,本文從吞吐速率、延遲、丟包三個方面對算法性能進行評估。
4.2.1 吞吐速率的性能分析
為了評估本擁塞控制方法對吞吐速率的提升效果,在相同的實驗環境下運行已有的Reno、Cubic、BBR擁塞控制算法和本方法。在不同時間段、不同網絡環境下重復多次實驗,持續記錄網絡吞吐速率。統計多組實驗結果,對吞吐速率進行整體分析對比。
為了直觀地體現本方法對吞吐速率的提升效果,實驗分別分析統計Reno、Cubic、BBR和本方法在相同時間周期內吞吐速率的變化情況。如圖7所示,發現本方法吞吐速率均大于另外三種擁塞控制算法,比BBR整體提升接近20%的吞吐速率。

圖7 吞吐速率對比圖
為了更加清晰全面地表現吞吐速率提升效果,繪制了四種擁塞控制方法下吞吐速率的概率分布曲線。如圖8所示,本方法的吞吐速率均值大于另外三種算法,說明本方法對吞吐速率有著比較顯著的提升效果。但是數據表明本方法的方差也大于另外三種算法,即吞吐速率波動性偏大。經多次實驗分析得出:吞吐速率波動性大主要由于發送速率調整的實時性引起的。本方法在傳輸過程中會針對多變的網絡狀況進行頻繁地調整,勢必造成吞吐速率方差偏大。

圖8 吞吐速率分布對比圖
為了進一步分析本方法在大文件傳輸方面對傳輸速率的提升效果,在同樣的網絡環境中,分別基于FTP、TCP(Reno、Cubic、BBR)Socket和本方法傳輸100 GB的大文件,分析其傳輸過程中的平均傳輸速率。如圖9所示,本方法的平均傳輸速率均明顯高于FTP和TCP。綜合實驗證明,本擁塞控制方法在提升吞吐速率方面具有較好的性能。

圖9 平均速率對比圖
4.2.2 延遲的性能分析
為了評估各擁塞控制方法對延遲的影響,本文主要利用傳輸過程中連續實時統計的RTT序列來體現網絡延遲。如圖10所示,本方法能夠持續性地將網絡延遲控制在70 ms以內,明顯小于Reno、Cubic、BBR擁塞控制算法的網絡延遲。而且從圖11所示的網絡延遲分布圖中可以看出,本擁塞控制方法比另外三種擁塞控制算法的延遲波動性更小。綜合實驗證明,本方法在降低延遲及其波動性方面具有較好的性能。

圖10 延遲對比圖

圖11 延遲分布對比圖
4.2.3 丟包容忍的性能分析
如3.1節所述,本方法采用Erasure Code技術來解耦丟包,該技術可以平滑傳輸過程中的小概率丟包情況,提供10%~20%的丟包容錯率。理論上在發送端以K∶N的比例對原始數據包進行冗余編碼,接收端只需要收到N個數據包中的任意K個數據包,即可完整還原原始數據包。為了評估Erasure Code對網絡丟包的解耦效果,以是否運用Erasure Code編解碼為對照條件,進行多次對照實驗。在發送端模擬設置不同的丟包率,在接收端周期性統計丟包率。最后對多次實驗結果進行統計分析。如圖12所示,運用Erasure Code編解碼明顯降低了最終的丟包率。當原始丟包率小于10%時,通過Erasure Code可基本還原數據包,解碼后的最終丟包率基本為0;當原始丟包率在50%以內時,可以降低50%的丟包率,很大程度上減少了丟包重傳的過程,提高整體傳輸效率。綜合實驗證明,本方法在解耦丟包方面具有較好的性能。

圖12 丟包容忍的性能效果
實時性是擁塞控制方法極其重要的性質,即在傳輸過程中檢測出網絡擁塞后能及時做出調整,實時有效地實現網絡擁塞控制。所以在實驗分析階段,需要對網絡擁塞控制的實時性進行重點評估。
為了全面地對網絡擁塞控制的實時性進行評估,在不同實驗環境下進行多次實驗,記錄各種網絡抖動狀況下發送速率調整過程的數據,綜合分析本方法對網絡擁塞的檢驗和控制的實時性。
本文主要通過RTT序列的連續實時變化情況,分析本方法擁塞控制的實時性。如圖13所示,下半部分對應的發送速率的調整方式(1表示增加發送速率,-1表示降低發送速率,0表示發送速率不變),上半部分對應實時的RTT數據。從網絡延遲和發送速率調整對比圖可以看出,前期持續加速,造成延遲持續增加。針對這種情況,本方法通過連續統計檢測,檢測出延遲的劇烈變化,隨即進行大幅度地減速,抑制了延遲增大趨勢。后半部分由于延遲整體處于較高水平,導致丟包率變大。該算法能在調整過程中通過頻繁減速行為規避擁塞,避免持續大規模丟包。

圖13 本方法的擁塞控制過程
為了評估本擁塞控制方法的公平性,設置如下的對照實驗:在同一鏈路中同時運行兩個并行數據流a和b,周期性記錄兩個流的吞吐速率。其中對照組中數據流a和b均運行標準TCP協議;實驗組中數據流a運行標準TCP協議,數據流b運行本方法。通過對兩組實驗中數據流a吞吐速率分布的一致性檢驗,評估本方法的公平性。
通過不同時間段、不同網絡環境的多次實驗,分別周期性地計算對照組和實驗組中a、b數據流的吞吐速率。如圖14所示,對照組中a、b數據流均采用標準TCP協議,兩者的吞吐速率均集中于200 Mbit/s以內。如圖15所示,實驗組中數據流a運行標準TCP協議,數據流b運行本方法,發現數據流a的吞吐速率也集中于200 Mbit/s以內。

圖14 對照組中a、b數據流的吞吐速率圖

圖15 實驗組中a、b數據流的吞吐速率圖
為了準確判斷在不同擁塞控制方法的數據流并行時,a的吞吐速率是否發生顯著變化,通過假設檢驗分析兩組實驗中a的吞吐速率的一致性。采用Mann-Whitney U檢驗[37]分析兩個獨立樣本數據分布的一致性,U檢驗的p值為0.147,大于0.05,證明數據流a在對照實驗中的吞吐速率無顯著性差異。
綜合實驗分析,本方法在與標準TCP協議并行時,主要利用鏈路中的閑置帶寬,不會搶奪式占用帶寬,影響鏈路中標準TCP協議數據流的傳輸速率。以此得出,本方法和標準TCP協議在相同網絡環境中都能得到較好的公平性。
以上實驗證明,本方法能在一定程度上解耦丟包、延遲和速率,基于對鏈路傳輸狀況的連續實時統計估計,對鏈路擁塞情況進行實時檢測和即時控制,在丟包容忍、吞吐速率提升、降低延遲及波動性方面都具有較好的性能,而且保證良好的實時性和公平性。
本文提出了一種基于連續統計估計的源端擁塞控制方法。通過鏈路傳輸狀況的在線連續統計估計方法,針對不同網絡狀況能夠對鏈路傳輸狀況進行較為實時和準確的估計。在傳輸過程中基于對網絡狀態的連續實時統計估計,結合Erasure Code技術和異步ACK反饋機制,初步實現了對于丟包、延遲和傳輸速率一定程度上的解耦,并在不同網絡狀況下實現實時有效的擁塞控制。實驗結果表明,本方法在丟包容忍、吞吐速率提升、降低延遲及波動性方面都具有較好的性能,而且保證良好的實時性和公平性。
目前的工作主要集中在單鏈路源端擁塞控制方法的研究,評估實驗也僅僅涉及到發送端和接收端。然而當發送端和接收端中間涉及到轉發端,或者在多鏈路的情況下,本方法是否能夠繼續有效地發揮優勢作用,暫時還無從考證。下一步,我們將會將本文的擁塞控制方法應用于多路徑網絡鏈路上,結合路由轉發、流量分配等原理,實現多路徑環境下的擁塞控制。