IEEE/ACM Transactions on networking,2013
簡介
應用層與傳輸層解決方案的區(qū)別:應用層級的解決方案不具有通用性,只適用于同一種應用,例如PICC。而傳輸層級的解決方案可以屏蔽不同應用間的區(qū)別,更具有通用性。
實驗中每個發(fā)端發(fā)送的數(shù)據(jù)數(shù)量是相同的,總的流量會隨著發(fā)端數(shù)量的增加而增加。在某些文章中,是將總流量固定為一個定值,隨著發(fā)端數(shù)量的增加,單個發(fā)端發(fā)送的數(shù)據(jù)量減少。
方案思想:基于接收窗口的擁塞控制算法。在丟包前進行擁塞避免,避免丟包。理論依據(jù)為接收端可以獲取目前全局的有限吞吐量和可用剩余帶寬。難點在于如果接收窗口大小過小,會限制TCP性能,過大則失去了預防incast擁塞的作用。
解決步驟:(1)在接收端執(zhí)行擁塞控制算法,用剩余帶寬作為調(diào)節(jié)接收窗口的評價標準(2)每條流的接收窗口的調(diào)節(jié)都是獨立的(3)接收窗口的調(diào)節(jié)是基于測量吞吐量和理想吞吐量之間差值的百分比,以及RTT往返時延來確定的。
背景和動機
- 介紹了incast問題發(fā)生的情景
每個TCP連接傳輸?shù)臄?shù)據(jù)塊大小都是比較小的, 為kB量級的,一般測試用的數(shù)據(jù)塊大小在64kB,128kB,256kB,等等。同時連接的服務器數(shù)量在44-48之間,TOR交換機一般情況下是48個端口,上行鏈路帶寬大約為單個端口10Gb。
goodput指的是多個TCP連接的有效吞吐量,是在應用層測量得到的。在實際測試中,接收端先通過多線程向所有發(fā)端發(fā)送請求,TCP連接是逐個發(fā)出的,當該輪上的所有連接都已完成向接收方的數(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流,這樣,該擁塞避免算法就可以只應用于多對一模式的流量,避免了其他長流的吞吐量下降。
- 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ā)生后快速恢復,避免了丟包。
研究場景為典型的incast場景:多個服務器連接在同一個交換機上,接收端為單個,也連接在該交換機上。該算法只針對低時延流,即RTT小于2ms的流。若一臺服務器同時與數(shù)據(jù)中心內(nèi)服務器通信,又與外部服務器通信,則該算法只會對內(nèi)部服務器的流起作用。在后文中也測試了該算法在背景流量方面的性能。
ICTCP的基礎(chǔ):
- 接收端的可用帶寬是接收端實行擁塞控制的信號。
- 接收窗口的調(diào)整間隔應大于1個RTT,否則調(diào)整無效,不會應用到下一輪數(shù)據(jù)發(fā)送中。
- 接收窗口的設(shè)置在滿足應用吞吐量的要求的前提下,應檢查是否過大。否則若該應用重新請求,則很可能會因突發(fā)流量造成incast擁塞。
基于以上基礎(chǔ),ICTCP算法的思想就是為共享同一個最后一條的所有TCP連接分配合適的接收窗口。保證正常的TCP連接的性能不能下降,多對一TCP流的incast問題可以避免。由于多對一流的性能由最慢的一條TCP連接決定,因此還要考慮多對一TCP連接中的接收窗口公平性問題。
ICTCP算法
-
控制觸發(fā):可用帶寬
假定接收端對每條TCP連接都有一個接口,可統(tǒng)計該流的信息,例如吞吐量等??捎脦捰嬎愎剑?div id="u0z1t8os" class="image-package">
可用剩余帶寬計算公式








