專利名稱:Tcp中基于接收器的rtt測量的制作方法
技術領域:
本發(fā)明涉及包數據傳輸,特別涉及在互聯協議(IP)網絡上使用傳輸控制協議(TCP)的數據傳輸。TCP通過其綜合擁塞(congestion)和流控制機制來使網絡穩(wěn)定。此外,比如,從US 6,298,041 B1可獲得TCP和IP網絡的信息。
背景技術:
通常TCP發(fā)送速率由發(fā)送器控制,但在接收器知道所用鏈路和位速率的場景和環(huán)境中,值得讓接收器在某種程度上控制發(fā)送器的數據傳輸速率。要應用本機制,接收器需要知道往返時間(Round Trip Time(RTT))的值來控制或限制發(fā)送器的位速率。于是,發(fā)送器不再需要自己來探查可用的位速率,這通常會導致包丟失的代價而且不如接收器的信息準確。
TCP發(fā)送器的發(fā)送位速率是由稱為擁塞窗口的滑動窗口控制的。發(fā)送器發(fā)送數據和接收累積應答。未完成(outstanding)數據是發(fā)送器已經發(fā)送、但還沒有收到其應答的數據。發(fā)送器允許未完成數據總量等于擁塞窗口的當前值。因為通常是在數據被發(fā)送的一個RTT后得到應答,允許的發(fā)送位速率B_send可從RTT和擁塞窗口大小cwnd計算而得,即B_send=cwnd/RTT。這些典型值的一個例子是RTT=100ms和B_send=64Kbit/s。
服務器的擁塞窗口根據收集的網絡信息進行動態(tài)調整,例如,在有包丟失的情況下,TCP發(fā)送器認為網絡中存在擁塞,則縮小窗口。在無包丟失的情況下,窗口稍微和有規(guī)律地增大。然而,TCP用來控制數據包發(fā)送的窗口,是擁塞窗口和另一個接收器所告知(signal)的稱為通告(advertised)窗口awnd的窗口大小的最小值。這通常用作TCP的流控制特性,也就是確??焖俚腡CP發(fā)送器不會發(fā)送多于接收器所能接收的數據。
總之,接收器可以通過使用綜合流控制和發(fā)送帶有從RTT和最大發(fā)送位速率計算而得的值的通告窗口,限制TCP連接的發(fā)送器的發(fā)送速率上限。
如果只有一個連接者有數據要發(fā)送,在TCP連接中接收器的RTT測量只可能在連接初期進行(TCP以3路握手開始)。接收器在連接建立時可進行的測量并不準確,因為它是基于小控制包(通常大約40字節(jié))的。數據包在尺寸上要大很多,例如1500字節(jié),因此RTT通常比就小控制包而言要高得多。
考慮這種情況,接收器在連接建立時可進行粗略的RTT測量,但此后不再有更多的RTT信息。因為在IP網絡中RTT通常是動態(tài)和可變的,接收器應該更頻繁地收集RTT信息,以對發(fā)送器的發(fā)送位速率進行可靠控制。
如上所述,TCP連接的接收器可通過以通告窗口的形式來告知上限,來控制發(fā)送器的發(fā)送位速率。但是,為了計算要告知的通告窗口,接收器需要測量RTT。測量值越好并且越準確,則窗口計算也越好并且在發(fā)送器采用窗口尺寸后鏈路使用越好。
發(fā)明內容
本發(fā)明提供了一種數據包接收器以快速和可靠方式來進行往返時間(RTT)測量的方法,如權利要求1所述。方法的優(yōu)選實施例服從各個附帶的權利要求。根據本發(fā)明的方法,接收器確定在觸發(fā)新數據包傳輸的發(fā)送應答和接收到所觸發(fā)數據包的時刻之間的時間間隔。若本測量機制在正?;A上完成,它為接收器提供了相當好的RTT估計。
下面,將參照所示附圖更詳細地描述本發(fā)明圖1是展示在開始RTT測量之前的若干個示例性要求的流程圖。
圖2-4 從發(fā)送器到接收器的示例性數據包傳輸,展示了在開始RTT測量之前的若干個示例性要求,和圖5根據本發(fā)明的RTT測量的流程圖。
具體實施例方式
與發(fā)送器通過網絡有TCP連接的接收器可通過發(fā)送應答給發(fā)送器和等待接收此應答觸發(fā)的數據包來開始RTT測量。但是,接收器在開始RTT測量之前應確保若干個要求得到滿足。下面,將描述若干個示例性要求。
為了進行下列描述,數據包由典型長度為40字節(jié)的頭部組成,這個頭部含有表示此段中第一個數據字節(jié)的序號域。這個值可作為其數據包的標識符。含有頭部和數據的TCP包的典型長度是1500字節(jié)。通常,本領域的技術人員都知道應答中含有awnd值和應答的發(fā)送器希望收到的數據包的序號,稱為應答號。
之后的圖1A中展示了一般要求和圖1B顯示了一個實例。對于相關的要求,選擇了其后帶有單獨標識A或B的相同標號,以幫助理解。
作為開始之后的第一個要求R1(圖1的步驟100),接收器要確保發(fā)送器是流控制(通過通告窗口awnd,見步驟200A)且它不再處于TCP緩慢開始階段。在TCP緩慢開始階段,會出現數據包的突發(fā)(burst),因此RTT測量受到干擾。確保這個要求的簡單和穩(wěn)妥辦法是一直等到接收到若干個數據包為止。在發(fā)送了總量為2*awnd-1的數據包(見圖1B的200B)之后,或者是發(fā)送器的窗口達到awnd,或者是發(fā)送器已經到達了之前的擁塞避免階段。對于這里和以后說明來講要注意的是,變量awnd是以段(segment)為單位,而在實際的TCP中,變量awnd和cwnd是以字節(jié)為單位。
如果,例如,在接收了10個包之后,考慮到awnd的值是10個數據段,可認為發(fā)送器已經不再處于緩慢開始階段了。
在圖2中,此要求以示例性方式進行了展示。這里awnd=5段,從左到右的線代表從發(fā)送器到接收器的數據包,中間的數字是序在號(這只是例子,因為在實際中SN是以字節(jié)表示的)。右邊軸上的數字是SN_ack的值。
圖中顯示出等待2*awnd-1=2*5-1=9個包(直到SN=10的包到達)與發(fā)送器處于流控制是同時的。這意味著每個ACK包只在發(fā)送器處觸發(fā)了一個數據包。這里使用的例子中的第一個包是編號為10的包。
第二個要求R2是接收器必須能夠估計出當前應答將在發(fā)送器處觸發(fā)的數據包的序號。也就是說,接收器能夠計算SN_exoect的值(步驟300A)。若通告窗口awnd沒有因為預定的包數量而增大的話,此檢查(check)完成,增大通告窗口值的副作用是可能在發(fā)送器處出現包突發(fā)。這也會干擾RTT測量和錯誤地增大其值。
在圖3中,awnd值從5變到7,并且根據此要求不能對后續(xù)的7個包開始RTT測量。右邊軸上的數字現在代表以包的數目表示的awnd值。原因是接收器無法確定SN_expect的值。圖中也顯示了發(fā)送器所傳輸的包的突發(fā),因為更高的處理次數,它會干擾本測量。這些影響不一定會持續(xù)x=awnd數量的包,但是該數量是安全限值。
代表第三個要求R3的進一步查詢400A是進行檢查ACK是否在TCP發(fā)送器處觸發(fā)了新數據包(步驟400A)。這意味著執(zhí)行查詢看awnd值是否已經減小(步驟400B)。若是,則不能對預定數量的后續(xù)數據包進行RTT測量。若存在另一個減小,則決定等待額外數量(awnd_old-awnd_new)的包(步驟450B)。
在圖4所示的例子中,右邊軸上的數字再次代表awnd的值。在某個時刻,該值從5變到3。這意味著不能對5-3=2個包開始RTT測量。圖中清楚地顯示出原因,因為更小的窗口尺寸,直到在發(fā)送器方收到2個新ACK,才觸發(fā)新的TCP包。要注意的是,當要求沒有滿足時,不能依據ACK開始RTT測量。盡管,到來的數據包可用于先前已開始的RTT測量。
只有當上述所有要求R1-R3都滿足時,如步驟500A、B所示,接收器依據當前應答開始RTT測量。對于進行RTT測量,要執(zhí)行圖5中所示的步驟。
在步驟510中,將當前接收的數據包的應答從接收器發(fā)送到發(fā)送器。此外,如步驟520所示,存儲應答發(fā)送的時刻T_ack。在步驟530中,確定了預期數據包的序號SN_expect,它表示當前應答所觸發(fā)TCP數據包的第一個字節(jié)的序號。預期序號的計算如下SN_expect=SN_ack+(awnd-1)*MSS其中,SN_ack是當前應答的應答號,MSS表示以字節(jié)為單位的最大段長度。
在接收器方,步驟540中,在T_ack后所接收的所有數據包的序號SN_data根據這樣的條件進行比較SN_data SN_expect。
若此條件為假,接收器等待下一個接收的數據包。若此條件為真,執(zhí)行下一步驟550,存儲實際時刻T_now。在下一個步驟560中,可進行這樣的RTT計算RTT=T_now-T_ack。
一般而言,只要滿足圖1所示的要求,在圖5流程圖中描述的RTT測量可根據所需頻度反復進行。
權利要求
1.一種在數據包接收器中進行往返時間(RTT)測量的方法,該數據包接收器通過網絡使用傳輸控制協議(TCP)來與發(fā)送器通信,所述方法包括下列步驟發(fā)送當前所接收數據包的應答到發(fā)送器,當發(fā)送應答時測量第一時刻,在發(fā)送器方觸發(fā)預期數據包的傳輸,當接收預期數據包時測量第二時刻,和根據所測量的第一和第二時刻計算RTT測量值。
2.如權利要求1所述的方法,其中,RTT測量只有當發(fā)送器未處于緩慢開始階段時才進行。
3.如權利要求1所述的方法,其中,RTT測量只有當從接收器告知發(fā)送器的流控制變量以預定數量的接收數據包保持恒定時才進行。
4.如權利要求1所述的方法,其中,接收器向發(fā)送器指出發(fā)送速率的上限。
5.如權利要求1所述的方法,其中,發(fā)送速率由作為流控制命令的通告窗口大小來控制。
6.如權利要求5所述的方法,其中,發(fā)送位速率由動態(tài)變化擁塞窗口來控制。
7.如權利要求5和6所述的方法,其中,控制發(fā)送位速率與擁塞窗口和接收器告知的通告窗口的最小值保持一致。
8.如權利要求1所述的方法,其中,根據當前應答數據包的序號SN_ack、通告窗口awnd和最大段長度MSS,按照下面的公式計算預期數據包的序號SN_expect=SN_ack+(awnd-l)*MSS。
9.如權利要求4所述的方法,其中,當通告窗口awnd已減小時,阻塞RTT測量,直至收到額外數量(awnd_old-awnd_new)的包為止。
全文摘要
一種在通過網絡使用傳輸控制協議(TCP)與發(fā)送器通信的數據包接收器中進行往返時間(RTT)測量的方法,所述方法包括發(fā)送當前所接收數據包的應答到發(fā)送器、當發(fā)送應答時測量第一個時刻、在發(fā)送器方觸發(fā)預期數據包的傳輸、當接收預期數據包時測量第二個時刻、和根據所測量的第一和第二個時刻計算往返時間這些步驟。
文檔編號H04L29/06GK1467953SQ03141189
公開日2004年1月14日 申請日期2003年6月6日 優(yōu)先權日2002年6月18日
發(fā)明者費爾南多·伯佐薩, 費爾南多 伯佐薩, 黑肯伯格, 羅爾夫·黑肯伯格, 克林納, 托馬斯·克林納, 伯邁斯特, 卡斯滕·伯邁斯特 申請人:松下電器產業(yè)株式會社