新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于FPGA的TCP粘合设计实现

基于FPGA的TCP粘合设计实现

作者: 时间:2011-08-15 来源:网络 收藏
2.2.3 数据包映射单元

本文引用地址://www.cghlg.com/article/150354.htm

  为完成数据包的映射,该部分需要两个功能:ACK序列号转换和双方转换信息的存储。

  在过程中,由于系统送给客户端的ACK序列号和后端服务器送给客户端的ACK序列号不相同,因此要进行ACK序列号的转换,同时要重新计算数据包的/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)的线速处理性能。同时能够较好地内容来区分数据流,从而避免了后端服务器数据的重新分发。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭