APP下载

安全存储系统中TCP流还原加速策略研究

2018-04-20晁萍瑶

西安工程大学学报 2018年1期
关键词:重传状态机约简

赵 勇,陈 亮,晁萍瑶

(西安工程大学 计算机科学学院,陕西 西安 710048)

0 引 言

随着互联网技术的快速发展,对数据的安全性要求越来越高,于是出现了对数据进行加解密的安全存储系统.此系统部署在应用服务器(iSCSI启动器)与磁盘阵列(iSCSI目标器)之间,通过对iSCSI报文中数据的加解密操作,实现在局域网存储系统中数据的安全存储.在TCP/IP体系中,iSCSI属于应用层协议,其传输层采用的是TCP协议[1].网络层提供的是一种不可靠的服务,存在数据包的丢失、乱序、重传等情况[2].安全存储系统为了解析应用层的iSCSI报文,首先必须对TCP流进行还原,即将多个IP数据报重组为一条完整有序的TCP流[3].然而TCP流还原的速度是影响整个安全存储系统性能的瓶颈.TCP流还原应用广泛,如入侵检测系统、网络流量分析系统等[4].梁勇[5]利用哈希算法解决了多连接TCP重组匹配问题,大大节约了系统资源,提高了系统的稳定性.夏天一等[6]提出一种基于数据流特征的TCP重组技术,从而提高了处理速度.但是他们并未对TCP协议的底层进行研究,因此本文提出约去TCP状态机中的CLOSING状态,并且对TCP定时器进行改进,从而减少了系统资源被长时间占用的现象.然后采用Hash表对大量TCP流进行管理,最后通过Splay树算法对TCP分段进行重组.通过对安全存储系统流还原优化前后的对比可知,数据读写速率得到明显提高.

1 TCP流还原加速策略

TCP是一种可靠传输服务的协议, 其实现代码占内核协议栈总代码量的50%左右.以太网中基于TCP协议的数据量占整个网络通信量的 90%[7].对TCP协议进行约简,可以减少内核中协议栈的代码量,减少内存的开销.TCP协议中的连接控制模块(transmission control block,TCB)[8]包含了有关TCP连接的所有信息,如连接状态、定时器、当前平均往返时间的阈值等,可以为每个TCP连接提供报文的传送、接收和重传操作.当某个控制块被一个连接占用后,其他连接就无法使用该控制块.因此,约简的原则就是尽量减少TCP控制块的占用时间,以及控制块数据结构中的字段信息,以此来提升内存的利用率.下面就从TCP状态机、定时器、算法3个方面阐述流还原的优化策略.

图 1 TCP正常连接建立和终止所对应的状态Fig.1 Corresponding state of TCP normal connection establishment and termination

1.1 TCP状态机的约简策略

TCP协议存在11种状态,每种状态都代表TCP连接建立和断开的详细阶段[9].其中客户端独有的状态:SYN-SENT、FIN-WAIT1、FIN-WAIT2、TIME-WAIT;服务端独有的状态:LISTEN、SYN-RECD、CLOSE-WAIT、LAST-ACK;共有的状态:CLOSED、ESTABLISHED、TCP状态机越复杂,计算机系统需要维护的资源开销就越大[10],对系统存储及运算能力的要求就越高[11].因此,可以对状态机进行约简.TCP连接以ESTABLISHED状态为界,可分为建立连接和断开连接两个阶段[12].正常的建立阶段需要经历三次握手,断开需要经历四次挥手,如图1所示.

图 2 非正常双方同时主动关闭状态Fig.2 The state of active closure of non-normal parties at the same time

但是存在一种特殊情况,当建立连接的双方都同时主动关闭连接的时候,会出现CLOSING状态[13],如图2所示.正常情况下,是客户端发送FIN报文后,收到服务端ACK报文和FIN报文,最后客户端响应一个ACK报文,至此TCP连接断开.但是CLOSING状态表示客户端发送FIN报文后,并没有收到服务端的ACK报文,而是收到了服务端的FIN报文,此时双方都处于CLOSING状态,都在等待对方回应ACK报文.

CLOSING这种状态属于一种比较罕见的特殊状态[14].此状态下,如果始终没有收到对方对自己FIN报文的ACK确认报文,则重发FIN报文,直到收到ACK报文进入TIME-WAIT状态或者达到最大重传上限.本文通过packetdirll构造一系列的包序列,使得TCP进入CLOSING状态,发现CLOSING状态的套接字维持了2 min之久.其原因为:一端FIN报文发出去后,没有收到ACK确认包,因此会退避重发,最终达到4次退避上限结束.在Linux协议栈的实现中,tcp-retransmit-skb由tcp-retransmit-timer调用,当此过程中没有重传成功,还会发生退避,退避超时到期后,继续在这里出错,直到“不可容忍”销毁套接字.无用的TCP状态的存在使状态机的转换关系变得复杂,增加了不稳定因素,如果没有大量工作对状态转换进行检测,很容易导致系统死锁以及系统资源的无限期阻塞[15],这样对于大流量的TCP流还原系统来说是不允许的,应该尽量减少这种情况的出现.

在局域网存储系统中,iSCSI会话的建立与注销都是由启动器主动完成,类似的还有FTP.在这种情况下,TCP连接的建立与断开只会是一方主动进行,并不会存在双方主动关闭的情况.因此,TCP流还原中的TCP状态机可以去掉CLOSING状态,从而节省大部分的编程空间,减少了TCB块中的信息,缩减了每个TCP连接的保持时间,从而提高了TCP流还原的效率.

1.2 TCP定时器的约简策略

TCP协议分别使用了重传定时器、坚持定时器、保活定时器和时间等待定时器4种定时器来维持连接的状态.TCP在连接过程中使用保活定时器以避免在客户端异常消失时,服务器上留下半开放连接,而此时服务器却又在等待来自客户的数据,这样将使服务器永远等待下去.因此提出将保活定时器的时间适当地缩减,一般的保活定时器的默认时间为2 h[16],本文将保活定时器时间改为2 min.如果探测在2 min内仍然没有收到客户端的反馈消息,那么可以认为是连接异常断开了[17].从而使系统释放资源,减少了不必要的等待时间,降低了系统内存被长时间占用的现象.

另外时间等待定时器是在连接终止阶段使用的.一般,当TCP连接关闭时,并不认为这个连接就真正关闭,在时间等待期间,连接还处于一种中间过渡状态.时间等待定时器的值通常设置为一个报文段寿命期望值的两倍.然而,对于TCP流还原来说,时间等待定时器是可以删去的,因为TCP流还原主要监听的是TCP连接建立阶段的状态,并不需要检测TCP连接断开之后的状态.从而减少了控制块中的字段信息,提高了内存的利用率.

1.3 流还原算法优化策略

在安全存储系统中,同一个时刻可能会有上万条TCP连接,每一个连接又可能有上百个TCP分段,对于一个新到达的TCP分段,必须尽可能快速地找到对应的TCP连接,并且快速地将一个TCP连接重新排序.由于Hash算法可以将数据存储和查找消耗的时间大大降低,所以本文对于上万条TCP连接采用Hash表进行管理,不同的TCP连接通过五元组作为键值进去区分,如图3所示.

图 3 Hash表管理多条流Fig.3 Hash table managing multi-flow

对于属于同一个TCP连接的多个分段,借鉴了Snort入侵检测系统中的分段管理方式,采用伸展树(Splay tree)算法对其进行重组.因为伸展树的一个节点被访问时,该节点经过一系列的旋转可以转移到树根,这样可以让计算机执行比较少的访问就可以到达目的节点,当再次访问时,只需比较一次就可以返回.Splay树重组流程如图4所示.

图 4 Splay树重组流程Fig.4 Flowchart of Splay tree reassemly

通过结合Hash表与Splay树方式,减少了TCP流还原的时间复杂度以及降低了空间复杂度.

2 测试结果及分析

TCP流还原是安全存储系统中的一个核心模块.为了验证TCP流还原的性能,本文在其他条件不变的情况下,将安全存储系统运行在Tilera众核网络处理器上[18],对比TCP流还原改进前后安全存储系统的读写性能.测试过程中,分别检测了不同大小的文件(1 k/1 M/128 M)在不同CPU数量下的读写性能,如图5,6所示.

通过图5和图6可以看出要达到8 Gbit·s-1的吞吐量:约简前1 k大小的文件需要36核,约简后只需要20核;约简前1 M大小的文件需要20核,约简后只需要8核;约简前128 M文件需要8核,而在约简后只需2核即可.实验表明,改进后的安全存储系统的整体读写性能得到显著提升.

本文在保证安全存储系统读写性能的条件下,对文本、图片、视频等文件的完整性进行验证.结果表明优化后安全存储系统保存的文件与之前相比MD5值没有变化,文件完好无损.

图 5 改进前不同文件大小在不同CPU数量的读写吞吐量 图 6 改进后不同文件大小在不同CPU数量的读写吞吐量 Fig.5 The throughput of before improved different file sizes across diferent numbers of CPU Fig.6 The throughput of improved different file sizes across different numbers of CPU

3 结束语

针对安全存储系统中TCP数据流量大、并发性较高的特点,文从3个方面对TCP流还原的过程进行改进:首先约简了TCP状态机中的CLOSING状态;其次改进TCP定时器,缩减保活定时器的时间并且删除了时间等待定时器;最后采用Hash表对大量的TCP流进行管理并用Splay树对属于同一条流的TCP分段进行排序,使得TCP流还原的效率得到了显著提升.

参考文献(References):

[1] 朱立谷,赵青梅,梁哲伟,等.iSCSI协议的研究[J].计算机工程与应用,2002,38(15):43-45.

ZHU L G,ZHAO Q M,LIANG Z W,et al.Study of internet SCSI protocol[J].Computer Engineering and Applications,2002,38(15):43-45.

[2] 赵启升,李存华.一种高效的TCP会话数据流重组算法及应用[J].微电子学与计算机,2010,27(7):129-132.

ZHAO Q S,LI C H.An efficient algorithm and application for restructuring TCP session data streams[J].Microelectronics & Computer,2010,27(7):129-132.

[3] 熊兵,陈晓苏,陈宁.A real-time TCP stream reassembly mechanism in high-speed network[J].西南交通大学学报,2009,17(3):185-191.

XIONG B,CHEN X S,CHEN N.A real-time TCP stream reassembly mechanism in high-speed network[J].Journal of Southwest Jiaotong University,2009,17(3):185-191.

[4] 邓子宽,范明钰,王光卫,等.Snort入侵检测系统中TCP流重组的研究[J].信息安全与通信保密,2007(2):65-67.

DENG Z K,FAN M Y,WANG G W,et al.Reasearch on TCP reassembly in Snort IDS[J].Information Security and Communications Privacy,2007(2):65-67.

[5] 梁勇.网络TCP数据流重组技术研究[J].信息通信,2012(6):35-36.

LIANG Y.Research on network TCP data flow reassembly technology[J].Information & Communications,2012(6):35-36

[6] 夏天一,刘嘉勇.基于数据流特征的TCP重组技术研究[J].信息安全与通信保密,2014(11):134-136.

XIA T Y,LIU J Y.TCP reassembling technology based on data flow characteristics[J].Information Security and Communications Privacy,2014(11):134-136.

[7] 帅春燕,江建慧,欧阳鑫.TCP有限状态机和协议解析在伪警报去除中的应用[J].计算机应用,2011,31(5):1271-1275.

SHUAI C Y,JIANG J H,OUYANG X.TCP finite state machine and protocol parse applied in removal of false alerts[J].Journal of Computer Applications,2011,31(5):1271-1275.

[8] 乔丽.嵌入式Internet中TCP状态机的约简[J].西南民族大学学报,2011,37(6):991-994.

QIAO L.Reduction of TCP state machine in embedded internet[J].Journal of Southwest University for Nationalities,2011,37(6):991-994.

[9] 谢希仁.计算机网络[M].5版.北京:电子工业出版社,2008:187.

XIE X R.Computer internet[M].5th ed.Beijing:Publishing House of Electronics Industry,2008:187.

[10] DOUGLAS E C,STEVENS D L.用TCP-IP进行网际互联第二卷:设计、实现与内核[M].北京:电子工业出版社,2001:153.

DOUGLAS E C,STEVENS D L.Internetworking with TCP/IP Vol Ⅱ:Design,implementation,and internals[M].Beijing:Publishing House of Electronics Industry,2001:153.

[11] 冯翠丽,刘波涛.一种嵌入式TCP/IP协议栈的设计与实现[J].长江大学学报(自然科学版),2008,5(4):331-333.

FENG C L,LIU B T.Design and implementation of an embedded TCP/IP protocol stack[J].Journal of Yangtze University(Nat Sci Edit),2008,5(4):331-333.

[12] 冯翠丽,刘波涛.嵌入式TCP状态机的简化研究[J].西安邮电学院学报,2012,17(1):58-61.

FENG C L,LIU B T.Embedded TCP state machines simplification research[J].Journal of Xi′an University of Posts and Telecommunications,2012,17(1):58-61.

[13] LAWRENCE B.TCP/IP详解卷1:协议[M].北京:机械工业出版社,2000:191.

LAWRENCE B.TCP/IP Illustrated Volume 1:The protocols[M].Beijing:China Machine Press,2000:191.

[14] MORRISON K W,PURVES R S.Customizable landscape visualizations implementation application and testing of a web-based tool[J].Computer Environment & Urban Systems,2002,26(2/3):163-183.

[15] LIN C M,CHEN T F. Dynamic memory management for real-time embedded Java chips[J]. IEEE Network,2000,34:49-56.

[16] KOPETZKY T. Visual preview for link traversal on the World Wide Web[J].Computer Networks,1999,31(11/16):1525-1532.

[17] 林涛,王济勇,韩光洁,等.EI内核中TCP状态机约简的研究[J].计算机科学,2004,31(1):31-34.

LIN T,WANG J Y,HAN G J,et al.Reasearch on TCP state machine reduction in embedded internet kernel[J].Computer Science,200431(1):31-34.

[18] 王建.众核网络处理器下高速包转发系统设计与实现[J].计算机应用与软件,2016,33(12):102-105.

WANG J.Design and implementation of high-speed forwarding system on multi-core network processor[J].Computer Applications and Software,2016,33(12):102-105

猜你喜欢

重传状态机约简
适应于WSN 的具有差错重传的轮询服务性能研究
基于TDMA的wireless HART网络多路径重传算法
基于有限状态机的交会对接飞行任务规划方法
无线网络中基于网络编码与Hash查找的广播重传研究
基于Spring StateMachine的有限状态机应用研究
面向异构网络的多路径数据重传研究∗
近似边界精度信息熵的属性约简
实值多变量维数约简:综述
广义分布保持属性约简研究
时频表示特征约简的旋转机械故障特征提取方法