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

文档序号:32992042发布日期:2023-01-17 23:38阅读:18来源:国知局
一种报文处理方法及装置与流程

1.本技术涉及数据处理技术领域,尤其涉及一种报文处理方法及装置。


背景技术:

2.在互联网日益发达的今天,随着网络用户的增加,互联网的负担也越来越重,网络变得更加拥挤,严重时会出现网络拥塞,甚至造成业务出现异常,同时也会造成网络资源的浪费。因此就需要有一种机制可以在网络上通过监督进入网络的流量速率,以达到限制流量、提高网络资源使用效率的目的,进而保证有限的网络资源提供更好的网络服务。为了达到上述目的,需要对进入网络的流量进行监督,以实现限速。
3.此外,不同用户接入网络的需求不同,因此要对接入网络的不同的用户进行单独限速,目前采用的限速方式是基于令牌桶的限速方法,即,为每个用户配置一个令牌桶。当用户不断来回变化时,就需要不断地读、写存储器来获取不同用户的令牌余量以及时间值,每个用户只有在令牌余量足够时才能进行转发,从而实现所有用户的速率稳定和受控。但是不断地读、写存储器需要消耗多个时间拍,如果报文要等到读、写存储器计算令牌完成才能进行下一步转发,就会浪费很多时间拍,从而导致网络严重堵塞。因此,就需要有一种方法在不影响网络用户本身速率的情况下,对网络进行监控。
4.目前提供的方案是,将同一用户需要取得的令牌数进行预累加,从而保证对存储器的读、写不那么频繁,且避免了同一用户反复读、写造成的拥堵,使得在下一次读取令牌余量和时间值时有足够的时间,以计算完当前报文的令牌消耗。但是目前的网络用户是极多的,而且用来存放用户的令牌余量和时间值的存储器一般为外置ddr(双倍速率同步动态随机存储器)或qdr(四倍数据速率同步动态随机存储器)等,它们的读、写周期都要比内置ram(随机存储器)长的多,而内置ram又不可能分配足够大的空间给令牌桶使用。现有方案为保证有足够的时间读、写外置存储器,就需要累加更多拍的报文,而且用于预累加判断的资源也会增加,不仅效率不高,而且累加的越多,限速的准确性就越差。
5.因此,如何报文处理时解决读、写外部存储器的时间过长而导致的资源消耗过多和限速准确性降低的问题是值得考虑的技术问题之一。


技术实现要素:

6.有鉴于此,本技术提供一种报文处理方法及装置,用以报文处理时解决读、写外部存储器的时间过长而导致的资源消耗过多和限速准确性降低的问题。
7.具体地,本技术是通过如下技术方案实现的:
8.根据本技术的第一方面,提供一种报文处理方法,应用于网络设备中的现场可编程门阵列fpga中,所述网络设备内部设置有第一缓存区和第二缓存区,所述方法,包括:
9.在本次接收到若干拍的报文后,将所述若干拍的报文中相同用户的报文的报文信息进行累加处理,得到本次的报文统计信息;
10.根据本次的报文统计信息,确定本次发送所述用户的报文所需的目标令牌数量;
11.从所述第一缓存区中获取所述用户当前的令牌余量;
12.从所述第二缓存区中获取记录的所述用户的上一拍的报文到达时的到达时间;
13.根据所述到达时间和当前的系统时间,确定本次接收到所述用户的最后一拍的报文时所述用户的令牌的令牌增量;
14.根据所述令牌余量和所述令牌增量,确定所述用户的令牌总量;
15.若所述令牌总量超过所述目标令牌数量,则根据所述目标令牌数量转发所述用户的报文;
16.根据所述令牌总量和所述目标令牌数量,确定新的令牌余量;并将新的令牌余量写入所述第一缓存区中;
17.将所述最后一拍的报文的到达时间作为所述用户的新的上一拍的报文的到达时间写入所述第二缓存区中。
18.根据本技术的第二方面,提供一种报文处理装置,设置于网络设备中的现场可编程门阵列fpga中,所述网络设备内部设置有第一缓存区和第二缓存区,所述装置,包括:
19.接收模块,用于接收本次的若干拍的报文;
20.累加模块,用于在本次接收到若干拍的报文后,将所述若干拍的报文中相同用户的报文的报文信息进行累加处理,得到本次的报文统计信息;
21.第一确定模块,用于根据本次的报文统计信息,确定本次发送所述用户的报文所需的目标令牌数量;
22.第一获取模块,用于从所述第一缓存区中获取所述用户当前的令牌余量;
23.第二获取模块,用于从所述第二缓存区中获取记录的所述用户的上一拍的报文到达时的到达时间;
24.第二确定模块,用于根据所述到达时间和当前的系统时间,确定本次接收到所述用户的最后一拍的报文时所述用户的令牌的令牌增量;
25.第三确定模块,用于根据所述令牌余量和所述令牌增量,确定所述用户的令牌总量;
26.转发模块,用于若所述令牌总量超过所述目标令牌数量,则根据所述目标令牌数量转发所述用户的报文;
27.第四确定模块,用于根据所述令牌总量和所述目标令牌数量,确定新的令牌余量;
28.第一写入模块,用于并将新的令牌余量写入所述第一缓存区中;
29.第二写入模块,用于将所述最后一拍的报文的到达时间作为所述用户的新的上一拍的报文的到达时间写入所述第二缓存区中。
30.本技术实施例的有益效果:
31.本技术实施例提供的报文处理方法及装置中,在本次接收到若干拍的报文后,将所述若干拍的报文中相同用户的报文的报文信息进行累加处理,得到本次的报文统计信息;根据本次的报文统计信息,确定本次发送所述用户的报文所需的目标令牌数量;从所述第一缓存区中获取所述用户当前的令牌余量;从所述第二缓存区中获取记录的所述用户的上一次最后一拍的报文到达时的到达时间;根据所述到达时间和当前的系统时间,确定本次接收到所述用户的最后一拍的报文时所述用户的令牌的令牌增量;根据所述令牌余量和所述令牌增量,确定所述用户的令牌总量;若所述令牌总量不低于所述目标令牌数量,则根
据所述目标令牌数量转发所述用户的报文。通过对若干拍的报文的报文信息进行统计,然后基于统计得到的报文统计信息确定发送相同用户的报文所需要的令牌数量,这样一来,不再以单个报文为单位进行令牌数量访问,从而在一定程度上能够避免频繁从外部读取令牌数量所造成的资源消耗过大的问题发生,同时也提升了报文限速的准确度;此外,本技术通过设置第一缓存区和第二缓存区,然后将令牌余量和到达时间分别存储在第一缓存区和第二缓存区中,这样,在读取令牌余量时也就不需要从外部存储单元读取,直接从第一缓存区读取方可达到需求,此外在计算令牌增量时也只需从第二缓存区中读取到达时间,从而更近一步地降低了从外部存储单元读取令牌余量的频次,进而节省了资源;同时也更进一步地提升了报文限速结果的准确度。再者,为了更好地实施本技术提供的报文处理方法,还需要根据所述令牌总量和所述目标令牌数量,确定新的令牌余量;并将新的令牌余量写入所述第一缓存区中;将所述最后一拍的报文的到达时间作为所述用户的新的上一次最后一拍的报文的到达时间写入所述第二缓存区中,以便后续报文的限速处理。
附图说明
32.图1是本技术实施例提供的一种报文处理方法的流程示意图;
33.图2是本技术实施例提供的一种报文累加示意图;
34.图3是本技术实施例提供的一种令牌余量读写过程的读写逻辑示意图;
35.图4是本技术实施例提供的一种报文处理装置的结构示意图。
具体实施方式
36.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如本技术的一些方面相一致的装置和方法的例子。
37.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相对应的列出项目的任何或所有可能组合。
38.应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
39.下面对本技术提供的报文处理方法进行详细地说明。
40.参见图1,图1是本技术提供的一种报文处理方法的流程图,该方法可以应用于网络设备中的现场可编程门阵列fpga中,该网络设备可以但不限于为防火墙等网络安全设备。该网络设备内部还设置有第一缓存区和第二缓存区,fpga在实施上述报文处理方法时,可包括如下所示步骤:
41.s101、在本次接收到若干拍的报文后,将所述若干拍的报文中相同用户的报文的
报文信息进行累加处理,得到本次的报文统计信息。
42.本步骤中,fpga接收到的报文可能是不同用户发送的,而在进行报文限速处理时,是基于各用户分别进行的,不同的用户的限速规则不同。有鉴于此,为了提升用户的限速准确度,本实施例提出,fpga在接收到本次的若干拍的报文后,由于若干拍的报文可能是相同或不同用户发来的,为了分别对每个用户按各自的规则进行报文限速处理,fpga需要筛选出若干拍的报文中属于同一个用户的报文,然后将该用于的报文的报文信息进行累加处理,从而统计得到该用户的报文统计信息,以便后续对该用户进行限速处理。
43.具体来说,在当前现存的报文限速中,下一拍的报文必须要等到当前拍的报文计算完成后,才能获取准确地令牌余量,为了防止报文在等待前一报文计算时形成的拥塞,本技术提出将本次接收到的若干拍相同用户的报文进行累加处理,这样累加处理之后会产生一定的时间间隔,从而可以弥补下一个报文的处理需要等待当前报文处理完成的等待时间,同时也不会对报文的整体速率造成影响。
44.可选地,上述本次接收到的报文的拍数可以但不限于为23拍等等,后续为了方便描述,以本次接收到23拍的报文为例进行说明。
45.可选地,上述报文信息可以但不限于初始颜色报文长度等信息。在此基础上,fpga可以将同一用户的报文的报文信息进行累加处理,从而得到报文统计信息。具体来说,针对同一个用户,fpga可以先根据该用户的每个报文的报文信息中的初始颜色计算输出颜色,然后将报文长度和输出颜色进行设定处理,从而得到该报文的报文统计信息,基于各报文的报文统计信息计算出该用户本次的报文统计信息。
46.s102、根据本次的报文统计信息,确定本次发送所述用户的报文所需的目标令牌数量。
47.本步骤中,为了减少频繁读写存储空间所造成的资源消耗过大及限速性能受到影响的问题,本实施例中采用单次若干拍的报文中,基于同一用户的报文汇总得到报文统计信息确定转发该用户的报文所需要的令牌数量,记为上述目标令牌数量,而不再是以报文为单位进行操作,相比之下,本技术能够有效降低资源的消耗及提升报文的限速性能。
48.s103、从第一缓存区中获取所述用户当前的令牌余量。
49.本步骤中,为了进一步避免频繁从外部存储空间读取令牌数量所造成的资源消耗较大的问题,本技术提出,在网络设备中设置第一缓存区,fpga将连续发送报文的用户的令牌余量写入到第一缓存区中。具体来说,当用户频繁访问fpga时肯定会导致频繁读写令牌余量的情况,若令牌余量一直存储在外部存储单元中,则会导致频繁读取外部存储器的情况,相应地,会导致资源的过度消耗,同时影响报文限速的准确度。有鉴于此,本技术提出,将连续向网络设备发送报文的用户的令牌余量暂存到第一缓存区中。
50.在此基础上,当本次计算出目标令牌数量后,就可以从第一缓存区中读取对应用户的令牌余量,若读取到令牌余量,则表明该用户最近一段时间频繁向网络设备发送报文,进而fpga只需要基于读取到的该用户的令牌余量对本次接收到的该用户的报文执行报文限速处理,从而更进一步地减少了频繁对外读取令牌余量的情况发生,此外,由于只需要从网络设备内部的第一缓存区读取令牌余量,由此大大节省了令牌余量的读取时间,在一定程度上提升了基于令牌进行报文限速的处理速度,即提升了限速的准确度。
51.值得注意的是,若未读取到令牌余量,则表明该用户未频繁发送报文,则从外部存
储空间读取该用户的令牌余量,然后执行后续的报文处理流程。
52.s104、从第二缓存区中获取记录的所述用户的上一次最后一拍的报文到达时的到达时间。
53.本步骤中,此外,由于令牌数量是动态变化的,即转发过程中会占用一部分令牌,待报文转发完成后,用于转发该报文的令牌会被释放掉,重新会被加入到令牌桶中供下次转发使用,而针对同一个用户的报文限速处理,单位时间内新增的令牌数量一般是固定的,因此,需要确定出本次接收到该用户的报文距离上一次接收到该用户的报文之间新增的令牌数量。
54.而在确定新增的令牌数量时,是需要记录上一次确定时间的,因此,本技术为了避免频繁访问外部存储单元所造成的资源消耗过大的问题,也会在网络设备配置第二缓存区,由该第二缓存区存储时间信息。具体来说,当用户频繁访问fpga时肯定会导致频繁读写时间信息的情况,若时间信息一直存储在外部存储单元中,则会导致频繁读取外部存储器的情况,相应地,会导致资源的过度消耗,影响报文限速的准确度。有鉴于此,本技术提出,针对频繁向网络设备发送报文的用户,每次处理该用户的报文后,将该次接收到的最后一拍报文到达网络设备的到达时间写入到第二缓存区中。
55.在此基础上,当需要对本次接收到的该用户的报文进行限速处理时,可以从第二缓存区中获取该用户上一次最后一拍的报文的到达时间,然后根据该到达时间来确定令牌增量。
56.s105、根据所述到达时间和当前的系统时间,确定本次接收到所述用户的最后一拍的报文时所述用户的令牌的令牌增量。
57.本步骤中,在确定出上一次最后一拍的报文打到达时间后,可以获取当前的系统时间,然后根据这两个时间及单位时间的令牌增量来确定截止本次接收到该用户的最后一拍的报文时该用户的令牌的令牌增量。
58.s106、根据所述令牌余量和所述令牌增量,确定所述用户的令牌总量。
59.本步骤中,在确定中令牌增量后,就可以将步骤s103中读取到的令牌余量和步骤s105中确定出的令牌增量的和值确定为该用户当前可用的令牌总量。
60.s107、若所述令牌总量不低于所述目标令牌数量,则根据所述目标令牌数量转发所述用户的报文。
61.本步骤中,由于报文是基于令牌发送的,从而达到限速目的,因此当令牌总量超过该目标令牌数量时,则表明当前可用的令牌数量足以支持该用户本次的报文的转发,则可以根据目标令牌数量转发该用户的报文。
62.而当确定出令牌总量小于目标令牌数量时,则表明当前的令牌总量不足以支持该用户本次的报文的转发,则该用户的报文可能被丢弃,或者将报文缓存处理以等待有足够的令牌数量来转发该用户本次的报文。
63.s108、根据所述令牌总量和所述目标令牌数量,确定新的令牌余量;并将新的令牌余量写入所述第一缓存区中。
64.本步骤中,当基于该目标令牌数量转发完该用户本次的报文后,将目标令牌数量个令牌会被释放,因此,可以基于该令牌总量和目标令牌数量来确定新的令牌余量,然后将该新的令牌余量写入到第一缓存区中,以便下一次处理该用户的报文。
65.s109、将所述最后一拍的报文的到达时间作为所述用户的新的上一拍的报文的到达时间写入所述第二缓存区中。
66.本步骤中,为了方便下一次处理该用户的报文,fpga会将本次该用户的最后一拍的报文的到达时间写入到第二缓存区中。
67.通过实施本技术提供的报文处理方法,在本次接收到若干拍的报文后,将所述若干拍的报文中相同用户的报文的报文信息进行累加处理,得到本次的报文统计信息;根据本次的报文统计信息,确定本次发送所述用户的报文所需的目标令牌数量;从所述第一缓存区中获取所述用户当前的令牌余量;从所述第二缓存区中获取记录的所述用户的上一次最后一拍的报文到达时的到达时间;根据所述到达时间和当前的系统时间,确定本次接收到所述用户的最后一拍的报文时所述用户的令牌的令牌增量;根据所述令牌余量和所述令牌增量,确定所述用户的令牌总量;若所述令牌总量不低于所述目标令牌数量,则根据所述目标令牌数量转发所述用户的报文。通过对若干拍的报文的报文信息进行统计,然后基于统计得到的报文统计信息确定发送相同用户的报文所需要的令牌数量,这样一来,不再以单个报文为单位进行令牌数量访问,从而在一定程度上能够避免频繁从外部读取令牌数量所造成的资源消耗过大的问题发生,同时也提升了报文限速的准确度;此外,本技术通过设置第一缓存区和第二缓存区,然后将令牌余量和到达时间分别存储在第一缓存区和第二缓存区中,这样,在读取令牌余量时也就不需要从外部存储单元读取,直接从第一缓存区读取方可达到需求,此外在计算令牌增量时也只需从第二缓存区中读取到达时间,从而更近一步地降低了从外部存储单元读取令牌余量的频次,进而节省了资源;同时也更进一步地提升了报文限速结果的准确度。再者,为了更好地实施本技术提供的报文处理方法,还需要根据所述令牌总量和所述目标令牌数量,确定新的令牌余量;并将新的令牌余量写入所述第一缓存区中;将所述最后一拍的报文的到达时间作为所述用户的新的上一次最后一拍的报文的到达时间写入所述第二缓存区中,以便后续报文的限速处理。
68.可选地,基于上述任一实施例,在接收到本次的若干拍的报文后,可以将同一用户的报文的报文数量进行汇总,当报文数量达到设定数量时,再执行图1所示的流程,即该用户本次发送的报文足够多时再实施本技术提供的报文处理方法;上述设定数量的取值可以根据实际情况进行配置。
69.当本次接收到的该用户的报文的报文数量未达到设定数量时,则可以按照目前存在的流程进行处理,具体可以参考下述对若干拍的报文中不包括相同用户的报文的报文处理流程。
70.此外,相同用户的报文的源ip地址相同,因此,可以基于源ip地址来统计相同用户的报文统计信息,即,将相同源ip地址的报文的报文信息进行累加处理,从而得到报文统计信息。
71.可选地,基于上述任一实施例,本实施例中提供的报文处理方法,还可以包括下述过程:当本次接收到的若干拍的报文中不包括相同用户的报文时,则针对每个用户的报文信息确定发送该用户的报文所需的令牌数量;从该用户对应的外接存储单元中获取该用户当前的令牌余量;根据获取到的令牌余量和发送该用户的报文所需的令牌数量,转发该用户的报文;重新确定令牌余量;将确定出的令牌余量写入该用户的外接存储单元中。
72.具体地,本技术中的第一缓存区和第二缓存区是用于存储连续向网络设备中发送
报文的令牌余量和到达时间的,当短时间内没有同一用户的报文未达到网络设备时,则该用户的令牌余量和到达时间就不需要存储在第一缓存区和第二缓存区中,只需要在外部存储单元中读取即可,这样一来,第一缓存区和第二缓存区的存储空间也就不需要设置的过大,例如,可以但不限于分别将第一缓存区和第二缓存区的缓存深度设置为32等等。
73.具体来说,当短时间内有相同用户的报文到来时,为了避免反复读写外部存储单元,将这种相同用户的连续报文的令牌余量、到达时间分别存储在第一缓存区和第二缓存区中,然后按照图1所示的流程从对应缓存区中取出需要的信息进行计算,待到后续没有相同地址的报文将到来时,按照上述流程将最终的到达时间、令牌余量写入外部存储单元中,由于外部存储单元存储了所有用户的令牌余量和到达时间,这样也就不需要将第一缓存区和第二缓存区的存储空间设置较大,进而也就不会因空间设置较大而影响fpga的正常业务处理。此外,短时间内到来的报文用户都不同时,直接从外部存储单元读取即可。
74.在检测短时间内有没有相同用户的报文的突发时,只需要对短时间缓存的报文进行检测,例如,可以检测23个时钟周期缓存的报文是否存在相同用户的报文。在这23拍的报文中没有相同用户的报文,则不存在报文的突发,则读取外置存储单元的时间是完全足够的,且不会很频繁,同时也不会出错。
75.此外,在确定本次的若干拍是否有相同的报文时,可以基于若干拍报文缓存到报文缓存区进行确认,即,将本次接收到的报文输入到流水线23级缓存中,然后对设定拍内的报文中相同的报文的报文信息进行累加处理。为了方便理解,参考图2所示报文累加示意图进行说明,该报文缓存区的存储位置以编号0~22表示,报文信息为报文长度,报文统计信息为长度为例进行说明,以每个报文的报文长度为10为例进行说明,图2中第22拍的报文可以理解为前一次接收到的若干拍的报文,图2中表示若干拍报文为2个用户发送的,如在第15~21拍之间的报文中,编号15/18/19/21/22的报文为用户1的报文,在第13~第20拍的报文中,编号16/17/20的报文为用户2的报文。针对用户1,从第21拍开始,可以对第21拍、第19拍、第18拍和第15拍的报文的报文长度进行累加处理,从而得到在第15~第21拍这7拍中用户1的报文统计信息
‑‑‑
长度为40;同理,针对用户2,从第20拍开始,可以对第20拍、第17拍、第16拍和第13拍的报文进行累加,从而可以得到在第13~第20拍这7拍中用户2的报文统计信息
‑‑‑
长度40。按照上述方法,也就可以得到每次接收到的若干拍的报文中相同用户的报文的报文统计信息,为后续准确确定发送本次接收到的每个用户的报文所需要的目标令牌数量。
76.需要说明的是,上述在若干拍具体取何值,可以根据后续其他模块计算所需要的时间来定,旨在尽可能的实现无缝对接。
77.在此基础上,本实施例提供的报文处理方法中,在执行步骤s101之后,还可以包括下述过程:确定本次累加处理与上一次累加处理之间的报文间隔。
78.具体来说,由于本技术需要读写第一缓存区和第二缓存区,因此读写这两个缓存区的地址是动态变化的,在此基础上,为了更准确地读出用户的令牌余量和到达时间,本技术需要计算报文间隔,即,计算本次累加处理与上一次累加处理之间的报文间隔,然后根据该报文间隔来分别确定读写第一缓存区和第二缓存区的实际地址。
79.还以图2为例进行说明,在确定出第15~第21拍之间的报文后,可以确定出本次与上一次累加之间的报文间隔,即第15拍与第22拍之间的报文间隔,该报文间隔也可以记作
偏移offset。
80.在确定出上述报文间隔之后,本实施例中,可以按照下述过程执行步骤s103:确定上述用户的最后一拍的报文到达时第一缓存区当前的第一读地址;根据第一读地址和报文间隔,确定令牌余量的第一实际读地址;从第一缓存区中第一实际读地址的对应位置处读取令牌余量。
81.同理,可以按照下述过程执行步骤s108中的令牌余量的写入过程:确定本次用户的最后一拍的报文到达时第一缓存区当前的第一写地址;根据第一写地址和报文间隔,确定新的令牌余量的第一实际写地址;将新的令牌余量写入第一缓存区中第一实际写地址的对应位置处。
82.具体地,由于报文输出颜色、令牌增减量的计算会消耗一定的时间,因此在读取第一缓存区中的令牌余量时需要地址校正,以便准确地读出令牌余量。同理,若是在计算报文时间差时也消耗了时间,则也需要进行相应的地址校正,以便准确地读出到达时间。此外,第一缓存区和第二缓存区可以由各用户任意且临时占用,且互不冲突。而且缓存区的读写地址不限于用户进行控制,但是随着时间的自动增长、循环,考虑到令牌增减量及报文时间差的计算需要消耗时间,因此,在读写地址时存在一定的偏移,该偏移即为上述报文间隔。假设上述偏移为5个时钟周期,则就需要根据当前的读或写地址及上述偏移来计算出实际的读地址或写地址,进而基于实际的读地址或写地址准确地读入或写入令牌余量或到达时间。
83.为了更好地理解本实施例,以上述报文间隔为5拍的时间为例进行说明,参考图3所示的读写过程为例进行说明,假设用户1的报文1到达时当前的第一写地址wr_addr=7、第一读地址rd_addr=12,该报文1之前有与之用户地址(用户1的用户地址)相同的报文0之间相差6个周期,即报文间隔也称偏移offset=6,那么上一拍报文0计算的令牌余量存在地址为第一读地址与偏移之间的差值,即得到的第一实际读地址为rd_addr

offset=6,这样,就可以从第一实际读地址中读取对用户1的令牌余量。
84.同理,在基于读取到的令牌余量执行用户1的报文转发后,会重新计算用户1的令牌余量,即上述新的令牌余量,则在计算出用户1的令牌余量后,则在需要写入第一缓存区时,还需要确定该令牌余量的第一实际写地址,则此时再基于第一实际写地址向第一缓存区写入新的令牌余量。例如,在从第一缓存区中读取到用户1的令牌余量后,经过5个周期后得出新的令牌余量,随着时间的增长,读/写地址也在增长,此时将报文1的新的令牌余量写入到第一缓存区的第一实际写地址为:当前的第一写地址与报文间隔之间的和值,即wr_addr+5=12,即写到了报文1达到时的rd_addr对应的位置。假设又过了3个周期后,下一个相同用户地址的报文2到达,就需要读上一个报文1计算之后的结果,即用地址12空间的值进行计算,若报文2相比于上一报文1到达的时间差了5+3=8个周期,即offset=8。由于地址会随着时间增长,此时的第一读地址和第一写地址会发生变化,例如第一读地址:rd_addr=20,与上述计算实际地址的方法相同,第一实际读地址为:rd_addr

offset=12,即取到了上一报文1计算之后的令牌余量。在接到若干拍报文后,进行实际读地址和实际写地址的方法可以参考前述说明即可得到,此处不再一一详细列举。由此实现了令牌余量的准确读出和写入。
85.基于同样地理由,在读写到达时间时可以需要进行地址矫正。具体来说,可以按照
下述方法执行步骤s104:确定本次所述用户的最后一拍的报文到达时所述第二缓存区当前的第二读地址;根据所述第二读地址和所述报文间隔,确定所述用户的上一次最后一拍的报文到达时的到达时间的第二实际读地址;从所述第二缓存区中所述第二实际读地址的对应位置处读取所述用户的上一次最后一拍的报文到达时的到达时间的第二实际读地址。
86.进一步地,可以按照下述方法执行步骤s109:确定本次所述用户的最后一拍的报文到达时所述第二缓存区当前的第二写地址;根据所述第二写地址和所述报文间隔,确定所述用户的新的上一次最后一拍的报文到达时的到达时间的第二实际写地址;将所述用户的新的上一次最后一拍的报文到达时的到达时间写入到所述第二缓存区中所述第二实际写地址的对应位置处。
87.需要说明的是,在从第二缓存区读取到达时间和写入到达时间的方法与读写令牌余量的方法相似。由此实现了到达时间的准确读出和写入。
88.可选地,基于上述任一实施例,本实施例中,可以按照下述方法执行步骤s105中的令牌增量:确定所述系统时间与所述到达时间之间的时间差;将时间差与用户的单位时间的单位令牌增量之间的乘积,确定为本次接收到用户的最后一拍的报文时所述用户的令牌的令牌增量。
89.具体地,在本次接收到的相同用户的最后一拍的报文到达时,可以记录本次的该用户的最后一拍的报文的到达时间,即当前的系统时间sys_time,然后从第二缓冲区中读取记录的、上一次该用户的最后一拍的报文到达时的到达时间,记为last_time,从而可以得到两个报文之间的时间差,记为δtime。在此基础上,可以获得该用户单位时间的单位令牌增量,记为xir,然后就可以得到该用户在此时间差内的令牌增量,即,时间差与单位令牌增量的乘积,具体可以参考下述公式表示:
90.δtime=sys_time

last_time
91.δtoken=δtime*xir
92.在确定出令牌增量之后,就可以根据从第一缓存区中读取到的该用户的令牌余量token_remain,计算出该用户当前时间的令牌总量token,即令牌余量与令牌增量的和值,可以用下述公式表示:
93.token=token_remain+δtoken
94.在基于目标令牌余量对本次该用户的报文进行转发处理后,可以再次确认出转发处理后该用户新的令牌余量token_0,参考下述公式表示:
95.token_0=token

token_take
96.在此基础之上,将该新的令牌余量作为前述令牌余量token_remain,按照步骤s108的方法写入到第一缓存区中,以便参与后续的令牌计算,进而实现报文的限速处理。同理,将本次接收到的该用户的最后一拍的报文的到达时间,也即当前的系统时间sys_time作为上一次写入的到达时间last_time,按照步骤s109的方法写入到第二缓存区中,从而保证了令牌余量和到达时间的准确读取和写入。
97.可选地,基于上述任一实施例,本实施例中,上述第一缓存区、第二缓存区可以但不限于为ram,上述外部存储单元可以但不限于为qdr。
98.此外,本技术任一实施例中令牌计算时可以支持单速单桶模式、单速双桶模式和双速双桶模式等等。
99.需要说明的是,本技术涉及的报文可以为包括能够表征报文所属用户、报文长度等限速相关信息的报文,上述用户可以是真实用户,也可以为虚拟用户,如vsys等等。
100.通过实施上述方法,能够降低外部存储单元的读写频率,对网络设备和外部存储单元的功耗和寿命均有益处,此外,报文限速处理时无需等待且能够达到对报文原速率的无影响,同时能够提升限速的准确度。
101.基于同一发明构思,本技术还提供了与上述报文处理方法对应的报文处理装置。该报文处理装置的实施具体可以参考上述对报文处理方法的描述,此处不再一一论述。
102.参见图4,图4是本技术一示例性实施例提供的一种报文处理装置,设置于网络设备中的现场可编程门阵列fpga中,该网络设备内部设置有第一缓存区和第二缓存区,上述装置,包括:
103.接收模块401,用于接收本次的若干拍的报文;
104.累加模块402,用于在本次接收到若干拍的报文后,将所述若干拍的报文中相同用户的报文的报文信息进行累加处理,得到本次的报文统计信息;
105.第一确定模块403,用于根据本次的报文统计信息,确定本次发送所述用户的报文所需的目标令牌数量;
106.第一获取模块404,用于从所述第一缓存区中获取所述用户当前的令牌余量;
107.第二获取模块405,用于从所述第二缓存区中获取记录的所述用户的上一次最后一拍的报文到达时的到达时间;
108.第二确定模块406,用于根据所述到达时间和当前的系统时间,确定本次接收到所述用户的最后一拍的报文时所述用户的令牌的令牌增量;
109.第三确定模块407,用于根据所述令牌余量和所述令牌增量,确定所述用户的令牌总量;
110.转发模块408,用于若所述令牌总量不低于所述目标令牌数量,则根据所述目标令牌数量转发所述用户的报文;
111.第四确定模块409,用于根据所述令牌总量和所述目标令牌数量,确定新的令牌余量;
112.第一写入模块410,用于并将新的令牌余量写入所述第一缓存区中;
113.第二写入模块411,用于将所述最后一拍的报文的到达时间作为所述用户的新的上一次最后一拍的报文的到达时间写入所述第二缓存区中。
114.可选地,基于上述实施例,本实施例中提供的报文处理装置,还包括:
115.第五确定模块(图中未示出),用于在所述累加模块将所述若干拍的报文中相同用户的报文的报文信息进行累加处理,得到本次的报文统计信息之后,确定本次累计处理与上一次累加处理之间的报文间隔;
116.在此基础之上,上述第一获取模块404,具体用于确定所述用户的最后一拍的报文到达时所述第一缓存区当前的第一读地址;根据所述第一读地址和所述报文间隔,确定所述令牌余量的第一实际读地址;从所述第一缓存区中所述第一实际读地址的对应位置处读取所述令牌余量;
117.所述第一写入模块410,具体用于确定本次所述用户的最后一拍的报文到达时所述第一缓存区当前的第一写地址;根据所述第一写地址和所述报文间隔,确定所述新的令
牌余量的第一实际写地址;将所述新的令牌余量写入所述第一缓存区中所述第一实际写地址的对应位置处。
118.可选地,基于上述实施例,本实施例中,上述第二获取模块405,具体用于确定本次所述用户的最后一拍的报文到达时所述第二缓存区当前的第二读地址;根据所述第二读地址和所述报文间隔,确定所述用户的上一次最后一拍的报文到达时的到达时间的第二实际读地址;从所述第二缓存区中所述第二实际读地址的对应位置处读取所述用户的上一次最后一拍的报文到达时的到达时间的第二实际读地址;
119.所述第二写入模块411,具体用于确定本次所述用户的最后一拍的报文到达时所述第二缓存区当前的第二写地址;根据所述第二写地址和所述报文间隔,确定所述用户的新的上一次最后一拍的报文到达时的到达时间的第二实际写地址;将所述用户的新的上一次最后一拍的报文到达时的到达时间写入到所述第二缓存区中所述第二实际写地址的对应位置处。
120.可选地,基于上述任一实施例,本实施例中,上述第二确定模块406,具体用于确定所述系统时间与所述到达时间之间的时间差;确定单位时间的单位令牌增量;将所述时间差与所述单位令牌增量之间的乘积,确定为本次接收到所述用户的最后一拍的报文时所述用户的令牌的令牌增量。
121.可选地,基于上述任一实施例,本实施例中提供的报文处理装置,还包括:
122.第六确定模块(图中未示出),用于当本次接收到的若干拍的报文中不包括相同用户的报文时,则针对每个用户的报文信息确定发送该用户的报文所需的令牌数量;
123.第三获取模块(图中未示出),用于从该用户对应的外接存储单元中获取该用户当前的令牌余量;
124.在此基础上,上述转发模块408,还用于根据获取到的令牌余量和发送该用户的报文所需的令牌数量,转发该用户的报文;
125.第七确定模块(图中未示出),用于重新确定令牌余量;
126.第三写入模块(图中未示出),用于将确定出的令牌余量写入该用户的外接存储单元中。
127.通过提供上述装置,能够降低外部存储单元的读写频率,对网络设备和外部存储单元的功耗和寿命均有益处,此外,报文限速处理时无需等待且能够达到对报文原速率的无影响,同时能够提升限速的准确度。
128.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
129.上述装置中各个单元/模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
130.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实
施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元/模块可以是或者也可以不是物理上分开的,作为单元/模块显示的部件可以是或者也可以不是物理单元/模块,即可以位于一个地方,或者也可以分布到多个网络单元/模块上。可以根据实际的需要选择其中的部分或者全部单元/模块来实现本技术方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
131.以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1