亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺談TCP擁塞控制算法

        2019-07-14 11:30:34
        關(guān)鍵詞:重傳狀態(tài)機(jī)控制算法

        TCP/IP和Linux系統(tǒng)層級的很多設(shè)計(jì)都可以用于中間件系統(tǒng)架構(gòu)上,比如說TCP擁塞控制算法也可以用在以響應(yīng)時間來限流的中間件上。像TCP/IP協(xié)議這種技術(shù),都是經(jīng)過長時間的考驗(yàn)的,都是前人智慧的結(jié)晶,學(xué)習(xí)后可以給大家很多啟示和幫助。

        TCP協(xié)議有兩個比較重要的控制算法,一個是流量控制,另一個就是擁塞控制。

        TCP協(xié)議通過滑動窗口來進(jìn)行流量控制,它是控制發(fā)送方的發(fā)送速度從而使接受者能及時接收并處理數(shù)據(jù)包(以下簡稱包)。而擁塞控制作用于整體網(wǎng)絡(luò),它是防止過多的包被發(fā)送到網(wǎng)絡(luò)中,避免出現(xiàn)網(wǎng)絡(luò)負(fù)載過大,出線網(wǎng)絡(luò)擁塞的情況。

        了解擁塞控制算法需要掌握其狀態(tài)機(jī)和四種算法。擁塞控制狀態(tài)機(jī)有五種,分別是Open、Disorder、CWR、Recovery和Loss狀態(tài)。四個算法為慢啟動、擁塞避免、擁塞發(fā)生時算法和快速恢復(fù)。

        ※擁塞控制狀態(tài)機(jī)

        和TCP一樣,擁塞控制算法也有其狀態(tài)。當(dāng)發(fā)送方收到一個ACK時,LinuxTCP通過狀態(tài)機(jī)的狀態(tài)來決定其接下來的行為,是應(yīng)該降低擁塞窗口cwnd(CongestionWindow)值,或者保持cwnd不變,還是繼續(xù)增加cwnd。如果處理不當(dāng),可能會導(dǎo)致丟包或者超時。

        1.Open狀態(tài)

        Open狀態(tài)是擁塞控制狀態(tài)機(jī)的默認(rèn)狀態(tài)。這種狀態(tài)下,當(dāng)ACK到達(dá)時,發(fā)送方根據(jù)擁塞窗口cwnd是小于還是大于慢啟動閾值ssthresh(slowstartthreshold),來按照慢啟動或者擁塞避免算法來調(diào)整擁塞窗口。

        2.Disorder狀態(tài)

        當(dāng)發(fā)送方檢測到DACK(重復(fù)確認(rèn))或者SACK(選擇性確認(rèn))時,狀態(tài)機(jī)將轉(zhuǎn)變?yōu)镈isorder狀態(tài)。在此狀態(tài)下,發(fā)送方遵循飛行(in-flight)包守恒原則,即一個新包只有在一個舊包離開網(wǎng)絡(luò)后才發(fā)送,也就是發(fā)送方收到舊包的ACK后,才會再發(fā)送一個新包。

        3.CWR狀態(tài)

        發(fā)送方接收到一個顯示擁塞通知時,并不會立刻減少擁塞窗口cwnd,而是每收到兩個ACK就減少一個段,直到窗口的大小減半為止。當(dāng)cwnd正在減小并且網(wǎng)絡(luò)中有沒有重傳包時,這個狀態(tài)就叫CWR(CongestionWindowReduced,擁塞窗口減少)狀態(tài)。CWR狀態(tài)可以轉(zhuǎn)變成Recovery或者Loss狀態(tài)。

        4.Recovery狀態(tài)

        當(dāng)發(fā)送方接收到足夠(推薦為三個)的DACK(重復(fù)確認(rèn))后,進(jìn)入該狀態(tài)。在該狀態(tài)下,擁塞窗口cnwd每收到兩個ACK就減少一個段(segment),直到cwnd等于慢啟動閾值ssthresh,也就是剛進(jìn)入Recover狀態(tài)時cwnd的一半大小。發(fā)送方保持Recovery狀態(tài)直到所有進(jìn)入Recovery狀態(tài)時正在發(fā)送的數(shù)據(jù)段都成功地被確認(rèn),然后發(fā)送方恢復(fù)成Open狀態(tài),重傳超時有可能中斷Recovery狀態(tài),進(jìn)入Loss狀態(tài)。

        5.Loss狀態(tài)

        當(dāng)一個RTO(重傳超時時間)到期后,發(fā)送方進(jìn)入Loss狀態(tài)。所有正在發(fā)送的數(shù)據(jù)標(biāo)記為丟失,擁塞窗口cwnd設(shè)置為一個段(segment),發(fā)送方再次以慢啟動算法增大擁塞窗口cwnd。

        Loss和Recovery狀態(tài)的區(qū)別是,Loss狀態(tài)下?lián)砣翱谠诎l(fā)送方設(shè)置為一個段后增大,而Recovery狀態(tài)下?lián)砣翱谥荒鼙粶p小。Loss狀態(tài)不能被其他的狀態(tài)中斷,因此,發(fā)送方只有在所有Loss狀態(tài)開始時正在傳輸?shù)臄?shù)據(jù)都得到成功確認(rèn)后,才能退到Open狀態(tài)。

        ※四大算法

        擁塞控制主要是四個算法:慢啟動、擁塞避免、擁塞發(fā)生、快速恢復(fù)。這個四算法的發(fā)展經(jīng)歷了很多時間,直到今天都還在優(yōu)化中。

        1.慢啟動算法(SlowStart)

        所謂慢啟動,也就是TCP連接剛建立,一點(diǎn)一點(diǎn)地提速,試探一下網(wǎng)絡(luò)的承受能力,以免直接擾亂了網(wǎng)絡(luò)通道的秩序。

        (1)連接建好的,開始先初始化擁塞窗口,cwnd值大小為1,表明可以傳一個MSS大小的數(shù)據(jù);

        (2)每當(dāng)收到一個ACK,cwnd值加1,呈線性上升;

        (3)每當(dāng)過了一個往返延遲時間RTT(Round-TripTime),cwnd值直接翻倍,呈指數(shù)讓升;

        (4)還有一個ssthresh(slowstartthreshold),是一個上限,當(dāng)cwnd≥ssthresh時,就會進(jìn)入“擁塞避免算法”。

        2.擁塞避免算法(CongestionAvoidance)

        如同前邊所說的,當(dāng)擁塞窗口大小cwnd大于等于慢啟動閾值ssthresh后,就進(jìn)入擁塞避免算法。算法如下:

        收到一個ACK,則cwnd=cwnd+1/cwnd,每當(dāng)過了一個往返延遲時間RTT,cwnd值加1。過了慢啟動閾值后,擁塞避免算法可以避免窗口增長過快導(dǎo)致窗口擁塞,而是緩慢地增加調(diào)整到網(wǎng)絡(luò)的最佳值。

        3.擁塞狀態(tài)時的算法

        一般來說,TCP擁塞控制默認(rèn)網(wǎng)絡(luò)丟包是由于網(wǎng)絡(luò)擁塞導(dǎo)致的,所以一般的TCP擁塞控制算法以丟包為網(wǎng)絡(luò)進(jìn)入擁塞狀態(tài)的信號。對于丟包有兩種判定方式,一種是超時重傳RTO(RetransmissionTimeout)超時,另一個是收到三個重復(fù)確認(rèn)ACK。

        超時重傳是TCP協(xié)議保證數(shù)據(jù)可靠性的一個重要機(jī)制,其原理是在發(fā)送一個數(shù)據(jù)以后就開啟一個計(jì)時器,在一定時間內(nèi)如果沒有得到發(fā)送數(shù)據(jù)報的ACK報文,那么就重新發(fā)送數(shù)據(jù),直到發(fā)送成功為止。

        但是如果發(fā)送端接收到3個以上的重復(fù)ACK,TCP就意識到數(shù)據(jù)發(fā)生丟失,需要重傳。這個機(jī)制不需要等到重傳定時器超時,所以叫作快速重傳,而快速重傳后沒有使用慢啟動算法,而是使用擁塞避免算法,所以這又叫作快速恢復(fù)算法。

        超時重傳RTO超時,TCP會重傳數(shù)據(jù)包。TCP認(rèn)為這種情況比較糟糕,反應(yīng)也比較強(qiáng)烈:

        (1)由于發(fā)生丟包,將慢啟動閾值ssthresh設(shè)置為當(dāng)前cwnd的一半,即ssthresh=cwnd/2;

        (2)cwnd重置為1;

        (3)進(jìn)入慢啟動過程。

        最為早期的TCPTahoe算法就是使用上述處理

        辦法,但是由于一丟包就一切重來,導(dǎo)致cwnd重置為1,十分不利于網(wǎng)絡(luò)數(shù)據(jù)的穩(wěn)定傳遞。

        所以,TCPReno算法進(jìn)行了優(yōu)化。當(dāng)收到3個重復(fù)確認(rèn)ACK時,TCP就開啟快速重傳算法,而不用等到RTO超時再進(jìn)行重傳:

        (1)cwnd大小縮小為當(dāng)前的一半;(2)ssthresh設(shè)置為縮小后的cwnd值;(3)然后進(jìn)入快速恢復(fù)算法(FastRecovery)。

        4.快速恢復(fù)算法(FastRecovery)

        TCPTahoe是早期的算法,所以沒有快速恢復(fù)算法,而Reno算法有。在進(jìn)入快速恢復(fù)之前,cwnd和ssthresh已經(jīng)被更改為原有cwnd的一半。快速恢復(fù)算法的邏輯如下:

        (1)cwnd=cwnd+3*MSS,加3*MSS的原因是因?yàn)槭盏?個重復(fù)的ACK;

        (2)重傳DACKs指定的數(shù)據(jù)包;(3)如果再收到DACKs,那么cwnd值增加1;(4)如果收到新的ACK,表明重傳的包成功了,

        那么退出快速恢復(fù)算法。將cwnd設(shè)置為ssthresh,然如圖4所示,當(dāng)?shù)?個包發(fā)生了丟失,所以導(dǎo)致接收方接收到3個重復(fù)ACK,也就是ACK5。所以將ssthresh設(shè)置為當(dāng)時cwnd的一半,也就是6/2=3,cwnd設(shè)置為3+3=6。然后重傳第5個包。當(dāng)收到新的ACK時,也就是ACK11,則退出快速恢復(fù)階段,將cwnd重新設(shè)置為當(dāng)前的ssthresh,也就是3,然后進(jìn)入擁塞避免算法階段。

        本文為大家大致描述了TCP擁塞控制的一些機(jī)制,但是這些擁塞控制還是有很多缺陷和待優(yōu)化的地方,業(yè)界也在不斷推出新的擁塞控制算法,比如說谷歌的BBR。這些我們以后也會繼續(xù)探討,請大家繼續(xù)關(guān)注。

        猜你喜歡
        重傳狀態(tài)機(jī)控制算法
        集群式AUV可控分群控制算法
        基于有限狀態(tài)機(jī)的交會對接飛行任務(wù)規(guī)劃方法
        面向異構(gòu)網(wǎng)絡(luò)的多路徑數(shù)據(jù)重傳研究?
        基于ARM+FPGA的模塊化同步控制算法研究
        一種優(yōu)化的基于ARM Cortex-M3電池組均衡控制算法應(yīng)用
        數(shù)據(jù)鏈路層的選擇重傳協(xié)議的優(yōu)化改進(jìn)
        一種非圓旋轉(zhuǎn)工件支撐裝置控制算法
        MPTCP中一種減緩緩存阻塞的重傳策略
        FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
        基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
        在线永久看片免费的视频| 国产亚洲精品久久午夜玫瑰园 | 深夜福利啪啪片| 白白在线免费观看视频| 青青草免费在线爽视频| 后入内射国产一区二区| 国产女人高潮叫床视频| 亚洲成人免费观看| 最新日韩人妻中文字幕一区| 日韩av在线手机免费观看| 最新日本人妻中文字幕| 亚洲中文字幕无码av永久| 中文字幕人妻中文| 激情内射亚州一区二区三区爱妻| 这里有精品可以观看| 久久久久久久妓女精品免费影院| 亚洲阿v天堂网2021| 国产韩国精品一区二区三区| 人妻在线有码中文字幕| 精品一区二区三区免费视频| 天天影视色香欲综合久久| 日本视频精品一区二区| 在线播放草猛免费视频| 狠狠噜天天噜日日噜无码| 欧美a视频在线观看| 久久99久久久精品人妻一区二区| 亚洲综合自拍偷拍一区| 久久99精品久久久久久9蜜桃| 波多野结衣免费一区视频| 欧美亚洲日韩国产人成在线播放| 成a人片亚洲日本久久| 亚洲av区,一区二区三区色婷婷| 97精品国产一区二区三区 | 无码熟熟妇丰满人妻啪啪| 国产爆乳无码一区二区在线 | 国产盗摄一区二区三区av| 69国产成人精品午夜福中文| 亚洲国产av精品一区二区蜜芽| 丰满爆乳无码一区二区三区| 国产成人AⅤ| 精品在线视频在线视频在线视频|