CN107317759A - 一种网卡的线程级动态均衡调度方法 - Google Patents
一种网卡的线程级动态均衡调度方法 Download PDFInfo
- Publication number
- CN107317759A CN107317759A CN201710442620.4A CN201710442620A CN107317759A CN 107317759 A CN107317759 A CN 107317759A CN 201710442620 A CN201710442620 A CN 201710442620A CN 107317759 A CN107317759 A CN 107317759A
- Authority
- CN
- China
- Prior art keywords
- thread
- network interface
- interface card
- flow table
- buffer queue
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种网卡的线程级动态均衡调度方法。本方法为:1)在网卡中设置一流表;流表中的每个条目包括键值和结果两部分,其中键值为业务流中业务报文的五元组,结果为缓存队列号;2)网卡定时去检测各业务处理线程的缓存队列利用率,将线程的缓存队列利用率超过设定阈值的线程的状态设置为已满,否则设置为可用;3)将状态为可用的线程构建一线程队列;4)网卡对收到的每一业务流,根据该业务流的键值查找流表,如果有匹配条目,则将该业务流的业务报文发送到对应的缓存队列;如果没有则从线程队列中选取一线程生成一条目保存到流表中然后发送;5)当一业务流结束或者超时时,网卡删除所述流表中该业务流对应的条目。
Description
技术领域
本发明属于INTERNET技术领域,涉及一种网卡的均衡调度方法,具体涉及一种网卡线程级动态均衡调度技术实现方法。
背景技术
网卡一般是部署多个线程处理同一类业务报文,大都只通过对报文特征字段提取,并以此计算数据报文的HASH值,然后按照HASH值上送至不同的收包缓存中。这种方式优点是简单高效,但是暴露出的问题也很明显,首先服务器CPU性能的消耗因业务复杂程度而存在差异;其次网卡上每个线程的缓存队列利用率并不均匀;最后网卡并不主动感知业务线程的状态,当线程的吞吐量达到极限或线程异常时,将会造成数据的丢失。
基于这种现状,本发明现提出一种基于线程的动态负载均衡调度技术,以最大程度缓解线程级负载不均导致的丢包问题。
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种网卡的线程级动态均衡调度方法。
本发明的技术方案为:
一种网卡的线程级动态均衡调度方法,其步骤为:
1)在网卡中设置一流表;流表中的每个条目包括键值和结果两部分,其中键值为业务流中业务报文的五元组或五元组中的若干设定信息,结果为业务流的去向,即线程的缓存队列号;
2)网卡定时去检测各业务处理线程的缓存队列利用率,将线程的缓存队列利用率超过设定阈值的线程的状态设置为已满,否则设置为可用;
3)将状态为可用的线程构建一线程队列;
4)网卡对收到的每一业务流,根据该业务流的键值查找所述流表,如果流表中有匹配的条目,则将该业务流的业务报文发送到该条目中缓存队列号对应的缓存队列;如果没有匹配的条目,则从所述线程队列中选取一线程,然后根据所选线程的缓存队列号和该业务流的键值生成所述流表的一条目保存到所述流表中,然后将该业务流的业务报文发送到所选线程的缓存队列;
5)当一业务流结束或者超时时,网卡删除所述流表中该业务流对应的条目。
所述网卡通过哈希方式在所述线程队列中选取一线程。
所述五元组包括业务报文的协议号、源IP地址、目的IP地址、源端口和目的端口。
如果业务报文中没有端口号,则所述键值为业务报文的源IP地址和目的IP地址信息。
使用线程的缓存队列利用率来标识每一个状态可用的线程的处理能力;选取缓存队列利用率低的线程构建所述线程队列。
要达到动态调度流量的目的,需要实现以下两个关键技术:
1)网卡需要感知主机业务线程状态,目的是为网卡的流量调度提供依据;网卡一般是部署多个线程处理同一类业务报文,通过提取数据报文特征字段,并以此计算数据报文的HASH值,然后按照HASH值上送至不同线程的缓存队列中。
2)网卡端流量的调度,基于流表对各个线程的缓存队列进行调度。
有鉴于此,本发明主要内容如下所示:
线程状态维护:网卡需要定时(时间周期可支持配置)获取每个线程的缓存队列的利用率,并维护线程状态。
流表维护:报文中没有端口号,则根据报文中源IP地址+目的IP地址;如果报文中带有端口信息,则根据报文中协议号+报文中源IP地址+报文中目的IP地址+报文中源端口号+报文中目的端口号建立流表。
线程的缓存队列调度:调度方式基于流表,在保证同源同宿前提下,使各队列利用率更加均衡。
本发明包括如下步骤:
a、主动感知模块,网卡定时去检测主机业务线程的状态,并维护这些状态信息,为后续调度提供依据。每一类业务报文分配若干线程,由于业务复杂程度不同,处理同一类业务报文的各线程的缓存队列利用率并不相同。
a1、线程的状态分为两种:分别是可用和已满,线程的缓存队列利用率超过阈值的线程状态为已满状态;未超过的线程状态为可用状态。
a2、网卡定时获取每个线程的缓存队列利用率,将获取到的利用率与阈值(用户可配置)比较并得到线程的状态,将该状态更新为该线程的最新状态。
a3、选取若干状态为可用的线程,构建一线程队列。本发明使用每个线程的缓存队列利用率来标识每一个状态可用的线程的处理能力。缓存队列利用率越低的线程则处理能力越强。在构成可用的线程队列时,缓存队列利用率越低的线程则所占比重高,反之亦然。
b、均衡调度模块,基于流表的调度策略使线程间能够更加均衡,整体利用率更高。
b1、流表的每个条目由键值和结果两部分组成,键值是“协议号+源IP地址+目的IP地址+源端口+目的端口”五元组,结果存放这条流的去向,即线程的缓存队列号。
b2、每条流的首包通过哈希方式在可用状态的线程队列中选择,哈希方式支持按源IP地址+目的IP地址、协议号+IP地址+端口等方式,用户可配置。即那些状态为已满的线程不会再接收新建流,直到它们状态更新。
b3、每条流的后续包通过键值查找流表,得到表结果中线程的缓存队列号,将该包继续送到该缓存队列号对应的缓存队列中,这样保证每条流的同源同宿。如果某条流对应的线程状态为已满,该条流的后续流量还是会被送到对应的线程,保证同源同宿,但不会为该流再补充一线程。
b4、当某条流结束或者超时时,则流表中相应的条目就会被淘汰。
与现有技术相比,本发明的积极效果为:
本发明通过网卡感知业务主机线程的状态,并基于流表对各个状态可用线程的缓存队列进行动态负载均衡调度,以最大程度缓解线程级负载不均导致的丢包问题。
通过记录了一天10:00至11点12:30至13:30 15:30至16:30及17:00至17:45四个时段的丢包统计情况:
平均丢包率:
Mean_drop_rate=0.000275634377760396(本发明动态调度)
Mean_drop_rate=0.000420379283812024(现有技术静态调度)
平均丢包次数:
Mean_drop_num=0.000647249190938511(本发明动态调度)
Mean_drop_num=0.00125325756478934(现有技术静态调度)
根据一天四个时段的丢包统计情况可以看出,本发明动态调度情况下的平均丢包率和平均丢包次数,均低于静态调度情况下的平均丢包率和平均丢包次数。
每次丢包持续时间如图2,单次丢包持续时间占比图,横向表示时间,纵向表示占比。由图2可见,本发明动态调度单次丢包持续时间主要分布在(0-5)时间段内,其中分布在时间(0-1)上的占比大于70%。动态调度单次丢包持续时间明显优于静态调度的单次丢包时间。
附图说明
图1为本发明方法的处理流程图;
图2为效果对比图。
具体实施方式
下面结合附图对流程图作进一步的描述:
步骤101,网卡主动定时获取主机业务线程的缓存队列利用率,获取定时周期用户可配置;
步骤102,根据每个获取到的每个线程的缓存队列利用率,与阈值进行比较,得到线程的状态(超过阈值的记为已满状态;未超过的记为可用状态),将此状态更新为其最新状态;
步骤103,接入数据流量,提取报文中的五元组信息,以此为键值查找流表,可以得到结果是否匹配,如果结果匹配,说明该流已有数据包,由步骤106进行处理;否则由步骤104进行处理;
步骤104,未匹配流表,说明是该流首包,需要在所有可用状态的线程的缓存队列中负载均衡地上送,负载均衡方式可以选择根据“源IP+目的IP”哈希或“协议号+IP地址+端口”哈希,用户可配置;
步骤105,将步骤104中选择的缓存队列号作为流表条目的结果,报文五元组作为流表条目的键值,添加到流表中,该流的后续包就能查到流表,送到与收包相同的队列,保证流的同源同宿性;
步骤106,能够匹配流表,说明不是该流首包,为保证同源同宿性,上送到流表条目结果中指定的线程的缓存队列;
本发明主要在于提出一种“网卡上带有主动感知的、基于流表的线程级负载均衡调度技术”的实现方法。
以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (5)
1.一种网卡的线程级动态均衡调度方法,其步骤为:
1)在网卡中设置一流表;流表中的每个条目包括键值和结果两部分,其中键值为业务流中业务报文的五元组或五元组中的若干设定信息,结果为业务流的去向,即线程的缓存队列号;
2)网卡定时去检测各业务处理线程的缓存队列利用率,将线程的缓存队列利用率超过设定阈值的线程的状态设置为已满,否则设置为可用;
3)将状态为可用的线程构建一线程队列;
4)网卡对收到的每一业务流,根据该业务流的键值查找所述流表,如果流表中有匹配的条目,则将该业务流的业务报文发送到该条目中缓存队列号对应的缓存队列;如果没有匹配的条目,则从所述线程队列中选取一线程,然后根据所选线程的缓存队列号和该业务流的键值生成所述流表的一条目保存到所述流表中,然后将该业务流的业务报文发送到所选线程的缓存队列;
5)当一业务流结束或者超时时,网卡删除所述流表中该业务流对应的条目。
2.如权利要求1所述的方法,其特征在于,所述网卡通过哈希方式在所述线程队列中选取一线程。
3.如权利要求1或2所述的方法,其特征在于,所述五元组包括业务报文的协议号、源IP地址、目的IP地址、源端口和目的端口。
4.如权利要求3所述的方法,其特征在于,如果业务报文中没有端口号,则所述键值为业务报文的源IP地址和目的IP地址信息。
5.如权利要求1所述的方法,其特征在于,使用线程的缓存队列利用率来标识每一个状态可用的线程的处理能力;选取缓存队列利用率低的线程构建所述线程队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710442620.4A CN107317759A (zh) | 2017-06-13 | 2017-06-13 | 一种网卡的线程级动态均衡调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710442620.4A CN107317759A (zh) | 2017-06-13 | 2017-06-13 | 一种网卡的线程级动态均衡调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107317759A true CN107317759A (zh) | 2017-11-03 |
Family
ID=60182269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710442620.4A Pending CN107317759A (zh) | 2017-06-13 | 2017-06-13 | 一种网卡的线程级动态均衡调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107317759A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170509A (zh) * | 2017-12-14 | 2018-06-15 | 上海格尔安全科技有限公司 | 一种避免数据流对应的网卡队列号缓存过早失效的方法 |
CN109408233A (zh) * | 2018-10-17 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种缓存资源分配方法及装置 |
CN109992405A (zh) * | 2017-12-29 | 2019-07-09 | 西安华为技术有限公司 | 一种处理数据报文的方法和网卡 |
CN110768829A (zh) * | 2019-10-23 | 2020-02-07 | 江苏省未来网络创新研究院 | 一种基于dpdk实现流量分析业务性能线性增长的方法 |
CN112749028A (zh) * | 2021-01-11 | 2021-05-04 | 科大讯飞股份有限公司 | 网络流量处理方法、相关设备及可读存储介质 |
CN116996446A (zh) * | 2023-07-26 | 2023-11-03 | 中科驭数(北京)科技有限公司 | 哈希负载均衡方法、装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1937574A (zh) * | 2005-09-19 | 2007-03-28 | 北京大学 | 对网络流进行分类、状态跟踪和报文处理的装置和方法 |
US20080077366A1 (en) * | 2006-09-22 | 2008-03-27 | Neuse Douglas M | Apparatus and method for capacity planning for data center server consolidation and workload reassignment |
CN102045253A (zh) * | 2010-12-06 | 2011-05-04 | 杭州华三通信技术有限公司 | 链路聚合网络中发送视频监控业务报文的方法及设备 |
CN102769575A (zh) * | 2012-08-08 | 2012-11-07 | 南京中兴特种软件有限责任公司 | 一种用于智能网卡的流量负载均衡方法 |
CN104639578A (zh) * | 2013-11-08 | 2015-05-20 | 华为技术有限公司 | 多协议栈负载均衡方法及装置 |
US20160306680A1 (en) * | 2013-12-26 | 2016-10-20 | Huawei Technologies Co., Ltd. | Thread creation method, service request processing method, and related device |
-
2017
- 2017-06-13 CN CN201710442620.4A patent/CN107317759A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1937574A (zh) * | 2005-09-19 | 2007-03-28 | 北京大学 | 对网络流进行分类、状态跟踪和报文处理的装置和方法 |
US20080077366A1 (en) * | 2006-09-22 | 2008-03-27 | Neuse Douglas M | Apparatus and method for capacity planning for data center server consolidation and workload reassignment |
CN102045253A (zh) * | 2010-12-06 | 2011-05-04 | 杭州华三通信技术有限公司 | 链路聚合网络中发送视频监控业务报文的方法及设备 |
CN102769575A (zh) * | 2012-08-08 | 2012-11-07 | 南京中兴特种软件有限责任公司 | 一种用于智能网卡的流量负载均衡方法 |
CN104639578A (zh) * | 2013-11-08 | 2015-05-20 | 华为技术有限公司 | 多协议栈负载均衡方法及装置 |
US20160306680A1 (en) * | 2013-12-26 | 2016-10-20 | Huawei Technologies Co., Ltd. | Thread creation method, service request processing method, and related device |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170509A (zh) * | 2017-12-14 | 2018-06-15 | 上海格尔安全科技有限公司 | 一种避免数据流对应的网卡队列号缓存过早失效的方法 |
CN108170509B (zh) * | 2017-12-14 | 2021-11-26 | 上海格尔安全科技有限公司 | 一种避免数据流对应的网卡队列号缓存过早失效的方法 |
CN109992405A (zh) * | 2017-12-29 | 2019-07-09 | 西安华为技术有限公司 | 一种处理数据报文的方法和网卡 |
CN109992405B (zh) * | 2017-12-29 | 2021-10-15 | 西安华为技术有限公司 | 一种处理数据报文的方法和网卡 |
CN109408233A (zh) * | 2018-10-17 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种缓存资源分配方法及装置 |
CN110768829A (zh) * | 2019-10-23 | 2020-02-07 | 江苏省未来网络创新研究院 | 一种基于dpdk实现流量分析业务性能线性增长的方法 |
CN112749028A (zh) * | 2021-01-11 | 2021-05-04 | 科大讯飞股份有限公司 | 网络流量处理方法、相关设备及可读存储介质 |
CN112749028B (zh) * | 2021-01-11 | 2024-06-07 | 科大讯飞股份有限公司 | 网络流量处理方法、相关设备及可读存储介质 |
CN116996446A (zh) * | 2023-07-26 | 2023-11-03 | 中科驭数(北京)科技有限公司 | 哈希负载均衡方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107317759A (zh) | 一种网卡的线程级动态均衡调度方法 | |
CN102915254B (zh) | 任务管理方法及装置 | |
CN101977162B (zh) | 一种高速网络的负载均衡方法 | |
CN1770734B (zh) | 网络装置的通信量控制方法 | |
CN107196870A (zh) | 一种基于dpdk的流量动态负载均衡方法 | |
CN103139093B (zh) | 基于fpga的高速网络数据流负载均衡调度方法 | |
CN101610209B (zh) | 一种多核并行的网络业务流处理方法及设备 | |
CN1206600C (zh) | 一种全分布式的集群网络服务器系统 | |
CN101795230A (zh) | 一种网络流量还原方法 | |
CN107659515A (zh) | 报文处理方法、装置、报文处理芯片及服务器 | |
CN102970242B (zh) | 一种实现负载均衡的方法 | |
US10181999B2 (en) | Optimizing information related to a route and/or a next hop for multicast traffic | |
CN103873523B (zh) | 客户端集群访问方法及装置 | |
CN103049336A (zh) | 一种基于哈希的网卡软中断负载均衡方法 | |
CN102594691A (zh) | 一种处理报文的方法及装置 | |
CN107071332A (zh) | 视频图像传输处理方法和视频图像传输处理装置 | |
CN105049368A (zh) | 一种混合网络下基于优先权的负载均衡算法 | |
CN102497430B (zh) | 一种分流设备实现系统和方法 | |
CN101340633B (zh) | 一种增值服务消息过负荷控制装置及方法 | |
CN107579929A (zh) | 一种可靠连接通信队列对的设置方法、系统及相关装置 | |
CN101478486B (zh) | 一种交换网数据调度方法、设备和系统 | |
CN102387219A (zh) | 一种多网卡负载均衡系统和方法 | |
CN106209683B (zh) | 基于数据中心广域网的数据传输方法及系统 | |
CN105591790A (zh) | 数据通信连接池管理装置 | |
CN104519150B (zh) | 网络地址转换端口分配方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171103 |