• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    TCP擁塞控制機制Slow-Start淺析

    2018-01-20 06:42:04尚建貞
    電腦知識與技術(shù) 2018年31期

    尚建貞

    摘要:TCP協(xié)議在Internet中廣泛使。但隨著網(wǎng)絡(luò)通信量的增加,網(wǎng)絡(luò)擁塞不可避免。如何有效的處理網(wǎng)絡(luò)擁塞,成為網(wǎng)絡(luò)研究的熱門問題,人們也提出了很多不同的解決方案。Slow-Start(慢開始)算法通過設(shè)置接收窗口、擁塞窗口兩個變量和一套完整的控制機制,可以有效避免擁塞的發(fā)生,但網(wǎng)絡(luò)中的數(shù)據(jù)流是動態(tài)變化的,任何一種擁塞控制算法都不可能完全避免擁塞的發(fā)生,Slow-Start算法也有其自身的局限性。

    關(guān)鍵詞: TCP; 擁塞控制; Slow-Start; 接收窗口; 擁塞窗口

    中圖分類號:TP393.04? ? ? ? 文獻標識碼:A? ? ? ? 文章編號:1009-3044(2018)31-0045-02

    Slow-Start Analysis of TCP Congestion Control Mechanism

    SHANG Jian-zhen

    (Henan University of Animal Husbandry and Economy, Zhengzhou 450044, China)

    Abstract:The TCP is widely used in Internet. But with the increase of network traffic, network congestion is inevitable. How to deal with network congestion effectively has become a hot issue in network research. People also put forward many different solutions. Slow-Start algorithm can effectively avoid congestion by setting two variables of receiving window, congestion window and a complete set of control mechanism. However, the data flow in the network is dynamic, and any congestion control algorithm can not completely avoid the occurrence of congestion. Slow-Start algorithm also has its own limitations.

    Key words: TCP; congestion control; Slow-Start; receiving window; congestion window

    1 引言

    Internet具有資源共享的屬性,所以從某種意義上來說他不能因為網(wǎng)絡(luò)資源不足而限制用戶的數(shù)量,拒絕提供服務(wù)。當網(wǎng)絡(luò)資源有限的時候,只能降低服務(wù)質(zhì)量繼續(xù)為有需要的用戶提供服務(wù)。擁塞的發(fā)生是由于網(wǎng)絡(luò)資源的缺乏引起,但是單純的增加網(wǎng)絡(luò)資源并不能避免擁塞的發(fā)生。當數(shù)據(jù)包在網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)結(jié)點中經(jīng)過長期時間排隊完成轉(zhuǎn)發(fā)時,數(shù)據(jù)包本身可能早已超時;源結(jié)點因為未收到對這些數(shù)據(jù)包的確認,會誤認為超時而重發(fā)這些數(shù)據(jù)包。但是這些數(shù)據(jù)包已經(jīng)轉(zhuǎn)發(fā)到了下一跳結(jié)點,這樣就會浪費網(wǎng)絡(luò)資源,進一步加重網(wǎng)絡(luò)擁塞。實際上,轉(zhuǎn)發(fā)結(jié)點因為緩存空間不足而丟包更多的由于網(wǎng)絡(luò)擁塞引起的,它并不是引起網(wǎng)絡(luò)擁塞的主要原因。另外,單純提高數(shù)據(jù)鏈路的傳輸速率和提高轉(zhuǎn)發(fā)結(jié)點的處理能力也不能從根本上解決擁塞問題。

    當網(wǎng)絡(luò)的負載超出了它的處理能力時,擁塞就會發(fā)生。為了防止出現(xiàn)網(wǎng)絡(luò)擁塞,TCP設(shè)計了很多的擁塞控制機制。雖然網(wǎng)絡(luò)層也試圖處理擁塞問題,但大多數(shù)的擁塞控制是由傳輸層的TCP協(xié)議完成,因為解決網(wǎng)絡(luò)擁塞問題的最根本的方法,是減慢數(shù)據(jù)發(fā)送的速率。

    擁塞控制是一種用來調(diào)整TCP連接上發(fā)送數(shù)據(jù)包速率的算法,通過對發(fā)送數(shù)據(jù)包速率的調(diào)整,使之無限接近當前網(wǎng)絡(luò)不斷變化的吞吐量。

    1999年發(fā)布的RFC2581中定義了三種算法:Slow-Start(慢開始),Congestion Avoidance(擁塞避免)和Fast Recovery(快速恢復)。本文僅討論其中的Slow-Start算法。

    2 Slow-Start(慢開始)算法

    解決網(wǎng)絡(luò)擁塞問題,要考慮兩個方面:網(wǎng)絡(luò)處理能力和接收方的處理能力。既要考慮發(fā)送端的發(fā)送速率不會擁塞網(wǎng)絡(luò)也要考慮接收端的處理能力。為此,對于每一個TCP連接,都會維持以下兩個狀態(tài)變量:

    (1)接收方窗口大小rwinsize(riceiver window size):接收方根據(jù)當前處理能力所允許的窗口大小,也就是TCP報文段頭部中窗口大小字段,這是來自接收方的流量控制。

    (2)擁塞窗口大小cwinsize(congestion window size):是發(fā)送方根據(jù)網(wǎng)絡(luò)擁塞情況自己估算的發(fā)送窗口的大小,是來自發(fā)送端的流量控制。

    發(fā)送方確定擁塞窗口的原則是:只要網(wǎng)絡(luò)沒有出現(xiàn)擁塞,就把cwinsize的值增大一些,以便把更多的報文段發(fā)送出去;如果網(wǎng)絡(luò)出現(xiàn)了擁塞,就把cwinsize的值減小一些,以減少發(fā)送到網(wǎng)絡(luò)中的數(shù)據(jù)量。發(fā)送端如何確定網(wǎng)絡(luò)出現(xiàn)擁塞呢?當網(wǎng)絡(luò)發(fā)生擁塞時,路由器就會把一些無法處理的數(shù)據(jù)包丟棄,所以發(fā)送端如果沒有收到已發(fā)送報文的確認報文,就可以認為網(wǎng)絡(luò)出現(xiàn)了擁塞。

    以上兩個變量中,當rwinsize<cwinsize時,說明網(wǎng)絡(luò)的處理能力大于接收的數(shù)據(jù)處理能力,但是發(fā)送方也只能照顧接收端的處理能力,把發(fā)送窗口設(shè)置為rwinsize大小;? rwinsize>cwinsize時,說明接收端處理能力大于網(wǎng)絡(luò)的處理能力,但為了避免網(wǎng)絡(luò)擁塞,發(fā)送方也只能把發(fā)送窗口設(shè)置為cwinsize的大小。所以,發(fā)送方發(fā)送窗口的最大值,應(yīng)當取cwinsize和rwinsize這兩個變量中較小的一個。

    所有的TCP實現(xiàn)中,都支持一種擁塞控制的算法——慢開始算法(slow start)。假定用報文段的個數(shù)作為窗口大小的單位,而且接收端的rwinsize足夠大,所以發(fā)送窗口只受cwinsize的制約。慢開始算法的原理可以這樣表述:

    (1)發(fā)送端由小到大,逐漸增大cwinsize的值,而不是開始發(fā)送時就設(shè)置一個比較大的值。這樣可以使發(fā)送端在開始發(fā)送時發(fā)送到網(wǎng)絡(luò)中的數(shù)據(jù)量大大減少,對于避免網(wǎng)絡(luò)擁塞非常有利。同時,每收到對一個報文的確認,就使cwinsize的值加1。

    例如,開始時cwinsize=1,發(fā)送第一個報文段M1;收到確認后cwinsize加1,此時cwinsize=2;可以再發(fā)送2個報文,收到2個確認報文后cwinsize加2,此時cwinsize=4;可以再發(fā)送4個報文,收到4個確認報文后cwinsize加4,此時cwinsize=8。

    可以看到,在這個過程中,cwinsize的數(shù)值呈指數(shù)級增長,速度很快。

    (2)為防止cwinsize增長過快(無限制的增長,最終會擁塞網(wǎng)絡(luò)),設(shè)置一個臨界值tmp。當cwinsize>tmp時,每經(jīng)過一段時間(一般是一個往返時延RTT)cwinsize值只加1,而不管這段時間內(nèi)收到了幾個確認報文。此時cwinsize的數(shù)值呈線性增長,速度大大慢了下來。

    (3)不管在上述的任何一個階段,只要網(wǎng)絡(luò)發(fā)生了擁塞(發(fā)送方?jīng)]有收到確認或者是收到了重復的確認信息),就把tmp的數(shù)值設(shè)置為發(fā)生擁塞時cwinsize數(shù)值的一半,同時把cwinsize重新設(shè)置為初始值,重新開始(1)的過程。

    這樣做可以迅速減少發(fā)送方發(fā)送到網(wǎng)絡(luò)中的數(shù)據(jù)量,使發(fā)生擁塞的網(wǎng)絡(luò)路由器有足夠的時間處理隊列中的數(shù)據(jù)分組。

    圖1說明了上述慢開始算法進行擁塞控制的過程。

    (1)TCP連接進行初始化,設(shè)置擁塞窗口cwinsize=1,臨界值tmp=16。

    (2)開始執(zhí)行慢開始算法,發(fā)送端每收到一個對已發(fā)送報文段的確認,cwinsize就加1,然后開始下一次傳輸,所以發(fā)送窗口隨著傳輸次數(shù)的變化,呈現(xiàn)指數(shù)級的增長規(guī)律。當cwinsize的值增長到臨界值tmp的時候,就改為線性增長,速率大大慢了下來。

    (3)假定當cwinsize=24的時候,網(wǎng)絡(luò)出現(xiàn)了擁塞(超時未收到確認報文),則擁塞窗口cwinsize重新設(shè)置為1,同時臨界值設(shè)置為發(fā)生擁塞時發(fā)送窗口的一半即tmp=12,然后重新執(zhí)行慢開始算法。

    需要指出的是,任何一種擁塞算法都不能完全避免網(wǎng)絡(luò)擁塞。擁塞控制的作用是在擁塞避免階段把擁塞窗口控制為按照線性規(guī)律增長,使網(wǎng)絡(luò)不太容易出現(xiàn)擁塞。RFC 2581,RFC 2309和RFC 3168提出了其他幾種擁塞控制的方法,感興趣的讀者可以查閱相應(yīng)的文檔。

    參考文獻:

    [1] RFC 793,Transmission Control Protocol[S].

    [2] RFC 2581,TCP Congestion Control[S].

    [3] RFC 2582,The NewReno Modification to TCP's Fast Recovery Algorithm[S].

    [4] RFC 2309,Recommendations on Queue Management and Congestion? Avoidance in the Internet[S].

    [5] 王碩. 計算機網(wǎng)絡(luò)基礎(chǔ)[M].北京:中國水利水電出版社,2014.

    [6] 謝鈞. 計算機網(wǎng)絡(luò)教程[M].北京:人民郵電出版社,2018.

    新泰市| 正镶白旗| 财经| 海林市| 昌邑市| 昭平县| 华阴市| 开远市| 临城县| 德惠市| 盐源县| 元朗区| 麻江县| 邻水| 宾阳县| 五华县| 沂源县| 石门县| 临沭县| 黔东| 沾益县| 乡城县| 沂水县| 大荔县| 横峰县| 海林市| 丹阳市| 专栏| 和平县| 漠河县| 余干县| 泸定县| 疏附县| 曲阜市| 西丰县| 建水县| 朝阳县| 大安市| 乡宁县| 黄梅县| 那曲县|