欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种基于FPGA的TOE数据拼接系统及方法独创技术12561字

一种基于FPGA的TOE数据拼接系统及方法

2023-02-27 12:30:46

一种基于FPGA的TOE数据拼接系统及方法

  技术领域

  本发明涉及数据处理技术领域,尤其涉及一种基于FPGA的TOE数据拼接系统及方法。

  背景技术

  由于TCP协议为用户提供了可靠传输功能,因此被广泛应用于各种网络应用中。相较传统的软件实现方案,TOE(TCPoffloadengine)采用硬件实现TCP/IP协议的处理,释放处理器资源的同时又能提高网络处理能力,而采用FPGA实现的TOE可以灵活满足各种定制化需求,目前被广泛应用于各种专用设备中。

  由于报文经过网络可能导致乱序、丢失、重复等现象,如附图1所示,因此TCP/IP协议栈需要对接收报文进行拼接整形,然后将完整正确的数据块上传应用层或者后续模块处理。数据流报文整形的效率极大的影响了TOE的处理性能和网络适应能力,如何实现高链接数下高速有效的数据拼接是问题的关键,目前主流CPU的内核都集成了TCP/IP协议栈,用户通过Socket套接字调用服务,实现数据的可靠传输;采用软件可以相对简单的实现数据拼接,但是在高链接数的时候会占用极大的处理器资源,且处理效率会显著降低。

  发明内容

  本发明的目的就在于为了解决上述问题而提供一种基于FPGA的TOE数据拼接系统,包括MAC处理单元、IP处理单元、连接管理单元、CAM表控制管理单元、数据拼接控制管理单元、窗口控制管理单元、指令控制单元、流控处理单元与存储单元;所述MAC处理单元IP处理单元分别与链接管理单元、存储单元相连;所述链接管理单元分别与CAM表控制单元、数据拼接控制管理单元相连;所述数据拼接管理单元与窗口控制管理单元、指令控制单元输入端相连;所述指令控制单元分别与流控处理单元、存储单元相连;

  所述数据拼接控制管理单元用于根据接收的数据报文,生成读写指令并发送至指令控制单元,同时将窗口大小数据发送至窗口控制管理单元,根据最大链接数、最小窗口大小以及最大缓存大小为每个链接分配缓存空间,记录当前每条流对应存储单元的缓存状态,包括期望的字节指针、缓存空洞数、数据块的起始编号以及当前数据块长度;

  所述指令控制单元用于读写控制与数据对齐,读写控制包括读写数据起始地址与长度。

  所述CAM表控制管理单元用于TCP每条链接的四元组与内部链接号的映射和反映射,四元组包括源IP、目的IP、源端口与目的端口。

  一种基于FPGA的TOE数据拼接方法,包括如下步骤:

  S1:接收数据报文,获取数据报文的起始字节编号和长度

  S2:对比数据报文的起始字节编号和期望字节编号,若起始字节编号和期望字节编号相等,则数据报文为期望的顺序报文,期望字节编号更新为期望字节编号与数据报文的长度之和,转S4;若起始字节编号大于期望字节编号则数据报文为乱序报文,转S3;否则若起始字节编号小于期望字节编号,丢弃重复数据报文;

  S3:比较数据报文信息与缓存数据块信息:

  S31:若数据报文的起始字节编号与数据报文的长度之和等于缓存数据块起始字节编号,则该数据报文能够在缓存数据块前面拼接成新的数据块;

  刷新缓存数据块信息,更新缓存数据块起始字节编号等于数据报文的起始字节编号,缓存数据块长度更新为缓存数据块长度与数据报文的长度之和;

  S32:若数据报文的起始字节编号与数据报文的长度之和大于缓存数据块起始字节编号,则该数据报文与缓存数据块能拼接成新的数据块,且缓存数据块的前面被覆盖;

  刷新缓存数据块信息,更新缓存数据块的起始字节编号等于数据报文的起始字节编号,缓存数据块长度更新为缓存数据块长度与缓存数据块的起始字节编号之和减去数据报文的起始字节编号;

  S33:若数据报文的起始字节编号等于数据缓存块起始字节编号与缓存数据块起长度之和,则该数据报文能在缓存数据块后面拼接成新的数据块;

  刷新缓存数据块信息,更新缓存数据块的起始字节编号等于数据报文的起始字节编号,缓存数据块长度更新为缓存数据块长度与缓存数据块起始字节编号之和减去数据报文的起始字节编号;

  S34:若数据报文的起始字节编号小于数据缓存块起始字节编号与缓存数据块长度之和,则该数据报文与缓存数据块能拼接成新的数据块,且缓存数据块的后面被覆盖;

  刷新缓存数据块信息,缓存数据块起始字节编号不变,缓存数据块长度更新为数据报文长度与缓存数据块起始字节编号之和减去数据报文的起始字节编号;

  S35:如果数据报文与缓存数据块无法拼接,则判断当前是否有缓存空洞,若是则缓存该数据报文,并更新数据块状态表,否则丢弃该数据报文,并向TOE发送端通告快速重传;

  S4:判断数据报文信息与所有缓存数据块信息是否比较完,若是则缓存空洞被填满,转S5,否则比较下一个缓存数据块,转S3;

  S5:更新缓存期望字节编号,判断缓存数据块是否为期望的数据块,若是则释放数据块长度为期望字节编号减去初始期望字节编号,释放数据块起始地址为更新后的期望字节编号减去更新前的期望字节编号;释放数据块起始地址为更新前的期望字节编号;否则,不释放。

  本发明的有益效果在于:本发明利用FPGA大规模逻辑资源和并行处理的优点,结合大规模链接下的数据拼接处理,提高了TOE对于丢包、重复、乱序报文的处理效率,提升网络适应性;此外,针对概率很低的完全覆盖拼接则采用重传的方式,降低设计难度的同时保证了拼接效率。

  附图说明

  图1是数据报文传输示意图;

  图2是本发明的系统图;

  图3是本发明的流程图;

  图4是数据排列示意图;

  图5数据块前拼接的示意图;

  图6是数据块前被覆盖的示意图;

  图7是数据块后拼接的示意图;

  图8是数据块后被覆盖的示意图;

  图9是数据块完全覆盖的示意图。

  图中:A-期望字节编号;B-缓存数据块起始字节编号;H0、H1、H2-缓存空洞;P2、P3、P4、P5、P6、P7、P8、P10-字节编号。

  具体实施方式

  下面结合附图对本发明作进一步说明:

  如附图2所示,本发明一种基于FPGA的TOE数据拼接系统,包括MAC处理单元、IP处理单元、连接管理单元、CAM表控制管理单元、数据拼接控制管理单元、窗口控制管理单元、指令控制单元、流控处理单元与存储单元;所述MAC处理单元IP处理单元分别与链接管理单元、存储单元相连;所述链接管理单元分别与CAM表控制单元、数据拼接控制管理单元相连;所述数据拼接管理单元与窗口控制管理单元、指令控制单元输入端相连;所述指令控制单元分别与流控处理单元、存储单元相连;

  所述数据拼接控制管理单元用于根据接收的数据报文,生成读写指令并发送至指令控制单元,同时将窗口大小数据发送至窗口控制管理单元,根据最大链接数、最小窗口大小以及最大缓存大小为每个链接分配缓存空间,记录当前每条流对应存储单元的缓存状态,包括期望的字节指针、缓存空洞数、数据块的起始编号以及当前数据块长度;

  所述指令控制单元用于读写控制与数据对齐,读写控制包括读写数据起始地址与长度。

  所述CAM表控制管理单元用于TCP每条链接的四元组与内部链接号的映射和反映射,四元组包括源IP、目的IP、源端口与目的端口。

  进一步的,所述数据拼接管理单元设置有RAM存储单元,用于记录当前每条流对应存储单元中的缓存状态。

  进一步的,所述缓存状态包括期望的字节指针、有效空洞数、起始指针与当前数据块长度。

  一种基于FPGA的TOE数据拼接方法,包括如下步骤:

  S1:接收数据报文,获取数据报文的起始字节编号和长度

  S2:对比数据报文的起始字节编号和期望字节编号,若起始字节编号和期望字节编号相等,则数据报文为期望的顺序报文,期望字节编号更新为期望字节编号与数据报文的长度之和,转S4;若起始字节编号大于期望字节编号则数据报文为乱序报文,转S3;否则若起始字节编号小于期望字节编号,说明存在重复数据报文,丢弃重复数据报文;

  S3:比较数据报文信息与缓存数据块信息:

  如附图5所示,S31:若数据报文的起始字节编号与数据报文的长度之和等于缓存数据块起始字节编号,则该数据报文能够在缓存数据块前面拼接成新的数据块;

  刷新缓存数据块信息,更新缓存数据块起始字节编号等于数据报文的起始字节编号,缓存数据块长度更新为缓存数据块长度与数据报文的长度之和;

  如附图6所示,S32:若数据报文的起始字节编号与数据报文的长度之和大于缓存数据块起始字节编号,则该数据报文与缓存数据块能拼接成新的数据块,且缓存数据块的前面被覆盖;

  刷新缓存数据块信息,更新缓存数据块的起始字节编号等于数据报文的起始字节编号,缓存数据块长度更新为缓存数据块长度与缓存数据块的起始字节编号之和减去数据报文的起始字节编号;

  如附图7所示,S33:若数据报文的起始字节编号等于数据缓存块起始字节编号与缓存数据块起长度之和,则该数据报文能在缓存数据块后面拼接成新的数据块;

  刷新缓存数据块信息,更新缓存数据块的起始字节编号等于数据报文的起始字节编号,缓存数据块长度更新为缓存数据块长度与缓存数据块起始字节编号之和减去数据报文的起始字节编号;

  如附图8所示,S34:若数据报文的起始字节编号小于数据缓存块起始字节编号与缓存数据块起长度之和,则该数据报文与缓存数据块能拼接成新的数据块,且缓存数据块的后面被覆盖;

  刷新缓存数据块信息,缓存数据块起始字节编号不变,缓存数据块长度更新为数据报文长度与缓存数据块起始字节编号之和减去数据报文的起始字节编号;

  S35:如果数据报文与缓存数据块无法拼接,则判断当前是否有缓存空洞,若是则缓存该数据报文,并更新数据块状态表,否则丢弃该数据报文,并向TOE发送端通告快速重传;

  S4:判断数据报文信息与所有缓存数据块信息是否比较完,若是,转S5,否则比较下一个缓存数据块,转S3;

  S5:更新缓存期望字节编号,判断缓存数据块是否为期望的数据块,若是则释放数据块长度为期望字节编号减去初始期望字节编号,释放数据块起始地址为更新后的期望字节编号减去更新前的期望字节编号;释放数据块起始地址为更新前的期望字节编号;否则,不释放。

  如附图9所示,缓存数据块的P3被完全覆盖,丢弃重复的数据报文P3数据报文与缓存数据块拼接成新的数据块,并向TOE发送端通告快速重传P4部分。

  本发明利用FPGA大规模逻辑资源和并行处理的优点,结合大规模链接下的数据拼接处理,提高了TOE对于丢包、重复、乱序报文的处理效率,提升网络适应性;此外,针对概率很低的完全覆盖拼接则采用重传的方式,降低设计难度的同时保证了拼接效率。

  本发明的技术方案不限于上述具体实施例的限制,凡是根据本发明的技术方案做出的技术变形,均落入本发明的保护范围之内。

《一种基于FPGA的TOE数据拼接系统及方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)