文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)06-0096-04
網(wǎng)絡(luò)技術(shù)的發(fā)展給人們的工作和生活帶來了極大的便利,用戶數(shù)量與日俱增。電子商務(wù)、網(wǎng)絡(luò)游戲等業(yè)務(wù)對網(wǎng)絡(luò)的傳輸速度和數(shù)據(jù)處理速度提出了更高的要求。傳統(tǒng)TCP協(xié)議采用的加性增加和乘性減少的AIMD 窗口管理機(jī)制使其不能適應(yīng)高帶寬延時廣域網(wǎng)的發(fā)展[1]。在高帶寬延時網(wǎng)絡(luò)環(huán)境下,TCP流將會不斷抖動,造成路由器上的隊列長度產(chǎn)生不穩(wěn)定性,TCP 的性能會隨著鏈路帶寬或延時的增加而逐漸降低[2]。針對這些問題,很多學(xué)者對TCP的擁塞控制機(jī)制進(jìn)行了改進(jìn),例如:BIC TCP、CUBIC、FAST TCP等,這些協(xié)議通過改變TCP擁塞窗口的調(diào)整參數(shù)使之在當(dāng)今網(wǎng)絡(luò)中發(fā)揮更好的性能。但是,由Hamilton實(shí)驗(yàn)室搭建的測試床對上述TCP協(xié)議進(jìn)行測試的實(shí)驗(yàn)結(jié)果表明,除了H-TCP外,其他協(xié)議均存在很大的性能問題,特別是RTT不公平性問題[3]。與上述改進(jìn)TCP協(xié)議的研究方法不同,并行TCP是通過增加TCP連接的數(shù)目以及TCP流之間的協(xié)作來提高網(wǎng)絡(luò)傳輸性能的。
1 并行TCP加速系統(tǒng)的設(shè)計
針對廣域網(wǎng)目前存在的帶寬、可靠性和延遲三方面存在的問題,并行TCP廣域網(wǎng)加速系統(tǒng)設(shè)計采用雙網(wǎng)關(guān)模式,實(shí)現(xiàn)客戶端局域網(wǎng)中的用戶對服務(wù)器端局域網(wǎng)內(nèi)多種服務(wù)應(yīng)用的加速訪問。加速系統(tǒng)主要由以下幾個模塊組成:系統(tǒng)配置和日志記錄、接入會話控制、應(yīng)用數(shù)據(jù)管理和網(wǎng)關(guān)間傳輸控制。
(1) 系統(tǒng)配置和日志記錄
系統(tǒng)配置提供給用戶靈活配置系統(tǒng)參數(shù)的功能,用戶可以針對不同的服務(wù)及其側(cè)重的優(yōu)化指標(biāo)進(jìn)行靈活的系統(tǒng)參數(shù)配置,實(shí)現(xiàn)更好的加速效果,例如并發(fā)流數(shù)目的設(shè)置、并發(fā)流的調(diào)度策略以及各種策略本身的參數(shù)等。
(2) 接入會話控制
接入會話控制實(shí)現(xiàn)了會話管理、會話同步控制和會話數(shù)據(jù)流量控制三個功能。
根據(jù)需求,用戶可以訪問對端局域網(wǎng)內(nèi)的多個服務(wù)應(yīng)用,系統(tǒng)將根據(jù)服務(wù)應(yīng)用的IP地址和端口對各種會話進(jìn)行分組管理。會話管理通過為接入會話設(shè)置的ID,實(shí)現(xiàn)對會話的快速定位和控制。
由于采用雙網(wǎng)關(guān)加速設(shè)計模式,數(shù)據(jù)的傳輸由兩端網(wǎng)關(guān)接入會話和網(wǎng)間并行TCP隧道協(xié)同完成。服務(wù)器端會話在系統(tǒng)啟動時已經(jīng)創(chuàng)建成功。在系統(tǒng)支持的接入會話負(fù)載允許時,服務(wù)器端網(wǎng)關(guān)將為接入客戶端網(wǎng)關(guān)新會話分配一個“空閑”會話連接,與網(wǎng)間隧道共同組成一條數(shù)據(jù)鏈路,完成用戶與服務(wù)器之間的數(shù)據(jù)傳輸。
(3) 應(yīng)用數(shù)據(jù)管理
應(yīng)用數(shù)據(jù)管理主要負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)化轉(zhuǎn)發(fā)任務(wù),包括對會話數(shù)據(jù)分塊封裝、分配轉(zhuǎn)發(fā)控制和對網(wǎng)間數(shù)據(jù)進(jìn)行重組解析、分發(fā)控制。
應(yīng)用數(shù)據(jù)管理通過對會話類型的判斷,分別完成對接入會話數(shù)據(jù)和網(wǎng)間隧道會話數(shù)據(jù)的不同處理操作。對于接入會話,系統(tǒng)根據(jù)接入會話的組標(biāo)識和會話號對其數(shù)據(jù)進(jìn)行分塊封裝,并按照數(shù)據(jù)分配策略分配給相應(yīng)的網(wǎng)間隧道會話。對于網(wǎng)間隧道會話,系統(tǒng)將對其數(shù)據(jù)進(jìn)行解析,根據(jù)解析得到的控制信息將其有效數(shù)據(jù)分發(fā)給相應(yīng)的接入會話。
在低速網(wǎng)絡(luò)中,傳統(tǒng)TCP協(xié)議表現(xiàn)出良好公平性使得平均分配策略效率很高且簡單易行,但是,隨著帶寬延時乘積增大,AIMD的窗口調(diào)整策略使傳統(tǒng)TCP在高帶寬延網(wǎng)絡(luò)中公平分享帶寬的調(diào)整時間過長,因此傳統(tǒng)TCP協(xié)議的公平性越來越差。最小緩存數(shù)據(jù)量優(yōu)先分配策略解決了這問題,根據(jù)緩存中排隊的數(shù)據(jù)量的多少,判斷TCP連接的發(fā)送能力,進(jìn)而為其分配相當(dāng)?shù)臄?shù)據(jù)。
(4) 網(wǎng)關(guān)間傳輸控制
網(wǎng)關(guān)間傳輸控制實(shí)現(xiàn)了網(wǎng)關(guān)間并行TCP隧道的管理,即隧道TCP會話的接入控制和隧道數(shù)據(jù)的傳輸。與會話管理中的會話接入控制相似,隧道TCP會話的接入控制是根據(jù)配置文件來配置的服務(wù)器端網(wǎng)關(guān)的IP地址和隧道偵聽端口對隧道TCP會話進(jìn)行分組管理,形成并行TCP隧道。系統(tǒng)通過隧道標(biāo)識和隧道TCP會話標(biāo)識進(jìn)行定位,從而完成接入會話數(shù)據(jù)向隧道TCP會話的數(shù)據(jù)分配。隧道數(shù)據(jù)的傳輸交付socket完成。
2 并行TCP加速系統(tǒng)的實(shí)現(xiàn)
根據(jù)設(shè)計,系統(tǒng)實(shí)現(xiàn)了加速網(wǎng)關(guān)的兩種啟動模式:服務(wù)器端網(wǎng)關(guān)模式和客戶端網(wǎng)關(guān)模式,具體的網(wǎng)關(guān)數(shù)據(jù)通信流程如圖1所示。

2.1 數(shù)據(jù)轉(zhuǎn)化轉(zhuǎn)發(fā)控制
為了實(shí)現(xiàn)會話數(shù)據(jù)和網(wǎng)間數(shù)據(jù)的轉(zhuǎn)化轉(zhuǎn)發(fā),應(yīng)用數(shù)據(jù)管理定義了自己的網(wǎng)關(guān)間傳輸數(shù)據(jù)包封裝格式。數(shù)據(jù)包用于攜帶會話數(shù)據(jù);確認(rèn)包和同步包用于攜帶控制信息,分別應(yīng)用于會話流量控制和會話同步控制。
數(shù)據(jù)轉(zhuǎn)發(fā)控制對會話數(shù)據(jù)的重組是在會話的發(fā)送緩存中完成的。會話的發(fā)送緩存是BlockContainer對象,是用STL容器中的映射表map實(shí)現(xiàn)的,BlockContainer對象以數(shù)據(jù)包序列號和指向數(shù)據(jù)包中有效數(shù)據(jù)的指針構(gòu)成映射。數(shù)據(jù)轉(zhuǎn)發(fā)控制完成對數(shù)據(jù)包的解析后,就可以在會話發(fā)送緩存BlockContainer對象中添加對應(yīng)表項(xiàng),這樣可以避免大量數(shù)據(jù)的轉(zhuǎn)儲,如圖2所示。會話發(fā)送數(shù)據(jù)時,則可順序讀取緩存BlockContainer中的表項(xiàng),如果返回指針非空,則在對應(yīng)內(nèi)存地址取數(shù)據(jù)塊;如果是空指針,則說明有數(shù)據(jù)包延遲,發(fā)送線程將會阻塞,等待該數(shù)據(jù)包到達(dá)激活該發(fā)送線程。

2.2 會話管理
加速網(wǎng)關(guān)系統(tǒng)的實(shí)現(xiàn)有兩種會話類型,系統(tǒng)外接入會話和網(wǎng)間隧道中的TCP會話?;趕ocket編程中的主動請求和偵聽接收兩種建立連接的方式,系統(tǒng)分別對會話的客戶端和服務(wù)器端實(shí)現(xiàn)了不同的管理方式。
客戶端管理分三個層次,如圖3所示,客戶端分組的特征字符串是所連接服務(wù)器的IP地址和端口,多個Client對象組成一個Client group,多個Client group隸屬于Client Manager對象進(jìn)行統(tǒng)一管理。

Client Manager對象實(shí)現(xiàn)了針對服務(wù)應(yīng)用的Client Group管理,Client Group直接對屬于自己分組的Client對象進(jìn)行管理,以會話號LINK_ID為關(guān)鍵字建立映射map,map定義為<LINK_ID,TCPClient>,實(shí)現(xiàn)TCP Client的快速定位。Client Group對象完成組內(nèi)客戶端的查找、添加和刪除。 TCP Client對象實(shí)現(xiàn)了socket通信的基本功能,如發(fā)起連接、接收數(shù)據(jù)和發(fā)送數(shù)據(jù),數(shù)據(jù)的接收和發(fā)送采用獨(dú)立的線程操作,提高通信效率。
服務(wù)器端管理的層次與客戶端管理是類似的,兩者區(qū)別是服務(wù)端管理TcpServer Manager的管理對象是TcpServer,是以其監(jiān)聽的套接字和端口號為主鍵創(chuàng)建Map對象。TcpServer對象實(shí)現(xiàn)了端口監(jiān)聽和接收新連接的操作,將接收新連接TcpClient對象添加到其成員類TCPGroup對象進(jìn)行管理。
2.3 會話同步控制
系統(tǒng)實(shí)現(xiàn)中,每一個會話分組都維護(hù)了一個布爾型數(shù)組。數(shù)組位序就是待分配的會話號資源(LINK_ID)。數(shù)組布爾型元素的值在兩端網(wǎng)關(guān)上有著不同的意義,在客戶端網(wǎng)關(guān)上,它標(biāo)識其位序?qū)?yīng)會話的“建立”或“斷開”;在服務(wù)器端網(wǎng)關(guān)上,它標(biāo)識的是其位序?qū)?yīng)會話的“忙”或“空閑”狀態(tài)。系統(tǒng)通過會話號實(shí)現(xiàn)了會話狀態(tài)位和會話的綁定,進(jìn)而通過對兩端網(wǎng)關(guān)設(shè)置相同的會話號資源實(shí)現(xiàn)兩端系統(tǒng)中的會話同步。
2.4 會話流量控制
TCP滑動窗口機(jī)制是通過控制發(fā)送窗口開始和結(jié)束位置包序列號來實(shí)現(xiàn)的。與其不同,本系統(tǒng)采用了類似TCP滑動窗口的流量控制機(jī)制,通過返回確認(rèn)信息進(jìn)行數(shù)據(jù)量統(tǒng)計來實(shí)現(xiàn)流量控制。
根據(jù)用戶配置,系統(tǒng)分別為每個會話分組設(shè)定了一個發(fā)送窗口值SND_W和接收窗口值RCV_W,且保證SND_W不小于RCV_W。每個接入會話聲明了兩個變量snd_count和rcv_count,分別統(tǒng)計會話已轉(zhuǎn)發(fā)到網(wǎng)關(guān)但未被對端確認(rèn)的數(shù)據(jù)量和已從網(wǎng)關(guān)接收的數(shù)據(jù)量。整個流量控制過程由兩端會話的接收線程和發(fā)送線程協(xié)同完成。
3 系統(tǒng)測試分析
系統(tǒng)測試是在實(shí)驗(yàn)室里搭建的測試床上進(jìn)行的,如圖4所示,網(wǎng)關(guān)主機(jī)配置Linux 2.6內(nèi)核,用WANem模擬廣域網(wǎng),用iperf來生成TCP背景流。在100 MB的瓶頸帶寬環(huán)境下,對系統(tǒng)進(jìn)行大文件傳輸測試和Web網(wǎng)頁訪問測試。

在部署加速網(wǎng)關(guān)前,在無背景流的網(wǎng)絡(luò)環(huán)境中,隨著網(wǎng)絡(luò)時延的增加,瓶頸鏈路的帶寬有效利用率逐漸下降,由10 ms時的25 Mb/s降低到100 ms時的5 Mb/s??梢姡W(wǎng)絡(luò)延時對瓶頸帶寬利用率的影響是很嚴(yán)重的,增加了背景流后的瓶頸鏈路的帶寬有效利用率更差。在部署加速網(wǎng)關(guān)系統(tǒng)之后,無論有無背景流,瓶頸鏈路帶寬的有效利用率明顯得到提高。特別是在有背景流的網(wǎng)絡(luò)環(huán)境中,瓶頸鏈路帶寬的有效利用率提高了14~23倍之多。這說明了并行TCP傳輸在高帶寬長時延的廣域網(wǎng)中具有更好的帶寬利用率。
3.2 Web網(wǎng)頁訪問測試
測試方案:廣域網(wǎng)瓶頸帶寬設(shè)置為100 MB,網(wǎng)絡(luò)延時設(shè)置為100 ms,分別在有無背景流網(wǎng)絡(luò)環(huán)境中,在啟用加速網(wǎng)關(guān)的前后,對Web訪問的平均響應(yīng)時間進(jìn)行測試。下載網(wǎng)頁的大小為3 126 B。為了避免系統(tǒng)所帶來的隨機(jī)性,測試結(jié)果是多次測試結(jié)果的平均值,如圖6所示。在實(shí)驗(yàn)中,Web訪問測試采用了LoadRunner測試工具,錄制了特定的測試腳本,實(shí)現(xiàn)了測試方案的可重復(fù)性,并對測試做出了準(zhǔn)確的結(jié)果分析。
從圖6中可以看出,在部署加速網(wǎng)關(guān)之前,在添加背景流前后,網(wǎng)頁下載時間增長200 ms左右,其他的細(xì)分分量都有相應(yīng)增加。這說明了添加背景流對Web網(wǎng)頁訪問的效率是有影響的。

在無背景流的情況下,部署加速網(wǎng)關(guān)明顯減少了網(wǎng)頁下載時間,在其三個細(xì)分分量中,連接時間減少到幾乎為零,這是因?yàn)椴渴鸺铀倬W(wǎng)關(guān)前,連接時間是指客戶端經(jīng)過客戶端網(wǎng)關(guān)、路由器和服務(wù)器端網(wǎng)關(guān)與Web服務(wù)器建立連接花費(fèi)的時間,經(jīng)歷了模擬廣域網(wǎng)的網(wǎng)絡(luò)時延;部署加速網(wǎng)關(guān)后,連接時間是指客戶端與客戶端網(wǎng)關(guān)建立連接的時間,這個連接的建立過程是在局域網(wǎng)內(nèi)完成的,網(wǎng)關(guān)間的連接和服務(wù)器端網(wǎng)關(guān)與Web服務(wù)器的連接是在網(wǎng)關(guān)系統(tǒng)啟動時建立好的,因此,從用戶角度看,大大節(jié)省了連接建立的時間。
綜上所述,針對要解決的網(wǎng)絡(luò)應(yīng)用環(huán)境所存在的問題,對于文件傳輸應(yīng)用,并行TCP加速系統(tǒng)提高了對廣域網(wǎng)瓶頸帶寬的利用率,提高了數(shù)據(jù)的傳輸性能;對于Web網(wǎng)頁訪問應(yīng)用,并行TCP加速系統(tǒng)減少了網(wǎng)頁下載速度??梢?,該加速方案對這兩大互聯(lián)網(wǎng)應(yīng)用都具有很好的加速效果。
針對目前網(wǎng)絡(luò)上普遍存在的廣域網(wǎng)瓶頸問題,并行TCP加速網(wǎng)關(guān)系統(tǒng)提供了一個很好的解決方案。該系統(tǒng)已經(jīng)實(shí)現(xiàn)了會話接入的重定向、會話數(shù)據(jù)的截獲、分塊封裝、解封重組和數(shù)據(jù)的網(wǎng)關(guān)間的并行傳輸?shù)认到y(tǒng)功能。為了能應(yīng)用到實(shí)際網(wǎng)絡(luò)中,還需要從網(wǎng)關(guān)關(guān)聯(lián)控制方面進(jìn)行完善,該系統(tǒng)是一個分布式系統(tǒng),客戶端網(wǎng)關(guān)與服務(wù)器端網(wǎng)關(guān)之間需要實(shí)時的狀態(tài)信息交互,以應(yīng)對可能出現(xiàn)的網(wǎng)絡(luò)異常情況(如網(wǎng)絡(luò)的異常斷開等),提高系統(tǒng)的健壯性。
參考文獻(xiàn)
[1] AKYILDIZ I F, WANG X, WANG W. Wireless mesh networks: a survey[J]. Computer Networks, 2005,47(4):445-487.
[2] 王建新,郭振華,盛羽.基于并行TCP技術(shù)的廣域網(wǎng)通信加速方法[P].CN201010528603.0.中南大學(xué),2011-02-16.
[3] IEEE Standard 802.16-2004.IEEE standard for local and metropolitan area networks-part 16: air interface for fixed broadband wireless access systems[z]. Oct. 2004.
[4] KATEVENIS M, SIDIRPPOUS S, COURCOUBETIS. Courcoubetis[J]. Weighted Round Robin Cell Multiplexing in a General Purpose ATM Switch Chip. IEEE J. Select. Areas Commun.,1991,9(10):1265-1279.
