CN112799861A - 一种多核架构下流量限速无锁并发实现的方法 - Google Patents

一种多核架构下流量限速无锁并发实现的方法 Download PDF

Info

Publication number
CN112799861A
CN112799861A CN202110122692.7A CN202110122692A CN112799861A CN 112799861 A CN112799861 A CN 112799861A CN 202110122692 A CN202110122692 A CN 202110122692A CN 112799861 A CN112799861 A CN 112799861A
Authority
CN
China
Prior art keywords
tokens
token
queue
lock
free
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.)
Granted
Application number
CN202110122692.7A
Other languages
English (en)
Other versions
CN112799861B (zh
Inventor
靳龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Hongji Information Technology Co Ltd
Original Assignee
Shanghai Hongji Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Hongji Information Technology Co Ltd filed Critical Shanghai Hongji Information Technology Co Ltd
Priority to CN202110122692.7A priority Critical patent/CN112799861B/zh
Publication of CN112799861A publication Critical patent/CN112799861A/zh
Application granted granted Critical
Publication of CN112799861B publication Critical patent/CN112799861B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/215Flow control; Congestion control using token-bucket

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

本发明公开了一种多核架构下流量限速无锁并发实现的方法,将令牌桶设计成循环免锁队列,队列长度为N;每一个处理数据流的CPU核分配一个令牌桶,处理数据流的核数为M;一个单独CPU核轮询访问M个免锁队列,往队列添加令牌;以C0表示添加令牌的CPU核,C0周期轮询给各个队列添加令牌,每个周期C0首先计算各个队列消耗令牌比例,把这个周期要添加的令牌按比例添加到各个队列中;处理数据流的CPU核,通过计算数据报大小获取自己队列的令牌,如果令牌不够,根据策略选择缓存或丢弃数据报文;本发明通过把令牌桶分布在不用CPU处理核上,把生产令牌核消费令牌分别处理,通过免锁队列实现令牌计算。

Description

一种多核架构下流量限速无锁并发实现的方法
技术领域
本发明涉及网络通信技术领域,具体是指一种多核架构下流量限速无锁并发实现的方法。
背景技术
流量限速和流量整形是数据通信设备的关键组件,例如,企业网络中,存在语音、视频和数据等多种不同的业务,当大量的业务流量进入网络侧时,可能会因为带宽不足产生拥塞,需要对三种业务提供不同的带宽,优先保证语音业务报文的转发,其次是视频业务,最后是数据业务。因此可以对不同业务进行不同的流量监督,为语音报文提供最大带宽,视频报文次之,数据报文带宽最小,从而在网络产生拥塞时,可以保证语音报文优先通过。
流量限速和流量整形是成熟的QoS(服务质量)技术,华为、锐捷和Juniper等主流企业的交换机和路由器都支持该技术,深信服的流量控制产品也基于流量限速和流量整形,所以,流量限速和流量整形技术应用非常广泛并且该技术也非常成熟,不同的是各个厂商在实现上各显神通,主要比拼的是控制的精度和处理的吞吐量。
流量限速和流量整形原理基本以令牌桶技术为基础,不同是各个厂家在实现上有所差别,令牌桶算法的基本过程是,每过1/R秒,令牌桶中增加一个令牌,桶中最多存放B个令牌,如果令牌桶满了,新放入的令牌会被丢弃,当一个N字节的数据包到达时,消耗N个令牌,然后发送该数据包,如果桶中可用令牌小于N,则该数据包将被缓存或丢弃。
目前处理器基本都是多核处理器,为了增加处理速度,数据流量流过设备时,设备多个CPU核要同时参与计算产生令牌和消费令牌的操作。为了防止对令牌桶数据的并发处理导致错误,一般通过自旋锁来保护多个CPU核共同处理的数据。
自旋锁的特点是,一个CPU执行spin_lock(自旋锁),其它CPU需要在执行spin_lock时被阻塞,被阻塞的CPU不能继续执行也不会被释放。这导致了两个问题:
1.由于被阻塞的CPU不被释放,导致CPU资源浪费;
2.由于执行被阻塞,被处理的数据等待自旋锁释放资源,该数据得不到及时处理,导致数据延迟和吞吐量下降。
所以,一种多核架构下流量限速无锁并发实现的方法成为人们亟待解决的问题。
发明内容
本发明的目的是通过在多核架构下,使每一个CPU核能单独处理同一个令牌桶数据,来实现流量限速和流量整形,对任何一个CPU处理数据报文时,访问令牌桶数据不需要对令牌桶加锁,避免数据报文传输的延迟和提升CPU核的利用率。
为实现上述目的,本发明提供的技术方案为:一种多核架构下流量限速无锁并发实现的方法,包括以下步骤:
步骤1:将令牌桶设计成循环免锁队列,队列长度为N;
步骤2:每一个处理数据流的CPU核分配一个令牌桶,处理数据流的核数为M;
步骤3:一个单独CPU核轮询访问M个免锁队列,往队列添加令牌;
步骤4:以C0表示添加令牌的CPU核,C1、C2……CM表示消耗令牌处理流量数据的CPU核,C0周期轮询给各个队列添加令牌,每个周期C0首先计算各个队列消耗令牌比例,把这个周期要添加的令牌按比例添加到各个队列中;
步骤5:处理数据流的CPU核,通过计算数据报大小获取自己队列的令牌,如果令牌不够,根据策略选择缓存或丢弃数据报文。
作为改进:所述步骤1中令牌桶设计成循环免锁队列的方法如下:
初始化队列头H=0,队列尾T=0;消费令牌的CPU在获取令牌时检查(H-T+N+1)%(N+1)值,该值表示桶内令牌个数,消费的令牌K不能超过(H-T+N+1)%(N+1),消费令牌后T=(T+K)%(N+1),分发令牌的CPU在分发令牌时检查(T-H+N)%(N+1),该值表示可以添加的令牌个数,添加的令牌K不能超过(T-H+N)%(N+1),添加令牌后H=(H+K)%(N+1),以上算法能够保证,消费令牌时必须令牌桶有令牌才能消费,添加令牌时,令牌桶有空的位置,才能添加令牌,这就保证了两个CPU核能同时访问同一个令牌桶。
作为改进:任何时刻,T指向的位置为空,所有长度为N的队列需要N+1个位置。
作为改进:所述步骤4中添加令牌个数的计算方法如下:
设一个令牌对应一个字节,处理添加令牌的C0执行频率为R,被限制的流量带宽为G字节每秒,求出每个周期添加令牌为K=G/R;队列长度N,N为令牌缓存个数,一般设为N=G;C1、C2……CM处理数据流量时,直接从对应的队列取令牌,根据取得令牌多少发送数据;C0每过1/R秒就启动添加令牌,这个时间可以取tick值,如果要求精度高,可以取CPU执行频率数据;C0获取上周期到本周期各个队列消耗令牌比例,按照这个比例给各个队列添加令牌,添加总数为K。
本发明与现有技术相比的优点在于:本发明通过把令牌桶分布在不用CPU处理核上,把生产令牌核消费令牌分别处理,通过免锁队列实现令牌计算;本发明实施简单,服务数据流在不同CPU处理核同时处理,在对某类服务数据限流时,使用本发明技术方案,在开启流量限速后,对原有性能几乎没有影响。
附图说明
图1是本发明一种多核架构下流量限速无锁并发实现的方法的处理流程图。
图2是本发明一种多核架构下流量限速无锁并发实现的方法的循环免锁队列的示意图。
具体实施方式
下面结合附图对本发明一种多核架构下流量限速无锁并发实现的方法做进一步的详细说明。
结合附图1-2,对本发明进行详细介绍。
一种多核架构下流量限速无锁并发实现的方法,包括以下步骤:
步骤1:将令牌桶设计成循环免锁队列,队列长度为N;
步骤2:每一个处理数据流的CPU核分配一个令牌桶,处理数据流的核数为M;
步骤3:一个单独CPU核轮询访问M个免锁队列,往队列添加令牌;
步骤4:以C0表示添加令牌的CPU核,C1、C2……CM表示消耗令牌处理流量数据的CPU核,C0周期轮询给各个队列添加令牌,每个周期C0首先计算各个队列消耗令牌比例,把这个周期要添加的令牌按比例添加到各个队列中;
步骤5:处理数据流的CPU核,通过计算数据报大小获取自己队列的令牌,如果令牌不够,根据策略选择缓存或丢弃数据报文。
所述步骤1中令牌桶设计成循环免锁队列的方法如下:
初始化队列头H=0,队列尾T=0;消费令牌的CPU在获取令牌时检查(H-T+N+1)%(N+1)值,该值表示桶内令牌个数,消费的令牌K不能超过(H-T+N+1)%(N+1),消费令牌后T=(T+K)%(N+1),分发令牌的CPU在分发令牌时检查(T-H+N)%(N+1),该值表示可以添加的令牌个数,添加的令牌K不能超过(T-H+N)%(N+1),添加令牌后H=(H+K)%(N+1),以上算法能够保证,消费令牌时必须令牌桶有令牌才能消费,添加令牌时,令牌桶有空的位置,才能添加令牌,这就保证了两个CPU核能同时访问同一个令牌桶。
任何时刻,T指向的位置为空,所有长度为N的队列需要N+1个位置。
所述步骤4中添加令牌个数的计算方法如下:
设一个令牌对应一个字节,处理添加令牌的C0执行频率为R,被限制的流量带宽为G字节每秒,求出每个周期添加令牌为K=G/R;队列长度N,N为令牌缓存个数,一般设为N=G;C1、C2……CM处理数据流量时,直接从对应的队列取令牌,根据取得令牌多少发送数据;C0每过1/R秒就启动添加令牌,这个时间可以取tick值,如果要求精度高,可以取CPU执行频率数据;C0获取上周期到本周期各个队列消耗令牌比例,按照这个比例给各个队列添加令牌,添加总数为K。
本发明一种多核架构下流量限速无锁并发实现的方法的具体实施过程如下:
将令牌桶设计成循环免锁队列,队列长度为N;初始化队列头H=0,队列尾T=0;消费令牌的CPU在获取令牌时检查(H-T+N+1)%(N+1)值,该值表示桶内令牌个数,消费的令牌K不能超过(H-T+N+1)%(N+1),消费令牌后T=(T+K)%(N+1),分发令牌的CPU在分发令牌时检查(T-H+N)%(N+1),该值表示可以添加的令牌个数,添加的令牌K不能超过(T-H+N)%(N+1),添加令牌后H=(H+K)%(N+1),以上算法能够保证,消费令牌时必须令牌桶有令牌才能消费,添加令牌时,令牌桶有空的位置,才能添加令牌,这就保证了两个CPU核能同时访问同一个令牌桶,需要注意的是,该设计需要任何时刻,T指向的位置为空,所有长度为N的队列需要N+1个位置。
每一个处理数据流的CPU核分配一个令牌桶,处理数据流的核数为M;一个单独CPU核轮询访问M个免锁队列,往队列添加令牌;以C0表示添加令牌的CPU核,C1、C2……CM表示消耗令牌处理流量数据的CPU核,C0周期轮询给各个队列添加令牌,每个周期C0首先计算各个队列消耗令牌比例,把这个周期要添加的令牌按比例添加到各个队列中;设一个令牌对应一个字节,处理添加令牌的C0执行频率为R,被限制的流量带宽为G字节每秒,求出每个周期添加令牌为K=G/R;队列长度N,N为令牌缓存个数,一般设为N=G;C1、C2……CM处理数据流量时,直接从对应的队列取令牌,根据取得令牌多少发送数据;C0每过1/R秒就启动添加令牌,这个时间可以取tick值,如果要求精度高,可以取CPU执行频率数据;C0获取上周期到本周期各个队列消耗令牌比例,按照这个比例给各个队列添加令牌,添加总数为K;处理数据流的CPU核,通过计算数据报大小获取自己队列的令牌,如果令牌不够,根据策略选择缓存或丢弃数据报文。
以上对本发明及其实施方式进行了描述,这种描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的结构并不局限于此。总而言之如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。

Claims (4)

1.一种多核架构下流量限速无锁并发实现的方法,其特征在于,包括以下步骤:
步骤1:将令牌桶设计成循环免锁队列,队列长度为N;
步骤2:每一个处理数据流的CPU核分配一个令牌桶,处理数据流的核数为M;
步骤3:一个单独CPU核轮询访问M个免锁队列,往队列添加令牌;
步骤4:以C0表示添加令牌的CPU核,C1、C2……CM表示消耗令牌处理流量数据的CPU核,C0周期轮询给各个队列添加令牌,每个周期C0首先计算各个队列消耗令牌比例,把这个周期要添加的令牌按比例添加到各个队列中;
步骤5:处理数据流的CPU核,通过计算数据报大小获取自己队列的令牌,如果令牌不够,根据策略选择缓存或丢弃数据报文。
2.根据权利要求1所述的一种多核架构下流量限速无锁并发实现的方法,其特征在于:所述步骤1中令牌桶设计成循环免锁队列的方法如下:
初始化队列头H=0,队列尾T=0;消费令牌的CPU在获取令牌时检查(H-T+N+1)%(N+1)值,该值表示桶内令牌个数,消费的令牌K不能超过(H-T+N+1)%(N+1),消费令牌后T=(T+K)%(N+1),分发令牌的CPU在分发令牌时检查(T-H+N)%(N+1),该值表示可以添加的令牌个数,添加的令牌K不能超过(T-H+N)%(N+1),添加令牌后H=(H+K)%(N+1),以上算法能够保证,消费令牌时必须令牌桶有令牌才能消费,添加令牌时,令牌桶有空的位置,才能添加令牌,这就保证了两个CPU核能同时访问同一个令牌桶。
3.根据权利要求2所述的一种多核架构下流量限速无锁并发实现的方法,其特征在于:任何时刻,T指向的位置为空,所有长度为N的队列需要N+1个位置。
4.根据权利要求1所述的一种多核架构下流量限速无锁并发实现的方法,其特征在于:所述步骤4中添加令牌个数的计算方法如下:
设一个令牌对应一个字节,处理添加令牌的C0执行频率为R,被限制的流量带宽为G字节每秒,求出每个周期添加令牌为K=G/R;队列长度N,N为令牌缓存个数,一般设为N=G;C1、C2……CM处理数据流量时,直接从对应的队列取令牌,根据取得令牌多少发送数据;C0每过1/R秒就启动添加令牌,这个时间可以取tick值,如果要求精度高,可以取CPU执行频率数据;C0获取上周期到本周期各个队列消耗令牌比例,按照这个比例给各个队列添加令牌,添加总数为K。
CN202110122692.7A 2021-01-29 2021-01-29 一种多核架构下流量限速无锁并发实现的方法 Active CN112799861B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110122692.7A CN112799861B (zh) 2021-01-29 2021-01-29 一种多核架构下流量限速无锁并发实现的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110122692.7A CN112799861B (zh) 2021-01-29 2021-01-29 一种多核架构下流量限速无锁并发实现的方法

Publications (2)

Publication Number Publication Date
CN112799861A true CN112799861A (zh) 2021-05-14
CN112799861B CN112799861B (zh) 2024-01-09

Family

ID=75812666

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110122692.7A Active CN112799861B (zh) 2021-01-29 2021-01-29 一种多核架构下流量限速无锁并发实现的方法

Country Status (1)

Country Link
CN (1) CN112799861B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113472674A (zh) * 2021-07-12 2021-10-01 多点生活(成都)科技有限公司 一种流量控制方法、装置、存储介质及电子设备
CN114064293A (zh) * 2021-11-26 2022-02-18 江苏安超云软件有限公司 一种基于轮询的无锁限速方法、装置及存储介质
CN115225580A (zh) * 2022-06-10 2022-10-21 新浪网技术(中国)有限公司 一种针对多处理器核的业务隔离限速方法和装置
CN116016356A (zh) * 2021-09-30 2023-04-25 迈普通信技术股份有限公司 一种报文处理方法及装置
WO2024108328A1 (en) * 2022-11-21 2024-05-30 Telefonaktiebolaget Lm Ericsson (Publ) Methods and devices for allocating transmission resources using an extended token bucket algorithm

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090003204A1 (en) * 2007-06-29 2009-01-01 Packeteer, Inc. Lockless Bandwidth Management for Multiprocessor Networking Devices
CN102611924A (zh) * 2012-03-02 2012-07-25 何震宇 一种视频云平台的流量控制方法及系统
CN105763478A (zh) * 2015-12-21 2016-07-13 中国电子科技集团公司第十五研究所 基于令牌桶算法的卫星数据地面传输网络流量控制系统
CN105939286A (zh) * 2016-03-28 2016-09-14 杭州迪普科技有限公司 令牌桶管理方法及装置
CN106789721A (zh) * 2017-03-24 2017-05-31 深圳市吉祥腾达科技有限公司 一种基于令牌桶的智能qos方法及系统
CN108768873A (zh) * 2018-05-29 2018-11-06 腾讯科技(深圳)有限公司 一种流量控制方法及相关设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090003204A1 (en) * 2007-06-29 2009-01-01 Packeteer, Inc. Lockless Bandwidth Management for Multiprocessor Networking Devices
CN102611924A (zh) * 2012-03-02 2012-07-25 何震宇 一种视频云平台的流量控制方法及系统
CN105763478A (zh) * 2015-12-21 2016-07-13 中国电子科技集团公司第十五研究所 基于令牌桶算法的卫星数据地面传输网络流量控制系统
CN105939286A (zh) * 2016-03-28 2016-09-14 杭州迪普科技有限公司 令牌桶管理方法及装置
CN106789721A (zh) * 2017-03-24 2017-05-31 深圳市吉祥腾达科技有限公司 一种基于令牌桶的智能qos方法及系统
CN108768873A (zh) * 2018-05-29 2018-11-06 腾讯科技(深圳)有限公司 一种流量控制方法及相关设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
V. JACOBSON;K. NICHOLS;CISCO SYSTEMS; K. PODURI;BAY NETWORKS;: "An Expedited Forwarding PHB", IETF RFC2598 *
申子明: "云计算环境背景下的流量控制方法", 宁德师范学院学报(自然科学版). *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113472674A (zh) * 2021-07-12 2021-10-01 多点生活(成都)科技有限公司 一种流量控制方法、装置、存储介质及电子设备
CN113472674B (zh) * 2021-07-12 2024-05-24 多点生活(成都)科技有限公司 一种流量控制方法、装置、存储介质及电子设备
CN116016356A (zh) * 2021-09-30 2023-04-25 迈普通信技术股份有限公司 一种报文处理方法及装置
CN114064293A (zh) * 2021-11-26 2022-02-18 江苏安超云软件有限公司 一种基于轮询的无锁限速方法、装置及存储介质
CN114064293B (zh) * 2021-11-26 2022-10-04 江苏安超云软件有限公司 一种基于轮询的无锁限速方法、装置及存储介质
CN115225580A (zh) * 2022-06-10 2022-10-21 新浪网技术(中国)有限公司 一种针对多处理器核的业务隔离限速方法和装置
CN115225580B (zh) * 2022-06-10 2024-02-02 新浪技术(中国)有限公司 一种针对多处理器核的业务隔离限速方法和装置
WO2024108328A1 (en) * 2022-11-21 2024-05-30 Telefonaktiebolaget Lm Ericsson (Publ) Methods and devices for allocating transmission resources using an extended token bucket algorithm

Also Published As

Publication number Publication date
CN112799861B (zh) 2024-01-09

Similar Documents

Publication Publication Date Title
CN112799861A (zh) 一种多核架构下流量限速无锁并发实现的方法
US11962490B2 (en) Systems and methods for per traffic class routing
Sharma et al. Programmable calendar queues for high-speed packet scheduling
CN108768873B (zh) 一种流量控制方法及相关设备
US8078763B1 (en) Dequeuing and congestion control systems and methods for single stream multicast
CN111459417B (zh) 一种面向NVMeoF存储网络的无锁传输方法及系统
WO2014032348A1 (zh) 一种基于时间触发机制的数据传输方法及装置
WO2020142867A1 (zh) 一种流量整形方法及相关设备
CN112084027B (zh) 片上网络数据传输方法、装置、片上网络、设备及介质
CN111163058B (zh) Dpdk数据加密处理方法、装置和网络设备
DE112006002912T5 (de) Verwaltung von On-Chip-Warteschleifen in geschalteten Netzwerken
CN105978821B (zh) 网络拥塞避免的方法及装置
US20170093731A1 (en) Technologies for network round-trip time estimation
CN113992594A (zh) 流量控制方法、装置、电子设备和计算机可读存储介质
CN113132265A (zh) 一种多路以太网的多级调度方法和装置
WO2019109902A1 (zh) 队列调度方法及装置、通信设备、存储介质
US9705698B1 (en) Apparatus and method for network traffic classification and policy enforcement
CN111756586A (zh) 一种数据中心网络中基于优先级队列的公平带宽分配方法、交换机及可读存储介质
CN112671832A (zh) 虚拟交换机中保障层次化时延的转发任务调度方法及系统
Dumazet Busy polling: Past, present, future
CN113835611A (zh) 存储调度方法、设备和存储介质
CN111638986A (zh) 一种QoS队列调度方法、装置、系统及可读存储介质
Hu et al. Dynamic queuing sharing mechanism for per-flow quality of service control
CN106487713A (zh) 一种服务质量复用方法及装置
CN104917692B (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
GR01 Patent grant
GR01 Patent grant