本发明属于通信,涉及一种基于rdma的工控系统数据传输方法和装置。
背景技术:
1、在现有的网络通信领域中,tcp(传输控制协议)和udp(用户数据报协议)是两种被广泛应用的传输层协议,它们负责在源端和目的端之间建立连接并传输数据。然而,这两种协议在数据封装和解封装过程中存在着一定的性能瓶颈。
2、在数据发送过程中,源应用层生成的数据首先需要在网络协议栈中逐层向下进行封装。具体来说,数据首先被封装到传输层(tcp或udp),然后依次经过网络层、数据链路层和物理层,每一层都会在数据上附加自己的头部信息,以标识该层所需的处理信息。这个过程涉及到大量的内存拷贝操作,这些操作需要cpu的频繁参与,从而占用了大量的cpu资源。
3、同样地,在数据接收过程中,目的端接收到的数据需要从物理层开始逐层向上进行解封装。每一层都需要解析自己头部信息,并将数据传递给上一层,直到数据到达应用层。这个过程同样涉及到大量的内存拷贝和cpu操作,进一步增加了cpu的负担。
4、特别是针对工控系统,这种数据发送和封装的过程在工控系统中可能会带来额外的延迟和开销,特别是在网络条件不稳定或移动设备频繁切换网络的情况下,这种传统的封装和解封装方式会导致cpu资源的严重占用,从而影响了整个系统的性能和响应速度。
技术实现思路
1、本发明的目的在于克服上述现有技术的缺点,提供一种基于rdma的工控系统数据传输方法和装置,以解决现有技术中tcp或udp用于工控系统中传输数据时,cpu资源会被严重占用的问题。
2、为达到上述目的,本发明采用以下技术方案予以实现:
3、基于rdma的工控系统数据传输方法,数据输出过程包括:
4、发送方中的应用程序提交工作请求;
5、发送方将工作请求转换为工作队列;所述工作队列被注册和缓存在数据缓存区中,所述数据缓存区位于发送方的rdma传输引擎中,所述工作队列被注册和缓存过程中,通过内存注册区域缓存;
6、发送方将工作队列发送至rdma网卡,所述rdma网卡用于将数据缓存后发送至接收方,所述接收方前期通过套接字与发送方建立有链接;
7、发送方接收确认字符信号,所述确认字符信号为接收方存储数据后发出的信号。
8、本发明的进一步改进在于:
9、优选的,所述工作队列包括源内存地址、目的内存地址、数据长度和密钥。
10、优选的,所述发送方将工作队列发送至rdma网卡的具体过程为,发送方网卡将工作队列中元素的虚拟地址转换为物理地址,基于物理地址,从内存中获得待发送数据,将待发送数据组装为数据包后缓存在发送方网卡中,将缓存在发送方网卡中的数据发送至rdma网卡。
11、优选的,接收方前期通过socket与发送方建立链接后,交换同步信息;所述同步信息包括gid、qpn、va和r_key。
12、优选的,所述通过内存注册区域缓存的过程为:发送方调用api或系统注册需要被rdma硬件访问的内存区。
13、基于rdma的工控系统数据传输装置,包括:
14、请求模块,用于控制发送方中的应用程序提交工作请求;
15、转换模块,用于控制发送方将工作请求转换为工作队列;所述工作队列被注册和缓存在数据缓存区中,所述数据缓存区位于发送方的rdma传输引擎中,所述工作队列被注册和缓存过程中,通过内存注册区域缓存;
16、发送模块,用于控制发送方将工作队列发送至rdma网卡,所述rdma网卡用于将数据缓存后发送至接收方,所述接收方前期通过套接字与发送方建立有链接;
17、第一接收模块,用于控制发送方接收确认字符信号,所述确认字符信号为接收方存储数据后发出的信号。
18、基于rdma的工控系统数据传输方法,数据接收过程包括:
19、接收方从rdma网卡中接收数据包;所述数据包为rdma网卡从发送方获得,所述发送方中设置有rdma传输引擎,所述rdma传输引擎中的工作队列被注册和缓存时,通过内存注册区域缓存;所述接收方前期通过套接字与发送方建立有链接;
20、接收方解析数据包;
21、接收方将数据包用于存储在数据缓存区中,存储过程中通过内存注册区域缓存;
22、接收方发送确认字符信号至发送方。
23、优选的,接收方解析数据包的具体过程为,接收方解析接收到数据包的虚拟目的地址,将解析后的虚拟目的地址转换为本地物理地址,将解析的数据存储在指定区域。
24、优选的,所述接收方通过signaled模式将数据包存储在指定内存区域中。
25、基于rdma的工控系统数据传输装置,包括:
26、第二接收模块,用于控制接收方从rdma网卡中接收数据包;所述数据包为rdma网卡从发送方获得,所述发送方中设置有rdma传输引擎,所述rdma传输引擎中的工作队列被注册和缓存时,通过内存注册区域缓存;所述接收方前期通过套接字与发送方建立有链接;
27、解析模块,用于控制接收方解析数据包;
28、存储模块,用于控制接收方将数据包用于存储在数据缓存区中;
29、反馈模块,用于控制接收方发送确认字符信号至发送方。
30、与现有技术相比,本发明具有以下有益效果:
31、本发明公开了一种基于rdma的工控系统数据传输方法,该方法在发送方和接收方之间的数据信息传输过程使用了rdma技术,实现了kernel-bypass和零拷贝的数据传输方式。使得处于用户态的程序能够直接通过内存进行通信,无需经过操作系统内核的干预。这种直接内存访问的方式极大地减少了数据传输过程中不必要的开销,如内存复制和上下文切换等,从而显著提升了数据传输的效率和速度。
32、本发明在rdma通信中选择了单边通信方式。相较于传统的双边通信方式,单边通信只产生一次消息传递,并且无需cpu的参与。这种通信方式不仅减少了cpu的负担,还进一步提高了数据传输的实时性和性能。在电力广域保护系统中,这种高性能的通信方式对于确保测量数据的实时上传、执行报文的准确下发以及各区域间的高效信息交换至关重要,从而保障了电力系统的安全稳定运行。
33、此外,针对rdma操作中内存注册对性能的影响,本发明采用了mrrc(内存注册区域缓存)技术来减少内存注册的开销。在rdma操作中,网卡需要直接写入或读取用户指定的缓冲区,因此需要在每次rdma操作之前注册这些内存。然而,内存注册操作本身会带来一定的开销,并可能影响rdma的性能。通过应用mrrc技术,本发明能够重用已经注册过的内存资源,减少了内存注册的次数和开销,从而提高了rdma的整体性能。
34、进一步的,本发明通过应用rdma技术和单边通信方式,以及采用mrrc技术减少内存注册开销,显著提升了电力广域保护系统的通信性能。这不仅提高了数据传输的效率和速度,还减少了cpu的负担,增强了系统的实时性和稳定性。
1.基于rdma的工控系统数据传输方法,其特征在于,数据输出过程包括:
2.根据权利要求1所述的基于rdma的工控系统数据传输方法,其特征在于,所述工作队列包括源内存地址、目的内存地址、数据长度和密钥。
3.根据权利要求1所述的基于rdma的工控系统数据传输方法,其特征在于,所述发送方将工作队列发送至rdma网卡的具体过程为,发送方网卡将工作队列中元素的虚拟地址转换为物理地址,基于物理地址,从内存中获得待发送数据,将待发送数据组装为数据包后缓存在发送方网卡中,将缓存在发送方网卡中的数据发送至rdma网卡。
4.根据权利要求1所述的基于rdma的工控系统数据传输方法,其特征在于,接收方前期通过socket与发送方建立链接后,交换同步信息;所述同步信息包括gid、qpn、va和r_key。
5.根据权利要求1所述的基于rdma的工控系统数据传输方法,其特征在于,所述通过内存注册区域缓存的过程为:发送方调用api或系统注册需要被rdma硬件访问的内存区;
6.基于rdma的工控系统数据传输装置,其特征在于,包括:
7.基于rdma的工控系统数据传输方法,其特征在于,数据接收过程包括:
8.根据权利要求5所述的基于rdma的工控系统数据传输方法,其特征在于,接收方解析数据包的具体过程为,接收方解析接收到数据包的虚拟目的地址,将解析后的虚拟目的地址转换为本地物理地址,将解析的数据存储在指定区域。
9.根据权利要求5所述的基于rdma的工控系统数据传输方法,其特征在于,所述接收方通过signaled模式将数据包存储在指定内存区域中。
10.基于rdma的工控系统数据传输装置,其特征在于,包括: