羅勇軍 李建華* 羅 飛 姚玲玲 洪亞東 林木林 胡海龍
1(華東理工大學信息科學與工程學院 上海 200237)2(網宿科技股份有限公司 上海 200030)
基于差分傳輸的千兆加速網關
羅勇軍1李建華1*羅 飛1姚玲玲1洪亞東1林木林2胡海龍2
1(華東理工大學信息科學與工程學院 上海 200237)2(網宿科技股份有限公司 上海 200030)
在內容分發網絡中,減少節點之間數據傳輸,實現帶寬節省,一直是通信加速研究中的重要問題。為解決該問題,結合差分傳輸思想,即只傳輸在通信中變動的部分數據,設計了一個基于差分傳輸的高速透明加速網關。該網關采用基于netmap在網絡層對網卡進行鏈路數據直接捕獲,并基于嵌入式數據庫進行高速大數據處理,可支持千萬級數據包的快速數據查詢與更新。同時,網關的數據處理只在網絡層上進行,在不影響原有的網絡服務程序基礎上實現了透明傳輸。實例測試表明,根據該方案實現的加速網關,能夠實現千兆網卡的線速收發,部署方便,在特定的應用環境下能達到很高的流量壓縮比。
差分傳輸 加速網關 透明傳輸 鏈路捕獲 嵌入式數據庫
在CDN或緩存項目中,在不影響用戶體驗的情況下,如何做到節省網絡節點之間傳輸的數據量,已經成為掣肘國內CDN發展的瓶頸之一。為了減少兩個節點之間進行數據傳輸所需要的帶寬,可以用基于差分傳輸的網關加速技術來解決。差分傳輸,主要是通過盡可能只傳輸變化的那部分數據,或者采用壓解縮技術,或者兩邊存儲映射表,來減少傳輸的數據量。
對網絡流量進行壓縮或加速,是網絡傳輸研究中經久不衰的問題。首先是對應用層數據本身的壓縮。應用層數據,主要包含如下幾種格式:文本、網頁代碼(大多用gzip壓縮過)、圖像文件(jpg、png等) 、音視頻文件(mp3、mp4、flv等格式為主)、壓縮包(rar、zip等)、安裝文件(exe、msi等)。現在的網絡流量,絕大部分都經過了壓縮處理。由于網絡數據基本上已經壓縮處理過,因此在數據本身上做文章,余地已經很小。而在網關上進行緩存,實現重復讀取時的增量傳輸,成為一種可行的技術方案。網絡流量具有突發、熱點等特征,這使得增量傳輸技術具有了實際的意義。
網關加速方案一般有兩類[1]:基于協議加速[2,8]和數據優化[7,9]。
(1) 基于協議的加速,是常見的網關加速解決方案,它們實現類似web cache服務器的功能。例如文獻[2]所實現的網關加速,以插件的形式,提供擴展TCP協議、Exchange、ftp、HTTP等加速服務。這種網關加速方案的應用場景,需要把網關部署在靠近用戶的網絡末端。網關把自己偽裝成遠程服務器,直接為用戶提供服務,從而減少遠程網絡的流量。因此,網關需要對協議進行復雜的解析和重現,其傳輸速度也會受到影響。
(2) 基于數據優化的加速,是基于短時間內多用戶重復訪問同一熱點數據這一特征,在網關上進行緩存,用重復的數據替代報文中的數據,以達到流量壓縮的目的。文獻[9]分析了多種緩存算法能達到的效果,但并未實現一個可用的系統。系統實現的難度主要在于流量副本的存儲、查詢、更新需要以極高的速度進行。
差分傳輸屬于(2)這一類的網關加速方案。
本文設計實現了一個實用的、基于差分傳輸的加速網關,適用于CDN所常用的遠程千兆網,具有典型的應用場景。后文詳細論述了這一技術方案,內容包括:(1) 加速網關的工作原理;(2) 加速網關的組成結構;(3) 對丟包問題的處理;(4) 數據庫更新問題的解決;(5) 測試。
本文的創新點在于,目前未發現有類似的系統設計和應用場景,并且測試結果表明有很好的性能。
基于差分傳輸的加速網關的工作原理,是基于IP包中應用層數據的重復性,實現流量壓縮的功能。有一對網關,分別是緩存器A和恢復器B。同一個差分網關同時是緩存器和恢復器,服務于不同的傳輸方向。如圖1所示。

圖1 差分傳輸網關部署
網關A和B分別在本地數據庫中存儲收到的報文的數據內容。由于A和B是對稱的,因此維護了一個相同的數據庫。當A收到一個新的報文時(例如大小為1 500 Byte),如果本地數據庫中曾經存儲過內容相同的報文,則只向B發出一個壓縮包,這個壓縮包很小(例如118 Byte)。B收到這個壓縮包后,利用自己的本地數據庫恢復報文并轉發。這樣就在A和B之間實現了流量壓縮。
差分網關作為轉發網絡流的網關,應該有極高的速度。其轉發速度,應該和它使用的高速網卡匹配,實現線速傳輸。
綜合起來,基于差分的加速網關期望的主要目標如下:
(1) 效果。經過差分傳輸方案處理后的流量,相對于未采用差分傳輸方案的流量,達到有效降低。對于文本、網頁代碼、圖像文件、音頻、視頻、壓縮包、安裝文件等業務,綜合流量降低比例高于15%。
(2) 性能。在指定的的硬件條件下,差分傳輸方案能夠處理的最大業務流量能力,和它使用的高速網卡匹配。
(3) 業務影響。經過差分傳輸方案處理前后的業務質量變化情況,不能對業務質量產生負面影響,業務質量(如HTTP Response的平均速率)在應用差分傳輸方案后不能下降。
(4) 穩定性。排除差分傳輸方案自身缺陷之外的因素,可靠性達到99.99%。
(5) 便捷性。應用差分傳輸方案對服務程序的改動,要求不需要對服務程序進行改動,或僅作微量改動。
從上述要求可以得知,差分加速網關的關鍵問題在于大數據量下的性能優化。
在這個基礎上,本文設計實現了一個滿足千兆網需求的差分傳輸網關,它解決了以下關鍵問題:
(1) 線速傳輸。使用1 Gbps以太網卡,實現了接近1 Gbps帶寬的轉發率。
(3) 透明。差分網關工作在網絡層,不涉及傳輸層和應用層,容易部署。
把加速網關分成3個部分:差分網關內部協議、線速鏈路轉發、高速數據存取操作。
2.1 差分網關內部協議
緩存器和恢復器的工作流程是:
(1) 緩存器讀取進入的IP包。如果是小包(設置為1 000 byte以下),則直接發出,不做處理。
(2) 如果收到的是大包,緩存器查找本地數據庫中有無此包(僅比較應用層數據部分,不比較ip頭、TCP頭),如果沒有,則存儲它,并直接發出。恢復器收到這個包,首先存儲在本地,然后轉發出去。緩存器和恢復器所存儲的數據,用于以后收到同樣內容的ip包,進行壓縮和恢復。
(3) 如果緩存器找到相同的數據,則對這個包進行標記,并重構一個新的ip包,即壓縮包,并向恢復器發出。這個壓縮包帶有特殊的標記,且標記的長度很小,比數據小得多,從而達到了壓縮的目的。
(4) 恢復器收到壓縮包,查找自己的數據庫,還原成最初的ip包,然后發出。
緩存器和恢復器的工作流程如圖2和圖3所示。
水保生態建設扎實推進。完成12條小流域綜合治理任務,推進淤地壩、基本口糧田等重點水保工程,水利部門治理水土流失面積180.33km2。成功召開了全省小流域綜合治理現場觀摩會。西寧被列為國家水生態文明建設試點城市。

圖2 緩存器工作流程

圖3 恢復器工作流程
2.2 線速鏈路轉發
常見的包捕獲技術有:libpcap、PF_RING、netmap[4-5]。文獻[3]用netmap進行了1 000 Mbps包捕獲的測試。經過分析和對比,本方案采用netmap。netmap是一個高性能收發原始數據包的框架,它采用直接與網卡交互、零拷貝等技術,可以實現線速收發包。
網關對包的捕獲和發送,通過以下兩個結構來操作:
struct netmap_ring *rxring;
struct netmap_ring *txring;
其中,rxring和txring的結構struct netmap_slot,指向對報文的捕獲和接收,實現線速的鏈路收發。
struct netmap_slot *rs = &rxring->slot[];
struct netmap_slot *ts = &txring->slot[];
2.3 高速數據存取
(1) 網關需要處理的數據量。根據前文計算,約5分鐘、大約1 800萬個ip包的數據。
(2) 處理的速度要求。當新收到一個ip包PA時,需要在存儲的1 800萬個ip包中找到有相同內容的那個包PB。
在這個情況下,只能使用基于Hash的線性表、或者是Btree結構進行存儲和檢索。在更大的數據量情況下,Hash應該優于Btree。
由于速度要求高,不能使用關系型數據庫。唯一可用的是Berkeley DB[6],它實現了內存數據庫管理,提供直接訪問數據庫的函數。Berkeley DB是歷史悠久的嵌入式數據庫系統,在本網關中,能提供1 000 Mbps線速轉發所需要的數據操作。
Berkeley DB中數據存儲算法有4種,其中適合本方案的有2種:Hash和Btree。這2種算法在不同的數據量上有不同的性能,本文在測試部分進行了比較。
數據包存儲在Berkeley DB中時,需要(key, value)這一對值,其中key是鍵值,本文設置為64字節;value是數據包的數據內容部分,約1 500字節。key的值實際選取的是value的前64字節。
加速網關運行時,假設key和value是一一對應的。用key進行數據庫的存取、檢索,從而實現高速操作。
但是,在極少的情況下,存在key值相同,而value不同的情況。經過實際測試,這個比率約為0.01%。這會造成錯誤,具體的解決方案在下一節的“丟包問題”中進行說明。
在上一節中提到差分傳輸網關利用流量的重復性來進行壓縮,由于對速度的高要求,加速網關沒有做到絕對準確的重復性檢驗,這會導致錯誤。網關兩端的傳輸層,對此會進行丟包的錯誤處理,下面詳細討論這一現象,并提出解決方案。
丟包有2種情況:
(1) 網絡丟包比如緩存器發出包,而恢復器沒有收到。
(2) 緩存器和恢復器傳遞了錯誤的包。即在上一節中提到(key,value)對中,數據庫中的(key, value)和新收到的包(key′, value′),其中key=key′,而value和value′不同。緩存器和恢復器傳遞了錯誤的數據。
在上述2種情況下,采用TCP協議的應用層協議都會重發包。例如網絡流是ftp服務,ftp服務器都會重發數據包,緩存器將收到一個以前收到過的包。利用這一特征,可以解決丟包的問題。
采用的方案是:由緩存器做記錄,如果發現這個包是個重傳包(一模一樣的包,TCP協議中checksum一樣),上次被緩存器發送過,那么不做壓縮,直接發出。
下面對這一方案進行說明。網絡環境如圖4所示。

圖4 丟包問題的網絡環境
A和B是差分網關的緩存器和恢復器。PCA和PCB是客戶端,穿過A和B訪問FTP Server。
(1) PCA訪問ftp Server,返回一個包:(checksum1+ key+ value)。其中checksum1是tcp的checksum,value是應用層數據,key是value的前64字節。
緩存器和恢復器A、B:存儲這個包,并轉發。
(2) 正常情況:PCB訪問FTP Server的相同內容,返回一個包:(checksum2+ key+ value),其中只有checksum不一樣,包的內容value一樣。這正是我們需要進行壓縮和恢復的情況。
緩存器B:發出一個(checksum2+ key)包,即壓縮包。同時用新的(checksum2+ key+ value)覆蓋舊的(checksum1+ key+ value)。
恢復器A:在數據庫中找到key對應的value,恢復成正常的包發出。同時用checksum2覆蓋checksum1,目的是和緩存器保持一致。
(3) 異常情況:PCB訪問FTP Server的相同內容,返回一個包:(checksum2+ key+ value2),其中checksum和value都不一樣。
緩存器B和恢復器A的動作和2一樣,注意它們用checksum2覆蓋了checksum1。
根據(2)的邏輯,我們仍然發出了一個壓縮包(checksum2+ key),這實際上導致了出錯。
當(3)發生后,PCB向FTP Server報告出錯,FTP Server重發了一個包(checksum2+ key+ value2)。
緩存器B中的數據是(checksum2+ key+ value),收到的數據是(checksum2+ key+ value2)。
緩存器B通過(checksum2+ key)知道,這是一個重發包。
緩存器B:(a)發出完整的(checksum2+ key+ value2)。(b)在數據庫中存入新的(checksum2+ key+ value2),即根據(checksum2+ key)覆蓋原來的(checksum2+ key+ value)。
恢復器A:收到緩存器B發來的(checksum2+ key+ value2),也發現這是重發包。它的動作和緩存器B一樣:(a)發出完整的(checksum2+ key+ value2)。(b)在數據庫中存入新的(checksum2+ key+ value2)。
緩存報文的數據庫,它的合理性是網關能有效運行的關鍵,其中數據的及時更新是一個重要的問題。由于網關一直運行,當數據庫存滿以后,再來新數據包,需要用新的替換舊的數據。本文設計了一個線性表進行處理。基本原理如下:

p1指向要刪除的數據位置,初始值為p1=1,指向表頭。
p2指向正在寫入的數據位置,初始值為p2=1,指向表頭。
(1) 新數據的寫入。每當向數據庫中寫新數據時,p2加1;p2始終指向下一個寫入的位置。如果p2到達數據庫末尾,p2回到開始位置。
(2) 舊數據的刪除。在每次寫入數據之后,判斷是否需要刪除舊數據。數據庫第一次存滿之后,開始刪除數據,p1加1;p1始終指向下一個要刪除的位置。如果p1到達數據庫末尾,p1回到開始位置。
本文所設計的系統,在高速存儲、高速查找和高速轉發上具有鮮明的特點,目前未發現有類似的設計。本節所做的測試,包括速度和壓縮率兩方面。(1) 速度測試,與線速1 Gbps的網卡所能達到的最大速度做對比;(2) 壓縮率,與未壓縮的流量做對比。
硬件環境:差分傳輸的服務程序,運行在2臺dellR620(E5-2620×2/8 GB×4/300 GB×2 SAS Raid0/1 000 MB×4 1U)服務器上。
軟件環境:操作系統是Ubuntu Linux。
根據長距離千兆數據傳輸網絡的特征,設計了圖5的測試環境。1和100是加速網關,配置為點對點傳輸的方式。在網關兩邊,分別配置了局域網和公網。測試時,模擬客戶端和服務器的通信方式。

圖5 差分傳輸加速網關測試環境
1和100的硬件配置和軟件程序完全相同。由于緩存和恢復是雙向的過程,因此其中的傳輸程序同時具有緩存和恢復的功能。
1和100工作在對11、12、13、20完全透明的交換狀態。例如,11和20之間的傳輸,雖然經過了網關1和100的轉發,但是11和20就像直連一樣。從11和20看起來,11發出的包,20將按原樣收到這個包。
(1) 速度測試
20是ftp server,11、12、13是ftp client。本測試環境用于測試差分網關的轉發速度,是否能達到網卡的線速。
在測試中,ftp傳輸了4個不同大小的文件:a、b、c、d。
首先,不用緩存/恢復的功能,1和100直接轉發。只用11和20進行ftp傳輸,重復8次,測試結果如表1所示。

表1 網關傳輸的原始峰值速度測試
上述結果說明,對于線速1 Gbps的網卡,ftp傳輸的平均速度不到100 MB/S。
其次,使用緩存/恢復功能,分別測試使用Btree和Hash算法,只用11和20進行ftp傳輸,結果如表2所示。

表2 加速網關傳輸速度測試1
用Hash結構,和用Btree結構,結果相近。只用11一個client到server上下載,速度遠達不到線速,是因為發生了第3節中的丟包問題。
用11、12、13做client,20做server,結果如表3所示。

表3 加速網關傳輸速度測試2
當用多個client到server上同時下載時,綜合的平均速度接近線速。
(2) 功能測試
首先,重復8次訪問外網的網頁,壓縮比為1%左右。
其次,重復8次訪問外網的同一個視頻,壓縮比為52%。
對于網頁這樣包含文本、圖片、視頻等復雜內容的業務,差分傳輸網關無法實現有意義的壓縮,而對于視頻、壓縮包等簡單業務,可以實現很好的壓縮比。
由于目前網絡流量超過70%以上是視頻,因此本項目實現的結果在實踐上具有很大的意義。
設計實現了一個新的基于差分傳輸的加速網關。采用的方案,是對內容相似的流量進行匹配,用小的特征報文來替代大的原始報文進行網絡傳輸,以實現類似壓縮的功能。由于程序運行在網絡層上,不涉及應用層協議,因此完全不影響原來的網絡服務,部署十分簡單。
在特定的應用環境下,它有非常明顯的壓縮效果。例如在視頻服務網站上,每天的推薦視頻、熱點視頻的訪問非常頻繁,重復訪問率非常高。在這個情況下,用差分傳輸可以達到很高的壓縮比。
但是,加速網關基于差分傳輸的設計,使得它并不能在所有情況下都能達到很好的效果。例如,在網絡流量非常分散,幾乎沒有相同內容訪問的情況下,差分傳輸幾乎不能實現任何壓縮。
[1] 王建新,彭娜.廣域網加速技術研究綜述[J].電信快報,2009(5):11-14.
[2] 王建新,王捷,徐濤,等.廣域網加速網關設計與實現[J].中南大學學報(自然科學版),2012,43(10):130-136.
[3] 劉寶辰.高性能數據包捕獲系統的研究與實現[D].上海交通大學,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。國家自然科學基金面上項目(61472139)。羅勇軍,講師,主研領域:計算機網絡。李建華,副教授。羅飛,副教授。姚玲玲,碩士生。洪亞東,碩士生。林木林,工程師。胡海龍,工程師。
TP393.2
A
10.3969/j.issn.1000-386x.2017.06.023