CN116016356A - 一种报文处理方法及装置 - Google Patents
一种报文处理方法及装置 Download PDFInfo
- Publication number
- CN116016356A CN116016356A CN202111162501.6A CN202111162501A CN116016356A CN 116016356 A CN116016356 A CN 116016356A CN 202111162501 A CN202111162501 A CN 202111162501A CN 116016356 A CN116016356 A CN 116016356A
- Authority
- CN
- China
- Prior art keywords
- token
- core
- bucket
- value
- message
- 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
- 238000003672 processing method Methods 0.000 title abstract description 7
- 238000000034 method Methods 0.000 claims abstract description 71
- 238000004040 coloring Methods 0.000 claims abstract description 21
- 238000009825 accumulation Methods 0.000 claims description 2
- 230000007717 exclusion Effects 0.000 abstract description 10
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 101150033591 outC gene Proteins 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种报文处理方法和装置,涉及数据通信领域,方法包括:选取多核处理器的一个核Core0用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至令牌的添加统计值;当任一核Corei有待转发的报文时,核Corei计算当前所述令牌桶的剩余令牌值;根据所述剩余令牌值,核Corei对所述报文进行着色,并按照着色结果对所述报文进行处理,然后核Corei根据本核对所述报文的实际转发量,累计本核对所述令牌的申请统计值。采用本申请,可以确保多核能够无锁并行的添加和申请令牌,避免了多核访问令牌桶时的加锁互斥处理,能够大幅提升令牌桶限速时的报文转发性能。
Description
技术领域
本发明涉及数据通信领域,尤其涉及一种报文处理方法及装置。
背景技术
在网络中传输报文时,为了防止网络拥塞,需限制流出网络的报文,使报文以比较均匀的速度向外发送。令牌桶算法就实现了这个功能,可控制发送到网络上报文的数目,并允许突发报文的发送。
在将报文发送到网络上时,需要消耗令牌桶中的令牌。不同大小的报文,消耗的令牌数量不一样,因此需要发送报文时,就会从令牌桶中获取发送报文所需的令牌。
在多核网络设备中,当有报文需要做限速处理时,令牌桶作为临界资源需要进行互斥保护。即当一个核中有一个报文需要发送时,将在令牌桶中获取令牌,此时不允许其他核从令牌桶中获取令牌,导致多核不能并行处理。且每当有一个报文需要发送时,就需从令牌桶中获取领牌,令牌桶就会进行一次互斥保护;因此当有多个报文需要发送时,就会进行多次加锁互斥保护,导致加锁互斥频率高。这样势必会影响到多核网络设备的并发,最终影响限速的性能。因此,在多核网络设备中如何对令牌桶采用无锁并发方式实现报文限速的方法成为人们亟待解决的问题。
发明内容
为了解决上述问题,本发明提供一种报文处理方法,解决了多核网络设备中因令牌桶的加锁互斥影响报文限速转发的性能问题。
第一方面,本发明提供一种报文处理方法,该方法采用具有多核处理器的设备来实现,包括以下步骤:
选取多核处理器的一个核Core0用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至令牌的添加统计值;当任一核Corei有待转发的报文时,核Corei计算当前所述令牌桶的剩余令牌值;根据所述剩余令牌值,核Corei对所述报文进行着色,并按照着色结果对所述报文进行处理,然后核Corei根据本核对所述报文的实际转发量,累计本核对所述令牌的申请统计值;其中,0≤i≤N,N为所述多核处理器的内核总数,并且所述剩余令牌值等于所述添加统计值减去所述多核处理器所有核的所述申请统计值之和。
其中,所述选取多核处理器的一个核Core0用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至令牌的添加统计值,包括:
所述令牌桶为单速单桶模式时,核Core0按照预设的时间周期计算所述令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至所述添加统计值,直至所述令牌桶已满;或,所述令牌桶为单速双桶模式时,核Core0按照预设的时间周期计算所述令牌桶的第一令牌增量值,所述第一令牌增量值优先用于还清C桶令牌的负债,再优先用于还清E桶令牌的负债,如果C桶和E桶都没有令牌的负载,剩余的所述第一令牌增量值先累计至C桶的所述添加统计值直至C桶已满,再累计至E桶的所述添加统计值直至E桶已满。
所述根据所述剩余令牌值,核Corei对所述报文进行着色,并按照着色结果对所述报文进行处理,然后核Corei根据本核对所述报文的实际转发量,累计本核对所述令牌的申请统计值,包括:
所述令牌桶为单速单桶模式时,如果所述剩余令牌值大于零,核Corei将所述报文标记为绿色,并对报文进行转发,然后核Corei根据本核对所述报文的实际转发量,累计本核的所述申请统计值;如果所述剩余令牌值小于等于零,核Corei将所述报文标记为红色,并对报文进行丢弃或入队等待处理,此时本核对所述申请统计值维持不变;或,所述令牌桶为单速双桶模式时,如果C桶的所述剩余令牌值大于零,核Corei将所述报文标记为绿色,并对报文进行转发,然后核Corei根据本核对所述报文的实际转发量,累计本核C桶的所述申请统计值;否则,如果C桶的所述剩余令牌值加E桶的所述剩余令牌值之和大于零,核Corei将所述报文标记为黄色,并对报文进行转发,然后核Corei根据本核对所述报文的实际转发量,累计本核E桶的所述申请统计值;否则,核Corei将所述报文标记为红色,并对报文进行丢弃或入队等待处理,此时核Corei对C桶和E桶的所述申请统计值均维持不变。
所述剩余令牌值等于所述添加统计值减去所述多核处理器所有核的所述申请统计值之和,包括:所述令牌桶为单速双桶模式时,当前C桶的所述剩余令牌值等于C桶的所述添加统计值减去所述多核处理器所有核的C桶的所述申请统计值之和,当前E桶的所述剩余令牌值等于E桶的所述添加统计值减去所述多核处理器所有核的E桶的所述申请统计值之和。
在一种可能的实现中,所述方法还包括:在连续多个所述时间周期内所述令牌桶都是已满状态时,核Core0暂停累计所述添加统计值并记录当前系统时间戳,待任一核Corei有待转发的报文时向核Core0发送唤醒信号,核Core0收到唤醒信号后,根据最新系统时间戳与所述当前系统时间戳的时间间隔计算第二令牌增量值,并将所述第二令牌增量值累计至所述添加统计值。
第二方面,本发明提供一种报文处理装置,包括令牌添加核Core0和令牌申请核Corei,所述装置包括:
令牌添加核Core0,用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至令牌的添加统计值;
令牌申请核Corei,用于本核有待转发的报文时,计算当前所述令牌桶的剩余令牌值;用于根据所述剩余令牌值,对所述报文进行着色,并按照着色结果对所述报文进行处理,然后根据本核对所述报文的实际转发量,累计本核对所述令牌的申请统计值;其中,0≤i≤N,N为所述多核处理器的内核总数,并且所述剩余令牌值等于所述添加统计值减去所述多核处理器所有核的所述申请统计值之和。
其中,所述令牌添加核Core0具体用于:所述令牌桶为单速单桶模式时,按照预设的时间周期计算所述令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至所述添加统计值,直至所述令牌桶已满;或,所述令牌桶为单速双桶模式时,按照预设的时间周期计算所述令牌桶的第一令牌增量值,所述第一令牌增量值优先用于还清C桶令牌的负债,再优先用于还清E桶令牌的负债,如果C桶和E桶都没有令牌的负载,剩余的所述第一令牌增量值先累计至C桶的所述添加统计值直至C桶已满,再累计至E桶的所述添加统计值直至E桶已满。
所述令牌申请核Corei具体用于:所述令牌桶为单速单桶模式时,如果所述剩余令牌值大于零,将所述报文标记为绿色,并对报文进行转发,然后根据本核对所述报文的实际转发量,累计本核的所述申请统计值;如果所述剩余令牌值小于等于零,将所述报文标记为红色,并对报文进行丢弃或入队等待处理,此时本核对所述申请统计值维持不变;或,所述令牌桶为单速双桶模式时,如果C桶的所述剩余令牌值大于零,将所述报文标记为绿色,并对报文进行转发,然后根据本核对所述报文的实际转发量,累计本核C桶的所述申请统计值;否则,如果C桶的所述剩余令牌值加E桶的所述剩余令牌值之和大于零,将所述报文标记为黄色,并对报文进行转发,然后根据本核对所述报文的实际转发量,累计本核E桶的所述申请统计值;否则,将所述报文标记为红色,并对报文进行丢弃或入队等待处理,此时本核对C桶和E桶的所述申请统计值均维持不变。
在一种可能的实现中,所述令牌申请核Corei具体用于:所述令牌桶为单速双桶模式时,当前C桶的所述剩余令牌值等于C桶的所述添加统计值减去所述多核处理器所有核的C桶的所述申请统计值之和,当前E桶的所述剩余令牌值等于E桶的所述添加统计值减去所述多核处理器所有核的E桶的所述申请统计值之和。
在一种可能的实现中,所述令牌添加核Core0具体还用于:在连续多个所述时间周期内所述令牌桶都是已满状态时,暂停累计所述添加统计值并记录当前系统时间戳,待收到任一令牌申请核Corei发送的唤醒信号后,根据最新系统时间戳与所述当前系统时间戳的时间间隔计算第二令牌增量值,并将所述第二令牌增量值累计至所述添加统计值;所述令牌申请核Corei具体还用于:本核有待转发的报文时向所述令牌添加核Core0发送唤醒信号。
综上所述,本发明通过多核无锁并行处理,使得每个核对令牌桶中的令牌可以彼此不受干扰的进行添加和申请操作,避免了多核访问令牌桶时的加锁互斥处理,能够大幅提升令牌桶限速时的报文转发性能,进而提升多核处理器的整体转发性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的一种报文处理方法的流程图;
图2是根据图1所示实施例示出的一种累计令牌的添加统计值的方法流程图;
图3是根据图1所示实施例示出的另一种累计令牌的添加统计值的方法流程图;
图4是根据图3所示实施例示出的还清C桶令牌负债方法的流程图;
图5是根据图3所示实施例示出的还清E桶令牌负债方法的流程图;
图6是根据图3所示实施例示出的将剩余令牌累计至C桶和E桶的添加统计值的方法流程图;
图7示出了本发明实施例提供的一种报文处理装置的示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面通过具体实施例,分别进行详细的说明。
实施例一
本发明实施例提供了一种报文处理方法,应用于令牌桶为单速单桶模式。假设标记令牌的添加统计值为InC,标记任一核Corei计算的当前令牌桶的剩余令牌值为Tci,标记任一核Corei的令牌的申请统计值为OutCi,标记令牌增量值为Δa,其中0≤i≤N,N为多核处理器的内核总数。其处理流程图如图1所示,包括如下步骤:
步骤S101,选取多核处理器的一个核Core0用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将第一令牌增量值累计至令牌的添加统计值。
作为本发明的一种实施例,本步骤的处理流程如图2所示,包括如下步骤:
步骤S101a,核Core0按照预设的时间周期T计算Tc0。
需要说明的是,Tc0等于InC减去多核处理器的所有核的OutCm之和,即:
其中,任一核的OutCm可以采用全局变量或共享内存等方式保存。初始状态下,InC等于CBS(Committed Burst Size,承诺突发尺寸),每个核的OutCm等于0,Tc0等于CBS,即,初始状态下令牌桶为已满状态。
步骤S101b,判断令牌桶是否为未满状态或负债状态,若是,执行步骤S101c。
其中,当Tc0<CBS时,表示令牌桶为未满状态或负债状态,需执行步骤S101c;否则如果Tc0=CBS,表示令牌桶为已满状态,结束本周期的处理。
步骤S101c,核Core0按照预设的时间周期T计算令牌桶的第一令牌增量值T*CIR(Committed Information Rate,承诺信息速率),设置Δa=T*CIR。
步骤S101d,判断令牌桶增加Δa个令牌后是否不会溢出,若不会溢出,执行步骤S101e;否则若会溢出,执行步骤S101f。
本步骤中,当Tc0+Δa≤CBS时,表示令牌桶增加Δa个令牌后不会溢出,需执行步骤S101e。否则,当Tc0+Δa>CBS时,表示令牌桶增加Δa个令牌后是溢出状态,需执行步骤S101f。
步骤S101e,核Core0将Δa个令牌累计至InC。
即,设置InC=InC+Δa,并结束本周期的处理。
步骤S101f,核Core0将令牌桶填加至已满状态并丢弃溢出的令牌。
即,设置InC=InC+CBS-Tc0,并结束本周期的处理。
可选的,作为本发明方法的另一实施例,核Core0判断如果在连续多个时间周期T内令牌桶都是已满状态时,即,在连续K个时间周期T内Tc0都等于CBS时,核Core0暂停累计InC,并记录当前系统时间戳T0,待任一核Corei有待转发的报文时向核Core0发送唤醒信号,核Core0收到唤醒信号后,根据最新系统时间戳T1与当前系统时间戳T0的时间间隔计算第二令牌增量值为(T1-T0)*CIR,设置Δa=(T1-T0)*CIR,并将Δa累计至InC,其累计方法与图2中的处理流程类似,此处不再赘述,其中,K为大于0的整数。
步骤S102,当任一核Corei有待转发的报文时,核Corei计算当前令牌桶的剩余令牌值;根据剩余令牌值,核Corei对报文进行着色,并按照着色结果对报文进行处理,然后核Corei根据本核对报文的实际转发量,累计本核对令牌的申请统计值;其中,0≤i≤N,N为多核处理器的内核总数,并且剩余令牌值等于添加统计值减去多核处理器所有核的申请统计值之和。
在本步骤中,当任一核Corei有待转发的报文时,核Corei计算Tci,即:
如果Tci>0,表示令牌桶中还有剩余令牌,此时核Corei将报文标记为绿色,并对该报文进行转发,假设该报文大小为S字节,核Corei根据本核对该报文的实际转发量S,累计本核的OutCi,即,设置OutCi=OutCi+S;如果Tci≤0,表示令牌桶已无剩余令牌,此时核Corei将该报文标记为红色,并对该报文进行丢弃或入队等待处理,此时核Corei对OutCi维持不变。
需要说明的是,当任一核Corei有待转发的报文时,每个核分别计算Tci的值,其中,Tci、InC和OutCi都采用无锁并发方式进行读写和计算,确保各个核之间彼此不受干扰。
本发明实施例通过多核无锁并行处理,使得每个核对令牌桶中的令牌可以彼此不受干扰的进行添加和申请操作,避免了多核访问令牌桶时的加锁互斥处理,能够大幅提升令牌桶限速时的报文转发性能,进而提升多核处理器的整体转发性能。
实施例二
本发明实施例提供了一种报文处理方法,应用于令牌桶为单速双桶模式。假设标记任一核Corei计算的当前C桶的剩余令牌值为Tci,当前E桶的剩余令牌值为Tei;标记C桶的添加统计值为InC,E桶的添加统计值为InE;标记任一核Corei的C桶的申请统计值为OutCi,E桶的申请统计值为OutEi;标记令牌桶的令牌增量值为Δa,其中0≤i≤N,N为多核处理器的内核总数。其处理流程仍然如图1所示,包括如下步骤:
步骤S101,选取多核处理器的一个核Core0用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将第一令牌增量值累计至令牌的添加统计值。
作为本发明的一个优选实施例,核Core0先按照预设的时间周期T计算Tc0和Te0,即,
其中,任一核的OutCm和OutEm可以采用全局变量或共享内存等方式保存。初始状态下,InC等于CBS,InE等于EBS(Excess Burst Size,超额突发尺寸),每个核的OutCm和OutEm都等于0,Tc0等于CBS,Te0等于EBS,即,初始状态下C桶和E桶的令牌都为已满状态。
如果Tc0=CBS且Te0=EBS,表示C桶和E桶的令牌均为已满状态,结束本周期的处理。
否则Tc0≠CBS或Te0≠EBS时,处理流程如图3所示,包括如下几个步骤:
步骤S211,核Core0按照预设的时间周期T计算令牌桶的第一令牌增量值T*CIR,设置Δa=T*CIR。
步骤S212,Δa优先用于还清C桶令牌的负债。
步骤S213,Δa再优先用于还清E桶令牌的负债。
步骤S214,如果C桶和E桶都没有令牌的负债,Δa中剩余的令牌先累计至C桶的添加统计值InC直至C桶已满,再累计至E桶的添加统计值InE直至E桶已满。
需要说明的是,如图4所示,步骤S212可包括如下步骤:
步骤S212a,判断C桶是否为负债状态,若是,执行步骤S212b。
其中,当Tc0<0时,表示C桶为负债状态,需执行步骤S212b;否则当Tc0≥0时,需执行步骤S213继续判断E桶是否为负债状态。
步骤S212b,判断Δa个令牌偿还C桶负债后是否还有剩余,若无剩余,执行步骤S212c;否则若有剩余,执行步骤S212d。
本步骤中,由于C桶为负债状态,Δa应优先用于偿还C桶的负载。核Core0判断如果Tc0+Δa≤0,表示若Δa个令牌全部用于偿还C桶负债后,C桶仍然为负债状态或C桶负债刚好清0,此时需执行步骤S212c;否则如果Tc0+Δa>0,表示Δa个令牌用于偿还C桶负债后还有部分剩余,此时需执行步骤S212d。
步骤S212c,将Δa累计至InC。
即,设置InC=InC+Δa,并结束本周期的处理。
步骤S212d,还清C桶负债并更新Δa。
即,设置InC=InC-Tc0;Δa=Δa+Tc0;Tc0=0。然后继续执行步骤S213。
此外,如图5所示,步骤S213可包括如下步骤:
步骤S213a,判断E桶是否为负债状态,若是,执行步骤S213b。
其中,当Te0<0时,表示E桶为负债状态,需执行步骤S213b;否则当Te0≥0时,需要执行步骤S214继续累计C桶和E桶的令牌。
步骤S213b,判断Δa个令牌偿还E桶负债后是否还有剩余,若无剩余,执行步骤S213c;否则若有剩余,执行步骤S213d。
本步骤中,由于E桶为负债状态,Δa应优先用于偿还E桶的负载。当Te0+Δa≤0时,表示若Δa个令牌全部用于偿还E桶负债后,E桶仍然为负债状态或E桶负债刚好清0,此时需执行步骤S213c;否则当Te0+Δa>0时,表示Δa个令牌用于偿还E桶负债后还有部分剩余,此时需执行步骤S213d。
步骤S213c,将Δa累计至InE。
即,设置InE=InE+Δa,并结束本周期的处理。
步骤S213d,还清E桶负债并更新Δa。
即,设置InE=InE-Te0;Δa=Δa+Te0;Te0=0。然后继续执行步骤S214。
需要说明的是,如图6所示,步骤S214可包括如下步骤:
步骤S214a,判断如果Δa累计至C桶的InC后是否为溢出状态,若为溢出状态,执行步骤S214b;否则为未溢出状态,执行步骤S214f。
本步骤中,当Tc0+Δa>CBS时,表示Δa累计至C桶的InC后C桶为溢出状态。说明Δa个令牌用于添加至C桶为已满状态后还有部分剩余,此时需执行步骤S214b;否则当Tc0+Δa≤CBS时,表示Δa累计至C桶的InC后C桶仍然为未满状态或C桶刚好达到已满状态,此时需执行步骤S214f。
步骤S214b,将Δa累计至C桶为已满状态并更新Δa。
即,设置InC=InC+CBS-Tc0;Δa=Δa-CBS+Tc0。
步骤S214c,判断如果Δa累计至E桶的InE后是否为溢出状态,若为溢出状态,执行步骤S214d;否则为未溢出状态,执行步骤S214e。
本步骤中,当Te0+Δa>EBS时,表示Δa累计至E桶的InE后E桶为溢出状态。说明Δa个令牌用于添加至E桶为已满状态后还有部分剩余,此时需执行步骤S214d;否则当Te0+Δa≤EBS时,表示Δa累计至E桶的InE后E桶仍然为未满状态或E桶刚好达到已满状态,此时需执行步骤S214e。
步骤S214d,将Δa累计至E桶为已满状态并丢弃溢出的令牌。
即,设置InE=InE+EBS-Te0,然后结束本周期的处理。
步骤S214e,将Δa累计至E桶。
即,设置InE=InE+Δa,然后结束本周期的处理。
步骤S214f,将Δa累计至C桶。
即,设置InC=InC+Δa,然后结束本周期的处理。
可选的,作为本发明方法的另一实施例,核Core0判断如果在连续多个时间周期T内Tc0都等于CBS且Te0都等于EBS,即,K个时间周期T内C桶和E桶均为已满状态时,核Core0暂停累计InC和InE,并记录当前系统时间戳T0,待任一核Corei有待转发的报文时向核Core0发送唤醒信号,核Core0收到唤醒信号后,根据最新系统时间戳T1与当前系统时间戳T0的时间间隔计算第二令牌增量值为(T1-T0)*CIR,设置Δa等于(T1-T0)*CIR并累计Δa至InC,其累计方法与图3中的处理流程相似,此处不再赘述,其中,K为大于0的整数。
步骤S102,当任一核Corei有待转发的报文时,核Corei计算当前令牌桶的剩余令牌值;根据剩余令牌值,核Corei对报文进行着色,并按照着色结果对报文进行处理,然后核Corei根据本核对报文的实际转发量,累计本核对令牌的申请统计值;其中,0≤i≤N,N为多核处理器的内核总数,并且剩余令牌值等于添加统计值减去多核处理器所有核的申请统计值之和。
在本步骤中,当任一核Corei有待转发的报文时,核Corei计算Tci和Tei,即:
如果Tci>0,表示C桶中还有剩余令牌,此时核Corei将报文标记为绿色,并对该报文进行转发。假设该报文大小为S字节,核Corei根据本核对该报文的实际转发量S,累计本核的OutCi,即,设置OutCi=OutCi+S。如果Tci+Tei>0,表示将C桶和E桶的剩余令牌合并后还有剩余令牌,此时核Corei将该报文标记为黄色,并对该报文进行转发,然后核Corei根据本核对该报文的实际转发量S,累计本核的OutEi,即,设置OutEi=OutEi+S。否则如果Tci<0且Tci+Tei≤0,核Corei将该报文标记为红色,并对该报文进行丢弃或入队等待处理,此时核Corei对本核的OutCi和OutEi均维持不变。
需要说明的是,当任一核Corei有待转发的报文时,每个核分别计算Tci和Tei的值,其中,Tci、Tei、InC、InE、OutCi、OutEi都采用无锁并发方式进行读写和计算,确保各个核之间彼此不受干扰。
本发明实施例通过多核无锁并行处理,使得每个核对C桶和E桶中的令牌可以彼此不受干扰的进行添加和申请操作,避免了多核访问令牌桶时的加锁互斥处理,能够大幅提升令牌桶限速时的报文转发性能,进而提升多核处理器的整体转发性能。
实施例三
本发明实施例提供了一种报文处理装置701,包括令牌添加核Core0和令牌申请核Corei,其示意图如图7所示,包括:
令牌添加核Core0,用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将第一令牌增量值累计至令牌的添加统计值;
令牌申请核Corei,用于本核有待转发的报文时,计算当前令牌桶的剩余令牌值;用于根据剩余令牌值,对报文进行着色,并按照着色结果对报文进行处理,然后根据本核对报文的实际转发量,累计本核对令牌的申请统计值;其中,0≤i≤N,N为多核处理器的内核总数,并且剩余令牌值等于添加统计值减去多核处理器所有核的申请统计值之和。
其中,令牌添加核Core0具体用于:令牌桶为单速单桶模式时,按照预设的时间周期计算令牌桶的第一令牌增量值,并将第一令牌增量值累计至添加统计值,直至令牌桶已满;或,令牌桶为单速双桶模式时,按照预设的时间周期计算令牌桶的第一令牌增量值,第一令牌增量值优先用于还清C桶令牌的负债,再优先用于还清E桶令牌的负债,如果C桶和E桶都没有令牌的负载,剩余的第一令牌增量值先累计至C桶的添加统计值直至C桶已满,再累计至E桶的添加统计值直至E桶已满。
令牌申请核Corei具体用于:令牌桶为单速单桶模式时,如果剩余令牌值大于零,将报文标记为绿色,并对报文进行转发,然后根据本核对报文的实际转发量,累计本核的申请统计值;如果剩余令牌值小于等于零,将报文标记为红色,并对报文进行丢弃或入队等待处理,此时本核对申请统计值维持不变;或,令牌桶为单速双桶模式时,如果C桶的剩余令牌值大于零,将报文标记为绿色,并对报文进行转发,然后根据本核对报文的实际转发量,累计本核C桶的申请统计值;否则,如果C桶的剩余令牌值加E桶的剩余令牌值之和大于零,将报文标记为黄色,并对报文进行转发,然后根据本核对报文的实际转发量,累计本核E桶的申请统计值;否则,将报文标记为红色,并对报文进行丢弃或入队等待处理,此时本核对C桶和E桶的申请统计值均维持不变。
其中,令牌申请核Corei具体用于:令牌桶为单速双桶模式时,当前C桶的剩余令牌值等于C桶的添加统计值减去多核处理器所有核的C桶的申请统计值之和,当前E桶的剩余令牌值等于E桶的添加统计值减去多核处理器所有核的E桶的申请统计值之和。
需要特别说明的是,核Core0可以同时作为令牌添加核Core0和令牌申请核Core0。
作为本发明的一个优选实施例,令牌添加核Core0具体还用于:在连续多个时间周期内令牌桶都是已满状态时,暂停累计令牌的添加统计值并记录当前系统时间戳,待收到任一令牌申请核Corei发送的唤醒信号后,根据最新系统时间戳与当前系统时间戳的时间间隔计算第二令牌增量值,并将第二令牌增量值累计至令牌的添加统计值。令牌申请核Corei具体还用于:本核有待转发的报文时向令牌添加核Core0发送唤醒信号。
本发明实施例通过多核无锁并行处理,使得每个核对令牌桶中的令牌可以彼此不受干扰的进行添加和申请操作,避免了多核访问令牌桶时的加锁互斥处理,能够大幅提升令牌桶限速时的报文转发性能,进而提升多核处理器的整体转发性能。
本说明书的各个部分均采用递进的方式进行描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点介绍的都是与其他实施例不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例部分的说明即可。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种报文处理方法,该方法采用具有多核处理器的设备来实现,其特征在于,所述方法包括:
选取多核处理器的一个核Core0用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至令牌的添加统计值;当任一核Corei有待转发的报文时,核Corei计算当前所述令牌桶的剩余令牌值;根据所述剩余令牌值,核Corei对所述报文进行着色,并按照着色结果对所述报文进行处理,然后核Corei根据本核对所述报文的实际转发量,累计本核对所述令牌的申请统计值;其中,0≤i≤N,N为所述多核处理器的内核总数,并且所述剩余令牌值等于所述添加统计值减去所述多核处理器所有核的所述申请统计值之和。
2.如权利要求1所述的方法,其特征在于,所述选取多核处理器的一个核Core0用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至令牌的添加统计值,包括:
所述令牌桶为单速单桶模式时,核Core0按照预设的时间周期计算所述令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至所述添加统计值,直至所述令牌桶已满;或,
所述令牌桶为单速双桶模式时,核Core0按照预设的时间周期计算所述令牌桶的第一令牌增量值,所述第一令牌增量值优先用于还清C桶令牌的负债,再优先用于还清E桶令牌的负债,如果C桶和E桶都没有令牌的负载,剩余的所述第一令牌增量值先累计至C桶的所述添加统计值直至C桶已满,再累计至E桶的所述添加统计值直至E桶已满。
3.如权利要求2所述的方法,其特征在于,所述根据所述剩余令牌值,核Corei对所述报文进行着色,并按照着色结果对所述报文进行处理,然后核Corei根据本核对所述报文的实际转发量,累计本核对所述令牌的申请统计值,包括:
所述令牌桶为单速单桶模式时,如果所述剩余令牌值大于零,核Corei将所述报文标记为绿色,并对报文进行转发,然后核Corei根据本核对所述报文的实际转发量,累计本核的所述申请统计值;如果所述剩余令牌值小于等于零,核Corei将所述报文标记为红色,并对报文进行丢弃或入队等待处理,此时本核对所述申请统计值维持不变;或,
所述令牌桶为单速双桶模式时,如果C桶的所述剩余令牌值大于零,核Corei将所述报文标记为绿色,并对报文进行转发,然后核Corei根据本核对所述报文的实际转发量,累计本核C桶的所述申请统计值;否则,如果C桶的所述剩余令牌值加E桶的所述剩余令牌值之和大于零,核Corei将所述报文标记为黄色,并对报文进行转发,然后核Corei根据本核对所述报文的实际转发量,累计本核E桶的所述申请统计值;否则,核Corei将所述报文标记为红色,并对报文进行丢弃或入队等待处理,此时核Corei对C桶和E桶的所述申请统计值均维持不变。
4.如权利要求3所述的方法,其特征在于,所述剩余令牌值等于所述添加统计值减去所述多核处理器所有核的所述申请统计值之和,包括:
所述令牌桶为单速双桶模式时,当前C桶的所述剩余令牌值等于C桶的所述添加统计值减去所述多核处理器所有核的C桶的所述申请统计值之和,当前E桶的所述剩余令牌值等于E桶的所述添加统计值减去所述多核处理器所有核的E桶的所述申请统计值之和。
5.如权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
在连续多个所述时间周期内所述令牌桶都是已满状态时,核Core0暂停累计所述添加统计值并记录当前系统时间戳,待任一核Corei有待转发的报文时向核Core0发送唤醒信号,核Core0收到唤醒信号后,根据最新系统时间戳与所述当前系统时间戳的时间间隔计算第二令牌增量值,并将所述第二令牌增量值累计至所述添加统计值。
6.一种报文处理装置,包括令牌添加核Core0和令牌申请核Corei,其特征在于,所述装置包括:
令牌添加核Core0,用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至令牌的添加统计值;
令牌申请核Corei,用于本核有待转发的报文时,计算当前所述令牌桶的剩余令牌值;用于根据所述剩余令牌值,对所述报文进行着色,并按照着色结果对所述报文进行处理,然后根据本核对所述报文的实际转发量,累计本核对所述令牌的申请统计值;其中,0≤i≤N,N为所述多核处理器的内核总数,并且所述剩余令牌值等于所述添加统计值减去所述多核处理器所有核的所述申请统计值之和。
7.如权利要求6所述的装置,其特征在于,所述令牌添加核Core0具体用于:
所述令牌桶为单速单桶模式时,按照预设的时间周期计算所述令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至所述添加统计值,直至所述令牌桶已满;或,
所述令牌桶为单速双桶模式时,按照预设的时间周期计算所述令牌桶的第一令牌增量值,所述第一令牌增量值优先用于还清C桶令牌的负债,再优先用于还清E桶令牌的负债,如果C桶和E桶都没有令牌的负载,剩余的所述第一令牌增量值先累计至C桶的所述添加统计值直至C桶已满,再累计至E桶的所述添加统计值直至E桶已满。
8.如权利要求7所述的装置,其特征在于,所述令牌申请核Corei具体用于:
所述令牌桶为单速单桶模式时,如果所述剩余令牌值大于零,将所述报文标记为绿色,并对报文进行转发,然后根据本核对所述报文的实际转发量,累计本核的所述申请统计值;如果所述剩余令牌值小于等于零,将所述报文标记为红色,并对报文进行丢弃或入队等待处理,此时本核对所述申请统计值维持不变;或,
所述令牌桶为单速双桶模式时,如果C桶的所述剩余令牌值大于零,将所述报文标记为绿色,并对报文进行转发,然后根据本核对所述报文的实际转发量,累计本核C桶的所述申请统计值;否则,如果C桶的所述剩余令牌值加E桶的所述剩余令牌值之和大于零,将所述报文标记为黄色,并对报文进行转发,然后根据本核对所述报文的实际转发量,累计本核E桶的所述申请统计值;否则,将所述报文标记为红色,并对报文进行丢弃或入队等待处理,此时本核对C桶和E桶的所述申请统计值均维持不变。
9.如权利要求8所述的方法,其特征在于,所述令牌申请核Corei具体用于:
所述令牌桶为单速双桶模式时,当前C桶的所述剩余令牌值等于C桶的所述添加统计值减去所述多核处理器所有核的C桶的所述申请统计值之和,当前E桶的所述剩余令牌值等于E桶的所述添加统计值减去所述多核处理器所有核的E桶的所述申请统计值之和。
10.如权利要求6-9任一项所述的装置,其特征在于,
所述令牌添加核Core0具体还用于:在连续多个所述时间周期内所述令牌桶都是已满状态时,暂停累计所述添加统计值并记录当前系统时间戳,待收到任一令牌申请核Corei发送的唤醒信号后,根据最新系统时间戳与所述当前系统时间戳的时间间隔计算第二令牌增量值,并将所述第二令牌增量值累计至所述添加统计值;
所述令牌申请核Corei具体还用于:本核有待转发的报文时向所述令牌添加核Core0发送唤醒信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111162501.6A CN116016356A (zh) | 2021-09-30 | 2021-09-30 | 一种报文处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111162501.6A CN116016356A (zh) | 2021-09-30 | 2021-09-30 | 一种报文处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116016356A true CN116016356A (zh) | 2023-04-25 |
Family
ID=86030353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111162501.6A Pending CN116016356A (zh) | 2021-09-30 | 2021-09-30 | 一种报文处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116016356A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1925455A (zh) * | 2005-08-29 | 2007-03-07 | 中兴通讯股份有限公司 | 一种基于令牌桶的报文限速方法 |
CN101272346A (zh) * | 2008-04-29 | 2008-09-24 | 华为技术有限公司 | 一种对报文进行流量监管的方法和装置 |
CN101820385A (zh) * | 2010-02-10 | 2010-09-01 | 中国电子科技集团公司第三十研究所 | 一种ip数据流流量的监管方法 |
CN102413042A (zh) * | 2011-11-14 | 2012-04-11 | 盛科网络(苏州)有限公司 | 基于时戳更新令牌桶的流量监管的方法及系统 |
US8943287B1 (en) * | 2012-07-17 | 2015-01-27 | Rockwell Collins, Inc. | Multi-core processor system configured to constrain access rate from memory |
CN106453127A (zh) * | 2016-11-18 | 2017-02-22 | 杭州华三通信技术有限公司 | 一种令牌处理方法和装置 |
CN106656849A (zh) * | 2016-11-01 | 2017-05-10 | 杭州迪普科技股份有限公司 | 报文限速方法及装置 |
US20190268270A1 (en) * | 2018-02-28 | 2019-08-29 | Microsoft Technology Licensing, Llc | Network traffic flow logging in distributed computing systems |
CN111385220A (zh) * | 2018-12-29 | 2020-07-07 | 北京华为数字技术有限公司 | 传输报文的方法和装置 |
CN112799861A (zh) * | 2021-01-29 | 2021-05-14 | 上海弘积信息科技有限公司 | 一种多核架构下流量限速无锁并发实现的方法 |
CN113163236A (zh) * | 2020-01-22 | 2021-07-23 | 武汉瓯越网视有限公司 | 基于频率控制的数据传输方法、装置、设备和存储介质 |
-
2021
- 2021-09-30 CN CN202111162501.6A patent/CN116016356A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1925455A (zh) * | 2005-08-29 | 2007-03-07 | 中兴通讯股份有限公司 | 一种基于令牌桶的报文限速方法 |
CN101272346A (zh) * | 2008-04-29 | 2008-09-24 | 华为技术有限公司 | 一种对报文进行流量监管的方法和装置 |
CN101820385A (zh) * | 2010-02-10 | 2010-09-01 | 中国电子科技集团公司第三十研究所 | 一种ip数据流流量的监管方法 |
CN102413042A (zh) * | 2011-11-14 | 2012-04-11 | 盛科网络(苏州)有限公司 | 基于时戳更新令牌桶的流量监管的方法及系统 |
US8943287B1 (en) * | 2012-07-17 | 2015-01-27 | Rockwell Collins, Inc. | Multi-core processor system configured to constrain access rate from memory |
CN106656849A (zh) * | 2016-11-01 | 2017-05-10 | 杭州迪普科技股份有限公司 | 报文限速方法及装置 |
CN106453127A (zh) * | 2016-11-18 | 2017-02-22 | 杭州华三通信技术有限公司 | 一种令牌处理方法和装置 |
US20190268270A1 (en) * | 2018-02-28 | 2019-08-29 | Microsoft Technology Licensing, Llc | Network traffic flow logging in distributed computing systems |
CN111385220A (zh) * | 2018-12-29 | 2020-07-07 | 北京华为数字技术有限公司 | 传输报文的方法和装置 |
CN113163236A (zh) * | 2020-01-22 | 2021-07-23 | 武汉瓯越网视有限公司 | 基于频率控制的数据传输方法、装置、设备和存储介质 |
CN112799861A (zh) * | 2021-01-29 | 2021-05-14 | 上海弘积信息科技有限公司 | 一种多核架构下流量限速无锁并发实现的方法 |
Non-Patent Citations (2)
Title |
---|
ZHE FU ET AL.: "CORAL:a multi-core lock-free rate limiting framework", IEEE, 13 March 2017 (2017-03-13) * |
张琪: "基于QoS的虚拟链路资源隔离技术研究", 《中国优秀硕士学位论文全文数据库》, 15 March 2016 (2016-03-15) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108062269B (zh) | 一种基于dpdk的计算资源弹性伸缩方法及系统 | |
CN109525500B (zh) | 一种自调整阈值的信息处理方法及信息处理装置 | |
CN110519183B (zh) | 一种节点限速的方法、装置、电子设备及存储介质 | |
EP2005670B1 (en) | Control of real time services | |
CN113992594B (zh) | 流量控制方法、装置、电子设备和计算机可读存储介质 | |
CN112799861A (zh) | 一种多核架构下流量限速无锁并发实现的方法 | |
CN113742114A (zh) | 一种系统限流的方法和装置 | |
CN112367270B (zh) | 一种报文发送的方法和设备 | |
CN113032410A (zh) | 数据处理方法、装置、电子设备及计算机存储介质 | |
US20030165116A1 (en) | Traffic shaping procedure for variable-size data units | |
CN113472681A (zh) | 流量限速方法及装置 | |
CN101471884A (zh) | 能够通过限制通信减轻拥塞的通信系统 | |
CN116016356A (zh) | 一种报文处理方法及装置 | |
CN114500381A (zh) | 网络带宽限制方法、系统、电子设备及可读存储介质 | |
CN113835611A (zh) | 存储调度方法、设备和存储介质 | |
CN109391558B (zh) | 一种队列的控制方法及控制装置 | |
CN112822119B (zh) | 一种基于反向令牌桶的流量控制方法、设备及存储介质 | |
US6772244B2 (en) | Queuing delay limiter | |
CN110048959A (zh) | 一种共享QoS业务流的方法、装置及设备 | |
CN114428685A (zh) | 一种数据处理的方法、装置、设备及计算机存储介质 | |
CN110768915A (zh) | 一种分流方法及装置 | |
CN112312165A (zh) | 视频下发方法、装置及计算机可读存储介质 | |
CN115242727B (zh) | 用户请求处理方法、装置、设备和介质 | |
CN114040380B (zh) | 一种数据下发方法、装置、电子设备、介质及产品 | |
CN114968507B (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 |