发明内容
本发明的目的是提供一种多链路绑定不同带宽负载均衡方法及装置,采用合适的算法进行负载均衡处理,提高带宽利用率。
本发明为达到上述目的,采用的技术方案是,多链路绑定不同带宽负载均衡方法,其特征在于,包括步骤:
a、初始化接口参数;
b、计算每个接口的带宽系数μ;
c、输入报文;
d、选择发送流量最小的接口作为发送接口;
e、发送报文;
f、发送成功后根据报文大小和带宽系数μ计算接口流量txBytes并进行累计。
进一步的,步骤d中,当所有接口流量都达到设定阈值时,将接口流量统一减去该阈值后再选择发送接口。
具体的,所述设定阈值为与传输流量有关的经验值。
具体的,步骤b中,按照下式计算接口带宽系数μ:
μ=bw_max/bw,其中,bw_max为绑定接口中的最大带宽,bw为本接口带宽。
具体的,步骤f中,按照下式计算接口流量txBytes:
txBytes=pkt-size*μ,其中,pkt-size为发送的报文大小。
本发明的另一个目的是提供一种多链路绑定不同带宽负载均衡装置,包括:
初始化模块,用于初始化接口参数;
运算模块,用于计算每个接口的带宽系数μ;
报文接收模块,用于输入报文;
接口选择模块,用于选择发送流量最小的接口作为发送接口;
报文发送模块,用于发送报文;
流量统计模块,用于发送成功后根据报文大小和带宽系数μ计算接口流量txBytes并进行累计。
进一步的,所述接口选择模块进一步用于,当所有接口流量都达到设定阈值时,将接口流量统一减去该阈值后再选择发送接口。
具体的,所述设定阈值为与传输流量有关的经验值。
具体的,所述运算模块,按照下式计算接口带宽系数μ:
μ=bw_max/bw,其中,bw_max为绑定接口中的最大带宽,bw为本接口带宽。
具体的,所述流量统计模块,按照下式计算接口流量txBytes:
txBytes=pkt-size*μ,其中,pkt-size为发送的报文大小。
本发明的有益效果是,即能适应相同带宽也能适应不同带宽接口绑定的技术方案,能够充分利用各个绑定接口的带宽资源,本发明负载均衡算法简单,转发性能高。
具体实施方式
下面结合附图及具体实施方式,详细描述本发明的技术方案。
本发明的多链路绑定不同带宽负载均衡方法,流程如图2所示,包括步骤:
S201、初始化接口参数。
本步骤中,记录接口带宽,清零接口流量。
S202、计算每个接口的带宽系数μ。
具体计算方法是,根据每个接口的带宽bw,计算出所有绑定的接口中的最大带宽bw_max,每个接口根据自身的接口带宽bw,和此MPPP接口中的绑定的最大带宽bw_max来计算带宽系数μ,计算的公式如下:
μ=bw_max/bw
S203、输入报文。
S204、选择发送流量最小的接口作为发送接口。
为了更实时的反映每个接口的流量分配情况,在发送接口选择步骤,会对接口流量进行一定的处理,具体的处理方式是:当所有的接口的流量都达到设定阈值的时候,统一将每个接口的流量减去该阈值。该设定阈值为与传输流量有关的经验值。
S205、发送报文。
S206、发送成功后根据报文大小和带宽系数μ计算接口流量txBytes并进行累计。
txBytes具体的计算方法是,当每个接口发送一个报文的时候,假定发送的报文大小为pkt-size字节,发送成功后,接口下的流量就累加pkt-size*μ个字节。
本发明的技术方案,由于每次在选择发送接口的时候,是按照发送流量txBytes最小来进行选择的。每个接口的带宽越大,那么μ值越小,相同大小的报文经过带宽大的接口的时候,计算出来的流量值就越小,而经过带宽较小的接口的时候,计算出来的流量值就越大,这样,接口带宽越小,流量增长的越快,接口带宽越大,流量增长越慢,那么这样导致的结果就是,带宽大的接口被分配的流量多,带宽小的接口被分配的流量小。这样可以按照每个接口的带宽大小,对每个接口进行合理分配流量。流量的分配基本与每个接口带宽的大小成正比。
例如:假设有A、B、C三个接口绑定到一个MPPP接口,每个接口的带宽分别为1024kb,512kb,128kb,则三个接口的带宽系数分别为1,2,8。这三个接口在发送报文大小为100bytes的报文流量时,流量分配情况如下表所示:
报文次序 |
接口A流量(μ=1) |
接口B流量(μ=2) |
接口C流量(μ=8) |
1 |
100*1=100 |
|
|
2 |
|
100*2=200 |
|
3 |
|
|
100*8=800 |
4 |
100+100*1=200 |
|
|
5 |
200+100*1=300 |
|
|
6 |
|
200+100*2=400 |
|
7 |
300+100*1=400 |
|
|
8 |
400+100*1=500 |
|
|
9 |
|
400+100*2=600 |
|
10 |
500+100*1=600 |
|
|
11 |
600+100*1=700 |
|
|
12 |
|
600+100*2=800 |
|
13 |
700+100*1=800 |
|
|
从上表的情况可以计算出接口A的实际分配流量为800bytes,接口B的实际分配流量为400bytes,接口C的实际分配流量为100bytes。分配的流量比为8:4:1,正好与接口带宽8:4:1一致。
上述过程可以描述为:
初始化接口参数后,根据A、B、C三个接口的带宽得到bw_max=1024kb,计算得到每个接口的带宽系数μ,分别为1、2、8。
当第1个报文到来时,由于A、B、C三个接口的流量均为0,可以选择流量最小的接口A发送报文,发送成功后计算接口A的流量txBytes=100*1=100。
当第2个报文到来时,A、B、C三个接口的流量分别为100、0、0,可以选择流量最小的接口B发送报文,发送成功后计算接口B的流量txBytes=100*2=200。
当第3个报文到来时,A、B、C三个接口的流量分别为100、200、0,选择流量最小的接口C发送报文,发送成功后计算接口C的流量txBytes=100*8=800。
当第4个报文到来时,A、B、C三个接口的流量分别为100、200、800,选择流量最小的接口A发送报文,发送成功后计算接口A的流量txBytes=100+100*1=200。
当第5个报文到来时,A、B、C三个接口的流量分别为200、200、800,可以选择流量最小的接口A发送报文,发送成功后计算接口A的流量txBytes=200+100*1=300。
当第6个报文到来时,A、B、C三个接口的流量分别为300、200、800,选择流量最小的接口B发送报文,发送成功后计算接口B的流量txBytes=200+100*2=400。
当第7个报文到来时,A、B、C三个接口的流量分别为300、400、800,选择流量最小的接口A发送报文,发送成功后计算接口A的流量txBytes=300+100*1=400。
当第8个报文到来时,A、B、C三个接口的流量分别为400、400、800,可以选择流量最小的接口A发送报文,发送成功后计算接口A的流量txBytes=400+100*1=500。
当第9个报文到来时,A、B、C三个接口的流量分别为500、400、800,选择流量最小的接口B发送报文,发送成功后计算接口B的流量txBytes=400+100*2=600。
当第10个报文到来时,A、B、C三个接口的流量分别为500、600、800,选择流量最小的接口A发送报文,发送成功后计算接口A的流量txBytes=500+100*1=600。
当第11个报文到来时,A、B、C三个接口的流量分别为600、600、800,可以选择流量最小的接口A发送报文,发送成功后计算接口A的流量txBytes=600+100*1=700。
当第12个报文到来时,A、B、C三个接口的流量分别为700、600、800,选择流量最小的接口B发送报文,发送成功后计算接口B的流量txBytes=600+100*2=800。
当第13个报文到来时,A、B、C三个接口的流量分别为700、800、800,选择流量最小的接口A发送报文,发送成功后计算接口A的流量txBytes=700+100*1=800。
这样,发送完1300bytes的流量后,接口A的实际分配流量为800bytes,接口B的实际分配流量为400bytes,接口C的实际分配流量为100bytes。分配的流量比为8:4:1,正好与接口带宽8:4:1一致。这时可以对A、B、C三个接口统一减去设定的流量阈值800bytes,进行新一轮的流量分配。
如图3所示,本发明的多链路绑定不同带宽负载均衡装置,包括:
初始化模块,用于初始化接口参数。
运算模块,用于计算每个接口的带宽系数μ;具体计算方法是按照下式计算接口带宽系数μ:
μ=bw_max/bw,其中,bw_max为绑定接口中的最大带宽,bw为本接口带宽。
报文接收模块,用于输入报文;所述接口选择模块进一步用于,当所有接口流量都达到设定阈值时,将接口流量统一减去该阈值后再选择发送接口,所述设定阈值为与传输流量有关的经验值。
接口选择模块,用于选择发送流量最小的接口作为发送接口。
报文发送模块,用于发送报文。
流量统计模块,用于发送成功后根据报文大小和带宽系数μ计算接口流量txBytes并进行累计,具体是,按照下式计算接口流量txBytes:
txBytes=pkt-size*μ,其中,pkt-size为发送的报文大小。