一种硬件实现的多链接TCP数据重组系统的制作方法

文档序号:13641689阅读:168来源:国知局

本发明属于网络通信技术领域,特别涉及了一种硬件实现的多链接tcp数据重组系统。



背景技术:

随着计算机技术的不断发展和网络通信系统性能的不断提高,网络技术也得到了非常广泛的应用,同时,我们对网络的利用和需求也越来越高。传输控制协议(tcp协议)是应用最为广泛的一种可靠传输协议,它是面向链接的、点对点的运输层协议,可以实现可靠交付服务,保证tcp链接传输的数据无差错、不丢失、不重复。同时tcp协议允许通信双方的应用进程在任何时候都可以发送数据和接收数据,提供全双工通信的服务。随着网络技术应用的深化,网络传输数据的量也越来越大,单一的tcp数据包无法承载大量数据,因此,数据信息的分片传输成为了主流的方式。由于传输的物理路径的不唯一性,导致了接收到的tcp数据包可能会乱序,在多链接并行处理系统中,如何准确快速地实现tcp数据的排序重组是保证传输正确性的重要环节。

目前tcp数据重组的实现主要依靠软件的方式完成。随着网络需求的不断提高,网络数据流速成为衡量网络质量的重要标准。在今天光纤网络的时代,网络带宽资源已经不再是限制网络数据流速的瓶颈,而是处理器的速度。依附于cpu和操作系统的软件方式处理tcp数据重组,其速度很大程度上受制于cpu的处理速度,这样就导致了网络带宽资源的浪费,且无法提高网络数据流速。

为了提高网络带宽的利用率,实现网络数据的高速传输,同时降低cpu在网络传输中的资源开销,以硬件的方式实现tcp数据重组成为了研究的主要方向。



技术实现要素:

为了解决上述背景技术提出的技术问题,本发明旨在提供一种硬件实现的多链接tcp数据重组系统,克服现有基于软件的数据重组方法的缺陷,降低cpu在网络传输中的资源开销,提高网络带宽的利用率。

为了实现上述技术目的,本发明的技术方案为:

一种硬件实现的多链接tcp数据重组系统,包括tcp报头载荷分离模块、hash链表模块、tcp数据重组管理模块和大容量外部存储器控制模块;

所述tcp报头载荷分离模块接收来自以太网mac控制器的数据流和控制信号,根据tcp/ip协议格式提取并计算出本包数据的报头长度、载荷长度、四元组、序列号和hash命令信号,同时将报头数据写入报头暂存fifo中,将载荷数据写入载荷暂存fifo中,其中,四元组包括源端ip地址、目的端ip地址、源端端口号和目的端端口号;

所述hash链表模块接收tcp报头载荷分离模块产生的hash命令信号和四元组,根据四元组计算得到对应的hash值,再根据hash命令信号完成hash链表的添加、查找和删除,生成与四元组一一对应的链接号,将数据按链接进行管理;

所述tcp数据重组管理模块同时接收tcp报头载荷分离模块产生的序列号、载荷长度、hash命令信号以及hash链表模块产生的链接号,同时将序列号、载荷长度与对应链接下n个数据通道中的有效信息进行对比,若此数据可以与某个数据通道中信息匹配,则将本包数据添加到该通道中,若不能与任何通道的信息匹配,则使能一个新数据通道存储本包数据,输出重组数据的载荷长度和序列号。

所述大容量外部存储器控制模块接收tcp数据重组管理模块的输出信号,根据输出信号将载荷数据从载荷暂存fifo中读入模块内,并对数据进行拼接,将拼接好的数据通过写数据通道送入外部大容量存储器中进行存储,实现对以太网中乱序数据包的重组。

进一步地,所述tcp报头载荷分离模块包括计数控制模块、crc校验模块、mac帧头提取模块、ip报头提取模块、tcp报头提取模块、载荷提取模块、数据丢弃使能模块和报头信息格式生成模块;计数控制模块实时检测以太网mac控制器的控制信号,当有效数据输入时,计数控制模块启动,mac帧数据写入输入缓存fifo中,同时启动crc校验模块对输入的数据进行crc校验,判断传输中是否发生错误,若crc校验失败,则发送错误传输命令给数据丢弃使能模块,将本包数据丢弃;经过crc校验后的数据依次输入mac帧头提取模块、ip头提取模块和tcp头提取模块,根据tcp/ip协议的报头格式,依次提取并计算出报头长度、载荷长度、四元组、序列号和特征标志位,同时根据特征标志位的信息产生hash命令信号,之后数据输入载荷提取模块,由计数控制模块控制将载荷数据写入载荷暂存fifo中;数据丢弃使能模块收到crc校验的错误传输信号时,表示数据传输有误,会产生数据丢弃信号,将报头暂存fifo和载荷暂存fifo中数据读走将数据丢弃;当数据正确传输时,报头信息生成模块将hash命令、报头补零数量、序列号、载荷长度、数据长度以及链接号按照设定的格式打包到报头暂存fifo中。

进一步地,所述hash链表模块包括快速查找模块、hash函数模块、中心控制模块以及表头ram、表项ram和指针ram;所述快速查找模块中定义了m个内存单元,记录本次操作之前m次不同四元组输入的四元组和对应链接号;将输入快速查找模块的四元组与m个内存单元内记录的四元组的值进行对比,若输入该模块的四元组与其中1个内存单元内记录的四元组匹配,则直接输出该内存单元记录的链接号;若m个内存单元均不能匹配成功,则把输入的四元组送入hash函数模块,计算得到位宽为12bit的hash值,送入中心控制模块,由hash命令信号选择使能数据添加模块、数据查找模块和数据删除模块三者之一;被使能的模块首先根据hash值寻址表头ram,再根据表头ram中的数据寻址表项ram,若表项ram中的值与输入的四元组匹配,则输出表项ram地址为链接号;若不匹配,则根据表头ram中的值寻址指针ram,获得新的地址,再次寻址表项ram,重复上述操作,得到链接号。

进一步地,所述tcp数据重组管理模块包括信息采样模块、状态控制模块、重传判定模块、起始包重组模块、传输包重组模块、结束包重组模块和输出信息模块;信息采样模块对输入的序列号、载荷长度、链接号等信息进行采样;状态控制模块接收信息采样模块采集的信号,启动时序控制,按照时序使能重传判定模块、输出信息模块,并根据hash命令信号使能起始包重组模块、传输包重组模块和结束包重组模块三者之一,该使能模块访问对应链接下的n个数据通道,将输入信息与数据通道中信息进行比对,完成tcp数据重组。

进一步地,所述tcp数据重组管理模块的具体运行步骤如下:

(1)若信号采集模块检测到匹配成功信号,则对输入的序列号、载荷长度、链接号等信息进行采样,将采样结果送入状态控制模块;

(2)状态控制模块使能重传判定模块,并输入载荷长度、序列号和链接号;重传判定模块通过ram总线访问当前链接号下n个数据通道的信息;将输入的载荷长度和序列号与数据通道中有效信息进行对比,判断该序列号和载荷长度的数据是否属于通道内有效信息,若匹配成功,则启动重传信号,直接进入步骤7,否则进入步骤(3);

(3)根据输入的hash命令信号,若hash命令为建立,则进入步骤(4);若hash命令为查找,则进入步骤(5);若hash命令为删除,则进入步骤(6);

(4)通过ram总线,访问序列号ram、长度ram、有效位ram地址为链接号的内存单元;将序列号ram、长度ram的内存单元置零;有效位ram内存单元写入00000001,进入步骤(7);

(5)判断本包数据序列号与前一包数据是否满足连续性,即前一包的序列号加载荷长度等于本包序列号,若满足连续性,则直接通过ram总线将本包数据信息附加在前包数据所在通道中;若不满足连续性,则将本包数据信息同时与n个通道中有效通道内的信息进行两次比对,第一次判定通道内的信息的序列号和载荷长度和是否等于当前包的序列号,第二次判定前包的序列号与载荷长度的和是否等于通道内的信息的序列号,若第一次匹配成功,则用附加上本包载荷长度的通道信息替代原通道信息;若第二次匹配成功,则用本包序列号和附加上本包载荷长度的通道信息替代原通道信息;若两次都匹配成功,则将两个通道信息长度和本包数据载荷长度相加替代通道号较小的通道信息,同时将有效位ram中通道号较大的位置零;若匹配不成功,则根据序列号大小关系确定本包数据存储通道序号,并将其余通道序号依次加一,按序移位存储,进入步骤(7);

(6)通过ram总线,访问序列号ram、长度ram、有效位ram地址为链接号的内存单元;将序列号ram、长度ram、有效位ram的内存单元置零,进入步骤(7);

(7)将本包数据的链接号、序列号、载荷长度打包成写数据命令格式送入大容量外部存储器控制模块。

进一步地,所述大容量外部存储器控制模块包括数据写入命令解析模块、重传模块、数据写入拼接模块、数据读出命令解析模块、数据读出拼接模块和外部存储器接口模块;当tcp数据重组管理模块传来写入数据命令时,由数据写入命令解析模块分析命令,若属于重传数据,则使能重传模块,将数据从载荷缓存fifo中读走,丢弃数据;若不属于重传数据,则使能数据写入拼接模块从载荷缓存fifo中读走数据,按照外部存储器的位宽要求和写入命令的要求,将数据进行拼接并写入写数据fifo中,同时,外部存储器接口模块从写数据fifo中读走数据,按照写入命令要求将数据连续的写入对应地址中;数据读出命令解析模块解析外部输入的读数据命令,同时使能数据读出拼接模块和外部存储器接口模块,外部存储器接口模块按照要求通过读通道将数据写入读数据fifo中,由数据读出拼接模块从读数据fifo中读走数据,拼接成完整的2i位格式输出,其中i≥4。

采用上述技术方案带来的有益效果:

本发明采用了硬件描述语言来描述所需的功能指标,通过通道缓存技术和通道移位技术对数据包的相关信息进行处理,高效地完成了网络中乱序数据包的重组排序,同时利用hash链表对不同的对话链接进行管理,实现了多链接条件下处理网络数据包乱序的重组。本发明在不增加资源开销的条件下,极大地提高了网络传输速度和网络带宽利用率。相比软件实现方式,本发明效率更高、速度更快、存储规模更大、灵活性更好、使用性更强。

附图说明

图1是本发明整体结构图;

图2是本发明tcp报头载荷分离模块结构图;

图3是本发明hash链表模块结构图;

图4是本发明tcp数据重组管理模块结构图;

图5是本发明tcp数据重组管理模块的运行流程图;

图6是本发明大容量外部存储器控制模块结构图。

具体实施方式

以下将结合附图,对本发明的技术方案进行详细说明。

本发明设计了一种硬件实现的多链接tcp数据重组系统,其整体结构如图1所示,包括tcp报头载荷分离模块、hash链表模块、tcp数据重组管理模块和大容量外部存储器控制模块。

tcp报头载荷分离模块接收来自以太网mac控制器的数据流和控制信号,根据tcp/ip协议格式提取并计算出本包数据的报头长度、载荷长度、四元组、序列号、hash命令信号等,同时将hash链表模块输出的链接号、匹配成功信号、匹配失败信号反馈到tcp报头载荷分离模块中,便于打包报头信息,并且将报头数据写入报头暂存fifo中,将载荷数据写入载荷暂存fifo中。

hash链表模块接收tcp报头载荷分离模块产生的hash命令信号和数据包四元组信号,根据四元组计算得到对应的hash值,再根据hash命令信号完成hash链表的添加、查找和删除,生成与四元组一一对应的链接号。

tcp数据重组管理模块同时接收tcp报头载荷分离模块产生的序列号、载荷长度、hash命令信号等以及hash链表模块产生的链接号、匹配成功信号,利用硬件设计的并行性原理,同时将序列号、载荷长度与对应链接号下n个通道中有效通道内的信息进行对比,若此数据可以与某个通道中信息匹配,则将本包数据添加到该通道中,若不能与任何通道数据匹配,则使能一个新通道存储本包数据,输出包括重传信号、当前载荷长度、当前载荷序列号和链接号这些信息的格式命令。

大容量外部存储器控制模块接收tcp数据重组管理模块产生的包括重传标志信号、当前载荷长度,当前序列号等控制命令,根据控制信号将载荷数据从载荷暂存fifo中读入模块内,并对数据进行拼接,将拼接好的数据通过写数据通道送入外部存储器中进行存储,实现对以太网中乱序数据包的重组,同时该模块可以接收外界输入的包括读链接号、读长度、读序列号的格式命令,根据这些输入信息可以将对应的信息读取出来,发往应用层进行处理。

图2为本发明设计的tcp报头载荷分离模块的结构图。tcp报头载荷分离模块包括计数控制模块、crc校验模块、mac帧头提取模块、ip头提取模块、tcp头提取模块、载荷提取模块、数据丢弃使能模块和报头信息生成模块。计数控制模块实时的检测以太网mac控制器的控制信号,当有效数据输入时,计数控制模块启动,mac帧数据写入输入缓存fifo中,同时启动crc校验模块对输入的数据进行crc校验判断传输中是否发生错误,若crc校验失败,则发送错误传输命令给数据丢弃使能模块,将本包数据丢弃;经过crc校验后数据依次输入mac帧头提取模块、ip头提取模块、tcp头提取模块,根据tcp/ip协议的报头格式,依次提取并计算出报头长度、载荷长度、四元组、序列号、特征标志位等信息,同时根据特征标志位的信息产生hash命令信号。之后数据输入载荷提取模块,由计数控制模块控制将载荷数据写入载荷暂存fifo中。数据丢弃使能模块收到crc校验的错误传输信号或者hash链表模块输入的匹配失败信号时,表示数据传输有误,会产生数据丢弃信号,将报头暂存fifo和载荷暂存fifo中数据读走将数据丢弃。当数据正确传输时,报头信息生成模块将hash命令、报头补零数量、序列号、载荷长度、数据长度以及链接号按照一定的格式打包到报头暂存fifo中方便后续处理过程直接使用。

图3为本发明设计的一种硬件实现多链接tcp数据重组的装置中的hash链表模块的结构图。hash链表模块包括快速查找模块、hash函数模块、中心控制模块以及表头ram、表项ram、指针ram。所述快速查找模块中定义了m个结构体内存单元,记录本次操作之前m次不同四元组输入的四元组值和对应链接号。m取大于0的整数,m值越大,消耗资源越多,通常设置为4到8之间的整数。输入该模块的四元组首先进入快速查找模块,利用硬件并行处理的特点,与m个内存单元内四元组的值进行对比,若其中一个可以匹配,则直接输出其中记录的链接号,若m个内存单元都不能匹配成功,则把四元组送入hash函数模块,计算得到位宽为12bit的hash值,送入中心控制模块,由hash命令信号选择使能数据添加模块、数据查找模块、数据删除模块其中之一。被使能的模块首先通过ram总线,根据hash值寻址表头ram,再根据表头ram中的数据寻址表项ram,若表项ram中的值与输入四元组匹配,则输出表项ram地址为链接号;若不匹配,在根据表头ram中的值寻址指针ram,获得新的地址,再此寻址表项ram,重复上述操作,得到链接号。

图4为本发明设计的tcp数据重组管理模块的结构图。tcp数据重组管理模块包括信息采样模块、状态控制模块、重传判定模块、起始包重组模块、传输包重组模块、结束包重组模块、输出信息模块。信息采样模块对输入的序列号、载荷长度、链接号等信息进行采样;状态控制模块接收信息采样模块采集的信号,启动时序控制,按照时序使能重传判定模块、输出信息模块以及根据hash命令信号使能起始包重组模块、传输包重组模块、结束包重组模块三者之一,该模块通过ram总线访问对应链接下的n个数据通道,将输入信息与数据通道中信息进行比对,完成tcp数据重组。n取大于0的整数,通常取8到16之间的整数值。

图5为tcp数据重组管理模块的运行流程图,其具体步骤如下:

步骤1:若信号采集模块检测到匹配成功信号,则对输入的序列号、载荷长度、链接号等信息进行采样,将采样结果送入状态控制模块;

步骤2:状态控制模块使能重传判定模块,并输入载荷长度、序列号和链接号;重传判定模块通过ram总线访问当前链接号下n个数据通道的信息;利用硬件并行性原理,将输入的载荷长度和序列号与数据通道中有效信息进行对比,判断该序列号和载荷长度的数据是否属于通道内有效信息,若对比成功,则启动重传信号,直接进入步骤7,否则进入步骤3;

步骤3:根据输入的hash命令信号,若hash命令为建立,则进入步骤4;若hash命令为查找,则进入步骤5;若hash命令为删除,则进入步骤6;

步骤4:通过ram总线,访问序列号ram、长度ram、有效位ram地址为链接号的内存单元;将序列号ram、长度ram的内存单元置零;有效位ram内存单元写入00000001,进入步骤7;

步骤5:判断本包数据序列号与前一包数据是否满足连续性,即前一包的序列号加载荷长度等于本包序列号,若满足连续性,则直接通过ram总线将本包数据信息附加在前包数据所在通道中;若不满足连续性,则将本包数据信息同时与n个通道中有效通道内的信息进行两次比对,第一次判定通道内的信息的序列号和载荷长度和是否等于当前包的序列号,第二次判定前包的序列号与载荷长度的和是否等于通道内的信息的序列号,若第一次匹配成功,则用附加上本包载荷长度的通道信息替代原通道信息;若第二次匹配成功,则用本包序列号和附加上本包载荷长度的通道信息替代原通道信息;若两次都匹配成功,则将两个通道信息长度和本包数据载荷长度相加替代通道号较小的通道信息,同时将有效位ram中通道号较大的位置零;若匹配不成功,则根据序列号大小关系确定本包数据存储通道序号,并将其余通道序号依次加一,按序移位存储,进入步骤7;

步骤6:通过ram总线,访问序列号ram、长度ram、有效位ram地址为链接号的内存单元;将序列号ram、长度ram、有效位ram的内存单元置零,进入步骤7;

步骤7:将本包数据的链接号、序列号、载荷长度打包成写数据命令格式送入大容量外部存储器控制模块进行载荷数据拼接存储。

图6为大容量外部存储器控制模块的结构图。大容量外部存储器控制模块包括数据写入命令解析模块、重传模块、数据写入拼接模块、数据读出命令解析模块、数据读出拼接模块和外部存储器接口模块。当tcp数据重组管理模块传来写入数据命令时,由数据写入命令解析模块分析命令,若属于重传数据,则使能重传模块,将数据从载荷缓存fifo中读走,丢弃数据;若不属于重传数据,则使能数据写入拼接模块从载荷缓存fifo中读走数据按照外部存储器的位宽要求和写入命令的要求,将数据进行拼接写入写数据fifo中,同时,外部存储器接口模块从fifo中读走数据按照写入命令要求将数据连续的写入对应地址中。数据读出命令解析模块可以解析外部输入的读数据命令,同时使能数据读出拼接模块和外部存储器接口模块,外部存储器接口模块按照要求通过读通道将数据写入读数据fifo中,由数据读出拼接模块从fifo中读走数据拼接成完整的2i位格式输出。i取大于4的整数,根据实际所应用的网络环境决定,通常该位宽取32位或64位。

实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1