賴涵光,李 清,江 勇*
(1.清華大學(xué)深圳國際研究生院,廣東深圳 518055;2.南方科技大學(xué)未來網(wǎng)絡(luò)研究院,廣東深圳 518055)
傳輸控制協(xié)議(Transmission Control Protocol,TCP)擁塞控制是網(wǎng)絡(luò)傳輸?shù)膫鹘y(tǒng)問題,也是核心問題,傳統(tǒng)的TCP 通過調(diào)整擁塞窗口的方式來進(jìn)行擁塞控制。而擁塞窗口的調(diào)整主要通過慢啟動、擁塞避免、快速重傳和快速恢復(fù)四個機(jī)制來實現(xiàn),從而在避免擁塞的情況下實現(xiàn)吞吐量的最大化。
當(dāng)前,在學(xué)術(shù)界和工業(yè)界,人工智能(Artificial Intelligence,AI)的研究與應(yīng)用發(fā)展迅猛,包含機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和深度強(qiáng)化學(xué)習(xí)等人工智能方法正越來越多地被應(yīng)用于解決各種實際問題,并在人臉識別、推薦系統(tǒng)、語音識別、工業(yè)機(jī)器人等一系列領(lǐng)域取得了相當(dāng)顯著的成果。
近年來,許多學(xué)者開始將人工智能方法用于TCP 擁塞控制的領(lǐng)域,并取得了一定的成果,但尚無法達(dá)到替代傳統(tǒng)方法的程度。主要原因在于,基于AI 的擁塞控制方法在不同場景下仍然存在著一定的不足。例如,在基于強(qiáng)化學(xué)習(xí)的擁塞控制算法中,Aurora雖然取得了較好的吞吐量但犧牲了收斂性和公平性,而Orca為了解決收斂性和強(qiáng)化學(xué)習(xí)的可解釋性問題,不得不在吞吐量和時延性能上作出讓步。而對于目前主流的研究方案,即測量瓶頸鏈路帶寬和時延的擁塞控制(congestion control based on measuring Bottleneck Bandwidth and Round-trip propagation time,BBR)、面向性能的擁塞控制(Performance-oriented Congestion Control,PCC)、Copa等相對輕量級基于人工智能的擁塞控制方法而言,雖然它們具備一定的可解釋性,且在一定場景下能夠?qū)崿F(xiàn)較高的網(wǎng)絡(luò)性能,但普遍存在TCP 友好性的問題,同時在某些特定場景下性能表現(xiàn)會出現(xiàn)斷崖式下跌。
本文綜合已有研究方案,針對輕量級基于學(xué)習(xí)的擁塞控制算法在某些場景下性能會出現(xiàn)斷崖式下跌的問題,提出一個基于場景變化的傳輸控制協(xié)議擁塞控制切換方案。首先,在全場景下分析基于學(xué)習(xí)的擁塞控制算法的優(yōu)缺點,著重考察它們在不同場景、維度下的性能指標(biāo);然后,提出基于場景變化的傳輸控制協(xié)議擁塞控制切換方案;最后,在網(wǎng)絡(luò)仿真器3(Network Simulator 3,NS3)平臺上進(jìn)行仿真實驗以驗證其性能,并將實驗結(jié)果與已有方法進(jìn)行對比。
隨著傳統(tǒng)擁塞控制在吞吐量、時延、丟包率等指標(biāo)上的表現(xiàn)越來越不符合用戶的需求,以及近年來計算機(jī)算力的提升與人工智能的重新興起,許多研究人員開始將機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)等基于人工智能的方法應(yīng)用到擁塞控制研究當(dāng)中,亦取得了一定的成果。而這其中的主流是輕量級基于學(xué)習(xí)的擁塞控制,所謂“輕量級”,就是指這其中使用啟發(fā)式算法、效用函數(shù)、梯度下降等未涉及深度學(xué)習(xí)(包括深度強(qiáng)化學(xué)習(xí))的一類擁塞控制算法,這類算法訓(xùn)練時間短、成本低,因而稱其“輕”。以下簡要敘述使用該類方法的幾項研究工作。
1.1.1 PCC和PCC-Vivace
PCC 是一個直接由發(fā)送端觀測到的性能表現(xiàn)來決定下一時刻動作的算法。每個發(fā)送端只觀察其動作與性能表現(xiàn)的聯(lián)系,采用能帶來最佳性能的動作。
TCP 硬連接映射需要對網(wǎng)絡(luò)條件作出假設(shè),但現(xiàn)實網(wǎng)絡(luò)狀況往往比假設(shè)復(fù)雜得多,且一旦不滿足假設(shè),后續(xù)的動作對性能非常有害(例如窗口減半)。而PCC 使用實時數(shù)據(jù),無任何假設(shè),使用效用函數(shù)來描述“高吞吐量和低丟失率”。其收斂速度與TCP 相近,且速率方差更小。
下一時刻的發(fā)送速率由效用函數(shù)u
決定,u
是關(guān)于吞吐量T
和丟包率L
的函數(shù),如式(1)所示:PCC 的控制算法分為以下幾種狀態(tài):
+ε
)r
,另一個MI 嘗試(1-ε
)r
,r
為原始速率。之后速率調(diào)整回r
并等待結(jié)果。根據(jù)u
函數(shù)算出的結(jié)果,如果兩組的(1+ε
)r
都獲得較好的u
,則選擇之;(1+ε
)r
同理。如果兩組結(jié)果不同,則速率回到r
并重新進(jìn)入決策狀態(tài)并嘗試更大的ε
,ε
最小值為0.01,最大值為0.05。3)速率調(diào)整狀態(tài)。決策狀態(tài)之后得到的速率r
,PCC 會以越來越大的幅度來調(diào)整之。若效用函數(shù)增大,則采用下一時刻的速率,如式(2)所示:dir
表示±號。一旦效用函數(shù)變小,則采用r
并重新進(jìn)入決策狀態(tài)。PCC 相較于TCP 的優(yōu)點:同一個PCC 學(xué)習(xí)算法可以適應(yīng)不同的情況,但TCP 不行。從基于延遲變換到基于丟包率,TCP 需要例如active queue management等復(fù)雜機(jī)制,而PCC只需要修改一行代碼而已;PCC 部署時不需要路由器支持、無新協(xié)議、不需要接收端的調(diào)整,只修改發(fā)送端,其余與TCP一致。
PCC 存在的問題主要在于效用函數(shù)的選擇:是否存在效用函數(shù)收斂到納什均衡同時TCP 友好(TCP 友好性表示該算法能夠與傳統(tǒng)TCP 流友好共處、公平競爭)。本文中介紹的效用函數(shù)都不包含時延,那么包含時延的效用函數(shù)是否可被證明收斂并且與默認(rèn)效用函數(shù)表現(xiàn)一樣好?這些問題都有待解決。
針對PCC 存在的問題,該研究小組之后又發(fā)表了PCC的升級版PCC-Vivace,在新的效用函數(shù)中引入了時延:
PCC-Vivace 使用了修改后的同樣是基于梯度上升的速率調(diào)節(jié)算法,并證明了其收斂性,也在實驗中驗證了其TCP友好性。
1.1.2 BBR和Copa
與傳統(tǒng)擁塞控制算法顯著不同的是,BBR 算法不以數(shù)據(jù)包丟失或傳輸時延增加作為識別網(wǎng)絡(luò)擁塞的標(biāo)準(zhǔn),而是使用帶寬時延乘積(Bandwidth-Delay Product,BDP)作為識別指標(biāo),當(dāng)網(wǎng)絡(luò)中的數(shù)據(jù)包總量大于BDP 時,BBR 才認(rèn)為網(wǎng)絡(luò)出現(xiàn)了擁塞。因此,BBR 也被恰如其分地稱為基于擁塞的擁塞控制算法。
在網(wǎng)絡(luò)中可以觀察到這樣的現(xiàn)象:當(dāng)帶寬非常大時,網(wǎng)絡(luò)將被填滿而導(dǎo)致排隊,此時網(wǎng)絡(luò)延遲必定非常大;反之,當(dāng)網(wǎng)絡(luò)延遲非常小時,網(wǎng)絡(luò)中的數(shù)據(jù)包需要避免排隊直接轉(zhuǎn)發(fā),此時帶寬必定會非常小。因此可以得出結(jié)論:網(wǎng)絡(luò)中的流不可能同時獲得非常大的鏈路帶寬和非常小的網(wǎng)絡(luò)延遲。根據(jù)這一結(jié)論,BBR 算法對網(wǎng)絡(luò)容量進(jìn)行周期性的探測,對一段時間內(nèi)鏈路帶寬的極大值和網(wǎng)絡(luò)延遲的極小值進(jìn)行交替性的測量,再將它們的乘積作為擁塞窗口大小,從而就能用擁塞窗口來表征網(wǎng)絡(luò)容量,使擁塞的識別更加準(zhǔn)確。
由于BBR 算法特有的測量擁塞窗口的機(jī)制,它不會像傳統(tǒng)擁塞控制算法那樣無限地增加擁塞窗口,也就不會用盡交換機(jī)節(jié)點的緩存,從而避免了Bufferbloat(緩沖區(qū)溢出)現(xiàn)象的出現(xiàn),進(jìn)一步就可以讓傳輸時延顯著降低。
另一方面,BBR 算法使用通過主動探測網(wǎng)絡(luò)容量來調(diào)節(jié)擁塞窗口的機(jī)制,此種自主調(diào)節(jié)的機(jī)制使BBR 算法可以自行控制流的發(fā)送速率。與之相反的是,傳統(tǒng)擁塞控制算法只完成了將擁塞窗口計算出來的工作,而將流的發(fā)送速率完全交由TCP 決定,造成的后果便是在當(dāng)速率接近瓶頸鏈路帶寬時,容易因發(fā)送速率的陡增而使得數(shù)據(jù)包排隊或數(shù)據(jù)包丟失的現(xiàn)象產(chǎn)生。
BBR 算法的缺陷在于:當(dāng)交換機(jī)節(jié)點的緩存較大時,BBR 的吞吐量表現(xiàn)可能會遜色于Cubic等相對激進(jìn)的擁塞控制算法。原因是BBR 算法不會主動去占據(jù)節(jié)點的緩存,而一旦Cubic 流基于其激進(jìn)的速率增加策略,長時間占據(jù)隊列緩存,則很容易導(dǎo)致BBR 算法在鄰近的多個周期內(nèi)所測得的網(wǎng)絡(luò)延遲的極小值增大,進(jìn)而導(dǎo)致BBR 流的吞吐量減小。
Copa 算法的整體思路與BBR 類似,都是以端系統(tǒng)采集得到的RTT 信息推測網(wǎng)絡(luò)狀態(tài)從而進(jìn)行速率調(diào)整。相較于BBR 其優(yōu)勢在于對鏈路中隊列長度的主動且細(xì)粒度的控制,而非基于BDP 的主動排空。
Copa 的核心思想在于,當(dāng)一個流在鏈路中產(chǎn)生排隊延遲時,給定一個當(dāng)前擁塞狀態(tài)下的目標(biāo)速率λ
,并控制當(dāng)前速率在該目標(biāo)上下的一定范圍內(nèi)進(jìn)行波動。而為了使流在競爭時能同時滿足高吞吐量和低延遲,文獻(xiàn)[7]對第i
條流給出了目標(biāo)函數(shù)如式(4)所示:1.1.3 Remy
Winstein 等所探究的問題是:TCP 擁塞控制本身是一個動態(tài)的過程,每一步的選擇都可能造成后面所有反饋的不同,如何能判定一個擁塞控制是“表現(xiàn)得最好”的?給出的解決辦法是:既然人看不出好不好,那就用機(jī)器預(yù)先算出給定網(wǎng)絡(luò)里每個決策可能造成的所有后果,選最終評分最高的,將其一路過來的所有決策用來生成一個擁塞控制算法,那肯定就是“表現(xiàn)得最好的”。
因此,Winstein 等設(shè)計了Remy 算法來算出不同參數(shù)的擁塞控制策略產(chǎn)生的結(jié)果,細(xì)化較優(yōu)結(jié)果的參數(shù)并進(jìn)行優(yōu)化,經(jīng)過幾輪迭代后,用生成最優(yōu)結(jié)果的所有決策生成最優(yōu)擁塞控制(Congestion Control,CC),就是RemyCC。
Remy 的輸入包括:網(wǎng)絡(luò)的參數(shù),即瓶頸鏈路的速度、網(wǎng)絡(luò)路徑傳輸時延和多路復(fù)用的程度;發(fā)送端的流量發(fā)送模型,Remy 建模時把流量變化過程看作很多對獨立的發(fā)送-接收端鏈路隨機(jī)開/關(guān)的過程,每條鏈路開的持續(xù)時間遵循特定的分布;目標(biāo)函數(shù),算法的總得分可以通過計算每條流的分?jǐn)?shù)之和得到,鏈路中不同的數(shù)據(jù)流獲得的分?jǐn)?shù)為:
x
是該流的吞吐量,α
表示公平性的重要程度。在Remy 算法中,公平性被定義為:y
表示平均RTT;U
(y
)是RTT 的效用函數(shù);系數(shù)δ
是平衡系數(shù),作用是改變Remy 算法在吞吐量和時延上的側(cè)重點。文獻(xiàn)[7]把發(fā)送端觀測到的指標(biāo)用三個參數(shù)來表示,統(tǒng)稱memory:ack_ewma 表示確認(rèn)字符(ACKnowledge character,ACK)的到達(dá)間隔的指數(shù)加權(quán)移動平均值;send_ewma 表示ACK 的發(fā)送間隔的指數(shù)加權(quán)移動平均值;rtt_ratio 表示最新RTT 除以最小RTT。
把發(fā)送端的action(控制擁塞窗口大?。┮灿萌齻€參數(shù)來表示:m
≥0 表示擁塞窗口的倍數(shù);b
表示擁塞窗口的增量;r
>0 表示連續(xù)發(fā)送的最小間隔時間。把一條memory 映射到一條action 的過程稱為一條rule。一個完整的擁塞控制策略由很多條rule 構(gòu)成,即一張rule table。Remy 的自動搜索過程就是用貪心算法建立和優(yōu)化這張rule table 的過程。
以下簡要描述Remy 算法的主要過程:首先,通過迭代修正action,找到最合適的將memory 映射到action 的方法,即最合適的rule;其次,將常用的rule 和不常用的rule 進(jìn)行區(qū)分;在合理的統(tǒng)計與分類之后,可以生成一個完整的rule table,即一張統(tǒng)計了所有映射方式的表格,表格中每個rule 的action 都是基于當(dāng)前網(wǎng)絡(luò)狀態(tài),對擁塞窗口大小進(jìn)行最優(yōu)方向上的調(diào)整。同時,在最常用的rule 附近,劃分粒度非常細(xì),而較不常用的rule 其劃分粒度則較粗糙。
Remy 算法存在的問題:用Remy 搜索找到的最佳RemyCC,當(dāng)把它用于和生成RemyCC 時使用的網(wǎng)絡(luò)相似的網(wǎng)絡(luò)上時,效果非常不錯;一旦用于不同類型網(wǎng)絡(luò)時,效果就不太理想了。這是因為RemyCC 只能預(yù)測它所見過的網(wǎng)絡(luò)的最優(yōu)決策,一旦遇到?jīng)]見過的網(wǎng)絡(luò),RemyCC 仍使用本身的預(yù)見方法來應(yīng)對,就會顯得不夠靈活。
隨著強(qiáng)化學(xué)習(xí)(Reinforcement Learning)在游戲博弈(圍棋、星際爭霸)、機(jī)器人控制等領(lǐng)域取得卓越成就,有學(xué)者開始將強(qiáng)化學(xué)習(xí)用于網(wǎng)絡(luò)擁塞控制的研究。近年來,深度強(qiáng)化學(xué) 習(xí)(Deep Reinforcement Learning),包 含DQN(Deep Q Network)、DDPG(Deep Deterministic Policy Gradient)等算法的出現(xiàn)也為強(qiáng)化學(xué)習(xí)用于擁塞控制提供了強(qiáng)有力的理論武器。
強(qiáng)化學(xué)習(xí)用于擁塞控制方面有其先天優(yōu)勢,首先深度強(qiáng)化學(xué)習(xí)不必依賴于模型,這就增強(qiáng)了其在不可預(yù)測行為的復(fù)雜網(wǎng)絡(luò)中的適用性;其次它可以處理復(fù)雜的狀態(tài)空間,這與實際網(wǎng)絡(luò)的情況十分吻合。
但是,使用強(qiáng)化學(xué)習(xí)算法也有其缺點,普遍的共性就是訓(xùn)練時間太長,這會導(dǎo)致?lián)砣刂频拈_銷過大,以至于無法被廣泛應(yīng)用于網(wǎng)絡(luò)中。此外,在使用深度強(qiáng)化學(xué)習(xí)這類復(fù)雜算法進(jìn)行擁塞控制時,其收斂性較難保證。
以下簡要介紹幾項基于強(qiáng)化學(xué)習(xí)進(jìn)行網(wǎng)絡(luò)擁塞控制的工作。
1.2.1 Aurora
Aurora是最早使用強(qiáng)化學(xué)習(xí)方法進(jìn)行網(wǎng)絡(luò)擁塞控制的研究之一,盡管存在著一些不足,其理念仍是具有開創(chuàng)性的。
文獻(xiàn)[3]根據(jù)擁塞控制的特點設(shè)計了強(qiáng)化學(xué)習(xí)智能體的動作與狀態(tài)。由于發(fā)送端是通過調(diào)整發(fā)送速率來適應(yīng)網(wǎng)絡(luò)擁塞狀況,因此智能體的動作也就是發(fā)送端的發(fā)送速率。狀態(tài)空間則由三維向量組成,每個向量v
包含延遲梯度、延遲比率、發(fā)送比率三個維度。其中,延遲梯度指的是網(wǎng)絡(luò)延遲關(guān)于時間的導(dǎo)數(shù),延遲比率表示當(dāng)前MI 的平均延遲與此前MI 中觀測到的最小平均延遲之比,發(fā)送比率表示發(fā)送端發(fā)送的數(shù)據(jù)包數(shù)量與接收端接收到的數(shù)據(jù)包數(shù)量之比。同時,智能體在決定下一時刻的動作時需要根據(jù)過去一段時間的向量來觀測網(wǎng)絡(luò)變化的趨勢,因此t
時刻的狀態(tài)空間s
為:k
是常數(shù),代表過去這段時間的長度;d
表示選擇從發(fā)送速率到收集到結(jié)果的這一小段延時。在k
值的選擇上,文獻(xiàn)[3]以MI 為單位進(jìn)行實驗,結(jié)果表明,除了在只有1 個MI 時算法無法得出理想的獎賞值,其余情況即當(dāng)采用2 個及以上MI 的訓(xùn)練時長時,算法都能達(dá)到相似的理想獎賞值。Aurora 的獎賞函數(shù)設(shè)計如下:
π
得出當(dāng)前時刻的動作a
(發(fā)送速率的增加或減少),從而計算出當(dāng)前時刻的發(fā)送速率x
:α
是常數(shù),用于減小速率的波動。Aurora 存在的問題主要有:1)公平性差,在與TCP 流進(jìn)行競爭時,會急劇限制TCP 流的吞吐量,導(dǎo)致算法的TCP 友好性不佳,主要原因在于Aurora 在訓(xùn)練時會主動學(xué)習(xí)出偶爾丟包的能力,以讓TCP 吞吐量下降從而釋放鏈路帶寬;2)算法的收斂性較差,即收斂時間過長。
1.2.2 Orca
基于學(xué)習(xí)的擁塞控制算法適應(yīng)復(fù)雜網(wǎng)絡(luò)環(huán)境的能力更強(qiáng),因為不需要將環(huán)境與動作進(jìn)行硬編碼。但文獻(xiàn)[4]認(rèn)為,單純的基于學(xué)習(xí)的擁塞控制也有以下問題:1)在未知的網(wǎng)絡(luò)條件下有過度(Aurora、PCC-Vivace)或過少(Indigo、Remy)利用帶寬的問題;2)收斂到錯誤的值(Indigo、Remy)或根本不收斂(Aurora);3)開銷即中央處理器(Central Processing Unit,CPU)占用率非常高。
因此,文獻(xiàn)[4]設(shè)計了一個實用的擁塞控制算法框架Orca,將傳統(tǒng)擁塞控制的設(shè)計與深度強(qiáng)化學(xué)習(xí)技術(shù)結(jié)合起來。使用強(qiáng)化學(xué)習(xí)的原因:網(wǎng)絡(luò)擁塞控制作為一個順序的決策制定過程,與強(qiáng)化學(xué)習(xí)的特性非常吻合。
具體地,Orca 在底層使用傳統(tǒng)TCP 調(diào)節(jié)擁塞窗口的邏輯(文獻(xiàn)[4]中選用Cubic),上層的強(qiáng)化學(xué)習(xí)智能體通過監(jiān)控獲取網(wǎng)絡(luò)狀態(tài)和底層傳來的擁塞窗口變化,計算出新的擁塞窗口。這樣做的好處有:1)能夠持續(xù)探測帶寬并收斂到正確的值;2)因為底層使用傳統(tǒng)TCP,其動作調(diào)節(jié)更具可預(yù)測性(相對于深度學(xué)習(xí)的不可解釋性而言);3)能夠以更小的開銷,即更低的CPU 占用率來達(dá)到既定目標(biāo);4)相較于其他單純基于強(qiáng)化學(xué)習(xí)的擁塞控制算法,其訓(xùn)練速度更快。
Orca 的獎賞函數(shù)設(shè)計來源于Giessler 等提出的Power指標(biāo),Gail 等證明,當(dāng)Power=Throughput/Delay
取得最大值時,網(wǎng)絡(luò)擁塞狀況達(dá)到最優(yōu),因而Power
也被廣泛應(yīng)用于衡量網(wǎng)絡(luò)擁塞的指標(biāo),Orca 根據(jù)這一指標(biāo)得出式(11)~(13)所示的獎賞:ζ
是吞吐量和丟包率的平衡系數(shù),代表二者對總獎賞的影響程度。同時,由于TCP 調(diào)節(jié)擁塞窗口具有連續(xù)的動作空間,Orca 為了減少強(qiáng)化學(xué)習(xí)中智能體的動作空間,設(shè)計新的cwnd
來代替底層TCP 的擁塞窗口cwnd
,并通過式(12)~(14),使得算法可以通過調(diào)節(jié)α
來調(diào)節(jié)cwnd
:π
在當(dāng)前狀態(tài)s
下給出動作a
,觀測到獎賞r
和新狀態(tài)s′
,并將這一經(jīng)驗(s
,a
,r
,s′
)存儲到Replay Memory 中;Learner 負(fù)責(zé)更新神經(jīng)網(wǎng)絡(luò)模型,每一個迭代中它從Replay Memory 中隨機(jī)抽取一組經(jīng)驗樣本,計算其梯度并更新TD3 算法中的參數(shù)。Actor 和Learner 的工作在這里是異步進(jìn)行的,如此則Learner 對模型的更新不會受阻于Actor(相對于之前的Actor-Critic 架構(gòu)而言)。實際訓(xùn)練中,將多個Actor 放置于不同的物理服務(wù)器中以觀測不同的環(huán)境,同時將它們連接到一個中心化的Learner,并將Replay Memory 與Learner 放置于同一臺物理機(jī)上。本章主要對現(xiàn)有較流行的幾種輕量級基于學(xué)習(xí)的擁塞控制方案在各種場景下的性能進(jìn)行了測試與結(jié)果對比。對照傳統(tǒng)擁塞控制方法,分析出各場景下性能較優(yōu)的擁塞控制方案。
2.1.1 實驗設(shè)置
本文實驗在開源仿真模擬器NS3 平臺上進(jìn)行,在多種帶寬、延遲、隨機(jī)丟包率的場景下,比較吞吐量、時延、公平性、TCP 友好性等性能指標(biāo)。實驗在DELL ECM PowerEdge R840服務(wù)器上運(yùn)行,其CPU 為Intel Xeon Platinum 8168。
實驗拓?fù)錇槎说蕉送負(fù)洌谥付ǖ逆溌穾捄途W(wǎng)絡(luò)延遲下,由發(fā)送端向接收端發(fā)送一到多條流。默認(rèn)的數(shù)據(jù)包大小為100 b。實驗運(yùn)行時長為300 s。
2.1.2 實驗參數(shù)
實驗中使用四種已知的擁塞控制方法,包括三種輕量級基于學(xué)習(xí)的擁塞控制(BBR、Copa、PCC-Vivace)和作為對比的傳統(tǒng)擁塞控制方法Cubic。
實驗中使用的網(wǎng)絡(luò)帶寬有1 Mb/s、5 Mb/s、20 Mb/s、100 Mb/s、500 Mb/s;網(wǎng)絡(luò)延遲的設(shè)定有1 ms、10 ms、100 ms、500 ms;實驗中使用四種不同的隨機(jī)丟包率設(shè)定:0%、0.1%、0.5%、1%。
以下各以一種場景為例,展示考察指標(biāo)分別為吞吐量、時延、公平性、TCP 友好性時的性能測試結(jié)果,并進(jìn)行分析。
2.2.1 平均吞吐量與時延
表1 展示了鏈路帶寬仍為5 Mb/s,網(wǎng)絡(luò)延遲100 ms 時各擁塞控制算法的平均吞吐量與平均時延。在該場景下,BBR的平均吞吐量最高,達(dá)到了4.87 Mb/s,但相較于另外三者并無明顯優(yōu)勢,四者的平均吞吐值非常接近。而在時延方面,時延最高者是Cubic,其時延顯著高出其他三者,比時延最低的Copa 算法高出了接近30%,BBR 的時延僅次于Cubic,PCC-Vivace 的時延達(dá)到了113 ms;Copa 的平均時延仍最低,約為106 ms。
表1 網(wǎng)絡(luò)帶寬為5 Mb/s 和網(wǎng)絡(luò)延遲為100 ms時的平均吞吐量與平均時延Tab 1 Average throughput and average delay with network bandwidth of 5 Mb/s and network delay of 100 ms
從實驗結(jié)果來看,BBR 在絕大多數(shù)場景下的平均吞吐量都是領(lǐng)先的,原因在于BBR 的帶寬探測機(jī)制,可以充分利用鏈路中的富余帶寬;隨著隨機(jī)丟包率的增加,PCC-Vivace 的吞吐量不斷下降,原因是PCC-Vivace 在PCC 原始版本的基礎(chǔ)上引入了RTT 梯度來表征時延,但對丟包率的系數(shù)設(shè)置未作改動,因此在隨機(jī)丟包增加的情況下,為了達(dá)到低時延,勢必要犧牲吞吐量;Copa 的平均吞吐量在隨機(jī)丟包0%、0.1%、0.5%時幾乎都是最低的;Cubic 的吞吐量較高,總體而言僅次于BBR,但在隨機(jī)丟包率增加之后,Cubic 的吞吐量急劇下降,原因是Cubic 是基于丟包的擁塞控制,隨機(jī)丟包會顯著影響其對網(wǎng)絡(luò)狀況的判斷從而導(dǎo)致性能的下降。
時延方面,BBR 在幾乎所有場景下時延都是最高的;PCC-Vivace 在絕大多數(shù)時候都是時延最低的,可見效用函數(shù)中RTT 梯度的引入是卓有成效的;Cubic 的時延在大多數(shù)情況下都較高,反而是在隨機(jī)丟包率達(dá)到1%時,時延明顯下降,可能的原因是Cubic 是基于丟包的擁塞控制方法,丟包率對其時延的影響遠(yuǎn)大于對其他方案的影響;Copa 的時延相對較低,但在均值附近震蕩的幅度大。
2.2.2 單一方法多條流的公平性
為了測試同一方案在多條流共存時分享鏈路帶寬的公平性,實驗中在0 s、40 s、80 s 時分別發(fā)送一條流,考察這三條流最終是否能夠均分鏈路帶寬,以及均分帶寬并達(dá)到收斂的時間長短。
以下以鏈路帶寬為3 Mb/s,網(wǎng)絡(luò)延遲為100 ms,隨機(jī)丟包率0.1%為例,簡要展示各方案公平性的測試結(jié)果。
圖1 展示了四種擁塞控制算法的公平性。從圖1 中可以看到:BBR(圖1(a))的三條流帶寬差距較大,無法實現(xiàn)公平性;Copa(圖1(c))則實現(xiàn)了公平性;PCC-Vivace(圖1(b))在大部分時刻仍能保持公平,個別時段帶寬的極差能達(dá)到0.8 Mb/s;Cubic(圖1(d))三條流的帶寬能夠收斂到均值,但帶寬的波動幅度比Copa 還要高,在均值上下0.25 Mb/s波動。
圖1 隨機(jī)丟包率0.1%時各方案的公平性Fig.1 Fairness of each scheme with random packet loss rate of 0.1%
2.2.3 TCP友好性
TCP 友好性,即新的擁塞控制方法在與現(xiàn)有的TCP 擁塞控制方案共存時的性能表現(xiàn),著重關(guān)注其是否擠占TCP 流的帶寬,能否與TCP 友好共存。因此,本文通過測試不同擁塞控制方法在與Cubic 競爭時的吞吐量表現(xiàn)來表征其TCP 友好性。
以下以網(wǎng)絡(luò)延遲1 ms,隨機(jī)丟包率0%為例,擁塞控制算法以BBR 為例,簡要展示其TCP 友好性隨帶寬變化的結(jié)果。
如圖2 所示,在隨機(jī)丟包為0%時,在網(wǎng)絡(luò)延遲為1 ms 的狀況下,在帶寬為1 Mb/s 時,BBR 搶占Cubic 帶寬的情況非常嚴(yán)重,二者的平均帶寬之比約為3∶1,此時BBR 的TCP 友好性較差。而在帶寬為5 Mb/s、20 Mb/s、100 Mb/s 時,BBR 與Cubic 能夠在鏈路中友好共存,二者的平均吞吐量之比小于等于1∶1,也就表明BBR 的TCP 友好性較優(yōu)。
圖2 隨機(jī)丟包率0%時BBR的TCP友好性Fig.2 TCP friendliness of BBR with random packet loss rate of 0%
表2~5 簡要總結(jié)了各類場景下,根據(jù)所考察的性能指標(biāo)的不同,以三種輕量級基于學(xué)習(xí)的擁塞控制算法(BBR、PCCVivace、Copa)及作為對比的Cubic 為備選項,應(yīng)選取何種擁塞控制算法,方能在指定場景下達(dá)到網(wǎng)絡(luò)性能的相對最優(yōu)。
表2 展示了當(dāng)考察的性能指標(biāo)為吞吐量時,各場景下所應(yīng)采用的最優(yōu)擁塞控制算法。
表2 考察吞吐量時的最優(yōu)擁塞控制算法Tab 2 Optimal congestion control algorithm when focusing on throughput
表3 展示了各場景下所應(yīng)采用的能使時延最低的擁塞控制算法。其中隨機(jī)丟包率為0%時列舉了所有可能的鏈路帶寬和網(wǎng)絡(luò)延遲的參數(shù),而隨機(jī)丟包率為0.1%、0.5%、1%時則以網(wǎng)絡(luò)延遲10 ms 為代表,列舉了所有可能的鏈路帶寬參數(shù)。
表3 考察時延時的最優(yōu)擁塞控制算法Tab 3 Optimal congestion control algorithm when focusing on delay
表4 展示了當(dāng)考察的性能為公平性,各場景下所應(yīng)采用的擁塞控制算法。其中,網(wǎng)絡(luò)延遲以100 ms 為代表,列舉了所有的鏈路帶寬和隨機(jī)丟包率的可能參數(shù),其他網(wǎng)絡(luò)延遲的情況下,最優(yōu)擁塞控制算法的選擇與100 ms 幾乎相同。
表4 考察公平性時的最優(yōu)擁塞控制算法Tab 4 Optimal congestion control algorithm when focusing on fairness
表5 展示了各場景下所應(yīng)采用的能使TCP 友好性最優(yōu)的擁塞控制算法。其中網(wǎng)絡(luò)延遲以1 ms 為代表,列舉了所有鏈路帶寬和隨機(jī)丟包率的可能參數(shù)。
表5 考察TCP友好性時的最優(yōu)擁塞控制算法Tab 5 Optimal congestion control algorithm when focusing on TCP friendliness
實際網(wǎng)絡(luò)環(huán)境中,不同應(yīng)用場景的環(huán)境參數(shù)差異非常大。例如,在廣域網(wǎng)中,網(wǎng)絡(luò)帶寬在100 Mb/s 量級,延遲在40 ms 左右;衛(wèi)星網(wǎng)絡(luò)的帶寬則只有10 Mb/s 以內(nèi),延遲則達(dá)到了500 ms;而數(shù)據(jù)中心的帶寬通常達(dá)到了100 Gb/s 以上,而延遲則只有1 ms 級別。同時,即使在同一應(yīng)用下,網(wǎng)絡(luò)環(huán)境參數(shù)也可能發(fā)生顯著的變化。那么,在網(wǎng)絡(luò)環(huán)境不斷變化時,如果仍只使用單一的擁塞控制方法,勢必網(wǎng)絡(luò)的性能,例如吞吐量、時延等,會受到極大的影響,因此,必須設(shè)計一個能夠?qū)W(wǎng)絡(luò)環(huán)境變化進(jìn)行適應(yīng)的擁塞控制方案,針對特定的性能指標(biāo),能夠比原來使用單一擁塞控制方法時有明顯的優(yōu)勢。
基于此前章節(jié)的分析,各種擁塞控制算法在不同場景下各有優(yōu)劣,尤其在極端條件下這樣的優(yōu)缺點體現(xiàn)得更為顯著,因此本文設(shè)計一個根據(jù)場景來切換擁塞控制方法的方案。具體地,本文通過對場景指標(biāo)(帶寬、網(wǎng)絡(luò)延遲、隨機(jī)丟包率)的識別,選擇當(dāng)前場景下表現(xiàn)較好的擁塞控制方法,而在網(wǎng)絡(luò)環(huán)境發(fā)生顯著變化時,切換到其他備選的擁塞控制方法,以期實現(xiàn)總體性能的優(yōu)化;并且,方案還應(yīng)考慮與鏈路中的其他流尤其是傳統(tǒng)TCP 流友好的共存,根據(jù)這一指標(biāo)對方案進(jìn)行相應(yīng)的調(diào)整,在兼顧TCP 友好性的情況下實現(xiàn)吞吐量最大化、時延最小化。
3.2.1 方案框架
在實際網(wǎng)絡(luò)環(huán)境中,各項環(huán)境指標(biāo)是不斷變化的,并且各項指標(biāo)的變化范圍是連續(xù)值而非離散值。然而,不能將無數(shù)個連續(xù)的參數(shù)值視為無數(shù)個場景,因此,必須要對連續(xù)的參數(shù)值進(jìn)行一定的離散化,當(dāng)環(huán)境參數(shù)在某個固定的范圍內(nèi)波動時,將其視為同一個場景,而一旦波動超出這個指定的范圍,則將其識別為另一個場景,并由此觸發(fā)擁塞控制方案的切換。
實踐中,本文在此前的100 多種實驗場景的基礎(chǔ)上,為每一個場景的鏈路帶寬和網(wǎng)絡(luò)延遲設(shè)定一個連續(xù)的波動范圍,當(dāng)實際網(wǎng)絡(luò)的帶寬與延遲落在范圍內(nèi)時,將其識別為特定的場景,而當(dāng)系統(tǒng)監(jiān)測到實時的帶寬或延遲超出了指定范圍時,根據(jù)其所屬的新的范圍,識別得到下一個場景,并觸發(fā)擁塞控制方法的切換。
對于實時的帶寬和延遲值所應(yīng)落在的范圍,以帶寬為例,基于前述實驗中各帶寬值正好分別間隔約5 倍,考慮將帶寬值取以5 為底的對數(shù),當(dāng)實時帶寬落在某兩個前述實驗帶寬值的范圍內(nèi)時,若其超出前一帶寬值在一定范圍內(nèi),則判定為前一帶寬值所對應(yīng)的場景,否則判定為后一帶寬值所對應(yīng)的場景。數(shù)學(xué)表達(dá)式如下:將實時帶寬設(shè)為B
,前述實驗的離散帶寬值為B
,B
,…,B
,而B
實際落在了B
與B
之間,即則令
否則有
C
是常數(shù),表示變化的幅度。網(wǎng)絡(luò)延遲的處理方法與帶寬相同,但需要將式(14)中以5 為底的對數(shù)改為以10 為底的對數(shù)。擁塞控制決策方式如算法1 所示。算法1 擁塞控制算法決策流程。
輸入 實時鏈路帶寬B
,實時網(wǎng)絡(luò)延遲D
,實時隨機(jī)丟包率L
,閾值C
,帶寬檔位數(shù)n
。輸出 決策后的擁塞控制算法。
C
和決策檔位數(shù)n
輸入擁塞控制決策模塊。擁塞控制決策模塊根據(jù)算法1 求出下一時刻的擁塞控制算法,傳給流產(chǎn)生模塊。流產(chǎn)生模塊根據(jù)新的擁塞控制算法產(chǎn)生流,并將吞吐量和時延實時回報給系統(tǒng)。圖3 方案架構(gòu)Fig.3 Scheme architecture
3.2.2 實驗設(shè)置與結(jié)果分析
實驗總時長為500 s。設(shè)置初始的鏈路帶寬和網(wǎng)絡(luò)延遲,并設(shè)置帶寬的變化范圍在1 Mb/s~100 Mb/s,延遲的變化范圍為1 ms~500 ms,隨機(jī)丟包率的變化范圍為0%~1%。實驗中設(shè)置對照組與實驗組,對照組一直使用初始鏈路帶寬和網(wǎng)絡(luò)延遲下的最優(yōu)擁塞控制方法(以下稱為原方案),實驗組則根據(jù)系統(tǒng)實時監(jiān)測到的當(dāng)前的鏈路帶寬與網(wǎng)絡(luò)延遲,確定其所落在的范圍來決定所應(yīng)切換的擁塞控制算法。
具體地,本文進(jìn)行3 組實驗,實驗時長均為500 s,每組實驗除開始和結(jié)束的時刻外,隨機(jī)生成4 個時刻,當(dāng)實驗進(jìn)行到這些時刻時,網(wǎng)絡(luò)環(huán)境參數(shù)即帶寬、延遲和丟包率發(fā)生隨機(jī)的改變,模擬實際網(wǎng)絡(luò)環(huán)境的變化。3 組實驗起始的鏈路帶寬都為5 Mb/s,網(wǎng)絡(luò)延遲都為10 ms,隨機(jī)丟包率都為0%。在以吞吐量為考察指標(biāo)時,對照組全程使用Copa 作為擁塞控制算法,而實驗組初始狀態(tài)使用Copa,其后根據(jù)網(wǎng)絡(luò)環(huán)境的變化自行切換擁塞控制算法。若以時延為考察指標(biāo),則對照組應(yīng)全程使用PCC-Vivace,實驗組同理,初始狀態(tài)使用PCC-Vivace,之后根據(jù)環(huán)境進(jìn)行切換。實驗中取式(14)中的常數(shù)C
為0.5。實際實驗過程中,本文對于3 組實驗分別都在0 s~500 s隨機(jī)生成4 個時刻t
、t
、t
、t
,在這些時刻,網(wǎng)絡(luò)環(huán)境即鏈路帶寬和網(wǎng)絡(luò)延遲發(fā)生隨機(jī)變化,變化的情況見表6。表6 三組實驗隨機(jī)產(chǎn)生的參數(shù)Tab 6 Randomly generated parameters in 3 sets of experiments
由表6 和算法1,當(dāng)考察指標(biāo)分別為吞吐量和時延時,得到在4 個隨機(jī)時刻切換到的擁塞控制算法,如表7。
表7 四個隨機(jī)時刻下3組實驗根據(jù)環(huán)境參數(shù)求得的擁塞控制算法Tab 7 Obtained congestion control algorithm based on environmental parameters at 4 random moments in 3 sets of experiments
根據(jù)以上隨機(jī)生成的環(huán)境參數(shù)和求得應(yīng)切換的擁塞控制算法,運(yùn)行實驗后得到的結(jié)果如下。
圖4(a)是第1 組實驗以吞吐量為性能指標(biāo)的實驗結(jié)果。在8 s、243 s、364 s、445 s 時網(wǎng)絡(luò)發(fā)生變化。從實驗結(jié)果可以得到,8 s~243 s 這一過程中由于擁塞控制算法沒有改變,因此吞吐量沒有增加。而在243 s~364 s 時,擁塞控制算法切換為BBR,此過程中本文方案的平均吞吐為44.06 Mb/s,比原方案的43.75 Mb/s 高出了0.7%。此后,在364 s~445 s 這個過程中,本文方案的平均吞吐量達(dá)到了6.793 Mb/s,高出原方案的6.681 Mb/s 達(dá)16.8%。而在445 s 到實驗結(jié)束時,本文方案同樣取得了更高的平均吞吐量,為4.88 Mb/s,而原方案為4.762 Mb/s。
時延如圖4(b)所示,從243 s~364 s 這個過程中,本文方案的平均時延為17.76 ms,比原方案20.73 ms 顯著降低了14.3%。此外,在445 s~500 s 這個過程中,本文方案的平均時延也比原方案低了2.01 ms,降幅達(dá)4.2%。
圖4 第1組實驗中,原方案與本文方案的平均吞吐量和平均時延比較Fig.4 Comparison of average throughput and average delay between original and proposed schemes in experiment 1
圖5(a)是第2 組實驗以吞吐量為性能指標(biāo)的實驗結(jié)果。從實驗結(jié)果中可以看到,基于場景切換的擁塞控制方案在0 s~178 s 沒有顯著的優(yōu)勢,但從第178 秒開始取得比原方案更高的吞吐量,尤其是從285 s~438 s 時,本文方案328.9 Mb/s的平均吞吐量比原方案的247.8 Mb/s 高出了32.7%。
圖5(b)是第2 組實驗以時延為性能指標(biāo)的實驗結(jié)果??梢杂^察到,在178 s~285 s 時,本文方案比原方案的平均時延略增加了10%。但在438 s~500 s 時,基于場景切換的擁塞控制方案的時延有顯著降低,從原來的78.3 ms 降為21.18 ms,降幅多達(dá)73%。
圖5 第2組實驗中,原方案與本文方案的平均吞吐量和平均時延比較Fig.5 Comparison of average throughput and average delay between original and proposed schemes in experiment 2
如圖6(a)所示,在139 s~368 s 這個過程中,本文方案切換到的BBR 取得了167.3 Mb/s 的平均吞吐量,比原方案的161.7 Mb/s 高出了3.5%。但從第447 秒到實驗結(jié)束的過程中,本文方案使用的PCC-Vivace 的平均吞吐量比原方案略低了8 Mb/s。
如圖6(b)所示,基于場景變化的本文方案50 s~447 s 的時延都有顯著降低,其中50 s~139 s 這一過程降低的幅度最大,從61.48 ms 降為44.55 ms,降幅達(dá)到了27.5%。在139 s~368 s 以及368 s~447 s 的時延降低量分別有10.79 ms 和3.62 ms,降幅分別為18.7%和11.3%。
圖6 第3組實驗中,原方案與本文方案的平均吞吐量和平均時延比較Fig.6 Comparison of average throughput and average delay between original and proposed schemes in experiment 3
從以上實驗中可以得出清晰的結(jié)論:在網(wǎng)絡(luò)環(huán)境隨機(jī)變化的情況下,相較于使用單一擁塞控制方案,基于場景變化的擁塞控制切換方案在吞吐量和時延上都能取得明顯的性能優(yōu)勢,總吞吐量增幅達(dá)到5%以上,總時延降幅達(dá)到10%以上。
本文的工作主要分為兩部分:第一部分,對網(wǎng)絡(luò)環(huán)境參數(shù)如鏈路帶寬、網(wǎng)絡(luò)延遲和隨機(jī)丟包率等通過枚舉組合出多種網(wǎng)絡(luò)場景,在這些場景下進(jìn)行大量的仿真實驗,得到已有的輕量級基于學(xué)習(xí)的擁塞控制方案在各場景下的性能表現(xiàn),性能指標(biāo)包括方案的吞吐量與時延,同時也考慮方案的公平性與TCP 友好性,并對以上性能表現(xiàn)進(jìn)行比較與總結(jié);第二部分在第一部分的基礎(chǔ)上,提出了一個基于場景變化的擁塞控制切換方案,從固定切換周期單項環(huán)境參數(shù)的變化、多項環(huán)境參數(shù)的變化,到根據(jù)網(wǎng)絡(luò)環(huán)境參數(shù)變化的幅度觸發(fā)場景的變化,由淺入深地闡述方案的設(shè)計思路與實現(xiàn)邏輯,目的是為了逐步模擬實際網(wǎng)絡(luò)環(huán)境的變化情況。系統(tǒng)在識別到場景的變化之后切換至更優(yōu)的擁塞控制算法,從而取得更佳的性能表現(xiàn)。利用仿真實驗對方案的思路進(jìn)行驗證。實驗結(jié)果表明,基于場景變化的擁塞控制切換方案在網(wǎng)絡(luò)環(huán)境不斷變化的情況下,能夠比原來使用單一的擁塞控制算法在吞吐量和時延上都取得顯著的優(yōu)勢,同時兼顧TCP 友好性。
未來的研究勢必要提高對場景識別的精細(xì)程度,當(dāng)前的場景識別相對粗糙,雖然實驗中針對每種擁塞控制方案列舉的場景超過了100 種,但仍然是許多離散值,需要對實際網(wǎng)絡(luò)的場景進(jìn)行近似之后方能采用本文提出的擁塞控制切換方案。而實際網(wǎng)絡(luò)環(huán)境的場景指標(biāo)都是連續(xù)值,其多樣化程度必然超出了實驗所列舉的范圍,因而必須要提高場景識別的精細(xì)程度,使其能夠更真實地反映實際網(wǎng)絡(luò)狀況。特別地,場景與擁塞控制方案之間的映射關(guān)系也是值得重新思考的。同時,隨著強(qiáng)化學(xué)習(xí)技術(shù)的不斷發(fā)展,當(dāng)其訓(xùn)練的時間成本與應(yīng)用上的開銷下降到可接受范圍內(nèi)時,必然要將強(qiáng)化學(xué)習(xí)的擁塞控制方案加入到備選方案中,屆時切換方案的成本和難度也會相應(yīng)增加,而這也是需要努力的方向之一。