文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)06-0096-04
網(wǎng)絡(luò)技術(shù)的發(fā)展給人們的工作和生活帶來(lái)了極大的便利,用戶數(shù)量與日俱增。電子商務(wù)、網(wǎng)絡(luò)游戲等業(yè)務(wù)對(duì)網(wǎng)絡(luò)的傳輸速度和數(shù)據(jù)處理速度提出了更高的要求。傳統(tǒng)TCP協(xié)議采用的加性增加和乘性減少的AIMD 窗口管理機(jī)制使其不能適應(yīng)高帶寬延時(shí)廣域網(wǎng)的發(fā)展[1]。在高帶寬延時(shí)網(wǎng)絡(luò)環(huán)境下,TCP流將會(huì)不斷抖動(dòng),造成路由器上的隊(duì)列長(zhǎng)度產(chǎn)生不穩(wěn)定性,TCP 的性能會(huì)隨著鏈路帶寬或延時(shí)的增加而逐漸降低[2]。針對(duì)這些問(wèn)題,很多學(xué)者對(duì)TCP的擁塞控制機(jī)制進(jìn)行了改進(jìn),例如:BIC TCP、CUBIC、FAST TCP等,這些協(xié)議通過(guò)改變TCP擁塞窗口的調(diào)整參數(shù)使之在當(dāng)今網(wǎng)絡(luò)中發(fā)揮更好的性能。但是,由Hamilton實(shí)驗(yàn)室搭建的測(cè)試床對(duì)上述TCP協(xié)議進(jìn)行測(cè)試的實(shí)驗(yàn)結(jié)果表明,除了H-TCP外,其他協(xié)議均存在很大的性能問(wèn)題,特別是RTT不公平性問(wèn)題[3]。與上述改進(jìn)TCP協(xié)議的研究方法不同,并行TCP是通過(guò)增加TCP連接的數(shù)目以及TCP流之間的協(xié)作來(lái)提高網(wǎng)絡(luò)傳輸性能的。
1 并行TCP加速系統(tǒng)的設(shè)計(jì)
針對(duì)廣域網(wǎng)目前存在的帶寬、可靠性和延遲三方面存在的問(wèn)題,并行TCP廣域網(wǎng)加速系統(tǒng)設(shè)計(jì)采用雙網(wǎng)關(guān)模式,實(shí)現(xiàn)客戶端局域網(wǎng)中的用戶對(duì)服務(wù)器端局域網(wǎng)內(nèi)多種服務(wù)應(yīng)用的加速訪問(wèn)。加速系統(tǒng)主要由以下幾個(gè)模塊組成:系統(tǒng)配置和日志記錄、接入會(huì)話控制、應(yīng)用數(shù)據(jù)管理和網(wǎng)關(guān)間傳輸控制。
(1) 系統(tǒng)配置和日志記錄
系統(tǒng)配置提供給用戶靈活配置系統(tǒng)參數(shù)的功能,用戶可以針對(duì)不同的服務(wù)及其側(cè)重的優(yōu)化指標(biāo)進(jìn)行靈活的系統(tǒng)參數(shù)配置,實(shí)現(xiàn)更好的加速效果,例如并發(fā)流數(shù)目的設(shè)置、并發(fā)流的調(diào)度策略以及各種策略本身的參數(shù)等。
(2) 接入會(huì)話控制
接入會(huì)話控制實(shí)現(xiàn)了會(huì)話管理、會(huì)話同步控制和會(huì)話數(shù)據(jù)流量控制三個(gè)功能。
根據(jù)需求,用戶可以訪問(wèn)對(duì)端局域網(wǎng)內(nèi)的多個(gè)服務(wù)應(yīng)用,系統(tǒng)將根據(jù)服務(wù)應(yīng)用的IP地址和端口對(duì)各種會(huì)話進(jìn)行分組管理。會(huì)話管理通過(guò)為接入會(huì)話設(shè)置的ID,實(shí)現(xiàn)對(duì)會(huì)話的快速定位和控制。
由于采用雙網(wǎng)關(guān)加速設(shè)計(jì)模式,數(shù)據(jù)的傳輸由兩端網(wǎng)關(guān)接入會(huì)話和網(wǎng)間并行TCP隧道協(xié)同完成。服務(wù)器端會(huì)話在系統(tǒng)啟動(dòng)時(shí)已經(jīng)創(chuàng)建成功。在系統(tǒng)支持的接入會(huì)話負(fù)載允許時(shí),服務(wù)器端網(wǎng)關(guān)將為接入客戶端網(wǎng)關(guān)新會(huì)話分配一個(gè)“空閑”會(huì)話連接,與網(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ù),包括對(duì)會(huì)話數(shù)據(jù)分塊封裝、分配轉(zhuǎn)發(fā)控制和對(duì)網(wǎng)間數(shù)據(jù)進(jìn)行重組解析、分發(fā)控制。
應(yīng)用數(shù)據(jù)管理通過(guò)對(duì)會(huì)話類型的判斷,分別完成對(duì)接入會(huì)話數(shù)據(jù)和網(wǎng)間隧道會(huì)話數(shù)據(jù)的不同處理操作。對(duì)于接入會(huì)話,系統(tǒng)根據(jù)接入會(huì)話的組標(biāo)識(shí)和會(huì)話號(hào)對(duì)其數(shù)據(jù)進(jìn)行分塊封裝,并按照數(shù)據(jù)分配策略分配給相應(yīng)的網(wǎng)間隧道會(huì)話。對(duì)于網(wǎng)間隧道會(huì)話,系統(tǒng)將對(duì)其數(shù)據(jù)進(jìn)行解析,根據(jù)解析得到的控制信息將其有效數(shù)據(jù)分發(fā)給相應(yīng)的接入會(huì)話。
在低速網(wǎng)絡(luò)中,傳統(tǒng)TCP協(xié)議表現(xiàn)出良好公平性使得平均分配策略效率很高且簡(jiǎn)單易行,但是,隨著帶寬延時(shí)乘積增大,AIMD的窗口調(diào)整策略使傳統(tǒng)TCP在高帶寬延網(wǎng)絡(luò)中公平分享帶寬的調(diào)整時(shí)間過(guò)長(zhǎng),因此傳統(tǒng)TCP協(xié)議的公平性越來(lái)越差。最小緩存數(shù)據(jù)量?jī)?yōu)先分配策略解決了這問(wèn)題,根據(jù)緩存中排隊(duì)的數(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會(huì)話的接入控制和隧道數(shù)據(jù)的傳輸。與會(huì)話管理中的會(huì)話接入控制相似,隧道TCP會(huì)話的接入控制是根據(jù)配置文件來(lái)配置的服務(wù)器端網(wǎng)關(guān)的IP地址和隧道偵聽(tīng)端口對(duì)隧道TCP會(huì)話進(jìn)行分組管理,形成并行TCP隧道。系統(tǒng)通過(guò)隧道標(biāo)識(shí)和隧道TCP會(huì)話標(biāo)識(shí)進(jìn)行定位,從而完成接入會(huì)話數(shù)據(jù)向隧道TCP會(huì)話的數(shù)據(jù)分配。隧道數(shù)據(jù)的傳輸交付socket完成。
2 并行TCP加速系統(tǒng)的實(shí)現(xiàn)
根據(jù)設(shè)計(jì),系統(tǒng)實(shí)現(xiàn)了加速網(wǎng)關(guān)的兩種啟動(dòng)模式:服務(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)會(huì)話數(shù)據(jù)和網(wǎng)間數(shù)據(jù)的轉(zhuǎn)化轉(zhuǎn)發(fā),應(yīng)用數(shù)據(jù)管理定義了自己的網(wǎng)關(guān)間傳輸數(shù)據(jù)包封裝格式。數(shù)據(jù)包用于攜帶會(huì)話數(shù)據(jù);確認(rèn)包和同步包用于攜帶控制信息,分別應(yīng)用于會(huì)話流量控制和會(huì)話同步控制。
數(shù)據(jù)轉(zhuǎn)發(fā)控制對(duì)會(huì)話數(shù)據(jù)的重組是在會(huì)話的發(fā)送緩存中完成的。會(huì)話的發(fā)送緩存是BlockContainer對(duì)象,是用STL容器中的映射表map實(shí)現(xiàn)的,BlockContainer對(duì)象以數(shù)據(jù)包序列號(hào)和指向數(shù)據(jù)包中有效數(shù)據(jù)的指針構(gòu)成映射。數(shù)據(jù)轉(zhuǎn)發(fā)控制完成對(duì)數(shù)據(jù)包的解析后,就可以在會(huì)話發(fā)送緩存BlockContainer對(duì)象中添加對(duì)應(yīng)表項(xiàng),這樣可以避免大量數(shù)據(jù)的轉(zhuǎn)儲(chǔ),如圖2所示。會(huì)話發(fā)送數(shù)據(jù)時(shí),則可順序讀取緩存BlockContainer中的表項(xiàng),如果返回指針?lè)强眨瑒t在對(duì)應(yīng)內(nèi)存地址取數(shù)據(jù)塊;如果是空指針,則說(shuō)明有數(shù)據(jù)包延遲,發(fā)送線程將會(huì)阻塞,等待該數(shù)據(jù)包到達(dá)激活該發(fā)送線程。
2.2 會(huì)話管理
加速網(wǎng)關(guān)系統(tǒng)的實(shí)現(xiàn)有兩種會(huì)話類型,系統(tǒng)外接入會(huì)話和網(wǎng)間隧道中的TCP會(huì)話?;趕ocket編程中的主動(dòng)請(qǐng)求和偵聽(tīng)接收兩種建立連接的方式,系統(tǒng)分別對(duì)會(huì)話的客戶端和服務(wù)器端實(shí)現(xiàn)了不同的管理方式。
客戶端管理分三個(gè)層次,如圖3所示,客戶端分組的特征字符串是所連接服務(wù)器的IP地址和端口,多個(gè)Client對(duì)象組成一個(gè)Client group,多個(gè)Client group隸屬于Client Manager對(duì)象進(jìn)行統(tǒng)一管理。
Client Manager對(duì)象實(shí)現(xiàn)了針對(duì)服務(wù)應(yīng)用的Client Group管理,Client Group直接對(duì)屬于自己分組的Client對(duì)象進(jìn)行管理,以會(huì)話號(hào)LINK_ID為關(guān)鍵字建立映射map,map定義為<LINK_ID,TCPClient>,實(shí)現(xiàn)TCP Client的快速定位。Client Group對(duì)象完成組內(nèi)客戶端的查找、添加和刪除。 TCP Client對(duì)象實(shí)現(xiàn)了socket通信的基本功能,如發(fā)起連接、接收數(shù)據(jù)和發(fā)送數(shù)據(jù),數(shù)據(jù)的接收和發(fā)送采用獨(dú)立的線程操作,提高通信效率。
服務(wù)器端管理的層次與客戶端管理是類似的,兩者區(qū)別是服務(wù)端管理TcpServer Manager的管理對(duì)象是TcpServer,是以其監(jiān)聽(tīng)的套接字和端口號(hào)為主鍵創(chuàng)建Map對(duì)象。TcpServer對(duì)象實(shí)現(xiàn)了端口監(jiān)聽(tīng)和接收新連接的操作,將接收新連接TcpClient對(duì)象添加到其成員類TCPGroup對(duì)象進(jìn)行管理。
2.3 會(huì)話同步控制
系統(tǒng)實(shí)現(xiàn)中,每一個(gè)會(huì)話分組都維護(hù)了一個(gè)布爾型數(shù)組。數(shù)組位序就是待分配的會(huì)話號(hào)資源(LINK_ID)。數(shù)組布爾型元素的值在兩端網(wǎng)關(guān)上有著不同的意義,在客戶端網(wǎng)關(guān)上,它標(biāo)識(shí)其位序?qū)?yīng)會(huì)話的“建立”或“斷開(kāi)”;在服務(wù)器端網(wǎng)關(guān)上,它標(biāo)識(shí)的是其位序?qū)?yīng)會(huì)話的“忙”或“空閑”狀態(tài)。系統(tǒng)通過(guò)會(huì)話號(hào)實(shí)現(xiàn)了會(huì)話狀態(tài)位和會(huì)話的綁定,進(jìn)而通過(guò)對(duì)兩端網(wǎng)關(guān)設(shè)置相同的會(huì)話號(hào)資源實(shí)現(xiàn)兩端系統(tǒng)中的會(huì)話同步。
2.4 會(huì)話流量控制
TCP滑動(dòng)窗口機(jī)制是通過(guò)控制發(fā)送窗口開(kāi)始和結(jié)束位置包序列號(hào)來(lái)實(shí)現(xiàn)的。與其不同,本系統(tǒng)采用了類似TCP滑動(dòng)窗口的流量控制機(jī)制,通過(guò)返回確認(rèn)信息進(jìn)行數(shù)據(jù)量統(tǒng)計(jì)來(lái)實(shí)現(xiàn)流量控制。
根據(jù)用戶配置,系統(tǒng)分別為每個(gè)會(huì)話分組設(shè)定了一個(gè)發(fā)送窗口值SND_W和接收窗口值RCV_W,且保證SND_W不小于RCV_W。每個(gè)接入會(huì)話聲明了兩個(gè)變量snd_count和rcv_count,分別統(tǒng)計(jì)會(huì)話已轉(zhuǎn)發(fā)到網(wǎng)關(guān)但未被對(duì)端確認(rèn)的數(shù)據(jù)量和已從網(wǎng)關(guān)接收的數(shù)據(jù)量。整個(gè)流量控制過(guò)程由兩端會(huì)話的接收線程和發(fā)送線程協(xié)同完成。
3 系統(tǒng)測(cè)試分析
系統(tǒng)測(cè)試是在實(shí)驗(yàn)室里搭建的測(cè)試床上進(jìn)行的,如圖4所示,網(wǎng)關(guān)主機(jī)配置Linux 2.6內(nèi)核,用WANem模擬廣域網(wǎng),用iperf來(lái)生成TCP背景流。在100 MB的瓶頸帶寬環(huán)境下,對(duì)系統(tǒng)進(jìn)行大文件傳輸測(cè)試和Web網(wǎng)頁(yè)訪問(wèn)測(cè)試。
在部署加速網(wǎng)關(guān)前,在無(wú)背景流的網(wǎng)絡(luò)環(huán)境中,隨著網(wǎng)絡(luò)時(shí)延的增加,瓶頸鏈路的帶寬有效利用率逐漸下降,由10 ms時(shí)的25 Mb/s降低到100 ms時(shí)的5 Mb/s。可見(jiàn),網(wǎng)絡(luò)延時(shí)對(duì)瓶頸帶寬利用率的影響是很嚴(yán)重的,增加了背景流后的瓶頸鏈路的帶寬有效利用率更差。在部署加速網(wǎng)關(guān)系統(tǒng)之后,無(wú)論有無(wú)背景流,瓶頸鏈路帶寬的有效利用率明顯得到提高。特別是在有背景流的網(wǎng)絡(luò)環(huán)境中,瓶頸鏈路帶寬的有效利用率提高了14~23倍之多。這說(shuō)明了并行TCP傳輸在高帶寬長(zhǎng)時(shí)延的廣域網(wǎng)中具有更好的帶寬利用率。
3.2 Web網(wǎng)頁(yè)訪問(wèn)測(cè)試
測(cè)試方案:廣域網(wǎng)瓶頸帶寬設(shè)置為100 MB,網(wǎng)絡(luò)延時(shí)設(shè)置為100 ms,分別在有無(wú)背景流網(wǎng)絡(luò)環(huán)境中,在啟用加速網(wǎng)關(guān)的前后,對(duì)Web訪問(wèn)的平均響應(yīng)時(shí)間進(jìn)行測(cè)試。下載網(wǎng)頁(yè)的大小為3 126 B。為了避免系統(tǒng)所帶來(lái)的隨機(jī)性,測(cè)試結(jié)果是多次測(cè)試結(jié)果的平均值,如圖6所示。在實(shí)驗(yàn)中,Web訪問(wèn)測(cè)試采用了LoadRunner測(cè)試工具,錄制了特定的測(cè)試腳本,實(shí)現(xiàn)了測(cè)試方案的可重復(fù)性,并對(duì)測(cè)試做出了準(zhǔn)確的結(jié)果分析。
從圖6中可以看出,在部署加速網(wǎng)關(guān)之前,在添加背景流前后,網(wǎng)頁(yè)下載時(shí)間增長(zhǎng)200 ms左右,其他的細(xì)分分量都有相應(yīng)增加。這說(shuō)明了添加背景流對(duì)Web網(wǎng)頁(yè)訪問(wèn)的效率是有影響的。
在無(wú)背景流的情況下,部署加速網(wǎng)關(guān)明顯減少了網(wǎng)頁(yè)下載時(shí)間,在其三個(gè)細(xì)分分量中,連接時(shí)間減少到幾乎為零,這是因?yàn)椴渴鸺铀倬W(wǎng)關(guān)前,連接時(shí)間是指客戶端經(jīng)過(guò)客戶端網(wǎng)關(guān)、路由器和服務(wù)器端網(wǎng)關(guān)與Web服務(wù)器建立連接花費(fèi)的時(shí)間,經(jīng)歷了模擬廣域網(wǎng)的網(wǎng)絡(luò)時(shí)延;部署加速網(wǎng)關(guān)后,連接時(shí)間是指客戶端與客戶端網(wǎng)關(guān)建立連接的時(shí)間,這個(gè)連接的建立過(guò)程是在局域網(wǎng)內(nèi)完成的,網(wǎng)關(guān)間的連接和服務(wù)器端網(wǎng)關(guān)與Web服務(wù)器的連接是在網(wǎng)關(guān)系統(tǒng)啟動(dòng)時(shí)建立好的,因此,從用戶角度看,大大節(jié)省了連接建立的時(shí)間。
綜上所述,針對(duì)要解決的網(wǎng)絡(luò)應(yīng)用環(huán)境所存在的問(wèn)題,對(duì)于文件傳輸應(yīng)用,并行TCP加速系統(tǒng)提高了對(duì)廣域網(wǎng)瓶頸帶寬的利用率,提高了數(shù)據(jù)的傳輸性能;對(duì)于Web網(wǎng)頁(yè)訪問(wèn)應(yīng)用,并行TCP加速系統(tǒng)減少了網(wǎng)頁(yè)下載速度??梢?jiàn),該加速方案對(duì)這兩大互聯(lián)網(wǎng)應(yīng)用都具有很好的加速效果。
針對(duì)目前網(wǎng)絡(luò)上普遍存在的廣域網(wǎng)瓶頸問(wèn)題,并行TCP加速網(wǎng)關(guān)系統(tǒng)提供了一個(gè)很好的解決方案。該系統(tǒng)已經(jīng)實(shí)現(xiàn)了會(huì)話接入的重定向、會(huì)話數(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)是一個(gè)分布式系統(tǒng),客戶端網(wǎng)關(guān)與服務(wù)器端網(wǎng)關(guān)之間需要實(shí)時(shí)的狀態(tài)信息交互,以應(yīng)對(duì)可能出現(xiàn)的網(wǎng)絡(luò)異常情況(如網(wǎng)絡(luò)的異常斷開(kāi)等),提高系統(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.