【摘 要】時延測量和擁塞控制對于網(wǎng)絡(luò)的管理、協(xié)議開發(fā)與技術(shù)發(fā)展具有重要意義。本文列出了時延和擁塞控制的概念以及產(chǎn)生的相應(yīng)機(jī)理,并提出了應(yīng)對的算法。對于網(wǎng)絡(luò)時延測算軟件的設(shè)計,本文具有理論指導(dǎo)意義。
【關(guān)鍵詞】TCP 往返時延 擁塞控制
一、概念簡介
TCP協(xié)議實現(xiàn)了流量控制和擁塞控制功能,可以保證數(shù)據(jù)的有序可靠的到達(dá)目的端。因此,目前網(wǎng)絡(luò)傳輸層中多數(shù)的應(yīng)用均釆用TCP協(xié)議進(jìn)行。
往返時延(RTT)是研究TCP連接行為的重要測度,它是指從TCP發(fā)端發(fā)出報文到接收到通信對端立即返回的確認(rèn)報文所經(jīng)歷的時長。
擁塞控制(congestion control)是防止過多的數(shù)據(jù)注入網(wǎng)絡(luò)中,這樣可以使網(wǎng)絡(luò)的路由或鏈路不過載。對于通信端點來說,擁塞往往表現(xiàn)為通信時延的增加。
二、TCP往返時延
(一)概述
TCP相對于UDP來說是可靠傳輸,但代價也是存在的。TCP采用一種自適應(yīng)的算法,它記錄一個報文段發(fā)出的時間,以及收到相應(yīng)確認(rèn)的時間,這兩個時間之差就是往返時延(RTT)。TCP保留了RTT的一個加權(quán)平均往返時間RTTs。時延的測量有挺多,以下給出兩種。
(二)SYN-ACK方法
SYN-ACK方法,通過監(jiān)測TCP三次握手建立連接的過程來估計RTT。用監(jiān)測到的最后一個和第一個ACK之間的時間間隔來計算RTT。使用此方法的前提: SYN-ACK和ACK的傳輸沒有被延遲;SYN-ACK在傳輸中沒有丟包,ACK在到達(dá)監(jiān)測點前沒有丟包;SYN和ACK在傳輸?shù)倪^程中時間抖動不大。SYN-ACK方法的不足之處在于:丟包可能導(dǎo)致RTT估計過長,超過3秒的RTT被認(rèn)為是不準(zhǔn)確的。有些操作系統(tǒng)會使用DelayACK方式工作,導(dǎo)致RTT估計錯誤。為了減少錯誤,,SYN-ACK方法使用HTTP請求和應(yīng)答之間的時延作為RTT估計的上界。
(三)SPECTRAL ANALYSIS方法
SPECTRAL ANALYSIS方法基本思想是:(1)使用前256個分組的到達(dá)間隔生成RTT初始估計值。(2)使用滑動窗口估計來設(shè)置RTT估計的上界。(3)使用序列號/應(yīng)答號之間的關(guān)系來尋找DATA-ACK-DATA關(guān)聯(lián),設(shè)置RTT估計的下界。(4)使用自相關(guān)函數(shù)和Lomb-Scargle周期圖來估計RTT。
三、TCP擁塞控制
(一)概述
擁塞的直接原因主要有:(1)存儲空間不足;(2)帶寬容量不足;(3)處理能力較弱。為對傳輸層進(jìn)行擁塞控制,因特網(wǎng)建議標(biāo)準(zhǔn)定義了四種算法。
(二)擁塞控制算法
1.慢啟動
舊的TCP在啟動一個連接時會向網(wǎng)絡(luò)中發(fā)送許多數(shù)據(jù)包,由于一些路由器必須對數(shù)據(jù)包排隊,所以這樣就有可能耗盡存儲空間,從而導(dǎo)致TCP連接的吞吐量(throughput)急劇下降。避免這種情況發(fā)生的算法就是慢啟動。當(dāng)建立新的TCP連接時,擁塞窗口(cwnd)初始化為一個數(shù)據(jù)包大小。源端按cwnd大小發(fā)送數(shù)據(jù),每收到一個ACK確認(rèn),cwnd 就增加一個數(shù)據(jù)包發(fā)送量. 很顯然,cwnd的增長將隨RTT呈指數(shù)級(exponential)增長:1個、2個、4個等等。 源端向網(wǎng)絡(luò)中發(fā)送的數(shù)據(jù)量將急劇增加。
2.擁塞避免
發(fā)送端的cwnd每經(jīng)過一個往返時延RTT就增加一個最大報文段長度MSS的大小,而不是加倍,使得cwnd按線性規(guī)律緩慢增長,當(dāng)出現(xiàn)一次超時時,令慢開始門限ssthresh等于當(dāng)前cwnd的一半。可歸納如下:
當(dāng)cwnd小于ssthresh時,使用慢開始算法。
當(dāng)cwnd大于等于ssthresh時,改用擁塞避免算法。
3.快重傳和快恢復(fù)
當(dāng)數(shù)據(jù)包超時時,cwnd 要被置為1,重新進(jìn)入慢啟動,這會導(dǎo)致過大地減小發(fā)送窗口尺寸,降低TCP連接的吞吐量. 所以快速重傳和恢復(fù)就是在源端收到3 個或3 個以上重復(fù)ACK 時,就斷定數(shù)據(jù)包已經(jīng)丟失,重傳數(shù)據(jù)包,同時將ssthresh 置為當(dāng)前cwnd 的一半,而不必等到RTO 超時。
總的來說,TCP 擁塞控制算法如下:
1.初始化: win = min( cwnd,awin)
cwnd = 1;
ssthresh = 65535bytes (缺省值);/
2.當(dāng)新確認(rèn)包ACK 到達(dá)時:If( cwnd < ssthresh)
/ Slow Start /
cwnd = cwnd + 1;
Eise
/ Congestion Auoidance /
cwnd = cwnd + 1 / cwnd;
3.超時: ssthresh = max(2,min( cwnd / 2,awin));
cwnd = 1;
四、結(jié)語
計算機(jī)網(wǎng)絡(luò)給我們帶來便利的同時,也存在一些問題,如網(wǎng)絡(luò)時延、擁塞、帶寬等問題。本文給出了一些問題的原因以及解決算法。在設(shè)計網(wǎng)絡(luò)時延的測量軟件時,本文可以起到較好的理論指導(dǎo)。
參考文獻(xiàn):
[1]張軼博,雷振明.一種被動式RTT測量算法.北京郵電大學(xué)學(xué)報,2004,27(5).
[2]范君暉.TCP/IP擁塞控制算法淺述[期刊論文]-上海工程技術(shù)大學(xué)學(xué)報,2004(3).
[3]施榮華,王國才.計算機(jī)通信網(wǎng)絡(luò)技術(shù)及應(yīng)用,中國水利水電出版社,2010.
[4]周明天,汪文勇編著,《TCP /IP網(wǎng)絡(luò)原理與技術(shù)》,清華大學(xué)出版社.