CN106713185B - 一种多核cpu的负载均衡方法及装置 - Google Patents
一种多核cpu的负载均衡方法及装置 Download PDFInfo
- Publication number
- CN106713185B CN106713185B CN201611111417.0A CN201611111417A CN106713185B CN 106713185 B CN106713185 B CN 106713185B CN 201611111417 A CN201611111417 A CN 201611111417A CN 106713185 B CN106713185 B CN 106713185B
- Authority
- CN
- China
- Prior art keywords
- message
- receiving
- receiving port
- cpu
- hardware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3018—Input queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
- H04L49/9073—Early interruption upon arrival of a fraction of a packet
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文公开了一种多核CPU的负载均衡方法及装置,应用于通信设备,通信设备包括硬件分流模块、接收端口以及至少两个CPU核,其中,每个接收端口配置为与至少两个CPU核绑定,与同一个接收端口绑定的CPU核配置为分别绑定接收端口的一个或多个接收队列;上述负载均衡方法包括:针对每个接收端口,硬件分流模块根据分流规则将报文分类,并根据接收端口的接收队列与报文类型的分配关系,将报文转发至与所属的报文类型存在分配关系的接收队列;接收端口接收到报文后,产生硬件中断,并将硬件中断同时上报给与接收端口绑定的所有CPU核;接收到硬件中断的每个CPU核在软中断处理过程中,从与本CPU核绑定的接收队列读取报文。
Description
技术领域
本发明涉及计算机通信技术,尤其涉及一种多核CPU(Central Processing Unit,中央处理器)的负载均衡方法及装置。
背景技术
对于路由器、网关等设备,报文的转发通过中央处理器(CPU,Central ProcessingUnit)完成,因此,这类设备的报文转发性能受CPU的处理能力制约,而对于多核CPU,如何发挥多核效率,均衡多核之间的负载,是提升性能的关键。
如图1所示,Linux操作系统的内核协议栈报文的处理流程包括:当一个CPU核(比如CPU0、CPU1)收到接口产生的硬件中断后,先关闭本CPU核的接口硬件中断,然后触发本CPU核的软中断,然后轮询处理报文。其中,从收到硬件中断起,至发包完成,都由同一个CPU核处理。目前许多多核CPU,硬件中断都是接口级的(即一个硬件中断号绑定一个接口,中断信号同一时刻送至一个CPU核),即同一时刻,只有一个CPU核处理报文。这就造成了多核CPU不能完整发挥多核效率。
针对上述问题,目前常用的解决方案包括:
方案一、一个CPU核专用于处理报文转发,其他CPU核处理其他应用;
方案二、按照接口,将不同接口绑定不同的CPU核,这样每个CPU核都能处理报文又不产生冲突;
方案三、一个CPU核在收到中断后,指定其他CPU核处理报文。
虽然上述三个方案都能在一定程度上平衡多核的负载,但是,对于方案一,由于路由器等设备的主要负载为报文转发,其余应用占用的CPU利用率较低,因此,方案一相较于单核CPU提升的性能有限;对于方案二,虽然每个CPU核都能处理报文转发,但由于每个接口接收的报文流量不同(比如,下行流量一般远大于上行流量),因此,方案二也不能完全平衡多核之间的负载;对于方案三,需要进行软件分流,会产生CPU额外开销,而且在进行数据流保序时,会存在更大的CPU额外开销。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本发明实施例提供一种多核CPU的负载均衡方法及装置,能够有效均衡多核负载,提高设备的转发性能,而且不引入CPU额外开销即能实现数据流保序功能。
本发明实施例提供一种多核CPU的负载均衡方法,应用于通信设备,所述通信设备包括硬件分流模块、接收端口以及至少两个CPU核,其中,每个接收端口配置为与至少两个CPU核绑定,与同一个接收端口绑定的CPU核配置为分别绑定所述接收端口的一个或多个接收队列;
所述负载均衡方法包括:
针对每个接收端口,硬件分流模块根据分流规则将报文分类,并根据所述接收端口的接收队列与报文类型的分配关系,将所述报文转发至与所述报文所属的报文类型存在分配关系的接收队列;
所述接收端口接收到所述报文后,产生硬件中断,并将所述硬件中断同时上报给与所述接收端口绑定的所有CPU核;
接收到所述硬件中断的每个CPU核在软中断处理过程中,从与本CPU核绑定的接收队列读取报文。
在示例性实施方式中,所述硬件分流模块可以至少包括CPU芯片的硬件分类单元以及DMA单元;
所述硬件分流模块根据分流规则将报文分类,并根据所述接收端口的接收队列与报文类型的分配关系,将所述报文转发至与所述报文所属的报文类型存在分配关系的接收队列,包括:
所述硬件分类单元根据分流规则将报文分类;
所述DMA单元根据所述接收端口的接收队列与报文类型的分配关系,将所述报文转发至与所述报文所属的报文类型存在分配关系的接收队列。
在示例性实施方式中,所述硬件分流模块可以包括外置交换芯片、CPU芯片的硬件分类单元以及DMA单元;
所述硬件分流模块根据分流规则将报文分类,并根据所述接收端口的接收队列与报文类型的分配关系,将所述报文转发至与所述报文所属的报文类型存在分配关系的接收队列,包括:
所述外置交换芯片根据分流规则将报文分类,并根据接收端口的接收队列与报文类型的分配关系,修改所述报文的优先级,并将所述报文发送给所述硬件分类单元;
所述硬件分类单元匹配所述报文的优先级;
所述DMA单元将所述报文转发至对应所述优先级的接收队列。
在示例性实施方式中,所述分流规则可以包括:
匹配报文为以下任一大类:管理类报文、非管理类IP报文、非管理类非IP报文;
在所述报文属于非管理类IP报文时,按照所述报文的IP地址,细分所述报文所属的报文类型。
在示例性实施方式中,所述负载均衡方法还可以包括:
针对所述接收端口,所述接收到所述硬件中断的每个CPU核在报文处理过程中,记录不同报文类型的数据流的流量;
满足预定条件的CPU核根据预定时长内与所述接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,更新所述接收端口的接收队列与报文类型的分配关系。
在示例性实施方式中,所述满足预定条件的CPU核根据预定时长内与所述接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,更新所述接收端口的接收队列与报文类型的分配关系,可以包括:
根据预定时长内与所述接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,计算非管理类IP报文的数据流以及非管理类非IP报文的数据流的流量总和;
根据所述流量总和以及用于处理报文的CPU核的数目,确定CPU核的平均负载流量;
根据非管理类IP报文的数据流的流量、非管理类非IP报文的数据流的流量以及CPU核的平均负载流量,给非管理类IP报文的数据流以及非管理类非IP报文的数据流指定所述接收端口的接收队列,以满足给每个接收队列分配的数据流的总流量之间的差值小于或等于阈值。
在示例性实施方式中,所述满足预定条件的CPU核根据预定时长内与所述接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,更新所述接收端口的接收队列与报文类型的分配关系,还可以包括:
在给非管理类IP报文的数据流以及非管理类非IP报文的数据流指定所述接收端口的接收队列之后,给管理类报文的数据流指定所述接收端口的索引最大的接收队列;其中,与所述接收端口绑定的所有CPU核中的负载最小的CPU核配置为与所述接收端口的索引最大的接收队列绑定。
本发明实施例还提供一种多核CPU的负载均衡装置,包括:硬件分流模块、接收端口以及至少两个CPU核;其中,每个接收端口配置为与至少两个CPU核绑定,与同一个接收端口绑定的CPU核配置为分别绑定所述接收端口的一个或多个接收队列;
所述硬件分流模块,用于针对每个接收端口,根据分流规则将报文分类,并根据所述接收端口的接收队列与报文类型的分配关系,将所述报文转发至与所述报文所属的报文类型存在分配关系的接收队列;
所述接收端口,用于在接收到所述报文后,产生硬件中断,并将所述硬件中断同时上报给与所述接收端口绑定的所有CPU核;
接收到所述硬件中断的每个CPU核,用于在软中断处理过程中,从与本CPU核绑定的接收队列读取报文。
在示例性实施方式中,所述硬件分流模块可以至少包括CPU芯片的硬件分类单元以及DMA单元;
其中,所述硬件分类单元,用于根据分流规则将报文分类;
所述DMA单元,用于根据所述接收端口的接收队列与报文类型的分配关系,将所述报文转发至与所述报文所属的报文类型存在分配关系的接收队列。
在示例性实施方式中,所述硬件分流模块可以包括外置交换芯片、CPU芯片的硬件分类单元以及DMA单元;
所述外置交换芯片,用于根据分流规则将报文分类,并根据接收端口的接收队列与报文类型的分配关系,修改所述报文的优先级,并将所述报文发送给所述硬件分类单元;
所述硬件分类单元,用于匹配所述报文的优先级;
所述DMA单元,用于将所述报文转发至对应所述优先级的接收队列。
在示例性实施方式中,所述分流规则可以包括:
匹配报文为以下任一大类:管理类报文、非管理类IP报文、非管理类非IP报文;
在所述报文属于非管理类IP报文时,按照所述报文的IP地址,细分所述报文所属的报文类型。
在示例性实施方式中,所述CPU核,还用于在接收到接收端口的所述硬件中断后,在报文处理过程中,记录不同报文类型的数据流的流量;
满足预定条件的CPU核,还用于根据预定时长内与所述接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,更新所述接收端口的接收队列与报文类型的分配关系。
在示例性实施方式中,所述满足预定条件的CPU核,用于根据预定时长内与所述接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,计算非管理类IP报文的数据流以及非管理类非IP报文的数据流的流量总和;根据所述流量总和以及用于处理报文的CPU核的数目,确定CPU核的平均负载流量;根据非管理类IP报文的数据流的流量、非管理类非IP报文的数据流的流量以及CPU核的平均负载流量,给非管理类IP报文的数据流以及非管理类非IP报文的数据流指定所述接收端口的接收队列,以满足给每个接收队列分配的数据流的总流量之间的差值小于或等于阈值。
在示例性实施方式中,所述满足预定条件的CPU核,还用于在给非管理类IP报文的数据流以及非管理类非IP报文的数据流指定所述接收端口的接收队列之后,给管理类报文的数据流指定所述接收端口的索引最大的接收队列;其中,与所述接收端口绑定的所有CPU核中的负载最小的CPU核配置为与所述接收端口的索引最大的接收队列绑定。
在本发明实施例中,每个接收端口配置为与至少两个CPU核绑定,对于不支持在接收端口收到报文后,按报文或者按接收队列产生硬件中断,或者产生的硬件中断不能分别送给多个CPU核的情况,实现了至少两个CPU核可以同时处理同一接收端口下的报文,从而有效地改善多核效率,提高设备的转发性能;而且,本发明实施例通过硬件预分流方式,使得分流速度达到线速,避免了引入分流产生的CPU额外开销,从而能无额外负担地实现数据流保序功能。
进一步地,本发明实施例通过监控不同报文类型的数据流的流量,动态更新接收端口的接收队列与报文类型的分配关系,从而可以根据不同报文类型的数据流的流量变化情况,实现多核CPU实时的负载动态均衡。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为相关技术中Linux操作系统的内核协议栈报文的处理流程示意图;
图2为本发明实施例一提供的多核CPU的负载均衡方法的流程图;
图3为本发明实施例一的多核CPU的负载均衡方法的应用实例示意图;
图4为本发明实施例一的接收端口的接收队列与报文类型的分配关系的计算流程图;
图5为本发明实施例一的接收端口的接收队列与报文类型的分配关系的一个例子的示意图;
图6为本发明实施例二提供的多核CPU的负载均衡装置的示意图。
具体实施方式
以下结合附图对本申请实施例进行详细说明,应当理解,以下所说明的实施例仅用于说明和解释本申请,并不用于限定本申请。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一
本实施例提供一种多核CPU的负载均衡方法,可以应用于通信设备,其中,通信设备可以包括硬件分流模块、接收端口以及至少两个CPU核,每个接收端口配置为与至少两个CPU核绑定,与同一接收端口绑定的CPU核配置为分别绑定此接收端口的一个或多个接收队列。
其中,与同一接收端口绑定的不同CPU核绑定的接收队列是不同的。当CPU核与接收端口的多个接收队列绑定时,接收队列的索引越大,优先级越高。
换言之,接收端口与CPU核之间存在一对多的绑定关系,接收端口的接收队列与CPU核之间存在一对一或者多对一的绑定关系,且不同CPU核绑定的接收队列是不同的。
其中,每个接收端口可以使用的接收队列的数目可以相同或不同,可以由CPU芯片的硬件决定,或者,可以在CPU芯片启动时分配每个接收端口可以使用的接收队列的数目。
本实施例提供的多核CPU的负载均衡方法,如图2所示,包括:
步骤201:针对每个接收端口,硬件分流模块根据分流规则将报文分类,并根据接收端口的接收队列与报文类型的分配关系,将报文转发至与报文所属的报文类型存在分配关系的接收队列;
步骤202:接收端口接收到报文后,产生硬件中断,并将硬件中断同时上报给与接收端口绑定的所有CPU核;
步骤203:接收到硬件中断的每个CPU核在软中断处理过程中,从与本CPU核绑定的接收队列读取报文。
在相关技术中,在Linux操作系统中,接收端口接收报文产生的硬件中断,之所以同一时刻只绑定到一个CPU核,是由于一个报文只能由一个CPU核收取和处理,当不同CPU核同时收取相同的报文时,会产生竞争。针对此问题,在本实施例中,对接收的报文进行分类,当多个CPU核同时收到一个接收端口的硬件中断时,每个CPU核只处理指定类型的报文;另外,为了减少报文分类产生的CPU消耗,可以在报文转到接收端口前,通过硬件分流模块按照分流规则将报文分类,并送至接收端口的不同接收队列,然后每个CPU核只处理指定接收队列的报文。在上述机制下,可以放开一个硬件中断只由一个CPU核处理的限制。在实际应用中,可以通过修改Linux内核源码,比如在ARM(Advanced RISC Machines)体系下,可以修改GIC(Generic Interrupt Controller,通用中断控制器)代码,将一个硬件中断同时绑定到多个CPU核上。
在一些应用中,要求报文(IP报文或非IP报文)必须按照顺序发送,针对这种情况,为了确保数据流保序的问题,可以对数据流进行分类,按照报文类型指定接收队列。比如,针对IP数据流(一条IP数据流会包含多个按顺序发送的数据报文),在分类报文指定接收队列时,可以按IP(Internet Protocol,网络协议)地址进行数据流分类,比如,按源IP地址根据一定算法对数据流进行分类,并指定到相应的接收队列,这样每条数据流就会只由一个CPU核处理,也就不会产生乱序问题。其中,大部分CPU芯片都支持按IP地址进行分类和指定接收队列,即使不支持按IP地址分类也可通过外置交换(switch)芯片的方式配合实现报文分类。
在步骤201中,针对每个接收端口,硬件分流模块根据预先设置的分流规则对报文进行分类,确定报文所属的报文类型,并根据接收端口的接收队列与报文类型的分配关系,将报文转发至与所属报文类型存在分配关系的接收队列。
一些实现方式中,在CPU芯片自身支持报文分类并可以指定接收队列时,可以直接配置CPU芯片的分流规则以及接收端口的接收队列与报文类型的分配关系。此时,硬件分流模块可以至少包括CPU芯片的硬件分类单元以及DMA(Direct Memory Access,直接内存存取)单元;
其中,硬件分类单元,用于根据分流规则将报文分类;DMA单元,用于根据接收端口的接收队列与报文类型的分配关系,将报文转发至与此报文所属的报文类型存在分配关系的接收队列。
在本实现方式中,CPU芯片的硬件分类单元可以实现匹配IP层及MAC(MediaAccess Control,介质访问控制)层的数据进行分类;比如,匹配MAC层的MAC地址和以太类型以及目的IP地址等信息,确认是否是管理类报文,匹配IP信息用于对非管理类IP报文进行细分,剩余未匹配到前两类的报文则属于非管理非IP报文;然后,通过DMA单元将分类后的报文存至指定的接收队列。
一些实现方式中,在CPU芯片自身不支持报文分类以及指定接收队列时,可以通过外置交换芯片来配合实现报文分类以及指定接收队列。此时,硬件分流模块可以包括外置交换芯片、CPU芯片的硬件分类单元以及DMA单元;步骤201可以包括:
外置交换芯片根据分流规则将报文分类,并根据接收端口的接收队列与报文类型的分配关系,修改报文的优先级,并将报文发送给硬件分类单元;
硬件分类单元匹配报文的优先级;
DMA单元将报文转发至对应优先级的接收队列。
在本实现方式中,由外置交换芯片完成匹配IP层及MAC层的数据进行分类,然后修改报文的优先级,并将报文转发至CPU芯片。CPU芯片的硬件分类单元(也可以称为QoS单元)仅支持基本的QoS(Quality of Service,服务质量)分类,即匹配优先级,再由DMA单元将报文保存到指定的接收队列。
其中,外置交换芯片对报文进行分类以及修改报文的优先级之后,CPU芯片可以根据默认的报文优先级与接收端口的接收队列的关系,将报文按照优先级转发到对应的接收队列。由于此时报文的优先级根据接收端口的接收队列与报文类型的分配关系进行了修改,因此,CPU芯片将报文进行转发后,报文与接收队列的关系可以满足接收端口的接收队列与报文类型的分配关系。
需要说明的是,在实际应用中,可以根据CPU芯片的硬件分类单元的分类能力强弱,选择合适的硬件预分流方式进行报文分类。
一些实现方式中,分流规则可以包括:
匹配报文为以下任一大类:管理类报文、非管理类IP报文、非管理类非IP报文;
在报文属于非管理类IP报文时,按照报文的IP地址,细分报文所属的报文类型。
其中,报文可以区分为以下三个大类:管理类报文、非管理类IP报文、非管理类非IP报文。管理类报文可以单独看成一条数据流,由于此类型的数据流的流量一般较小,因此在后续计算中可以不计算此类数据流的负载。非管理类非IP报文由于不参与转发,且流量一般不大,因此也可以单独看成一条数据流。非管理类IP报文的流量较大,因此需要进一步细分,比如按照源IP地址或者目的IP地址的末位比特(bit)进一步细分报文类型。
需要说明的是,本实施例提供的分流规则仅为举例,本申请对此并不限定。
本实施例中,由于对报文进行分类,而不同报文类型的数据流的流量是不同的,造成不同CPU核的负载不同,为了最大化均衡多CPU核的负载,本实施例通过监控不同报文类型的数据流的流量,定期(比如每10分钟)重新计算接收端口的接收队列与报文类型的分配关系,从而达到一段时间内多核CPU整体上的动态负载均衡。
一些实现方式中,本实施例的负载均衡方法还可以包括:
步骤204:针对每个接收端口,接收到接收端口的硬件中断的每个CPU核在报文处理过程时,记录不同报文类型的数据流的流量;
步骤205:满足预定条件的CPU核根据预定时长内与接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,更新接收端口的接收队列与报文类型的分配关系。
其中,满足预定条件的CPU核可以是由Linux操作系统随机选择的一个CPU核,或者,可以是整体负载最小的CPU核。本申请对此并不限定。
其中,针对一个接收端口的硬件中断,与此接收端口绑定的每个CPU核在软中断过程中进行报文处理时,会记录不同报文类型的数据流的流量。每个CPU核记录的不同报文类型的数据流的流量信息可以存储在共享存储区域,每个CPU核均可以从共享存储区域获取记录的流量信息。基于此,关于接收端口的接收队列与报文类型的分配关系的更新计算过程可以由任一CPU核执行。
一些实现方式中,步骤205可以包括:
根据预定时长内与接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,计算非管理类IP报文的数据流以及非管理类非IP报文的数据流的流量总和;
根据流量总和以及用于处理报文的CPU核的数目,确定CPU核的平均负载流量;
根据非管理类IP报文的数据流的流量、非管理类非IP报文的数据流的流量以及CPU核的平均负载流量,给非管理类IP报文的数据流以及非管理类非IP报文的数据流指定接收端口的接收队列,以满足给每个接收队列分配的数据流的总流量之间的差值小于或等于阈值。
其中,阈值可以根据实际情况进行设置,较佳地,阈值为0。本申请对此并不限定。
换言之,针对一个接收端口,在给不同报文类型的数据流指定接收队列之后,每个接收队列上分配的数据流的总流量较佳地基本相同。
一些实现方式中,步骤205还可以包括:
在给非管理类IP报文的数据流以及非管理类非IP报文的数据流指定接收端口的接收队列之后,给管理类报文的数据流指定接收端口的索引最大的接收队列;其中,与接收端口绑定的所有CPU核中的负载最小的CPU核配置为与接收端口的索引最大的接收队列绑定。
其中,由于管理类报文占用的流量较少,且优先级较高,因此,可以指定管理类报文占用索引最大的接收队列,且将此接收队列指定给负载相对最小的CPU核。
下面参照图3,通过一个应用实例对本实施例的多核CPU的负载均衡方法进行举例说明。本应用实例提供的多核CPU的负载均衡方法可以包括以下步骤:
步骤301:初始化配置所有CPU核与接收端口的硬件中断绑定,配置CPU核与接收端口的指定接收队列绑定,生成接收端口的接收队列与报文类型的默认分配关系,启动定时器;
其中,根据准备用于报文转发的CPU核的数目、接收端口可以使用的接收队列的数目、分流的细化粒度(比如,将数据流分成若干类)配置相关参数;在完成参数配置后,启动定时器;
在本应用实例中,初始绑定并开启所有用于报文转发的CPU核到接收端口上,如前所述,Linux源码不支持接收报文类型的硬件中断同时上报给多个CPU核,因此,需要根据体系结构进行调整,比如,在ARM体系下修改GIC affinity代码可实现。
其中,假定使用的CPU核的数目是不变的,CPU核与接收端口的中断绑定关系配置完成后,不再改变。如果使用的CPU核的数目发生改变,则需要重新进行初始化配置。
其中,CPU核与接收端口的接收队列的绑定关系也可以是不变的。需要说明的是,针对管理类报文指定的接收队列与CPU核之间的绑定关系可以根据需要进行调整,比如,管理类报文指定的接收队列与整体负载最小的CPU核绑定。
其中,接收端口的接收队列与报文类型的默认分配关系可以是将不同报文类型的数据流平均分配到接收端口的指定的接收队列中。比如,接收端口的指定接收队列为3个,数据流的报文类型为18种,则可以将18种数据流平均分配到3个接收队列,即每个接收队列指定接收6种报文类型的数据流。
步骤302:将分流规则以及接收端口的接收队列与报文类型的分配关系添加到硬件;其中,当CPU芯片自身支持流分类并可以指定接收队列时,直接配置CPU芯片的硬件规则;如果不支持,则通过设置外置交换芯片的分流规则修改报文优先级,然后由CPU芯片的DMA单元根据优先级映射到不同接收队列中。
一些实现方式中,本应用实例中的初始化过程(包括步骤301及步骤302)可以由Linux操作系统自动选择整体负载最小的CPU核执行。
步骤303:硬件分流模块自动按分流规则将报文分类,并根据接收端口的接收队列与报文类型的分配关系转发报文到接收端口的指定接收队列。
步骤304:接收端口收到报文后,产生硬件中断,同时上报给所有的CPU核。
步骤305:每个CPU核收到硬件中断后,关闭当前CPU核的硬件中断,并触发当前CPU核的软中断。
步骤306:每个CPU核在软中断中仅读取指定给本CPU核的接收队列的报文;由于每个CPU核仅读取指定接收队列的报文,因此,不会产生竞争和冲突。
步骤307:每个CPU核在处理报文过程中,记录不同数据流的流量;其中,可选记录报文数或报文的总字节数,一般而言,路由器等设备的CPU转发能力受限于报文数,与报文大小关系不大。
步骤308:每个CPU核在报文处理完毕后,打开本CPU核的接收端口的硬件中断,等待下一个收包中断。
步骤309:每个CPU核记录的流量数据保存在共享存储区域;
步骤310:定时器每隔10分钟提示检查不同报文类型的数据流的流量,CPU核更新接收端口的接收队列与报文类型的分配关系。
其中,步骤310的分配关系更新过程可以由任一CPU核或者整体负载最小的CPU核执行,在确定更新后的分配关系之后,可以将更新后的分配关系写入硬件(比如,CPU芯片的寄存器或外置交换芯片)。之后,在步骤303中,硬件分流模块可以根据更新后的分配关系转发报文,如此,通过不同报文类型的数据流与接收队列的分配关系的改变,达到CPU核的负载均衡;通过定时器计时实现分配关系的周期性更新,达到多核负载的动态均衡。
下面对步骤301中接收端口的接收队列与报文类型的默认分配关系的确定过程以及步骤310中接收端口的接收队列与报文类型的分配关系的更新过程采用的均衡算法进行举例说明。
在本应用实例中,报文的分流规则如下:
匹配管理类报文,比如OAM(Operation Administration and Maintenance,操作管理维护)、RSTP(Rapid Spanning Tree Protocol,快速生成树协议)等,设置流索引index_mng;需要说明的是,上述管理类报文仅为举例,在实际应用中,可以根据实际需求确定需要匹配的管理类报文,比如其他的路由发现协议报文以及其他发送至设备本地的报文等;
匹配非管理类非IP报文,比如ARP(Address Resolution Protocol,地址解析协议),设置流索引index_noip;
匹配非管理类IP报文,其中,按源IP第4字节低位n比特(bit),值为x;目的IP第4字节低位m bit,值为y;x和y组成匹配字z,z=((x<<m)|y),可匹配2^(m+n)条流,设置每条流的索引为index_z;其中,|表示按位或,<<表示左移运算符。
在本应用实例中,index是index_z,index_mng,index_noip的集合;每条流对应的流量数组可以用flow[index]表示,其中,可以用包数作为单位。
以一个接收端口共r个可用接收队列,用于处理报文的CPU核的数目为s个为例,其中,s<=r,2^(m+n)+2>=s。
每个接收队列绑定的CPU核的计算过程可以用cpu(queue)表示。比如,每个CPU核绑定一个接收队列即可,如CPU0绑定接收队列0。因此,接收端口实际使用的接收队列数目为t=s+1。即,初始化时绑定s个CPU核与s个接收队列,在确定每个CPU核的负载之后,将剩余的索引最高的接收队列绑定至负载最小的CPU核。同一个CPU核绑定的多个接收队列中,接收队列的索引越大,优先级越高。比如,在双核CPU中,虽然一个接收端口的可用接收队列有8个,但在实际使用时,可以仅使用3个接收队列,其中两个接收队列用于接收非管理类非IP报文的数据流以及非管理类IP报文的数据流,索引最高的接收队列用于接收管理类报文的数据流。
给每种报文类型的数据流指定接收队列的计算过程可以用queue(index)表示。要求计算结果符合,每个接收队列中包含的数据流的流量总和大体相等。
下面参照图4说明为不同报文类型的数据流指定接收队列的一种可选计算方式。按照前述的分流规则,建立了2^(m+n)+2条规则来进行分流,设N=2^(m+n)+2,即可以区分N种报文类型的数据流。这些报文类型的数据流按照流量由大到小进行排序,可以将每种报文类型的数据流的流量分别标记为A1、A2……、AN;一个接收端口可以使用的接收队列为r个,则这些接收队列可以标记为R1、R2……、Rr,Rb表示第b个接收队列,第b个接收队列的流量表示为Tb。b大于或等于1且小于或等于r。
其中,对非管理类IP报文的所有数据流和非管理类非IP报文的数据流的流量求和,比如,表示为sum(flow[index_z]+flow[index_noip]);根据下式计算每个CPU核需要承担的平均负载流量:
ave()=sum(flow[index_z]+flow[index_noip])/s,其中,s表示用于处理报文的CPU核的数目。
如图4所示,当ave()等于0时,即此时生成默认分配关系,将N种报文类型的数据流平均分配给r个接收队列,或者,当接收端口实际使用的接收队列为t个时,可以将N种报文类型的数据流平均分配给t个接收队列。
当ave()不等于0时,可以按照以下方式进行分配:将第a种报文类型的数据流指定给接收队列Rb,其中,a大于或等于1且小于或等于N;此时,Tb=Aa,判断第b个接收队列的流量Tb是否大于或等于ave(),若Tb大于或等于ave(),则可以判断下一种报文类型的数据流如何分配,若Tb小于ave(),则需要将流量排序中处于最后的报文类型的数据流的流量加入第b个接收队列,再判断第b个接收队列的总流量是否大于或等于ave(),若Tb仍小于ave(),则将流量排序为倒数第二的报文类型的数据流的流量,直至第b个接收队列的总流量大于或等于ave()。
换言之,将N种报文类型的数据流按照流量由大到小进行排序,可以将每种报文类型的数据流的流量分别标记为A1、A2……、AN;AN为最小流量;如果A1大于或等于ave(),则将流量A1对应的报文类型指定给接收队列0,继续判断流量A2和ave()的大小,根据判断结果,给流量A2对应的报文类型指定接收队列;如果A1小于ave(),则判断A1+AN是否大于或等于ave(),如果是,则将流量A1和AN对应的报文类型指定给接收队列0,继续判断流量A2和ave()的大小,根据判断结果,给流量A2对应的报文类型指定接收队列;如果A1+AN小于ave(),则判断流量A1+AN+AN-1和ave()的大小,根据判断结果,给相应流量对应的报文类型指定接收队列;后续通过迭代方式依次进行计算。
需要说明的是,在一些实现方式中,如果A1+AN小于ave(),则可以依次判断大于流量A1+AN的流量(比如,流量A1+AN-1、流量A1+AN-2)和ave()的大小;在两个流量(A1与排序中的任一其他报文类型的数据流的流量)之和均不满足大于或等于ave()时,再继续判断三个流量之和(比如,流量A1+AN+AN-1)和ave()的大小;通过迭代方式依次进行计算,以确定每种报文类型指定的接收队列。
需要说明的是,本申请采用的均衡算法并不限定于此。本申请还可以采用其他均衡算法,最终能够确定每个接收队列指定的报文类型的数据流的流量总和大体相等即可。
需要注意的是,管理类报文单独占用索引最大的接收队列,管理类报文的流量较少且优先级高,因此,可以指定给负载相对最小的CPU核。
其中,接收端口的接收队列、CPU核可以根据实际芯片的支持数目确定,分流粒度受限于CPU芯片或外置交换芯片的分流规则的支持能力,可自由设置。如图5所示,以双核CPU、8个接收队列、预计分流粒度为16+2条为例,可掩码SIP(Source IP)的末位2比特(bit),DIP(Destination IP)的末位2bit,建立18条规则。初始绑定CPU0至接收队列0,CPU1绑定至接收队列1,然后,可以根据监控得到的流量数据,计算得到部分非管理类IP报文的数据流进入接收队列0,其余非管理类IP报文的数据流以及非管理类非IP报文的数据流进入接收队列1,管理类报文的数据流进入接收队列7,并绑定CPU1与接收队列7。即,在本例中,s=2,r=8,t=3(即实际使用了3个接收队列),2^(m+n)+2=16+2,m+n=4。
综上所述,本实施例将接收端口接收报文后产生的硬件中断输出到所有绑定的CPU核,然后每个CPU核再选择指定的接收队列收取报文,从而有效改善多核效率,提高设备的转发性能;通过硬件预分流代替软件分流,可以避免引入分流产生的CPU的额外开销;而且,通过定期监控每种报文类型的数据流的流量,周期性更新接收端口的接收队列与报文类型的分配关系,从而实现负载动态均衡。
实施例二、一种多核CPU的负载均衡装置,如图6所示,包括:
硬件分流模块601、接收端口602以及至少两个CPU核(比如,CPU核603a和603b);其中,每个接收端口602配置为与至少两个CPU核(比如,CPU核603a和603b)绑定,与同一个接收端口602绑定的CPU核配置为分别绑定接收端口602的一个或多个接收队列;
硬件分流模块601,用于针对每个接收端口602,根据分流规则将报文分类,并根据接收端口602的接收队列与报文类型的分配关系,将报文转发至与报文所属的报文类型存在分配关系的接收队列;
接收端口602,用于在接收到报文后,产生硬件中断,并将硬件中断同时上报给与接收端口602绑定的所有CPU核(比如,CPU核603a和603b);
接收到硬件中断的每个CPU核(比如,CPU核603a和603b),用于在软中断处理过程中,从与本CPU核绑定的接收队列读取报文。
一些实现方式中,硬件分流模块601至少包括CPU芯片的硬件分类单元以及DMA单元;其中,硬件分类单元,用于根据分流规则将报文分类;DMA单元,用于根据接收端口的接收队列与报文类型的分配关系,将报文转发至与此报文所属的报文类型存在分配关系的接收队列。
一些实现方式中,硬件分流模块601包括外置交换芯片、CPU芯片的硬件分类单元以及DMA单元;其中,外置交换芯片,用于根据分流规则将报文分类,并根据接收端口的接收队列与报文类型的分配关系,修改报文的优先级,并将报文发送给硬件分类单元;硬件分类单元,用于匹配报文的优先级;DMA单元,用于将报文转发至对应优先级的接收队列。
一些实现方式中,分流规则可以包括:
匹配报文为以下任一大类:管理类报文、非管理类IP报文、非管理类非IP报文;
在报文属于非管理类IP报文时,按照报文的IP地址,细分报文所属的报文类型。
一些实现方式中,CPU核(比如,CPU核603a或者603b),还用于在接收到接收端口602的硬件中断后,在报文处理过程中,记录不同报文类型的数据流的流量;满足预定条件的CPU核(比如,CPU核603a或者603b),还用于根据预定时长内与接收端口602绑定的所有CPU核记录的不同报文类型的数据流的流量,更新接收端口602的接收队列与报文类型的分配关系。
一些实现方式中,满足预定条件的CPU核(比如,CPU核603a或者603b),用于根据预定时长内与接收端口602绑定的所有CPU核记录的不同报文类型的数据流的流量,计算非管理类IP报文的数据流以及非管理类非IP报文的数据流的流量总和;根据流量总和以及用于处理报文的CPU核的数目,确定CPU核的平均负载流量;根据非管理类IP报文的数据流的流量、非管理类非IP报文的数据流的流量以及CPU核的平均负载流量,给非管理类IP报文的数据流以及非管理类非IP报文的数据流指定接收端口602的接收队列,以满足给每个接收队列分配的数据流的总流量之间的差值小于或等于阈值。
一些实现方式中,满足预定条件的CPU核(比如,CPU核603a或者603b),还用于在给非管理类IP报文的数据流以及非管理类非IP报文的数据流指定所述接收端口的接收队列之后,给管理类报文的数据流指定接收端口602的索引最大的接收队列;其中,与接收端口602绑定的所有CPU核中的负载最小的CPU核配置为与接收端口602的索引最大的接收队列绑定。
关于本实施例提供的多核CPU的负载均衡装置的详细处理流程可以参照实施例一描述的多核CPU的负载均衡方法,故于此不再赘述。
本领域普通技术人员可以理解上述方法中的部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本申请不限制于任何特定形式的硬件和软件的结合。
以上显示和描述了本申请的基本原理和主要特征和本申请的优点。本申请不受上述实施例的限制,上述实施例和说明书中描述的只是说明本申请的原理,在不脱离本申请精神和范围的前提下,本申请还会有各种变化和改进,这些变化和改进都落入要求保护的本申请范围内。
Claims (10)
1.一种多核中央处理器CPU的负载均衡方法,其特征在于,应用于通信设备,所述通信设备包括硬件分流模块、接收端口以及至少两个CPU核,其中,每个接收端口配置为与至少两个CPU核绑定,与同一个接收端口绑定的CPU核配置为分别绑定所述接收端口的一个或多个接收队列;
所述负载均衡方法包括:
针对每个接收端口,硬件分流模块根据分流规则将报文分类,并根据所述接收端口的接收队列与报文类型的分配关系,将所述报文转发至与所述报文所属的报文类型存在分配关系的接收队列;
所述接收端口接收到所述报文后,产生硬件中断,并将所述硬件中断同时上报给与所述接收端口绑定的所有CPU核;
接收到所述硬件中断的每个CPU核在软中断处理过程中,从与本CPU核绑定的接收队列读取报文;
所述硬件分流模块至少包括CPU芯片的硬件分类单元以及直接内存存取DMA单元;或者,所述硬件分流模块包括外置交换芯片、CPU芯片的硬件分类单元以及直接内存存取DMA单元;
当所述硬件分流模块至少包括CPU芯片的硬件分类单元以及直接内存存取DMA单元时,所述硬件分流模块根据分流规则将报文分类,并根据所述接收端口的接收队列与报文类型的分配关系,将所述报文转发至与所述报文所属的报文类型存在分配关系的接收队列,包括:
所述硬件分类单元根据分流规则将报文分类;
所述DMA单元根据所述接收端口的接收队列与报文类型的分配关系,将所述报文转发至与所述报文所属的报文类型存在分配关系的接收队列;
当所述硬件分流模块包括外置交换芯片、CPU芯片的硬件分类单元以及直接内存存取DMA单元时,所述硬件分流模块根据分流规则将报文分类,并根据所述接收端口的接收队列与报文类型的分配关系,将所述报文转发至与所述报文所属的报文类型存在分配关系的接收队列,包括:
所述外置交换芯片根据分流规则将报文分类,并根据接收端口的接收队列与报文类型的分配关系,修改所述报文的优先级,并将所述报文发送给所述硬件分类单元;
所述硬件分类单元匹配所述报文的优先级;
所述DMA单元将所述报文转发至对应所述优先级的接收队列。
2.根据权利要求1所述的负载均衡方法,其特征在于,所述分流规则包括:
匹配报文为以下任一大类:管理类报文、非管理类网络协议IP报文、非管理类非IP报文;
在所述报文属于非管理类IP报文时,按照所述报文的IP地址,细分所述报文所属的报文类型。
3.根据权利要求2所述的负载均衡方法,其特征在于,所述负载均衡方法还包括:
针对所述接收端口,所述接收到所述硬件中断的每个CPU核在报文处理过程中,记录不同报文类型的数据流的流量;
满足预定条件的CPU核根据预定时长内与所述接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,更新所述接收端口的接收队列与报文类型的分配关系。
4.根据权利要求3所述的负载均衡方法,其特征在于,所述满足预定条件的CPU核根据预定时长内与所述接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,更新所述接收端口的接收队列与报文类型的分配关系,包括:
根据预定时长内与所述接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,计算非管理类IP报文的数据流以及非管理类非IP报文的数据流的流量总和;
根据所述流量总和以及用于处理报文的CPU核的数目,确定CPU核的平均负载流量;
根据非管理类IP报文的数据流的流量、非管理类非IP报文的数据流的流量以及CPU核的平均负载流量,给非管理类IP报文的数据流以及非管理类非IP报文的数据流指定所述接收端口的接收队列,以满足给每个接收队列分配的数据流的总流量之间的差值小于或等于阈值。
5.根据权利要求4所述的负载均衡方法,其特征在于,所述满足预定条件的CPU核根据预定时长内与所述接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,更新所述接收端口的接收队列与报文类型的分配关系,还包括:
在给非管理类IP报文的数据流以及非管理类非IP报文的数据流指定所述接收端口的接收队列之后,给管理类报文的数据流指定所述接收端口的索引最大的接收队列;其中,与所述接收端口绑定的所有CPU核中的负载最小的CPU核配置为与所述接收端口的索引最大的接收队列绑定。
6.一种多核中央处理器CPU的负载均衡装置,其特征在于,包括:硬件分流模块、接收端口以及至少两个CPU核;其中,每个接收端口配置为与至少两个CPU核绑定,与同一个接收端口绑定的CPU核配置为分别绑定所述接收端口的一个或多个接收队列;
所述硬件分流模块,用于针对每个接收端口,根据分流规则将报文分类,并根据所述接收端口的接收队列与报文类型的分配关系,将所述报文转发至与所述报文所属的报文类型存在分配关系的接收队列;
所述接收端口,用于在接收到所述报文后,产生硬件中断,并将所述硬件中断同时上报给与所述接收端口绑定的所有CPU核;
接收到所述硬件中断的每个CPU核,用于在软中断处理过程中,从与本CPU核绑定的接收队列读取报文;
所述硬件分流模块至少包括CPU芯片的硬件分类单元以及直接内存存取DMA单元;或者,所述硬件分流模块包括外置交换芯片、CPU芯片的硬件分类单元以及直接内存存取DMA单元;
当所述硬件分流模块至少包括CPU芯片的硬件分类单元以及直接内存存取DMA单元时,所述硬件分类单元,用于根据分流规则将报文分类;
所述DMA单元,用于根据所述接收端口的接收队列与报文类型的分配关系,将所述报文转发至与所述报文所属的报文类型存在分配关系的接收队列;
当所述硬件分流模块包括外置交换芯片、CPU芯片的硬件分类单元以及直接内存存取DMA单元时,所述外置交换芯片,用于根据分流规则将报文分类,并根据接收端口的接收队列与报文类型的分配关系,修改所述报文的优先级,并将所述报文发送给所述硬件分类单元;
所述硬件分类单元,用于匹配所述报文的优先级;
所述DMA单元,用于将所述报文转发至对应所述优先级的接收队列。
7.根据权利要求6所述的负载均衡装置,其特征在于,所述分流规则包括:
匹配报文为以下任一大类:管理类报文、非管理类网络协议IP报文、非管理类非IP报文;
在所述报文属于非管理类IP报文时,按照所述报文的IP地址,细分所述报文所属的报文类型。
8.根据权利要求7所述的负载均衡装置,其特征在于,
所述CPU核,还用于在接收到接收端口的所述硬件中断后,在报文处理过程中,记录不同报文类型的数据流的流量;
满足预定条件的CPU核,还用于根据预定时长内与所述接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,更新所述接收端口的接收队列与报文类型的分配关系。
9.根据权利要求8所述的负载均衡装置,其特征在于,所述满足预定条件的CPU核,用于根据预定时长内与所述接收端口绑定的所有CPU核记录的不同报文类型的数据流的流量,计算非管理类IP报文的数据流以及非管理类非IP报文的数据流的流量总和;根据所述流量总和以及用于处理报文的CPU核的数目,确定CPU核的平均负载流量;根据非管理类IP报文的数据流的流量、非管理类非IP报文的数据流的流量以及CPU核的平均负载流量,给非管理类IP报文的数据流以及非管理类非IP报文的数据流指定所述接收端口的接收队列,以满足给每个接收队列分配的数据流的总流量之间的差值小于或等于阈值。
10.根据权利要求9所述的负载均衡装置,其特征在于,所述满足预定条件的CPU核,还用于在给非管理类IP报文的数据流以及非管理类非IP报文的数据流指定所述接收端口的接收队列之后,给管理类报文的数据流指定所述接收端口的索引最大的接收队列;其中,与所述接收端口绑定的所有CPU核中的负载最小的CPU核配置为与所述接收端口的索引最大的接收队列绑定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611111417.0A CN106713185B (zh) | 2016-12-06 | 2016-12-06 | 一种多核cpu的负载均衡方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611111417.0A CN106713185B (zh) | 2016-12-06 | 2016-12-06 | 一种多核cpu的负载均衡方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106713185A CN106713185A (zh) | 2017-05-24 |
CN106713185B true CN106713185B (zh) | 2019-09-13 |
Family
ID=58937628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611111417.0A Active CN106713185B (zh) | 2016-12-06 | 2016-12-06 | 一种多核cpu的负载均衡方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106713185B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109327405B (zh) * | 2017-07-31 | 2022-08-12 | 迈普通信技术股份有限公司 | 报文保序方法及网络设备 |
CN107436859A (zh) * | 2017-08-04 | 2017-12-05 | 湖南利能科技股份有限公司 | 一种基于amp的数据采集方法 |
CN108521351B (zh) * | 2018-03-21 | 2021-02-05 | 东软集团股份有限公司 | 会话流量统计方法、处理器核心、存储介质、电子设备 |
CN108803509A (zh) * | 2018-05-31 | 2018-11-13 | 广东盛哲科技有限公司 | 一种多类型cpu兼容工业控制器系统 |
CN109450816B (zh) * | 2018-11-19 | 2022-08-12 | 迈普通信技术股份有限公司 | 一种队列调度方法、装置、网络设备及存储介质 |
CN109714269B (zh) * | 2018-12-19 | 2022-05-17 | 迈普通信技术股份有限公司 | 一种数据处理方法及网络设备 |
CN111371694B (zh) * | 2018-12-26 | 2022-10-04 | 中兴通讯股份有限公司 | 一种分流方法、装置和系统、处理设备和存储介质 |
CN109729021A (zh) * | 2018-12-27 | 2019-05-07 | 北京天融信网络安全技术有限公司 | 一种报文处理方法及电子设备 |
CN109672575B (zh) * | 2019-01-30 | 2022-03-08 | 新华三技术有限公司合肥分公司 | 数据处理方法及电子设备 |
CN110532205B (zh) * | 2019-07-17 | 2021-04-06 | 浙江大华技术股份有限公司 | 数据传输方法、装置、计算机设备和计算机可读存储介质 |
CN110704211B (zh) * | 2019-09-29 | 2022-03-11 | 烽火通信科技股份有限公司 | 一种在多核系统下跨cpu收包的方法及系统 |
CN110750367B (zh) * | 2019-09-30 | 2023-03-17 | 超聚变数字技术有限公司 | 一种队列通信的方法、系统及相关设备 |
CN110768915A (zh) * | 2019-10-31 | 2020-02-07 | 杭州迪普科技股份有限公司 | 一种分流方法及装置 |
CN111163018B (zh) * | 2019-12-02 | 2022-08-26 | 华为技术有限公司 | 网络设备及其降低传输时延的方法 |
CN111131292B (zh) * | 2019-12-30 | 2022-04-26 | 北京天融信网络安全技术有限公司 | 报文分流方法、装置、网络安全检测设备及存储介质 |
CN111314249B (zh) * | 2020-05-08 | 2021-04-20 | 深圳震有科技股份有限公司 | 一种5g数据转发平面的避免数据包丢失的方法和服务器 |
CN112162901A (zh) * | 2020-09-21 | 2021-01-01 | 东软集团股份有限公司 | Cpu利用率的确定方法、系统、存储介质和电子设备 |
CN113079077B (zh) * | 2021-03-30 | 2022-04-08 | 郑州信大捷安信息技术股份有限公司 | 基于队列实现的dpdk架构下隧道报文对称rss处理方法及系统 |
CN113992589B (zh) * | 2021-10-21 | 2023-05-26 | 绿盟科技集团股份有限公司 | 一种报文分流方法、装置及电子设备 |
CN113938519A (zh) * | 2021-11-11 | 2022-01-14 | 深圳市风云实业有限公司 | 一种基于软硬件结合的网络流量负载均衡方法及系统 |
CN114500470A (zh) * | 2021-12-29 | 2022-05-13 | 天翼云科技有限公司 | 一种数据包处理方法及装置 |
CN115225430A (zh) * | 2022-07-18 | 2022-10-21 | 中安云科科技发展(山东)有限公司 | 一种高性能IPsec VPN CPU负载均衡方法 |
CN115361451B (zh) * | 2022-10-24 | 2023-03-24 | 中国人民解放军国防科技大学 | 一种网络通信并行处理方法及系统 |
CN116668375B (zh) * | 2023-07-31 | 2023-11-21 | 新华三技术有限公司 | 一种报文分流方法、装置、网络设备及存储介质 |
CN117827497A (zh) * | 2024-03-05 | 2024-04-05 | 中国电子科技集团公司第三十研究所 | 基于国产多核处理器的流量统计并实时排序的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013383A (zh) * | 2007-02-13 | 2007-08-08 | 杭州华为三康技术有限公司 | 实现多核cpu进行报文联合处理的系统及方法 |
CN104901898A (zh) * | 2015-06-08 | 2015-09-09 | 东软集团股份有限公司 | 一种负载均衡方法及装置 |
CN104965810A (zh) * | 2015-05-08 | 2015-10-07 | 国家计算机网络与信息安全管理中心 | 多核模式下快速处理数据报文的方法及装置 |
-
2016
- 2016-12-06 CN CN201611111417.0A patent/CN106713185B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013383A (zh) * | 2007-02-13 | 2007-08-08 | 杭州华为三康技术有限公司 | 实现多核cpu进行报文联合处理的系统及方法 |
CN104965810A (zh) * | 2015-05-08 | 2015-10-07 | 国家计算机网络与信息安全管理中心 | 多核模式下快速处理数据报文的方法及装置 |
CN104901898A (zh) * | 2015-06-08 | 2015-09-09 | 东软集团股份有限公司 | 一种负载均衡方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106713185A (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106713185B (zh) | 一种多核cpu的负载均衡方法及装置 | |
JP6938766B2 (ja) | パケット制御方法およびネットワーク装置 | |
JP5640234B2 (ja) | マネージド・ネットワークでのレイヤ2のパケット集約及び断片化 | |
US6862265B1 (en) | Weighted fair queuing approximation in a network switch using weighted round robin and token bucket filter | |
US7150021B1 (en) | Method and system to allocate resources within an interconnect device according to a resource allocation table | |
US7505483B2 (en) | Apparatus for transmitting WPAN MAC frames and method thereof | |
CN103404094B (zh) | 数据处理方法、系统及交换机 | |
CN105591974B (zh) | 报文处理方法、装置及系统 | |
US20070268903A1 (en) | System and Method for Assigning Packets to Output Queues | |
CN105122747B (zh) | Sdn网络中的控制设备和控制方法 | |
CN106020926B (zh) | 一种用于虚拟交换机技术中数据传输的方法及装置 | |
CN104348740A (zh) | 数据包处理方法和系统 | |
CN102783097A (zh) | 分组转发系统、控制设备、转发设备以及用于准备处理规则的程序和方法 | |
CN110022267A (zh) | 网络数据包处理方法及装置 | |
TW201001975A (en) | Network system with quality of service management and associated management method | |
CN104468401A (zh) | 一种报文处理方法和装置 | |
CN108347376A (zh) | 一种调整转发路径的方法、装置及系统 | |
CN101076982A (zh) | 用于管理流控制的技术 | |
US9336006B2 (en) | High-performance parallel traffic management for multi-core platforms | |
JP2003283563A (ja) | トラヒック監視システム | |
CN101808037B (zh) | 交换网中流量管理的方法和装置 | |
CN110138685A (zh) | 一种通信方法及装置 | |
CN101335707B (zh) | 一种基于预分配的流控方法和装置 | |
JP2008092485A (ja) | 分散型スイッチシステムのパケット再整列器およびパケット再整列方法 | |
CN109361749A (zh) | 报文处理方法、相关设备及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |