IEEE/ACM Transactions on networking,2013
簡介
應(yīng)用層與傳輸層解決方案的區(qū)別:應(yīng)用層級的解決方案不具有通用性劈彪,只適用于同一種應(yīng)用奠衔,例如PICC抄谐。而傳輸層級的解決方案可以屏蔽不同應(yīng)用間的區(qū)別宁赤,更具有通用性。
實驗中每個發(fā)端發(fā)送的數(shù)據(jù)數(shù)量是相同的恶耽,總的流量會隨著發(fā)端數(shù)量的增加而增加密任。在某些文章中,是將總流量固定為一個定值偷俭,隨著發(fā)端數(shù)量的增加浪讳,單個發(fā)端發(fā)送的數(shù)據(jù)量減少。
方案思想:基于接收窗口的擁塞控制算法涌萤。在丟包前進行擁塞避免淹遵,避免丟包。理論依據(jù)為接收端可以獲取目前全局的有限吞吐量和可用剩余帶寬负溪。難點在于如果接收窗口大小過小透揣,會限制TCP性能,過大則失去了預(yù)防incast擁塞的作用川抡。
解決步驟:(1)在接收端執(zhí)行擁塞控制算法辐真,用剩余帶寬作為調(diào)節(jié)接收窗口的評價標(biāo)準(zhǔn)(2)每條流的接收窗口的調(diào)節(jié)都是獨立的(3)接收窗口的調(diào)節(jié)是基于測量吞吐量和理想吞吐量之間差值的百分比,以及RTT往返時延來確定的崖堤。
背景和動機
- 介紹了incast問題發(fā)生的情景
每個TCP連接傳輸?shù)臄?shù)據(jù)塊大小都是比較小的侍咱, 為kB量級的,一般測試用的數(shù)據(jù)塊大小在64kB倘感,128kB放坏,256kB咙咽,等等老玛。同時連接的服務(wù)器數(shù)量在44-48之間,TOR交換機一般情況下是48個端口钧敞,上行鏈路帶寬大約為單個端口10Gb蜡豹。
goodput指的是多個TCP連接的有效吞吐量,是在應(yīng)用層測量得到的溉苛。在實際測試中镜廉,接收端先通過多線程向所有發(fā)端發(fā)送請求,TCP連接是逐個發(fā)出的愚战,當(dāng)該輪上的所有連接都已完成向接收方的數(shù)據(jù)傳輸時娇唯,一輪結(jié)束齐遵。
探討了并行發(fā)端數(shù)量與有效吞吐量之間的關(guān)系,得出結(jié)論塔插,在最后一跳解決incast問題梗摇。
- goodput,接收窗口想许,RTT
探索了靜態(tài)接收窗口下goodput和RTT的變化情況伶授,分析了其他根據(jù)RTT調(diào)整接收窗口的方案,得出結(jié)論流纹,增加的時延就是因為排隊糜烹,但單純依據(jù)RTT調(diào)整接收窗口,不靠譜漱凝,一是RTT測量的精確度本身與系統(tǒng)相關(guān)性較大疮蹦,二是RTT增加時,可用帶寬并不一定增加茸炒,這時增加接收窗口只會造成丟包挚币。
方案只調(diào)整RTT小于2ms的TCP流,這樣扣典,該擁塞避免算法就可以只應(yīng)用于多對一模式的流量妆毕,避免了其他長流的吞吐量下降。
- incast問題的根源探索
從時延的組成分析贮尖,根源在于交換機出口的排隊笛粘。定義了BDP(帶寬時延產(chǎn)品),理論計算了不發(fā)生incast問題時允許同時發(fā)送的數(shù)據(jù)包個數(shù)為8個湿硝。指出現(xiàn)代TOR交換機的緩存一般為4MB薪前,平均每個端口為85kB。只有使用好交換機緩存空間关斜,才能保證不丟包示括,吞吐量不下降。調(diào)節(jié)方案有兩種:發(fā)端擁塞窗口和收端接收窗口痢畜。本文選擇收端接收窗口垛膝。
設(shè)計
ICTCP方案具有通用性,既可以調(diào)節(jié)incast流丁稀,也可以調(diào)節(jié)非incast流吼拥。沒有對TCP協(xié)議和TCP包頭做任何修改,具有很強的兼容性线衫。在擁塞發(fā)生前避免凿可,而不是擁塞發(fā)生后快速恢復(fù),避免了丟包授账。
研究場景為典型的incast場景:多個服務(wù)器連接在同一個交換機上枯跑,接收端為單個惨驶,也連接在該交換機上。該算法只針對低時延流敛助,即RTT小于2ms的流敞咧。若一臺服務(wù)器同時與數(shù)據(jù)中心內(nèi)服務(wù)器通信,又與外部服務(wù)器通信辜腺,則該算法只會對內(nèi)部服務(wù)器的流起作用休建。在后文中也測試了該算法在背景流量方面的性能。
ICTCP的基礎(chǔ):
- 接收端的可用帶寬是接收端實行擁塞控制的信號评疗。
- 接收窗口的調(diào)整間隔應(yīng)大于1個RTT测砂,否則調(diào)整無效,不會應(yīng)用到下一輪數(shù)據(jù)發(fā)送中百匆。
- 接收窗口的設(shè)置在滿足應(yīng)用吞吐量的要求的前提下砌些,應(yīng)檢查是否過大。否則若該應(yīng)用重新請求加匈,則很可能會因突發(fā)流量造成incast擁塞存璃。
基于以上基礎(chǔ),ICTCP算法的思想就是為共享同一個最后一條的所有TCP連接分配合適的接收窗口雕拼。保證正常的TCP連接的性能不能下降纵东,多對一TCP流的incast問題可以避免。由于多對一流的性能由最慢的一條TCP連接決定啥寇,因此還要考慮多對一TCP連接中的接收窗口公平性問題偎球。
ICTCP算法
-
控制觸發(fā):可用帶寬
假定接收端對每條TCP連接都有一個接口,可統(tǒng)計該流的信息辑甜,例如吞吐量等衰絮。可用帶寬計算公式:
可用剩余帶寬計算公式
每個時間片分為兩個子時間片,第一個子時間片谍憔,測量每個網(wǎng)絡(luò)接口的流量匪蝙,然后計算可用剩余帶寬作為在第二個子時間片是否要進行接收窗口增加的判斷依據(jù)主籍。
注意:第一個時間片內(nèi)不會發(fā)生接收窗口增加的動作,在監(jiān)測到擁塞時逛球,第一時間片有可能減少接收窗口千元。任意一條TCP流的接收窗口減少,都不會更新可用剩余帶寬的值颤绕,這個值只有在下一個第一子時間片才會更新重置幸海。
-
每條連接的控制間隔:兩個RTT
至少要經(jīng)過一個RTT的時間,才能使上一輪調(diào)節(jié)的接收窗口生效奥务,因此本方案中設(shè)置的每條連接的控制間隔為2個RTT物独。每條連接的調(diào)節(jié)都是相互獨立的。但由于不同連接的RTT不同氯葬,因此子時間片的設(shè)置要考慮到所有活動的流的RTT挡篓,即自時間片長度設(shè)置為
子時間片長度計算公式
舉例說明官研,假如當(dāng)前時刻為全局控制間隔的第二個子時間片,某條流i在此時距離上次調(diào)整接收窗口的時間間隔大于2倍的該流的RTT闯睹,并且可用帶寬滿足條件戏羽,此時可以增加接收窗口。
-
單條連接的窗口調(diào)整
測量的吞吐量Bm楼吃,期待的吞吐量Be蛛壳,采樣的吞吐量Bs,其中Bs計算公式為用一個RTT時間間隔內(nèi)接收端收到的字節(jié)數(shù)除以RTT所刀。Bm的更新公式如下
Bm更新公式Be計算公式
其中差值比的取值范圍為0-1.根據(jù)差值比溜族,設(shè)置了兩個閾值γ1(取值為0.1)和γ2(取值為0.5)。
- 當(dāng)差值比小于等于γ1或MSS除以接收窗口的比值時垦沉,若此時處于全局的第二個子時間片煌抒,且有足夠的可用帶寬,則增加接收窗口厕倍,并將增加的接收窗口在總的可用帶寬減掉(減去帶寬的計算公式為增加的MSS除以RTT)寡壮,避免多條流同時增加接收窗口時引發(fā)的overdescribed。慢啟動階段。
- 當(dāng)差值比大于γ2時况既,并且連續(xù)三個RTT的測量結(jié)果都是這樣这溅,此時減小接收窗口,減掉一個MSS棒仍,接收窗口最小為2*MSS悲靴。擁塞避免階段
- 其他情況下,接收窗口保持不變莫其。
- 維持多條連接公平性的控制器
當(dāng)可用剩余帶寬小于0.2C時癞尚,則將接收窗口大于平均接收窗口值的連接的接收窗口減去一個MSS。若所有連接都擁有相同的接收窗口乱陡,則所有連接均不會減小浇揩。
這種公平性機制主要針對這種情景,較早啟動的連接擁有較大的接收窗口蛋褥,較晚啟動的接收窗口較小临燃。此時所有連接均不能增加接收窗口,因為沒有足夠的可用帶寬了烙心,只要不出現(xiàn)丟包膜廊,這種狀態(tài)會一直維持下去,這就會引發(fā)TCP連接間的公平性問題淫茵。所以ICTCP算法設(shè)置了剩余帶寬門限爪瓜,通過微調(diào)不同連接間的差異,使得所有TCP連接實現(xiàn)平穩(wěn)收斂匙瘪。
分析(介紹了ICTCP方案的合理性铆铆,建立了簡單的流模型)
建立了穩(wěn)態(tài)下的流模型,此時所有流的接收窗口已被優(yōu)化丹喻,建立此模型的目的是從理論上討論在穩(wěn)態(tài)下薄货,所需的交換機緩存空間是多少,現(xiàn)有交換機緩存能否支持ICTCP算法的運行碍论。
在極端情況下谅猾,即網(wǎng)絡(luò)中還沒有ack包,所有數(shù)據(jù)包都朝著接收端方案傳輸鳍悠,此時所需要的緩存大小為
在上述公式的基礎(chǔ)上税娜,將現(xiàn)有48口交換機的相關(guān)數(shù)據(jù)帶入,得出當(dāng)48個端口同時發(fā)生排隊情況下藏研,每條流的接收窗口為兩個MSS敬矩,C=1Gbps,RTT=100微秒時蠢挡,所需的交換機緩存為6MB弧岳。而現(xiàn)有交換機緩存為4MB凳忙,因此在最壞情況下,允許同時并發(fā)的發(fā)端數(shù)量為32臺缩筛。