本发明属于网络存储,具体涉及一种基于toe的spdk-nvme/tcp服务加速方法和服务器终端架构。
背景技术:
1、nvme(non-volatile memory express,非易失性内存标准)是一种用于闪存和固态硬盘的存储访问和传输协议。nvme协议定义了多种传输方式,其中nvme/tcp(non-volatile memory express over transmission control protocol)是一种基于tcp/ip的传输层协议。通过nvme/tcp协议,客户端可以像访问本地nvme设备一样读写、管理远程服务端中的nvme存储设备。与基于rdma(remotedirect memory access,远程直接内存访问)网络的nvme传输层相比,nvme/tcp协议可以运行在现有的以太网中,不需要改造网络基础设备,具有较好的通用性。
2、spdk(storage performance development kit,存储性能开发库)是一种运行在用户态的程序开发库,其实现了一个支持nvme/tcp协议的服务器。与内核版本的nvme/tcp服务器相比,spdk运行在用户空间,便于开发调试,并且可达到更高吞吐量、更低延迟,因此spdk正在被更多企业选用作为nvme/tcp服务器。
3、nvme/tcp协议基于tcp/ip进行网络通信。随着网络传输带宽的快速增长,nvme/tcp服务器在处理网络传输过程中消耗的cpu资源不断增加,抢占了上层应用程序的cpu资源,造成服务质量下降;另一方面,大量cpu资源被用于处理网络传输,造成了资源浪费。这在客户端高并发请求的场景下尤为明显。
4、目前,对于nvme/tcp服务器在高速传输场景下cpu占用率大幅提升导致服务质量显著下降的问题,没有行之有效的优化方案。因此,为优化nvme/tcp服务器在高速传输场景下的服务质量,加速服务响应,需要进一步研究针对nvme/tcp服务的加速方法。
技术实现思路
1、本发明提供了一种基于toe的spdk-nvme/tcp服务加速方法和服务器终端架构解决上述提到的技术问题,具体采用如下的技术方案:
2、一种基于toe的spdk-nvme/tcp服务加速方法,所述基于toe的spdk-nvme/tcp服务加速方法应用于nvme/tcp服务端,所述nvme/tcp服务端设有toe网络模块,所述基于toe的spdk-nvme/tcp服务加速方法包含:
3、通过所述toe网络模块处理nvme/tcp客户端与所述nvme/tcp服务端之间的网络传输。
4、进一步地,所述toe网络模块包含toe网卡设备、toe网络驱动和重定向socketapi;
5、所述toe网卡设备用于完成tcp/ip协议栈处理,将应答封装成tcp报文发送至网络,或者接收客户端请求并将解析后的数据放入接收缓冲区;
6、spdk-nvme/tcp服务调用所述重定向socket api接收客户端请求或发送服务端应答;
7、所述重定向socket api进入所述toe网络驱动完成相应逻辑处理。
8、进一步地,所述通过所述toe网络模块处理nvme/tcp客户端与所述nvme/tcp服务端之间的网络传输的具体方法为:
9、通过所述toe网络模块将所述nvme/tcp服务端的网络协议栈处理工作从cpu卸载至所述toe网卡设备。
10、进一步地,所述通过所述toe网络模块处理所述nvme/tcp客户端与所述nvme/tcp服务端之间的网络传输的具体方法包含:
11、所述toe网卡设备接收所述nvme/tcp客户端发送的tcp报文,进行解析,并将解析后的数据放入对应的接收缓冲区;
12、所述toe网络驱动通过epoll通知所述spdk-nvme/tcp服务当前tcp连接已接收到数据;
13、所述spdk-nvme/tcp服务调用所述重定向socket api接收所述nvme/tcp客户端的nvme/tcp请求;
14、所述重定向socket api进入所述toe网络驱动中读取接收缓冲区中的数据;
15、所述spdk-nvme/tcp服务进行后续数据解析和处理。
16、进一步地,所述spdk-nvme/tcp服务进行后续数据解析和处理的具体方法为:
17、所述spdk-nvme/tcp服务解析数据得到具体的nvme/tcp命令,将其进一步解析为nvme命令,随后向本地nvme存储设备下发该nvme命令,然后查看本地nvme存储设备已完成的nvme命令结果,最后将已完成的nvme命令结果封装为nvme/tcp回复发往所述nvme/tcp客户端。
18、进一步地,所述spdk-nvme/tcp服务将nvme/tcp回复发往所述nvme/tcp客户端的具体方法为:
19、所述spdk-nvme/tcp服务在工作线程中处理完请求后将回复内容作为服务端应答,调用所述重定向socket api发送至所述nvme/tcp客户端;
20、所述重定向socket api在所述toe网络驱动中处理具体的发送逻辑;
21、在所述toe网卡设备中将应答包装成tcp报文传输至网络,最终到达所述nvme/tcp客户端。
22、进一步地,所述重定向socket api在所述toe网络驱动中处理具体的发送逻辑包含:
23、将回复内容数据放入对应的发送缓冲区,将需要发送的数据地址和长度写入所述toe网卡设备的相应发送队列。
24、一种基于toe的spdk-nvme/tcp服务器终端架构,包含:toe网络模块、处理器和存储终端;
25、所述toe网络模块负责卸载nvme/tcp服务端的网络传输,降低网络传输过程中处理器的负载;
26、所述处理器负责运行spdk-nvme/tcp服务进程,实现接收客户端请求和发送服务端应答及nvme/tcp协议处理;
27、所述存储终端用于实现所述nvme/tcp服务端的本地nvme读写、管理功能。
28、本发明的有益之处在于所提供的基于toe的spdk-nvme/tcp服务加速方法和服务器终端架构,可以改善nvme/tcp服务器在高速传输场景下cpu占用率大幅提升导致其服务质量显著下降的问题,从而缓解处理器压力,提高服务质量并加速nvme/tcp服务响应。另一方面,使用更少的cpu资源即可达到相同的带宽,从而降低成本。
1.一种基于toe的spdk-nvme/tcp服务加速方法,其特征在于,所述基于toe的spdk-nvme/tcp服务加速方法应用于nvme/tcp服务端,所述nvme/tcp服务端设有toe网络模块,所述基于toe的spdk-nvme/tcp服务加速方法包含:
2.根据权利要求1所述的基于toe的spdk-nvme/tcp服务加速方法,其特征在于,
3.根据权利要求2所述的基于toe的spdk-nvme/tcp服务加速方法,其特征在于,
4.根据权利要求3所述的基于toe的spdk-nvme/tcp服务加速方法,其特征在于,
5.根据权利要求4所述的基于toe的spdk-nvme/tcp服务加速方法,其特征在于,
6.根据权利要求5所述的基于toe的spdk-nvme/tcp服务加速方法,其特征在于,
7.根据权利要求6所述的基于toe的spdk-nvme/tcp服务加速方法,其特征在于,
8.一种基于toe的spdk-nvme/tcp服务器终端架构,其特征在于,包含:toe网络模块、处理器和存储终端;
