天天看點

TCP擁塞控制算法與TCP加速

TCP擁塞控制算法是對網絡傳輸的估計算法。相同的網絡環境,不同的擁塞算法會給出不同的估計。就像一條高速公路,有的人覺得能跑120公裡/小時,而有的人覺得隻能跑100公裡/小時。對相同一條公路,哪個能跑的快,哪個算法就是TCP加速的好算法。

TCP擁塞控制算法從80年代開始,無數的論文介紹了無數種算法,比較典型的有:

  • RENO -- RENO算法可以算是第一代比較流行的經典算法,通過3次丢包來判斷發生了擁塞
  • TCP SACK -- 對方收到什麼就确認什麼,确認的TCP序号可以不連續
  • Vegas -- 引入時間的變量,把時間和變量一起考慮。雖然Vegas沒有形成标準的RFC,但是卻啟發了fasttcp算法。發明fasttcp算法的人創立了FastSoft公司,最後被Akamai收購。
  • CUBIC -- 現在Linux的預設算法,兼顧了高效與公平。
  • BBR -- 由google發現,正在申請RFC,最新的linux核心已經內建了BBR算法,需要手工打開。

由于項目需要,讓我有機會實作了TCP SACK和Vegas,深深感覺到了算法的精妙。同時親身測試,覺得BBR是TCP加速算法的集大成者。同樣的中國到美國的一條網絡,CUBIC隻能看480P,而BBR能看1080P或者1440P。

繼續閱讀