首頁 資料庫 mysql教程 TCP拥塞控制 2

TCP拥塞控制 2

Jun 07, 2016 pm 03:24 PM
tcp 控制 視窗 缺陷 解決

解决传统TCP缺陷: 1、窗口太小,最大65535。 TCP利用了选项功能,其头部存在预留项,用于扩展等用途。窗口扩大选项增加了额外的16位来表示窗口大小,窗口的由首部的16位大小和选项的16位共同组成。 不过不是用加法组成的,而是利用 移位窗口的幂 来表示的,

解决传统TCP缺陷:

1、窗口太小,最大65535。

TCP利用了选项功能,其头部存在预留项,用于扩展等用途。窗口扩大选项增加了额外的16位来表示窗口大小,窗口的值由首部的16位大小和选项的16位值共同组成。

不过不是用加法组成的,而是利用移位窗口值的幂来表示的,也就是说如果移位窗口值为 10,那么窗口的最大值就是65535*210,这个值就比较大了,足够表示窗口的大小了。

2、数据包丢失,即认定为网络出现了拥塞

     在高速网络中,这种假设是不成立的。如果笼统地认为分组丢失就是拥塞所引起的,从而降低一半的速率,这是对网络资源的极大浪费。拥塞的判断需要两个连续的分组丢失

 

于是乎,就有了HSTCP和BI-TCP等一系列拥塞控制方法。

HSTCP

High-Speed TCP是由Floyd提出,基于AIMD准则的一种新的拥塞控制算法,能在高速度和大时延的网络中更有效地提高网络的吞吐率。它通过对标准TCP拥塞避免算法的增加和减少参数进行修改,从而实现了窗口的快速增长和慢速减少,但是它存在严重的RTT不公平性

HSTCP提出的窗口增加和减小方法,先看拥塞控制中的两个公式:

cwnd = cwnd+a(cwnd)/cwnd   ............................ (1)

cwnd = (1-b(cwnd)) * cwnd   ............................ (2)

式 (1)是拥塞避免时的窗口增长方式,式(2)是发生了丢包后的窗口下降方式,其中a,b为两个函数,cwnd为其自变量,在标准TCP中a(cwnd)=1,b(cwnd)=0.5,也就是加法增大,乘法减小。

为了达到TCP的友好性,在窗口较低的情况下,也就是说非BDP的网络环境下,HSTCP采用的是和标准TCP相同的a和b,也就是一样的方式来保证两者之间的友好性。当BDP大时,也就是w较大时(HSTCP设定的临界值为38),采取新的a和b来达到高吞吐的要求:

根据不同的网络环境下使用不同的TCP窗口增长和降低参数,具体可以看RFC3649文档。

BIC-TCP

HSTCP,它通过简单的修改标准TCP的增长方式,从而达到了高吞吐。方法很简单,但是缺点在于,它存在严重的RTT不公平性. 公平性指共享同一网络瓶颈的多个流之间占有的网络资源相等。

BIC-TCP由North Carolina State University的网络研究实验室提出,该算法在提出不久后就成为了当时Linux内核中的TCP默认拥塞算法,使用非常广泛.(是linux采用cubic之前的默认算法)

BIC-TCP的本质:

BIC- TCP的提出者们发现了TCP拥塞窗口调整的一个本质:那就是找到最适合当前网络的一个发送窗口,为了找到这个窗口值,TCP采取的方式是(拥塞避免阶 段)每RTT加1,缓慢上升,丢包时下降一半,接着再来慢慢上升。BIC-TCP的提出者们看穿了事情的本质,其实这就是一个搜索的过程,而TCP的搜索方式类似于逐个遍历搜索方法,可以认为这个值是在1和一个比较大的数(large_window)之间,既然在这个区间内需要搜索一个最佳值,那么显然好的方式就是二分搜索思想

BIC- TCP就是基于这样一个二分思想的:当出现丢包的时候,说明最佳窗口值应该比这个值小,那么BIC就把此时的cwnd设置为max_win,把乘法减小后 的值设置为min_win,然后BIC就开始在这两者之间执行二分思想--每次跳到max_win和min_win的中点。

具体实现还有其他问题,比如防止传输的抖动,因而BIC-TCP选取了另外取了两个参考值Smax和Smin。BIC-TCP的具体实现可以参考内核代码/net/ipv4/tcp_bictcp.c

CUBIC

BIC-TCP的缺点:首先就是抢占性较强,它在探测阶段相当于是重新启动一个慢启动算法,而TCP在处于稳定后窗口就是一直是线性增长的,不会再次执行慢启动的过程。其次,BIC-TCP的窗口控制阶段增加了算法上的实现和性能分析复杂度。

CUBIC在设计上简化了BIC-TCP的窗口调整算法,CUBIC使用一个立方函数取代BIC-TCP的增长曲线。来看下具体细节:当某次拥塞事件发生时,Wmax设置为此时发生拥塞时的窗口值,然后把窗口进行乘法减小,乘法减小因子设为β, 当从快速恢复阶段退出然后进入到拥塞避免阶段,此时CUBIC的窗口增长开始按照“凹”式增长曲线进行增长,该过程一直持续直到窗口再次增长到Wmax, 紧接着,该函数转入“凸”式增长阶段。该方式的增长可以使得窗口一直维持在Wmax附近,从而可以达到网络带宽的高利用率和协议本身的稳定性。

TCP拥塞控制 2

鉴于CUBIC比BIC-TCP更出色的表现,在Linux2.6.18版本后,CUBIC取代了BIC-TCP,内核代码请参考/net/ipv4/tcp_Cubic.c。

 

TCP拥塞的优化算法还有N多多,比如

Fast TCP:从TCP vegas的思想发展而来,利用网络延时进行拥塞判断。

ECN:显式拥塞通知,该算法的思想是想借助路由器。路由器在发现有拥塞现象时在连接的TCP或者IP头里面打上拥塞的标记,让终端自己去根据标记进行处理。

UDT:UDT是一个开源的基于UDP实现的可靠传输协议,但是在UDT的拥塞算法与UDP或TCP没有关系,UDT采用的是一种带宽估计的算法。发送端的拥塞算法就是把拥塞窗口利用一个函数无限逼近于带宽值,这种思想对于传输的稳定性非常好,因为是一个无限逼近,所以永远不会超过带宽的值,而不是像TCP一样在平衡状态后继续一直往上增大窗口,从而在平衡状态能够维持比较久。

     完成一个TCP的可用版本很容易,要实现一个高性能版本需要考虑的因素就多了去了。

不同环境:局域网、异构网、卫星网等等,每种网络的要求千差万别。

不同应用:有一直只发送小包(发送的包长度小于MSS)的应用,也有不停的发送大包的应用,还有两边同时发送和接收数据的应用。

传输效率,公平性,平稳性等等

参考;http://www.cnblogs.com/fll/archive/2011/11/15/2250437.html

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Win11系統無法安裝中文語言套件的解決方法 Win11系統無法安裝中文語言套件的解決方法 Mar 09, 2024 am 09:48 AM

Win11系統無法安裝中文語言包的解決方法隨著Windows11系統的推出,許多用戶開始升級他們的作業系統以體驗新的功能和介面。然而,一些用戶在升級後發現他們無法安裝中文語言包,這給他們的使用體驗帶來了困擾。在本文中,我們將探討Win11系統無法安裝中文語言套件的原因,並提供一些解決方法,幫助使用者解決這個問題。原因分析首先,讓我們來分析一下Win11系統無法

五招教你解決黑鯊手機開不了機的問題! 五招教你解決黑鯊手機開不了機的問題! Mar 24, 2024 pm 12:27 PM

隨著智慧型手機技術的不斷發展,手機在我們日常生活中扮演著越來越重要的角色。而作為一款專注於遊戲效能的旗艦手機,黑鯊手機備受玩家青睞。然而,有時候我們也會面臨到黑鯊手機開不了機的情況,這時候我們就需要採取一些措施來解決這個問題。接下來,就讓我們來分享五招教你解決黑鯊手機開不了機的問題:第一招:檢查電池電量首先,確保你的黑鯊手機有足夠的電量。可能是因為手機電量耗盡

無法在此裝置上載入驅動程式怎麼解決? (親測有效) 無法在此裝置上載入驅動程式怎麼解決? (親測有效) Mar 14, 2024 pm 09:00 PM

  大家都知道,如果電腦無法載入驅動程序,該設備可能就無法正常工作或與電腦進行正確的互動。那在電腦上彈出無法在此裝置上載入驅動程式的提示框,我們要如何解決呢?下面小編就教大家兩招輕鬆解決問題。  無法在此裝置上載入驅動程式解決方法  1、開始功能表搜尋「核心隔離」。  2、將記憶體完整性關閉,上方提示「記憶體完整性已關閉。你的裝置可能易受攻擊。」點擊後方忽略即可,不會對使用有影響。  3.重啟機器之後即可解決問題。

小紅書發布自動儲存圖片怎麼解決?發布自動保存圖片在哪裡? 小紅書發布自動儲存圖片怎麼解決?發布自動保存圖片在哪裡? Mar 22, 2024 am 08:06 AM

隨著社群媒體的不斷發展,小紅書已經成為越來越多年輕人分享生活、發現美好事物的平台。許多用戶在發布圖片時遇到了自動儲存的問題,這讓他們感到十分困擾。那麼,如何解決這個問題呢?一、小紅書發布自動儲存圖片怎麼解決? 1.清除快取首先,我們可以嘗試清除小紅書的快取資料。步驟如下:(1)開啟小紅書,點選右下角的「我的」按鈕;(2)在個人中心頁面,找到「設定」並點選;(3)向下捲動,找到「清除快取」選項,點擊確認。清除快取後,重新進入小紅書,嘗試發布圖片看是否解決了自動儲存的問題。 2.更新小紅書版本確保你的小

谷歌瀏覽器怎麼設定每次開啟都是新的窗口 谷歌瀏覽器怎麼設定每次開啟都是新的窗口 Mar 06, 2024 pm 06:19 PM

谷歌瀏覽器怎麼設定每次開啟都是新的視窗?狠毒用戶喜歡使用谷歌瀏覽器辦公或學習,這款瀏覽器具有安全、快速、便捷的特點,不同的用戶使用瀏覽器的喜好不同,一些用戶喜歡打開谷歌瀏覽器就是新的標窗口,方便快速搜索,那麼如何設定呢。接下來小編就帶給大家谷歌瀏覽器每次開啟都是新的視窗設定教程,有興趣的朋友來學習一下。谷歌瀏覽器每次開啟都是新的視窗設定教學1、將電腦桌面上的Google瀏覽器雙擊開啟之後,點選右上角的【三個點】的圖示位置進行點擊。 2.找到【設定】這個選項進入到頁面中(如圖)。 3.進入到谷歌瀏

Linux中文亂碼怎麼解決 Linux中文亂碼怎麼解決 Feb 21, 2024 am 10:48 AM

Linux中文亂碼問題是使用中文字元集和編碼時常見的一個問題。出現亂碼的原因可能是檔案編碼設定不正確,系統語言環境未安裝或未設置,以及終端顯示設定錯誤等。本文將介紹幾種常見的解決方法,並提供具體的程式碼範例。一、檢查檔案編碼設定使用file指令查看檔案編碼在終端機中使用file指令,可以檢視檔案的編碼:file-ifilename如果輸出中有"charset

解決PyCharm無法開啟的方法分享 解決PyCharm無法開啟的方法分享 Feb 22, 2024 am 09:03 AM

標題:如何解決PyCharm無法開啟的問題PyCharm是一款功能強大的Python整合開發環境,但有時候我們可能會遇到無法開啟PyCharm的問題。在本文中,我們將分享一些常見的解決方法,並提供具體的程式碼範例。希望能幫助遇到這個問題的朋友們。方法一:清除快取有時候PyCharm的快取檔案可能會導致程式無法正常打開,我們可以嘗試清除快取來解決這個問題。具

如何解決預設網關自動消失的問題 如何解決預設網關自動消失的問題 Feb 24, 2024 pm 04:18 PM

預設網關自動消失怎麼解決在現代社會中,網路已經成為人們生活中不可或缺的一部分。無論是工作還是娛樂,我們都需要穩定的網路連線來完成各種任務。而預設閘道是連接本地網路與外部網際網路的關鍵要素之一。然而,有時我們可能會遇到預設閘道自動消失的問題,導致無法上網。那麼,當預設網關消失時,我們該如何解決這個問題?首先,我們應該明確預設網關的概念。預設網關是一個網路路

See all articles