RFC8312 中文翻譯——用于快速長距離網(wǎng)絡(luò)的 cubic 算法

RFC8312

摘要

CUBIC是當(dāng)前TCP標(biāo)準(zhǔn)的擴(kuò)展。它與現(xiàn)有的TCP標(biāo)準(zhǔn)僅在發(fā)送方的擁塞控制算法上有所不同。特別地,它采用了三次函數(shù)代替了現(xiàn)有TCP標(biāo)準(zhǔn)中的線性窗口增加函數(shù),提高了在高速長距離網(wǎng)絡(luò)環(huán)境下的可擴(kuò)展性和穩(wěn)定性。CUBIC及其前身的算法已經(jīng)被Linux作為默認(rèn)算法使用了很多年。本文檔提供了CUBIC的規(guī)范,以支持第三方實(shí)現(xiàn),并通過對(duì)CUBIC性能的實(shí)驗(yàn)來征求社區(qū)反饋。

此 Memo 的狀態(tài)

本文件不是互聯(lián)網(wǎng)標(biāo)準(zhǔn)跟蹤規(guī)范;它是為了提供信息而出版的。

本文檔是Internet工程任務(wù)組(IETF)的產(chǎn)品。它代表了IETF社區(qū)的共識(shí)。它已經(jīng)收到了公眾的審查,并已批準(zhǔn)出版的互聯(lián)網(wǎng)工程指導(dǎo)小組(IESG)。并非所有IESG批準(zhǔn)的文件都適用于任何級(jí)別的互聯(lián)網(wǎng)標(biāo)準(zhǔn);見RFC 7841第2節(jié)。

有關(guān)本文件的當(dāng)前狀態(tài)、任何勘誤表以及如何提供反饋的信息,請(qǐng)?jiān)L問https://www.rfc-editor.org/info/rfc8312.

1. 介紹

TCP在快速長距離網(wǎng)絡(luò)中的低利用率問題在[K03]和[RFC3649]中有很好的描述。這個(gè)問題產(chǎn)生于在具有大帶寬延遲積(BDP)的網(wǎng)絡(luò)中,擁塞事件之后擁塞窗口的緩慢增加,在 [HKLRX06] 指出,即使在數(shù)百個(gè)數(shù)據(jù)包的擁塞窗口大小范圍內(nèi),也經(jīng)常觀察到這個(gè)問題。這個(gè)問題同樣適用于所有 Reno 風(fēng)格的TCP標(biāo)準(zhǔn)及其變體,包括TCP-Reno[RFC5681]、TCP-NewReno[RFC6582][RFC6675]、SCTP[RFC4960]和TFRC[RFC5348],它們使用相同的線性增加函數(shù)進(jìn)行窗口增長,我們?cè)谙挛闹袑⑺鼈兘y(tǒng)稱為“標(biāo)準(zhǔn)TCP”(Standard TCP)。

CUBIC最初是在 [HRX08] 中提出的,它是對(duì)標(biāo)準(zhǔn)TCP擁塞控制算法的一種改進(jìn)。本文檔描述了CUBIC的最新規(guī)范。具體來說,CUBIC使用了一個(gè)CUBIC函數(shù)來代替標(biāo)準(zhǔn)TCP的線性窗口增加函數(shù),以提高在快速和長距離網(wǎng)絡(luò)下的可擴(kuò)展性和穩(wěn)定性。

Binary-Increase擁塞控制(BIC-TCP)[XHR04] 是CUBIC的前身,在2005年被Linux選為默認(rèn)的TCP擁塞控制算法,已經(jīng)被整個(gè)互聯(lián)網(wǎng)社區(qū)使用了好幾年。CUBIC使用了與BIC-TCP類似的窗口增加功能,在保持BIC-TCP的優(yōu)勢(shì)(如穩(wěn)定性、窗口可伸縮性和RTT公平性)的同時(shí),它在帶寬使用方面比BIC-TCP更具攻擊性和公平性。CUBIC已經(jīng)取代BIC-TCP成為Linux中默認(rèn)的TCP擁塞控制算法,并被Linux全局部署。通過在各種互聯(lián)網(wǎng)場景中的廣泛測(cè)試,我們相信CUBIC在全球互聯(lián)網(wǎng)上的測(cè)試和部署是安全的。

在接下來的章節(jié)中,我們首先簡要說明了CUBIC的設(shè)計(jì)原則,然后提供了CUBIC的確切規(guī)格,最后根據(jù)[RFC5033]中規(guī)定的指南討論了CUBIC的安全特性。

2. 約定

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

本文件中的關(guān)鍵詞“必須”、“不得”、“必須”、“應(yīng)”、“不應(yīng)”、“應(yīng)”、“不應(yīng)”、“建議”、“不建議”、“可”和“可選”在所有大寫字母出現(xiàn)時(shí)(且僅在所有大寫字母出現(xiàn)時(shí))應(yīng)按照BCP 14[RFC2119][RFC8174]的規(guī)定進(jìn)行解釋,如下所示。

3. CUBIC 設(shè)計(jì)原理

CUBIC遵循以下設(shè)計(jì)原則:

  • 原則1:為了更好的網(wǎng)絡(luò)利用率和穩(wěn)定性,CUBIC使用了一個(gè)三次函數(shù)的凹凸曲線來增加擁塞窗口的大小,而不是僅僅使用一個(gè)凸函數(shù)。

  • 原則2:為了對(duì)TCP友好,CUBIC被設(shè)計(jì)成在RTT短、帶寬小、標(biāo)準(zhǔn)TCP性能好的網(wǎng)絡(luò)中表現(xiàn)得像標(biāo)準(zhǔn)TCP。

  • 原則3:對(duì)于RTT公平性,CUBIC被設(shè)計(jì)成在具有不同RTT的流之間實(shí)現(xiàn)線性帶寬共享。

  • 原則4:CUBIC適當(dāng)設(shè)置乘性窗口遞減因子,以平衡可伸縮性和收斂速度。

3.1 原則1

為了更好的網(wǎng)絡(luò)利用率和穩(wěn)定性,CUBIC使用了一個(gè)三次函數(shù)的凹凸曲線來增加擁塞窗口的大小,而不是僅僅使用一個(gè)凸函數(shù)。

為了更好的網(wǎng)絡(luò)利用率和穩(wěn)定性,CUBIC [HRX08] 使用了一個(gè)三次函數(shù)來增加窗口,該函數(shù)根據(jù)距離上一次擁塞事件所經(jīng)過的時(shí)間來計(jì)算窗口增加的大小。大多數(shù)替代標(biāo)準(zhǔn)TCP的擁塞控制算法都使用凸函數(shù)來增加擁塞窗口,而CUBIC算法同時(shí)使用凸函數(shù)和凹函數(shù)來增加窗口。在通過冗余ACK或顯式擁塞通知(ECN Echo ACKs)[RFC3168] 檢測(cè)到擁塞事件,使得窗口減小之后,CUBIC將檢測(cè)到擁塞時(shí)的窗口大小記錄為 W_{max} ,并對(duì)擁塞窗口進(jìn)行乘性減少。在進(jìn)入擁塞避免階段后,利用三次函數(shù)的凹形曲線(左邊)增加擁塞窗口。三次函數(shù)的穩(wěn)定點(diǎn)設(shè)置為 W_{max} ,窗口大小在到達(dá) W_{max} 之前會(huì)遵循三次函數(shù)曲線持續(xù)增長。在窗口大小達(dá)到 W_{max} 之后,三次函數(shù)進(jìn)入到凸形曲線區(qū)域(右邊),窗口大小開始沿著凸形區(qū)域增大。這種窗口調(diào)整方式(先凹后凸)提高了算法的穩(wěn)定性,同時(shí)保持了較高的網(wǎng)絡(luò)利用率[CEHRX07]。這是因?yàn)榇翱诖笮缀醣3植蛔?,圍繞著 W_{max} 形成一個(gè)穩(wěn)態(tài)區(qū)域,此時(shí)網(wǎng)絡(luò)利用率被認(rèn)為是最高的。在穩(wěn)態(tài)下,CUBIC的大多數(shù)窗口大小樣本都接近于 W_{max} ,從而提高了網(wǎng)絡(luò)的利用率和穩(wěn)定性。需要注意的是,那些僅使用凸函數(shù)來增加擁塞窗口大小的擁塞控制算法的在接近 W_{max} 時(shí)窗口會(huì)劇烈增加,從而在網(wǎng)絡(luò)飽和點(diǎn)附近引入大量的包突發(fā),可能導(dǎo)致頻繁的全局丟失同步( global loss synchronizations )。

  • W_{max} => 記錄了早期檢測(cè)到擁塞時(shí)的窗口大小,表征客戶端窗口如果超過這個(gè)值太多可能會(huì)導(dǎo)致大量丟包,應(yīng)該盡量的接近并穩(wěn)定在這個(gè)值(在穩(wěn)態(tài)階段);
  • 全局同步:每個(gè)發(fā)送方與其他發(fā)送方同時(shí)降低和增加傳輸速率的這種模式被稱為“全局同步”。=> TCP global synchronization
image-20200702115622954

3.2 原則2

為了對(duì)TCP友好,CUBIC被設(shè)計(jì)成在RTT短、帶寬小、標(biāo)準(zhǔn)TCP性能好的網(wǎng)絡(luò)中表現(xiàn)得像標(biāo)準(zhǔn)TCP。

CUBIC 通過建立 “TCP友好區(qū)域” ,使其在較小的 BDP 場景下,將每個(gè)流的公平性提升到標(biāo)準(zhǔn)TCP的水平。注意,標(biāo)準(zhǔn)TCP在短RTT和小帶寬(或小BDP)網(wǎng)絡(luò)下表現(xiàn)良好,但在具有長RTT和大帶寬(或大BDP)的網(wǎng)絡(luò)中,存在可擴(kuò)展性問題。標(biāo)準(zhǔn)TCP的另一種擁塞控制算法設(shè)計(jì)為在每個(gè)流的基礎(chǔ)上對(duì)標(biāo)準(zhǔn)TCP友好,必須在小型BDP網(wǎng)絡(luò)中比在大型BDP網(wǎng)絡(luò)中更有效地增加擁塞窗口。CUBIC 的侵略性主要取決于窗口縮減前的最大窗口大小 W_{max},小BDP網(wǎng)絡(luò)的 W_{max} 小于大BDP網(wǎng)絡(luò)。因此,CUBIC在小型BDP網(wǎng)絡(luò)中增加擁塞窗口的力度小于大型BDP網(wǎng)絡(luò)。因此,當(dāng) CUBIC 算法的三次函數(shù)增加擁塞窗口的力度小于標(biāo)準(zhǔn)TCP時(shí),CUBIC 只遵循標(biāo)準(zhǔn)TCP的窗口大小,以確保 CUBIC 算法在小型BDP網(wǎng)絡(luò)中至少達(dá)到與標(biāo)準(zhǔn)TCP相同的吞吐量。我們將 CUBIC 類似于標(biāo)準(zhǔn)TCP的區(qū)域稱為“TCP友好區(qū)域”。

3.3 原則3

對(duì)于RTT公平性,CUBIC被設(shè)計(jì)成在具有不同RTT的流之間實(shí)現(xiàn)線性帶寬共享。

具有不同RTT的兩個(gè) CUBIC 流( CUBIC flow ) 的吞吐量比率( ratio )與其RTT比率的倒數(shù)成正比,其中對(duì)于每一個(gè)流的吞吐量近似于其擁塞窗口的大小除以其RTT。具體地說,CUBIC在TCP友好區(qū)之外保持獨(dú)立于RTT的窗口增長率,因此具有不同RTT的流在穩(wěn)定狀態(tài)下在TCP友好區(qū)之外操作時(shí)具有相似的擁塞窗口大小。這種線性吞吐率的概念類似于高統(tǒng)計(jì)復(fù)用環(huán)境下的標(biāo)準(zhǔn)TCP,在這種環(huán)境下,數(shù)據(jù)包丟失與單個(gè)流量無關(guān)。然而,在低統(tǒng)計(jì)復(fù)用環(huán)境下,具有不同RTT的標(biāo)準(zhǔn)TCP流的吞吐量比與其RTT比的倒數(shù)成二次比例[XHR04]。CUBIC始終確保線性吞吐量比與統(tǒng)計(jì)復(fù)用的級(jí)別無關(guān)。這是對(duì)標(biāo)準(zhǔn)TCP的改進(jìn)。雖然對(duì)不同RTT流的特定吞吐量比率沒有共識(shí),但我們認(rèn)為在有線互聯(lián)網(wǎng)下,使用線性吞吐量比率似乎比使用相等吞吐量(即,不同RTT流的相同吞吐量)或更高階吞吐量比率(例如:低統(tǒng)計(jì)復(fù)用環(huán)境下標(biāo)準(zhǔn)TCP的二次吞吐率)更加合理。

3.4 原則4

CUBIC適當(dāng)設(shè)置乘性窗口遞減因子,以平衡可伸縮性和收斂速度。

為了在可擴(kuò)展性和收斂速度之間取得平衡,CUBIC將乘性窗口遞減因子設(shè)置為0.7,而標(biāo)準(zhǔn)TCP使用0.5。雖然這提高了CUBIC的可伸縮性,但這種決策的一個(gè)副作用是收斂較慢,特別是在低統(tǒng)計(jì)復(fù)用環(huán)境下。這種設(shè)計(jì)選擇遵循了《高速TCP》(HSTCP)[RFC3649]一書的作者和其他研究人員(例如[GV02])所做的觀察:當(dāng)前的互聯(lián)網(wǎng)變得更加異步,丟失同步頻率更低,統(tǒng)計(jì)復(fù)用率更高。在這種環(huán)境下,即使嚴(yán)格的乘增乘減(MIMD)也可以收斂。具有相同RTT的 CUBIC流 總是獨(dú)立于統(tǒng)計(jì)復(fù)用收斂到相同的吞吐量,從而實(shí)現(xiàn)算法內(nèi)公平性。我們還發(fā)現(xiàn),在統(tǒng)計(jì)復(fù)用充分的環(huán)境下,CUBIC流 的收斂速度是合理的。

4. CUBIC 擁塞控制

本文檔中所有窗口大小的單位為最大段大?。∕SS, Maximum Segment Size )的段,所有時(shí)間的單位為秒。cwnd 表示流的擁塞窗口大小, ssthresh 表示慢啟動(dòng)閾值。

4.1 窗口增加函數(shù)

CUBIC通過僅在接收到ACK時(shí)增加擁塞窗口來維持標(biāo)準(zhǔn)TCP的確認(rèn)(ACK)時(shí)鐘。它不會(huì)對(duì)TCP的快速恢復(fù)和重傳進(jìn)行任何更改,例如TCP NewReno [RFC6582] [RFC6675]。在擁塞避免期間,如果重復(fù)ack檢測(cè)到數(shù)據(jù)包丟失或ack使用ECN Echo flags[RFC3168]檢測(cè)到網(wǎng)絡(luò)擁塞,CUBIC將更改標(biāo)準(zhǔn)TCP的窗口增加功能。假設(shè)在上一次擁塞事件中窗口縮小之前的窗口大小為 W_{max} 。

CUBIC使用以下函數(shù)進(jìn)行窗口的增加:

Eq. 1 W_{cubic}(t) = C * (t - K)^3 + W_{max}

其中 C 是一個(gè)常數(shù),用于確定高BDP網(wǎng)絡(luò)中窗口增加的侵略性,t 是從當(dāng)前擁塞避免開始所經(jīng)過的時(shí)間, K 是上述函數(shù)將當(dāng)前窗口大小增加到 W_{max} 所需的時(shí)間,如果沒有進(jìn)一步的擁塞事件,則使用以下公式計(jì)算:

Eq. 2 K = \sqrt[3]{\frac{W_{max} * (1 - \beta)}{C}}

其中 \beta_{cubic} 是CUBIC的乘性遞減因子,即,當(dāng)檢測(cè)到擁塞事件時(shí),CUBIC將其 cwnd 減少到 W_{cubic}(0)=W_{max} * \beta 。我們將在第4.5節(jié)討論如何設(shè)置 \beta_{cubic} ,在第5節(jié)討論如何設(shè)置 C

當(dāng)在擁塞避免期間接收到ACK時(shí),CUBIC使用 Eq. 1 計(jì)算下一RTT期間的窗口增加率 W_{cubic}(t+RTT) 作為擁塞窗口的候選目標(biāo)值,其中RTT是由標(biāo)準(zhǔn)TCP計(jì)算的加權(quán)平均RTT。

根據(jù)當(dāng)前擁塞窗口大小 cwnd 的值,CUBIC以三種不同的模式運(yùn)行:

  1. TCP友好區(qū)域 ,確保CUBIC至少達(dá)到與標(biāo)準(zhǔn)TCP相同的吞吐量;
  2. 凹區(qū)域 ,如果 CUBIC 不在TCP友好區(qū)域,且 cwnd 小于 W_{max};
  3. 凸區(qū)域 ,如果 CUBIC 不在TCP友好區(qū)域,且 cwnd 大于 W_{max}。

下面,我們將描述CUBIC在每個(gè)區(qū)域采取的確切行動(dòng)。

4.2 TCP友好區(qū)域

標(biāo)準(zhǔn)TCP在某些類型的網(wǎng)絡(luò)中表現(xiàn)良好,例如,在短RTT和小帶寬(或小BDP)網(wǎng)絡(luò)下。在這些網(wǎng)絡(luò)中,我們使用TCP友好區(qū)域來確保CUBIC至少達(dá)到與標(biāo)準(zhǔn)TCP相同的吞吐量。

根據(jù)[FHP00]中的分析,設(shè)計(jì)了TCP友好區(qū)。分析研究了加法因子為 \alpha_{aimd} (每RTT增加一個(gè)窗口)、乘法因子為 \beta_{aimd}(表示為)的加法增乘減(AIMD)算法的性能. 具體地說,AIMD(\alpha_{aimd}, \beta_{aimd}) 的平均擁塞窗口大小可以使用 Eq .3 (其中 \alpha_{aimd} = \frac{3 * (1 - \beta_{aimd})}{1 + \beta_{aimd}} )來計(jì)算窗口大小,以此來實(shí)現(xiàn)與使用AIMD(1,0.5)的標(biāo)準(zhǔn)TCP相同的平均窗口大小。

Eq .3 AVG_{W_{aimd}} = \sqrt{\frac{\alpha_{aimd} * (1 + \beta_{aimd})}{2 * (1 - \beta_{aimd}) * p}}

基于上述分析,CUBIC使用Eq. 4來估計(jì)窗口大小 W_{est}AIMD(\alpha_{aimd}, \beta_{aimd}), 其中 \alpha_{aimd} = \frac{3 * (1 - \beta_{cubic})}{1 + \beta_{cubic}}, \beta_{aimd} = \beta_{cubic})的 與 以及 ,它實(shí)現(xiàn)了與標(biāo)準(zhǔn)TCP相同的平均窗口大小。當(dāng)在擁塞避免階段收到 ACK 時(shí),( cwnd 可以大于或小于 W_{max} ),CUBIC 檢查 W_{cubic}(t) 是否小于W_{est}(t) 。 如果小于,則 CUBIC 當(dāng)前位于TCP友好區(qū)域,在每次收到ACK時(shí), cwnd 應(yīng)該設(shè)置為 W_{est}(t) 。

Eq .4 W_{est}(t) = W_{max} * \beta_{cubic} + \frac{3 * (1 - \beta_{cubic})}{1 + \beta_{cubic}} * \frac{t}{RTT}

4.3 凹區(qū)域

當(dāng)在擁塞避免階段接收到ACK時(shí),如果CUBIC不在TCP友好區(qū)域并且 cwnd 小于 W_{max} ,那么 CUBIC 處于凹區(qū)域。CUBIC算法處于次區(qū)域時(shí),每收到一個(gè)ACK,cwnd 必須增加 \frac{W_{cubic}(t + RTT) - cwnd}{cwnd} ,其中 W_{cubic}(t+RTT) 使用 Eq. 1 計(jì)算。

4.4 凸區(qū)域

當(dāng)在擁塞避免階段接收到ACK時(shí),如果CUBIC不在TCP友好區(qū)域并且 cwnd 大于或等于 W_{max} , 那么 CUBIC 處于凸區(qū)域。凸區(qū)域表示自上一次擁塞事件以來,網(wǎng)絡(luò)條件可能受到了干擾,這可能意味著在一些流離開之后,可用帶寬會(huì)增加。由于因特網(wǎng)是高度異步的,所以在不引起可用帶寬的重大變化的情況下,一定量的擾動(dòng)總是可能的。在這個(gè)區(qū)域,CUBIC非常小心,非常緩慢地增加它的窗口大小。凸函數(shù)曲線確保窗口在開始時(shí)增長非常緩慢,并逐漸增加其增長率。我們也把這個(gè)區(qū)域稱為“最大探測(cè)階段”,因?yàn)镃UBIC正在尋找一個(gè)新的 W_{max} 。CUBIC算法處于次區(qū)域時(shí),每收到一個(gè)ACK,cwnd 必須增加 \frac{W_{cubic}(t + RTT) - cwnd}{cwnd} ,其中 W_{cubic}(t+RTT) 使用 Eq. 1 計(jì)算。

4. 5 乘性減少

當(dāng)收到三次冗余ACK、檢測(cè)到丟包或收到顯示擁塞控制包時(shí),檢測(cè)到網(wǎng)絡(luò)擁塞,CUBIC 通過如下步驟更新其 W_{max} 、 cwndssthresh

其中 \beta_{cubic} 應(yīng)設(shè)置為0.7

W_{max} = cwnd; // save window size before reduction
ssthresh = cwnd * \beta_{cubic}; // new slow-start threshold
ssthresh = max(ssthresh, 2); // threshold is at least 2 MSS
cwnd = cwnd * \beta_{cubic}; // window reduction

W_max = cwnd;                 // save window size before reduction
ssthresh = cwnd * beta_cubic; // new slow-start threshold
ssthresh = max(ssthresh, 2);  // threshold is at least 2 MSS
cwnd = cwnd * beta_cubic;     // window reduction

\beta_{cubic} 設(shè)置為一個(gè)大于 0.5 的值的副作用為收斂速度較慢。我們認(rèn)為,雖然設(shè)置自適應(yīng)的 \beta_{cubic} 可以使得算法更快的收斂,但這將使得 CUBIC 的分析更加困難。這種自適應(yīng)調(diào)整 \beta_{cubic} 是將會(huì)在 CUBIC 的下一個(gè)版本納入考慮。

4.6 Fast Convergence

為了提高 CUBIC 算法的收斂速度,我們?cè)?CUBIC 算法中加入了一個(gè)啟發(fā)式算法。當(dāng)一個(gè)新的流加入網(wǎng)絡(luò)時(shí),如果現(xiàn)有的流已經(jīng)使用了網(wǎng)絡(luò)的所有帶寬,那么網(wǎng)絡(luò)中的現(xiàn)有流需要放棄一些帶寬來允許新的流有一些增長的空間。為了加速現(xiàn)有流的帶寬釋放,應(yīng)該實(shí)現(xiàn)以下稱為“快速收斂”的機(jī)制。

通過快速收斂,當(dāng)發(fā)生擁塞事件時(shí),在擁塞窗口的窗口縮小之前,每個(gè)流會(huì)記住自己在更新 W_{max} 之前最后一個(gè) W_{max} 的值,我們將其標(biāo)記為 W_{lastmax} 。

if (W_max < W_last_max){ // should we make room for others
  W_last_max = W_max;             // remember the last W_max
  W_max = W_max*(1.0+beta_cubic)/2.0; // further reduce W_max
} else {
  W_last_max = W_max              // remember the last W_max
}

在一個(gè)擁塞事件發(fā)生時(shí),如果的當(dāng)前 W_{max} 值小于 W_{lastmax},則表示由于可用帶寬的變化,該流的飽和點(diǎn)正在減小。然后我們?cè)试S這個(gè)流通過進(jìn)一步減少 W_{max} 來釋放更多的帶寬。此操作有效地延長了此流增加其擁塞窗口的時(shí)間,因?yàn)闇p少 W_{max} 會(huì)迫使流更早地達(dá)到飽和點(diǎn)。這使得新的流有更多的時(shí)間趕上它的擁塞窗口大小。

4.7 Timeout

在超時(shí)的情況下,CUBIC遵循標(biāo)準(zhǔn)TCP來減少 cwnd [RFC5681],與標(biāo)準(zhǔn)TCP[RFC5681]有一點(diǎn)不同的是,CUBIC 使用 \beta_{cubic} 來設(shè)置 ssthresh 。

在超時(shí)之后的第一次擁塞避免期間,CUBIC使用 Eq. 1 增加其擁塞窗口大小,其中 t 是自當(dāng)前擁塞避免開始以來經(jīng)過的時(shí)間, K 被設(shè)置為0,并且 W_{max} 被設(shè)置為當(dāng)前擁塞避免開始時(shí)的擁塞窗口大小。

4.8 Slow Start

當(dāng) cwnd 不大于 ssthresh 時(shí),CUBIC必須采用慢啟動(dòng)算法。在慢啟動(dòng)算法中,CUBIC可以在一般網(wǎng)絡(luò)中選擇標(biāo)準(zhǔn)TCP慢啟動(dòng)算法RFC5681,也可以在快速和長距離網(wǎng)絡(luò)中選擇有限慢啟動(dòng)算法RFC3742或混合慢啟動(dòng)算法HR08。

在CUBIC運(yùn)行混合慢啟動(dòng)[HR08]的情況下,它可以退出第一個(gè)慢啟動(dòng)而不引起任何分組丟失,因此是未定義的。在這種特殊情況下,CUBIC切換到擁塞避免并使用 Eq. 1 增大其擁塞窗口大小,其中 t 是自當(dāng)前擁塞避免開始以來經(jīng)過的時(shí)間,K 被設(shè)置為0,并且 W_{max} 設(shè)置為當(dāng)前擁塞避免開始時(shí)的擁塞窗口大小。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • TCP擁塞控制算法的目的可以簡單概括為:公平競爭、充分利用網(wǎng)絡(luò)帶寬、降低網(wǎng)絡(luò)延時(shí)、優(yōu)化用戶體驗(yàn),然而就目前而言要實(shí)...
    VictorHong閱讀 2,709評(píng)論 0 0
  • 這是本人梳理的網(wǎng)絡(luò)編程背景知識(shí)筆記,其中很多內(nèi)容也不是原創(chuàng),拿來之后根據(jù)自己的理解做的整合。分享出來,希望對(duì)大家有...
    架構(gòu)禪話閱讀 987評(píng)論 0 1
  • RFC6298[https://datatracker.ietf.org/doc/html/rfc6298] 摘要...
    SunnyQjm閱讀 1,560評(píng)論 0 1
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來的情緒。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,682評(píng)論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險(xiǎn)厭惡者,不喜歡去冒險(xiǎn),但是人生放棄了冒險(xiǎn),也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 7,872評(píng)論 0 4

友情鏈接更多精彩內(nèi)容