專利名稱:無線傳輸控制協(xié)議處理方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種無線傳輸控制協(xié)議處理方法和 設(shè)備。
背景技術(shù):
TCP (Transmission Control Protocol,傳輸控制協(xié)議)協(xié)議是為有線網(wǎng)絡(luò) 設(shè)計的 一種在主機間實現(xiàn)高可靠性的包交換傳輸協(xié)議,是面向連接的端到端 的協(xié)議?;赥CP協(xié)議的傳輸過程中,TCP接收端向TCP發(fā)送端發(fā)送ACK (響 應(yīng)包)用于對接收到的一組TCP分組包進行確認才喿作,表示當前以及之前的 TCP分組包都被正確接收。當發(fā)生報文亂序(報文順序錯位或報文丟失)時, TCP接收端生成DupACK (重復(fù)響應(yīng)包)并向TCP發(fā)送端發(fā)送,DupACK的個 數(shù)由亂序報文個數(shù)決定。
在目前的無線移動網(wǎng)絡(luò)中,仍會使用TCP協(xié)議進行數(shù)據(jù)傳輸,但是由于無 線網(wǎng)絡(luò)固有的特性,如時變的信道條件、不對稱的帶寬、傳輸往返時延大、
雖然當前WCDMA ( Wideband Code Division Multiple Access,寬帶分碼多 工存取)系統(tǒng)的RNC( Radio Network Controller,無線網(wǎng)絡(luò)控制器)/RLC( Radio Link Control,無線鏈^各控制)協(xié)議層能夠通過PDU ( Protocol Data Unit,協(xié)議 數(shù)據(jù)單元)重傳來保證數(shù)據(jù)的完整性,但是仍然不可避免地使得TCP發(fā)送端發(fā) 生超時而進入慢啟動。TCP發(fā)送端發(fā)生超時的原因為TCP發(fā)送端每發(fā)送一個 分組包,就為該分組包啟動一個計時器,當計時器超時但仍未收到TCP接收端 對該分組包的ACK時則發(fā)生超時。TCP發(fā)送端進入慢啟動后,發(fā)送窗口減到 了初始值(通常為2個報文大小),需要多個RTT ( Round Trip Time,往返時間) 時間才能恢復(fù)到發(fā)生慢啟動之前的發(fā)送窗口值,如果有線側(cè)時延和無線側(cè)時 延均較大,即RTT較大,那么意味著需要很長的時間,TCP發(fā)送端才能恢復(fù)到慢啟動之前的發(fā)送能力。TCP發(fā)送端一旦進入慢啟動,網(wǎng)絡(luò)中的數(shù)據(jù)量馬上減
少,在單線程下載時,RLC (RadioLink Control,無線鏈路控制)緩存將通常 發(fā)生排空,并直接導(dǎo)致部分空口資源空閑。而實際的瞬時吞吐量也將出現(xiàn)低 值甚至為0,此外端到端RTT越大,低值持續(xù)時間就越長,當然文件下載時間 也將越長。
發(fā)明人在實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺點 在TCP發(fā)送端判斷發(fā)生分組包丟失后,將進入慢啟動階^:并立即減d、發(fā)送 窗口的大小。慢啟動階段的持續(xù)時間與以下因素有關(guān)當從TCP接收端接收到 一定數(shù)量的ACK時,脫離慢啟動階段進入擁塞避免階段。或在接收到TCP接 收端發(fā)送的一定數(shù)量(通常為3個)的DupACK時,進入快速重傳階段。但是 如果端到端時延較大,則TCP接收端不能及時的將DupACK或ACK發(fā)送到TCP 發(fā)送端,那么TCP發(fā)送端將長時間的處于慢啟動階段,這將降低TCP數(shù)據(jù)傳輸 的性能。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種無線傳輸控制協(xié)議處理方法和設(shè)備,用于縮短
TCP發(fā)送端慢啟動所持續(xù)的時間,加速恢復(fù)TCP發(fā)送端的數(shù)據(jù)發(fā)送能力。 本發(fā)明的實施例提供一種無線傳輸控制協(xié)議TCP處理方法,應(yīng)用于TCP
發(fā)送端與TCP接收端間的代理,包括
判斷需要加速所述TCP接收端和TCP發(fā)送端之間的數(shù)據(jù)發(fā)送;
對所述TCP接收端向所述TCP發(fā)送端發(fā)送的響應(yīng)包ACK或重復(fù)響應(yīng)包
DupACK進行處理并發(fā)送給所述TCP發(fā)送端,以加速所述TCP接收端和TCP
發(fā)送端之間的數(shù)據(jù)發(fā)送。
本發(fā)明的實施例還提供一種代理功能實體,應(yīng)用于TCP處理,包括 代理判斷單元,用于判斷需要加速所述TCP接收端和TCP發(fā)送端之間的
數(shù)據(jù)發(fā)送;
代理處理單元,用于對所述TCP接收端向所述TCP發(fā)送端發(fā)送的響應(yīng)包 ACK或重復(fù)響應(yīng)包DupACK進行處理;代理發(fā)送單元,用于將所述處理后的響應(yīng)包ACK或重復(fù)響應(yīng)包DupACK 發(fā)送給所述TCP發(fā)送端,以加速所述TCP接收端和TCP發(fā)送端之間的數(shù)據(jù) 發(fā)送
與現(xiàn)有技術(shù)相比,本發(fā)明的實施例具有以下優(yōu)點
在使用代理的情況下,通過對接收端向發(fā)送端發(fā)送的ACK或DupACK 的處理,縮短了 TCP發(fā)送端慢啟動所持續(xù)的時間,加速恢復(fù)TCP發(fā)送端的數(shù) 據(jù)發(fā)送能力。
圖1是本發(fā)明實施例中分裂ACK的流程圖2是本發(fā)明實施例中ACK的具體分裂方法的流程圖3是本發(fā)明實施例中創(chuàng)建/復(fù)制DupACK方法的流程圖4是本發(fā)明實施例中代理功能實體的示意圖5是本發(fā)明實施例中代理功能實體的示意圖。
具體實施例方式
下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式
作進一步詳細描述 本發(fā)明的實施例提供了一種無線傳輸控制協(xié)議處理方法,目的在于增強 TCP性能,適用于在網(wǎng)絡(luò)中位于TCP發(fā)送端與TCP接收端之間不同位置的代 理,包括如互聯(lián)網(wǎng)中部署的代理、核心網(wǎng)中部署的代理、移動網(wǎng)RAN (Radio Access Network)側(cè)部署的代理等,該代理的具體形式在本發(fā)明實施例中不做 限定。該TCP發(fā)送端和TCP接收端可以分別為服務(wù)器和用戶終端,以及用戶終 端和服務(wù)器。
具體的,本發(fā)明的實施例提供的無線傳輸控制協(xié)議處理方法應(yīng)用于TCP
發(fā)送端與TCP接收端間的代理,該方法包括
判斷需要加速所述TCP接收端和TCP發(fā)送端之間的數(shù)據(jù)發(fā)送; 對所述TCP接收端向所述TCP發(fā)送端發(fā)送的響應(yīng)包ACK或重復(fù)響應(yīng)包
DupACK進行處理并發(fā)送給所述TCP發(fā)送端,以加速所述TCP接收端和TCP發(fā)送端之間的數(shù)據(jù)發(fā)送。
具體的,上述處理包括通過使用分裂ACK技術(shù)對TCP接收端向TCP發(fā)送 端發(fā)送的ACK報文進行分裂;或創(chuàng)建/復(fù)制DupACK報文向TCP發(fā)送端發(fā)送。 從而通過上述處理方式提升TCP發(fā)送端的數(shù)據(jù)發(fā)送能力。以下對這兩種處理方 式分別進行描述。
本發(fā)明的實施例提供了 一種TCP性能增強方法,通過使用分裂ACK技術(shù) 對TCP接收端向TCP發(fā)送端發(fā)送的ACK進行分裂,進而通過增加TCP發(fā)送端接 收到的ACK數(shù)量,快速提升TCP發(fā)送端的數(shù)據(jù)發(fā)送能力。其實現(xiàn)原理如下
要維持TCP發(fā)送端高的數(shù)據(jù)發(fā)送能力,則必需在TCP發(fā)送端維持高的擁塞 窗口 ( Congestion window,以下簡稱cwnd);而擁塞窗口的增長速度和TCP 發(fā)送端接收到的ACK數(shù)量相關(guān)。具體的,考慮到TCP發(fā)送窗口-min (發(fā)送端 擁塞窗口,接收端通告窗口),使用代理后,TCP發(fā)送窗口二min (發(fā)送端擁 塞窗口,代理通告窗口),代理通告窗口的大小由代理的緩存決定。所以, 當發(fā)送端擁塞窗口大于等于代理通告窗口時,才能達到最大的數(shù)據(jù)發(fā)送能力。 在進入慢啟動階段時,cwnd的初始值為2個MSS (Max Segment Size, TCP發(fā) 送端所能發(fā)送的最大TCP分組包的長度)大小,之后TCP發(fā)送端每收到一個 ACK, cwnd就增加一個MSS, —直增加到cwnd等于慢啟動門限ssthresh或發(fā)生 分組包丟失為止。在cwnd等于慢啟動門限ssthresh后則進入擁塞避免階段,在 擁塞避免階段,TCP發(fā)送端每收到一個ACK,擁塞窗口cwnd將線性增加。因 此,當擁塞窗口的值較小時,使用分裂ACK技術(shù)可以加速擁塞窗口cwnd的增 加,快速的將發(fā)送端擁塞窗口提升到大于等于代理通告窗口 。
分裂ACK的主要方法是代理接收到TCP接收端向TCP發(fā)送端發(fā)送的ACK 時,將該ACK分裂為多個ACK發(fā)送到TCP發(fā)送端。本發(fā)明實施例中分裂ACK 的基本流程如圖l所示,包括如下步驟
步驟sl01 、代理接收到TCP接收端向TCP發(fā)送端發(fā)送的ACK。
步驟sl02、代理判斷需要對該ACK進行分裂處理。
本發(fā)明的實施例中還需要對于是否使用分裂ACK進行監(jiān)控。采用監(jiān)控的原因如下使用分裂ACK能夠加速擁塞窗口增長,但是因為使用代理后,TCP 發(fā)送端的TCP發(fā)送窗口-min (發(fā)送端擁塞窗口,代理通告窗口),因而,當 發(fā)送端擁塞窗口大于代理通告窗口時,再增加發(fā)送端擁塞窗口并不能增大TCP 發(fā)送端的發(fā)送窗口,反而會增加TCP發(fā)送端到TCP接收端的ACK數(shù)目。所以, 需要在代理中跟蹤TCP發(fā)送端擁塞窗口 cwnd的大小。
該監(jiān)控的實現(xiàn)方法如下在代理處維護一個TCP發(fā)送端cwnd的估計值 TPE_cwnd ,同時也維護 一 個TCP發(fā)送端慢啟動門限ssthresh的估計值 TPE_ssthresh。
設(shè)置TPE—cwnd的初始值為2個MSS (Max Segment Size, TCP發(fā)送端所能 發(fā)送的最大TCP分組包的長度)大小,TPE—ssthresh的初始值為TCP接收端的 接收窗口大小。
如果代理從TCP發(fā)送端接收到的數(shù)據(jù)在代理緩存中已經(jīng)存在,或TCP發(fā)送 端發(fā)送的數(shù)據(jù)先前已經(jīng)得到確認,則代理認為TCP發(fā)送端進入了慢啟動,并將 TPE一cwnd的值置為2個MSS大小。此后,在慢啟動階段中,代理每向TCP發(fā)送 端發(fā)送一個ACK, TPE—cwnd的值就增加一個MSS大小。當TPE—cwnd大于等 于TPE—ssthresh時,代理就認為TCP發(fā)送端進入了擁塞避免階段。擁塞避免階 段中,代理每向TCP發(fā)送端發(fā)送一個ACK, TPE—cwnd就遞增MSSfMSS/ TPE—cwnd大小。
獲取TPE—cwnd后,根據(jù)以下準則判斷是否對TCP接收端向TCP發(fā)送端發(fā) 送的ACK進行分裂處理當TPE—cwnd小于代理緩存大小時,那么執(zhí)行分裂 ACK行為;否則,不進行分裂ACK行為,將ACK直接向TCP發(fā)送端發(fā)送。
除了根據(jù)上述準則進行是否需要分裂ACK外,在以下情況也不進行ACK 分裂,而將ACK直接向TCP發(fā)送端發(fā)送(1 )如果從TCP接收端接收的ACK 請求的分組包在代理緩存中不存在且本地緩存不為空,則不對該TCP ACK進 行分裂;(2)對第三次握手ACK不進行分裂;(3)和之前序號重復(fù)的ACK 或DupACK,包括窗口更新包,都不進行分裂。
步驟sl03、代理將ACK分裂后向TCP發(fā)送端發(fā)送。
原因如下使用分裂ACK該ACK的具體分裂方法如圖2所示,包括以下步驟 步驟s201、設(shè)置ACK分裂的數(shù)目和請求序號。
當代理向TCP發(fā)送端發(fā)送ACK時,為了不失一i&性,々支設(shè)從TCP接收端接 收到的該ACK請求的分組包的序號是N,記為ACK(N),分組包大小為MSS, 那么在代理向TCP發(fā)送端發(fā)送ACK(N)之前,由代理創(chuàng)建L(^1 )個分裂ACK, 該類ACK具有這樣的特征這L個ACK的應(yīng)答號均在((N-MSS ) ,N)范圍內(nèi), 并各不相同,其中N〉MSS)。將這L個ACK的請求序號分別設(shè)置為N-L, N-L+1 , , .N-X, .. .N-2, N國1 (1 SXSL<MSS )。
步驟s202、設(shè)置分裂ACK (N-X)與ACK (N)的包頭信息。
根據(jù)TCP連接對應(yīng)的代理本地緩存大小設(shè)置各個分裂ACK的通告窗口 值,假設(shè)每個代理實體緩存大小為Mbytes,那么,對于分裂ACK (N- X)和 ACK(N),其通告窗口都設(shè)置為Mbytes。
步驟s203、向TCP發(fā)送端發(fā)送分裂后的ACK。
發(fā)送時,按照ACK(N-L) 、 ACK(N-L+1),…,ACK(N-X),…ACK (N-l) , ACK (N)的順序, 一起發(fā)送給TCP發(fā)送端。
在慢啟動階段,TCP發(fā)送端每收到一個分裂ACK,窗口均將增加1個MSS 大??;在擁塞避免階段,TCP發(fā)送端每收到一個分裂ACK,窗口均將增加 MSS承MSS/cwnd大小。
除上述步驟s201 s203外,由TCP巴克利算法可知,TCP接收端通常是每 收到2個TCP分組包后反饋一個ACK,那么當代理收到TCP接收端的ACK后準 備向TCP發(fā)送端發(fā)送ACK時,可以先分析該ACK累積確認了 TCP接收端接收的 哪幾個TCP分組包。然后,對確認的最后一個TCP分組包之前的幾個TCP分組 包分別發(fā)送ACK進行確認。例如,以TCP接收端為UE為例,代理上一次發(fā)送 的應(yīng)答包為ACK代g( Sl ),此時從TCP接收端收到的應(yīng)答的序號為ACKuE( S2 )。 當S2〉S1時,通過查看連接對應(yīng)的代理緩存就可知有多少個TCP分組包^皮TCP 接收端累積確認,設(shè)確認的最大序號包Data (S3),那么代理將為序號小于 S3的每個被累積確認TCP分組包發(fā)送確認,如果累積確認的分組包共有Y個, 那么經(jīng)過此4喿作將增加了Y-1個ACK,這些新增ACK和累積確認ACKuE ( S2 )到達TCP發(fā)送端后,將加速源端擁塞窗口的膨脹,這可認為分裂ACK實現(xiàn)的 特殊情況。另外,可以根據(jù)上述分裂ACK觸發(fā)原則對這些ACK,再進行分裂。 上面敘述的是非捎帶ACK被分裂的情況,對于捎帶ACK (指ACK本身搭 載了數(shù)據(jù)),本身數(shù)據(jù)長度非O,仍然按照上述分裂方法進行分裂,得到的分 裂ACK載荷長度為0。發(fā)送順序也是小確認序號ACK在前,大確認序號ACK 在后, 一起發(fā)送給TCP發(fā)送端。
本發(fā)明的實施例還提供了一種TCP處理方法,目的在于增強TCP傳輸性
速將TCP發(fā)送端由慢啟動快速進入對丟失分組包的快速重傳,并在快速重傳后 的快速恢復(fù)階段中通過對從TCP接收端收到的DupACK進行一定量的復(fù)制,提 升快速恢復(fù)階段TCP發(fā)送端的數(shù)據(jù)發(fā)送能力。原因如下
現(xiàn)有技術(shù)中,TCP發(fā)送端收到TCP接收端發(fā)出的3個DupACK后才會進入 快速重傳,以恢復(fù)丟失的分組包。因此,在代理檢測到分組包丟失后,直接 創(chuàng)建DupACK發(fā)送給TCP發(fā)送端,則可加速丟失分組包的重傳,縮短重傳所花 費的時間。另外,快速重傳階段完成后,通常會進入快速恢復(fù)階段。在快速 恢復(fù)階段,TCP發(fā)送端每收到一個TCP接收端發(fā)出的DupACK, cwnd將遞加一 個報文大小。因而對從TCP接收端收到的DupACK進行一定量的復(fù)制,可提升 快速恢復(fù)階段TCP發(fā)送端的數(shù)據(jù)發(fā)送能力。
本發(fā)明的實施例中,使用了代理緩存排序技術(shù)和代理分組包丟失檢測, 在此基礎(chǔ)上進行復(fù)制DupACK。
本發(fā)明實施例中使用的代理緩存排序方法如下
在進行DupACK創(chuàng)建之前,首先要檢測分組包丟失,所以本方案在代理上 對從TCP發(fā)送端過來的數(shù)據(jù)進行排序。具體的排序的原則為
目前TCP使用的SN (SequenceNumber,序列號)是一個32位的計數(shù)器, 乂人0-4294967295 (即232-1 ) 。 TCP為每一個連才妄選I奪一個ISN (Initial Sequence Number,初始序列號),為了防止因為延遲、重傳等擾亂三次握手,ISN不能 隨便選取,不同系統(tǒng)有不同算法。當分組包序號大于ISN而小于最大序號4294967295時,代理每收到一個分組包,將根據(jù)其序號值,按照從小序號在 前,大序號在后的順序(即從隊頭往隊尾,分組包序號是從小到大),在代 理緩存鏈表中找到對應(yīng)位置插入。特殊地,對于TCP發(fā)送端重傳的分組包,如 果鏈表中已經(jīng)存在,直接丟棄。當收到發(fā)生序號回繞的分組包時,插在最大 序號分組包的后面。
該代理緩存排序是代理檢測分組包丟失的前提,它能夠避免到達TCP接收 端的分組包發(fā)生亂序,從而避免由于亂序而導(dǎo)致TCP接收端發(fā)送不必要的 DupACK。
本發(fā)明實施例中使用的代理分組包丟失檢測方法如下
要判別哪些TCP分組包需要由TCP發(fā)送端重傳,有下面幾個規(guī)則
由TCP發(fā)送端重傳。
規(guī)則2:代理緩存溢出的TCP分組包,將由TCP發(fā)送端重傳。 規(guī)則3:針對一個已經(jīng)排序的代理緩存隊列,當代理準備下發(fā)某個分組包 時,如果發(fā)現(xiàn)TCP接收端返回ACK所請求的序號(設(shè)為K)在代理緩存中不存 在,沒有到達的原因可能是該分組包仍然滯留在TCP發(fā)送端所在網(wǎng)絡(luò)中,也有 可能在傳輸過程中丟失,這里,代理將其按照丟失處理,即也將由TCP發(fā)送端 重傳。
基于上述代理緩存排序技術(shù)和代理分組包丟失檢測方法,本發(fā)明的實施 例中,得到分組包丟失信息后,執(zhí)行復(fù)制DupACK功能,如圖3所示,具體流 程如下
步驟s301、代理接收到TCP接收端向TCP發(fā)送端發(fā)送的ACK或 DupACK,判斷需要根據(jù)該ACK創(chuàng)建DupACK、或復(fù)制接收到的DupACK。 具體的,判斷需要創(chuàng)建DupACK的方法為
接收到ACK時,若本地緩存不為空且該ACK所請求的分組包在本地緩 存中不存在時,則判斷為分組包在TCP發(fā)送端與代理之間丟失,需要創(chuàng)建 DupACK并向TCP發(fā)送端所送。
具體的,判斷需要復(fù)制DupACK的方法為接收到TCP接收端向TCP發(fā)送端發(fā)送的DupACK,判斷所述TCP發(fā)送 端將進入快速恢復(fù)階-度,此時如果估計所述TCP發(fā)送端的擁塞窗口大小小于 代理本地緩存大小,則根據(jù)所述DupACK復(fù)制出新的DupACK并向所述TCP 發(fā)送端發(fā)送。
估計所述TCP發(fā)送端的擁塞窗口大小的方法具體為
在代理處維護一個TCP發(fā)送端cwnd的估計值TPE—cwnd,同時維護一個 TCP發(fā)送端慢啟動門限ssthresh的估計值TPE_ssthresh.。設(shè)置TPE—cwnd的初 始值為2個MSS大小,TPE—ssthresh.的初始值為TCP接收端的接收窗口大小。
失)時,TCP發(fā)送端將準備重傳該丟失的分組包。此時,代理將TPE一cwnd和 TPE—ssthresh變?yōu)閙in (TPE—cwnd,代理通告給TCP發(fā)送端的窗口 ) /2,后續(xù) 如果進入了快速恢復(fù)階段,代理每向TCP發(fā)送端發(fā)送一個DupACK, TPE—cwnd 就增加1個MSS大小。隨后,代理收到重傳分組包的確認后,則認為TCP發(fā)送 端將進入擁塞避免過程,此時,代理每向TCP發(fā)送端發(fā)送一個ACK, TPE—cwnd 就遞增^^8*^/^8/ TPE—cwnd大小。
因此,當TCP發(fā)送端處于快速恢復(fù)階段時,根據(jù)估計得到的TCP發(fā)送端的 擁塞窗口大小TPEjwnd,可以判斷是否復(fù)制DupACK:當TPEjwnd小于代理 緩存大小時,那么執(zhí)行復(fù)制DupACK行為;否則,不進行復(fù)制DupACK行為。
步驟s302、需要創(chuàng)建DupACK時,代理根據(jù)接收的ACK創(chuàng)建DupACK、并 向TCP發(fā)送端發(fā)送。
根據(jù)TCP接收端的請求ACK,檢測到分組包丟失后,將其攜帶的通告窗 口大小設(shè)置為對應(yīng)于該連接的代理緩存大小,然后按照該ACK創(chuàng)建3個 DupACK,并一起發(fā)給TCP發(fā)送端,使得TCP發(fā)送端快速重傳該丟失的分組包。 上面描述的是非捎帶ACK情況,對于捎帶ACK情況,通過復(fù)制該ACK的TCP/IP 頭部來進行創(chuàng)建。
步驟s303、需要復(fù)制DupACK時,代理根據(jù)接收的DupACK復(fù)制DupACK 并向TCP發(fā)送端發(fā)送。
對于從TCP接收端發(fā)送的DupACK,將窗口修改為和前面復(fù)制的3個DupACK—樣,然后判斷是否執(zhí)行復(fù)制DupACK,如果執(zhí)行,那么對該DupACK 復(fù)制一定量(如l個)的DupACKs,然后將該DupACK和復(fù)制DupACK—起發(fā) 送給TCP發(fā)送端,對于后續(xù)到達代理的其它DupACK執(zhí)行和上面相同的操作。 上面描述的是非捎帶ACK情況,對于捎帶ACK情況,通過復(fù)制該DupACK的 TCP/IP頭部來進行復(fù)制DupACK。
步驟s304、代理接收到TCP接收端的對該重傳分組包的應(yīng)答后,將窗口修 改為對應(yīng)代理的緩存大小,然后發(fā)送給TCP發(fā)送端。
當重傳分組包從TCP發(fā)送端到達代理后,需判斷代理是否已經(jīng)收到過該序 號的分組包如果該序號的分組包已經(jīng)在代理緩存中,這表明第一次傳輸該 分組包發(fā)生了亂序,但仍在重傳分組包之前到達代理,這種情況下,直接丟 棄到達的重傳分組包。如果該序號的分組包不在代理緩存中,那么說明該分 組包在TCP發(fā)送端所在網(wǎng)絡(luò)發(fā)生了丟棄。此時,代理收到該重傳分組包后,同 樣將按照序號順序插入到代理緩存隊列中的相應(yīng)位置,如果隊列中所有分組 包的序號均大于該重傳分組包,那么直接將該重傳分組包插入到隊頭。
通過使用本發(fā)明的實施例提供的方法,通過ACK分裂加速了 TCP發(fā)送端 擁塞窗口的增長,從而縮短了TCP發(fā)送端的慢啟動過程,提高了擁塞避免階段 TCP發(fā)送端的發(fā)送速度;另外使得TCP發(fā)送端在發(fā)送窗口降低后,能夠快速恢 復(fù)到最大值。
通過創(chuàng)建/復(fù)制DupACK,從而縮短了TCP發(fā)送端的慢啟動過程,加速了 TCP發(fā)送端快速重傳所丟失的分組包,并在快速恢復(fù)階—段為空口提供了更加充 足的數(shù)據(jù),從而更大程度地避免空口沒有數(shù)據(jù)可傳的現(xiàn)象發(fā)生。
如果有線側(cè)時延越大,那么分裂ACK、創(chuàng)建/復(fù)制DupACK帶來的有益效 果就越明顯。
本發(fā)明的實施例還提供一種代理功能實體,應(yīng)用于TCP處理,如圖4所示, 包括
接收單元11,用于接收到TCP接收端向TCP發(fā)送端發(fā)送的ACK; 判斷單元12,用于判斷是否需要對所述接收單元接收的ACK進行分裂; 分裂處理單元13,用于將所述ACK分裂成多個ACK,并將所述分裂后的ACK和所述ACK發(fā)送給TCP發(fā)送端。 其中,分裂處理單元進一步包括
分裂數(shù)目設(shè)置子單元131,用于設(shè)置ACK分裂的數(shù)目、請求序號; 包頭信息設(shè)置子單元132,用于設(shè)置分裂得到的ACK的包頭信息; 發(fā)送子單元133,用于將所述分裂后的ACK發(fā)送給TCP發(fā)送端。 本發(fā)明的實施例還提供一種代理功能實體,應(yīng)用于TCP處理,如圖5所 示,包括
接收單元21,用于接收TCP接收端向TCP發(fā)送端發(fā)送的ACK、或 DupACK;
判斷單元22,用于判斷是否需要對所述接收單元接收的ACK創(chuàng)建 DupACK、或判斷是否需要對所述接收單元接收的DupACK進行復(fù)制;
創(chuàng)建處理單元23,用于創(chuàng)建DupACK,并將所述ACK和創(chuàng)建得到的 DupACK向所述TCP發(fā)送端發(fā)送。
復(fù)制處理單元24,用于復(fù)制所述DupACK,并將所述DupACK和復(fù)制得 到的DupACK向所述TCP發(fā)送端發(fā)送。
該代理功能實體還包括
緩存排序單元25,用于在本地緩存中對TCP發(fā)送端發(fā)送的分組包進行緩 存排序;
丟包檢測單元26,用于獲取需要請求TCP發(fā)送端重傳的分組包。 該代理功能實體還包括
重傳包接收單元27,用于接收到所述TCP發(fā)送端發(fā)送的重傳分組包后, 判斷是否已經(jīng)收到過所述序號的分組包所述序號的分組包已經(jīng)在本地緩存 時直接丟棄;否則按照所述分組包的序號按照序號順序插入到本地緩存隊列 中的相應(yīng)位置,如果隊列中所有分組包的序號均大于所述重傳分組包,則直 接將所述重傳分組包插入到隊頭。
本發(fā)明的實施例中還提供一種代理功能實體,應(yīng)用于TCP處理,包括 代理判斷單元,用于判斷需要加速所述TCP接收端和TCP發(fā)送端之間的 數(shù)據(jù)發(fā)送;代理處理單元,用于對所述TCP接收端向所述TCP發(fā)送端發(fā)送的響應(yīng)包 ACK或重復(fù)響應(yīng)包DupACK進行處理;
代理發(fā)送單元,用于將所述處理后的響應(yīng)包ACK或重復(fù)響應(yīng)包DupACK 發(fā)送給所述TCP發(fā)送端,以加速所述TCP接收端和TCP發(fā)送端之間的數(shù)據(jù) 發(fā)送。
上述代理處理單元可以具體包括
第一判斷子單元,用于判斷需要對所述TCP接收端向所述TCP發(fā)送端發(fā) 送的ACK進行分裂;分裂處理子單元,用于對所述需要進行分裂的ACK進 行分裂處理,將所述ACK分裂成多個ACK。
上述代理處理單元還可以具體包括
第二判斷子單元,用于判斷是否需要創(chuàng)建DupACK或復(fù)制從所述TCP接 收端接收的DupACK;復(fù)制處理子單元,用于所述第二判斷子單元判斷為需 要復(fù)制DupACK時,復(fù)制所述DupACK并將所述DupACK和復(fù)制的DupACK 向所述代理發(fā)送單元發(fā)送;創(chuàng)建處理子單元,用于所述判斷單元判斷為需要 創(chuàng)建DupACK時,創(chuàng)建DupACK,并將TCP接收端發(fā)送的ACK和創(chuàng)建得到 的DupACK向所述代理發(fā)送單元發(fā)送。
通過使用本發(fā)明的實施例提供的設(shè)備,通過ACK分裂加速了 TCP發(fā)送端 擁塞窗口的增長,從而縮短了TCP發(fā)送端的慢啟動過程,提高了擁塞避免階段 TCP發(fā)送端的發(fā)送速度。另外使得TCP發(fā)送端在發(fā)送窗口降低后,能夠快速恢 復(fù)到大值。
通過創(chuàng)建/復(fù)制DupACK加速TCP發(fā)送端快速重傳發(fā)送端側(cè)丟失的分組 包,能夠為空口提供更加充足的數(shù)據(jù),從而更大程度地避免空口沒有數(shù)據(jù)可 傳的現(xiàn)象發(fā)生。
如果有線側(cè)時延越大,那么分裂ACK、創(chuàng)建/復(fù)制DupACK帶來的有益效 果就越明顯。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā) 明可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件, 但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案該獲取機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一 臺終端 設(shè)備執(zhí)行本發(fā)明各個實施例所述的方法。
以上公開的僅為本發(fā)明的幾個具體實施例,但是,本發(fā)明并非局限于此, 任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護范圍。
權(quán)利要求
1.一種無線傳輸控制協(xié)議TCP處理方法,應(yīng)用于TCP發(fā)送端與TCP接收端間的代理,其特征在于,包括判斷需要加速所述TCP接收端和TCP發(fā)送端之間的數(shù)據(jù)發(fā)送;對所述TCP接收端向所述TCP發(fā)送端發(fā)送的響應(yīng)包ACK或重復(fù)響應(yīng)包DupACK進行處理并發(fā)送給所述TCP發(fā)送端,以加速所述TCP接收端和TCP發(fā)送端之間的數(shù)據(jù)發(fā)送。
2、 如權(quán)利要求1所述的方法,其特征在于,所述對TCP接收端向所述 TCP發(fā)送端發(fā)送的響應(yīng)包ACK進行處理并發(fā)送給所述TCP發(fā)送端包括接收到TCP接收端向TCP發(fā)送端發(fā)送的響應(yīng)包ACK,對所述ACK進行 分裂;將所述ACK分裂成多個ACK并向所述TCP發(fā)送端發(fā)送。
3、 如權(quán)利要求2所述的方法,其特征在于,判斷對所述ACK進行分裂 包括估計TCP發(fā)送端的擁塞窗口大小,當所述擁塞窗口大小小于本地緩存 大小時,判斷對所述ACK進行分裂。
4、 如權(quán)利要求3所述的方法,其特征在于,所述估計TCP發(fā)送端的擁塞 窗口大小包括在代理處維護所述TCP發(fā)送端的擁塞窗口大小的估計值TPE—cwnd,以 及TCP發(fā)送端慢啟動門限的估計值TPE—ssthresh,并設(shè)置初始值;從所述TCP發(fā)送端接收到的數(shù)據(jù)在代理本地緩存中已存在,或TCP發(fā)送 端發(fā)送的數(shù)據(jù)已得到確認時,判斷所述TCP發(fā)送端進入慢啟動階段,在所述 慢啟動階段,每向所述TCP發(fā)送端發(fā)送一個ACK,所述TPE_cwnd增加MSS bytes;當TPE—cwnd大于等于TPE一ssthresh時,判斷所述TCP發(fā)送端進入擁塞 避免階段,在所述擁塞避免階段,每向所述TCP發(fā)送端發(fā)送一個ACK, TPE—cwnd遞增MSS*MSS/ TPE—cwnd bytes;其中所述MSS為每個TCP分組包的大小。
5、 如權(quán)利要求2所述的方法,其特征在于,所述將ACK分裂成多個ACK 包括 設(shè)置ACK分裂的數(shù)目、請求序號,以及分裂得到的ACK的包頭信息; 將ACK分裂成多個ACK。
6、 如權(quán)利要求5所述的方法,其特征在于,所述設(shè)置ACK分裂的數(shù)目和 請求序號包括對于從TCP接收端接收到的請求序號為N的ACK (N),由代理創(chuàng)建L個 分裂ACK,將所述L個ACK的請求序號分別設(shè)置為N-L, N-L+1, ...N-X, ...N-2, N-l。
7、 如權(quán)利要求5所述的方法,其特征在于,所述設(shè)置分裂得到的ACK的 包頭信息包括根據(jù)TCP連接對應(yīng)的代理本地緩存大小,設(shè)置各個分裂ACK的包頭信息 中的通告窗口值。
8、 如權(quán)利要求2至7任一項所述的方法,其特征在于,所述將ACK分 裂成多個ACK并向所述TCP發(fā)送端發(fā)送后,還包括根據(jù)所述TCP接收端的ACK,分析所述ACK累積確認了所述TCP接收 端接收的TCP分組包,對所述確認的最后一個TCP分組包之前的各TCP分 組包分別發(fā)送ACK。
9、 如權(quán)利要求1所述的方法,其特征在于,所述對TCP接收端向所述 TCP發(fā)送端發(fā)送的重復(fù)響應(yīng)包DupACK進行處理并發(fā)送給所述TCP發(fā)送端包 括創(chuàng)建DupACK或復(fù)制從所述TCP接收端接收的DupACK; 將所述創(chuàng)建或復(fù)制的DupACK向所述TCP發(fā)送端發(fā)送。
10、 如權(quán)利要求9所述的方法,其特征在于,所述判斷需要創(chuàng)建DupACK 包括接收到ACK時,若本地緩存不為空且其所請求的分組包在本地緩存中不 存在時,則判斷為所述分組包在TCP發(fā)送端與代理之間丟失,判斷需要創(chuàng)建 DupACK并向所述TCP發(fā)送端所送。
11、 如權(quán)利要求9所述的方法,其特征在于,所述判斷需要復(fù)制DupACK 包括 接收到TCP接收端向TCP發(fā)送端發(fā)送的DupACK,判斷所述TCP發(fā)送 端將進入快速恢復(fù)階段,此時如果估計所述TCP發(fā)送端的擁塞窗口大小小于 本地緩存大小,則判斷需要才艮據(jù)所述DupACK復(fù)制出新的DupACK并向所述 TCP發(fā)送端發(fā)送。
12、 如權(quán)利要求11所述的方法,其特征在于,所述估計TCP發(fā)送端的擁 塞窗口大小包括在本地維護所述TCP發(fā)送端的擁塞窗口大小的估計值TPE一cwnd、以及 TCP發(fā)送端慢啟動門限的估計值TPE一ssthresh,并i殳置初始值;創(chuàng)建一定數(shù)量的DupACK發(fā)送給所述TCP發(fā)送端后,使得所述TCP發(fā) 送端進入快速重傳階段,將TPE—cwnd和TPE—ssthresh設(shè)置為min( TPE—cwnd, 代理通告給TCP發(fā)送端的窗口 ) /2;所述TCP發(fā)送端進入快速恢復(fù)階段;在所述快速恢復(fù)階段,每向所述TCP發(fā)送端發(fā)送一個包括DupACK和復(fù) 制DupACKs在內(nèi)的DupACK, TPE一cwnd增加MSSbytes;從TCP接收端收 到對重傳分組包的確認后,所述TCP發(fā)送端進入擁塞避免過程,每向所述TCP 發(fā)送端發(fā)送一個ACK, TPE—cwnd遞增MSS*MSS/ TPE—cwnd。
13、 如權(quán)利要求9所述的方法,其特征在于,所述將創(chuàng)建或復(fù)制得到的 DupACK向TCP發(fā)送端發(fā)送包括根據(jù)所述TCP接收端的ACK檢測到分組包丟失后,將其攜帶的通告窗口 大小設(shè)置為對應(yīng)于所述連接的本地緩存大小,并按照所述ACK創(chuàng)建多個 DupACK,將所述ACK和所述創(chuàng)建的DupACK—起向所述TCP發(fā)送端發(fā)送;對于后續(xù)從TCP接收端收到的DupACK,將所述通告窗口大小修改為和前 面創(chuàng)建DupACK相同的通告窗口的大小,對所述DupACK復(fù)制 一 定量的 DupACKs,然后將所述DupACK和復(fù)制DupACKs—起發(fā)送給TCP發(fā)送端。
14、 一種代理功能實體,應(yīng)用于TCP處理,其特征在于,包括 代理判斷單元,用于判斷需要加速所述TCP接收端和TCP發(fā)送端之間的數(shù)據(jù)發(fā)送;ACK或重復(fù)響應(yīng)包DupACK進4亍處理; 代理發(fā)送單元,用于將所述處理后的響應(yīng)包ACK或重復(fù)響應(yīng)包DupACK 發(fā)送給所述TCP發(fā)送端,以加速所述TCP接收端和TCP發(fā)送端之間的數(shù)據(jù)發(fā)送。
15、 如權(quán)利要求14所述的代理功能實體,其特征在于,所述代理處理單 元具體包括第一判斷子單元,用于判斷需要對所述TCP接收端向所述TCP發(fā)送端發(fā) 送的ACK進行分裂;分裂處理子單元,用于對所述需要進行分裂的ACK進行分裂處理,將所 述ACK分裂成多個ACK。
16、 如權(quán)利要求14所述的代理功能實體,其特征在于,所述代理處理單 元具體包括第二判斷子單元,用于判斷是否需要創(chuàng)建DupACK或復(fù)制從所述TCP接 收端接收的DupACK;復(fù)制處理子單元,用于所述第二判斷子單元判斷為需要復(fù)制DupACK時, 復(fù)制所述DupACK,并將所述DupACK和復(fù)制的DupACK向所述代理發(fā)送單 元發(fā)送;創(chuàng)建處理子單元,用于所述判斷單元判斷為需要創(chuàng)建DupACK時,創(chuàng)建 DupACK,并將TCP接收端發(fā)送的ACK和創(chuàng)建得到的DupACK向所述代理 發(fā)送單元發(fā)送。
全文摘要
本發(fā)明實施例提供一種無線傳輸控制協(xié)議處理方法和設(shè)備。該方法包括判斷需要加速所述TCP接收端和TCP發(fā)送端之間的數(shù)據(jù)發(fā)送;對所述TCP接收端向所述TCP發(fā)送端發(fā)送的響應(yīng)包ACK或重復(fù)響應(yīng)包DupACK進行處理并發(fā)送給所述TCP發(fā)送端,以加速所述TCP接收端和TCP發(fā)送端之間的數(shù)據(jù)發(fā)送。通過使用本發(fā)明的實施例,縮短了TCP發(fā)送端慢啟動所持續(xù)的時間,加速恢復(fù)了TCP發(fā)送端的數(shù)據(jù)發(fā)送能力。
文檔編號H04L1/16GK101369877SQ200810212050
公開日2009年2月18日 申請日期2008年9月16日 優(yōu)先權(quán)日2007年12月27日
發(fā)明者廖軍華, 張巖強, 曾偉軍, 李師凱, 博 雷 申請人:華為技術(shù)有限公司