CN115914424A - 网络数据实时传输方法、装置、设备及可读存储介质 - Google Patents
网络数据实时传输方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN115914424A CN115914424A CN202211406284.5A CN202211406284A CN115914424A CN 115914424 A CN115914424 A CN 115914424A CN 202211406284 A CN202211406284 A CN 202211406284A CN 115914424 A CN115914424 A CN 115914424A
- Authority
- CN
- China
- Prior art keywords
- network data
- real
- time
- network
- preset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种网络数据实时传输方法、装置、设备及可读存储介质。即在本申请中,当存在有待发送的第一网络数据时,将判断第一网络数据的类型,若为预设实时传输类型,则跳过原始内核网络协议进行发送,从而提高网络性能(即减少了网络数据的传输步骤,从而减少了传输过程中的不确定性,提高其传输的实时性),反之,若为预设非实时传输类型,则基于原始的内核网络协议进行发送,以保持内核系统层与外部互联网通信的能力,故本申请的网络数据实时传输方法即可以实现网络实时性能的提高,有能保持与外部互联网的通信能力。
Description
技术领域
本申请涉及工业网络通信领域,尤其涉及一种网络数据实时传输方法、装置、设备及可读存储介质。
背景技术
实时操作系统,简称RTOS(Real Time Operating System),是必须在设置的截止时间内对环境中的事件做出反应的系统,否则会产生严重的后果。硬实时操作系统应具备的最重要特性之一是可预期性,其本质是确定性。将计算机网络中的以太网技术应用于工业自动化领域,构成工业控制以太网,简称工业以太网或以太网现场总线。通常实时工业以太网基于实时操作系统来实现。实时操作系统在操作系统调度层面保证了事件响应的实时性,但事件的响应结果输出,依赖操作系统以太网的实时性,这涉及操作系统以太网硬件驱动具体实现、操作系统网络协议栈等。目前,在行业中可提高网络实时性的方案有:将实时以太网应用放到内核态执行、XDP(eXpress Data Path,快速数据路径)以及DPDK技术(Intel Data Plane Development Kit,英特尔数据面开发工具套件)。但上述方案虽然一定程度上可能可以提高实时性,但其方案实现过程中将会导致系统层无网络,即系统层或者内核无法进行正常的互联网通讯,影响使用。
上述内容仅用于辅助理解本申请的技术方案,并不代表承认上述内容是现有技术。
发明内容
本申请的主要目的在于提供一种网络数据实时传输方法、装置、设备及可读存储介质,旨在解决目前实时性网络方案在实施过程中会导致系统层无网络的技术问题。
为实现上述目的,本申请提供一种网络数据实时传输方法,所述网络数据实时传输方法包括:
判断待发送的第一网络数据的类型;
若所述第一网络数据的类型为预设实时传输类型,则跳过原始内核网络协议进行所述第一网络数据的发送;
若所述第一网络数据的类型为预设非实时传输类型,则通过所述原始内核网络协议进行所述第一网络数据的发送。
进一步的,所述跳过原始内核网络协议进行所述第一网络数据的发送的步骤包括:
将所述第一网络数据写入至预设第一直接存储区;
基于所述第一网络数据在所述预设第一直接存储区的第一地址生成与所述第一网络数据对应的第一描述符;
将所述第一描述符发送至网络设备的预设实时收发队列,以供所述网络设备基于所述预设实时收发队列实时发送所述第一网络数据,其中,所述预设实时收发队列的中断功能被禁用或所述中断功能未启用。
进一步的,所述通过所述原始内核网络协议进行所述第一网络数据的发送的步骤包括:
通过所述原始内核网络协议将所述第一网络数据写入至预设缓冲区,并基于所述第一网络数据在所述预设缓冲区中的第二地址生成与所述第一网络数据对应的第二描述符;
将所述第二描述符发送至所述网络设备的驱动程序,通过所述驱动程序将所述第二描述符发送至所述网络设备的预设非实时收发队列,以供所述网络设备基于所述预设非实时收发队列发送所述第一网络数据。
进一步的,所述驱动程序包括有内存映射接口,所述内存映射接口用于将所述预设第一直接存储区映射到用户空间得到虚拟内存空间;所述将所述第一网络数据写入至预设第一直接存储区的步骤包括:
将所述第一网络数据发送至所述虚拟内存空间,以使所述第一网络数据被写入至所述预设第一直接存储区。
进一步的,所述驱动程序还包括有队列映射接口,所述队列映射接口用于将所述预设实时收发队列映射至所述用户空间得到虚拟队列空间;所述将所述第一描述符发送至网络设备的预设实时收发队列的步骤包括:
将所述第一描述符发送至所述虚拟队列空间,以使所述第一描述符被发送至所述预设实时收发队列。
进一步的,在所述判断待发送的第一网络数据的类型的步骤之前,所述方法还包括:
基于预设交互接口从所述网络设备的驱动程序中获取所述网络设备的寄存器地址、所述内存映射接口以及所述预设队列映射接口,其中,所述寄存器地址对应的寄存器用于触发所述网络设备发送所述第一网络数据。
进一步的,所述网络数据实时传输方法还包括:
在存储第二网络数据的预设第二直接存储区中,查询检测是否有新的第二网络数据写入;
若是,获取所述新的第二网络数据。
此外,为实现上述目的,本申请还提供一种网络数据实时传输装置,所述网络数据实时传输装置包括:
判断模块,用于判断待发送的第一网络数据的类型;
第一发送模块,用于若所述第一网络数据的类型为预设实时传输类型,则跳过原始内核网络协议进行所述第一网络数据的发送;
第二发送模块,用于若所述第一网络数据的类型为预设非实时传输类型,则通过所述原始内核网络协议进行所述第一网络数据的发送。
此外,为实现上述目的,本申请还提供一种网络数据实时传输设备,所述网络数据实时传输设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的网络数据实时传输程序,所述网络数据实时传输程序被所述处理器执行时实现如上述的网络数据实时传输方法的步骤。
此外,为实现上述目的,本申请还提供一种可读存储介质,所述可读存储介质上存储有网络数据实时传输程序,所述网络数据实时传输程序被处理器执行时实现如上述的网络数据实时传输方法的步骤。
本申请实施例提出的一种网络数据实时传输方法、装置、设备及可读存储介质。网络数据实时传输方法包括,判断待发送的第一网络数据的类型;若所述第一网络数据的类型为预设实时传输类型,则跳过原始内核网络协议进行所述第一网络数据的发送;若所述第一网络数据的类型为预设非实时传输类型,则通过所述原始内核网络协议进行所述第一网络数据的发送。
相比于现有的实时性网络方案,本申请通过复用内核层原始内核网络协,从而保留了内核系统层与外部互联网通信的能力。即当存在有待发送的第一网络数据时,将判断第一网络数据的类型,若为预设实时传输类型,则跳过原始内核网络协议进行发送,从而提高网络性能(即减少了网络数据的传输步骤,从而减少了传输过程中的不确定性,提高其传输的实时性),反之,若为预设非实时传输类型,则基于原始的内核网络协议进行发送,以保持内核系统层与外部互联网通信的能力,故本申请的网络数据实时传输方法即可以实现网络实时性能的提高,有能保持与外部互联网的通信能力。
附图说明
图1是本申请实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本申请网络数据实时传输方法中第一实施例的流程示意图;
图3为本申请网络数据实时传输方法中第二实施例的流程示意图;
图4为本申请网络数据实时传输方法的原理示意图;
图5为本申请网络数据实时传输方法的框架示意图;
图6为本申请网络数据实时传输方法的网络数据发送效果示意图;
图7为本申请网络数据实时传输方法的网络数据接收效果示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
如图1所示,图1是本申请实施例方案涉及的硬件运行环境的终端结构示意图。
本申请实施例终端可以是PC,也可以是智能手机、平板电脑、便携计算机等具有数据处理功能的电子终端设备。
如图1所示,该设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,设备还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及网络数据实时传输程序。
在图1所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的网络数据实时传输程序,并执行以下操作:
判断待发送的第一网络数据的类型;
若所述第一网络数据的类型为预设实时传输类型,则跳过原始内核网络协议进行所述第一网络数据的发送;
若所述第一网络数据的类型为预设非实时传输类型,则通过所述原始内核网络协议进行所述第一网络数据的发送。
进一步地,处理器1001可以调用存储器1005中存储的网络数据实时传输程序,还执行以下操作:
所述跳过原始内核网络协议进行所述第一网络数据的发送的步骤包括:
将所述第一网络数据写入至预设第一直接存储区;
基于所述第一网络数据在所述预设第一直接存储区的第一地址生成与所述第一网络数据对应的第一描述符;
将所述第一描述符发送至网络设备的预设实时收发队列,以供所述网络设备基于所述预设实时收发队列实时发送所述第一网络数据,其中,所述预设实时收发队列的中断功能被禁用或所述中断功能未启用。
进一步地,处理器1001可以调用存储器1005中存储的网络数据实时传输程序,还执行以下操作:
所述通过所述原始内核网络协议进行所述第一网络数据的发送的步骤包括:
通过所述原始内核网络协议将所述第一网络数据写入至预设缓冲区,并基于所述第一网络数据在所述预设缓冲区中的第二地址生成与所述第一网络数据对应的第二描述符;
将所述第二描述符发送至所述网络设备的驱动程序,通过所述驱动程序将所述第二描述符发送至所述网络设备的预设非实时收发队列,以供所述网络设备基于所述预设非实时收发队列发送所述第一网络数据。
进一步地,处理器1001可以调用存储器1005中存储的网络数据实时传输程序,还执行以下操作:
所述驱动程序包括有内存映射接口,所述内存映射接口用于将所述预设第一直接存储区映射到用户空间得到虚拟内存空间;
所述将所述第一网络数据写入至预设第一直接存储区的步骤包括:
将所述第一网络数据发送至所述虚拟内存空间,以使所述第一网络数据被写入至所述预设第一直接存储区。
进一步地,处理器1001可以调用存储器1005中存储的网络数据实时传输程序,还执行以下操作:
所述驱动程序还包括有队列映射接口,所述队列映射接口用于将所述预设实时收发队列映射至所述用户空间得到虚拟队列空间;
所述将所述第一描述符发送至网络设备的预设实时收发队列的步骤包括:
将所述第一描述符发送至所述虚拟队列空间,以使所述第一描述符被发送至所述预设实时收发队列。
进一步地,处理器1001可以调用存储器1005中存储的网络数据实时传输程序,还执行以下操作:
在所述判断待发送的第一网络数据的类型的步骤之前,所述方法还包括:
基于预设交互接口从所述网络设备的驱动程序中获取所述网络设备的寄存器地址、所述内存映射接口以及所述队列映射接口,其中,所述寄存器地址对应的寄存器用于触发所述网络设备发送所述第一网络数据。
进一步地,处理器1001可以调用存储器1005中存储的网络数据实时传输程序,还执行以下操作:
所述网络数据实时传输方法还包括:
在存储第二网络数据的预设第二直接存储区中,查询检测是否有新的第二网络数据写入;
若是,获取所述新的第二网络数据。
参照图2,本申请网络数据实时传输方法中的第一实施例,所述网络数据实时传输方法包括:
步骤S10,判断待发送的第一网络数据的类型;
在本实施例中,产生上述待发送的第一网络数据的应用可以分为两种,一种是实时以太网应用,另一种是普通以太网应用,其中,实时以太网应用产生的第一网络数据可以是对实时性有较高的要求的以太网帧,而普通以太网应用产生的第一网络数据可以是对实时性要求相对而言稍低但需要发送至外部互联网的以太网帧。需要说明的是,目前实时性网络方案虽然在一定程度上可以实现网络实时性提高,如基于DPDK技术可能可以实现网络实时性提高(其方案本是出发点在于提高吞吐量,并不是提高实时性),但是由于其方案的实施过程完全在用户态实现,即完成以太帧收发的网络设备(如网卡)完全由用户态对应的实时以太网应用接管,从而会导致内核层无网络。同时,目前将实时以太网应用放到内核态执行,减少内核态与用户态之间的数据拷贝的方案,也存在有同样问题,而且该方案实时以太网应用在内核态执行一方面开发较为困难,另一方面也容易产生BUG(缺陷)导致系统崩溃。故目前的高性能网络方案均存在有会导致内核层或系统层无网络。为解决上述问题,本实施例中将同时存在两种以太网帧的发送方式从而保证在实现提高网络性能的同时保留内核层与外部网络通讯的能力。
具体的,对于需要发送出去的第一网络数据,在发送之前会先判断其类型。其中,第一网络数据的类型可以包括预设实时传输类型和预设非实时传输类型。需要说明的是,预设实时传输类型的具体类型,可由技术人员根据实际情况进行设置,例如常见的实时工业以太网(或实时以太网应用)有PROFINET(自动化总线标准)、EtherCAT(Ether ControlAutomation Technology,以太网控制自动化技术)、Ethernet PowerLink(高速工业以太网)、TSN(time scalar network,时标网状图)等。其中,当第一网络数据有EtherCAT产生则,对应的第一网络数据的类型(或者以太帧的类型)为0x88A4。故可预先将以太帧的类型为0x88A4设置为预设实时传输类型,反之,若不是实时以太网应用产生的网络数据则为预设非实时传输类型。
步骤S20,若所述第一网络数据的类型为预设实时传输类型,则跳过原始内核网络协议进行所述第一网络数据的发送;
具体的,对于第一网路数据的类型为预设实时传输类型时,则跳过原始内核网络协议发送第一网络数据,即处于用户态的实时以太网应用将跳过内核直接访问和操作网卡硬件从而实现第一网络数据的发送。
进一步的,所述跳过原始内核网络协议进行所述第一网络数据的发送的步骤包括:
步骤S210,将所述第一网络数据写入至预设第一直接存储区;
进一步的,所述驱动程序包括有内存映射接口,所述内存映射接口用于将所述预设第一直接存储区映射到用户空间得到虚拟内存空间;所述将所述第一网络数据写入至预设第一直接存储区的步骤包括:将所述第一网络数据发送至所述虚拟内存空间,以使所述第一网络数据被写入至所述预设第一直接存储区。
具体的,处于用户态的实时以太网应用将第一网络数据写入所述预设第一直接存储区对应的虚拟内存空间。其中,第一直接存储区可以是预先在DMA(Direct MemoryAccess,直接存储器访问)存储器中分配的区域,虚拟内存空间是预设的内存映射接口将内核空间的第一直接存储区映射用户空间得到,如可通过mmap方法(一种内存映射文件的方法)完成映射。可以理解的是,上述过程无需使用系统调用减少了数据处理过程。
步骤S220,基于所述第一网络数据在所述预设第一直接存储区的第一地址生成与所述第一网络数据对应的第一描述符;
具体的,当实时以太网应用将第一网络数据写入至预设第一直接存储区后,将根据第一网络数据处于预设第一直接存储区中的地址写入至描述符中,从而得到与第一网络数据对应的第一描述符。需要说明的是,在本实时例中第一网络数据是需要通过网络设备进行发送,而与第一网络数据对应的第一描述符则是网络设备发送第一网络设备的依据。
步骤S230,将所述第一描述符发送至网络设备的预设实时收发队列,以供所述网络设备基于所述预设实时收发队列实时发送所述第一网络数据,其中,所述预设实时收发队列的中断功能被禁用或所述中断功能未启用。
进一步的,所述驱动程序还包括有队列映射接口,所述队列映射接口用于将所述预设实时收发队列映射至所述用户空间得到虚拟队列空间;所述将所述第一描述符发送至网络设备的预设实时收发队列的步骤包括:将所述第一描述符发送至所述虚拟队列空间,以使所述第一描述符被发送至所述预设实时收发队列。
具体的,上述网络设备是指网卡,在一个网卡中通常会包括多个硬件收发队列。而在本实施例中,将至少一个硬件收发队列设置为上述预设实时收发队列,用于接收上述第一描述符。同样的,位于用户态的实时以太网应用将第一描述符发送至与预设实时收发队列对应的虚拟队列空间,虚拟队列空间为预设队列映射接口将处于内核空间的预设实时收发队列映射到用户空间得到,且同样通过mmap方法实现。需要说明的是,被设置为预设实时收发队列的硬件收发队列其对应的中断功能将处于被禁用或者处于未启用状态,避免网卡在接收到网络数据后触发中断,从而与本申请的网络数据处理过程造成冲突。当将第一描述符发送到预设实时收发队列后,网络设备即可按照预设实时收发队列中各个第一描述符顺序完成网络数据发送,根据第一描述符中的地址即可获取到的需要发送的第一网络数据,再将获取到的第一网络数据发送出去。
步骤S30,若所述第一网络数据的类型为预设非实时传输类型,则通过所述原始内核网络协议进行所述第一网络数据的发送。
可以理解的是,若第一网络数据的类型不是预设实时传输类型则该第一网络数据为预设非实时传输类型。预设非实时传输类型的第一网络数据通过原始内核网络协议进行发送即可。
进一步的,通过所述原始内核网络协议将所述第一网络数据写入至预设缓冲区,并基于所述第一网络数据在所述预设缓冲区中的第二地址生成与所述第一网络数据对应的第二描述符;将所述第二描述符发送至所述网络设备的驱动程序,通过所述驱动程序将所述第二描述符发送至所述网络设备的预设非实时收发队列,以供所述网络设备基于所述预设非实时收发队列发送所述第一网络数据。
需要说明的是,在本实施例网络设备的硬件收发队列中,除被设置为预设实时收发队列外剩下的硬件收发队列均为非实时收发队列。对应的,当第一网络数据为非实时传输类型时,则发起系统调用使得系统CPU(Central Processing Unit,中央处理器)上下文从用户态切换为内核态,将第一网络数据从用户空间拷贝至内核空间,再通过原始内核网络协议将第一网络数据发送至预设缓冲区(skb,Struct sk_buffer,用于收发包的缓冲区域)。可以理解的是,上述第二描述符同样将包含第一网络数据在所述缓冲区中的地址,此处不再赘述。第二描述符将被发送至网络设备对应的驱动程序,通过驱动程序将第二描述符发送至网络设备的预设非实时收发队列中,使得网络设备可以基于预设非实时收发队列发送第一网络数据。可以理解的是,本是实施例中的网络设备存在有实时收发队列和非实时收发队列,且分别接收不同实时性要求的描述符完成网络数据的发送。从而即满足对网络数据传输的实时性要求,又保持了系统层面或者内核层面与外部互联网的通讯。此外,对于实时收发队列在传输时的优先级可设置为高优先级,使得实时收发队列中对应的网络数据优先于非实时收发队列发送,从而确保第一网络数据传输时的实时性。
为清楚的说明上述步骤,参照图4,为本申请网络数据实时传输方法的原理示意图,实时以太网应用和普通以太网应用均处于用户态,网络设备驱动模块以及网络设备均处于内核态,其中,在网络设备驱动模块中包括环形缓冲区1、环形缓冲区2以及从物理内存分配的预配置物理内存,网络设备(网卡)包括设备寄存器空间、硬件收发队列1和硬件收发队列2。硬件收发队列1与环形缓冲1存在对应关系,硬件收发队列2与环形缓冲区2存在对应关系。且上述预配置物理内存、设备寄存器空间和环形缓冲区1将分别通过mmap的方式映射到位于用户态的实时以太网应用中。环形缓冲区1被设置为预设实时收发队列,环形缓冲区2被设置为预设非实时收发队列。当实时以太网应用产生了待发送的第一网络数据后,将第一网络数据写入虚拟内存空间(即图4中虚线框的预配置的物理内存)中,再将包含有的第一网络数据存放地址的第一描述符发送到虚拟队列空间(即图4中虚线框的环形缓冲区1),可以理解的是,此时第一网络数据已经被写入至位于内核态中对应的与配置物理内存中,且与第一网络数据对应的第一描述符也被发送至环形缓冲区1中,需要说明的是,环形缓冲区1与硬件收发队列1存在有对应关系,第一描述符也相当于被发送至硬件收发队列1。此外,实时以太网应用在映射的设备寄存器空间(即图4中虚线框的设备寄存器空间)进行发送命令的读写,从而触发网络设备执行发送步骤,网络设备即可根据硬件收发队列1中的第一描述符将第一网络数据发送出去。而对于普通以太网应用产生的第一网络数据,则基于内核网络协议栈(即原始内核网络协议)和网络设备驱动发送即可(即复用现有的以太网帧发送的路径,上述第一网络数据对应的第二描述符将会被发送到环形缓冲区2,且通过触发中断的方式进行发送)。
此外,所述网络数据实时传输方法还包括:
步骤S01,在存储第二网络数据的预设第二直接存储区中,查询检测是否有新的第二网络数据写入;
步骤S02,若是,获取所述新的第二网络数据。
在本实施例中,上述预设第二直接存储区可以是预先分配的。且网络设备从外部接收到的第二网络数据将会被存放在第二直接存储区。同样的预设第二直接存储区也将通过mmap的方式被映射到用户空间,而处于用户态的相关以太网应用则查询检测映射的预设第二直接存储区(其中,查询的间隔可由技术人员设置)是否有新的第二网络数据被写入,当查询到有新的第二网络数据时,则获取新的第二网络数据即可完成数据的接收。
参照图6,为本申请网络数据实时传输方法的网络数据发送效果示意图,图6,中横坐标为采样数,纵坐标为网络包发送所需要时间,对照方案(现有通过操作系统提供的原始套接字(Raw Socket)接口进行链路层以太网帧发送过程)的采样点用原点表示,本申请方案采样点用十字表示,根据图6中两种采样点的分布来看,本申请中网络包发送时花费时间更稳定,因此,本申请方案具有更强的实时性。参照图7,为本申请网络数据实时传输方法的网络数据接收效果示意图。中横坐标为采样数,纵坐标为网络包发送所需要时间,对照方案(现有通过操作系统提供的原始套接字接口进行链路层以太网帧发送过程)的采样点用原点表示,本申请方案采样点用十字表示。同样的,根据各采样点来看,本申请方案具有更强的实时性。
在本实施例中,判断待发送的第一网络数据的类型;若所述第一网络数据的类型为预设实时传输类型,则跳过原始内核网络协议进行所述第一网络数据的发送;若所述第一网络数据的类型为预设非实时传输类型,则通过所述原始内核网络协议进行所述第一网络数据的发送。相比于现有的实时性网络方案,本申请复用内核层原始内核网络协,从而保留了内核系统层与外部互联网通信的能力。即在本申请中,当存在有待发送的第一网络数据时,将判断第一网络数据的类型,若为预设实时传输类型,则跳过原始内核网络协议进行发送,从而提高网络性能(即减少了网络数据的传输步骤,从而减少了传输过程中的不确定性,提高其传输的实时性),反之,若为预设非实时传输类型,则基于原始的内核网络协议进行发送,以保持内核系统层与外部互联网通信的能力,故本申请的网络数据实时传输方法即可以实现网络实时性能的提高,有能保持与外部互联网的通信能力。
进一步的,参照3,基于本申请网络数据实时传输方法的第一实施例提出本申请网络数据实时传输方法的第二实施例。
在所述判断待发送的第一网络数据的类型的步骤之前,所述网络数据实时传输方法包括:
步骤S001,基于预设交互接口从所述网络设备的驱动程序中获取所述网络设备的寄存器地址、所述预设内存映射接口以及所述预设队列映射接口,其中,所述寄存器地址对应的寄存器用于触发所述网络设备发送所述第一网络数据。
在本实施例中,实时以太网应用将跳过原始内核网络协议直接对网络设备进行操作,以此减少第一网络数据传输过程中的步骤,一方面可减少的传输延时,另一方面可以提高数据传输实时性。而在实现网络数据实时传输的过程之前,对于实时以太网应用来说需要进行初始化,以获取到实现网络数据实时传输的相关信息。上述预设交互接口将用于实时以太网应用和网络设备的驱动程序之间的交互。其中,预设交互接口存在有多种的实现方式,如可通过设置字符设备、块设备、混杂设备以及套接字等。以字符设备为例,可在驱动程序中注册字符设备,其中,字符设备在驱动程序与实时以太网应用交互时,可为用户态的实时以太网应用程序提供网络设备的寄存器空间物理起始地址及长度信息(即寄存器地址),为用户态程序提供DMA属性内存分配接口(用于分配上述预设第一直接存储区),提供将指定DMA内存块(预设第一直接存储区)映射到用户态的映射接口,提供将指定收发队列映射到用户态的预设队列映射接口(收发队列或者收发队列对应环形缓冲区的描述符可以由实时以太网应用进行创建,也可以通过预设交互接口获取到描述符的地址、长度和大小从而直接获取到描述符)。同时,还提供将设备寄存器空间映射到用户态的映射接口,使得用户态的实时以太网应用可在映射到的设备寄存器空间写入发送指令,以触发网络设备发送所述第一网络数据。参照图5,本申请网络数据实时传输方法的框架示意图。位于用户态的实时以太网应用包括实时以太网帧发送和实时以太网初始化,其中,实时以太网帧收发是指上述以太网帧实时,是通过内核旁路kernel bypass(即跳过原始内核网络协议)直接对网络设备进行操作完成收发。实时以太网初始化则是指在上述方法应用初期,实时以太网应用可通过预设交互接口与网络设备的驱动程序进行交互,以获取到网络设备的相关信息,相关信息包括:网络设备的寄存器地址、所述内存映射接口以及所述队列映射接口等。此外,实时以太网应用还可以包括:link(连接)状态检测,用于网络设备的网络连接状态。同样的,普通以太网应用,则正常经过内核网络协议栈和网络设备驱动对网络设备进行操作完成发送即可。
需要说明的是,上述过程可对现有网络设备驱动进行增量开发实现,如在网络设备中添加相关字符设备。同样的,对于多收发队列的网络设备,则指定收发队列作为实时收发队列被实时以太网应用占用,剩下的收发队列则被普通以太网应用所使用。同时,为确保实时以太网应用、网络设备驱动以及网络设备之间的对应关系,在网络设备驱动中添加指定网络设备的标识,该标识可以是网络设备的pci(Peripheral Component Interconnect,局部总线标准)地址,也可是网络设备在设备树中对应节点的属性标识。网络设备的标识可在网络设备进行初始化时,判断实际接入的或者配套的网络设备是否为指定的网络设备,是则保存该网络设备的寄存器空间物理起始地址及长度(即寄存器地址),可提供给用户态的实时以太网应用。
可以理解的是,在初始化的过程中实时以太网应用将基于上述获取到的映射接口,将内核态的第一直接存储区、预设实时收发队列以及设备寄存器空间映射到用户态,使得实时以太网应用在用户态直接操作网络设备进行第一网络数据的发送,无需借助于原始的内核网络协议栈,减少了第一网络数据的发送步骤,增强了整体网络的实时性。需要说明的是,在DPDK方案实施时的整个软件框架庞大,很难分离出用户态驱动层供实时工业网络协议栈复用。而本申请实现上述过程,只需在现有标准网络设备驱动进行增量开发,用户态仅需对网络设备关键硬件操作,不必实现在用户态实现对网络设备的完全驱动,即可实现用户态直接操作网络设备进行数据收发。实现过程更加清洁简单。
此外,本申请实施例还提出一种网络数据实时传输装置,所述网络数据实时传输装置包括:
判断模块,用于判断待发送的第一网络数据的类型;
第一发送模块,用于若所述第一网络数据的类型为预设实时传输类型,则跳过原始内核网络协议进行所述第一网络数据的发送;
第二发送模块,用于若所述第一网络数据的类型为预设非实时传输类型,则通过所述原始内核网络协议进行所述第一网络数据的发送。
判断待发送的第一网络数据的类型;
若所述第一网络数据的类型为预设实时传输类型,则跳过原始内核网络协议进行所述第一网络数据的发送;
若所述第一网络数据的类型为预设非实时传输类型,则通过所述原始内核网络协议进行所述第一网络数据的发送。
可选地,所述第一发送模块还用于:
将所述第一网络数据写入至预设第一直接存储区;
基于所述第一网络数据在所述预设第一直接存储区的第一地址生成与所述第一网络数据对应的第一描述符;
将所述第一描述符发送至网络设备的预设实时收发队列,以供所述网络设备基于所述预设实时收发队列实时发送所述第一网络数据,其中,所述预设实时收发队列的中断功能被禁用或所述中断功能未启用。
可选地,所述第二发送模块还用于:
所述通过所述原始内核网络协议进行所述第一网络数据的发送的步骤包括:
通过所述原始内核网络协议将所述第一网络数据写入至预设缓冲区,并基于所述第一网络数据在所述预设缓冲区中的第二地址生成与所述第一网络数据对应的第二描述符;
将所述第二描述符发送至所述网络设备的驱动程序,通过所述驱动程序将所述第二描述符发送至所述网络设备的预设非实时收发队列,以供所述网络设备基于所述预设非实时收发队列发送所述第一网络数据。
可选地,所述第一发送模块还用于:
所述驱动程序包括有内存映射接口,所述内存映射接口用于将所述预设第一直接存储区映射到用户空间得到虚拟内存空间;
所述将所述第一网络数据写入至预设第一直接存储区的步骤包括:
将所述第一网络数据发送至所述虚拟内存空间,以使所述第一网络数据被写入至所述预设第一直接存储区。
可选地,所述第一发送模块还用于:
所述驱动程序还包括有队列映射接口,所述队列映射接口用于将所述预设实时收发队列映射至所述用户空间得到虚拟队列空间;
所述将所述第一描述符发送至网络设备的预设实时收发队列的步骤包括:
将所述第一描述符发送至所述虚拟队列空间,以使所述第一描述符被发送至所述预设实时收发队列。
可选地,所述第一发送模块还用于:
基于预设交互接口从所述网络设备的驱动程序中获取所述网络设备的寄存器地址、所述内存映射接口以及所述队列映射接口,其中,所述寄存器地址对应的寄存器用于触发所述网络设备发送所述第一网络数据。
可选地,所述网络数据实时传输装置还包括接收模块,所述接收模块用于:
在存储第二网络数据的预设第二直接存储区中,查询检测是否有新的第二网络数据写入;
若是,获取所述新的第二网络数据。
本申请提供的网络数据实时传输装置,采用上述实施例中的网络数据实时传输方法,解决目前实时性网络方案在实施过程中会导致系统层无网络的技术问题。与现有技术相比,本申请实施例提供的网络数据实时传输装置的有益效果与上述实施例提供的网络数据实时传输方法的有益效果相同,且该网络数据实时传输装置中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。
此外,本申请实施例还提出一种网络数据实时传输设备,所述网络数据实时传输设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的网络数据实时传输程序,所述网络数据实时传输程序被所述处理器执行时实现如上述的网络数据实时传输方法的步骤。
本申请网络数据实时传输设备的具体实施方式与上述网络数据实时传输新方法各实施例基本相同,在此不再赘述。
此外,本申请实施例还提出一种可读存储介质,所述可读存储介质上存储有网络数据实时传输程序,所述网络数据实时传输程序被处理器执行时实现如上述的网络数据实时传输方法的步骤。
本申请可读存储介质具体实施方式与上述网络数据实时传输新方法各实施例基本相同,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种网络数据实时传输方法,其特征在于,所述网络数据实时传输方法包括:
判断待发送的第一网络数据的类型;
若所述第一网络数据的类型为预设实时传输类型,则跳过原始内核网络协议进行所述第一网络数据的发送;
若所述第一网络数据的类型为预设非实时传输类型,则通过所述原始内核网络协议进行所述第一网络数据的发送。
2.如权利要求1所述的网络数据实时传输方法,其特征在于,所述跳过原始内核网络协议进行所述第一网络数据的发送的步骤包括:
将所述第一网络数据写入至预设第一直接存储区;
基于所述第一网络数据在所述预设第一直接存储区的第一地址生成与所述第一网络数据对应的第一描述符;
将所述第一描述符发送至网络设备的预设实时收发队列,以供所述网络设备基于所述预设实时收发队列实时发送所述第一网络数据,其中,所述预设实时收发队列的中断功能被禁用或所述中断功能未启用。
3.如权利要求2所述的网络数据实时传输方法,其特征在于,所述通过所述原始内核网络协议进行所述第一网络数据的发送的步骤包括:
通过所述原始内核网络协议将所述第一网络数据写入至预设缓冲区,并基于所述第一网络数据在所述预设缓冲区中的第二地址生成与所述第一网络数据对应的第二描述符;
将所述第二描述符发送至所述网络设备的驱动程序,通过所述驱动程序将所述第二描述符发送至所述网络设备的预设非实时收发队列,以供所述网络设备基于所述预设非实时收发队列发送所述第一网络数据。
4.如权利要求3所述的网络数据实时传输方法,其特征在于,所述驱动程序包括有内存映射接口,所述内存映射接口用于将所述预设第一直接存储区映射到用户空间得到虚拟内存空间;
所述将所述第一网络数据写入至预设第一直接存储区的步骤包括:
将所述第一网络数据发送至所述虚拟内存空间,以使所述第一网络数据被写入至所述预设第一直接存储区。
5.如权利要求4所述的网络数据实时传输方法,其特征在于,所述驱动程序还包括有队列映射接口,所述队列映射接口用于将所述预设实时收发队列映射至所述用户空间得到虚拟队列空间;
所述将所述第一描述符发送至网络设备的预设实时收发队列的步骤包括:
将所述第一描述符发送至所述虚拟队列空间,以使所述第一描述符被发送至所述预设实时收发队列。
6.如权利要求5所述的网络数据实时传输方法,其特征在于,在所述判断待发送的第一网络数据的类型的步骤之前,所述方法还包括:
基于预设交互接口从所述网络设备的驱动程序中获取所述网络设备的寄存器地址、所述内存映射接口以及所述队列映射接口,其中,所述寄存器地址对应的寄存器用于触发所述网络设备发送所述第一网络数据。
7.如权利要求1所述的网络数据实时传输方法,其特征在于,所述网络数据实时传输方法还包括:
在存储第二网络数据的预设第二直接存储区中,查询检测是否有新的第二网络数据写入;
若是,获取所述新的第二网络数据。
8.一种网络数据实时传输装置,其特征在于,所述网络数据实时传输装置包括:
判断模块,用于判断待发送的第一网络数据的类型;
第一发送模块,用于若所述第一网络数据的类型为预设实时传输类型,则跳过原始内核网络协议进行所述第一网络数据的发送;
第二发送模块,用于若所述第一网络数据的类型为预设非实时传输类型,则通过所述原始内核网络协议进行所述第一网络数据的发送。
9.一种网络数据实时传输设备,其特征在于,所述网络数据实时传输设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的网络数据实时传输程序,所述网络数据实时传输程序被所述处理器执行时实现如权利要求1至7中任一项所述的网络数据实时传输方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有网络数据实时传输程序,所述网络数据实时传输程序被处理器执行时实现如权利要求1至7中任一项所述的网络数据实时传输方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211406284.5A CN115914424A (zh) | 2022-11-10 | 2022-11-10 | 网络数据实时传输方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211406284.5A CN115914424A (zh) | 2022-11-10 | 2022-11-10 | 网络数据实时传输方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115914424A true CN115914424A (zh) | 2023-04-04 |
Family
ID=86475458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211406284.5A Pending CN115914424A (zh) | 2022-11-10 | 2022-11-10 | 网络数据实时传输方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115914424A (zh) |
-
2022
- 2022-11-10 CN CN202211406284.5A patent/CN115914424A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6070194A (en) | Using an index and count mechanism to coordinate access to a shared resource by interactive devices | |
US6987961B1 (en) | Ethernet emulation using a shared mailbox between two processors in a feature phone | |
CN107967225B (zh) | 数据传输方法、装置、计算机可读存储介质和终端设备 | |
US10341264B2 (en) | Technologies for scalable packet reception and transmission | |
KR20010014944A (ko) | 계산기 시스템 | |
US11018986B2 (en) | Communication apparatus, communication method, and computer program product | |
CN113419845A (zh) | 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质 | |
CN115309511B (zh) | 基于Xen的数据交互方法、装置、存储介质以及电子设备 | |
CN115344226A (zh) | 一种虚拟化管理下的投屏方法、装置、设备及介质 | |
CN116774933A (zh) | 存储设备的虚拟化处理方法、桥接设备、系统及介质 | |
EP3605327A1 (en) | Method and apparatus for capturing screenshots of guest operating system in computer device | |
CN116320469A (zh) | 一种虚拟化视频编解码系统及方法、电子设备和存储介质 | |
CN108829530B (zh) | 一种图像处理方法及装置 | |
CN112506676B (zh) | 进程间的数据传输方法、计算机设备和存储介质 | |
CN110413540B (zh) | 一种fpga数据缓存的方法、系统、设备及存储介质 | |
CN106933646B (zh) | 一种创建虚拟机的方法及装置 | |
CN111970213A (zh) | 排队系统 | |
CN115914424A (zh) | 网络数据实时传输方法、装置、设备及可读存储介质 | |
CN110868364B (zh) | 一种带宽隔离装置及方法 | |
CN113407357A (zh) | 进程间数据搬移的方法及装置 | |
US8041902B2 (en) | Direct memory move of multiple buffers between logical partitions | |
CN116414744A (zh) | 信息处理方法、装置及电子设备 | |
CN114564241B (zh) | 硬件设备的访问方法、装置、计算机设备和存储介质 | |
CN113760325B (zh) | 容器环境更新方法及装置 | |
US6041328A (en) | Tracking availability of elements within a shared list of elements from an index and count mechanism |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |