您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

基于FPGA的TCP粘合计划与实现

发布日期:2011-04-22

   
    传统的数据分流一样平常基于三层、四层互换,不克不及在应用层分析数据,导致数据在后端办事器分析后还要相互重新分发,增长了办事数据传输的开销,为办理该题目,可以在客户端与办事器之间采取应用级代理办事器,利用该办事器专门对数据包举行分析分发,但是该方法下,数据要进入TCP/IP协议栈,处理惩罚速率慢,同时代理办事器还必要与客户端、办事器两边通讯,必要处理惩罚的数据量非常大,因此在集群应用中,分外是大范围负载均衡集群体系中很少利用应用级代理。

    在应用级代理的底子上,为进一步进步数据处理惩罚的速率,提出了TCP粘合技能[1]。该技能在通讯两边创建通讯之处对两边的握手信号以及通讯原语举行阐发,获取须要的信息,决定命据的流向,一旦两边开始通讯,该代理就不再对数据举行阐发,而仅起到了一个透明网关的作用,从而进步了代理的体系性能。

    TCP 粘合技能采取软件处理惩罚方法时,由于大量数据包不必要上层分析,因此进步了体系性能,但是受软件处理惩罚速率的限定,该技能能很难应用于大范围的集群体系,本文提出了一种基于FPGA的TCP粘合技能的高速实现机制,利用硬件的高速处理惩罚特性和流水线的技能来适应高速网络传输的必要。

    1 现存的TCP粘合技能

TCP 粘合原理如下:(1)监听客户真个连接恳求,并在客户端发出连接恳求后(从SYN开始),创建客户端到均衡器之间的连接(通过TCP的三次握手协议完成),(2)在随后的恳求报文中阐发数据并决定真正被访问的办事节点。(3)与办事节点创建性一个连接,将两个连接粘合在一起(splicing)。其 TCP粘合原理表示图如图1所示[2]。






   2 TCP粘合技能的硬件实现

   TCP粘合技能的关键在于,当客户端提倡连接恳求时,体系并不是立即将该恳求发给后端办事器,而是伪装成办事器与客户端创建连接,获取用户的GET数据包,通过对URL的立室来找到信息在后端办事器的位置,然后再在客户端与办事器之间创建连接通讯。

   2.1 体系架构

   TCP粘合体系布局如图2所示。







    该体系中起首由客户数据吸取端对吸取到的HTTP报文举行分析,发明数据包为一个提倡连接的SYN数据包时,传给地点办理单位,地点办理就为该连接分派一个地点空间,同时通过映射单位报告客户数据发送端与客户端完成三次握手,创建连接。

    当客户数据吸取端收到GET数据包时,将该数据包发送给字符串立室表,该表会将信息在后端办事器的位置返回给地点办理单位,地点办理单位将该信息送给数据包映射单位,映射单位将该信息写入相应的SSRAM空间中,同时关照办事器发送端与后端办事器创建连接,如许就完成了一个TCP的粘合进程。

    在客户端与办事器的通讯进程中,数据包映射单位通过两边SIP、DIP信息从SSARM中查找出映射的更换信息,完成两边数据包的映射。

    在客户端通讯结束时,由地点办理单位对两边利用的地点空间举行采取;同时为防备通过进程中的非常停止,地点办理单位内部采取了定时器机制对地点空间举行监测,根据定时器返回结果采取过期地点,防备过期信息被查用。

    2.2 计划实现
    在该体系中,为完成TCP粘归并且包管TCP通讯的可靠性,必须可以或许精确辨认吸取到的数据包范例,同时由于实际网络数据传输的延时,在一个客户端通讯进程中大概会插入很多其他客户端提倡的新的连接恳求,体系内部根据对CAM查找返回的地点来区分差别的数据流,因此要对内部地点空间举行有效的开释采取,为处理惩罚网络通讯非常停止而导致内部地点无法采取而引入定时器机制,在数据发送部分,客户端数据发送模块伪装成办事器与客户端完成TCP三次握手协议,办事器数据发送模块则伪装成客户端与办事器完成TCP三次握手协议,两边在通讯进程中转发对方的数据包。

    2.2.1 数据收发
    对付体系的发送接口来说,全部发送数据包的转发由数据包映射单位完成,因此发送接口仅完成大略的数据包转发成果,而当体系吸取到数据包时,要对数据包举行协议分析从而决定命据包后端处理惩罚得方法,在吸取部分重要对三种数据包举行区分:(1)两边提倡连接的SYN数据包。这表现一个新连接的提倡,因此交给地点办理单位,为它分派一个新的地点空间,同时请求发送端返回一个ACK数据包;(2)客户端发送来的GET数据包中含有客户端所需信息的URL地点,将该数据包送给字符串立室表以得到该信息地点后端办事器的位置;(3)两边通讯的平凡数据包,该数据包交给数据包映射单位实现双发的通讯,详细吸取的状态转换图如图 3所示。







    2.2.2 地点办理单位

    在地点办理的方法上,在此处利用一个地点链表举行办理,如图4所示。







    每次地点办理单位吸取到新的恳求连接就从链表的头部取出该可用地点空间,将新恳求的SIP、DIP信息写入该地点的CAN中,同时在该地点映射的SSRAM的页面中写入相干的信息。假设链表中取出地点为n,页面大小为m,则SSRAM中映射的页面肇始地点l为:

l=n×m
    本地点办理单位吸取到字符串立室表返回的后端办事器位置信息时,起首通过该数据包的SIP、DIP从CAM中查找该数据流映射的地点、通过上述谋略公式找出SSARM中映射的页面,写入返复书息。

    对付地点空间的采取,为防备通讯非常停止而无法采取地点,在体系中采取定时器机制,即在一段时间后对SSRAM中的定时器标记位举行检测,一旦发明该标记位过期则关照地点办理单位采取地点,地点办理单位收到某一地点过期的信息后,将该地点挂在地点办理链表尾部,同时打扫该地点CAM中的SIP、 DIP信息,如许当同一IP提倡新的连接时就不会查找到过期信息。

    2.2.3 数据包映射单位

    为完成数据包的映射,该部分必要实现两个成果:ACK序列号转换和两边转换信息的存储。

    在TCP粘合进程中,由于TCP粘合体系送给客户真个ACK序列号和后端办事器送给客户真个ACK序列号不雷同,因此要举行ACK序列号的转换,同时要重新谋略数据包的TCP/IP校验和。 

    现假设客户端发送了恳求连接的SYN数据包,而客户端返回给客户真个SYN序列号为地点办理单位分派给该连接的地点A0,而当体系和办事器创建链接时办事器端返回的SYN序列号为A1,则根据这两个序列号可谋略差值A为:A=A0-A1。

    以后通讯的进程中,只要将办事器发送给体系的序列号加上A就可以或许转换成为体系送给客户真个序列号,如许就完成了办事器端向客户端发送数据的转换,反之就可以完成客户端向办事器发送数据的转换。

    对付数据包的校验和转换而言,由于校验和本质上是加法运算,以是只必要在原来的校验和底子上加上序列号之差(或减去一个差值)即可完成校验和的转换。 

    在同一个通讯进程中,ACK序列号转换、校验和的转换、提倡连接的SYN、GET数据包和定时器标记位等信息都必要存储,由于每个数据流必要存储的内容较多,单一的地点已经无法餍足存储请求,此处存储办理采取页面式的办理方法,将整个存储空间多少页面,每个数据流信息存入一个页面中,SSRAM的存储格局如图5所示。







3 性能阐发

该架构已在试验体系上实现,吸取端为两个GE口,相对付采取TCP粘合的应用代理办事器来说(此中代理办事器CPU Pentium IV 2GHz),详细的性能对比如表1所示。







从上表可以看出在最大连接数方面,在本体系中采取一个18Mbit的CAM,它可以或许提供的最大地点空间为288K×144bit,只能支持288K 的连接数,对付办事器的最大连接数来说,SYN和GET数据包必要颠末软件协议分析,因此当最大连接数到达582K时CPU的利用率将到达90%以上 [3]。无法再处理惩罚新的连接,从上述阐发中可以看出,由于受硬件资源的限定,硬件体系可以支持的最大连接数小于代理办事器,但是在实际的网络传输进程中,一个HTTP连连续续的时间一样平常为几百个毫秒,在硬件体系到达每秒21K的连接数时,可以或许遭受的一个HTTP最大连续时间为13秒,远宏大于实际HTTP 连接的连续时间,因此硬件体系支持的最大连接数是够用的,当代理办事器采取千兆网卡来吸取数据时,由于数据必要颠末上层协议分析,因此实际可以或许吸取的数据量只能到达300Mbps,假设每次均匀恳求512B,则代理办事器可以或许支持的最大每秒连接数约莫为7K,而当硬件体系事变在133MHz,内部采取 32bit总线传输时,整个体系的带宽到达4Gbit,同时体系内部采取流水线方法,可以或许线速处理惩罚1Gbps数据的吸取,假设均匀每次恳求512B,则硬件体系可以或许处理惩罚的每秒最大连接数到达21K,因此在单位时间内可以或许处理惩罚的连接数量会高于代理办事器。

随着HTTP访问量的不绝增大,对付访问数据包的分流力度请求越来越细,本文提出的基于硬件实现的TCP粘合体系,在TCP粘合技能的底子上,利用硬件的高速处理惩罚特性,可以到达2个GE口收发(2Gbps)的线速处理惩罚性能,同时可以或许较好的基于内容来区分数据流,从而克制了后端办事器数据的重新分发。