一种报文处理方法及装置与流程

文档序号:33954823发布日期:2023-04-26 14:37阅读:55来源:国知局
一种报文处理方法及装置与流程

本发明涉及数据通信领域,尤其涉及一种报文处理方法及装置。


背景技术:

1、在网络中传输报文时,为了防止网络拥塞,需限制流出网络的报文,使报文以比较均匀的速度向外发送。令牌桶算法就实现了这个功能,可控制发送到网络上报文的数目,并允许突发报文的发送。

2、在将报文发送到网络上时,需要消耗令牌桶中的令牌。不同大小的报文,消耗的令牌数量不一样,因此需要发送报文时,就会从令牌桶中获取发送报文所需的令牌。

3、在多核网络设备中,当有报文需要做限速处理时,令牌桶作为临界资源需要进行互斥保护。即当一个核中有一个报文需要发送时,将在令牌桶中获取令牌,此时不允许其他核从令牌桶中获取令牌,导致多核不能并行处理。且每当有一个报文需要发送时,就需从令牌桶中获取领牌,令牌桶就会进行一次互斥保护;因此当有多个报文需要发送时,就会进行多次加锁互斥保护,导致加锁互斥频率高。这样势必会影响到多核网络设备的并发,最终影响限速的性能。因此,在多核网络设备中如何对令牌桶采用无锁并发方式实现报文限速的方法成为人们亟待解决的问题。


技术实现思路

1、为了解决上述问题,本发明提供一种报文处理方法,解决了多核网络设备中因令牌桶的加锁互斥影响报文限速转发的性能问题。

2、第一方面,本发明提供一种报文处理方法,该方法采用具有多核处理器的设备来实现,包括以下步骤:

3、选取多核处理器的一个核core0用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至令牌的添加统计值;当任一核corei有待转发的报文时,核corei计算当前所述令牌桶的剩余令牌值;根据所述剩余令牌值,核corei对所述报文进行着色,并按照着色结果对所述报文进行处理,然后核corei根据本核对所述报文的实际转发量,累计本核对所述令牌的申请统计值;其中,0≤i≤n,n为所述多核处理器的内核总数,并且所述剩余令牌值等于所述添加统计值减去所述多核处理器所有核的所述申请统计值之和。

4、其中,所述选取多核处理器的一个核core0用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至令牌的添加统计值,包括:

5、所述令牌桶为单速单桶模式时,核core0按照预设的时间周期计算所述令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至所述添加统计值,直至所述令牌桶已满;或,所述令牌桶为单速双桶模式时,核core0按照预设的时间周期计算所述令牌桶的第一令牌增量值,所述第一令牌增量值优先用于还清c桶令牌的负债,再优先用于还清e桶令牌的负债,如果c桶和e桶都没有令牌的负载,剩余的所述第一令牌增量值先累计至c桶的所述添加统计值直至c桶已满,再累计至e桶的所述添加统计值直至e桶已满。

6、所述根据所述剩余令牌值,核corei对所述报文进行着色,并按照着色结果对所述报文进行处理,然后核corei根据本核对所述报文的实际转发量,累计本核对所述令牌的申请统计值,包括:

7、所述令牌桶为单速单桶模式时,如果所述剩余令牌值大于零,核corei将所述报文标记为绿色,并对报文进行转发,然后核corei根据本核对所述报文的实际转发量,累计本核的所述申请统计值;如果所述剩余令牌值小于等于零,核corei将所述报文标记为红色,并对报文进行丢弃或入队等待处理,此时本核对所述申请统计值维持不变;或,所述令牌桶为单速双桶模式时,如果c桶的所述剩余令牌值大于零,核corei将所述报文标记为绿色,并对报文进行转发,然后核corei根据本核对所述报文的实际转发量,累计本核c桶的所述申请统计值;否则,如果c桶的所述剩余令牌值加e桶的所述剩余令牌值之和大于零,核corei将所述报文标记为黄色,并对报文进行转发,然后核corei根据本核对所述报文的实际转发量,累计本核e桶的所述申请统计值;否则,核corei将所述报文标记为红色,并对报文进行丢弃或入队等待处理,此时核corei对c桶和e桶的所述申请统计值均维持不变。

8、所述剩余令牌值等于所述添加统计值减去所述多核处理器所有核的所述申请统计值之和,包括:所述令牌桶为单速双桶模式时,当前c桶的所述剩余令牌值等于c桶的所述添加统计值减去所述多核处理器所有核的c桶的所述申请统计值之和,当前e桶的所述剩余令牌值等于e桶的所述添加统计值减去所述多核处理器所有核的e桶的所述申请统计值之和。

9、在一种可能的实现中,所述方法还包括:在连续多个所述时间周期内所述令牌桶都是已满状态时,核core0暂停累计所述添加统计值并记录当前系统时间戳,待任一核corei有待转发的报文时向核core0发送唤醒信号,核core0收到唤醒信号后,根据最新系统时间戳与所述当前系统时间戳的时间间隔计算第二令牌增量值,并将所述第二令牌增量值累计至所述添加统计值。

10、第二方面,本发明提供一种报文处理装置,包括令牌添加核core0和令牌申请核corei,所述装置包括:

11、令牌添加核core0,用于按照预设的时间周期计算令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至令牌的添加统计值;

12、令牌申请核corei,用于本核有待转发的报文时,计算当前所述令牌桶的剩余令牌值;用于根据所述剩余令牌值,对所述报文进行着色,并按照着色结果对所述报文进行处理,然后根据本核对所述报文的实际转发量,累计本核对所述令牌的申请统计值;其中,0≤i≤n,n为所述多核处理器的内核总数,并且所述剩余令牌值等于所述添加统计值减去所述多核处理器所有核的所述申请统计值之和。

13、其中,所述令牌添加核core0具体用于:所述令牌桶为单速单桶模式时,按照预设的时间周期计算所述令牌桶的第一令牌增量值,并将所述第一令牌增量值累计至所述添加统计值,直至所述令牌桶已满;或,所述令牌桶为单速双桶模式时,按照预设的时间周期计算所述令牌桶的第一令牌增量值,所述第一令牌增量值优先用于还清c桶令牌的负债,再优先用于还清e桶令牌的负债,如果c桶和e桶都没有令牌的负载,剩余的所述第一令牌增量值先累计至c桶的所述添加统计值直至c桶已满,再累计至e桶的所述添加统计值直至e桶已满。

14、所述令牌申请核corei具体用于:所述令牌桶为单速单桶模式时,如果所述剩余令牌值大于零,将所述报文标记为绿色,并对报文进行转发,然后根据本核对所述报文的实际转发量,累计本核的所述申请统计值;如果所述剩余令牌值小于等于零,将所述报文标记为红色,并对报文进行丢弃或入队等待处理,此时本核对所述申请统计值维持不变;或,所述令牌桶为单速双桶模式时,如果c桶的所述剩余令牌值大于零,将所述报文标记为绿色,并对报文进行转发,然后根据本核对所述报文的实际转发量,累计本核c桶的所述申请统计值;否则,如果c桶的所述剩余令牌值加e桶的所述剩余令牌值之和大于零,将所述报文标记为黄色,并对报文进行转发,然后根据本核对所述报文的实际转发量,累计本核e桶的所述申请统计值;否则,将所述报文标记为红色,并对报文进行丢弃或入队等待处理,此时本核对c桶和e桶的所述申请统计值均维持不变。

15、在一种可能的实现中,所述令牌申请核corei具体用于:所述令牌桶为单速双桶模式时,当前c桶的所述剩余令牌值等于c桶的所述添加统计值减去所述多核处理器所有核的c桶的所述申请统计值之和,当前e桶的所述剩余令牌值等于e桶的所述添加统计值减去所述多核处理器所有核的e桶的所述申请统计值之和。

16、在一种可能的实现中,所述令牌添加核core0具体还用于:在连续多个所述时间周期内所述令牌桶都是已满状态时,暂停累计所述添加统计值并记录当前系统时间戳,待收到任一令牌申请核corei发送的唤醒信号后,根据最新系统时间戳与所述当前系统时间戳的时间间隔计算第二令牌增量值,并将所述第二令牌增量值累计至所述添加统计值;所述令牌申请核corei具体还用于:本核有待转发的报文时向所述令牌添加核core0发送唤醒信号。

17、综上所述,本发明通过多核无锁并行处理,使得每个核对令牌桶中的令牌可以彼此不受干扰的进行添加和申请操作,避免了多核访问令牌桶时的加锁互斥处理,能够大幅提升令牌桶限速时的报文转发性能,进而提升多核处理器的整体转发性能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1