TCP 的壅塞控制如何拯救了網際網路

隨著每年的SIGCOMM(Special Interest Group on Data Communication)會議在九月舉行,可以注意到在傳輸控制協定TCP(Transmission Control Protocol,TCP)壅塞控制的第一篇論文發表後的35年,SIGCOMM仍然為TCP保留了一小時的會議時間。因此,現在似乎是一個很好的時機來評斷壅塞控制在網際網路的成功程度。

在作者最近的演講和文章中,出現許多有關在同時期競爭主導地位的各種網路技術的評論。這些技術包括開方式系統互相連線模型(Open Systems Interconnection, OSI)、彩色書籍協議(Coloured Book protocols),當然還有非同步傳輸模式(Asynchronous Transfer Mode,ATM)。也許現在很難理解,但實際上ATM是第一個被深入研究的網際網路協議,在1980年代,許多人認為ATM可能是將接管世界的封包交換技術。

ATM的支持者曾將現有技術,如乙太網路和TCP/IP,稱為「傳統」協議,認為一旦建立了全球ATM網路,這些協議可以在其上運行。但Steve Deering(IP網路的先驅之一)在當時即大膽並且正確地宣稱,ATM永遠不會成功到足以成為傳統的協議。

而在現今的網際網路生態中,TCP/IP協議有效地超越了其他協議,實現了全球的應用。許多理論都探討了為什麼TCP/IP比同期的其他協議成功,最有可能的情況是,TCP/IP的成功是由許多因素共同促成的。其中的擁塞控制是使網際網路從中等規模發展到全球規模的關鍵因素之一。

分散資源管理

在David Clark的論文《DARPA網際網路協議的設計哲學》中,一個明確的設計目標是:「網際網路架構必須允許分散管理其資源。」這個目標有許多不同的含義,Jacobson和Karels的論文中首次在TCP中實現壅塞控制的方式,是將這分散管理原則貫徹到實踐中一個很好的例子。

他們的方法還包含了網際網路的另一個設計目標:「適應多種不同類型的網路。」這些網際網路的設計原則基本上排除了任何類型的允許控制(admission control)的可能性,這與ATM等網路假設在資料流動之前,會從終端系統(end system)向網路發出資源請求的特性形成了鮮明對比。

「適應多種網路類型」的原則部分想表達的是,不能假設所有網路都具有允許控制。再加上需要將資源分散管理,最終導致壅塞控制成為終端系統必須處理的事情,這正是Jacobson和Karels在對TCP的最初更改中所做的。

TCP壅塞控制的歷史長得足以填寫一本書,但美國加州伯克萊市在1986年至1998年間所進行的工作留下了悠久的影響。Jacobson於1988年在SIGCOMM會議上發表的論文被列為有史以來引用次數最多的網際網路論文之一。

在那篇論文中,包含了慢啟動(Slow-start)、線性增加倍數減少法(additive-increase /multiplicative-decrease,AIMD)、往返時間(Round-Trip Time, RTT)估算以及使用封包遺失作為壅塞信號的概念,奠定了未來幾十年壅塞控制研究的基礎。作者認為該論文具有影響力的原因之一是它所奠定的基礎堅實可靠,同時也為未來的改進留下了足夠的空間,正如人們今天不斷努力改進壅塞控制所示。

當時想要改進TCP問題基本上非常困難,人們試圖協調數百萬個相互之間無直接聯繫的終端系統,以相對公平的方式分享瓶頸鏈路的頻寬,但只能依靠將封包發送到網路並觀察它們何時以及是否到達目的地。

可以說,1988年之後最大的飛躍之一是Brakmo和Peterson意識到丟包並不是壅塞的唯一信號,延遲增加也是如此。這是1994年TCP Vegas論文的基礎,儘管這個想法在當時是具有爭議的。

然而,TCP Vegas論文開啟了壅塞控制研究的新趨勢,激發了許多其他研究,試圖在丟包發生之前將延遲納入考慮,作為壅塞的早期指標。資料中心TCP(Data Center TCP, DCTCP)和Google在2017年發布的壅塞控制演算法(Bottleneck Bandwidth and RTT, BBR)是其中的兩個例子。

之所以可以將網際網路的成功歸功於壅塞控制算法,原因之一是在1986年,網際網路就展現了一些失敗的預兆。Jacobson的論文中描述了一些早期的壅塞崩潰事件,這些事件導致網際網路吞吐量下降了三個數量級。在1995年,乙太網路的發明者、最近的圖靈獎得主Bob Metcalfe曾預言,隨著消費者接入網際網路和網路的興起將推動流量的快速增長,網際網路也將隨之崩潰。現在回頭來看,此現象並沒有發生。

壅塞控制一直在不斷演進。例如,QUIC(Quick UDP Internet Connections,QUIC)協議提供了更好的壅塞檢測機制,並提供了實驗多種壅塞控制算法的選項。此外,一些壅塞控制已經轉移到了應用層,例如動態自適應串流媒體(Dynamic Adaptive Streaming over HTTP,DASH)。

在1980年代和1990年代的壅塞事件中,一個有趣的副作用是,人們觀察到小緩衝區有時是壅塞崩潰的原因。Villamizar和Song的一篇有影響力的論文顯示,當緩衝的量小於流量的平均延遲乘以頻寬時,TCP的性能會下降。

不幸的是,這個結果僅適用於非常少數的流量(正如論文中所承認的),但它被廣泛解釋為一個不可違反的規則,影響了接下來幾年的路由器設計。

這一觀點最終在2004年由Appenzeller等人的緩衝區大小研究所推翻,但在這之前,過度大的緩衝區導致了大量的排隊延遲,出現了緩衝過多(Bufferbloat)的現象,這影響了數百萬個低階路由器。因此,儘管人們不能回到過去進行受控實驗,以確切了解網際網路是如何成功而其他協議則被淘汰的,但我們至少可以看到,網際網路之所以避免了潛在的失敗,部分原因是及時添加了壅塞控制。

經過了許多努力,人們發現似乎並不存在完美的壅塞控制方法,這就是為什麼在Jacobson發表論文35年後,我們仍然看到有關這個主題的新論文。但網際網路的架構已經促成了一個測試和部署有效解決方案的環境,以實現共享資源的分散管理,可以視為對該架構品質的有效證明。

本文內容純屬筆者個人意見,並不代表TWNIC立場

相關連結:Bruce Davie. (2023). How TCP’s congestion control saved the internet. The Register. 

檢自:https://www.theregister.com/2023/09/24/tcp_congestion_control_internet/?td=rt-3a%27(Sep.24, 2023)

Scroll to Top