專利名稱:一種惡劣信道下的tcp加速方法
技術(shù)領(lǐng)域:
本發(fā)明為一種TCP (Transmission Control Protocol,傳輸控制協(xié)議)加速的方法,屬于TCP加速算法中的分段連接算法(SPLIT CONNECT 10NAPPR0ACHES),也是一種TCP加速代 (PEP, Performance EnhancmentProxy)
背景技術(shù):
噴泉碼主要包括LT碼和Raptor碼兩種,LT碼是噴泉碼的基礎(chǔ)形式,Raptor碼是噴泉碼改進形式。LT碼的編碼長度是任意的,可以從Ι-bit 二進制符號一直到任意n-bit。 LT碼是無碼率的碼,也就是說,從數(shù)據(jù)得到的編碼符號可以是無限多的。而且,編碼符號可以隨意產(chǎn)生,可以根據(jù)需要產(chǎn)生任意多個。同時解碼器可以由比編碼前數(shù)據(jù)長度多一點的編碼數(shù)據(jù)恢復(fù)出原始數(shù)據(jù)。因此,無論網(wǎng)絡(luò)有多少丟包,怎樣丟包,編碼器都可以產(chǎn)生足夠多的編碼分組,直到解碼器接收到足夠多并成功解碼。由于解碼器可以只用比原始數(shù)據(jù)多一點點的編碼數(shù)據(jù)來恢復(fù)原始數(shù)據(jù),LT碼對于丟包信道可以說是接近理想的。所以總的說 LT碼是相對于任意丟包信道都接近理想并且隨數(shù)據(jù)量增長也非常高效的一種編碼方式。下面給出一個簡單的例子來說明LT碼的編解碼。假設(shè)整個數(shù)據(jù)共有3-bit,每個bit為一個原始分組,如圖IA所示,編碼器將隨機取出N個原始分組(N稱為“權(quán)重”),并對其做異或操作得到編碼分組。一種編碼的舉例如圖IB所示。圖IB中的連線表示編碼分組是由哪幾個原始分組異或而來。解碼器看到的情況如圖IC所示,解碼過程開始時,首先尋找只有一個連接線(即只由一個編碼分組異或得來) 的編碼分組。如果沒有這樣的分組到來,則解碼暫停并等待這種分組的到來。在我們的例子中,第一個編碼分組正是這樣的分組。通過這一分組解碼器得到第一個原始分組為1。之后解碼器會搜尋將所有跟第一個原始分組有連線的編碼分組的連線都消去,即異或第一個原始分組。這樣第一步解碼完成后情況如圖1D。在圖ID所示的階段,將會循環(huán)上述步驟直到解碼完成。在這個例子中,第四個編碼分組只有一條連線,故可以恢復(fù)出第三個原始分組為1,之后即可根據(jù)第二個編碼分組恢復(fù)出第二個原始分組為0。傳統(tǒng)TCP在無線網(wǎng)絡(luò)中主要有兩個問題第一,在包含有線網(wǎng)絡(luò)和無線網(wǎng)絡(luò)的異質(zhì)環(huán)境中缺乏有效的錯誤檢測機制。傳統(tǒng) TCP是針對有線傳輸介質(zhì)提出的,將丟包都?xì)w結(jié)于網(wǎng)絡(luò)擁塞;在無線網(wǎng)絡(luò)環(huán)境下存在許多與擁塞無關(guān)而可以導(dǎo)致丟包的原因。如無線信道突發(fā)性位錯誤、移動設(shè)備處在切換過程中、 ^MfWM (fading channel)等。第二,傳統(tǒng)TCP在無線網(wǎng)路中缺乏有效的錯誤恢復(fù)機制。傳統(tǒng)TCP在檢測出丟包后觸發(fā)擁塞控制處理過程,首先重傳未被確認(rèn)的包,然后減小擁塞窗口從而降低發(fā)送速率, 進而激活擁塞控制機制,包括超時時鐘指數(shù)回退、減小慢啟動閾值,最后進入擁塞避免階段以確保擁塞得以解除。而無線網(wǎng)絡(luò)BER高,使用這種錯誤恢復(fù)會使協(xié)議性能下降,吞吐量的下降和延遲的增加。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供了一種傳輸控制協(xié)議(TCP)加速方法,其特征在于包括判斷延遲是否大于一個第一預(yù)定值;在所述延遲判斷的結(jié)果為“是”時,進行噴泉碼加速;在所述延遲判斷的結(jié)果為“否”時,判斷丟包率是否大于一個第二預(yù)定值;當(dāng)所述丟包率判斷的結(jié)果為“是”時,采用選擇性重傳;當(dāng)所述丟包率判斷的結(jié)果為“否”時,采用傳統(tǒng)的TCP方案。根據(jù)本發(fā)明的另一個方面,提供了一種傳輸控制協(xié)議(TCP)加速器,其特征在于包括數(shù)據(jù)預(yù)讀取部分,用于處理網(wǎng)絡(luò)中原始數(shù)據(jù)幀,分析其協(xié)議類型;數(shù)據(jù)讀取部分,用于分析TCP數(shù)據(jù)包的內(nèi)容,通過查看內(nèi)容判斷是否需要進行加速服務(wù);加速器緩存部分,用于根據(jù)TCP數(shù)據(jù)的順序?qū)ζ溥M行排序;加速方案決策部分,用于選擇合適的加速方案;普通TCP處理部分,用于執(zhí)行標(biāo)準(zhǔn)TCP工作;重發(fā)加速處理選擇部分,用于執(zhí)行選擇性重傳加速;噴泉碼加速處理部分,用于執(zhí)行噴泉碼加速。
圖1顯示了一個簡單的例子,用來說明LT碼的編解碼。圖2顯示了一個典型的多用戶接入網(wǎng)絡(luò)的實例的網(wǎng)絡(luò)拓?fù)?。圖3用于說明是否啟用加速處理以及選擇何種加速方式進行處理的選擇的一個實施例。圖4給出了詳細(xì)執(zhí)行選擇性重傳加速的流程一個實施例。圖5顯示了圖4、圖6中服務(wù)器針對TCP數(shù)據(jù)包的一種進行方式實施例。圖6給出了詳細(xì)執(zhí)行噴泉碼加速的流程的一個實施例。圖7顯示了圖3的方案中的噴泉碼加速處理的一種進行方式實施例。圖8給出了加速器模塊化結(jié)構(gòu)圖的一種進行方式實施例
具體實施例方式本發(fā)明根據(jù)網(wǎng)絡(luò)的具體狀況采用兩種方式進行加速處理,選擇性重傳方式(SACK) 和噴泉碼加速方式。選擇性重傳(SACK)的方式進行TCP的加速,由于每次對一組數(shù)據(jù)分組內(nèi)丟失的數(shù)據(jù)進行確認(rèn),避免不必要的重傳,進而減小時延,提高網(wǎng)絡(luò)吞吐量。另一方面,NACK方法可以讓信道保持連續(xù)的傳輸,而不需要停止等待下一個數(shù)據(jù)分組的確認(rèn),然而在TCP中,必須每次確認(rèn)已正確發(fā)送一組數(shù)據(jù)后,才會發(fā)送下一組,因此對于信道的利用率不高。
但是選擇重傳方法存在的問題是,當(dāng)延遲增加的時候,由于反饋確認(rèn)的時間增加, 從而導(dǎo)致超時和無效重發(fā)次數(shù)增加,因此信道的利用率隨著延遲的增加而降低。由于噴泉碼對丟包信道是接近理想的,且不需要保證傳輸?shù)目煽啃?,對丟包不敏感。因此本發(fā)明在加速器之間采用噴泉碼編解碼的流傳輸技術(shù),利用噴泉碼的無碼率特性, 源源不斷地發(fā)送編碼數(shù)據(jù)包,在占滿信道的情況下,還能在最大程度上減少反饋信道的使用。與選擇性重傳和傳統(tǒng)TCP相比,在丟包率和延遲較大的時候均具有較大優(yōu)勢。當(dāng)然,由于噴泉碼的引入,對于編解碼速率無法與現(xiàn)有IOOMbps的無線網(wǎng)絡(luò)相比。 經(jīng)過實際測試編碼碼率一般能達(dá)到lOMpbs,解碼碼率在5Mbps左右。因此,本發(fā)明提出一種自適應(yīng)的加速方案。在丟包率和延遲均較小的時候,本發(fā)明所提及的設(shè)備能夠采用標(biāo)準(zhǔn)TCP 進行通信;而當(dāng)丟包率較高而延遲仍然較小的時候,設(shè)備可以采用較快的選擇性重傳方案; 當(dāng)丟包率和延遲均較大的時候,則自動切換到噴泉碼加速方案,確保充分利用信道資源。圖 3、圖7給出了這種切換的原則。本發(fā)明可以顯著改進TCP協(xié)議在惡劣信道下的吞吐量,甚至使其接近理想情況。如圖2所示網(wǎng)絡(luò)拓?fù)涫且粋€典型的多用戶接入網(wǎng)絡(luò)的實例。圖中201、202、203為三個示例性的局域網(wǎng),a、b、c分別為這三個局域網(wǎng)的網(wǎng)關(guān)服務(wù)器,本發(fā)明的應(yīng)用程序就安裝這些網(wǎng)關(guān)服務(wù)器上,圖中“網(wǎng)絡(luò)” 204表示局域網(wǎng)201、202、203之間的網(wǎng)絡(luò)鏈路。al、a2、 a3、c 1、c2等代表各個局域網(wǎng)的用戶。圖2中本發(fā)明對應(yīng)的TCP加速器是網(wǎng)絡(luò)中的網(wǎng)關(guān)服務(wù)器a、b、c中的一個模塊??蛻舳伺c客戶端通信的方式是子網(wǎng)內(nèi)客戶端將數(shù)據(jù)報文發(fā)送給網(wǎng)關(guān),由網(wǎng)關(guān)統(tǒng)一將數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)中其他網(wǎng)關(guān)。當(dāng)數(shù)據(jù)報文到達(dá)對應(yīng)網(wǎng)段的網(wǎng)關(guān)后,該網(wǎng)關(guān)將數(shù)據(jù)發(fā)送給目的客戶端,最終實現(xiàn)了端到端的數(shù)據(jù)報文傳輸。本發(fā)明實現(xiàn)了對惡劣環(huán)境下的TCP協(xié)議的加速代理。如圖7所示,根據(jù)本發(fā)明的一個實施例的加速方法包括接收到TCP報文后,對子網(wǎng)內(nèi)的客戶端按照標(biāo)準(zhǔn)TCP協(xié)議主動回復(fù)該數(shù)據(jù)包已接收到。并開啟新的TCP連接加速器包括在局域網(wǎng)的網(wǎng)關(guān)中,并具有一定的過濾分析功能,只對TCP數(shù)據(jù)報文進行加速處理;對于其他類型的數(shù)據(jù)包,加速器僅作轉(zhuǎn)發(fā)處理。數(shù)據(jù)包由發(fā)送端網(wǎng)關(guān)按照常規(guī)路由方式發(fā)送到下一個網(wǎng)關(guān),直到被目的節(jié)點所在子網(wǎng)的網(wǎng)關(guān)接收后, 該網(wǎng)關(guān)對數(shù)據(jù)包進行處理,然后將之按照標(biāo)準(zhǔn)TCP協(xié)議發(fā)送給目的節(jié)點。圖7顯示了根據(jù)本發(fā)明的一個實施例的加速器的工作流程。根據(jù)本發(fā)明的一個實施例的TCP加速器,如圖9所示,其主要工作流程如下901.網(wǎng)關(guān)上的加速代理模塊定期發(fā)送網(wǎng)絡(luò)探測包,獲得網(wǎng)絡(luò)狀態(tài)(丟包率、延時) 的估計信息。902.當(dāng)加速代理模塊收到一個數(shù)據(jù)包后,首先判斷該數(shù)據(jù)包不是TCP數(shù)據(jù)包, “是”則進入904 ;“否”則進入903。903.根據(jù)圖3和圖7的方法確定是否啟用加速處理以及選擇何種加速方式進行處理。圖3中,X軸代表通信鏈路延時的增加,Y軸代表通信鏈路丟包率的增加,圖中不同的圖案表示在某種延時、丟包率情況下應(yīng)該采用何種TCP加速方案。如圖3所示,根據(jù)實際測試經(jīng)驗,作為一個示例性的實施例,可以按照如下方式?jīng)Q策
-當(dāng)丟包率小于1%,延遲小于IOms的時候,采用標(biāo)準(zhǔn)TCP方式,不采用任何加速方案,進入904 ;-當(dāng)丟包率大于1%,小于100%,而延遲小于IOms的時候,采用選擇性重傳方案, 進入905 ;-當(dāng)延遲大于IOms的時候,采用噴泉碼加速方案,進入906。904.查看數(shù)據(jù)包的目的地址,按照路由表直接進行轉(zhuǎn)發(fā)處理。905.按照選擇式重傳方式進行加速處理,隨后進入907。906.按照噴泉碼加速方式進行處理,隨后進入907。907.處理結(jié)束。圖4給出了從發(fā)送端到接收端的詳細(xì)執(zhí)行選擇性重傳加速的流程。如圖4所示,假設(shè)客戶端A向客戶端D發(fā)送一組TCP報文,B是A的網(wǎng)關(guān)加速器,C 是D的網(wǎng)關(guān)加速器。401.當(dāng)A把數(shù)據(jù)發(fā)送到網(wǎng)關(guān)加速器B后,網(wǎng)關(guān)加速器B按照圖5方式偽應(yīng)答A,向 A確認(rèn)該數(shù)據(jù)報文已經(jīng)發(fā)送成功;402.網(wǎng)關(guān)加速器B將該數(shù)據(jù)分組重新排列并存入對應(yīng)TCP連接的緩存中;403.網(wǎng)關(guān)加速器B將數(shù)據(jù)轉(zhuǎn)發(fā)到網(wǎng)關(guān)加速器C ;404.網(wǎng)關(guān)加速器C創(chuàng)建接收緩沖,并每隔預(yù)定時間(如0. 5秒)檢查是否有丟包; 若發(fā)現(xiàn)有丟包,則把所有丟包的編號加入到T0S_ACK消息包內(nèi),并發(fā)送給B ;405.若網(wǎng)關(guān)加速器B收到T0S_ACK消息包,則將所有涉及的丟包再重新發(fā)送給網(wǎng)關(guān)加速器C ;406.在網(wǎng)關(guān)加速器C的接收緩存處,若收到連續(xù)的數(shù)據(jù)塊,則將該連續(xù)數(shù)據(jù)發(fā)送給目的節(jié)點D,直到最后TCP流發(fā)送完畢,發(fā)送FIN。圖10給出了工作在網(wǎng)關(guān)(B和/或C)上的根據(jù)本發(fā)明的TCP加速器的具體工作流程。1001.對從網(wǎng)卡提取的TCP數(shù)據(jù)包進行緩存。1002.判斷數(shù)據(jù)包的類型是否是T0S_ACK數(shù)據(jù)包,如果“是”則進入1003,“否”則進入1004。1003.查找TCP數(shù)據(jù)緩存,重發(fā)對應(yīng)序列號的TCP數(shù)據(jù)包,并將TCP數(shù)據(jù)緩存中該序列號之前的數(shù)據(jù)刪除。1004.判斷上述TCP數(shù)據(jù)包的目的地址,如果是所述網(wǎng)關(guān)(B或C)的內(nèi)部局域網(wǎng)地址則進入1007,如果是其外部網(wǎng)絡(luò)則進入1005。1005.向上述TCP數(shù)據(jù)包的發(fā)送端發(fā)送偽應(yīng)答TCP數(shù)據(jù)包。1006.按照上述TCP數(shù)據(jù)包的目的地址進行轉(zhuǎn)發(fā)處理。1007.按照不同的TCP連接以及相應(yīng)的TCP數(shù)據(jù)包序列號進行順序緩存處理。1008.根據(jù)接收的TCP數(shù)據(jù)包的序列號更新丟失數(shù)據(jù)包序列號緩存。1009.定時查找各個TCP連接的數(shù)據(jù)緩存,隨后進入1010。1010.判斷某個TCP連接的緩存序列號是否存在連續(xù)的緩存序列號,若“是”則進 A 1011。1011.把連續(xù)序列號的TCP數(shù)據(jù)包按照目的地址發(fā)送給相應(yīng)的接收端。
1012.定期查看丟失數(shù)據(jù)包序列號緩存,把相應(yīng)的丟失包序列號封裝到T0S_ACK 數(shù)據(jù)包中,發(fā)送給發(fā)送端的網(wǎng)關(guān)服務(wù)器。如圖6所示,假設(shè)客戶端A向客戶端D發(fā)送一組TCP報文,B是A的網(wǎng)關(guān)加速器,C 是D的網(wǎng)關(guān)加速器。圖6給出了從發(fā)送端到接收端的詳細(xì)執(zhí)行噴泉碼加速的流程的一個實施例,其包括-當(dāng)A把數(shù)據(jù)發(fā)送到網(wǎng)關(guān)加速器B后,網(wǎng)關(guān)加速器B按照圖5方式偽應(yīng)答A,向A 確認(rèn)該數(shù)據(jù)報文已經(jīng)發(fā)送成功;-B將該數(shù)據(jù)分組重新排列并存入對應(yīng)TCP連接的緩存中;-在所述緩存中,為每一個TCP連接流分配一個相應(yīng)的編碼器,對數(shù)據(jù)進行編碼, 編碼后將編碼信息保存,并將數(shù)據(jù)發(fā)送給網(wǎng)關(guān)加速器C ;-網(wǎng)關(guān)加速器C接收到數(shù)據(jù)后,根據(jù)數(shù)據(jù)攜帶的編碼信息將數(shù)據(jù)送入到對應(yīng)解碼器進行解碼;若解碼成功發(fā)送進入第5步,不成功則繼續(xù)等待;若等待時間超時則進入解碼不成功情況;-由于解碼成功,則將解碼后數(shù)據(jù)包放入待發(fā)送緩存,并向網(wǎng)關(guān)加速器B發(fā)送ACK_ DONE數(shù)據(jù)包;-若解碼不成功,且等待超時仍未解碼成功,則發(fā)送T0S_ACK信息包給網(wǎng)關(guān)加速器 B,以表明某一組數(shù)據(jù)分組沒有解碼成功;-若網(wǎng)關(guān)加速器B接收到ACK_D0NE,說明該分組對應(yīng)的數(shù)據(jù)包被解碼成功,則刪除步驟3中保存的編碼信息;-若網(wǎng)關(guān)加速器B接收到T0S_ACK,則說明該分組對應(yīng)的數(shù)據(jù)包尚未解碼成功,則補發(fā)編碼數(shù)據(jù)給C ;-若待發(fā)送緩存是連續(xù)的數(shù)據(jù)分組,則將數(shù)據(jù)發(fā)送給目的節(jié)點D,直到發(fā)送完畢。圖11給出了網(wǎng)關(guān)服務(wù)器上的加速器執(zhí)行噴泉碼加速的流程。1101.對從網(wǎng)卡提取的TCP數(shù)據(jù)包進行緩存。1102.判斷數(shù)據(jù)包是否是T0S_ACK數(shù)據(jù)包,如果“是”則進入1103,“否”則則進入 1104。1103.根據(jù)T0S_ACK數(shù)據(jù)包中的信息從編碼器信息中查找相應(yīng)的編碼信息,如度分布、初始結(jié)束序列號等,從緩存的TCP數(shù)據(jù)中查找相應(yīng)的TCP數(shù)據(jù)包重新進行編碼并發(fā)送。1104.判斷是否是T0S_D0NE數(shù)據(jù)包,如果“是”則進入1105,“否”則進入1106。1105.刪除所述T0S_D0NE數(shù)據(jù)包中傳回的編碼器信息,刪除TCP緩存隊列中相應(yīng)的數(shù)據(jù)包。1106.判斷所述TCP數(shù)據(jù)包的目的地址,如果是該網(wǎng)關(guān)的內(nèi)部局域網(wǎng)地址則進入 1110,如果是其外部網(wǎng)絡(luò)則進入1107。1107.向該TCP數(shù)據(jù)包的發(fā)送端發(fā)送偽應(yīng)答TCP數(shù)據(jù)包。1108.進入噴泉碼編碼模塊進行編碼。1109.在編碼成功時,掛起編碼器,保存編碼器信息,并發(fā)送已完成的編碼數(shù)據(jù)包。1110.根據(jù)不同編碼數(shù)據(jù)包初始化相應(yīng)的解碼器,并保存。1111.將接收的數(shù)據(jù)包放入相應(yīng)的解碼器進行解碼。
1112.判斷解碼是否失敗,如果超過時限沒有收到后續(xù)的編碼數(shù)據(jù)包,則判定該解碼器解碼失敗,隨后,進入1114 ;否則判定解碼成功,隨后,進入1113。1113.發(fā)送T0S_D0NE數(shù)據(jù)包,刪除相應(yīng)的解碼器信息,把解碼數(shù)據(jù)包緩存起來。1114.在解碼失敗的情況下,發(fā)送T0S_ACK數(shù)據(jù)包以使發(fā)送端加速器重新編碼并且重發(fā)該系列編碼數(shù)據(jù)包。1115.定期查看成功解碼的數(shù)據(jù)包緩存。1116.判斷某個TCP連接的成功解碼數(shù)據(jù)包緩存隊列是否存在連續(xù)序列號的數(shù)據(jù)包,如“是”則進入1117。1117.按照連續(xù)序列號TCP數(shù)據(jù)包的目的地址進行發(fā)送。圖7給出了根據(jù)本發(fā)明的噴泉碼加速處理方法的一個實施例。如圖7所示,在網(wǎng)關(guān)需要對新的數(shù)據(jù)分組進行加速,網(wǎng)關(guān)需要選擇適當(dāng)?shù)募铀俜桨?。根?jù)該實施例的方法包括701.網(wǎng)關(guān)首先估計當(dāng)前的信道參數(shù),包括丟包率和延遲;估計方法可以有多種。一種方案是主動監(jiān)測,通過發(fā)送偵測包并通過接收反饋包估計信道;具體計算方
法是丟包率P = N接收數(shù)據(jù)包/N發(fā)送數(shù)據(jù)包,延遲Delay = T接收數(shù)據(jù)包-Τ發(fā)送數(shù)據(jù)包;其中數(shù)據(jù)包的數(shù)量N a收數(shù)據(jù)包,已發(fā)送的數(shù)據(jù)包數(shù)量是N發(fā)送數(shù)據(jù)包,發(fā)送數(shù)據(jù)包的時間為Isfil數(shù)據(jù)包,接收反饋數(shù)據(jù)包的時丨司為T接收數(shù)據(jù)包;另一個方案中,網(wǎng)關(guān)通過接收T0S_ACK信息包來估計對方網(wǎng)關(guān)成功接收率和延遲信息。T0S_ACK信息包內(nèi)包含了對方網(wǎng)關(guān)成功接收到數(shù)據(jù)包的數(shù)量^ftiafra,又已知已發(fā)送的數(shù)據(jù)包數(shù)量是Nsfiaafra,因此丟包率為ρ = Naftm/Nsfiim ;發(fā)送TCP數(shù)據(jù)包的時間為
丁發(fā)送數(shù)據(jù)包,—1^丁(^_八0(^1^]0^|1]力T接收數(shù)據(jù)包,^( Delay = T接收數(shù)據(jù)包_T發(fā)送數(shù)據(jù)包;T0S_ACK信息包描述如圖4、圖5描述的流程所述;702.分析延遲是否大于一個預(yù)定值(例如,10毫秒,也可以根據(jù)網(wǎng)絡(luò)情況等設(shè)定為其他值),如果大于則進入步驟703的噴泉碼加速方案,“否”則進入步驟704的判斷丟包率;703.由于信道情況適合噴泉碼加速,因此采用噴泉碼方案進行加速;704.分析丟包率是否大于一個預(yù)定值(例如,1%,也可以根據(jù)網(wǎng)絡(luò)情況等設(shè)定為其他值),如果大于則進入步驟705的選擇重傳方案,“否”則進入步驟706的傳統(tǒng)TCP方案;705.由于信道情況適合選擇重傳加速,因此采用選擇重傳方案進行加速;706.由于信道情況適合傳統(tǒng)TCP,因此不做任何加速方案,直接進行TCP轉(zhuǎn)發(fā)。圖8給出了根據(jù)本發(fā)明的加速器的模塊結(jié)構(gòu)一個實施例,包括是數(shù)據(jù)預(yù)讀取模塊 801,用于處理網(wǎng)絡(luò)中原始數(shù)據(jù)幀,分析其協(xié)議類型,對于不屬于TCP協(xié)議的數(shù)據(jù)包一律直接交給正常網(wǎng)關(guān)做轉(zhuǎn)發(fā)處理;對于TCP協(xié)議的數(shù)據(jù)包交給數(shù)據(jù)讀取模塊處理;該模塊只分析數(shù)據(jù)包類型,不處理數(shù)據(jù)內(nèi)容,因此工作速度較快,避免成為網(wǎng)絡(luò)瓶頸;普通網(wǎng)關(guān)模塊802,用于起到傳統(tǒng)網(wǎng)關(guān)功能;數(shù)據(jù)讀取模塊803,用于分析所有TCP數(shù)據(jù)包的內(nèi)容,通過查看內(nèi)容判斷是否需要進行加速服務(wù);有的TCP數(shù)據(jù)包可能是來自不支持加速功能的網(wǎng)絡(luò),如果遇到這種類型的 TCP數(shù)據(jù)包,則將數(shù)據(jù)包直接交給正常網(wǎng)關(guān)做轉(zhuǎn)發(fā)處理;如果是需要加速的數(shù)據(jù)包,則交給加速器緩存;加速器緩存模塊模塊804,用于根據(jù)TCP數(shù)據(jù)的順序?qū)ζ溥M行排序。由于處于惡劣網(wǎng)絡(luò)環(huán)境,因此包的到達(dá)可能亂序,故這里需要將TCP數(shù)據(jù)包進行排序;加速方案決策器模塊805,用于按照諸如圖7的實施例的方式選擇合適的加速方案;普通TCP處理模塊806,用于執(zhí)行標(biāo)準(zhǔn)TCP工作;重發(fā)加速處理選擇模塊807,用于按照如圖4的實施例所示的流程進行工作;噴泉碼加速處理模塊808,用于執(zhí)行如圖6的實施例所示的工作流程。本發(fā)明的用途包括-在hternet或者無線自組織網(wǎng)絡(luò)中充當(dāng)網(wǎng)關(guān)功能,為子網(wǎng)內(nèi)節(jié)點提供加速服務(wù),例如圖1所示;-在個人手持終端的藍(lán)牙、WLAN點對點通信中,通過安裝軟件提供本發(fā)明所提及的網(wǎng)絡(luò)加速服務(wù);-在由于惡劣應(yīng)用環(huán)境和可能的干擾造成信道不穩(wěn)定的情況下,可以使用本發(fā)明所提及的網(wǎng)絡(luò)加速功能為軍事通信提供可靠傳輸保證。本發(fā)明的有益效果包括-由于TCP被設(shè)計于可靠的網(wǎng)絡(luò)環(huán)境中,因此當(dāng)丟包率或者延遲增加少許都會導(dǎo)致TCP傳輸性能急劇惡化。因此在大多數(shù)的無線網(wǎng)絡(luò)環(huán)境,尤其是較為復(fù)雜的多條無線網(wǎng)絡(luò)環(huán)境或者是干擾嚴(yán)重的網(wǎng)絡(luò)中,TCP無法充分利用信道資源甚至無法保證傳輸?shù)目煽客瓿?。采用本發(fā)明,可以自適應(yīng)的擔(dān)當(dāng)網(wǎng)絡(luò)加速的功能,當(dāng)網(wǎng)絡(luò)環(huán)境良好的時候提供速率較高的TCP傳輸,當(dāng)網(wǎng)絡(luò)環(huán)境惡化時可以自主切換到加速模式,起到充分利用信道的作用。測試表明,本發(fā)明即時在丟包率90 %以上,延遲2秒鐘左右的環(huán)境里也可以正常工作,并提供接近信道容量的傳輸性能。-另一方面,本發(fā)明只對網(wǎng)絡(luò)轉(zhuǎn)發(fā)節(jié)點——網(wǎng)關(guān)做了增加性的改進,因此對于客戶端,也即用戶而言是透明的。用戶一方面無需升級設(shè)備軟硬件,只需要采用標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議即可接入網(wǎng)絡(luò);另一方面用戶無需了解網(wǎng)絡(luò)復(fù)雜的環(huán)境變化,對于網(wǎng)絡(luò)參數(shù)惡化對于用戶而言僅僅是傳輸速率的浮動,因此在最大限度上保障了用戶的體驗。本發(fā)明應(yīng)用于惡劣的無線信道下,可以解決傳統(tǒng)TCP以及其他TCP改進算法在實際惡劣無線環(huán)境應(yīng)用環(huán)境下吞吐量低的問題,有效利用了信道,大大提高了無線頻譜的利用率。適用于軍隊、應(yīng)急、搶險救災(zāi)等多種惡劣應(yīng)用場景下的快速一對一、一對多乃至多對多的通信環(huán)境。應(yīng)當(dāng)理解的是,在以上敘述和說明中對本發(fā)明所進行的描述只是說明而非限定性的,且在不脫離如所附權(quán)利要求書所限定的本發(fā)明的前提下,可以對上述實施例進行各種改變、變形、和/或修正。
權(quán)利要求
1.一種傳輸控制協(xié)議(TCP)加速方法,其特征在于包括 判斷延遲是否大于一個第一預(yù)定值(步驟702);在所述延遲判斷的結(jié)果為“是”時,進行噴泉碼加速(步驟703);在所述延遲判斷的結(jié)果為“否”時,判斷丟包率是否大于一個第二預(yù)定值(步驟704);當(dāng)所述丟包率判斷的結(jié)果為“是”時,采用選擇性重傳(步驟705);當(dāng)所述丟包率判斷的結(jié)果為“否”時,采用傳統(tǒng)的TCP方案(步驟706)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于所述噴泉碼加速(步驟70 進一步包括 對從網(wǎng)卡提取的TCP數(shù)據(jù)包進行緩存(步驟1101);判斷數(shù)據(jù)包是否是T0S_ACK數(shù)據(jù)包(步驟1102);在上述T0S_ACK數(shù)據(jù)包判斷步驟的結(jié)果為“是”時,根據(jù)T0S_ACK數(shù)據(jù)包中的信息從編碼器信息中查找相應(yīng)的編碼信息,從緩存的TCP數(shù)據(jù)中查找相應(yīng)的TCP數(shù)據(jù)包重新進行編碼并發(fā)送(步驟1103);在上述T0S_ACK數(shù)據(jù)包判斷步驟的結(jié)果為“否”時,判斷是否是T0S_D0NE數(shù)據(jù)包(步驟 1104);在上述T0S_D0NE數(shù)據(jù)包判斷步驟的結(jié)果為“是”時,刪除所述T0S_D0NE數(shù)據(jù)包中傳回的編碼器信息,并刪除TCP緩存隊列中相應(yīng)的數(shù)據(jù)包(步驟1105);在上述T0S_D0NE數(shù)據(jù)包判斷步驟的結(jié)果為“否”時,判斷所述TCP數(shù)據(jù)包的目的地址 (步驟 1106);如果上述目的地址被判斷為該網(wǎng)關(guān)的外部網(wǎng)絡(luò)地址,向該TCP數(shù)據(jù)包的發(fā)送端發(fā)送偽應(yīng)答TCP數(shù)據(jù)包(步驟1107),并進入噴泉碼編碼模塊進行編碼(步驟1108),并在編碼成功時掛起編碼器、保存編碼器信息、并發(fā)送已完成的編碼數(shù)據(jù)包(步驟1109);如果上述目的地址被判斷為該網(wǎng)關(guān)的內(nèi)部局域網(wǎng)地址,根據(jù)不同編碼數(shù)據(jù)包初始化相應(yīng)的解碼器并保存解碼器信息(步驟1110),并將接收的數(shù)據(jù)包放入相應(yīng)的解碼器進行解碼(步驟1111),并判斷解碼是否失敗(步驟1112),在解碼成功時,發(fā)送T0S_D0NE數(shù)據(jù)包、刪除相應(yīng)的解碼器信息、并把解碼數(shù)據(jù)包緩存起來(步驟1113);在解碼失敗的情況下,發(fā)送T0S_ACK數(shù)據(jù)包以使發(fā)送端加速器重新編碼并且重發(fā)該系列編碼數(shù)據(jù)包(步驟1114);定期查看成功解碼的數(shù)據(jù)包緩存(步驟1115);判斷某個TCP連接的成功解碼數(shù)據(jù)包緩存隊列是否存在連續(xù)序列號的數(shù)據(jù)包(步驟 1116);如“是”則進入1117。在存在連續(xù)序列號的數(shù)據(jù)包的情況下,按照連續(xù)序列號TCP數(shù)據(jù)包的目的地址進行發(fā)送(步驟1117)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于所述選擇性重傳(步驟70 進一步包括 當(dāng)一個第一客戶端(A)把數(shù)據(jù)發(fā)送到一個第一網(wǎng)關(guān)加速器(B)后,第一網(wǎng)關(guān)加速器(B)對所述第一客戶端(A)作偽應(yīng)答,向第一客戶端(A)確認(rèn)該數(shù)據(jù)的報文已經(jīng)發(fā)送成功(步驟 401);所述第一網(wǎng)關(guān)加速器(B)將所述數(shù)據(jù)分組重新排列并存入對應(yīng)的TCP連接的緩存中 (步驟402);所述第一網(wǎng)關(guān)加速器(B)將所述數(shù)據(jù)轉(zhuǎn)發(fā)到一個第二網(wǎng)關(guān)加速器(C)(步驟403); 所述第二網(wǎng)關(guān)加速器(C)創(chuàng)建接收緩沖,并每隔預(yù)定時間檢查是否有丟包;若發(fā)現(xiàn)有丟包,則把所有丟包的編號加入到T0S_ACK消息包內(nèi),并發(fā)送給所述第一網(wǎng)關(guān)加速器(B) (步驟404);若所述第二網(wǎng)關(guān)加速器(B)收到所述T0S_ACK消息包,則將所有涉及的丟包再重新發(fā)送給所述第二網(wǎng)關(guān)加速器(C)(步驟405);若在所述第二網(wǎng)關(guān)加速器(C)的接收緩存處收到連續(xù)的數(shù)據(jù)塊,則將該連續(xù)數(shù)據(jù)發(fā)送給一個目的節(jié)點(D),直到最后TCP流發(fā)送完畢(步驟406)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于所述噴泉碼加速(步驟70 進一步包括 當(dāng)一個第一客戶端(A)把數(shù)據(jù)發(fā)送到一個第一網(wǎng)關(guān)加速器(B)后,第一網(wǎng)關(guān)加速器(B)向A確認(rèn)該數(shù)據(jù)報文已經(jīng)發(fā)送成功;所述第一網(wǎng)關(guān)加速器(B)將所述數(shù)據(jù)分組重新排列并存入對應(yīng)TCP連接的緩存中; 在所述緩存中,為每一個TCP連接流分配一個相應(yīng)的編碼器,對數(shù)據(jù)進行編碼,編碼后將編碼信息保存,并將數(shù)據(jù)發(fā)送給一個第二網(wǎng)關(guān)加速器(C);所述第二網(wǎng)關(guān)加速器(C)接收到數(shù)據(jù)后,根據(jù)數(shù)據(jù)攜帶的編碼信息將數(shù)據(jù)送入到對應(yīng)解碼器進行解碼;在解碼成功的情況下,則將解碼后數(shù)據(jù)包放入待發(fā)送緩存,并向所述第一網(wǎng)關(guān)加速器 (B)發(fā)送ACK_D0NE數(shù)據(jù)包;在解碼不成功且等待超時仍未解碼成功的情況下,則發(fā)送T0S_ACK信息包給第一網(wǎng)關(guān)加速器(B),以表明某一組數(shù)據(jù)分組沒有解碼成功;在第一網(wǎng)關(guān)加速器(B)接收到ACK_D0NE時,說明該分組對應(yīng)的數(shù)據(jù)包被解碼成功,則保存的編碼信息;若網(wǎng)關(guān)加速器B接收到T0S_ACK,則說明該分組對應(yīng)的數(shù)據(jù)包尚未解碼成功,則補發(fā)編碼數(shù)據(jù)給所述第二網(wǎng)關(guān)加速器(C);若待發(fā)送緩存是連續(xù)的數(shù)據(jù)分組,則將數(shù)據(jù)發(fā)送給一個目的節(jié)點(D)。
5.一種傳輸控制協(xié)議(TCP)加速器,其特征在于包括數(shù)據(jù)預(yù)讀取部分(801),用于處理網(wǎng)絡(luò)中原始數(shù)據(jù)幀,分析其協(xié)議類型; 數(shù)據(jù)讀取部分(803),用于分析TCP數(shù)據(jù)包的內(nèi)容,通過查看內(nèi)容判斷是否需要進行加速服務(wù);加速器緩存部分(804),用于根據(jù)TCP數(shù)據(jù)的順序?qū)ζ溥M行排序; 加速方案決策部分(805),用于選擇合適的加速方案; 普通TCP處理部分(806),用于執(zhí)行標(biāo)準(zhǔn)TCP工作; 重發(fā)加速處理選擇部分(807),用于執(zhí)行選擇性重傳加速; 噴泉碼加速處理部分(808),用于執(zhí)行噴泉碼加速。
6.根據(jù)權(quán)利要求5的加速器,其特征在于進一步包括 普通網(wǎng)關(guān)部分(802),用于起到傳統(tǒng)網(wǎng)關(guān)的功能。
7.根據(jù)權(quán)利要求5的加速器,其特征在于所述加速方案決策部分(80 所進行的選擇合適的加速方案的處理包括判斷延遲是否大于一個第一預(yù)定值(步驟702);在所述延遲判斷的結(jié)果為“否”時,判斷丟包率是否大于一個第二預(yù)定值(步驟704)。
8.根據(jù)權(quán)利要求5的加速器,其特征在于所述重發(fā)加速處理選擇部分(807),所執(zhí)行的選擇性重傳加速包括當(dāng)一個第一客戶端(A)把數(shù)據(jù)發(fā)送到一個第一網(wǎng)關(guān)加速器(B)后,第一網(wǎng)關(guān)加速器(B) 對所述第一客戶端(A)作偽應(yīng)答,向第一客戶端(A)確認(rèn)該數(shù)據(jù)的報文已經(jīng)發(fā)送成功(步驟 401);所述第一網(wǎng)關(guān)加速器(B)將所述數(shù)據(jù)分組重新排列并存入對應(yīng)的TCP連接的緩存中 (步驟402);所述第一網(wǎng)關(guān)加速器(B)將所述數(shù)據(jù)轉(zhuǎn)發(fā)到一個第二網(wǎng)關(guān)加速器(C)(步驟403); 所述第二網(wǎng)關(guān)加速器(C)創(chuàng)建接收緩沖,并每隔預(yù)定時間檢查是否有丟包;若發(fā)現(xiàn)有丟包,則把所有丟包的編號加入到T0S_ACK消息包內(nèi),并發(fā)送給所述第一網(wǎng)關(guān)加速器(B) (步驟404);若所述第二網(wǎng)關(guān)加速器(B)收到所述T0S_ACK消息包,則將所有涉及的丟包再重新發(fā)送給所述第二網(wǎng)關(guān)加速器(C)(步驟405);若在所述第二網(wǎng)關(guān)加速器(C)的接收緩存處收到連續(xù)的數(shù)據(jù)塊,則將該連續(xù)數(shù)據(jù)發(fā)送給一個目的節(jié)點(D),直到最后TCP流發(fā)送完畢(步驟406)。
9.根據(jù)權(quán)利要求5的加速器,其特征在于所述噴泉碼加速處理部分(808)所執(zhí)行噴泉碼加速處理包括當(dāng)一個第一客戶端(A)把數(shù)據(jù)發(fā)送到一個第一網(wǎng)關(guān)加速器(B)后,第一網(wǎng)關(guān)加速器(B) 向A確認(rèn)該數(shù)據(jù)報文已經(jīng)發(fā)送成功;所述第一網(wǎng)關(guān)加速器(B)將所述數(shù)據(jù)分組重新排列并存入對應(yīng)TCP連接的緩存中; 在所述緩存中,為每一個TCP連接流分配一個相應(yīng)的編碼器,對數(shù)據(jù)進行編碼,編碼后將編碼信息保存,并將數(shù)據(jù)發(fā)送給一個第二網(wǎng)關(guān)加速器(C);所述第二網(wǎng)關(guān)加速器(C)接收到數(shù)據(jù)后,根據(jù)數(shù)據(jù)攜帶的編碼信息將數(shù)據(jù)送入到對應(yīng)解碼器進行解碼;在解碼成功的情況下,則將解碼后數(shù)據(jù)包放入待發(fā)送緩存,并向所述第一網(wǎng)關(guān)加速器 (B)發(fā)送ACK_D0NE數(shù)據(jù)包;在解碼不成功且等待超時仍未解碼成功的情況下,則發(fā)送T0S_ACK信息包給第一網(wǎng)關(guān)加速器(B),以表明某一組數(shù)據(jù)分組沒有解碼成功;在第一網(wǎng)關(guān)加速器(B)接收到ACK_D0NE時,說明該分組對應(yīng)的數(shù)據(jù)包被解碼成功,則保存的編碼信息;若網(wǎng)關(guān)加速器B接收到T0S_ACK,則說明該分組對應(yīng)的數(shù)據(jù)包尚未解碼成功,則補發(fā)編碼數(shù)據(jù)給所述第二網(wǎng)關(guān)加速器(C);若待發(fā)送緩存是連續(xù)的數(shù)據(jù)分組,則將數(shù)據(jù)發(fā)送給一個目的節(jié)點(D)。
全文摘要
本發(fā)明應(yīng)用于惡劣的無線信道下,可以解決傳統(tǒng)TCP以及其他TCP改進算法在實際惡劣無線環(huán)境應(yīng)用環(huán)境下吞吐量低的問題,有效利用了信道,大大提高了無線頻譜的利用率。適用于軍隊、應(yīng)急、搶險救災(zāi)等多種惡劣應(yīng)用場景下的快速一對一、一對多乃至多對多的通信環(huán)境。本發(fā)明的TCP加速方法包括判斷延遲是否大于一個第一預(yù)定值(步驟702);在所述延遲判斷的結(jié)果為“是”時,進行噴泉碼加速(步驟703);在所述延遲判斷的結(jié)果為“否”時,判斷丟包率是否大于一個第二預(yù)定值(步驟704);當(dāng)所述丟包率判斷的結(jié)果為“是”時,采用選擇性重傳(步驟705);當(dāng)所述丟包率判斷的結(jié)果為“否”時,采用傳統(tǒng)的TCP方案(步驟706)。
文檔編號H04L29/06GK102299899SQ20101020826
公開日2011年12月28日 申請日期2010年6月24日 優(yōu)先權(quán)日2010年6月24日
發(fā)明者劉洪全, 劉鵬飛, 宋思明, 谷源濤 申請人:清華大學(xué)