[发明专利]一种数据包接收方法、装置、终端及存储介质有效
申请号: | 202110624163.7 | 申请日: | 2021-06-04 |
公开(公告)号: | CN113079114B | 公开(公告)日: | 2021-08-27 |
发明(设计)人: | 朱家骅;汪漪;徐荣军;许兆斌 | 申请(专利权)人: | 鹏城实验室 |
主分类号: | H04L12/863 | 分类号: | H04L12/863 |
代理公司: | 深圳市君胜知识产权代理事务所(普通合伙) 44268 | 代理人: | 朱阳波 |
地址: | 518055 广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据包 接收 方法 装置 终端 存储 介质 | ||
本发明公开了一种数据包接收方法、装置、终端及存储介质,方法包括:根据当前的轮询时间确定目标读取时长,根据所述目标读取时长从缓冲区中读取数据包;获取从所述缓冲区中读取数据包的过程中的读取信息,根据所述读取信息对所述轮询时间进行更新;其中,所述读取信息包括等待次数和读取次数,所述读取次数在尝试读取数据包时更新,所述等待次数在未读取到数据包时更新。本发明能够根据网络流量中数据包的速率和系统的实际读取能力动态调节从缓冲区中读取数据包的时长,防止了在接收低速率的网络流量的数据包时多次触发接收中断进入轮询状态,提升了数据包接收效率。
技术领域
本发明涉及互联网技术领域,特别涉及一种数据包接收方法、装置、终端及存储介质。
背景技术
现有的Linux操作系统中接收数据包时采用NAPI机制,该机制将终端方式与轮询机制相结合,在数据包到来时,首先通过网卡将数据包存入缓冲区,然后激活网卡接收中断。进入收包中断处理例程,在收包中断处理例程中,首先关闭网卡收包中断,然后等待网卡对应的轮询函数被调度,当网卡的对应轮询函数被调度后,每次读取M个数据包,如果读取完M个数据包后缓冲区还有多余的数据包,则等待下次调度轮询函数时读取,若缓冲区中数据包接收完毕,则退出轮询。
在上述收包方法中,对于大数据包低速率的流量情况而言,刚接收到一个数据包后,由于此时还没有新的数据包到来,则直接退出轮询状态,在很短的时间间隔内又到来一个新的数据包,系统再次进入中断并进入轮询状态接收这一个数据包,会导致接收中断急剧增加,每次中断只能接收很少的数据包,工作效率低。
因此,现有技术还有待改进和提高。
发明内容
针对现有技术的上述缺陷,本发明提供一种数据包接收方法、装置、终端及存储介质,旨在解决现有技术中数据包接收方法中对于低速率的流量的数据包接收效率低的问题。
为了解决上述技术问题,本发明所采用的技术方案如下:
本发明的第一方面,提供一种数据包接收方法,所述方法包括:
根据当前的轮询时间确定目标读取时长,根据所述目标读取时长从缓冲区中读取数据包;
获取从所述缓冲区中读取数据包的过程中的读取信息,根据所述读取信息对所述轮询时间进行更新;
其中,所述读取信息包括等待次数和读取次数,所述读取次数在尝试读取数据包时更新,所述等待次数在未读取到数据包时更新。
所述的数据包接收方法,其中,所述根据当前的轮询时间确定目标读取时长,包括:
根据预设系数确定第一目标读取时长和第二目标读取时长;
其中,所述第一目标读取时长小于当前的所述轮询时间,所述第二目标读取时长大于当前的所述轮询时间。
所述的数据包接收方法,其中,所述根据所述目标读取时长从缓冲区中读取数据包,包括:
在第一探测周期内根据所述第一目标读取时长从所述缓冲区中读取数据包,在第二探测周期内根据所述第二目标读取时长从所述缓冲区中读取数据包,其中,所述第一探测周期和所述第二探测周期为相邻的两个探测周期;
在目标探测周期内:
当接收中断开启后,关闭接收中断并调用轮询函数,在调用所述轮询函数后尝试读取数据包,每次尝试读取数据包时将所述读取次数加一,若未读取到数据包,则将所述等待次数加一并等待预设时长后重复尝试读取数据包直至调用所述轮询函数后的时长达到所述目标探测周期对应的目标读取时长;
在调用轮询函数后的时长达到所述目标探测周期对应的目标读取时长后等待接收中断重新开启直至所述目标探测周期结束,进入下一个探测周期。
所述的数据包接收方法,其中,所述根据当前的轮询时间确定目标读取时长之前,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于鹏城实验室,未经鹏城实验室许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110624163.7/2.html,转载请声明来源钻瓜专利网。