[发明专利]一种TCP流重组拼包方法和装置有效
| 申请号: | 201010175954.8 | 申请日: | 2010-05-14 |
| 公开(公告)号: | CN101841545A | 公开(公告)日: | 2010-09-22 |
| 发明(设计)人: | 阮元;杨卫兵;赵晓芳;陈明宇 | 申请(专利权)人: | 中国科学院计算技术研究所 |
| 主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L12/56 |
| 代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 祁建国;梁挥 |
| 地址: | 100080 北*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 tcp 重组 方法 装置 | ||
1.一种TCP流重组拼包方法,其特征在于,所述方法,包括下列步骤:
步骤100.报文处理模块接收当前处理报文,然后从TCP流记录表中找到该报文相关TCP流记录,将所述报文分成包头信息和负载数据两部分,并将所述负载数据写入报文负载数据先入先出队列;
步骤200.报文处理模块根据所述包头信息更新所述TCP流记录,并根据更新后的TCP流记录判断缓存当前处理报文是否需要申请新的单元缓冲块,若是,则执行步骤300;否则,执行步骤400;
步骤300.报文处理模块向缓冲区分配模块发送分配缓冲区请求,同时传递给缓冲区分配模块所述当前处理报文的四元组,缓冲区分配模块采用哈希函数和位图文件的方式为当前处理报文的负载数据分配负载数据缓冲区中空闲的单元缓冲块,返回空闲的单元缓冲块的地址索引;报文处理模块根据所述单元缓冲块的地址索引,更新所述TCP流记录得到新的TCP流记录;
步骤400.缓冲区数据管理模块获得所述新的TCP流记录,并从报文负载数据先入先出队列中读取所述负载数据,根据所述新的TCP流记录中指定的位置将所述负载数据写入负载数据缓冲区,完成重组和/或拼包,并将经过重组和/或拼包的TCP流数据上传给主机。
2.根据权利要求1所述的TCP流重组拼包方法,其特征在于,所述TCP流记录,记录了对一条TCP流进行重组拼包所需的信息,包括:客户端IP、服务器端IP、客户端端口、服务器端端口、TCP流状态,并为客户端至服务器端和服务器端至客户端两个方向各设置一个报文缓冲区管理字段,其中,每一个方向的报文缓冲区管理字段可分成以下几个部分:期待序列号,单元缓冲块有效位字段,单元缓冲块地址索引字段,期待序列号偏移字段,缓存数据段描述符,其中:
单元缓冲块有效位字段和单元缓冲块地址索引字段分别描述分配给这条TCP流负载数据缓冲区的各个单元缓冲块的状态信息;
期待序列号偏移字段,记录这条TCP连接在一个方向上期待的下一个顺序报文要存储在负载数据缓冲区中的偏移;
若干个缓存数据段描述符,每个缓存数据段描述符用于描述一段存放在负载数据缓冲区中的连续报文负载数据,由两个指针组成,两个指针分别指向该段负载数据在负载数据缓冲区的起始地址和结尾地址。
3.根据权利要求1所述的TCP流重组拼包方法,其特征在于,所述缓冲区分配模块将缓存空间划分成n个区域,每个区域中包括多个单元缓冲块,每个区域用一个位图文件记录该区域的使用情况,每一比特记录所述区域中的一个单元缓冲块是否已经分配;每一条TCP流在一个方向上的负载数据缓冲区由n个单元缓冲块构成,且一条TCP流在每个区域中只允许分配到一个单元缓冲块。
4.根据权利要求3所述的TCP流重组拼包方法,其特征在于,所述单元缓冲块的物理地址是由单元缓冲块地址索引字段Index和报文的四元组Tuples配合运算得到的,具体的过程为:预先设定好n个hash函数H(H[0],H[1]……H[n-1]),每个hash函数对应缓存空间的一个区域,Index[i]代表了负载数据缓冲区中的第i个单元缓冲块属于n个区域中的哪一个,H[Index[i]]代表了负载数据缓冲区中的第i个单元缓冲块是根据哪个hash函数得到的,则{Index[i],H[Index[i]](Tuples)}就是负载数据缓冲区中第i个单元缓冲块的物理地址基址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010175954.8/1.html,转载请声明来源钻瓜专利网。





