一种用于报文限速的方法及装置与流程

文档序号:13425211阅读:297来源:国知局
一种用于报文限速的方法及装置与流程

本发明涉及数据网络领域,尤其涉及用于报文限速的方法和装置。



背景技术:

随着数据网络技术发展,当前网络业务多种多样,常常会导致网络拥塞。为了避免网络拥塞,提高数据网络的服务质量(qualityofservice,qos),经常会采取的有效方式是在入端口对报文进行限速,如果报文的速率低于规定的速率,则正常接收报文;如果报文的速率超过规定的速率,则后来的报文会被直接丢弃。

目前普遍釆用的方法是利用漏桶对报文进行限速,漏桶限速原理如图1所示,具体为:按限速的速率均匀不断地从漏桶中移走令牌,直到漏桶为空。当报文到来时,往漏桶里面添加报文的包长所对应的令牌数;如果此时漏桶内的令牌数达到pause线,会发信号通知发送方希望停止继续发送,若继续进行发送,当漏桶里面的令牌数到达discard线,那么就会将后来的报文丢弃。

采用上述所述漏桶对所述报文进行限速的方法,对所有的入端口流量不做区分丢弃,一些数量不大但很重要的协议报文会被无区分的丢弃掉;为了解决这个问题,现有技术中还提出一些处理方法,主要是对报文预先进行业务流分流及优先级标记区分后,再依据漏桶原理依据优先级对应来进行不同的可用空间划分来达到不同等级报文区别丢弃,这种做法导致高优先级报文的转发效率存在延时,严重时导致链路中断。



技术实现要素:

本发明的实施例提出一种报文限速方法,以此克服现有技术中存在的问题。

为了实现上述发明目的,本发明提出的报文限速方法包括:

将超过第一漏桶限速discard线丢弃的报文转入过滤转发桶;

根据预先设置的acl匹配关键字对所述转入过滤转发桶的报文进行acl匹配,将匹配过滤得到的报文进行重定向转发;

根据所述匹配过滤得到的报文对应的令牌数确定二次到达discard线对应的令牌数,对通过第一限速桶的报文进行限速。

优选的在所述将超过第一漏桶限速discard线丢弃的报文转入过滤转发桶前,还包括如下步骤:

获取到当前处理周期第一漏桶限速配置的参数;

所述参数包括:到达discard线对应的漏桶令牌数;

确定当前漏桶内令牌数和接收到的报文转发消耗的令牌数;

根据所述当前漏桶内令牌数和所述接收到的报文转发消耗的令牌数确定接收到报文的转发消耗后漏桶内的令牌数;

确定所述接收到报文的转发消耗后漏桶内的令牌数不小于所述第一漏桶限速discard线。

优选的:所述当前处理周期第一漏桶限速配置的参数还包括:到达pause线的漏桶令牌数、令牌桶刷新周期、令牌移出速率和上一个周期剩余的令牌数;

所述当前漏桶内令牌数是所述上一个周期剩余的令牌数与令牌刷新周期和令牌移除速率的乘积相减得到的。

优选的:在所述接收到的报文转发消耗后漏桶内的令牌数不小于所述到达pause线的漏桶令牌数时,启动acl预先配置,获取二次漏桶限速配置参数;

所述二次漏桶限速配置参数包括:到达discard线对应的漏桶令牌数,上一个周期有剩余在的令牌数;

所述到达discard线对应的漏桶令牌数是根据第一漏桶限速到达discard线对应的漏桶令牌数与所述匹配过滤得到的报文对应的令牌数相减得到的。

优选的:所述对通过第一漏桶限速的报文进行限速,是在所述过滤得到的报文对应的令牌数不小于0时,对通过第一漏桶限速的报文进行限速。

优选的:对所述二次到达discard线对应的令牌数与所述上一个周期有剩余的令牌数进行求和,若求和不小于0,对通过第一漏桶限速的报文进行限速;否则,若小于0,则报文正常转发。

优选的:确定所述接收到报文的转发消耗后漏桶内的令牌数小于所述第一漏桶限速discard线,则报文正常转发。

优选的:所述根据预先设置的acl规则对所述转入过滤转发桶的报文进行acl匹配,没有通过匹配过滤的报文直接丢弃。

本发明还提出的报文限速装置,包括:

转发模块,用于将超过第一漏桶限速discard线丢弃的报文转入过滤转发桶;

过滤模块,用于根据预先设置的acl规则对所述转入过滤转发桶的报文进行acl匹配,将匹配过滤得到的报文进行重定向转发;

限速模块,用于根据所述匹配过滤得到的报文对应的令牌数确定二次到达discard线对应的令牌数,对通过第一限速桶的报文进行限速。

本发明的实施例中,通过设置acl规则,匹配过滤出被第一漏桶限速丢弃的报文中的重要报文,将所述重要进行重定向转发,并根据匹配过滤得到的报文对应的令牌数,确定二次漏桶限速discard线对通过第一漏桶限速的报文进行限速。结合acl,能避免重要的协议报文不被丢弃同时又可以快速的转发出去,确保链路不会中断,从而提高数据转发的稳定性和高效性,从而提升数据网络服务质量,同时对通过第一限速桶的报文进行二次限速,在带宽不变的情况下,保证限速准确性。

附图说明

图1是漏桶限速基本原理图;

图2是本发明的第一实施例的流程图;

图3是本发明第二实施例的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。

本发明提出的报文限速方法包括:

将超过第一漏桶限速discard线丢弃的报文转入过滤转发桶;

根据预先设置的acl匹配关键字对所述转入过滤转发桶的报文进行acl匹配,将匹配过滤得到的报文进行重定向转发;

根据所述匹配过滤得到的报文对应的令牌数确定二次到达discard线对应的令牌数,对通过第一限速桶的报文进行限速。

优选的在所述将超过第一漏桶限速discard线丢弃的报文转入过滤转发桶前,还包括如下步骤:

获取到当前处理周期第一漏桶限速配置的参数;

所述参数包括:到达discard线对应的漏桶令牌数;

确定当前漏桶内令牌数和接收到的报文转发消耗的令牌数;

根据所述当前漏桶内令牌数和所述接收到的报文转发消耗的令牌数确定接收到报文的转发消耗后漏桶内的令牌数;

确定所述接收到报文的转发消耗后漏桶内的令牌数不小于所述第一漏桶限速discard线。

优选的:所述当前处理周期第一漏桶限速配置的参数还包括:到达pause线的漏桶令牌数、令牌桶刷新周期、令牌移出速率和上一个周期剩余的令牌数;

所述当前漏桶内令牌数是所述上一个周期剩余的令牌数与令牌刷新周期和令牌移除速率的乘积相减得到的。

优选的:在所述接收到的报文转发消耗后漏桶内的令牌数不小于所述到达pause线的漏桶令牌数时,启动acl预先配置,获取二次漏桶限速配置参数;

所述二次漏桶限速配置参数包括:到达discard线对应的漏桶令牌数,上一个周期有剩余在的令牌数;

所述到达discard线对应的漏桶令牌数是根据第一漏桶限速到达discard线对应的漏桶令牌数与所述匹配过滤得到的报文对应的令牌数相减得到的。

优选的:所述对通过第一漏桶限速的报文进行限速,是在所述过滤得到的报文对应的令牌数不小于0时,对通过第一漏桶限速的报文进行限速。

优选的:对所述二次到达discard线对应的令牌数与所述上一个周期有剩余的令牌数进行求和,若求和不小于0,对通过第一漏桶限速的报文进行限速;否则,若小于0,则报文正常转发。

优选的:确定所述接收到报文的转发消耗后漏桶内的令牌数小于所述第一漏桶限速discard线,则报文正常转发。

优选的:所述根据预先设置的acl规则对所述转入过滤转发桶的报文进行acl匹配,没有通过匹配过滤的报文直接丢弃。

本发明还提出的报文限速装置,包括:

转发模块,用于将超过第一漏桶限速discard线丢弃的报文转入过滤转发桶;

过滤模块,用于根据预先设置的acl规则对所述转入过滤转发桶的报文进行acl匹配,将匹配过滤得到的报文进行重定向转发;

限速模块,用于根据所述匹配过滤得到的报文对应的令牌数确定二次到达discard线对应的令牌数,对通过第一限速桶的报文进行限速。

本发明针对现有的问题,提供了一种报文限速方法及装置。

第一实施例

参见图2所述,本发明的第一实施例提出了一种报文限速方法,包括:

步骤201:获取到当前漏桶限速配置的参数,到达pause线的漏桶令牌数pn,到达discard线对应的漏桶令牌数dn,,令牌桶刷新周期t,令牌移出速率v,上一个周期剩余的令牌数ps1。

步骤202:得到该处理周期桶内可用漏桶令牌数pa。

得到本周期会转出的令牌数为(t*v),取得上一个周期漏桶内有剩余的令牌数ps,当前桶内令牌总数pa=ps-(t*v)。每个处理周期内,都需要得到此时可用漏桶令牌数。

步骤203:接收报文,计算本周期内到达的报文会添加的令牌数pc,也就是对应报文需要添加到漏桶里面的令牌数

所述令牌数是根据报文的包长确定。

步骤204:计算报文转发消耗后当前桶内令牌数pe

所述令牌数pe=pa+pc即,用当前漏桶可用令牌数加上此次到达报文需要添加到漏桶里面的令牌数

步骤205:pe与pause线pn比较,若是pe>=pn,转入步骤206,若是,pe<pn则转入步骤21216。

若当前可用令牌数达到了pause线,则启动过滤转发桶和二次过滤限速桶的配置。

步骤206:进行acl初始化配置;

所述acl初始化配置,根据系统要求,根据需要过滤的重要报文确定acl的匹配关键字,所述关键字可以是协议号、子协议号、mac、源端口、目的端口或前导码等一种的或者几种组合;

比如,对于承载于tcp、udp协议的报文,例如bgp,rip协议报文,匹配关键字是协议类型和/或端口号;

对于承载于ip报文的协议报文,例如ospf,pim等协议报文,所述匹配关键字是匹配协议号、mac、组播报文和/或目的地址;

对于二层协议,例如,lacp、bpdu、lldp等协议报文,所述匹配关键字是以太网类型。

步骤207:进行二次限速桶配置;

所述二次限速配置包括:获取当前二次限速桶限速配置,即到达discard线对应的漏桶令牌数调整为dn-pp,令牌桶刷新周期t,上一个周期有剩余在的令牌ps2

步骤208:pe与discard线dn比较,若是pe>=dn,转入步骤209,若是,pe<dn则转入步骤216。

步骤209:pe>=dn,即超过了discard线,则当前漏桶限速开始溢出丢包,溢出的报文丢弃,进入过滤转发桶。

步骤210:根据预先配置的acl匹配关键字对进入过滤转发桶的报文进行匹配;所述匹配是指,将进入到过滤转发桶的报文的关键字与acl表项配置的报文关键字进行匹配,若匹配成功,转入步骤212,若匹配不成功,则转入步骤211,步骤211:报文正常丢弃。

步骤212:得到的过滤报文是被丢弃的重要报文,记录下此时过滤报文对应的令牌数pp。

步骤213:对所述报文进行重定向,快速转发到cpu口或者指定的出端口,先于其它报文完成报文的处理。

步骤214:将过滤到的协议报文和第一漏桶限速的报文进行限速;

步骤215:根据获取到第一漏桶限速的配置参数:到达pause线时漏桶令牌数pn,到达discard线时漏桶令牌数dn,重新调整discard线为dn-pp,同时获取到目前剩余的令牌数ps2,若dn-pp+ps2>=0,即将通过acl匹配后的报文考虑进去后对通过第一限速桶的报文再作限速,在限速带宽不能改变的情况下,同时对通过第一限速桶的报文进行二次限速,在带宽不变的情况下,保证限速准确性;如果发现通过acl匹配后的报文的数量已经完全占满了限速的带宽,即dn-pp+ps2<0,那么第一次限速后过来的部分报文会被丢弃;进行到步骤216。

步骤216:报文进入到转发处理流程,进行处理,周期结束。

第二实施例

参见图3所述,本发明的第二实施例提出了一种报文限速装置,所述装置包括:

转发模块,用于将超过第一漏桶限速discard线丢弃的报文转入过滤转发桶;

过滤模块,用于根据预先设置的acl规则对所述转入过滤转发桶的报文进行acl匹配,将匹配过滤得到的报文进行重定向转发;

限速模块,用于根据所述匹配过滤得到的报文对应的令牌数确定二次到达discard线对应的令牌数,对通过第一限速桶的报文进行限速。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

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