[发明专利]一种TCP流重组拼包方法和装置有效
| 申请号: | 201010175954.8 | 申请日: | 2010-05-14 |
| 公开(公告)号: | CN101841545A | 公开(公告)日: | 2010-09-22 |
| 发明(设计)人: | 阮元;杨卫兵;赵晓芳;陈明宇 | 申请(专利权)人: | 中国科学院计算技术研究所 |
| 主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L12/56 |
| 代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 祁建国;梁挥 |
| 地址: | 100080 北*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 tcp 重组 方法 装置 | ||
技术领域
本发明涉及TCP协议卸载引擎技术领域,特别是涉及一种TCP流重组拼包方法和装置。
背景技术
目前,虽然CPU性能每18个月翻一番,但仍然无法跟上网络速率每3年增加10倍的脚步。随着网络带宽激增,CPU资源被大量消耗,关键应用的服务质量难以保证,CPU处理能力成为网络端系统中的主要瓶颈。为此,人们提出了TCP协议卸载引擎(TCP Offload Engine,TOE)技术。
TCP协议卸载引擎技术的基本思想是将TCP/IP协议的全部处理或者部分处理转移到专门的硬件上进行。近几年新面市的高速网卡或多或少都会在网卡上集成一些TOE技术以减轻主机端处理网络数据的负担,其中普遍被采用的技术包括:校验和卸载(checksum offloading),中断缓和(interruptcoalescing),TCP段合并(TCP Segmentation Offload)等。TCP段合并是在主机发送数据时,不受最大传输单元(Maximum Transmission Unit,MTU)的限制,将一个远超MTU大小的IP包发给网卡,由网卡将IP包按照MTU的大小划分成可以在链路层传输的小包,并根据划分情况为每一个包添加新TCP/IP协议头,再将这些小包输出。由于大大减少了主机端发送的包数,采用TCP段合并技术可以有效的减少主机端发送数据的开销。
在接收端利用同样思想减少主机端接收数据开销的技术称作LRO(Largereceive offload),也就是网卡将收到的报文中属于同一条TCP流的拼到一起,生成一个大包上传给主机。虽然思想类似,但LRO实现起来要远比TSO复杂,一是因为网卡要将所有收到的报文按照其所属的TCP流缓存起来,才能完成TCP流拼包;二是由于网络传输的原因,接收端收到的报文可能出现乱序,需要在网卡上完成TCP流重组。处理这两个问题需要灵活的分配和释放报文缓冲区,这就给硬件实现LRO带来了麻烦。目前能够支持LRO的网卡多是采用了网络处理器的高端网卡,在网卡上通过运行软件实现LRO。但一般来说网络处理器性能有限,对于处理大规模并发流的高速网络数据往往会力不从心。
发明内容
本发明的目的在于提供一种TCP流重组拼包方法和装置。通过应用本发明,对于大多数报文的重组和拼包可以通过硬件实现,减少了主机端与网卡的中断开销和主机端TCP流重组拼包的开销。利用hash运算结果分配空闲缓冲块的方式可以减少流记录中存储缓冲区地址所需的空间,也适合硬件并发处理完成分配操作。
为实现本发明的目的而提供的一种TCP流重组拼包方法,包括下列步骤:
步骤100.报文处理模块接收当前处理报文,然后从TCP流记录表中找到该报文相关TCP流记录,将所述报文分成包头信息和负载数据两部分,并将所述负载数据写入报文负载数据先入先出队列;
步骤200.报文处理模块根据所述包头信息更新所述TCP流记录,并根据更新后的TCP流记录判断缓存当前处理报文是否需要申请新的单元缓冲块,若是,则执行步骤300;否则,执行步骤400;
步骤300.报文处理模块向缓冲区分配模块发送分配缓冲区请求,同时传递给缓冲区分配模块所述当前处理报文的四元组,缓冲区分配模块采用哈希函数和位图文件的方式为当前处理报文的负载数据分配空闲的单元缓冲块,返回空闲的单元缓冲块的地址索引;报文处理模块根据所述单元缓冲块的地址索引,更新所述TCP流记录得到新的TCP流记录;
步骤400.缓冲区数据管理模块获得所述新的TCP流记录,并从报文负载数据FIFO中读取所述负载数据,根据所述新的TCP流记录中指定的位置将所述负载数据写入负载数据缓冲区,完成重组和/或拼包,并将经过重组和/或拼包的TCP流数据上传给主机。
所述TCP流记录,记录了对一条TCP流进行重组拼包所需的信息,包括:客户端IP、服务器端IP、客户端端口、服务器端端口、TCP流状态,并为客户端至服务器端和服务器端至客户端两个方向各设置一个报文缓冲区管理字段,其中,每一个方向的报文缓冲区管理字段可分成以下几个部分:期待序列号,单元缓冲块有效位字段,单元缓冲块地址索引字段,期待序列号偏移字段,缓存数据段描述符,其中:
单元缓冲块有效位字段和单元缓冲块地址索引字段分别描述分配给这条TCP流的负载数据缓冲区的各个单元缓冲块的状态信息;
期待序列号偏移字段,记录这条TCP连接在一个方向上期待的下一个顺序报文要存储在负载数据缓冲区中的偏移;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010175954.8/2.html,转载请声明来源钻瓜专利网。





