一种基于多队列加速网络性能的方法技术

技术编号:37053914 阅读:12 留言:0更新日期:2023-03-29 19:31
本申请公开了一种基于多队列加速网络性能的方法,涉及计算机技术领域,该方法包括以下步骤:配置队列属性:对队列进行类型划分,类型包括紧急数据包队列、有序数据包队列、空闲数据包队列;使能时间戳:通过网卡的时间戳功能对数据包进行时间戳标记;数据分配:根据数据包的紧急度和时间戳将数据包分配至紧急数据包队列或有序数据包队列中,将其他数据分配至空闲数据包队列;队列调度:对紧急数据包队列、有序数据包队列中的数据包进行调度,并将数据包分派至不同的CPU核心进行处理。本申请基于多队列网卡,配合网卡驱动进行数据包的解析、分类、分配、调度以及与多队列的配合,提高数据包处理的效率和系统网络数据吞吐量。数据包处理的效率和系统网络数据吞吐量。数据包处理的效率和系统网络数据吞吐量。

【技术实现步骤摘要】
一种基于多队列加速网络性能的方法


[0001]本申请涉及计算机
,具体是一种基于多队列加速网络性能的方法。

技术介绍

[0002]一般地,千兆以太网网卡包含多个硬件队列,可同时进行多队列收发,并且数据包可以在多个CPU核心处理,在网络高峰时,大量的数据包拥堵在DMA内存中,会导致多包数据随意组包进入CPU核心处理,导致数据包在协议栈的顺序不一致,致使网络处理出现低效率、低吞吐量的现象。并且,一般数据包是有序号的,如果是单核CPU,同一时刻只能处理一个数据包,但是如果是SMP多核处理SOC,则同一时刻可以处理多个包,如果多队列任意使用,则有可能导致这些数据包的顺序出现乱序,进而需要重排,这样就影响了数据的处理效率和系统网络的吞吐量。

技术实现思路

[0003]本申请的目的在于提供一种基于多队列加速网络性能的方法,以解决上述
技术介绍
中提出现有的数据包处理导致的网络处理出现低效率、低吞吐量的现象。
[0004]为实现上述目的,本申请公开了以下技术方案:一种基于多队列加速网络性能的方法,该方法包括以下步骤:配置队列属性:对队列进行类型划分,所述类型包括紧急数据包队列、有序数据包队列、空闲数据包队列;使能时间戳:通过网卡的时间戳功能对数据包进行时间戳标记;数据分配:根据数据包的紧急度和时间戳将数据包分配至所述紧急数据包队列或所述有序数据包队列中,将其他数据随机分配至所述空闲数据包队列;队列调度:对所述紧急数据包队列、所述有序数据包队列中的数据包进行调度,并将数据包分派至不同的CPU核心进行处理。<br/>[0005]作为优选,所述空闲数据包队列为可用状态,所述可用状态配置为硬件入队使用。
[0006]作为优选,所述紧急数据包队列和所述有序数据包队列均为暂存状态,所述暂存状态配置为对数据包分类后进行所述队列调度。
[0007]作为优选,在所述配置队列属性中,将队列分别划分为队列0、队列1、队列2、队列3、队列4、队列5、队列6、队列7,其中,所述队列0为紧急数据包队列,所述队列7为有序数据包队列,所述队列1、所述队列2、所述队列3、所述队列4、所述队列5和所述队列6为空闲数据包队列。
[0008]作为优选,在所述数据分配中,所述的根据数据包的紧急度和时间戳将数据包分配至所述紧急数据包队列具体包括:遍历数据包,基于数据包中是否有URG标志,如果数据包中有URG标志,则将该数据包定义为紧急数据,且该数据包获取最高优先级并进行入队到所述队列0。
[0009]作为优选,所述数据分配通过分配函数实现,所述分配函数按照数据包的紧急类
型和时间戳将数据包分别分配到队列0和队列7,且形成生产者,所述生产者生产的数据包均为有序状态。
[0010]作为优选,所述队列调度通过队列调度器实现。
[0011]有益效果:本申请的基于多队列加速网络性能的方法,借助多队列网卡和软件系统,对硬件队列进行改造,即对数据包类型进行划分,并基于数据包的类型对队列进行分类以将数据包划入不同的队列进行处理,实现了将乱序的数据包转化为可控的有序数据包,提高了队列在系统中的应用,相对于传统的网络处理,提高了网络处理的效率和系统整体数据的吞吐量。
附图说明
[0012]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0013]图1为本申请实施例中基于多队列加速网络性能的方法的流程框图;图2为本申请实施例中基于多队列加速网络性能的方法的多队列处理结构示意图。
具体实施方式
[0014]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0015]在本文中,术语“包括”意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0016]本申请将多队列网卡中的多队列划分为两大类数据包,即紧急数据包类型(优先级最高)和普通数据包类型,然后根据普通类型,再根据数据包接收到的时间戳,划分不同的优先级,进行不同的入队,然后交由队列调度器进行具体的数据包调度。具体的,参考图1所示的一种基于多队列加速网络性能的方法,该方法包括以下步骤:配置队列属性:硬件上每个队列都是平等的,需要在软件中对队列进行类型划分,具体为对队列进行类型划分,所述类型包括紧急数据包队列、有序数据包队列、空闲数据包队列;使能时间戳:通过网卡的时间戳功能对数据包进行时间戳标记;数据分配:根据数据包的紧急度和时间戳将数据包分配至所述紧急数据包队列或所述有序数据包队列中,将其他数据随机分配至所述空闲数据包队列;队列调度:对所述紧急数据包队列、所述有序数据包队列中的数据包进行调度,并
将数据包分派至不同的CPU核心进行处理。
[0017]在本实施例中,所述空闲数据包队列为可用状态,所述可用状态配置为硬件入队使用。所述紧急数据包队列和所述有序数据包队列均为暂存状态,所述暂存状态配置为对数据包分类后进行所述队列调度。
[0018]作为一种可行的实施方式,如图2所示的多队列处理结构示意图,在图中,左边输入经过配置、分类、分派函数对数据包进行处理和入队,中间为多个不同的队列,右边为队列调度器,队列调度器调度相应的队列中的数据包后由不同的CPU核心处理数据包。具体的,本申请将队列分别划分为队列0、队列1、队列2、队列3、队列4、队列5、队列6、队列7,其中,所述队列0为紧急数据包队列,所述队列7为有序数据包队列,所述队列1、所述队列2、所述队列3、所述队列4、所述队列5和所述队列6为空闲数据包队列。所述数据分配通过分配函数实现,所述分配函数按照数据包的紧急类型和时间戳将数据包分别分配到队列0和队列7,且形成生产者,所述生产者生产的数据包均为有序状态。所述队列调度通过队列调度器实现。在所述数据分配中,所述的根据数据包的紧急度和时间戳将数据包分配至所述紧急数据包队列具体包括:遍历数据包,基于数据包中是否有URG标志,如果数据包中有URG标志,则将该数据包定义为紧急数据,且该数据包获取最高优先级并进行入队到所述队列0。需要说明的是,由于生产者产生的数据均为有序数据,且具有URG标志的数据包被分配至队列0,而时间戳相对靠后的紧急数据被分配至队列7进行暂存,其他的非紧急数据被分配至队列1~6内。
[0019]基于上述,本申请基于多队列网本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多队列加速网络性能的方法,其特征在于,该方法包括以下步骤:配置队列属性:对队列进行类型划分,所述类型包括紧急数据包队列、有序数据包队列、空闲数据包队列;使能时间戳:通过网卡的时间戳功能对数据包进行时间戳标记;数据分配:根据数据包的紧急度和时间戳将数据包分配至所述紧急数据包队列或所述有序数据包队列中,将其他数据随机分配至所述空闲数据包队列;队列调度:对所述紧急数据包队列、所述有序数据包队列中的数据包进行调度,并将数据包分派至不同的CPU核心进行处理。2.根据权利要求1所述的基于多队列加速网络性能的方法,其特征在于,所述空闲数据包队列为可用状态,所述可用状态配置为硬件入队使用。3.根据权利要求1所述的基于多队列加速网络性能的方法,其特征在于,所述紧急数据包队列和所述有序数据包队列均为暂存状态,所述暂存状态配置为对数据包分类后进行所述队列调度。4.根据权利要求2或3任意一项所述的基于多队列加速网络性能的方法,其特征在于,在所述配置队列属性中,将...

【专利技术属性】
技术研发人员:弓羽箭王东方陈亮丞何炳龙周东伍建军吴鑫黄嘉豪洪炜斌
申请(专利权)人:广州翼辉信息技术有限公司
类型:发明
国别省市:

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

1