一种软硬件结合实现tcp连接数据缓存的方法

文档序号:7897618阅读:584来源:国知局
专利名称:一种软硬件结合实现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节点中缓存数据。应用软件需要缓存当前TCP报文中的数据时,则调用接口库提供的API,传入缓存 数据的长度。接口库响应调用,在TCP节点中记录缓存数据长度,把当前TCP数据末尾的指 定长度的内容,拷贝到TCP节点结构的数据缓存的预留空间中。(5)接口库使用缓存数据拼接报文。当该TCP节点的下一个报文到来时,接口库把报文中的TCP数据放入TCP节点结 构中当前报文的数据缓存区域,并根据TCP节点中记录的上次缓存的上一个报文的数据长 度,向前偏移当前TCP数据的指针,使指针指向上一个包的末尾数据,提交应用处理。
权利要求
1.一种软硬件结合实现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数据的指针,使指针指向上一个包的末尾数据,提交应用处理。
2.如权利要求1所述一种软硬件结合实现TCP连接数据缓存的方法,其特征在于所 述主机软件主要是在应用软件API接口库中,对表示一个TCP连接的TCP节点结构进行扩 展,在每个包TCP数据的内存之前,预留出一块缓存区域,用来缓存上一个包中的末尾数 据,同时记录缓存数据的长度,并使用一个指针,表示当前要处理的数据的起始位置。
3.如权利要求2所述一种软硬件结合实现TCP连接数据缓存的方法,其特征在于TCP 数据缓存包括两部分,一部分是当前报文的数据缓存,另一部分是根据系统预设的需要缓 存的上一个包的末尾数据的大小,在当前报文数据缓存之前,预留的一块空间。
全文摘要
本发明提供了一种软硬件结合实现TCP连接数据缓存的方法。硬件网卡接收报文,进行TCP连接管和排序,接口库为新建连接构造TCP节点结构,在每个包TCP数据的内存之前,预留出一块缓存区域,用来缓存上一个包中的末尾数据,同时记录缓存数据的长度,并使用一个指针,表示当前要处理的数据的起始位置。接口库收到tcp数据包后,从数据报文中提取TCP数据,更新TCP节点结构,如果应用需要缓存报文,接口库通过数据拷贝和移动指针在TCP节点中缓存数据,当下一个tcp数据包达到后,接口库使用缓存数据拼接前后两个报文。本发明不需要在TCP卸载系统的网卡硬件中缓存数据,降低网卡硬件成本。
文档编号H04L29/08GK102075416SQ20101061175
公开日2011年5月25日 申请日期2010年12月17日 优先权日2010年12月17日
发明者刘朝辉, 刘灿, 张磊, 李锋伟, 白宗元, 窦晓光, 纪奎 申请人:曙光信息产业(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1