楊 樂(lè)
【摘 要】時(shí)延測(cè)量對(duì)于網(wǎng)絡(luò)的管理、協(xié)議開(kāi)發(fā)與技術(shù)發(fā)展具有重要意義。本文對(duì)近年來(lái)TCP往返時(shí)延被動(dòng)測(cè)量方法進(jìn)行歸納、分析和比較,著重討論了各種方法的優(yōu)缺點(diǎn),以及適用場(chǎng)合。最后簡(jiǎn)單提出了下一步研究應(yīng)該注意的問(wèn)題和研究方向。
【關(guān)鍵詞】往返時(shí)延;被動(dòng)測(cè)量;網(wǎng)絡(luò)測(cè)量
中圖分類號(hào):TP18文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-8283(2010)07-0312-01
1 簡(jiǎn)介
時(shí)延、帶寬、丟包率是Internet度量指標(biāo)中最基本的三大指標(biāo)。時(shí)延測(cè)量對(duì)于網(wǎng)絡(luò)的運(yùn)營(yíng)管理、協(xié)議開(kāi)發(fā)與技術(shù)發(fā)展具有重要意義。當(dāng)前網(wǎng)絡(luò)通信中的流量仍然以TCP為主,TCP業(yè)務(wù)性能測(cè)量研究的意義重大,而往返時(shí)延(Round-trip time,RTT)是研究TCP連接行為的重要測(cè)度,它是指從TCP發(fā)端發(fā)出報(bào)文到接收到通信對(duì)端立即返回的確認(rèn)報(bào)文所經(jīng)歷的時(shí)長(zhǎng)。對(duì)RTT進(jìn)行測(cè)量的意義在于:(1)估計(jì)連接的擁塞窗口大小、超時(shí)重傳時(shí)間以及路徑可用帶寬;(2)幫助尋找限制流速和導(dǎo)致?lián)砣囊蛩?(3)幫助提高隊(duì)列管理性能以及緩沖預(yù)留;(4)在P2P網(wǎng)絡(luò)中改善節(jié)點(diǎn)分布。
目前RTT測(cè)量主要在端點(diǎn)使用主動(dòng)式測(cè)量方法進(jìn)行,容易對(duì)網(wǎng)絡(luò)流量產(chǎn)生干擾,并且不便于部署在監(jiān)測(cè)設(shè)備中。RTT被動(dòng)測(cè)量是指在網(wǎng)絡(luò)鏈路上設(shè)置測(cè)量點(diǎn),通過(guò)分析流量數(shù)據(jù)的方式來(lái)估計(jì)通過(guò)測(cè)量點(diǎn)的TCP連接的RTT。
RTT被動(dòng)測(cè)量存在的困難在于:(1)通信雙方雙向傳輸路徑可能不對(duì)稱;(2)丟包和亂序會(huì)給RTT測(cè)量帶來(lái)不利影響;(3)端系統(tǒng)的響應(yīng)延遲;(4)存在多種不同的TCP擁塞控制機(jī)制。
2 TCP往返時(shí)延的被動(dòng)測(cè)量方法
2.1 SYN-ACK方法
SYN-ACK方法,通過(guò)監(jiān)測(cè)TCP三次握手建立連接的過(guò)程來(lái)估計(jì)RTT。用監(jiān)測(cè)到的最后一個(gè)SYN和第一個(gè)ACK之間的時(shí)間間隔來(lái)計(jì)算RTT。使用此方法的前提:SYNACK和ACK的傳輸沒(méi)有被延遲;SYNACK在傳輸中沒(méi)有丟包,ACK在到達(dá)監(jiān)測(cè)點(diǎn)前沒(méi)有丟包;SYN和ACK在傳輸?shù)倪^(guò)程中時(shí)間抖動(dòng)不大。SYN-ACK方法的不足之處在于:丟包可能導(dǎo)致RTT估計(jì)過(guò)長(zhǎng),超過(guò)3秒的RTT被認(rèn)為是不準(zhǔn)確的。有些操作系統(tǒng)會(huì)使用DelayACK方式工作,導(dǎo)致RTT估計(jì)錯(cuò)誤。為了減少錯(cuò)誤,SYN-ACK方法使用HTTP請(qǐng)求和應(yīng)答之間的時(shí)延作為RTT估計(jì)的上界。
2.2 SLOW-START方法
SLOW-START方法基本思想是TCP連接在慢啟動(dòng)階段隨著擁塞窗口(cwnd)的增長(zhǎng),可以在傳輸中觀測(cè)到明顯的發(fā)送輪次。觀測(cè)點(diǎn)可以通過(guò)測(cè)量發(fā)送各發(fā)送輪次中分組的到達(dá)時(shí)間間隔來(lái)估計(jì)RTT。此方法要求在單向流上至少監(jiān)測(cè)到連續(xù)的5個(gè)段,其中前面的四個(gè)段是最大報(bào)文段(MSS),因此不能用于TCP流只傳輸少量數(shù)據(jù)的情況。
2.3 PRE方法
在TCP擁塞控制機(jī)制的作用下,TCP發(fā)送方會(huì)連續(xù)發(fā)送多個(gè)報(bào)文直到到達(dá)發(fā)送窗口限制,之后必須收到接收方的確認(rèn)報(bào)文后才能繼續(xù)發(fā)送。TCP發(fā)送行為呈現(xiàn)出多個(gè)輪次,在高速鏈路中報(bào)文發(fā)送間隙遠(yuǎn)小于輪次間隙,可以將監(jiān)測(cè)到的較大的報(bào)文到達(dá)間隙認(rèn)定為輪次間隙。將輪次間隙加上本輪前面的報(bào)文到達(dá)間隔即為RTT。此方法的主要問(wèn)題在于當(dāng)觀測(cè)的TCP流傳輸中出現(xiàn)停頓時(shí),監(jiān)測(cè)點(diǎn)難以將其與輪次間隔時(shí)間區(qū)分開(kāi)來(lái)。
2.4 TIMESTAMP方法
TIMESTAMP方法利用TCP報(bào)文中的時(shí)間戳標(biāo)記來(lái)尋找各報(bào)文段之間的觸發(fā)關(guān)系,使用測(cè)量點(diǎn)收到相關(guān)報(bào)文的時(shí)刻測(cè)量RTT。此方法存在的問(wèn)題主要有:(1)時(shí)間戳精度依賴于具體的端系統(tǒng)實(shí)現(xiàn)。發(fā)送方在發(fā)送一系列突發(fā)的段時(shí),這些段可能被打上相同的時(shí)間戳。接收方可能會(huì)在不同時(shí)刻應(yīng)答這些段,但是這些應(yīng)答的時(shí)間戳都是一樣的。因此可能導(dǎo)致監(jiān)測(cè)點(diǎn)產(chǎn)生誤判,從而影響RTT測(cè)量的準(zhǔn)確性。(2)丟包導(dǎo)致后續(xù)應(yīng)答的時(shí)間戳均為之前收到的正確段的時(shí)間戳,因此高估RTT。(3)不對(duì)稱路由會(huì)導(dǎo)致發(fā)送和接收數(shù)據(jù)通過(guò)不同的路徑,導(dǎo)致測(cè)量失敗。 2.5 SELF-CLOCKING方法
SELF-CLOCKING方法基本思想是使用自相關(guān)(autocorrelation)方法進(jìn)行RTT估計(jì),使用一個(gè)周期內(nèi)的報(bào)文數(shù)量計(jì)算離散自相關(guān)函數(shù),其中的最大值就是估計(jì)出來(lái)的RTT。存在的問(wèn)題主要在于:(1)根據(jù)奈奎斯特間隔(Nyquist period)的限制,只能測(cè)量出不小于時(shí)間戳精度2倍的RTT。(2)每個(gè)RTT都出現(xiàn)的突發(fā)間隙模式可能會(huì)比真正的RTT有更高的相關(guān)強(qiáng)度。(3)測(cè)量區(qū)間長(zhǎng)度設(shè)置不合理的話可能會(huì)導(dǎo)致無(wú)法正確地計(jì)算自相關(guān)強(qiáng)度。(4)延遲變化會(huì)導(dǎo)致出現(xiàn)多個(gè)相關(guān)峰值(5)背景流量或其他因素造成的擁塞可能會(huì)擾亂流量的自相似性。這導(dǎo)致在很小的偏移上出現(xiàn)很強(qiáng)的相關(guān)。
2.6 RUNNING方法
RUNNING方法基本思想是維持一個(gè)有限狀態(tài)機(jī)來(lái)模仿發(fā)送方的擁塞窗口變化狀況,通過(guò)判定數(shù)據(jù)包與ACK包之間的觸發(fā)關(guān)系來(lái)估計(jì)RTT。此方法計(jì)算通過(guò)測(cè)量點(diǎn)的數(shù)據(jù)分組和對(duì)應(yīng)的ACK之間的時(shí)間差,然后計(jì)算ACK和被觸發(fā)的數(shù)據(jù)包之間的時(shí)間差,從而得到RTT。也就是說(shuō)分別計(jì)算兩個(gè)方向的半路徑RTT,相加得到全路徑RTT。此方法的主要問(wèn)題在于當(dāng)窗口估計(jì)錯(cuò)誤或者發(fā)送方?jīng)]有足夠數(shù)據(jù)時(shí),可能會(huì)出現(xiàn)錯(cuò)誤的估計(jì)。
2.7 SPECTRAL ANALYSIS方法
SPECTRAL ANALYSIS方法基本思想是:(1)使用前256個(gè)分組的到達(dá)間隔生成RTT初始估計(jì)值。(2)使用滑動(dòng)窗口估計(jì)來(lái)設(shè)置RTT估計(jì)的上界。(3)使用序列號(hào)/應(yīng)答號(hào)之間的關(guān)系來(lái)尋找DATA-ACK-DATA關(guān)聯(lián),設(shè)置RTT估計(jì)的下界。(4)使用自相關(guān)函數(shù)和Lomb-Scargle周期圖來(lái)估計(jì)RTT。
3 總結(jié)
在上述方法中,SYN-ACK方法只能測(cè)量到TCP連接建立時(shí)的RTT,不能提供持續(xù)的數(shù)據(jù);SLOW-START方法只適用于成塊數(shù)據(jù)傳輸,不能對(duì)交互式數(shù)據(jù)流進(jìn)行測(cè)量;PRE方法不能很好地測(cè)量交互式數(shù)據(jù)流;TIMESTAMP方法依賴TCP的時(shí)間戳選項(xiàng),不具備普遍性;SELF-CLOCKING方法同樣依賴TCP的時(shí)間戳選項(xiàng);RUNNING方法分析了不同TCP實(shí)現(xiàn)版本的差異,采用擁塞窗口跟蹤方法來(lái)判定往來(lái)包的觸發(fā)關(guān)系,但是在丟包、亂序的情況下容易對(duì)cwnd估計(jì)錯(cuò)誤;SPECTRAL ANALYSIS方法不考慮TCP各實(shí)現(xiàn)版本的區(qū)別,不用觀察連接慢啟動(dòng)階段,但是計(jì)算代價(jià)較大。
總的來(lái)說(shuō),RTT被動(dòng)測(cè)量還需要解決的問(wèn)題主要有:(1)消除時(shí)延抖動(dòng)的影響;(2)不同端系統(tǒng)實(shí)現(xiàn)的延遲應(yīng)答機(jī)制給RTT測(cè)量帶來(lái)了不確定因素。(3)交互式會(huì)話的RTT較難測(cè)量。
時(shí)延測(cè)量對(duì)于網(wǎng)絡(luò)的運(yùn)營(yíng)管理、協(xié)議開(kāi)發(fā)與技術(shù)發(fā)展具有重要意義。在本文中,歸納和總結(jié)了TCP往返時(shí)延被動(dòng)測(cè)量的相關(guān)研究,著重討論了各種方法的優(yōu)缺點(diǎn),以及適用場(chǎng)合。并對(duì)一些可能的研究發(fā)展方向進(jìn)行了簡(jiǎn)要的概述,期望借此能推動(dòng)國(guó)內(nèi)對(duì)TCP往返時(shí)延的關(guān)注和研究。
げ慰嘉南:
[1]Hao Jiang, Constantinos Dovrolis. Passive estimation of TCP round-trip times. SIGCOMM, 2002.
[2]張軼博,雷振明. 一種被動(dòng)式RTT測(cè)量算法. 北京郵電大學(xué)學(xué)報(bào), 2004,27(5).