羅勇軍 李建華* 羅 飛 姚玲玲 洪亞?wèn)| 林木林 胡海龍
1(華東理工大學(xué)信息科學(xué)與工程學(xué)院 上海 200237)2(網(wǎng)宿科技股份有限公司 上海 200030)
基于差分傳輸?shù)那д准铀倬W(wǎng)關(guān)
羅勇軍1李建華1*羅 飛1姚玲玲1洪亞?wèn)|1林木林2胡海龍2
1(華東理工大學(xué)信息科學(xué)與工程學(xué)院 上海 200237)2(網(wǎng)宿科技股份有限公司 上海 200030)
在內(nèi)容分發(fā)網(wǎng)絡(luò)中,減少節(jié)點(diǎn)之間數(shù)據(jù)傳輸,實(shí)現(xiàn)帶寬節(jié)省,一直是通信加速研究中的重要問(wèn)題。為解決該問(wèn)題,結(jié)合差分傳輸思想,即只傳輸在通信中變動(dòng)的部分?jǐn)?shù)據(jù),設(shè)計(jì)了一個(gè)基于差分傳輸?shù)母咚偻该骷铀倬W(wǎng)關(guān)。該網(wǎng)關(guān)采用基于netmap在網(wǎng)絡(luò)層對(duì)網(wǎng)卡進(jìn)行鏈路數(shù)據(jù)直接捕獲,并基于嵌入式數(shù)據(jù)庫(kù)進(jìn)行高速大數(shù)據(jù)處理,可支持千萬(wàn)級(jí)數(shù)據(jù)包的快速數(shù)據(jù)查詢(xún)與更新。同時(shí),網(wǎng)關(guān)的數(shù)據(jù)處理只在網(wǎng)絡(luò)層上進(jìn)行,在不影響原有的網(wǎng)絡(luò)服務(wù)程序基礎(chǔ)上實(shí)現(xiàn)了透明傳輸。實(shí)例測(cè)試表明,根據(jù)該方案實(shí)現(xiàn)的加速網(wǎng)關(guān),能夠?qū)崿F(xiàn)千兆網(wǎng)卡的線(xiàn)速收發(fā),部署方便,在特定的應(yīng)用環(huán)境下能達(dá)到很高的流量壓縮比。
差分傳輸 加速網(wǎng)關(guān) 透明傳輸 鏈路捕獲 嵌入式數(shù)據(jù)庫(kù)
在CDN或緩存項(xiàng)目中,在不影響用戶(hù)體驗(yàn)的情況下,如何做到節(jié)省網(wǎng)絡(luò)節(jié)點(diǎn)之間傳輸?shù)臄?shù)據(jù)量,已經(jīng)成為掣肘國(guó)內(nèi)CDN發(fā)展的瓶頸之一。為了減少兩個(gè)節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)傳輸所需要的帶寬,可以用基于差分傳輸?shù)木W(wǎng)關(guān)加速技術(shù)來(lái)解決。差分傳輸,主要是通過(guò)盡可能只傳輸變化的那部分?jǐn)?shù)據(jù),或者采用壓解縮技術(shù),或者兩邊存儲(chǔ)映射表,來(lái)減少傳輸?shù)臄?shù)據(jù)量。
對(duì)網(wǎng)絡(luò)流量進(jìn)行壓縮或加速,是網(wǎng)絡(luò)傳輸研究中經(jīng)久不衰的問(wèn)題。首先是對(duì)應(yīng)用層數(shù)據(jù)本身的壓縮。應(yīng)用層數(shù)據(jù),主要包含如下幾種格式:文本、網(wǎng)頁(yè)代碼(大多用gzip壓縮過(guò))、圖像文件(jpg、png等) 、音視頻文件(mp3、mp4、flv等格式為主)、壓縮包(rar、zip等)、安裝文件(exe、msi等)。現(xiàn)在的網(wǎng)絡(luò)流量,絕大部分都經(jīng)過(guò)了壓縮處理。由于網(wǎng)絡(luò)數(shù)據(jù)基本上已經(jīng)壓縮處理過(guò),因此在數(shù)據(jù)本身上做文章,余地已經(jīng)很小。而在網(wǎng)關(guān)上進(jìn)行緩存,實(shí)現(xiàn)重復(fù)讀取時(shí)的增量傳輸,成為一種可行的技術(shù)方案。網(wǎng)絡(luò)流量具有突發(fā)、熱點(diǎn)等特征,這使得增量傳輸技術(shù)具有了實(shí)際的意義。
網(wǎng)關(guān)加速方案一般有兩類(lèi)[1]:基于協(xié)議加速[2,8]和數(shù)據(jù)優(yōu)化[7,9]。
(1) 基于協(xié)議的加速,是常見(jiàn)的網(wǎng)關(guān)加速解決方案,它們實(shí)現(xiàn)類(lèi)似web cache服務(wù)器的功能。例如文獻(xiàn)[2]所實(shí)現(xiàn)的網(wǎng)關(guān)加速,以插件的形式,提供擴(kuò)展TCP協(xié)議、Exchange、ftp、HTTP等加速服務(wù)。這種網(wǎng)關(guān)加速方案的應(yīng)用場(chǎng)景,需要把網(wǎng)關(guān)部署在靠近用戶(hù)的網(wǎng)絡(luò)末端。網(wǎng)關(guān)把自己偽裝成遠(yuǎn)程服務(wù)器,直接為用戶(hù)提供服務(wù),從而減少遠(yuǎn)程網(wǎng)絡(luò)的流量。因此,網(wǎng)關(guān)需要對(duì)協(xié)議進(jìn)行復(fù)雜的解析和重現(xiàn),其傳輸速度也會(huì)受到影響。
(2) 基于數(shù)據(jù)優(yōu)化的加速,是基于短時(shí)間內(nèi)多用戶(hù)重復(fù)訪問(wèn)同一熱點(diǎn)數(shù)據(jù)這一特征,在網(wǎng)關(guān)上進(jìn)行緩存,用重復(fù)的數(shù)據(jù)替代報(bào)文中的數(shù)據(jù),以達(dá)到流量壓縮的目的。文獻(xiàn)[9]分析了多種緩存算法能達(dá)到的效果,但并未實(shí)現(xiàn)一個(gè)可用的系統(tǒng)。系統(tǒng)實(shí)現(xiàn)的難度主要在于流量副本的存儲(chǔ)、查詢(xún)、更新需要以極高的速度進(jìn)行。
差分傳輸屬于(2)這一類(lèi)的網(wǎng)關(guān)加速方案。
本文設(shè)計(jì)實(shí)現(xiàn)了一個(gè)實(shí)用的、基于差分傳輸?shù)募铀倬W(wǎng)關(guān),適用于CDN所常用的遠(yuǎn)程千兆網(wǎng),具有典型的應(yīng)用場(chǎng)景。后文詳細(xì)論述了這一技術(shù)方案,內(nèi)容包括:(1) 加速網(wǎng)關(guān)的工作原理;(2) 加速網(wǎng)關(guān)的組成結(jié)構(gòu);(3) 對(duì)丟包問(wèn)題的處理;(4) 數(shù)據(jù)庫(kù)更新問(wèn)題的解決;(5) 測(cè)試。
本文的創(chuàng)新點(diǎn)在于,目前未發(fā)現(xiàn)有類(lèi)似的系統(tǒng)設(shè)計(jì)和應(yīng)用場(chǎng)景,并且測(cè)試結(jié)果表明有很好的性能。
基于差分傳輸?shù)募铀倬W(wǎng)關(guān)的工作原理,是基于IP包中應(yīng)用層數(shù)據(jù)的重復(fù)性,實(shí)現(xiàn)流量壓縮的功能。有一對(duì)網(wǎng)關(guān),分別是緩存器A和恢復(fù)器B。同一個(gè)差分網(wǎng)關(guān)同時(shí)是緩存器和恢復(fù)器,服務(wù)于不同的傳輸方向。如圖1所示。
圖1 差分傳輸網(wǎng)關(guān)部署
網(wǎng)關(guān)A和B分別在本地?cái)?shù)據(jù)庫(kù)中存儲(chǔ)收到的報(bào)文的數(shù)據(jù)內(nèi)容。由于A和B是對(duì)稱(chēng)的,因此維護(hù)了一個(gè)相同的數(shù)據(jù)庫(kù)。當(dāng)A收到一個(gè)新的報(bào)文時(shí)(例如大小為1 500 Byte),如果本地?cái)?shù)據(jù)庫(kù)中曾經(jīng)存儲(chǔ)過(guò)內(nèi)容相同的報(bào)文,則只向B發(fā)出一個(gè)壓縮包,這個(gè)壓縮包很小(例如118 Byte)。B收到這個(gè)壓縮包后,利用自己的本地?cái)?shù)據(jù)庫(kù)恢復(fù)報(bào)文并轉(zhuǎn)發(fā)。這樣就在A和B之間實(shí)現(xiàn)了流量壓縮。
差分網(wǎng)關(guān)作為轉(zhuǎn)發(fā)網(wǎng)絡(luò)流的網(wǎng)關(guān),應(yīng)該有極高的速度。其轉(zhuǎn)發(fā)速度,應(yīng)該和它使用的高速網(wǎng)卡匹配,實(shí)現(xiàn)線(xiàn)速傳輸。
綜合起來(lái),基于差分的加速網(wǎng)關(guān)期望的主要目標(biāo)如下:
(1) 效果。經(jīng)過(guò)差分傳輸方案處理后的流量,相對(duì)于未采用差分傳輸方案的流量,達(dá)到有效降低。對(duì)于文本、網(wǎng)頁(yè)代碼、圖像文件、音頻、視頻、壓縮包、安裝文件等業(yè)務(wù),綜合流量降低比例高于15%。
(2) 性能。在指定的的硬件條件下,差分傳輸方案能夠處理的最大業(yè)務(wù)流量能力,和它使用的高速網(wǎng)卡匹配。
(3) 業(yè)務(wù)影響。經(jīng)過(guò)差分傳輸方案處理前后的業(yè)務(wù)質(zhì)量變化情況,不能對(duì)業(yè)務(wù)質(zhì)量產(chǎn)生負(fù)面影響,業(yè)務(wù)質(zhì)量(如HTTP Response的平均速率)在應(yīng)用差分傳輸方案后不能下降。
(4) 穩(wěn)定性。排除差分傳輸方案自身缺陷之外的因素,可靠性達(dá)到99.99%。
(5) 便捷性。應(yīng)用差分傳輸方案對(duì)服務(wù)程序的改動(dòng),要求不需要對(duì)服務(wù)程序進(jìn)行改動(dòng),或僅作微量改動(dòng)。
從上述要求可以得知,差分加速網(wǎng)關(guān)的關(guān)鍵問(wèn)題在于大數(shù)據(jù)量下的性能優(yōu)化。
在這個(gè)基礎(chǔ)上,本文設(shè)計(jì)實(shí)現(xiàn)了一個(gè)滿(mǎn)足千兆網(wǎng)需求的差分傳輸網(wǎng)關(guān),它解決了以下關(guān)鍵問(wèn)題:
(1) 線(xiàn)速傳輸。使用1 Gbps以太網(wǎng)卡,實(shí)現(xiàn)了接近1 Gbps帶寬的轉(zhuǎn)發(fā)率。
(3) 透明。差分網(wǎng)關(guān)工作在網(wǎng)絡(luò)層,不涉及傳輸層和應(yīng)用層,容易部署。
把加速網(wǎng)關(guān)分成3個(gè)部分:差分網(wǎng)關(guān)內(nèi)部協(xié)議、線(xiàn)速鏈路轉(zhuǎn)發(fā)、高速數(shù)據(jù)存取操作。
2.1 差分網(wǎng)關(guān)內(nèi)部協(xié)議
緩存器和恢復(fù)器的工作流程是:
(1) 緩存器讀取進(jìn)入的IP包。如果是小包(設(shè)置為1 000 byte以下),則直接發(fā)出,不做處理。
(2) 如果收到的是大包,緩存器查找本地?cái)?shù)據(jù)庫(kù)中有無(wú)此包(僅比較應(yīng)用層數(shù)據(jù)部分,不比較ip頭、TCP頭),如果沒(méi)有,則存儲(chǔ)它,并直接發(fā)出?;謴?fù)器收到這個(gè)包,首先存儲(chǔ)在本地,然后轉(zhuǎn)發(fā)出去。緩存器和恢復(fù)器所存儲(chǔ)的數(shù)據(jù),用于以后收到同樣內(nèi)容的ip包,進(jìn)行壓縮和恢復(fù)。
(3) 如果緩存器找到相同的數(shù)據(jù),則對(duì)這個(gè)包進(jìn)行標(biāo)記,并重構(gòu)一個(gè)新的ip包,即壓縮包,并向恢復(fù)器發(fā)出。這個(gè)壓縮包帶有特殊的標(biāo)記,且標(biāo)記的長(zhǎng)度很小,比數(shù)據(jù)小得多,從而達(dá)到了壓縮的目的。
(4) 恢復(fù)器收到壓縮包,查找自己的數(shù)據(jù)庫(kù),還原成最初的ip包,然后發(fā)出。
緩存器和恢復(fù)器的工作流程如圖2和圖3所示。
水保生態(tài)建設(shè)扎實(shí)推進(jìn)。完成12條小流域綜合治理任務(wù),推進(jìn)淤地壩、基本口糧田等重點(diǎn)水保工程,水利部門(mén)治理水土流失面積180.33km2。成功召開(kāi)了全省小流域綜合治理現(xiàn)場(chǎng)觀摩會(huì)。西寧被列為國(guó)家水生態(tài)文明建設(shè)試點(diǎn)城市。
圖2 緩存器工作流程
圖3 恢復(fù)器工作流程
2.2 線(xiàn)速鏈路轉(zhuǎn)發(fā)
常見(jiàn)的包捕獲技術(shù)有:libpcap、PF_RING、netmap[4-5]。文獻(xiàn)[3]用netmap進(jìn)行了1 000 Mbps包捕獲的測(cè)試。經(jīng)過(guò)分析和對(duì)比,本方案采用netmap。netmap是一個(gè)高性能收發(fā)原始數(shù)據(jù)包的框架,它采用直接與網(wǎng)卡交互、零拷貝等技術(shù),可以實(shí)現(xiàn)線(xiàn)速收發(fā)包。
網(wǎng)關(guān)對(duì)包的捕獲和發(fā)送,通過(guò)以下兩個(gè)結(jié)構(gòu)來(lái)操作:
struct netmap_ring *rxring;
struct netmap_ring *txring;
其中,rxring和txring的結(jié)構(gòu)struct netmap_slot,指向?qū)?bào)文的捕獲和接收,實(shí)現(xiàn)線(xiàn)速的鏈路收發(fā)。
struct netmap_slot *rs = &rxring->slot[];
struct netmap_slot *ts = &txring->slot[];
2.3 高速數(shù)據(jù)存取
(1) 網(wǎng)關(guān)需要處理的數(shù)據(jù)量。根據(jù)前文計(jì)算,約5分鐘、大約1 800萬(wàn)個(gè)ip包的數(shù)據(jù)。
(2) 處理的速度要求。當(dāng)新收到一個(gè)ip包PA時(shí),需要在存儲(chǔ)的1 800萬(wàn)個(gè)ip包中找到有相同內(nèi)容的那個(gè)包PB。
在這個(gè)情況下,只能使用基于Hash的線(xiàn)性表、或者是Btree結(jié)構(gòu)進(jìn)行存儲(chǔ)和檢索。在更大的數(shù)據(jù)量情況下,Hash應(yīng)該優(yōu)于Btree。
由于速度要求高,不能使用關(guān)系型數(shù)據(jù)庫(kù)。唯一可用的是Berkeley DB[6],它實(shí)現(xiàn)了內(nèi)存數(shù)據(jù)庫(kù)管理,提供直接訪問(wèn)數(shù)據(jù)庫(kù)的函數(shù)。Berkeley DB是歷史悠久的嵌入式數(shù)據(jù)庫(kù)系統(tǒng),在本網(wǎng)關(guān)中,能提供1 000 Mbps線(xiàn)速轉(zhuǎn)發(fā)所需要的數(shù)據(jù)操作。
Berkeley DB中數(shù)據(jù)存儲(chǔ)算法有4種,其中適合本方案的有2種:Hash和Btree。這2種算法在不同的數(shù)據(jù)量上有不同的性能,本文在測(cè)試部分進(jìn)行了比較。
數(shù)據(jù)包存儲(chǔ)在Berkeley DB中時(shí),需要(key, value)這一對(duì)值,其中key是鍵值,本文設(shè)置為64字節(jié);value是數(shù)據(jù)包的數(shù)據(jù)內(nèi)容部分,約1 500字節(jié)。key的值實(shí)際選取的是value的前64字節(jié)。
加速網(wǎng)關(guān)運(yùn)行時(shí),假設(shè)key和value是一一對(duì)應(yīng)的。用key進(jìn)行數(shù)據(jù)庫(kù)的存取、檢索,從而實(shí)現(xiàn)高速操作。
但是,在極少的情況下,存在key值相同,而value不同的情況。經(jīng)過(guò)實(shí)際測(cè)試,這個(gè)比率約為0.01%。這會(huì)造成錯(cuò)誤,具體的解決方案在下一節(jié)的“丟包問(wèn)題”中進(jìn)行說(shuō)明。
在上一節(jié)中提到差分傳輸網(wǎng)關(guān)利用流量的重復(fù)性來(lái)進(jìn)行壓縮,由于對(duì)速度的高要求,加速網(wǎng)關(guān)沒(méi)有做到絕對(duì)準(zhǔn)確的重復(fù)性檢驗(yàn),這會(huì)導(dǎo)致錯(cuò)誤。網(wǎng)關(guān)兩端的傳輸層,對(duì)此會(huì)進(jìn)行丟包的錯(cuò)誤處理,下面詳細(xì)討論這一現(xiàn)象,并提出解決方案。
丟包有2種情況:
(1) 網(wǎng)絡(luò)丟包比如緩存器發(fā)出包,而恢復(fù)器沒(méi)有收到。
(2) 緩存器和恢復(fù)器傳遞了錯(cuò)誤的包。即在上一節(jié)中提到(key,value)對(duì)中,數(shù)據(jù)庫(kù)中的(key, value)和新收到的包(key′, value′),其中key=key′,而value和value′不同。緩存器和恢復(fù)器傳遞了錯(cuò)誤的數(shù)據(jù)。
在上述2種情況下,采用TCP協(xié)議的應(yīng)用層協(xié)議都會(huì)重發(fā)包。例如網(wǎng)絡(luò)流是ftp服務(wù),ftp服務(wù)器都會(huì)重發(fā)數(shù)據(jù)包,緩存器將收到一個(gè)以前收到過(guò)的包。利用這一特征,可以解決丟包的問(wèn)題。
采用的方案是:由緩存器做記錄,如果發(fā)現(xiàn)這個(gè)包是個(gè)重傳包(一模一樣的包,TCP協(xié)議中checksum一樣),上次被緩存器發(fā)送過(guò),那么不做壓縮,直接發(fā)出。
下面對(duì)這一方案進(jìn)行說(shuō)明。網(wǎng)絡(luò)環(huán)境如圖4所示。
圖4 丟包問(wèn)題的網(wǎng)絡(luò)環(huán)境
A和B是差分網(wǎng)關(guān)的緩存器和恢復(fù)器。PCA和PCB是客戶(hù)端,穿過(guò)A和B訪問(wèn)FTP Server。
(1) PCA訪問(wèn)ftp Server,返回一個(gè)包:(checksum1+ key+ value)。其中checksum1是tcp的checksum,value是應(yīng)用層數(shù)據(jù),key是value的前64字節(jié)。
緩存器和恢復(fù)器A、B:存儲(chǔ)這個(gè)包,并轉(zhuǎn)發(fā)。
(2) 正常情況:PCB訪問(wèn)FTP Server的相同內(nèi)容,返回一個(gè)包:(checksum2+ key+ value),其中只有checksum不一樣,包的內(nèi)容value一樣。這正是我們需要進(jìn)行壓縮和恢復(fù)的情況。
緩存器B:發(fā)出一個(gè)(checksum2+ key)包,即壓縮包。同時(shí)用新的(checksum2+ key+ value)覆蓋舊的(checksum1+ key+ value)。
恢復(fù)器A:在數(shù)據(jù)庫(kù)中找到key對(duì)應(yīng)的value,恢復(fù)成正常的包發(fā)出。同時(shí)用checksum2覆蓋checksum1,目的是和緩存器保持一致。
(3) 異常情況:PCB訪問(wèn)FTP Server的相同內(nèi)容,返回一個(gè)包:(checksum2+ key+ value2),其中checksum和value都不一樣。
緩存器B和恢復(fù)器A的動(dòng)作和2一樣,注意它們用checksum2覆蓋了checksum1。
根據(jù)(2)的邏輯,我們?nèi)匀话l(fā)出了一個(gè)壓縮包(checksum2+ key),這實(shí)際上導(dǎo)致了出錯(cuò)。
當(dāng)(3)發(fā)生后,PCB向FTP Server報(bào)告出錯(cuò),F(xiàn)TP Server重發(fā)了一個(gè)包(checksum2+ key+ value2)。
緩存器B中的數(shù)據(jù)是(checksum2+ key+ value),收到的數(shù)據(jù)是(checksum2+ key+ value2)。
緩存器B通過(guò)(checksum2+ key)知道,這是一個(gè)重發(fā)包。
緩存器B:(a)發(fā)出完整的(checksum2+ key+ value2)。(b)在數(shù)據(jù)庫(kù)中存入新的(checksum2+ key+ value2),即根據(jù)(checksum2+ key)覆蓋原來(lái)的(checksum2+ key+ value)。
恢復(fù)器A:收到緩存器B發(fā)來(lái)的(checksum2+ key+ value2),也發(fā)現(xiàn)這是重發(fā)包。它的動(dòng)作和緩存器B一樣:(a)發(fā)出完整的(checksum2+ key+ value2)。(b)在數(shù)據(jù)庫(kù)中存入新的(checksum2+ key+ value2)。
緩存報(bào)文的數(shù)據(jù)庫(kù),它的合理性是網(wǎng)關(guān)能有效運(yùn)行的關(guān)鍵,其中數(shù)據(jù)的及時(shí)更新是一個(gè)重要的問(wèn)題。由于網(wǎng)關(guān)一直運(yùn)行,當(dāng)數(shù)據(jù)庫(kù)存滿(mǎn)以后,再來(lái)新數(shù)據(jù)包,需要用新的替換舊的數(shù)據(jù)。本文設(shè)計(jì)了一個(gè)線(xiàn)性表進(jìn)行處理。基本原理如下:
p1指向要?jiǎng)h除的數(shù)據(jù)位置,初始值為p1=1,指向表頭。
p2指向正在寫(xiě)入的數(shù)據(jù)位置,初始值為p2=1,指向表頭。
(1) 新數(shù)據(jù)的寫(xiě)入。每當(dāng)向數(shù)據(jù)庫(kù)中寫(xiě)新數(shù)據(jù)時(shí),p2加1;p2始終指向下一個(gè)寫(xiě)入的位置。如果p2到達(dá)數(shù)據(jù)庫(kù)末尾,p2回到開(kāi)始位置。
(2) 舊數(shù)據(jù)的刪除。在每次寫(xiě)入數(shù)據(jù)之后,判斷是否需要?jiǎng)h除舊數(shù)據(jù)。數(shù)據(jù)庫(kù)第一次存滿(mǎn)之后,開(kāi)始刪除數(shù)據(jù),p1加1;p1始終指向下一個(gè)要?jiǎng)h除的位置。如果p1到達(dá)數(shù)據(jù)庫(kù)末尾,p1回到開(kāi)始位置。
本文所設(shè)計(jì)的系統(tǒng),在高速存儲(chǔ)、高速查找和高速轉(zhuǎn)發(fā)上具有鮮明的特點(diǎn),目前未發(fā)現(xiàn)有類(lèi)似的設(shè)計(jì)。本節(jié)所做的測(cè)試,包括速度和壓縮率兩方面。(1) 速度測(cè)試,與線(xiàn)速1 Gbps的網(wǎng)卡所能達(dá)到的最大速度做對(duì)比;(2) 壓縮率,與未壓縮的流量做對(duì)比。
硬件環(huán)境:差分傳輸?shù)姆?wù)程序,運(yùn)行在2臺(tái)dellR620(E5-2620×2/8 GB×4/300 GB×2 SAS Raid0/1 000 MB×4 1U)服務(wù)器上。
軟件環(huán)境:操作系統(tǒng)是Ubuntu Linux。
根據(jù)長(zhǎng)距離千兆數(shù)據(jù)傳輸網(wǎng)絡(luò)的特征,設(shè)計(jì)了圖5的測(cè)試環(huán)境。1和100是加速網(wǎng)關(guān),配置為點(diǎn)對(duì)點(diǎn)傳輸?shù)姆绞?。在網(wǎng)關(guān)兩邊,分別配置了局域網(wǎng)和公網(wǎng)。測(cè)試時(shí),模擬客戶(hù)端和服務(wù)器的通信方式。
圖5 差分傳輸加速網(wǎng)關(guān)測(cè)試環(huán)境
1和100的硬件配置和軟件程序完全相同。由于緩存和恢復(fù)是雙向的過(guò)程,因此其中的傳輸程序同時(shí)具有緩存和恢復(fù)的功能。
1和100工作在對(duì)11、12、13、20完全透明的交換狀態(tài)。例如,11和20之間的傳輸,雖然經(jīng)過(guò)了網(wǎng)關(guān)1和100的轉(zhuǎn)發(fā),但是11和20就像直連一樣。從11和20看起來(lái),11發(fā)出的包,20將按原樣收到這個(gè)包。
(1) 速度測(cè)試
20是ftp server,11、12、13是ftp client。本測(cè)試環(huán)境用于測(cè)試差分網(wǎng)關(guān)的轉(zhuǎn)發(fā)速度,是否能達(dá)到網(wǎng)卡的線(xiàn)速。
在測(cè)試中,ftp傳輸了4個(gè)不同大小的文件:a、b、c、d。
首先,不用緩存/恢復(fù)的功能,1和100直接轉(zhuǎn)發(fā)。只用11和20進(jìn)行ftp傳輸,重復(fù)8次,測(cè)試結(jié)果如表1所示。
表1 網(wǎng)關(guān)傳輸?shù)脑挤逯邓俣葴y(cè)試
上述結(jié)果說(shuō)明,對(duì)于線(xiàn)速1 Gbps的網(wǎng)卡,ftp傳輸?shù)钠骄俣炔坏?00 MB/S。
其次,使用緩存/恢復(fù)功能,分別測(cè)試使用Btree和Hash算法,只用11和20進(jìn)行ftp傳輸,結(jié)果如表2所示。
表2 加速網(wǎng)關(guān)傳輸速度測(cè)試1
用Hash結(jié)構(gòu),和用Btree結(jié)構(gòu),結(jié)果相近。只用11一個(gè)client到server上下載,速度遠(yuǎn)達(dá)不到線(xiàn)速,是因?yàn)榘l(fā)生了第3節(jié)中的丟包問(wèn)題。
用11、12、13做client,20做server,結(jié)果如表3所示。
表3 加速網(wǎng)關(guān)傳輸速度測(cè)試2
當(dāng)用多個(gè)client到server上同時(shí)下載時(shí),綜合的平均速度接近線(xiàn)速。
(2) 功能測(cè)試
首先,重復(fù)8次訪問(wèn)外網(wǎng)的網(wǎng)頁(yè),壓縮比為1%左右。
其次,重復(fù)8次訪問(wèn)外網(wǎng)的同一個(gè)視頻,壓縮比為52%。
對(duì)于網(wǎng)頁(yè)這樣包含文本、圖片、視頻等復(fù)雜內(nèi)容的業(yè)務(wù),差分傳輸網(wǎng)關(guān)無(wú)法實(shí)現(xiàn)有意義的壓縮,而對(duì)于視頻、壓縮包等簡(jiǎn)單業(yè)務(wù),可以實(shí)現(xiàn)很好的壓縮比。
由于目前網(wǎng)絡(luò)流量超過(guò)70%以上是視頻,因此本項(xiàng)目實(shí)現(xiàn)的結(jié)果在實(shí)踐上具有很大的意義。
設(shè)計(jì)實(shí)現(xiàn)了一個(gè)新的基于差分傳輸?shù)募铀倬W(wǎng)關(guān)。采用的方案,是對(duì)內(nèi)容相似的流量進(jìn)行匹配,用小的特征報(bào)文來(lái)替代大的原始報(bào)文進(jìn)行網(wǎng)絡(luò)傳輸,以實(shí)現(xiàn)類(lèi)似壓縮的功能。由于程序運(yùn)行在網(wǎng)絡(luò)層上,不涉及應(yīng)用層協(xié)議,因此完全不影響原來(lái)的網(wǎng)絡(luò)服務(wù),部署十分簡(jiǎn)單。
在特定的應(yīng)用環(huán)境下,它有非常明顯的壓縮效果。例如在視頻服務(wù)網(wǎng)站上,每天的推薦視頻、熱點(diǎn)視頻的訪問(wèn)非常頻繁,重復(fù)訪問(wèn)率非常高。在這個(gè)情況下,用差分傳輸可以達(dá)到很高的壓縮比。
但是,加速網(wǎng)關(guān)基于差分傳輸?shù)脑O(shè)計(jì),使得它并不能在所有情況下都能達(dá)到很好的效果。例如,在網(wǎng)絡(luò)流量非常分散,幾乎沒(méi)有相同內(nèi)容訪問(wèn)的情況下,差分傳輸幾乎不能實(shí)現(xiàn)任何壓縮。
[1] 王建新,彭娜.廣域網(wǎng)加速技術(shù)研究綜述[J].電信快報(bào),2009(5):11-14.
[2] 王建新,王捷,徐濤,等.廣域網(wǎng)加速網(wǎng)關(guān)設(shè)計(jì)與實(shí)現(xiàn)[J].中南大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,43(10):130-136.
[3] 劉寶辰.高性能數(shù)據(jù)包捕獲系統(tǒng)的研究與實(shí)現(xiàn)[D].上海交通大學(xué),2013.
[4] Netmap[OL].http://info.iet.unipi.it/~luigi/netmap/.
[5] Rizzo L.Netmap:a novel framework for fast packet I/O[C]//Usenix Conference on Technical Conference.USENIX Association,2012:9-9.
[6] Berkeley DB[OL].http://www.oracle.com/us/products/database/berkeley-db/db/overview/index.html.
[7] Huh E N,Choo H.Performance enhancement of TCP in high-speed networks[J].Information Sciences,2008,178(2):352-362.
[8] Sivasubramanian S,Pierre G,Steen M V,et al.Analysis of Caching and Replication Strategies for Web Applications[J].IEEE Internet Computing,2007,11(1):60-66.
[9] Imai S,Leibnitz K,Murata M.Statistical Approximation of Efficient Caching Mechanisms for One-Timers[J].IEEE Transactions on Network & Service Management,2015,12(4):595-604.
GIGABIT ACCELERATION GATEWAY BASED ON DIFFERENTIAL TRANSMISSION
Luo Yongjun1Li Jianhua1*Luo Fei1Yao Lingling1Hong Yadong1Lin Mulin2Hu Hailong2
1(SchoolofInfomationScienceandEngineering,EastChinaUniversityofScienceandTechnology,Shanghai200237,China)2(WangsuScienceandTechnologyCo.,Ltd.,Shanghai200030,China)
In the content distribution network, reducing data transmission between nodes and achieving bandwidth savings is an important issue in communication acceleration research. To solve this problem, the scheme combines the idea of differential transmission, that is, only part of the data transmitted in the communication changes, and a high-speed transparent acceleration gateway based on differential transmission is designed. The gateway uses netmap to capture the link data directly at the network layer, and carries out fast data processing based on embedded database, which can support fast data query and update of ten million data packets. Furthermore, the data processing of the gateway is only at the network layer, and transparent transmission is realized without affecting the original network service program. The test results show that the gateway can achieve wire-speed gigabit Ethernet transmitting, and it is easy to deploy. It can achieve high traffic compression ratio under the specific application environment.
Differential transmission Acceleration gateway Transparent transmission Link capture Embedded database
2016-06-16。國(guó)家自然科學(xué)基金面上項(xiàng)目(61472139)。羅勇軍,講師,主研領(lǐng)域:計(jì)算機(jī)網(wǎng)絡(luò)。李建華,副教授。羅飛,副教授。姚玲玲,碩士生。洪亞?wèn)|,碩士生。林木林,工程師。胡海龍,工程師。
TP393.2
A
10.3969/j.issn.1000-386x.2017.06.023