当前位置: 首页 > 专利查询>鹏城实验室专利>正文

一种数据包接收方法、装置、终端及存储介质制造方法及图纸

技术编号:29162885 阅读:10 留言:0更新日期:2021-07-06 23:04
本发明专利技术公开了一种数据包接收方法、装置、终端及存储介质,方法包括:根据当前的轮询时间确定目标读取时长,根据所述目标读取时长从缓冲区中读取数据包;获取从所述缓冲区中读取数据包的过程中的读取信息,根据所述读取信息对所述轮询时间进行更新;其中,所述读取信息包括等待次数和读取次数,所述读取次数在尝试读取数据包时更新,所述等待次数在未读取到数据包时更新。本发明专利技术能够根据网络流量中数据包的速率和系统的实际读取能力动态调节从缓冲区中读取数据包的时长,防止了在接收低速率的网络流量的数据包时多次触发接收中断进入轮询状态,提升了数据包接收效率。

【技术实现步骤摘要】
一种数据包接收方法、装置、终端及存储介质
本专利技术涉及互联网
,特别涉及一种数据包接收方法、装置、终端及存储介质。
技术介绍
现有的Linux操作系统中接收数据包时采用NAPI机制,该机制将终端方式与轮询机制相结合,在数据包到来时,首先通过网卡将数据包存入缓冲区,然后激活网卡接收中断。进入收包中断处理例程,在收包中断处理例程中,首先关闭网卡收包中断,然后等待网卡对应的轮询函数被调度,当网卡的对应轮询函数被调度后,每次读取M个数据包,如果读取完M个数据包后缓冲区还有多余的数据包,则等待下次调度轮询函数时读取,若缓冲区中数据包接收完毕,则退出轮询。在上述收包方法中,对于大数据包低速率的流量情况而言,刚接收到一个数据包后,由于此时还没有新的数据包到来,则直接退出轮询状态,在很短的时间间隔内又到来一个新的数据包,系统再次进入中断并进入轮询状态接收这一个数据包,会导致接收中断急剧增加,每次中断只能接收很少的数据包,工作效率低。因此,现有技术还有待改进和提高。
技术实现思路
针对现有技术的上述缺陷,本专利技术提供一种数据包接收方法、装置、终端及存储介质,旨在解决现有技术中数据包接收方法中对于低速率的流量的数据包接收效率低的问题。为了解决上述技术问题,本专利技术所采用的技术方案如下:本专利技术的第一方面,提供一种数据包接收方法,所述方法包括:根据当前的轮询时间确定目标读取时长,根据所述目标读取时长从缓冲区中读取数据包;获取从所述缓冲区中读取数据包的过程中的读取信息,根据所述读取信息对所述轮询时间进行更新;其中,所述读取信息包括等待次数和读取次数,所述读取次数在尝试读取数据包时更新,所述等待次数在未读取到数据包时更新。所述的数据包接收方法,其中,所述根据当前的轮询时间确定目标读取时长,包括:根据预设系数确定第一目标读取时长和第二目标读取时长;其中,所述第一目标读取时长小于当前的所述轮询时间,所述第二目标读取时长大于当前的所述轮询时间。所述的数据包接收方法,其中,所述根据所述目标读取时长从缓冲区中读取数据包,包括:在第一探测周期内根据所述第一目标读取时长从所述缓冲区中读取数据包,在第二探测周期内根据所述第二目标读取时长从所述缓冲区中读取数据包,其中,所述第一探测周期和所述第二探测周期为相邻的两个探测周期;在目标探测周期内:当接收中断开启后,关闭接收中断并调用轮询函数,在调用所述轮询函数后尝试读取数据包,每次尝试读取数据包时将所述读取次数加一,若未读取到数据包,则将所述等待次数加一并等待预设时长后重复尝试读取数据包直至调用所述轮询函数后的时长达到所述目标探测周期对应的目标读取时长;在调用轮询函数后的时长达到所述目标探测周期对应的目标读取时长后等待接收中断重新开启直至所述目标探测周期结束,进入下一个探测周期。所述的数据包接收方法,其中,所述根据当前的轮询时间确定目标读取时长之前,包括:当接收中断开启后,若不存在所述轮询时间,则不断读取所述缓冲区中的数据包,每读取到一个数据包,将收包数量加一;若所述收包数量达到预设阈值前,所述缓冲区中的所有数据包已经读取完,则记录接收完所述缓冲区中的所有数据包的耗时为所述轮询时间的初始值;若所述收包数量达到所述预设阈值时,所述缓冲区中的所有数据包未读取完,则记录所述收包数量达到所述预设阈值的耗时为所述轮询时间的初始值。所述的数据包接收方法,其中,所述根据所述读取信息对所述轮询时间进行更新,包括:根据探测时段内的所述等待次数和所述读取次数对所述轮询时间进行更新,其中,所述探测时段内包括至少一个探测周期对,每个探测周期对包括一个所述第一探测周期和一个所述第二探测周期。所述的数据包接收方法,其中,所述根据探测时段内的所述等待次数和所述读取次数对所述轮询时间进行更新,包括:分别获取所述探测时段内的目标探测周期对中所述第一探测周期内的所述等待次数和所述读取次数,以及所述目标探测周期对中所述第二探测周期内的所述等待次数和所述读取次数;根据所述目标探测周期对中所述第一探测周期内的所述等待次数和所述读取次数确定第一轮询时间效用值,根据所述目标探测周期对中所述第二探测周期内的所述等待次数和所述读取次数确定第二轮询时间效用值;根据所述第一轮询时间效用值和所述第二轮询时间效用值对所述轮询时间进行更新。所述的数据包接收方法,其中,所述根据所述第一轮询时间效用值和所述第二轮询时间效用值对所述轮询时间进行更新,包括:若所述探测时段内每个探测周期对内的所述第一轮询时间效用值均大于所述第二轮询时间效用值,则将所述轮询时间更新为所述第一目标读取时长;若所述探测时段内每个探测周期对内的所述第一轮询时间效用值均小于所述第二轮询时间效用值,则将所述轮询时间更新为所述第二目标读取时长;若所述探测时段内每个探测周期对内的所述第一轮询时间效用值和所述第二轮询时间效用值的大小关系不一致,则维持所述轮询时间不变。本专利技术的第二方面,提供一种数据包接收装置,包括:收包模块,所述收包模块用于根据当前的轮询时间确定目标读取时长,根据所述目标读取时长从缓冲区中读取数据包;更新模块,所述更新模块用于获取根据所述目标读取时长从所述缓冲区中读取数据包的过程中的读取信息,根据所述读取信息对所述轮询时间进行更新,其中,所述读取信息包括等待次数和读取次数,所述读取次数在尝试读取数据包时更新,所述等待次数在未读取到数据包时更新。本专利技术的第三方面,提供一种终端,所述终端包括处理器、与处理器通信连接的计算机可读存储介质,所述计算机可读存储介质适于存储多条指令,所述处理器适于调用所述计算机可读存储介质中的指令,以执行实现上述任一项所述的数据包接收方法的步骤。本专利技术的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一项所述的数据包接收方法的步骤。与现有技术相比,本专利技术提供了一种数据包接收方法、装置、终端及存储介质,所述的数据包接收方法,根据当前的轮询时间确定从缓冲区中读取数据包的目标读取时长,并根据在目标读取时长内从缓冲区内读取数据包过程中尝试读取数据包的读取次数和未读取到数据包的等待次数对轮询时间进行更新,读取次数和等待次数反映了每次进入轮询状态后从缓冲区中读取数据包的速度以及缓冲区内数据包的数量情况,根据读取次数和等待次数对轮询时间进行更新,从而实现了根据网络流量中数据包的速率和系统的实际读取能力动态调节从缓冲区中读取数据包的时长,防止了在接收低速率的网络流量的数据包时多次触发接收中断进入轮询状态,提升了数据包接收效率。附图说明图1为本专利技术提供的数据包接收方法的实施例的流程图;图2为现有的数据包接收方法的流程图;图3为本专利技术提供的数据包接收方法的实施例的逻辑框图;图4为本专利技术提供的数据包本文档来自技高网...

【技术保护点】
1.一种数据包接收方法,其特征在于,所述方法包括:/n根据当前的轮询时间确定目标读取时长,根据所述目标读取时长从缓冲区中读取数据包;/n获取从所述缓冲区中读取数据包的过程中的读取信息,根据所述读取信息对所述轮询时间进行更新;/n其中,所述读取信息包括等待次数和读取次数,所述读取次数在尝试读取数据包时更新,所述等待次数在未读取到数据包时更新。/n

【技术特征摘要】
1.一种数据包接收方法,其特征在于,所述方法包括:
根据当前的轮询时间确定目标读取时长,根据所述目标读取时长从缓冲区中读取数据包;
获取从所述缓冲区中读取数据包的过程中的读取信息,根据所述读取信息对所述轮询时间进行更新;
其中,所述读取信息包括等待次数和读取次数,所述读取次数在尝试读取数据包时更新,所述等待次数在未读取到数据包时更新。


2.根据权利要求1所述的数据包接收方法,其特征在于,所述根据当前的轮询时间确定目标读取时长,包括:
根据预设系数确定第一目标读取时长和第二目标读取时长;
其中,所述第一目标读取时长小于当前的所述轮询时间,所述第二目标读取时长大于当前的所述轮询时间。


3.根据权利要求2所述的数据包接收方法,其特征在于,所述根据所述目标读取时长从缓冲区中读取数据包,包括:
在第一探测周期内根据所述第一目标读取时长从所述缓冲区中读取数据包,在第二探测周期内根据所述第二目标读取时长从所述缓冲区中读取数据包,其中,所述第一探测周期和所述第二探测周期为相邻的两个探测周期;
在目标探测周期内:
当接收中断开启后,关闭接收中断并调用轮询函数,在调用所述轮询函数后尝试读取数据包,每次尝试读取数据包时将所述读取次数加一,若未读取到数据包,则将所述等待次数加一并等待预设时长后重复尝试读取数据包直至调用所述轮询函数后的时长达到所述目标探测周期对应的目标读取时长;
在调用轮询函数后的时长达到所述目标探测周期对应的目标读取时长后等待接收中断重新开启直至所述目标探测周期结束,进入下一个探测周期。


4.根据权利要求1所述的数据包接收方法,其特征在于,所述根据当前的轮询时间确定目标读取时长之前,包括:
当接收中断开启后,若不存在所述轮询时间,则不断读取所述缓冲区中的数据包,每读取到一个数据包,将收包数量加一;
若所述收包数量达到预设阈值前,所述缓冲区中的所有数据包已经读取完,则记录接收完所述缓冲区中的所有数据包的耗时为所述轮询时间的初始值;
若所述收包数量达到所述预设阈值时,所述缓冲区中的所有数据包未读取完,则记录所述收包数量达到所述预设阈值的耗时为所述轮询时间的初始值。


5.根据权利要求3所述的数据包接收方法,其特征在于,所述根据所述读取信息对所述轮询时间进行更新,包括:
根据探测时段内的所述等待次数和所述读取次数对所述轮询时间进行更新,其中,所述探测时段内...

【专利技术属性】
技术研发人员:朱家骅汪漪徐荣军许兆斌
申请(专利权)人:鹏城实验室
类型:发明
国别省市:广东;44

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

1