用于提升应用网络性能的TOE加速系统

文档序号:35707153发布日期:2023-10-12 07:59阅读:48来源:国知局
用于提升应用网络性能的TOE加速系统

本发明属于网络,具体涉及一种用于提升应用网络性能的toe加速系统。


背景技术:

1、现代科技的加速革新带来了数据量的飞速增长,海量的数据信息贯穿于日常生活工作的各个方面,对数据传输带宽提出了更高的要求。以太网是如今应用最为广泛的数据传输网络,在以太网通信中,网络协议栈的处理通常是由cpu完成,而随着网络传输带宽的不断增加,处理器的资源开销愈加严重,逐渐成为了高速网络传输中的瓶颈。

2、tcp协议卸载引擎(tcp offload engine,toe)技术通过把网络协议栈的处理工作从cpu卸载到专门的处理单元上,如网卡(nic),fpga,asic等,来减少cpu占用和绕过操作系统,从而简化网络协议的处理路径,缓解处理器的压力,是tcp加速技术研究中的一个重要方向。

3、主流的toe技术可以分为chimney toe和full offload toe,前者是一种半卸载技术,只将最耗费cpu资源的数据传输路径卸载,而对于连接建立、断开的维护等功能继续由操作系统内核处理;后者则需要将整个网络协议栈需要使用的功能完全由硬件实现。比较来说,采用半卸载的方式实现toe设计难度较小,与上层应用程序的兼容性更好;而使用全卸载的方式,在应用程序开发时需要使用自定义的api接口以完成网络的相应功能。

4、目前,linux操作系统对toe技术并没有提供良好的支持与规范。与通用的linuxtcp/ip协议栈相比,各类toe解决方案都是专有的,实际部署比较复杂,对应用程序的支持也十分有限。且大多toe方案都需要修改网络协议栈源码,对系统的稳定性和可继承性有一定风险。因此,如何在不修改操作系统内核的前提下快速部署,于应用程序中方便快捷地使用toe加速网络传输成为了一个急需解决的问题,在网络技术领域具有重要的意义。


技术实现思路

1、本发明提供了一种用于提升应用网络性能的toe加速系统解决上述提到的技术问题,具体采用如下的技术方案:

2、一种用于提升应用网络性能的toe加速系统,包含:接口替换模块、toe网络驱动和toe网卡设备;

3、所述接口替换模块设置于主机的用户态,所述接口替换模块用于判断收发数据相关接口是否需要进行tcp卸载,对需要toe处理的,进入所述toe网络驱动进行相应处理,否则按函数原路径进行系统调用进入内核协议栈;

4、所述toe网络驱动设置于主机的内核态,所述toe网络驱动用于处理由所述接口替换模块下发的收发命令,维护对应的发送/接收任务队列,并控制所述toe网卡设备完成相应操作;

5、所述toe网卡设备设置于fpga中,所述toe网卡设备用于处理收发数据报文过程中涉及的协议工作。

6、进一步地,所述接口替换模块通过钩子函数替换应用程序中关于数据收发的套接字接口。

7、进一步地,所述toe网卡设备处理的协议工作包括乱序传输、定时器管理、流量控制和拥塞控制和协议的封装解析。

8、进一步地,所述toe网络驱动通过寄存器和中断与所述toe网卡设备进行交互,完成发送/接收任务的控制,旁路报文的透传以及硬件状态的配置。

9、进一步地,所述接口替换模块根据接口参数的套接字句柄获取本地ip地址,在所述toe网络驱动生成的虚拟网口ip哈希表中进行查询,用以判断是否需要调用所述toe网络驱动实现tcp卸载。

10、进一步地,所述toe网络驱动基于任务命令而不是tcp报文对所述toe网卡设备进行数据收发控制,如下:

11、在所述toe网卡设备中为每条tcp连接设置发送/接收环形任务队列;

12、每次调用数据发送接口会被视作下达一次发送命令至硬件发送任务队列,命令中包含数据地址和长度;

13、每次调用数据接收接口会从由数个接收命令拼成的接收缓冲区中读取对应长度的数据。

14、进一步地,所述toe网络驱动包含硬件配置单元、旁路处理单元和数据收发单元;

15、所述硬件配置单元在驱动挂载时初始化所述toe网卡设备,包括寄存器区域映射,虚拟网口配置,中断管理,fpga硬件逻辑初始化配置;

16、所述旁路处理单元用于将不需要tcp卸载的低速协议报文交由内核协议栈进行处理,同时把内核协议栈需要发送的报文通过所述硬件配置单元发送到所述toe网卡设备,所述旁路处理单元进行tcp连接状态同步维护以便在不同阶段正确配置所述toe网卡设备硬件,所述旁路处理单元进行arp应答解析以更新维护所述toe网卡设备内部的arp表;

17、所述数据收发单元用于处理接口替换模块发送的命令,所述数据收发单元维护toe网卡设备中长度为256的发送/接收环形任务队列,将要发送数据的物理地址和长度等信息通过命令寄存器写入发送任务队列,网卡硬件逻辑按顺序尝试完成发送队列里的命令,在接收到数据时,网卡硬件逻辑会依次将数据放入接收任务队列中命令指定的地址。

18、进一步地,所述数据收发单元处理发送相关接口的方法为:

19、s200:预处理,判断连接信息是否正常、发送大小是否小于发送缓冲区;

20、s201:预处理通过符合要求后,主动维护一次发送队列,清理已完成命令;

21、s202:计算缓冲区剩余大小,通过驱动中维护的发送任务队列的头尾偏移地址和大小结合缓冲区总大小进行计算,当缓冲区剩余大小大于要发送数据的大小时进入s203,否则若设定了发送选项为非阻塞,则直接返回错误;

22、s203:将应用数据拷贝至发送缓冲区对应地址,当设定为零拷贝时,跳过s203步骤并校验数据地址是否正确;

23、s204:通过所述硬件配置单元将数据地址和大小写入所述toe网卡设备的发送队列,并同步维护驱动中模拟的发送队列。

24、进一步地,所述数据收发单元处理接收相关接口的方法为:

25、s210:预处理,判断连接信息是否正常,当接收选项设置为msg_waitall时,还需要判断本次接收大小是否小于可以用于接收的最大值,即总接收缓冲区大小减去已确认未释放部分;

26、s211:根据接收窗口计算方式计算接收缓冲区中已收到的数据大小,当已接收大小大于本次接收命令大小,或者接收大小大于0且没有设置msg_waitall选项时进入s212步骤,当接收大小为零且连接已断开或者接收为非阻塞模式时退出接收并返回相应错误值,当为阻塞模式时,继续重复s211步骤,计算已接收数据大小直至符合退出条件;

27、s212:将接收缓冲区中收到的数据拷贝至应用指定地址,当设定为零拷贝时,跳过s212步骤并校验数据地址是否正确;

28、s213:维护接收窗口,右移接收缓存区左边界,如果左边界跨过一个或多个接收命令,则向所述toe网卡设备新写入相应个数的接收命令以保持缓存区大小不变。

29、进一步地,用多个地址连续的等长接收命令拼接作为接收缓冲区来模拟传统的tcp接收窗口,并在每次读出数据时动态维护接收窗口,由所述toe网卡设备将来自传输网络的数据放入指定接收缓冲区地址。

30、本发明的有益之处在于所提供的用于提升应用网络性能的toe加速系统,可以在不修改操作系统内核的前提下快速部署,于各种基于tcp套接字实现的应用程序中方便快捷地使用toe加速网络传输,提升应用的网络性能。

31、本发明的有益之处还在于所提供的用于提升应用网络性能的toe加速系统,使用网卡驱动软件管理网络数据的收发,并保留内核协议栈对于tcp连接建立与断开的控制能力,使应用程序能够使用正常的套接字接口管理tcp连接。

32、本发明的有益之处还在于所提供的用于提升应用网络性能的toe加速系统,将数据传输路径相关的tcp协议处理卸载到toe网卡硬件,使用fpga逻辑进行处理,不仅有助于发挥网卡高速传输的性能,提高网络传输带宽,减少传输时延,而且能够大幅降低cpu占用率,缓解处理器压力。

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