TCP優化學習筆記(一)

TCP協議存在的問題

  • TCP三次握手增加了整整一次的往返時間;
  • TCP慢啓動被應用到每一次的新連接;
  • TCP流量及擁塞控制會影響所有連接的吞吐量。
  • TCP的吞吐量由當前擁塞窗口大小確定。

現代高速網絡中的TCP連接的數據傳輸速度受到接收端和發送端的往返時間的限制。此外,延遲依舊受限於光速,而且已經限定在其最大值的一個很小的常數因子之內。所以,大多數情況下,TCP的瓶頸都是延遲,而非帶寬。

延遲

延遲是消息或分組從起點到終點經歷的時間。

影響延遲的因素:

  • 傳播延遲:消息從發送端到接收端需要的時間,與信號傳播距離和速度有關。
  • 傳輸延遲:把消息中的所有比特轉移到鏈路中需要的時間,與消息長度和鏈路速率有關。
  • 處理延遲:處理分組首部、檢查位錯誤及確定分組目標所需的時間。
  • 排隊延遲:到來的分組排隊等待處理的時間。

以上延遲的時間總和,就是客戶端到服務器的總延遲時間。

TCP Fast Open

這是減少新建TCP連接帶來性能損失的一種機制。通過握手開始時的 SYN 包中的 TFO cookie(一個 TCP 選用項)來驗證一個之前連接過的客戶端。如果驗證成功,它可以在三次握手最終的 ACK 包收到之前就開始發送數據,這樣便跳過了一個繞路的行爲,更在傳輸開始時就降低了延遲

三次握手帶來的延遲使得每次創建一個新TCP連接都要付出巨大代價,所以這裏是提升TCP應用性能的關鍵。

服務器配置調優

  • 增大TCP的初始擁塞窗口:加大擁塞窗口能夠讓TCP在第一次往返中就可以傳輸較多的數據,而隨後的速度提升明顯。對於突發性的短暫連接,這是一個很重要的優化的點。
  • 慢啓動重啓:在連接空閒時禁用慢啓動可以改善瞬時發送數據的長TCP連接的性能。
  • 窗口縮放(RFC 1323):啓用窗口縮放可以增大最大接收窗口的大小,可以讓高延遲的連接達到更好的吞吐量。
  • TCP快速打開:在某些條件下,允許在第一個SYN分組中發送應用程序數據。不過需要發送端和客戶端同時支持TFO(TCP快速打開)

應用程序行爲調優

  • 消除不必要的數據傳輸,如不必要的資源下載後者通過壓縮算法將傳送的數據量降到最低;
  • 實現數據的短距離傳輸,如採用CDN技術來減少網絡往返的延遲,從而顯著提升TCP的性能;
  • 儘可能重用TCP連接,把慢啓動和其他擁塞控制機制的影響降低到最小。
發佈了67 篇原創文章 · 獲贊 10 · 訪問量 6766
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章