基于差分传输的千兆加速网关
2017-07-10罗勇军李建华姚玲玲洪亚东林木林胡海龙
罗勇军 李建华* 罗 飞 姚玲玲 洪亚东 林木林 胡海龙
1(华东理工大学信息科学与工程学院 上海 200237)2(网宿科技股份有限公司 上海 200030)
基于差分传输的千兆加速网关
罗勇军1李建华1*罗 飞1姚玲玲1洪亚东1林木林2胡海龙2
1(华东理工大学信息科学与工程学院 上海 200237)2(网宿科技股份有限公司 上海 200030)
在内容分发网络中,减少节点之间数据传输,实现带宽节省,一直是通信加速研究中的重要问题。为解决该问题,结合差分传输思想,即只传输在通信中变动的部分数据,设计了一个基于差分传输的高速透明加速网关。该网关采用基于netmap在网络层对网卡进行链路数据直接捕获,并基于嵌入式数据库进行高速大数据处理,可支持千万级数据包的快速数据查询与更新。同时,网关的数据处理只在网络层上进行,在不影响原有的网络服务程序基础上实现了透明传输。实例测试表明,根据该方案实现的加速网关,能够实现千兆网卡的线速收发,部署方便,在特定的应用环境下能达到很高的流量压缩比。
差分传输 加速网关 透明传输 链路捕获 嵌入式数据库
0 引 言
在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) 测试。
本文的创新点在于,目前未发现有类似的系统设计和应用场景,并且测试结果表明有很好的性能。
1 差分传输加速网关工作原理
基于差分传输的加速网关的工作原理,是基于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) 透明。差分网关工作在网络层,不涉及传输层和应用层,容易部署。
2 差分传输加速网关设计
把加速网关分成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%。这会造成错误,具体的解决方案在下一节的“丢包问题”中进行说明。
3 丢包问题
在上一节中提到差分传输网关利用流量的重复性来进行压缩,由于对速度的高要求,加速网关没有做到绝对准确的重复性检验,这会导致错误。网关两端的传输层,对此会进行丢包的错误处理,下面详细讨论这一现象,并提出解决方案。
丢包有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)。
4 数据库更新
缓存报文的数据库,它的合理性是网关能有效运行的关键,其中数据的及时更新是一个重要的问题。由于网关一直运行,当数据库存满以后,再来新数据包,需要用新的替换旧的数据。本文设计了一个线性表进行处理。基本原理如下:
p1指向要删除的数据位置,初始值为p1=1,指向表头。
p2指向正在写入的数据位置,初始值为p2=1,指向表头。
(1) 新数据的写入。每当向数据库中写新数据时,p2加1;p2始终指向下一个写入的位置。如果p2到达数据库末尾,p2回到开始位置。
(2) 旧数据的删除。在每次写入数据之后,判断是否需要删除旧数据。数据库第一次存满之后,开始删除数据,p1加1;p1始终指向下一个要删除的位置。如果p1到达数据库末尾,p1回到开始位置。
5 测 试
本文所设计的系统,在高速存储、高速查找和高速转发上具有鲜明的特点,目前未发现有类似的设计。本节所做的测试,包括速度和压缩率两方面。(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%以上是视频,因此本项目实现的结果在实践上具有很大的意义。
6 结 语
设计实现了一个新的基于差分传输的加速网关。采用的方案,是对内容相似的流量进行匹配,用小的特征报文来替代大的原始报文进行网络传输,以实现类似压缩的功能。由于程序运行在网络层上,不涉及应用层协议,因此完全不影响原来的网络服务,部署十分简单。
在特定的应用环境下,它有非常明显的压缩效果。例如在视频服务网站上,每天的推荐视频、热点视频的访问非常频繁,重复访问率非常高。在这个情况下,用差分传输可以达到很高的压缩比。
但是,加速网关基于差分传输的设计,使得它并不能在所有情况下都能达到很好的效果。例如,在网络流量非常分散,几乎没有相同内容访问的情况下,差分传输几乎不能实现任何压缩。
[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