[发明专利]一种软硬件结合实现TCP连接数据缓存的方法有效
申请号: | 201010611753.8 | 申请日: | 2010-12-17 |
公开(公告)号: | CN102075416A | 公开(公告)日: | 2011-05-25 |
发明(设计)人: | 刘朝辉;窦晓光;纪奎;张磊;白宗元;刘灿;李锋伟 | 申请(专利权)人: | 曙光信息产业(北京)有限公司 |
主分类号: | H04L12/56 | 分类号: | H04L12/56;H04L29/08 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 100084 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 软硬件 结合 实现 tcp 连接 数据 缓存 方法 | ||
技术领域
本发明涉及网络数据处理领域,具体涉及一种软硬件结合实现TCP连接数据缓存的方法。
背景技术
TCP卸载技术是把主机软件中的TCP/IP网络协议栈处理固化到网卡硬件中实现,以便降低系统CPU负载,增大网络IO带宽的技术。TCP卸载系统一般包括两部分功能,第一部分是TCP连接状态管理,用TCP连接表来维护每个TCP连接开始、数据传输、关闭的状态。第二部分是TCP数据管理,用来把乱序的TCP报文的数据进行重新排序,把TCP传输的数据提取出来提交给主机。
一般在TCP卸载系统中,硬件在进行TCP数据管理时,一般在TCP卸载系统中使用一个数据缓存器,把每个TCP连接的数据提取出来,用缓冲器完成TCP数据的重排序和拼接,然后以缓冲区为单位向主机系统提交。
在有些需要对TCP数据实时处理的系统中,主机不仅需要及时拿到TCP传输的数据,有时还需要把上一个数据包的末尾的数据和下一个数据包的开头的数据连起来处理,也就是说需要缓存上一个数据包的部分数据到下一个数据包中,如果在硬件中进行缓存,就需要硬件消耗大量的存储。
发明内容
本发明的目的是在软件中对指定tcp连接的当前报文的末尾数据缓存,避免硬件的增加存储成本。
一种软硬件结合实现TCP连接数据缓存的方法,步骤如下:
A、网卡接收报文,启动TCP卸载功能,对TCP连接状态管理,对发生乱序的TCP数据进行重排序,并以报文为单位上传至主机软件;
B、接口库为每个新建的TCP连接构造TCP节点结构,包括该TCP当前数据缓存和指向数据开始位置的指针;
C、接口库收到一个TCP连接的数据包时,根据该报文查找对应的TCP节点结构,然后提取出报文中包含的TCP数据,放入节点结构中当前报文的数据缓存区域;
D、应用软件需要缓存当前TCP报文中的数据时,则调用接口库提供的API,传入缓存数据的长度,接口库响应调用,在TCP节点中记录缓存数据长度,把当前TCP数据末尾的指定长度内容拷贝到TCP节点结构的数据缓存的预留空间中;
E、当该TCP节点的下一个报文到来时,接口库把报文中的TCP数据放入TCP节点结构中当前报文的数据缓存区域,并根据TCP节点中记录的上次缓存的上一个报文的数据长度,向前偏移当前TCP数据的指针,使指针指向上一个包的末尾数据,提交应用处理。
本发明的一种优选技术方案在于:所述主机软件主要是在应用软件API接口库中,对表示一个TCP连接的TCP节点结构进行扩展,在每个包TCP数据的内存之前,预留出一块缓存区域,用来缓存上一个包中的末尾数据,同时记录缓存数据的长度,并使用一个指针,表示当前要处理的数据的起始位置。
本发明的另一优选技术方案在于:TCP数据缓存包括两部分,一部分是当前报文的数据缓存,另一部分是根据系统预设的需要缓存的上一个包的末尾数据的大小,在当前报文数据缓存之前,预留的一块空间。
本发明不需要在TCP卸载系统的网卡硬件中缓存数据,降低网卡硬件成本。
附图说明
图1是本发明系统组成原理图
具体实施方式
本发明是一个软硬件结合的系统,硬件是可以对网络报文进行TCP连接管理和乱序重排的TCP卸载设备。软件主要是在应用软件API接口库中,对表示一个TCP连接的TCP节点结构进行扩展,在每个包TCP数据的内存之前,预留出一块缓存区域,用来缓存上一个包中的末尾数据,同时记录缓存数据的长度,并使用一个指针,表示当前要处理的数据的起始位置。
该发明的实现方法和过程如下:
(1)硬件网卡接收报文,进行TCP连接管理和排序。
网卡启动TCP卸载功能,对TCP连接状态管理,对发生乱序的TCP数据进行重排序,以报文为单位上传给主机软件。
(2)接口库为新建连接构造TCP节点结构。
接口库为每个新建的TCP连接构造TCP节点结构,其中包括该TCP连接当前数据的缓存和指向数据开始位置的指针。TCP数据缓存包括两部分,一部分是当前报文的数据缓存,另一部分是根据系统预设的需要缓存的上一个包的末尾数据的大小,在当前报文数据缓存之前,预留的一块空间。
(3)接口库从数据报文中提取TCP数据,更新TCP节点结构
当接口收到一个TCP连接的数据包时,首先根据该报文查找到对应的TCP节点结构,然后提取出报文中包含的TCP数据,放入TCP节点结构中当前报文的数据缓存区域。
(4)接口库在TCP节点中缓存数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010611753.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:内冷油道活塞盐芯位置检测装置
- 下一篇:一种节能环保空气压缩机