一种数据通信方法、装置、设备及存储介质制造方法及图纸

技术编号:28488696 阅读:22 留言:0更新日期:2021-05-19 22:05
本申请公开了一种数据通信方法、装置、设备及存储介质,该方法的步骤包括:调用网卡对应的线程对相应的消息队列执行休眠监听操作,线程的数量大于1且各线程均根据网卡对应的中断号执行休眠监听操作;当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作;分别通过各线程获取相应消息队列中的数据包。由于网卡中各个线程均采用系统分配给网卡的中断号,因此每一个线程均能够基于中断号对相应的消息队列执行休眠监听操作,进而网卡中的各个消息队列中的数据包均能够被线程中断响应,避免造成数据包丢失的情况发生,保证了网卡传入数据的完整性以及可靠性。此外,本申请还提供一种数据通信装置、设备及存储介质,有益效果同上所述。果同上所述。果同上所述。

【技术实现步骤摘要】
一种数据通信方法、装置、设备及存储介质


[0001]本申请涉及网络通信领域,特别是涉及一种数据通信方法、装置、设备及存储介质。

技术介绍

[0002]随着互联网技术的高速发展,云产业的快速突起,基础架构网络逐渐向基于通用计算平台的架构融合,以支持多样化的网络系统,因此网络设备中网卡进出数据的完整性以及可靠性是衡量网络系统性能的关键指标之一。
[0003]DPDK(Data Plane Development Kit,数据平面开发套件)是当前网络设备中网卡进行数据通信所使用的控制程序,DPDK提供中断模式,也就是在当没有数据包到达网络设备的网卡时,释放与网卡相关的运算资源,进而在当数据包到达网络设备的网卡时,DPDK能够控制网络设备中断正在执行的程序,并将相应的资源分配给与网卡以对数据包进行响应。网卡实现中断的本质是网卡在数据包到达消息队列时向网卡的线程发送中断号,但是当前网络设备的UIO(Userspace I/O,用户态I/O)驱动针对于每一个网卡仅分配一个系统中断号,而当前网卡中的消息队列数量往往大于1并且通过相互独立的线程监听,因此在当前的中断模式下,难以确保网卡中的各个消息队列收到包后可以通知所有监听此网卡的线程,可能会造成数据包丢失的情况发生,无法保证网卡传入数据的完整性以及可靠性。
[0004]由此可见,提供一种数据通信方法,以相对确保网卡传入数据的完整性以及可靠性,是本领域技术人员需要解决的技术问题。

技术实现思路

[0005]本申请的目的是提供一种数据通信装置、设备及存储介质,以相对确保网卡传入数据的完整性以及可靠性。
[0006]为解决上述技术问题,本申请提供一种数据通信方法,包括:
[0007]调用网卡对应的线程对相应的消息队列执行休眠监听操作,线程的数量大于1且各线程均根据网卡对应的中断号执行休眠监听操作;
[0008]当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作;
[0009]分别通过各线程获取相应消息队列中的数据包。
[0010]优选地,在调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,方法还包括:
[0011]统计网卡在历史周期内的总流量;
[0012]判断总流量是否未达到总流量阈值;
[0013]如果总流量未达到总流量阈值,则执行调用网卡对应的线程对相应的消息队列执行休眠监听操作的步骤。
[0014]优选地,在判断总流量是否未达到总流量阈值之后,方法还包括:
[0015]如果总流量达到总流量阈值,则通过网卡的线程对消息队列执行轮询操作并获取
数据包。
[0016]优选地,在调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,方法还包括:
[0017]统计各线程在历史周期内的流量;
[0018]调用网卡对应的线程对相应的消息队列执行休眠监听操作,包括:
[0019]调用流量未达到线程流量阈值的线程对相应的消息队列执行休眠监听操作。
[0020]优选地,方法还包括:
[0021]当存在流量达到线程流量阈值的线程时,通过流量达到线程流量阈值的线程对相应的消息队列执行轮询操作并获取数据包。
[0022]优选地,在调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,方法还包括:
[0023]对线程运行所需的中间数据进行复制操作,复制操作后中间数据的数量与线程的数量一致,且线程与中间数据存在唯一对应关系;
[0024]分别通过各线程获取相应消息队列中的数据包,包括:
[0025]分别通过各线程基于对应的中间数据获取相应消息队列中的数据包。
[0026]优选地,调用网卡对应的线程对相应的消息队列执行休眠监听操作,包括:
[0027]基于DPDK代码逻辑调用网卡的线程对相应的消息队列执行休眠监听操作;
[0028]在调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,方法还包括:
[0029]删除DPDK代码逻辑中表征自动清除中断标志位的使能状态的标志位。
[0030]此外,本申请还提供一种数据通信装置,包括:
[0031]休眠监听模块,用于调用网卡对应的线程对相应的消息队列执行休眠监听操作,线程的数量大于1且各线程均根据网卡对应的中断号执行休眠监听操作;
[0032]中断唤醒模块,用于当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作;
[0033]响应模块,用于分别通过各线程获取相应消息队列中的数据包,并对获取到的数据包执行响应。
[0034]此外,本申请还提供一种数据通信设备,包括:
[0035]存储器,用于存储计算机程序;
[0036]处理器,用于执行计算机程序时实现如上述的数据通信方法的步骤。
[0037]此外,本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的数据通信方法的步骤。
[0038]本申请所提供的数据通信方法,首先调用网卡对应的线程对该线程对应的消息队列执行休眠监听操作,线程的数量大于1并且各线程均根据网卡对应的中断号执行休眠监听操作,进而当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作,进而通过各线程分别获取相应消息队列中的数据包,并对获取到的数据包执行响应的相关操作。由于网卡中各个线程均采用系统分配给网卡的中断号,因此每一个线程均能够基于中断号对相应的消息队列执行休眠监听操作,进而能够确保网卡中的各个消息队列中到达的数据包时均能够及时被线程中断响应,避免造成数据包丢失的情况发生,保证了网卡传入数据的完整性以及可靠性。此外,本申请还提供一种数据通信装置、设备及存储介质,有益效果同
上所述。
附图说明
[0039]为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0040]图1为本申请公开的一种数据通信方法的流程图;
[0041]图2为本申请公开的一种具体的数据通信方法的流程图;
[0042]图3为本申请公开的一种具体的数据通信方法的流程图;
[0043]图4为本申请公开的一种具体的数据通信方法的流程图;
[0044]图5为本申请公开的一种数据通信装置的结构示意图。
具体实施方式
[0045]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
[0046]DPDK(Data Plane Development Kit,数据平面开发套件)是当前网本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据通信方法,其特征在于,包括:调用网卡对应的线程对相应的消息队列执行休眠监听操作,所述线程的数量大于1且各所述线程均根据所述网卡对应的中断号执行所述休眠监听操作;当所述网卡产生包含所述中断号的中断事件时,对各所述线程执行中断唤醒操作;分别通过各所述线程获取相应所述消息队列中的数据包。2.根据权利要求1所述的数据通信方法,其特征在于,在所述调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,所述方法还包括:统计所述网卡在历史周期内的总流量;判断所述总流量是否未达到总流量阈值;如果所述总流量未达到所述总流量阈值,则执行所述调用网卡对应的线程对相应的消息队列执行休眠监听操作的步骤。3.根据权利要求2所述的数据通信方法,其特征在于,在所述判断所述总流量是否未达到总流量阈值之后,所述方法还包括:如果所述总流量达到所述总流量阈值,则通过所述网卡的线程对所述消息队列执行轮询操作并获取所述数据包。4.根据权利要求1所述的数据通信方法,其特征在于,在所述调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,所述方法还包括:统计各所述线程在历史周期内的流量;所述调用网卡对应的线程对相应的消息队列执行休眠监听操作,包括:调用所述流量未达到线程流量阈值的线程对相应的所述消息队列执行所述休眠监听操作。5.根据权利要求4所述的数据通信方法,其特征在于,所述方法还包括:当存在所述流量达到线程流量阈值的线程时,通过所述流量达到线程流量阈值的线程对相应的所述消息队列执行轮询操作并获取数据包。6.根据权利要求1所述的数据通信方法,其特征在于,在所述调用网卡对应的线程对相应的消息...

【专利技术属性】
技术研发人员:方统浩陈晓帆
申请(专利权)人:深信服科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1