一种负载均衡方法、装置及设备转让专利

申请号 : CN201010560196.1

文献号 : CN101986627B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李金聪

申请人 : 北京星网锐捷网络技术有限公司

摘要 :

本发明公开了一种负载均衡方法、装置及设备,用以解决现有技术中基于负载均衡策略选择的报文转发出口不准确,影响报文转发效率的问题。该方法当接收到待转发报文时,识别自身当前保存的负载均衡策略,根据识别到的负载均衡策略,到自身保存的根据至少两种负载均衡策略确定的出口权重表中,找到对应目的地址的对应的每个出口的权重值,根据每个出口的权重值选择进行报文转发的出口。由于本发明实施例对于任意一种负载均衡策略都可以使用,具有一定的通用性,并且其中保存的出口权重表根据至少两种负载均衡策略确定,因此可以保证选择的报文转发出口的正确性,从而提高了报文转发的效率。

权利要求 :

1.一种负载均衡方法,其特征在于,包括:

接收到待转发报文时,识别自身当前保存的负载均衡策略;

当识别到自身当前保存的负载均衡策略包括时延策略时,确定该待转发报文的目的地址信息,在自身保存的出口权重表中,查找该目的地址对应的各出口的权重值,根据各出口的权重值选择进行报文转发的出口,转发该待转发报文,其中出口权重表中每个出口的权重值根据至少两种负载均衡策略确定;

当识别到自身当前保存的负载均衡策略不包括时延策略时,在自身保存的出口权重表中,查找设定目的地址对应的各出口的权重值,根据各出口的权重值选择进行报文转发的出口,转发该待转发报文,其中出口权重表中每个出口的权重值根据至少两种负载均衡策略确定;

保存所述出口权重表包括:根据设置的至少两种负载均衡策略,当该负载均衡策略中包含时延策略时,针对每种负载均衡策略确定到达目的地址的每个出口对应该策略的子权重值,根据每个出口对应每种策略的子权重值的和,确定每个出口的权重值,将每个出口及确定的每个出口的权重值,保存到出口权重表中对应该目的地址的相应位置;当该负载均衡策略中不包含时延策略时,针对每种负载均衡策略,确定每个出口对应该策略的子权重值,根据每个出口对应每种策略的子权重值的和,确定每个出口的权重值,将每个出口及确定的每个出口的权重值,保存到出口权重表中设定目的地址的相应位置。

2.如权利要求1所述的方法,其特征在于,所述根据各出口的权重值选择进行报文转发的出口包括:针对每个出口,判断该出口的权重值是否大于设定的权重阈值;

根据哈希函数,确定所述待转发报文的目的地址对应的权重值;

根据权重值大于设定的权重阈值的出口的权重值对应的散列区间,确定所述目的地址对应的权重值所在的散列区间,将该散列区间对应的出口作为进行报文转发的出口。

3.如权利要求2所述的方法,其特征在于,所述判断该出口的权重值是否大于设定的权重阈值还包括:当每个出口的权重值都不大于设定的权重阈值时,将权重值最大的出口的权重值调整为最大权重值;并,根据每个出口权重值之间的比例关系,对其他出口的权重值进行相应调整;

将调整后的权重值作为各出口的权重值。

4.如权利要求1所述的方法,其特征在于,所述方法还包括:

按照设定的时间间隔对保存的出口权重表进行更新。

5.如权利要求1所述的方法,其特征在于,所述保存到出口权重表中对应该目的地址的相应位置包括:确定所述目的地址的前24位对应的网段,将每个出口及确定的每个出口的权重值,保存到出口权重表中对应该网段的地址的相应位置。

6.如权利要求5所述的方法,其特征在于,所述查找该目的地址对应的各出口的权重值包括:确定该目的地址的前24位对应的网段,在所述出口权重表中查找该网段的地址,并查找该网段的地址对应的各出口的权重值。

7.一种负载均衡装置,其特征在于,所述装置包括:

接收识别模块,用于接收到待转发报文时,识别自身当前保存的负载均衡策略;

第一选择模块,用于当识别到自身当前保存的负载均衡策略包括时延策略时,确定该待转发报文的目的地址信息,在自身保存的出口权重表中,查找该目的地址对应的各出口的权重值,根据各出口的权重值选择进行报文转发的出口,转发该待转发报文,其中出口权重表中每个出口的权重值根据至少两种负载均衡策略确定;

第二选择模块,用于当识别到自身当前保存的负载均衡策略不包括时延策略时,查找设定目的地址对应的各出口的权重值,根据各出口的权重值选择进行报文转发的出口,转发该待转发报文,其中出口权重表中每个出口的权重值根据至少两种负载均衡策略确定;

存储模块,用于根据设置的至少两种负载均衡策略,当该负载均衡策略中包含时延策略时,针对每种负载均衡策略,确定到达目的地址的每个出口对应该策略的子权重值,根据每个出口对应每种策略的子权重值的和,确定每个出口的权重值,将每个出口及确定的每个出口的权重值,保存到出口权重表中对应该目的地址的相应位置;当该负载均衡策略中不包含时延策略时,针对每种负载均衡策略,确定每个出口对应该策略的子权重值,根据每个出口对应每种策略的子权重值的和,确定每个出口的权重值,将每个出口及确定的每个出口的权重值,保存到出口权重表中设定目的地址的相应位置。

8.如权利要求7所述的装置,其特征在于,所述第一选择模块和第二选择模块具体用于,针对每个出口,判断该出口的权重值是否大于设定的权重阈值,根据哈希函数,确定所述待转发报文的目的地址对应的权重值,根据权重值大于设定的权重阈值的出口的权重值对应的散列区间,确定所述目的地址对应的权重值所在的散列区间,将该散列区间对应的出口作为进行报文转发的出口。

9.如权利要求8所述的装置,其特征在于,所述第一选择模块和第二选择模块还用于,当每个出口的权重值都不大于设定的权重阈值时,将权重值最大的出口的权重值调整为最大权重值,并,根据每个出口权重值之间的比例关系,对其他出口的权重值进行相应调整,根据调整后的每个出口的权重值,及设定的权重阈值,选择进行报文转发的出口。

10.如权利要求7所述的装置,其特征在于,所述存储模块具体用于,确定所述目的地址的前24位对应的网段,将每个出口及确定的每个出口的权重值,保存到出口权重表中对应该网段的地址的相应位置。

11.如权利要求10所述的装置,其特征在于,所述第一选择模块具体用于,确定该目的地址的前24位对应的网段,在所述出口权重表中查找该网段的地址,并查找该网段的地址对应的各出口的权重值。

12.一种网络设备,其特征在于,包括如权利要求7~11任一所述的装置。

说明书 :

一种负载均衡方法、装置及设备

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种负载均衡方法、装置及设备。

背景技术

[0002] 负载均衡是指当在网络上访问某一目的IP地址时,可能同时存在几条等价或者不等价的出口,如何选择出口,从而达到充分利用各出口的负载的方法。目前负载均衡的方法应用非常广泛,这是因为在现实环境中用户往往拥有多个运营商的网络出口,或者,拥有同一运营商的多个网络出口。如图1所示为一种负载均衡应用的典型场景,通过路由器到达目的站点,存在三条不等价的网络出口(互联网服务提供商(Internet Service Provider,ISP)1、ISP2和ISP3)。
[0003] 现有技术中在进行出口选择时,可以采用统计的方法,即当收到一个待转发的报文时,针对转发该待转发报文的出口,首先选择第一个出口转发该报文,并对已转发报文的出口以及每个出口转发报文的数量进行统计,当收到需经同样的出口转发的报文时,根据统计的信息,选择第二个出口进行报文的转发,并对已转发报文的出口以及每个出口转发的报文数据进行统计,之后依次选择每个出口,但是随着待转发报文数的增加,以及出口的增加,该方法的内存消耗也非常大,不利于出口的选择,增加了报文转发的时延。
[0004] 或者,在进行出口选择时,可以基于负载均衡的策略。现有的负载均衡策略包括多种,但由于算法设计等因素,常用的负载均衡策略包括时延策略、带宽策略和带宽利用率策略。当负载均衡策略选定后,就可以进行后续报文转发出口的选择。
[0005] 但是现有的出口选择方法只能适用于对应的负载均衡策略,对于其他的负载均衡策略无法使用,例如当负载均衡策略为带宽策略时,在选择出口时,每次都选择的是带宽最大的,而带宽最大的出口对于时延策略和带宽利用率策略都不适用。
[0006] 并且由于此时带宽最大的出口可能因为转发的报文太多时延较大,并且带宽的利用率也比较高,但是由于现有技术中无法结合其他负载均衡策略选择出口,因此导致选择的出口不准确,影响了报文转发的效率。

发明内容

[0007] 有鉴于此,本发明实施例提供一种负载均衡方法、装置及设备,用以解决现有技术中基于负载均衡策略选择的报文转发出口不准确,影响报文转发效率的问题。
[0008] 本发明实施例提供的一种负载均衡方法,包括:
[0009] 接收到待转发报文时,识别自身当前保存的负载均衡策略;
[0010] 当识别到自身当前保存的负载均衡策略包括时延策略时,确定该待转发报文的目的地址信息,在自身保存的出口权重表中,查找该目的地址对应的各出口的权重值,根据各出口的权重值选择进行报文转发的出口,转发该待转发报文,其中出口权重表中每个出口的权重值根据至少两种负载均衡策略确定;
[0011] 否则,在自身保存的出口权重表中,查找设定目的地址对应的各出口的权重值,根据各出口的权重值选择进行报文转发的出口,转发该待转发报文,其中出口权重表中每个出口的权重值根据至少两种负载均衡策略确定。
[0012] 本发明实施例提供的一种负载均衡装置,包括:
[0013] 接收识别模块,用于接收到待转发报文时,识别自身当前保存的负载均衡策略;
[0014] 第一选择模块,用于当识别到自身当前保存的负载均衡策略包括时延策略时,确定该待转发报文的目的地址信息,在自身保存的出口权重表中,查找该目的地址对应的各出口的权重值,根据各出口的权重值选择进行报文转发的出口,转发该待转发报文,其中出口权重表中每个出口的权重值根据至少两种负载均衡策略确定;
[0015] 第二选择模块,用于当识别到自身当前保存的负载均衡策略不包括时延策略时,查找设定目的地址对应的各出口的权重值,根据各出口的权重值选择进行报文转发的出口,转发该待转发报文,其中出口权重表中每个出口的权重值根据至少两种负载均衡策略确定。
[0016] 本发明实施例提供的一种网络设备,包括如上所述的装置。
[0017] 本发明实施例提供了一种负载均衡的方法、装置及设备,该方法中当接收到待转发报文时,识别自身当前保存的负载均衡策略,根据识别到的负载均衡策略,到自身保存的根据至少两种负载均衡策略确定的出口权重表中,找到对应目的地址的对应的每个出口的权重值,根据每个出口的权重值选择进行报文转发的出口。由于本发明实施例对于任意一种负载均衡策略都可以使用,具有一定的通用性,并且其中保存的出口权重表根据至少两种负载均衡策略确定,因此可以保证选择的报文转发出口的正确性,从而提高了报文转发的效率。

附图说明

[0018] 图1为现有技术中一种负载均衡应用的典型场景;
[0019] 图2为本发明实施例提供的一种负载均衡的过程;
[0020] 图3为本发明实施例提供的出口权重表的存储结构示意图;
[0021] 图4为本发明实施例提供的结合图3所示的出口权重表,对负载均衡过程的详细描述;
[0022] 图5为本发明实施例提供的散列区间示意图;
[0023] 图6为本发明实施例提供的负载均衡的详细实施过程;
[0024] 图7为本发明实施例提供的负载均衡的装置的结构示意图。

具体实施方式

[0025] 在本发明实施例中为了有效的提高出口选择的准确性,并提高报文转发的效率,提供了一种负载均衡方法,该方法中针对至少两种负载均衡策略,确定对应每个目的地址的每个出口的权重值,当接收到待转发报文时,首先识别当前保存的负载均衡策略,根据识别出的负载均衡策略,及保存的出口权重表,选择进行报文转发的出口,采用选择的出口转发该待转发报文。由于在本发明实施例中针对至少两种策略确定了每个出口的权重值,并且在进行出口的选择时,结合不同的负载均衡策略,查找出口权重表中不同节点对应的出口,从而可以保证选择的进行报文转发的出口的准确性,提高了报文转发的效率。
[0026] 下面结合说明书附图,对本发明实施例进行详细说明。
[0027] 图2为本发明实施例提供的一种负载均衡的过程,该过程包括以下步骤:
[0028] S201:接收到待转发的报文时,识别自身当前保存的负载均衡策略。
[0029] S202:判断自身当前保存的负载均衡策略是否包含时延策略,当判断结果为是时,进行步骤S203,否则,进行步骤S205。
[0030] S203:确定该待转发报文的目的地址信息。
[0031] S204:在自身保存的出口权重表中,查找该目的地址对应的各出口的权重值,根据各出口的权重值选择进行报文转发的出口,转发该待转发报文,其中出口权重表中每个出口的权重值根据至少两种负载均衡策略确定。
[0032] S205:在自身保存的出口权重表中,查找设定目的地址对应的各出口的权重值,根据各出口的权重值选择进行报文转发的出口,转发该待转发报文,其中出口权重表中每个出口的权重值根据至少两种负载均衡策略确定。
[0033] 其中根据各出口的权重值选择进行报文转发的出口包括:针对每个出口,判断该出口的权重值是否大于设定的权重阈值;根据哈希函数,确定所述待转发报文的目的地址对应的权重值;根据权重值大于设定的权重阈值的出口的权重值对应的散列区间,确定所述目的地址对应的权重值所在的散列区间,将该散列区间对应的出口作为进行报文转发的出口。
[0034] 并且当每个出口的权重值都不大于设定的权重阈值时,将权重值最大的出口的权重值调整为最大权重值;并,根据每个出口权重值之间的比例关系,对其他出口的权重值进行相应调整;根据调整后的每个出口的权重值,及设定的权重阈值,选择进行报文转发的出口。
[0035] 在本发明实施例中根据至少两种负载均衡策略,确定对应每个目的地址的出口的权重值,当确定了每个出口的权重值后,将每个出口及确定的出口的权重值保存在出口权重表中。当需要进行负载均衡时,首先需要识别当前自身保存的负载均衡策略是哪些,根据识别到的负载均衡策略,在出口权重表的对应节点中进行出口权重值的查找,并根据查找到的每个出口的权重值,选择进行报文转发的出口。
[0036] 为了便于权重值的查找,并且适用于各种负载均衡策略,在本发明实施例中首先需要生成出口权重表并保存。其中该出口权重表的保存过程包括:根据设置的至少两种负载均衡策略,当该负载均衡策略中包含时延策略时,针对每种负载均衡策略,确定到达目的地址的每个出口对应该策略的子权重值;根据每个出口对应每种策略的子权重值的和,确定每个出口的权重值;将每个出口及确定的每个出口的权重值,保存到出口权重表中对应该目的地址的相应位置,否则(当该设置的负载均衡策略中不包含时延策略时),针对每种负载均衡策略,确定每个出口对应该策略的子权重值,根据每个出口对应每种策略的子权重值的和,确定每个出口的权重值,将每个出口及确定的每个出口的权重值,保存到出口权重表中设定目的地址的相应位置。
[0037] 在生成并保存出口权重表时,首先需要采集各个出口的带宽信息、流量信息、以及每个出口到每个目的地址的时延信息,当采集到了每个出口的相应信息后,需要确定每个出口对应每种策略的子权重值。
[0038] 在确定每个出口对应带宽策略的子权重值时,针对每个出口,根据采集到的每个出口的带宽信息,确定每个出口带宽和;确定该出口的带宽与该和值的商,根据保存的带宽参数,及确定的商的积,确定该出口对应带宽策略的子权重值。
[0039] 例如,网络设备进行报文转发的出口包括N个,在确定出口i对应带宽策略的子权重值时,i为1和N之间的整数,由于采集了该N个出口的带宽,因此可以确定该N个出口的带宽之和,即 其中Bj为第j个出口的带宽,j为1和N之间的整数,因此可知出口i对应带宽策略的子权重值WB为: 其中B为带宽参数,为大于零的数值。
[0040] 在确定每个出口对应时延策略的子权重值时,由于,每个出口时延,与每个出口对应的目的地址有关,因此在确定每个出口对应时延策略的子权重值时,需要确定该出口到达该目的地址的时延值,并确定每个出口达到该目的地址的时延值;确定该出口到达该目的地址的时延值,与每个出口达到该目的地址的时延值和的商;根据保存的时延参数及确定的商,确定到达该目的地址的该出口对应时延策略的子权重值。
[0041] 例如,到达某一目的地址的出口包括N个,在确定出口i对应时延策略的子权重值时,i为1和N之间的整数,由于采集了该N个出口对应该目的地址的时延,因此可以确定该N个出口对应该目的地址的时延之和,即 其中tj为第j个出口的带宽,j为1和N之间的整数,因此可知出口i对应时延策略的子权重值Wt为: 其中T为时延参数,为大于零的数值。
[0042] 在确定每个出口对应带宽利用率策略的子权重值时,确定该出口的带宽利用率,并确定每个出口的带宽利用率;确定该出口的带宽利用率,与每个出口带宽利用率和的商;根据保存的带宽利用率参数及确定的商,确定该出口对应带宽利用率策略的子权重值。
[0043] 例如,网络设备进行报文转发的出口包括N个,在确定出口i对应带宽利用率策略的子权重值时,i为1和N之间的整数,由于采集了该N个出口的带宽利用率,因此可以确定该N个出口的带宽利用率之和,即 其中Lj为第j个出口的带宽利用率,j为1和N之间的整数,因此可知出口i对应带宽利用率策略的子权重值WL为:其中L为时延参数,为大于零的数值。
[0044] 上述过程中只是以负载均衡策略为带宽策略、时延策略和带宽利用率策略为例,对每个出口对应的子权重值的过程进行说明,当基于其他负载均衡策略时,每个出口对应该负载均衡策略的子权重值的确定过程与上述过程类似,在这里就不一一赘述。
[0045] 当确定了每个出口对应每种策略的子权重值后,针对出口计算该出口针对每种策略的子权重值的和,将该子权重值的和作为该出口的权重值。当在确定每个出口的权重值的过程中采用了时延策略时,则将该出口的权重值保存在对应该时延值的目的地址的相应位置,当在确定每个出口的权重值的过程中未采用时延策略时,则将该出口的权重值保存在设定目的地址的相应位置。在具体保存该出口权重表时,可以将每个目的地址作为该出口权重表中的节点,将对应该目的地址的每个出口作为该目的地址所在节点的子节点,并在每个子节点中记录该出口的权重值。
[0046] 当确定出口权重表时,并且在确定该出口权重表时采用了时延策略时,由于目的地址的数量比较多,如果一一存储每个目的地址,及对应该目的地址的每个出口的权重值的话,将会消耗极大的内存空间,因此在本发明实施例中可以确定出不经常使用的目的地址段,在该出口权重表中不包含该不经常被访问的目的地址段。其中在确定出不经常被访问的目的地址段时可以采用最近最少使用(Least Recently Used,LRU)算法。
[0047] 进一步,即使可以采用LRU算法确定不经常被访问的目的地址段,但是由于实际网络中用户访问的目的地址的范围非常的广泛,将每个目的地址都记录下来工作量非常的大,为了节省出口权重表占用的存储空间,可以在出口权重表中保存部分目的地址及对应该目的地址的每个出口的信息。更进一步在出口权重表中保存部分目的地址及对应该目的地址的每个出口的信息时,可以确定所述目的地址的前24位对应的网段,将每个出口及确定的每个出口的权重值,保存到出口权重表中对应该网段的地址的相应位置。这是由于同一网段内的所有IP地址的时延基本都是相同的,当确定了到达某一目的地址的每个出口的权重值后,可以认为到达该网段内的每个目的地址的出口的权重值都为该目的地址对应的出口的权重值。
[0048] 例如,针对目的地址202.22.117.2,该目的地址的前24位为202.22.117,因此可以认为202.22.117.0网段的所有IP地址的时延都是相同的,因此当确定了到达目的地址202.22.117.2的每个出口的权重值后,可以在出口权重表中将该每个出口的权重值,保存为对应目的地址为202.22.117.0的各出口的权重值。这样出口权重值表就可以以目的地址的前24位索引,从而可以大大减少出口权重表中保存的目的地址的数量,从而节省了设备的存储空间。并且由于无需针对各个目的地址分别确定对应该目的地址的每个出口的权重值,从而提高了出口权重表生成的速度。
[0049] 另外,虽然每个出口的带宽是恒定的,但是由于出口负载的情况,每个出口到达目的地址的时延是在不断的变化的,并且每个出口的带宽利用率也因为其被分配的负载而产生变化。在本发明实施例中为了使选择的报文转发出口更加的准确,可以按照设定的时间间隔对出口权重表中保存的对应每个目的地址的出口的权重值进行更新,以便该出口权重表能够准确的反应当前每个出口的负载情况。
[0050] 当该出口权重表中保存的为目的地址的前24位对应的网段的地址,及每个出口和出口的权重值时,在对该出口权重表中保存的对应每个目的地址的出口的权重值进行更新时,可以确定该出口对应该网段内任意目的地址的状况,根据该状况确定每个出口的权重值。
[0051] 由于基于带宽策略和带宽利用率策略进行负载均衡时,不必关心目的地址,因此当识别到自身当前的负载均衡策略为带宽策略或带宽利用率策略时,可以在出口权重表中查找某一固定目的地址对应的每个出口的权重值,根据固定目的地址对应的每个出口的权重值,选择进行报文转发的出口。该固定的目的地址可以任意设定,为了准确该固定的目的地址可以是不经常被访问的目的地址,例如用户不可能去访问目的地址0.0.0.0,因此可以将该固定的目的地址设置为0.0.0.0,即为设定的目的地址,并确定该目的地址对应的每个出口的权重值。
[0052] 图3为本发明实施例提供的出口权重表的存储结构示意图,在该出口权重表中保存有三个节点,其中该三个节点中保存的目的地址分别为0.0.0.0、202.22.117.0以及202.22.118.0,其中保存目的地址0.0.0.0的节点存在三个子节点,每个子节点分别保存第一出口、第二出口和第三出口的信息,并且针对每个出口在子节点中保存了对应该出口的权重值。同样在保存目的地址202.22.117.0以及202.22.118.0的节点都存在三个子节点,每个子节点分别保存第一出口、第二出口和第三出口的信息,并且针对每个出口在子节点中保存了对应该出口的权重值。
[0053] 图4为本发明实施例提供结合图3所示的出口权重表,对负载均衡过程的详细描述,该过程包括以下步骤:
[0054] S401:接收待转发报文。
[0055] S402:识别自身当前保存的负载均衡策略,判断自身当前保存的负载均衡策略是否包含时延策略,当判断结果为是时,进行步骤S403,否则,进行步骤S407。
[0056] S403:确定该待转发报文的目的地址信息,该待转发报文的目的地址为202.22.117.2。
[0057] S404:在自身保存的出口权重表中,根据该目的地址的前24位索引,在该出口权重表中查找包含该目的地址所在网段地址的节点,即查找包含目的地址202.22.117.0的节点。
[0058] S405:根据查找的包含目的地址202.22.117.0的节点,查找该目的地址对应的各出口的权重值。
[0059] S406:根据各出口的权重值选择进行报文转发的出口,转发该待转发报文。
[0060] S407:在自身保存的出口权重表中,查找包含设定目的地址0.0.0.0的节点。
[0061] S408:根据查找的包含设定目的地址0.0.0.0的节点,查找该目的地址对应的个各出口的权重值。
[0062] S409:根据各出口的权重值选择进行报文转发的出口,转发该待转发报文。
[0063] 在本发明实施例当查找到了目的地址对应的各出口的权重值后,根据各出口的权重值选择进行报文转发的出口时,具体包括:针对每个出口,判断该出口的权重值是否大于设定的权重阈值;根据哈希函数,确定所述待转发报文的目的地址对应的权重值;根据权重值大于设定的权重阈值的出口的权重值对应的散列区间,确定所述目的地址对应的权重值所在的散列区间,将该散列区间对应的出口作为进行报文转发的出口。
[0064] 当在出口权重表中查找到了每个出口对应的权重值后,在进行报文转发出口的选择时,为了在报文转发质量比较好的出口中选择,在本发明实施例中首先设定一个权重阈值,该权重阈值可以根据需要灵活设定,并且该权重阈值可以设定多个,但是为了后续出口选择的方便,一般设定一个就可以了。例如当出口权重可能出现的最大权重值为255时,该权重阈值可以设定为240。在进行报文转发出口的选择时,只有权重值大于该设定的权重阈值的出口才能用于选择,从而将大量不满足要求的出口过滤掉,加快了报文转发出口的选择的效率。
[0065] 另外,为了保证权重值较大的几个出口被选择为报文转发出口的可能性均等,在本发明实施例中并非采用绝对值优先的原则,而是采用概率优先的原则,在权重值较大的几个出口中进行报文转发出口的选择。概率优先的原则具体包括:根据权重值大于权重阈值的每个出口的权重值,计算该每个出口权重值的和,根据单个出口的权重占所有出口权重之和的比例来对出口进行相应比率的分配。这是因为被访问的目的地址是随机的,因此如果把报文的目的地址也用哈希函数映射为权重值时,该权重值也是随机的。如果将出口权重值按照其占出口总权重值划分区间,当该目的地址对应的权重值不超过出口总权重值时,则该目的地址对应的权重值落入任何一个区间的概率都是相同的,或者当该目的地址对应的权重值超出出口总权重值时,将该目的地址对应的权重值用出口总权重值取余数,则该余数落入每个区间的概率也是相同的。
[0066] 因此在本发明实施例中具体的在进行报文转发出口的选择时,为了保证每个出口被选择的公平性,根据每个出口的权重值对应的散列区间,及目的地址对应的权重值所在的散列区间,选择该散列区间对应的出口为进行报文转发的出口。
[0067] 具体例如,根据带宽策略、时延策略和带宽利用率策略综合确定每个出口的权重值,并将每个出口的权重值保存在了出口权重表中。当进行报文转发时,识别到相应的目的地址对应三个出口,分别为第一出口、第二出口和第三出口,其中第一出口的权重值为255,第二出口的权重值为250,第三出口的权重值为170。
[0068] 此时设定的权重阈值为240,则可知第一出口和第二出口的权重值大于该设定的权重阈值,因此需要在第一出口和第二出口中选择进行报文转发的出口,此时由于第三出口的权重值较低,说明其当前的负载比较重,为了避免第三出口再因为报文的转发负载进一步加重,可以将第三出口淘汰。
[0069] 当确定在第一出口和第二出口中选择进行报文转发的出口时,根据第一出口和第二出口的权重值,确定第一出口和第二出口对应的散列区间。具体的在确定第一出口和第二出口对应的散列区间时,将第一出口和第二出口的权重值相加求和,该权重值的和为255+250=505,根据该权重值的和确定总区间,在该去权重值的和确定的总区间中,确定每个出口的权重值对应的散列区间,即将0~505作为一个总区间,由于第一出口的权重值为255,第二出口的权重值为250,因此可以将0~255对应的区间作为第一出口的权重值对应的散列区间,将255~505对应的区间作为第二出口的权重值对应的散列区间,或者也可以将0~250对应的区间作为第二出口的权重值对应的散列区间,将250~505对应的区间作为第一出口的权重值对应的散列区间。
[0070] 在确定目的地址对应的权重值所在的散列区间时,首先需要根据哈希函数确定待转发报文的目的地址对应的权重值。当确定了待转发报文的目的地址对应的权重值后,确定该目的地址对应的权重值所在的散列区间,将该散列区间对应的出口作为进行报文转发的出口。例如待转发报文的目的地址为218.66.59.114,根据哈希函数确定该目的地址对应的权重值为156。此时如图5所示的散列区间示意图,以0~255对应的区间作为第一出口的权重值对应的散列区间,将255~505对应的区间作为第二出口的权重值对应的散列区间为例进行说明,由于0<156<=255,即该目的地址对应的权重值所在的散列区间对应第一出口,则将第一出口作为报文转发的出口。当待转发报文的目的地址为119.26.55.54,根据哈希函数确定该目的地址对应的权重值为260,由于255<260<505,即该目的地址对应的权重值所在的散列区间对应第二出口,则将第二出口作为报文转发的出口。
[0071] 不过由于待转发报文的目的地址是随机的,当确定的待转发报文的目的地址对应的权重值大于用于进行出口选择的每个出口权重值的和时,则将该目的地址对应的权重值用该权重值的和取模,根据取模后的余数所在的散列区间,将该散列区间对应的出口作为报文转发的出口。例如当某一待转发报文的目的地址对应的权重值为760时,由于760大于权重值的和505,因此对760用权重值的和取模,余数为255,该余数所在的散列区间为第一出口对应的散列区间,因此将第一出口作为报文转发的出口。
[0072] 另外,在本发明实施例中也可能出现对应某一目的地址的所有出口的权重值都不大于设定的权重阈值,此时为了实现报文的转发,还是需要选择一个出口进行报文的转发,具体在选择进行报文转发的出口时,将权重值最大的出口的权重值调整为最大权重值;并,根据每个出口权重值之间的比例关系,对其他出口的权重值进行相应调整;根据调整后的每个出口的权重值,及设定的权重阈值,选择进行报文转发的出口。
[0073] 例如此时某一目的地址对应三个出口分别为第一出口、第二出口和第三出口,其中第一出口对应的权重值为200,第二出口对应的权重值为100,第三出口对应的权重值为50,而此时设定的权重阈值为240,因此每个出口对应的权重值都不大于设定的权重阈值。最大权重值为255,而权重值最大的第一出口的权重值为200,将第一出口的权重值调整为255,由于第一出口的权重值、第二出口的权重值以及第三出口的权重值的比例关系为4∶2∶1,因此根据调整后的第一出口的权重值,可知调整后的第二出口的权重值为127、第三出口的权重值为43。根据调整后的每个出口的权重值,再采用上述设定的权重阈值选择进行报文转发的出口。
[0074] 由于各出口的负载情况,随其转发的报文的情况而变化,为了及时的反应各出口的负载情况,本发明实施例中按照设定的时间间隔,采集每个出口的当前的负载情况,即采集每个出口的带宽信息、流量信息、以及每个出口到每个目的地址的时延信息,当采集到了每个出口的相应信息后,需要确定每个出口对应每种策略的子权重值,从而可以确定出口权重表中保存的每个出口的权重值。还是以上述三个出口为例,由于第三出口权重值比较低,所以在进行报文转发时未被选上,因此第一出口和第二出口在一段时间内转发的报文数量将增加流量加大,由于第一出口和第二出口带宽利用率以及时延的变化,导致在下一时间间隔确定的第一出口的权重值为200,第二出口的权重值为155,第三出口的权重值为255,如果设定的权重阈值还为240的话,那第一出口和第二出口在后续一段时间内,将不被选中用于报文的转发。
[0075] 图6为本发明实施例提供的负载均衡的详细实施过程,该过程包括以下步骤:
[0076] S601:接收待转发报文
[0077] S602:识别自身当前保存的负载均衡策略,判断自身当前保存的负载均衡策略是否包含时延策略,当判断结果为是时,进行步骤S603,否则,进行步骤S606。
[0078] S603:确定该待转发报文的目的地址信息,该待转发报文的目的地址为202.22.117.2。
[0079] S604:在自身保存的出口权重表中,根据该目的地址的前24位索引,在该出口权重表中查找包含该目的地址所在网段地址的节点,即查找包含目的地址202.22.117.0的节点。
[0080] S605:根据查找的包含目的地址202.22.117.0的节点,查找该目的地址对应的个各出口的权重值,之后进行步骤S608。
[0081] S606:在自身保存的出口权重表中,查找包含设定目的地址0.0.0.0的节点。
[0082] S607:根据查找的包含设定目的地址0.0.0.0的节点,查找该目的地址对应的个各出口的权重值。
[0083] S608:判断是否存在权重值大于设定的权重阈值的出口,当判断存在时,进行步骤S609,否则,进行步骤S610。
[0084] S609:根据哈希函数,确定所述待转发报文的目的地址对应的权重值,根据权重值大于设定的权重阈值的每个出口的权重值对应的散列区间,确定所述的地址对应的权重值所在的散列区间,将该散列区间对应的出口作为进行报文转发的出口。
[0085] S610:将权重值最大的出口的权重值调整为最大权重值,对其他出口的权重值进行相应调整,之后进行步骤S608。
[0086] 图7为本发明实施例提供的一种负载均衡装置的结构示意图,该装置包括:
[0087] 接收识别模块71,用于接收到待转发报文时,识别自身当前保存的负载均衡策略;
[0088] 第一选择模块72,用于当识别到自身当前保存的负载均衡策略包含时延策略时,确定该待转发报文的目的地址信息,在自身保存的出口权重表中,查找该目的地址对应的各出口的权重值,根据各出口的权重值选择进行报文转发的出口,转发该待转发报文,其中出口权重表中每个出口的权重值根据至少两种负载均衡策略确定;
[0089] 第二选择模块73,用于当识别到自身当前保存的负载均衡策略不包含时延策略时,查找设定目的地址对应的各出口的权重值,根据各出口的权重值选择进行报文转发的出口,转发该待转发报文,其中出口权重表中每个出口的权重值根据至少两种负载均衡策略确定。
[0090] 所述第一选择模块72和第二选择模块73具体用于,针对每个出口,判断该出口的权重值是否大于设定的权重阈值,根据哈希函数,确定所述待转发报文的目的地址对应的权重值,根据权重值大于设定的权重阈值的出口的权重值对应的散列区间,确定所述目的地址对应的权重值所在的散列区间,将该散列区间对应的出口作为进行报文转发的出口。
[0091] 所述第一选择模块72和第二选择模块73还用于,当每个出口的权重值都不大于设定的权重阈值时,将权重值最大的出口的权重值调整为最大权重值,并,根据每个出口权重值之间的比例关系,对其他出口的权重值进行相应调整,根据调整后的每个出口的权重值,及设定的权重阈值,选择进行报文转发的出口。
[0092] 所述装置还包括:
[0093] 存储模块74,用于根据设置的至少两种负载均衡策略,当该负载均衡策略中包含时延策略时,针对每种负载均衡策略,确定到达目的地址的每个出口对应该策略的子权重值,根据每个出口对应每种策略的子权重值的和,确定每个出口的权重值,将每个出口及确定的每个出口的权重值,保存到出口权重表中对应该目的地址的相应位置,当该负载均衡策略中不包含时延策略时,针对每种负载均衡策略,确定每个出口对应该策略的子权重值,根据每个出口对应每种策略的子权重值的和,确定每个出口的权重值,将每个出口及确定的每个出口的权重值,保存到出口权重表中设定目的地址的相应位置。
[0094] 所述存储模块74在确定到达目的地址的每个出口对应时延策略的子权重值时,具体用于,针对每个出口,确定该出口到达该目的地址的时延值,并确定每个出口达到该目的地址的时延值,确定该出口到达该目的地址的时延值,与每个出口达到该目的地址的时延值和的商,根据保存的时延参数及确定的商,确定到达该目的地址的该出口对应时延策略的子权重值。
[0095] 所述存储模块74在确定到达目的地址的每个出口对应带宽策略的子权重值时,具体用于,针对每个出口,确定该出口的带宽,及对应该目的地址的每个出口带宽和的商,根据保存的带宽参数,及确定的商的积,确定到达该目的地址的该出口对应带宽策略的子权重值。
[0096] 所述存储模块74在确定到达目的地址的每个出口对应带宽利用率策略的子权重值时,具体用于,针对每个出口,确定该出口的带宽利用率,并确定每个出口的带宽利用率,确定该出口的带宽利用率,与每个出口带宽利用率和的商,根据保存的带宽利用率参数及确定的商,确定到达该目的地址的该出口对应带宽利用率策略的子权重值。
[0097] 所述存储模块74具体用于,确定所述目的地址的前24位对应的网段,将每个出口及确定的每个出口的权重值,保存到出口权重表中对应该网段的地址的相应位置。
[0098] 所述第一选择模块72具体用于,确定该目的地址的前24位对应的网段,在所述出口权重表中查找该网段的地址,并查找该网段的地址对应的各出口的权重值。
[0099] 本发明实施例还提供了一种网络设备,包括如图7所示的装置。
[0100] 本发明实施例提供了一种负载均衡的方法、装置及设备,该方法中当接收到待转发报文时,识别自身当前保存的负载均衡策略,根据识别到的负载均衡策略,到自身保存的根据至少两种负载均衡策略确定的出口权重表中,找到对应目的地址的对应的每个出口的权重值,根据每个出口的权重值选择进行报文转发的出口。由于本发明实施例对于任意一种负载均衡策略都可以使用,具有一定的通用性,并且其中保存的出口权重表根据至少两种负载均衡策略确定,因此可以保证选择的报文转发出口的正确性,从而提高了报文转发的效率。
[0101] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。