本发明属于数据传输的,特别是涉及一种基于内核旁路的高性能数据传输方法。
背景技术:
1、在当今数字时代,数据处理和存储的需求不断增长。随着网络带宽的提升和存储设备性能的不断增强,对数据传输和存储速度的要求也日益迫切。然而,传统的数据处理方式在面对高带宽网络和高速存储设备时,存在诸多问题。
2、典型地,现代网络设备已经普遍支持高达100g甚至400g的带宽,而固态硬盘(ssd)的读写速度只能到达10gbps左右。因此,传统的基于操作系统内核控制的网络数据传输及存储方法已经成为性能瓶颈。操作系统内核的处理会增加数据传输的延迟和降低吞吐量,导致系统无法充分利用现代高速网络和存储设备的性能优势。
3、因此,为了满足对高性能数据传输和存储的需求,迫切需要一种新的数据处理方式,并要求这种新方式需要能够充分利用现代网络设备和存储设备的性能,同时尽可能减少操作系统内核的干预,从而降低数据传输的延迟,提高数据处理的吞吐量。
技术实现思路
1、本发明的目的在于提供一种基于内核旁路的高性能数据传输方法,解决了现有的数据传输过程中操作系统内核的处理会增加数据传输的延迟和降低吞吐量,导致系统无法充分利用现代高速网络和存储设备的性能优势的问题。本发明的内核旁路技术通过绕过操作系统内核,直接将数据传输到用户空间的应用程序中进行处理,并直接存储到ssd中,从而减少了操作系统环节,进而满足现代高速网络和存储设备对性能的需求。
2、为解决上述技术问题,本发明是通过以下技术方案实现的:
3、本发明为一种基于内核旁路的高性能数据传输方法,具体包括以下步骤:
4、步骤s1、用户空间预先创建应用1和应用2;
5、步骤s2、网卡在收到数据包后,将其存储在网卡的接收队列中;此时,在用户空间的应用1内运行的pmd直接与网卡进行通信,轮询地从网卡的接收队列中读取数据包后,并存储到用户空间的应用1的缓冲区中;
6、步骤s3、使用memory map技术创建共享内存区域,并使用无锁环形队列缓冲区(lock-free ring buffer)来实现进程间数据的共享传输,实现应用1的缓冲区和应用2的缓冲区之间的数据交换,让应用2的缓冲区得到应用1的缓冲区内的数据;
7、步骤s4、应用2的缓冲区的数据通过应用2中的nvme driver直接控制和管理与相连接的储存设备,将应用2的缓冲区的数据写入到储存设备中。
8、作为优选,在步骤s3中使用memory map技术创建共享内存区域,并使用无锁环形队列缓冲区(lock-free ring buffer)来实现进程间数据传输的具体方式是:使用mmap系统调用将共享内存区域映射到应用1和应用2的地址空间中,在共享内存区域中创建无锁环队列缓冲区数据结构,作为应用1和应用2之间的数据交换通道;在应用1中,将从网卡接收的数据包放入无锁环队列缓冲区中;在应用2中,从无锁环队列缓冲区中读取从应用1的缓冲区获得的数据,最终实现共享内存以及传输。
9、作为优选,还包括以下步骤:通过增加一个控制器,控制器在每次传输数据之前来访问网卡和储存设备的性能,来分配存储通道数量。
10、作为优选,共享内存的完整顺序步骤如下:
11、步骤1.1:首先定义环形队列数据结构;
12、步骤1.2:然后调用mmap()函数创建共享内存区;
13、步骤1.3:使用ring_buffer_init()函数初始化环形队列;
14、步骤1.4:应用1向共享内存区写数据;
15、步骤1.5:应用2从共享内存区读数据;
16、步骤1.6:调用munmap()函数解除映射并释放共享内存区。
17、作为优选,在步骤s2中将网卡收到的数据传到应用空间的应用1的缓冲区中的具体步骤如下:
18、步骤1:初始化应用1环境;
19、步骤2:配置网卡,选择使用哪个网卡来接收数据;
20、步骤3:启动数据包接收,将指定的网络端口设置为接收模式;
21、步骤4:分配内存池rte_mempool用于存储接收数据包;
22、步骤5:配置接收队列rx_ring;
23、步骤6:使用接收队列rx_ring接收数据包,并用nb_rx记录收到的数据包数量;
24、步骤7:通过for循环将接受队列中的数据包存储到内存池rte_mempool;
25、步骤8:关闭网卡并释放资源。
26、本发明具有以下有益效果:本发明采用内核旁路技术不再依赖于操作系统内核进行中断处理,而且无需经过操作系统的内核,这样的设计可以提高数据传输的效率,并且避免了使用锁带来的性能开销。
1.一种基于内核旁路的高性能数据传输方法,其特征在于:具体包括以下步骤:
2.根据权利要求1所述的一种基于内核旁路的高性能数据传输方法,其特征在于:在步骤s3中使用memory map技术创建共享内存区域,并使用无锁环形队列缓冲区来实现进程间数据传输的具体方式是:使用mmap系统调用将共享内存区域映射到应用1和应用2的地址空间中,在共享内存区域中创建无锁环队列缓冲区数据结构,作为应用1和应用2之间的数据交换通道;在应用1中,将从网卡接收的数据包放入无锁环队列缓冲区中;在应用2中,从无锁环队列缓冲区中读取从应用1的缓冲区获得的数据,最终实现共享内存以及传输。
3.根据权利要求1所述的一种基于内核旁路的高性能数据传输方法,其特征在于:还包括以下步骤:通过增加一个控制器,控制器在每次传输数据之前来访问网卡和储存设备的性能,来分配存储通道数量。
4.根据权利要求2所述的一种基于内核旁路的高性能数据传输方法,其特征在于:共享内存的完整顺序步骤如下:
5.根据权利要求1所述的一种基于内核旁路的高性能数据传输方法,其特征在于:在步骤s2中将网卡收到的数据传到应用空间的应用1的缓冲区中的具体步骤如下: