【CSDN 編者按】本文章按時間順序講述TCP/IP戰勝其他協議套件滲透到全球(接近全球)原因。
原文鏈接:https://systemsapproach.substack.com/p/how-congestion-control-saved-the
未經允許,禁止轉載!
作者 | BRUCE DAVIE 譯者 | 彎月
責編 | 夏萌
出品 | CSDN(ID:CSDNnews)
最近,我寫了一篇題為」網路六十年「的文章,主要討論互聯網和阿帕網,我收到了很多評論都在討論各種佔據主導地位的網路技術。其中包括 OSI 棧(還有人記得 CLNP 和TP4 嗎?)、Colored Book 協議(包括Cambridge Ring),當然還有 ATM(非同步傳輸模式)。
雖然放到現在大家都很難理解,但在 20 世紀 80 年代,許多人認為 ATM 會成為統治世界的分組交換技術,而我也是其中之一。ATM 的支持者習慣將乙太網和 TCP/IP 等現有技術稱為「遺留」協議,他們認為一旦全球 ATM 網路建立,這些協議就可以在 ATM 網路上運行。我對那些日子的美好回憶之一便是 Steve Deering(IP 網路先驅)大膽(且正確)地指出 ATM 永遠不可能獲得巨大成功,甚至沒有資格成為一種遺留協議。
我省略了其他協議,原因之一只是為了節省篇幅,因為我非常注重文筆簡潔,尤其是我和 Larry L. Peterson 合著的書籍在亞馬遜上收到了一條一星差評(https://www.amazon.com/gp/customer-reviews/R1IVEX207N7WY8/ref=cm_cr_srp_d_rvw_ttl?ie=UTF8&ASIN=B004VF6216),稱我們的書為「文字牆」(比喻很多文字密密麻麻像堵牆一樣,沒有分段或標點符號)。但我重點討論了互聯網發展至今的經過,以及 TCP/IP 如何戰勝其他協議套件滲透到全球(接近全球)。
關於 TCP/IP 為何比同時代的其他協議更成功的理論有很多,但這些理論都無法得到檢驗。我認為最主要的原因是,許多因素影響了互聯網協議的成功,但我認為擁塞控制是推動互聯網從中等規模發展至全球的關鍵因素之一。探討 20 世紀 70 年代我們選擇的某個架構如何在之後的幾十年中證明自己,這也是一項有趣的研究。
分散式資源管理
David Clark 在論文《The Design Philosophy of the DARPA Internet Protocols》(DARPA 互聯網協議的設計理念)中闡述了一條設計目標:「互聯網架構必須允許對其資源進行分散式管理」。該目標有許多不同的含義,但 Jacobson 和 Karels 首次在 TCP 中實現擁塞控制的方式正是這一原則的一個很好的例子。
他們的方法還包含了互聯網的另一個設計目標:適應許多不同類型的網路。總而言之,這些原則幾乎排除了任何類型的基於網路的准入控制的可能性,與 ATM 等網路形成鮮明對比,後者假設針對資源的請求必須由終端系統發起之後數據才能流動。「適應許多不同類型的網路」的理念意味著,你不能假設所有網路都有準入控制。再結合資源的分散式管理,最終導致擁塞控制成為了終端系統不得不處理的工作,而這正是 Jacobson 和 Karels 最初對 TCP 的修改。
TCP 擁塞控制的歷史很長,足以寫滿一本書(而且我們真的寫了一本這樣的書,https://tcpcc.systemsapproach.org/),但 1996 年~1998 年伯克利所做的工作留下了很長的陰影,而 Jacobson 於 1988 年發表的 SIGCOMM 論文也成為了有史以來被引用次數最多的網路論文之一。
慢啟動、和性增長/乘性降低(Additive-Increase/Multiplicative-Decrease,AIMD)、RTT 估計以及將丟包作為擁塞信號等技術都出自該論文,為接下來幾十年的擁塞控制研究奠定了基礎。我認為,該論文具有如此影響力的一個原因是它奠定了堅實的基礎,同時為將來的改進留足了空間。這個問題本質上非常難:我們在設法讓數百萬個彼此沒有直接聯繫的終端系統以某種適度公平的方式合作共享瓶頸鏈路的帶寬,而能夠利用的信息僅僅是發送數據包進入網路並觀察這些數據包何時以及是否到達目的地。
我認為,1988 年之後最大的飛躍之一是 Brakmo 和 Peterson 認識到了數據包丟失並不是擁塞的唯一信號,延遲增加也是此類信號之一。於 1994 年發表的 TCP Vegas 的論文正是以此為基礎,使用延遲(而不僅僅是使用數據包丟失)的想法在當時頗有爭議。然而,Vegas 開啟了擁塞控制研究的新趨勢,啟發了許多其他人,他們將延遲作為在數據包真正丟失之前發現擁塞的指標。Data center TCP(DCTCP)以及 Google 的 BBR 就是兩個例子。
我認為,擁塞控制演算法對於互聯網成功的貢獻之一是,互聯網的失敗之路早在 1986 年就已經清晰地展現出來了。Jacobson 描述了一些早期的擁塞崩潰事件,在這些事件中人們發現網路吞吐量下降了三個數量級。1995 年我加入思科時,仍然能夠聽到有關客戶遇到災難性擁塞事件的故事。同年,乙太網發明者以及圖靈獎獲得者 Bob Metcalfe 預言道:隨著消費者訪問互聯網和 Web 的興起推動流量快速增長,互聯網終將崩潰。
然而,事實並非如此。擁塞控制不斷發展,例如 QUIC 協議,提供了更好的擁塞檢測機制和試驗多種擁塞控制演算法的備選方法。一些擁塞控制已轉移到應用層,例如基於 HTTP 的動態自適應流(Dynamic Adaptive Streaming over HTTP,DASH)。
20 世紀 80 年代和 90 年代的擁堵事件的一個有趣的副作用是,我們觀察到小的緩衝區有時會成為引發擁堵崩潰的原因。Villamizar 和 Song 發表的一篇頗具影響力的論文表明,當緩衝量 < 平均延遲 × 帶寬時,TCP 的性能就會下降。不幸的是,這個結果僅適用於極少數的流量(論文中也提到了這一點),但這成為了接下來幾年路由器設計的不可違反的規則。Appenzeller 等人在2004年對緩衝區大小的研究最終證明了這一理論的錯誤,但很可惜在這之前,上百萬的低端路由器就因為過度增加緩衝區大小而導致了緩衝膨脹(Bufferbloat)現象——因數據包緩衝過大而引起網路高延遲的現象。你可以檢查一下家裡的網路是否存在「緩衝膨脹」的問題(https://www.waveform.com/tools/bufferbloat)。
我們無法回到過去,通過實驗來確切地了解互聯網如何走向了成功,而其他協議套件都在中途放棄了,但至少我們可以看到互聯網由於及時添加了擁塞控制而避免了潛在的失敗。在 1986 年,試驗新想法相對容易,我們可以調整幾個終端系統中的代碼,然後將有效的解決方案推廣到廣泛的系統中。網路內部不需要任何改變。幾乎可以肯定的是,當時需要修改的操作系統以及能夠進行這些修改的人員社區非常小,所以 Jacobson 和 Karels 最初的基於 BSD 的演算法能夠得到廣泛部署。
很明顯,完美的擁塞控制方法並不存在,這就是為什麼在 Jacobson 發表論文 35 年後,我們仍然能不斷看到有關該主題的新論文。但互聯網的架構營造了一個環境,我們可以在其中測試和部署有效的解決方案,以實現共享資源的分散式管理。在我看來,這很好地證明了該架構的質量。
歡迎參與 CSDN 重磅發起的《2023 AI 開發者生態調查問卷》,分享您真實的 AI 使用體驗,更有精美好禮等你拿!