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