[发明专利]一种数据包的分流方法、装置及设备有效
申请号: | 201811296817.2 | 申请日: | 2018-11-01 |
公开(公告)号: | CN109039944B | 公开(公告)日: | 2022-04-22 |
发明(设计)人: | 马旭 | 申请(专利权)人: | 郑州云海信息技术有限公司 |
主分类号: | H04L47/125 | 分类号: | H04L47/125 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 罗满 |
地址: | 450018 河南省郑州市*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据包 分流 方法 装置 设备 | ||
本发明公开了一种数据包的分流方法,能够在数据包的传输过程中,获取硬件接收队列中的多个数据包,并将所述多个数据包分配到与该硬件接收队列对应的多个驱动层的软件接收队列,最后调用应用层的接收线程读取与该接收线程对应的软件接收队列中的数据包。可见,该方法能够将硬件接收队列中的数据包分配到多个驱动层软件接收队列,且后续应用层接收线程能够从对应的软件接收队列读取数据包,实现了在硬件接收队列和应用层接收线程之间,也就是在驱动层对数据包进行分流的目的,避免了在应用层分流导致过多内存资源被占用的问题。此外,本发明还提供了一种数据包的分流装置、设备、及计算机可读存储介质,其作用与上述方法相对应。
技术领域
本发明涉及计算机领域,特别涉及一种数据包的分流方法、装置、设备及计算机可读存储介质。
背景技术
在大数据时代,巨大的网络流量对任何应用层网络软件来说都是一项巨大的挑战。为应对巨大的网络流量,网卡驱动本身会根据网卡硬件配置对数据包进行硬件分流处理,也就是将物理层接收的数据包分发到网卡硬件可支持的接收环,即硬件接收环。然后应用层的接收线程从硬件接收环中提取数据包,以便于进行后续处理。
为了保证应用层接收数据包时满足负载均衡,传统的做法一般需要在应用层进行分流处理。然而,这种处理方法将分流工作的压力集中在了应用层,导致主机端过多的内存资源被占用,影响应用层的接收线程的性能。
发明内容
本发明的目的是提供一种数据包的分流方法、装置、设备及计算机可读存储介质,用以解决传统分流方法需要在应用层进行分流处理。导致主机端过多的内存资源被占用,影响应用层的接收线程的性能的问题。
为解决上述技术问题,本发明提供了一种数据包的分流方法,包括:
在数据包的传输过程中,获取硬件接收队列中的多个数据包;
将所述多个数据包分配到与所述硬件接收队列对应的多个驱动层的软件接收队列;
调用应用层的接收线程读取与所述接收线程对应的软件接收队列中的数据包。
可选的,在所述在数据包的传输过程中,获取硬件接收队列中的多个数据包之前,还包括:
确定应用层中的接收线程的线程数量;
根据所述线程数量,确定驱动层的软件接收队列的队列数量,并为硬件接收队列创建所述队列数量的软件接收队列。
可选的,所述确定应用层中的接收线程的线程数量,包括:
获取目标驱动的配置文件;
解析所述配置文件,判断所述配置文件是否设置有软件接收队列的创建命令;
若所述配置文件设置有软件接收队列的创建命令,则确定应用层中的接收线程的线程数量。
可选的,所述为硬件接收队列创建所述队列数量的软件接收队列,包括:
确定每秒数据包的传输数量;
根据队列数量、所述传输数量、以及硬件接收队列的数量,计算得到应用层的软件接收队列的队列长度;
为各个所述硬件接收队列创建所述队列数量的、所述队列长度的软件接收队列。
可选的,所述根据所述线程数量,确定驱动层的软件接收队列的队列数量,并为硬件接收队列创建所述队列数量的软件接收队列,包括:
将所述线程数量作为驱动层的软件接收队列的队列数量,并为硬件接收队列创建所述队列数量的软件接收队列,其中,所述软件接收队列与所述接收线程一一对应。
可选的,所述软件接收队列为环形队列。
相应的,本发明还提供了一种数据包的分流装置,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州云海信息技术有限公司,未经郑州云海信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811296817.2/2.html,转载请声明来源钻瓜专利网。