一种实现负荷分担的方法和路由设备的制作方法

文档序号:7742290阅读:106来源:国知局
专利名称:一种实现负荷分担的方法和路由设备的制作方法
技术领域
本发明涉及IP报文转发技术领域,尤其涉及一种实现负荷分担的方法和路由设备。
背景技术
在路由器、交换机等设备中,通常在对同一目的IP报文进行转发时,根据目的IP 查找到的路由表中的出接口都是相同的,即所有流量都通过路由表中的下一跳以及出接 口发送到下一个设备,那么,当流量超过接口带宽或者受到流量管理时,部分数据会被路由 器设备丢弃,从而影响用户正常业务。为了减少数据丢失的可能,可以在转发时将相同目的 IP的数据流量按某种策略分配到多个不同的链路上,最终再汇聚到共同的目标设备,这就 是负荷分担。 负荷分担的选路策略一般有两种第一种,是将相同的目的IP的流量均匀分配到 所有的负荷分担链路上,这种选路策略适合使用在对流量保序要求不高的场合,优点是流 量绝对均衡,缺点就是报文顺序不能保证,如图l所示,目的IP同为到路由器B的报文会 均匀分配到三条链路转发到路由器B,但因转发通过不同链路所用的时间是不同的,因此, 报文到达路由器B后的顺序可能会改变,用户收到乱序报文后会发出报文重发的请求,网 络服务质量会因此降低;第二种,是按流量特征选择链路,相同目的IP的报文根据端口号、 协议类型的不同等生成流特征标识,每个流特征标识对应一条负荷分担链路,由此保证用 户相同的业务流量走相同的链路,减少了报文顺序错乱的可能,服务质量得以提高,但是, 同样缺点在于当某一种业务流量占带宽比较多时,链路的负荷分担效果得不到体现,同样 如图1所示,假设到路由器B的相同目的IP报文只按协议类型分类选路,则可能用户数据 包协议(UDP,User Datagram Protocol)报文走链路一,传输控制协议(TCP,Transmission Control Protocol)报文走链路二,从而保证了相同协议类型报文选择相同链路,减少报文 乱序的可能。 现有的负荷分担实现方法中,无论是基于报文的均匀选路方式还是基于流特征标 识的选路方式,都需要将报文序列号、或随机数、或报文流特征标识对应到负荷分担的一条 链路,一般使用流特征标识对链路数求余的方法,对于没有求余计算模块的处理器,用软件 来实现这个算法是非常占指令行的,对于网络处理器来说,如果一个报文在处理流程中某 个算法占用过多的指令行,会导致路由器设备转发性能降低。 另外,如果使用的报文序列号或随机数的最大范围不是负荷分担链路数的倍数, 则使用基于报文的均匀选路方式时,流量会产生误差,并不会完全均匀分布到各链路上。如 图1所示,当报文序列号范围是0-65535 (16Bits的计数器),负荷分担链路为如图1所示三 条相同带宽的出接口 ,报文在计算选路时,用报文序列号对3求余,余数结果为0的会比余 数结果为1、2的多l个,因此,选择链路一的报文会多l个,在长时间转发后会产生一定的 误差;当报文序列号范围更小是时,误差会更为明显。

发明内容
有鉴于此,本发明的主要目的在于提供一种实现负荷分担的方法和路由设备,能 直接选择转发的下一跳及出接口信息,并对产生链路选择不均匀误差的报文进行转发,从 而保证高效率、高质量的报文转发。 为达到上述目的,本发明的技术方案是这样实现的
本发明提供了一种实现负荷分担的方法,包括 获取负荷分担策略并生成负荷分担链路表,当负荷分担策略是基于报文选路且会 产生负荷分担误差时,使用误差计数器中的负荷分担误差计数值查找负荷分担链路表,得 到下一跳以及出接口信息; 根据所述负荷分担链路表中的下一跳以及出接口信息转发报文。 上述方案中,所述获取负荷分担策略并生成负荷分担链路表之后,该方法还包
括 在收到转发的报文后,根据报文计数生成报文序列号,根据目的IP和协议类型生 成报文标识,根据报文的目的IP查找路由设备,获得对应的路由信息表,判断所述路由信 息表中是否存在负荷分担标记,如果有所述负荷分担标记,则确定进行负荷分担,如果没有 所述负荷分担标记,则确定不进行负荷分担。 上述方案中,所述确定进行负荷分担之后,该方法还包括 根据路由信息表中的负荷分担策略标记,判断是基于报文选路方式还是基于流选 路方式;如果是基于报文选路方式,判断是否会产生负荷分担误差。 上述方案中,该方法进一步包括当所述负荷分担策略是基于报文选路且不会产 生负荷分担误差时、或者当负荷分担策略是基于流选路时,根据报文标识查找所述负荷分 担链路表。 上述方案中,所述得到下一跳以及出接口信息之后,该方法还包括所述负荷分担 误差计数值增加1。
上述方案中,所述获取负荷分担策略并生成负荷分担链路表具体为 根据目的路由设备的IP生成路由信息表,当存在负荷分担时获取用户所配置的
负荷分担策略,在所述路由信息表中自动形成负荷分担标记和负荷分担策略标记,根据各
个出接口的带宽得到负荷分担链路表中各个出接口的分担比例,根据所述负荷分担策略、
负荷分担标记、负荷分担链路接口带宽比例,生成负荷分担链路表。 本发明还提供了一种实现负荷分担的路由设备,包括负荷分担配置模块、生成模 块、转发模块;其中, 负荷分担配置模块,用于配置负荷分担策略; 生成模块,用于根据所述负荷分担配置模块配置的负荷分担策略以及路由信息, 生成负荷分担链路表; 转发模块,用于在所述负荷分担策略是基于报文选路且会产生负荷分担误差时, 使用误差计数器中的负荷分担误差计数值查找所述生成模块生成的负荷分担链路表,根据 所述负荷分担链路表中的下一跳以及出接口信息转发报文。 上述方案中,该设备还包括路由信息表生成模块,用于根据目的路由设备的IP生 成路由信息表。
5
上述方案中,所述生成模块生成负荷分担链路表的具体过程为 根据路由信息表生成模块生成的路由信息表,当存在负荷分担时获取用户所配
置的负荷分担策略,在所述路由信息表中自动形成负荷分担标记和负荷分担策略标记,根
据各个出接口的带宽得到负荷分担链路表中各个出接口的分担比例,根据所述负荷分担策
略、负荷分担标记、负荷分担链路接口带宽比例,生成负荷分担链路表。 本发明所提供的实现负荷分担的方法和路由设备,可直接选择转发的下一跳及出 接口信息,极大的减少了转发时选择链路的计算时间,保证数据转发通道的高效转发;并且 将负荷分担链路表与路由信息表分开,增加了表项管理的灵活性,减小了路由与负荷分担 的耦合性,当路由信息或负荷分担相关配置与链路信息发生变化时进行分别维护,提高了 系统的稳定高效性。同时,在没有求余计算的情况下,利用误差累积计数的方法计算出在报 文选路时产生的误差,提高了路由器设备转发时的性能,从而提高了负荷分担的服务质量。


图1为现有的负荷分担应用组网示意图; 图2为本发明负荷分担链路表的示例图; 图3为本发明实现负荷分担的方法的流程示意图; 图4为本发明实现负荷分担的路由设备的结构示意图。
具体实施例方式
本发明的基本思想是当负荷分担策略是基于报文选路且产生负荷分担误差时, 使用误差计数器中的负荷分担误差计数值查找负荷分担链路表,得到下一跳以及出接口信 息,并根据得到的下一跳以及出接口信息转发报文。 下面通过附图及具体实施例对本发明再做进一步的详细说明。 图3是本发明实现负荷分担的方法的流程示意图,如图3所示,本发明提供的一种 实现负荷分担的方法包括以下步骤 步骤301,获取负荷分担策略并生成负荷分担链路表; 具体的,根据目的路由设备的IP生成路由信息表,当存在负荷分担时获取用户 所配置的负荷分担策略,在路由信息表中自动形成负荷分担标记和负荷分担策略标记,根 据各个出接口的带宽可以得到负荷分担链路表中各个出接口的分担比例,根据负荷分担策 略、负荷分担标记、负荷分担链路接口带宽比例,生成负荷分担链路表;当负荷分担链路关 系发生变化时,负荷分担链路表需要更新出接口和下一跳信息。例如,如图2所示,链路一 为1G带宽,链路二为1G带宽,链路三为IOG带宽,则负荷分担链路表中三条链路的分担比
例为i : i : io。 这里,负荷分担链路表空间可以存放1024条链路表,因此,根据得到的比例,按照 顺序依次向1024条链路表条目空间循环填充,直到1024条表空间填充满,负荷分担链路表 的每个条目中包含下一跳以及出接口信息;负荷分担策略包括当需要负荷分担时是采用 基于流的选路方式还是采用基于报文的选路方式;路由信息表中的负荷分担标记,是根据 目的IP的路由信息是否符合负荷分担条件而生成的标记,如果多条链路对应同一个目的 IP,就满足负荷分担条件。其中,目的IP可以是Ipv4,也可以使Ipv6。
步骤302,生成报文序列号和报文标识,并判断路由信息表中是否有负荷分担标 记,如果有负荷分担标记,则执行步骤303,如果没有负荷分担标记,则执行步骤307 ;
具体的,在收到需要转发的报文后,根据报文计数生成报文序列号,根据目的IP 和协议类型生成报文标识,报文序列号和报文标识都对应负荷分担链路表中的条目索引, 可以直接索引到负荷分担链路表的条目,从而得到对应的负荷分担链路表的下一跳、出接 □; 根据报文的目的IP查找路由设备,获得对应的路由信息表,判断路由信息表中是 否存在负荷分担标记,如果有负荷分担标记,表示需要进行负荷分担,则执行步骤303,如果 没有负荷分担标记,表示不需要进行负荷分担,则执行步骤307。 步骤303,判断负荷分担策略是否基于报文选路方式,如果是基于报文选路方式, 则执行步骤304,如果不是基于报文选路方式,则执行步骤306 ; 具体的,根据路由信息表中的负荷分担策略标记,判断是基于报文选路方式还是 基于流选路方式,如果是基于报文选路方式,则执行步骤304,如果是基于流选路方式,则执 行步骤306 ; 步骤304,判断是否将会产生负荷分担误差,如果会产生误差,则执行步骤305,如 果不会产生误差,则执行步骤306 ; 具体的,根据报文序列号对应的负荷分担链路,判断是否将会产生负荷分担误差; 如图2所示,当报文序列号对应最后四条链路时,如果继续使用这四条链路中的链路进行 报文转发,进行报文转发的链路会比其他链路多一次转发报文的机会,将会导致负荷分担 误差,这种情况下执行步骤305 ;如果不使用这四条链路中的链路进行转发,就不会产生误 差,这种情况下执行步骤306。 步骤305,使用误差计数器的负荷分担误差计数值查找负荷分担链路表,负荷分担 误差计数值加1 ; 具体的,当判断将会产生负荷分担误差时,根据此时的误差计数器的负荷分担误 差计数值查找负荷分担链路表,找到对应的负荷分担链路表中的对应的链路后,得到下一 跳、出接口。例如,如图2所示,当报文序列号对应最后四条链路时,如果继续使用这四条链 路中的下一跳1、出口 1链路进行报文转发就会产生误差,这时误差计数器的负荷分担误差 计数值是1 ;根据误差计数器的负荷分担误差计数值在负荷分担链路表中找到链路l,得到 链路1的下一跳、出接口 ;然后误差计数器的负荷分担误差计数值加l,此时误差计数器的 负荷分担误差计数值是2。 这里,误差计数器可以利用芯片中的寄存器,通过读取寄存器中的计数值得到负 荷分担误差计数值。 步骤306,根据报文标识查找负荷分担链路表; 具体的,根据步骤302中产生的报文标识,查找与其对应的负荷分担链路表中的
链路,得到负荷分担链路表中的下一跳以及出接口信息;如果需要进行转发的报文具有一
样的报文标识,那么这些报文对应的负荷分担链路表中的链路也是一样的; 步骤307,根据路由信息表中的下一跳以及出接口信息转发报文,结束当前处理流
程; 步骤308,根据负荷分担链路表中的下一跳以及出接口信息转发报文。
为实现上述方法,本发明还提供了一种实现负荷分担的路由设备,如图4所示,该 设备包括负荷分担配置模块41、生成模块42、转发模块43 ;其中,
负荷分担配置模块41,用于配置负荷分担策略; 其中,负荷分担策略是当需要进行负荷分担时,是基于报文选路方式还是基于流 选路方式; 生成模块42,用于根据负荷分担配置模块41配置的负荷分担策略以及路由信息, 生成负荷分担链路表; 转发模块43,用于在负荷分担策略是基于报文选路且会产生负荷分担误差时,使 用误差计数器中的负荷分担误差计数值查找生成模块42生成的负荷分担链路表,根据负 荷分担链路表中的下一跳以及出接口信息转发报文;
这里,在转发报文的同时需将负荷分担误差计数值增加1 ; 该路由设备还可以进一步包括路由信息表生成模块44,用于根据目的路由设备 的IP生成路由信息表; 在路由信息表中,可以自动形成负荷分担标记和负荷分担策略标记,根据各个出 接口的带宽,可以得到负荷分担链路表中各个出接口的分担比例; 生成模块42生成负荷分担链路表的具体过程为根据路由信息表生成模块44生 成的路由信息表,当存在负荷分担时获取用户所配置的负荷分担策略,在所述路由信息表 中自动形成负荷分担标记和负荷分担策略标记,根据各个出接口的带宽得到负荷分担链路 表中各个出接口的分担比例,根据所述负荷分担策略、负荷分担标记、负荷分担链路接口带 宽比例,生成负荷分担链路表。 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在 本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护 范围之内。
8
权利要求
一种实现负荷分担的方法,其特征在于,该方法包括获取负荷分担策略并生成负荷分担链路表,当负荷分担策略是基于报文选路且会产生负荷分担误差时,使用误差计数器中的负荷分担误差计数值查找负荷分担链路表,得到下一跳以及出接口信息;根据所述负荷分担链路表中的下一跳以及出接口信息转发报文。
2. 根据权利要求1所述的方法,其特征在于,所述获取负荷分担策略并生成负荷分担 链路表之后,该方法还包括在收到转发的报文后,根据报文计数生成报文序列号,根据目的IP和协议类型生成报 文标识,根据报文的目的IP查找路由设备,获得对应的路由信息表,判断所述路由信息表 中是否存在负荷分担标记,如果有所述负荷分担标记,则确定进行负荷分担,如果没有所述 负荷分担标记,则确定不进行负荷分担。
3. 根据权利要求2所述的方法,其特征在于,所述确定进行负荷分担之后,该方法还包括根据路由信息表中的负荷分担策略标记,判断是基于报文选路方式还是基于流选路方 式;如果是基于报文选路方式,判断是否会产生负荷分担误差。
4. 根据权利要求3所述的方法,其特征在于,该方法还包括当所述负荷分担策略是基 于报文选路且不会产生负荷分担误差时、或者当负荷分担策略是基于流选路时,根据报文 标识查找所述负荷分担链路表。
5. 根据权利要求1所述的方法,其特征在于,所述得到下一跳以及出接口信息之后,该 方法还包括所述负荷分担误差计数值增加1。
6. 根据权利要求1所述的方法,其特征在于,所述获取负荷分担策略并生成负荷分担 链路表具体为根据目的路由设备的IP生成路由信息表,当存在负荷分担时获取用户所配置的负荷 分担策略,在所述路由信息表中自动形成负荷分担标记和负荷分担策略标记,根据各个出 接口的带宽得到负荷分担链路表中各个出接口的分担比例,根据所述负荷分担策略、负荷 分担标记、负荷分担链路接口带宽比例,生成负荷分担链路表。
7. —种实现负荷分担的路由设备,其特征在于,该设备包括负荷分担配置模块、生成 模块、转发模块;其中,负荷分担配置模块,用于配置负荷分担策略;生成模块,用于根据所述负荷分担配置模块配置的负荷分担策略以及路由信息,生成 负荷分担链路表;转发模块,用于在所述负荷分担策略是基于报文选路且会产生负荷分担误差时,使用 误差计数器中的负荷分担误差计数值查找所述生成模块生成的负荷分担链路表,根据所述 负荷分担链路表中的下一跳以及出接口信息转发报文。
8. 根据权利要求7所述的路由设备,其特征在于,该设备还包括路由信息表生成模块, 用于根据目的路由设备的IP生成路由信息表。
9. 根据权利要求8所述的路由设备,其特征在于,所述生成模块生成负荷分担链路表 的具体过程为根据路由信息表生成模块生成的路由信息表,当存在负荷分担时获取用户所配置的负荷分担策略,在所述路由信息表中自动形成负荷分担标记和负荷分担策略标记,根据各个 出接口的带宽得到负荷分担链路表中各个出接口的分担比例,根据所述负荷分担策略、负 荷分担标记、负荷分担链路接口带宽比例,生成负荷分担链路表。
全文摘要
本发明公开了一种实现负荷分担的方法,该方法包括获取负荷分担策略并生成负荷分担链路表,当负荷分担策略是基于报文选路且会产生负荷分担误差时,使用误差计数器中的负荷分担误差计数值查找负荷分担链路表,得到下一跳以及出接口信息,根据所述负荷分担链路表中的下一跳以及出接口信息转发报文;根据所述负荷分担链路表中的下一跳以及出接口信息转发报文;本发明同时还公开了一种实现负荷分担的路由设备。根据本发明的方案,能实现报文的高效转发。
文档编号H04L29/06GK101789949SQ20101011278
公开日2010年7月28日 申请日期2010年2月4日 优先权日2010年2月4日
发明者文双平, 邵庆华, 钟炜 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1