潘婉蘇,李曉風(fēng) ,譚海波,許金林,李皙茹
(1.中國科學(xué)院 合肥物質(zhì)科學(xué)研究院,合肥 230031;2.中國科學(xué)技術(shù)大學(xué),合肥 230026)
TCP擁塞控制對于互聯(lián)網(wǎng)及其應(yīng)用的發(fā)展和成功起到了重要作用。常用的擁塞控制算法是基于丟包反饋來調(diào)節(jié)擁塞窗口(congestion window,CWND)的大小,如Reno、BIC、CUBIC等算法[1-3]。但在高速、長距離的現(xiàn)代網(wǎng)絡(luò)中,基于丟包的算法會(huì)造成吞吐量嚴(yán)重下降,往往會(huì)浪費(fèi)很多可用帶寬[4]。2016年Google提出了BBR(bottleneck bandwidth and round-trip propagation time)算法[5],通過對瓶頸帶寬和往返傳播時(shí)間的估測來調(diào)整其發(fā)送行為,實(shí)現(xiàn)了高吞吐量的同時(shí)減少了傳輸延遲。Google公布的實(shí)施情況和一些公開發(fā)表的評測結(jié)果[6-11]表明,BBR可以顯著提高TCP連接的吞吐量,與傳統(tǒng)CUBIC相比在吞吐量上具有顯著優(yōu)勢,但BBR仍存在著一些缺陷,其中RTT(round trip time)公平性問題是比較嚴(yán)重的問題之一。即當(dāng)多個(gè)數(shù)據(jù)流共享同一瓶頸鏈路時(shí),RTT較長的BBR數(shù)據(jù)流具有帶寬占用優(yōu)勢[7,12-15]。
針對RTT公平性問題,一些學(xué)者進(jìn)行了改進(jìn)。文獻(xiàn)[7]提出了BBQ算法,通過限制RTT較長的數(shù)據(jù)流的檢測周期來降低長RTT流的帶寬占用。當(dāng)T>(1+β)Tprop時(shí)(T為RTT,Tprop為RTprop,即round propagation time),使用min(α;Tprop)作為探測周期的持續(xù)時(shí)間,從而減小長RTT流發(fā)送的數(shù)據(jù)包數(shù)量,其中β∈[0.5%,1%],α=3 ms。文獻(xiàn)[12]通過建立理論模型證明了不同RTT流帶寬占用受RTT比率的影響,長RTT流的帶寬占比具有優(yōu)勢。文獻(xiàn)[13]提出了RFBBR算法,在PROBE_BW階段添加公平性因子γ=(T+Tprop)/(2×T)調(diào)節(jié)擁塞窗口的大小,進(jìn)而改進(jìn)RTT公平性。文獻(xiàn)[14]提出了延遲感知BBR(delay-aware BBR,DA-BBR)算法,根據(jù)RTT定義一個(gè)小于1的調(diào)節(jié)因子去限制鏈路中的帶寬時(shí)延積(bandwidth delay product,BDP),緩解了RTT不公平性。文獻(xiàn)[15]提出通過調(diào)整擁塞窗口增益縮小不同RTT流之間的窗口差距,從而提升RTT公平性。以上這些算法在提高RTT的公平性方面取得了一定積極的效果,但分析發(fā)現(xiàn),現(xiàn)有的這些改進(jìn)方案都限制了BBR流的探測,并且仍采用固定的起搏增益,而未對起搏增益這一關(guān)鍵參數(shù)進(jìn)行優(yōu)化。
本文對BBR算法的探測過程進(jìn)行建模分析,利用RTT反饋調(diào)節(jié)BBR在探測帶寬狀態(tài)中的起搏增益,建立起搏增益模型去平衡不同流之間的發(fā)送速率,從而提升不同RTT流之間的公平性。網(wǎng)絡(luò)模擬器3(network simulator 3,NS3)的仿真實(shí)驗(yàn)表明,改進(jìn)算法BBR-adaptive(BBR-A)有效提升了算法的RTT公平性以及其他方面的性能。
不同于基于丟包的擁塞控制算法,BBR算法通過交替測量鏈路中的最大帶寬和最小延時(shí)來解決尋找Kleinrock最佳操作點(diǎn)[16]的問題。BBR將最近10次往返中測得的最大帶寬視為Bmax,將過去10 s中測得的最小延時(shí)視為Tprop,然后根據(jù)Bmax和Tprop估算BDP[16],即
BBDP=Bmax×Tprop
(1)
BBR分別通過窗口增益和起搏增益來調(diào)整CWND和發(fā)送速率,進(jìn)而控制其發(fā)送行為。CWND和發(fā)送速率的計(jì)算公式為
Wcwnd=cwnd_gain×BBDP
(2)
S=pacing_gain×Bmax
(3)
式中:Wcwnd為CWND,cwnd_gain為窗口增益,S為發(fā)送速率,pacing_gain為起搏增益。
BBR主要由4個(gè)狀態(tài)構(gòu)成,見圖1。

圖1 BBR的狀態(tài)模型Fig.1 State model of BBR
在STARTUP狀態(tài),將cwnd_gain和pacing_gain設(shè)置為2/ln 2,使CWND和發(fā)送速率指數(shù)增加,積極的探測鏈路中的可用帶寬。如果連續(xù)3個(gè)RTT內(nèi)新估算的帶寬增加沒有超過25%,BBR則進(jìn)入DRAIN狀態(tài)。在DRAIN狀態(tài),BBR通過將pacing_gain降低到ln 2/2來清除前一狀態(tài)的剩余隊(duì)列,cwnd_gain保持不變(2/ln 2)。在PROBE_BW狀態(tài),BBR循環(huán)8個(gè)周期(pacing_gain[]=[1.25;0∶75;1;1;1;1;1;1])進(jìn)行探測帶寬,每個(gè)周期持續(xù)時(shí)間為Tprop。在這個(gè)狀態(tài)中CWND固定為2BBDP。BBR每10 s進(jìn)入一次PROBE_RTT狀態(tài),在這個(gè)狀態(tài)CWND被設(shè)置為4MSS(Maximum Segment Size),以確保對Tprop新值進(jìn)行采樣,該狀態(tài)持續(xù)200 ms。在PROBE_RTT狀態(tài)結(jié)束后,通過瓶頸鏈路狀態(tài)判斷轉(zhuǎn)換到PROBE_BW或STARTUP狀態(tài)繼續(xù)進(jìn)行循環(huán)。
在PROBE_BW狀態(tài),BBR周期性地以pacing_gain=1.25增加發(fā)送速率,向瓶頸鏈路發(fā)送更多的數(shù)據(jù)包,導(dǎo)致總發(fā)送速率大于瓶頸帶寬,在瓶頸上形成了持久隊(duì)列。隨后pacing_gain=0.75降低發(fā)送速率,試圖排空先前探測生成的多余的隊(duì)列。但這種循環(huán)實(shí)際無法排空多余的數(shù)據(jù),仍然會(huì)形成隊(duì)列積壓。根據(jù)排隊(duì)論,一旦在瓶頸處形成持久隊(duì)列,不同數(shù)據(jù)流的吞吐量就取決于它的隊(duì)列份額。
當(dāng)不同RTT流通過瓶頸鏈路時(shí),長RTT流的BBDP估算值大于短RTT流的BBDP估算值,其可以發(fā)送更多數(shù)據(jù)包,因此在瓶頸隊(duì)列中占主導(dǎo)地位。長RTT流的隊(duì)列份額優(yōu)勢可以讓其獲得比短RTT流更高的發(fā)送速率,使短RTT流的發(fā)送速率不斷降低。持續(xù)的低傳輸速率將導(dǎo)致短RTT流在下一次帶寬測量中獲得更小的BBDP估算值,然后再次降低發(fā)送速率,又將進(jìn)一步減少其隊(duì)列,循環(huán)往復(fù),最終導(dǎo)致短RTT流的帶寬占用嚴(yán)重下降。即使在探測過程中的一些數(shù)據(jù)流提前終止,上面的結(jié)論仍然成立,因?yàn)槠渌麛?shù)據(jù)流將很快搶占空閑帶寬。隨著數(shù)據(jù)流RTT差異的增加,公平性會(huì)進(jìn)一步惡化。一些用戶可能利用這個(gè)漏洞故意增加延遲去獲得高帶寬。因此,解決BBR算法中RTT公平性問題是非常必要的。
通過本文RTT公平性分析可以知道,隊(duì)列積壓的產(chǎn)生導(dǎo)致長RTT流的發(fā)送速率大于短RTT流。對BBR流建模,分析RTT與發(fā)送速率之間的關(guān)系。假設(shè)有n個(gè)不同數(shù)據(jù)流通過帶寬為C的瓶頸鏈路,fii∈[1,n]為第i個(gè)數(shù)據(jù)流,di(t)為fi在t時(shí)刻的傳遞速率,在t時(shí)刻fi的估算最大帶寬為
Bmaxi(t)=max(di(t))(T∈[t-10RRTT;t])
(4)
在實(shí)際傳輸過程中,RTT由傳播時(shí)延和排隊(duì)時(shí)延組成,fi在時(shí)間t時(shí)刻的RTT為
Ti(t)=qi(t)+Tpropi
(5)
式中qi(t)為fi在t時(shí)刻的排隊(duì)時(shí)延。
設(shè)Ii(t)為fi的飛行中數(shù)據(jù)量,則Ii(t)與di(t)關(guān)系為
(6)
進(jìn)一步分析RTT與起搏增益之間的關(guān)系,根據(jù)BBR算法的帶寬探測機(jī)制,在向上探測周期pacing_gain=1.25,因此在t時(shí)刻最大傳遞速率為
(7)
BBR流的探測周期為8個(gè)Tprop,結(jié)合式(7)可以知道fi在新一輪最大帶寬估算時(shí)更新為
(8)

為了平衡不同RTT流的帶寬占用,可以在現(xiàn)有增益系數(shù)基礎(chǔ)上乘上一個(gè)RTT的減函數(shù)來消除RTT對發(fā)送速率的影響。如果一個(gè)長RTT數(shù)據(jù)流,那么其發(fā)送速率緩慢地向上增加并且快速地向下減少。如果一個(gè)短RTT數(shù)據(jù)流,那么它的發(fā)送速率應(yīng)該快速地向上增加并且緩慢地向下減少,從而實(shí)現(xiàn)起搏增益系數(shù)對發(fā)送速率的約束。根據(jù)RTT的測量機(jī)制,將φ定義為fi當(dāng)前延時(shí)與最大延時(shí)比值,計(jì)算公式為
(9)
式中:Ti為fi從最后一個(gè)ACK中獲得的當(dāng)前延時(shí),Tmax為ACK更新的最大延時(shí)。
通常φ可以量化瓶頸的鏈路利用率[17-18],Ti越大,φ越大。僅在瓶頸鏈路容量和緩沖區(qū)即將滿載時(shí),Ti才接近最大的Tmax。通過φ構(gòu)建關(guān)于RTT的減函數(shù)作為新的向上和向下起搏增益系數(shù),進(jìn)而約束不同RTT流的發(fā)送速率。
基于上述分析,分別定義了向上起搏增益系數(shù)Pup和向下起搏增益系數(shù)Pdown來替代固定的起搏增益系數(shù)1.25和0.75。對于Pup,相關(guān)函數(shù)Pup(φ)應(yīng)該為一個(gè)下凹的曲線,下漸近線為Pup=1,并且隨著φ變大,Pup(φ)下降趨勢變緩,以減少優(yōu)勢數(shù)據(jù)流的發(fā)送速率,給弱勢數(shù)據(jù)流提供更多的可用帶寬。對于Pdown,相關(guān)函數(shù)Pdown(φ)應(yīng)該為上凸的曲線,上漸近線為Pdown=1,并且隨φ越大,Pdown(φ)下降趨勢變快。此外,Pup(φ)和Pdown(φ)所需函數(shù)必須為低復(fù)雜度的函數(shù),因?yàn)樗贐BR算法內(nèi)核中實(shí)現(xiàn)。基于這些約束條件,測試了一些函數(shù),發(fā)現(xiàn)反比例函數(shù)可以滿足需要。基于反比例函數(shù)的特性,構(gòu)造了Pup(φ)和Pdown(φ)
(10)
(11)
Pup函數(shù)和Pdown函數(shù)的變化趨勢見圖2。隨著φ的增大,Pup(φ)緩慢下降,且下降趨勢變慢,取值在[1,1.5]之間;隨著φ的增大,Pdown(φ)緩慢下降,且下降趨勢變快,取值范圍在[0.5,1]之間,滿足增益模型的設(shè)計(jì)需求。BBR-A算法通過每個(gè)ACK更新RTT的信息調(diào)整原BBR中起搏增益的大小,從而自適應(yīng)調(diào)節(jié)發(fā)送速率。此外,根據(jù)BBR的探測機(jī)制,將鏈路狀態(tài)的分界點(diǎn)設(shè)置為1.25BBDP[19]。BBR-A具體細(xì)節(jié)見算法1,當(dāng)Ii<1.25BBDP時(shí),允許不同RTT流發(fā)送更多的數(shù)據(jù)包來占用空閑帶寬。在這個(gè)向上探測周期內(nèi),采用pacing_gain=Pup來增加發(fā)送速率。當(dāng)飛行中的數(shù)據(jù)量大于1.25BBDP時(shí),表明瓶頸鏈路沒有額外的能力來傳輸更多的數(shù)據(jù)包,并會(huì)在緩沖區(qū)形成隊(duì)列,此時(shí)通過pacing_gain=1維持穩(wěn)定的發(fā)送速率。此外,為了增加BBR算法對丟包的敏感性,增加丟包閾值has_loss(閾值設(shè)定2%)表示是否存在嚴(yán)重丟包。如果Ii>1.25BBDP并且有丟包產(chǎn)生,此時(shí)的向下探測周期要限制不同RTT流的發(fā)送速率,采用pacing_gain=Pdown降低發(fā)送速率,釋放緩沖區(qū)。剩余周期,BBR-A依然采用原BRR中默認(rèn)的pacing_gain。

圖2 BBR-A算法中Pup和Pdown函數(shù)隨著φ的變化趨勢Fig.2 Variation of Pup and Pdown functions with φ in BBR-A algorithm
BBR-A算法通過對起搏增益的調(diào)節(jié),進(jìn)一步增強(qiáng)了不同RTT流發(fā)送速率的自我調(diào)節(jié)能力。將帶寬探測狀態(tài)的向上起搏增益系數(shù)上限擴(kuò)大到1.5,提高BBR的探測帶寬幅度,同時(shí)將向下起搏增益系數(shù)下限設(shè)置為0.5,加快多余數(shù)據(jù)包的排空。通過讓不同RTT流的探測和排空系數(shù)彼此交錯(cuò),可以平衡不同數(shù)據(jù)流的發(fā)送速率,從而提高RTT公平性。
參考文獻(xiàn)[13]進(jìn)行BBR-A算法的復(fù)雜度分析,BBR-A采用if循環(huán)語句判斷鏈路狀態(tài),因此其時(shí)間復(fù)雜度為O(1)。BBR-A每個(gè)周期只存儲(chǔ)起搏增益的計(jì)算結(jié)果,沒有額外的內(nèi)存消耗,其空間復(fù)雜度也為O(1)。另外,BBR-A算法的實(shí)現(xiàn)依舊基于原有的BBR框架,便于實(shí)施與部署。
基于BBR版本[20-21]在NS3上測試了BBR及優(yōu)化算法的性能,網(wǎng)絡(luò)拓?fù)湟妶D3。S0~Sn為發(fā)送端,R0~Rn為接收端,瓶頸帶寬設(shè)置為100 Mbit/s。

圖3 仿真模擬實(shí)驗(yàn)的網(wǎng)絡(luò)拓?fù)銯ig.3 Network topology of simulation experiment
通過不同網(wǎng)絡(luò)條件下測試所獲得的仿真結(jié)果驗(yàn)證BBR-A算法有效性。性能指標(biāo)包括吞吐量、信道利用率、Jain公平指數(shù)和重傳率,變量包括RTT和緩沖區(qū)大小。此外,將BBQ[7]和DA-BBR[14]作為基準(zhǔn)算法加入到實(shí)驗(yàn)對比中。
信道利用率表示信道平均被占用的程度,可以一定程度反映網(wǎng)絡(luò)利用率。通常通過測量數(shù)據(jù)流的吞吐量來計(jì)算瓶頸鏈路的信道利用率η,即
(12)
式中:Qbytesi為fi在接收端已接收數(shù)據(jù)包的長度,C為瓶頸鏈路的帶寬,Tlast為持續(xù)的模擬運(yùn)行時(shí)間(本文設(shè)定為200 s)。
由于BBR算法在高丟包率下容易失速,因此本節(jié)測試具有不同隨機(jī)丟包率下的信道利用率,以評估算法的抗丟包能力。緩沖區(qū)大小配置為1BBDP和5BBDP,隨機(jī)分組丟失率分別設(shè)置為0%、1%、3%和6%。
BBR、BBQ、DA-BBR和BBR-A算法的信道利用率的仿真結(jié)果見圖4。整體來看,4種算法在1BBDP緩沖區(qū)的信道利用率要低于5BBDP緩沖區(qū)。當(dāng)隨機(jī)丟包率為0%時(shí),4種算法可以在不同的緩沖區(qū)中獲得94%以上的信道利用率,其中BBR-A信道利用率最高,1BBDP和5BBDP緩沖區(qū)中分別為95.6%和96.2%。4種算法的信道利用率均隨著丟包率的增加而降低,但BBR-A受丟包的影響相對較小。當(dāng)隨機(jī)丟包率為6%時(shí),BBR的信道利用率明顯下降,而BBR-A的信道利用率降幅最小。BBR-A算法加入了丟包反饋,并提高了起搏增益上限,可以在不同的緩沖區(qū)始終保持90%以上的信道利用率,尤其在高丟包的場景中獲得更高的吞吐量。

圖4 4種算法的信道利用率Fig.4 Channel utilization of four algorithms
通過比較BBR、BBQ、DA-BBR和BBR-A算法不同RTT流之間的吞吐量,評估BBR-A是否緩解了RTT不公平性。實(shí)驗(yàn)設(shè)置0.5BBDP和5BBDP緩沖區(qū)大小,10 ms RTT流與50 ms RTT流競爭瓶頸帶寬。圖5為10 ms RTT流和50 ms RTT流的吞吐量對比。
對于BBR算法,2種緩沖區(qū)中10 ms RTT流和50 ms RTT流的吞吐量見圖5(a)和5(e)。在啟動(dòng)階段10 ms RTT流可以快速獲得吞吐量,但與50 ms RTT流短暫競爭后,其吞吐量快速下降,最終約為39.7 Mbit/s,而50 ms RTT流吞吐量是其1.4倍。在圖5(e)中,2種RTT流的吞吐量差異明顯變大,10 ms RTT流的吞吐量僅為13.8 Mbit/s左右,50 ms RTT流吞吐量是其5.9倍。圖5(b)和5(f)為BBQ算法,在0.5BBDP緩沖區(qū)中2種RTT流的吞吐量差異相比BBR算法變小。10 ms RTT流的吞吐量提高到42.3 Mbit/s左右,50 ms RTT流的吞吐量約是其1.3倍。在5BBDP緩沖區(qū)(圖5(f)),2種RTT流之間的吞吐量差異比圖5(b)中的結(jié)果有所增加,50 ms RTT流的吞吐量為59.3 Mbit/s,是10 ms RTT流的1.6倍。DA-BBR算法見圖5(c)和5(g),2種緩沖區(qū)中數(shù)據(jù)流的吞吐量差異變化不大,50 ms RTT流的吞吐量約是10 ms RTT流的1.3倍。對于BBR-A算法,在0.5BBDP緩沖區(qū)(圖5(d)),10 ms RTT流和50 ms RTT流的吞吐量差異相比前3種算法進(jìn)一步縮小。10 ms RTT流和50 ms RTT流吞吐量分別為45.3 Mbit/s和50.3 Mbit/s,相差10%。在5BBDP緩沖區(qū)(圖5(h)),10 ms RTT流的吞吐量波動(dòng)相對較大,說明數(shù)據(jù)流積極地競爭可用帶寬,50 ms RTT流的吞吐量約是10 ms RTT流的1.3倍。

圖5 不同算法在不同緩沖區(qū)中10 ms RTT和50 ms RTT流的吞吐量對比Fig.5 Throughput comparison of 10 ms RTT flow and 50 ms RTT flow with different algorithms and buffer sizes
通過圖5的對比結(jié)果可以看出,與BBR相比,BBQ提高了2種RTT流之間的公平性,但在5BBDP緩沖區(qū),50 ms RTT流的吞吐量優(yōu)勢依舊明顯。而DA-BBR算法也提高了2種RTT流之間的公平性,尤其是在5BBDP緩沖區(qū)中相比于BBQ算法有了進(jìn)一步提升。BBR-A改變了不同RTT流的起搏增益,提高了短RTT流的帶寬競爭能力,縮小2種RTT流的吞吐量差異,在4種算法中實(shí)現(xiàn)了最好的RTT公平性,尤其在0.5BBDP緩沖區(qū)中具有明顯公平性優(yōu)勢。
另外,通過上述實(shí)驗(yàn)結(jié)果發(fā)現(xiàn)不同的緩沖區(qū)大小對RTT的公平性有著明顯的影響,因此繼續(xù)開展相關(guān)實(shí)驗(yàn)比較10 ms RTT流和50 ms RTT流在不同緩沖區(qū)中的性能差異,進(jìn)一步評估4種算法的RTT公平性。為了量化算法在不同緩沖區(qū)大小下的RTT公平性,本文引入了Jain公平指數(shù)[22]。Jain公平指數(shù)可以用來衡量帶寬競爭中的公平性,計(jì)算方法如下:
(13)
式中:n為鏈接個(gè)數(shù),xi為第i個(gè)鏈接的吞吐量。
Jain公平指數(shù)(以下簡稱公平指數(shù))能夠很好地反映吞吐量的差異,取值范圍在[0,1]之間。該公平指數(shù)越接近1,說明帶寬分配的公平性就越好。
10 ms RTT流和50 ms RTT流在0.1BBDP~100BBDP的緩沖區(qū)條件下,各自的平均吞吐量變化和公平指數(shù)見圖6。圖6(a)為BBR算法,隨著緩沖區(qū)變大,2種RTT流的吞吐量差異變大。當(dāng)緩沖區(qū)大于6BBDP,50 ms RTT流占用大部分帶寬,公平指數(shù)下降到0.63左右。對于BBQ算法,見圖6(b)。相比BBR,其公平性得到了很大的提升。雖然2種數(shù)據(jù)流競爭時(shí)吞吐量差異隨著緩沖區(qū)變大而加大,公平指數(shù)也隨著下降,但BBQ的公平指數(shù)仍能維持在0.91以上。圖6(c)中的DA-BBR算法,其公平指數(shù)最小維持在0.95左右。在圖6(d)中,BBR-A算法明顯縮小了10 ms RTT流和50 ms RTT流的吞吐量差異,其公平指數(shù)維持在0.96以上。總體而言,BBR-A比BBR和BBQ算法RTT公平性更好,比DA-BBR算法略有優(yōu)勢。尤其在深緩沖區(qū)條件下,RTT公平性相比BBR算法有了很大的提升,公平指數(shù)提高了約1.5倍,實(shí)現(xiàn)了更好的性能。

圖6 不同緩沖區(qū)大小下,10 ms RTT流與50 ms RTT流競爭時(shí)的平均吞吐量和公平指數(shù)Fig.6 Average throughput and fairness index of 10 ms RTT flow competing with 50 ms RTT flow with different buffer sizes
除了緩沖區(qū)大小對RTT公平性有著明顯的影響,RTT差異也會(huì)明顯影響RTT公平性[13]。仿真設(shè)置10 ms RTT流與不同RTT流在5BBDP緩沖區(qū)條件下進(jìn)行帶寬競爭,4種算法中不同RTT流的吞吐量的變化趨勢和公平指數(shù)見圖7。

圖7 5BBDP緩沖區(qū)大小下,10 ms RTT流與不同RTT流共存時(shí)的平均吞吐量和公平指數(shù)Fig.7 Average throughput and fairness index of 10 ms RTT flow coexisting with different RTT flows in 5BBDP buffer
圖7(a)為BBR算法,隨著RTT差異的增加,長RTT流的吞吐量逐步占據(jù)優(yōu)勢,公平指數(shù)逐步下降。當(dāng)RTT比率達(dá)到10倍時(shí),即10 ms RTT流與100 ms RTT流競爭時(shí),公平指數(shù)僅為0.59。在圖7(b)中,BBQ算法中的RTT公平性呈現(xiàn)不規(guī)律變化。當(dāng)RTT比率在2~3之間時(shí),短RTT流的吞吐量占據(jù)優(yōu)勢地位,但當(dāng)RTT比率大于3時(shí),長RTT流的吞吐量逐步占據(jù)優(yōu)勢地位。圖7(c)的DA-BBR算法,不同RTT流之間的公平性有所提升,最終公平指數(shù)在0.92左右。BBR-A算法見圖7(d),隨著RTT差異的增加,雖然長RTT流的吞吐量占據(jù)優(yōu)勢,但其與10 ms RTT流之間的吞吐量差異不大,BBR-A的公平指數(shù)可以維持在0.95左右。BBR-A算法通過自適應(yīng)的調(diào)整不同RTT流之間的起搏增益,可以使不同RTT數(shù)據(jù)流保持較高的公平性,尤其當(dāng)RTT比率大于4時(shí),BBR-A算法的公平指數(shù)最高。
重傳率是重傳網(wǎng)絡(luò)包的比例,鏈路中的重傳率過高一般表示網(wǎng)絡(luò)質(zhì)量差,會(huì)影響數(shù)據(jù)的傳輸效率。通過對比緩沖區(qū)大小和競爭數(shù)據(jù)流的數(shù)量對數(shù)據(jù)包重傳的影響,可以驗(yàn)證不同算法的重傳率。實(shí)驗(yàn)發(fā)送方使用不同的算法將單個(gè)或多個(gè)數(shù)據(jù)流傳輸?shù)浇邮辗剑彌_區(qū)大小設(shè)置分別為0.1BBDP和1BBDP。4種算法的重傳率見圖8,起始點(diǎn)為單個(gè)10 ms RTT流的重傳率,終點(diǎn)為100個(gè)10 ms RTT流的重傳率。

圖8 不同算法在不同緩沖區(qū)中的重傳率Fig.8 Retransmission rates of different algorithms with different buffer sizes
在圖8(a)中,當(dāng)緩沖區(qū)為0.1BBDP時(shí),BBR的重傳率明顯高于其他算法。在起始點(diǎn),BBR的重傳率約為2.8%,BBQ、DA-BBR和BBR-A的重傳率約為1.52%、1.26%和1.31%。隨著數(shù)據(jù)流量的增加,數(shù)據(jù)包出現(xiàn)了大量的重傳,當(dāng)流的數(shù)量為100時(shí),BBR、BBQ和DA-BBR的重傳率分別為14.9%、6.01%和4.86%,而BBR-A的重傳率約為4.24%,是4種算法中最小的。在圖8(b)中,緩沖區(qū)大小增加到1BBDP。BBR的重傳率相比0.1BBDP時(shí)明顯下降,但仍是4種算法中最高的。在起始點(diǎn),4種算法的重傳率基本一致,大約為1%。隨著流的數(shù)量的增加,4種算法重傳率都發(fā)生了增加。當(dāng)數(shù)據(jù)流的數(shù)量為100時(shí),BBR的重傳率約為4.63%,BBQ和DA-BBR的重傳率約為3.95%和3.52%,BBR-A的重傳率約為3.42%。BBR-A算法加入了丟包反饋,并建立對稱的起搏增益模型,避免激進(jìn)的探測帶寬方式導(dǎo)致的數(shù)據(jù)包重傳。仿真實(shí)驗(yàn)結(jié)果證明了BBR-A算法可以減少數(shù)據(jù)包重傳次數(shù),有效提高網(wǎng)絡(luò)通信效率。
本文在研究BBR擁塞控制算法的基礎(chǔ)上,針對原BBR算法中的RTT公平性問題,提出了改進(jìn)算法BBR-A。BBR-A算法根據(jù)鏈路中的RTT,自適應(yīng)調(diào)整向上和向下起搏增益,取代了原有的固定起搏增益,從而平衡不同RTT流的發(fā)送速率。
NS3仿真實(shí)驗(yàn)結(jié)果表明,BBR-A算法中不同的RTT流可以公平競爭,公平指數(shù)明顯高于BBR。此外,在信道利用率的實(shí)驗(yàn)中,與原BBR算法相比,BBR-A算法并沒有犧牲信道利用率,甚至在高丟包的情況下信道利用率提升明顯。在重傳率的實(shí)驗(yàn)中,BBR-A算法的表現(xiàn)也優(yōu)于BBR算法,可以有效降低重傳率。這些都表明本文提出的BBR-A算法可以有效提升BBR算法的網(wǎng)絡(luò)擁塞控制性能。