具体实施方式
虽然本发明将参阅含有本发明较佳实施例的附图予以充份描述,
但在此描述之前应了解本领域技术人员可修改在本文中所描述的发
明,同时获致本发明的功效。因此,须了解以下的描述对本领域技术
人员而言为一广泛的揭示,且其内容不在于限制本发明。
请参考图3,显示本发明负载平衡装置实施于一交换系统逻辑端口
的内部结构图,其中逻辑端口是以连接两个实体输出端口9为例,但
不以此为限。本发明负载平衡装置包含:一标签指定机制,由一标签
指定器10实施,举例来说,取出上层使用者欲传送的数据数据包5的
来源地址与目的地址的部分位,执行异或(XOR)的逻辑运算以作为该数
据包5的标签值;一标签分配机制,由一标签分配器12实施,依动态
指示的标签分配方法,将具有标签值的数据包5分配至各实体输出端
口9传输;以及一负载监视机制,由一负载监视器11实施,在一固定
周期内计算各标签所承接数据包5的累积负载量,以评估多个标签分
配方法,择其适用的标签分配方法,而动态指示标签分配器12执行该
适用的标签分配方法分配数据包5至相应实体输出端口9的路径。
请配合图2所示,当上层使用者1传送数据时,网络上传送的数
据会分解成多个数据包5,即数据在传送之前先切割,接收之后再加以
组合,并会经操作系统7再将数据包5传送给逻辑端口8。当数据包5
传送到逻辑端口8时,标签指定器10将欲传送的数据包5逐一做贴标
签的动作,并将该数据包5传送给标签分配器12。标签分配器12会根
据负载监视器11所指定的标签分配方法将该数据包5动态地分配给各
实体输出端口9。其间,负载监视器11会在预设固定周期时间后对标
签指定器10计算相关于各标签的数据包负载量,并以此负载计算结果
决定一相应的标签分配方法,以使实体输出端口9获得较佳的负载平
衡传输。以下将进一步对这三种机制作详细叙述。
标签指定机制
当数据包5在交换系统中被传送至逻辑端口8时,本发明装置的
标签指定器10取出数据包5的来源地址与目的地址的最后三个位,举
例而言,执行异或(XOR)的逻辑运算以作为该数据包5的标签。标签指
定器10会依序对每一数据包5贴标签,而经逻辑运算后,标签的标签
值为0到7的其中之一。通过此标签指定机制,可使进入逻辑端口8
的数据包5能依序的被贴上标签,而取用数据包的来源地址(SMAC)
与目的地址(DMAC)作为运算标签的依据,为避免动态负载平衡装置
因而使属于相同数据流的数据包发生错序(misorder),反而降低网络
效能。
标签分配机制
当数据包5经由标签指定器10被依序贴上标签后,由标签分配器
12根据负载监视器11指示的标签分配方法来决定下一固定周期时间,
贴上标签的数据包5该相应地由哪一实体输出端口9传输,以达到动
态平衡负载的目的。在本发明的较佳实施例中,负载监视器11所指示
的标签分配方式,会将标签值0到7的标签因应其上一固定周期期间
各个标签的数据包累计负载量,相应地分配到各实体输出端口9,以动
态调整实体输出端口9的负载平衡。
标签监视机制
当数据包5经由标签指定机制被依序贴上标签后,在一预设的固
定周期时段内,此周期可依照系统设计效能而调整长短,系统的效能
可能相关于端口数、CPU速度、SRAM大小......等,负载监视器11则
会对各标签的负载流量做累计,即累计相关于(associated)该标签的
数据包总长度作为负载流量,并定期评估不同标签分配方式中何者使
实体输出端口9的负载平衡最佳化,以选择适用的分配方法指定标签
分配器12执行分配。
以下将进一步说明本发明负载监视机制中,举例评估标签分配的机
制。标签分配的方法一的算法如下所示:
1. LoadPerTicket[]={λ1,λ2,...,λt}
2. UnAssignTicket[]={T1,T2,...,Tt}
![]()
4. foreach p in group{
5. While(Bp<δ//UnAssignTicket[]){
6. set Ticket=Tmin(LoadPerTicket[])
7. Bp=Bp+λTicket
8. add Ticket to port p
9. del Ticket from UnAssignTicket[]
10. }
11. }
12. foreach p in group{
13. foreach ticket{
14. if(ticket∈p){
15. LoadPerPortM1[p]= LoadPerPortM1[p]+
LoadPerTicket[ticket]
16. }
17. }
18. DiffPerPortM1[p]=ABS(δ-LoadPerPortM1[p])
19. DiffTotalM1=DiffTotalM1+DiffPerPortM1[p]
20. }
在上述的方法一算法陈述中,行1的阵列LoadPerTicket[]记录相
关于每一标签值的数据包长度的负载流量;行2的阵列
UnAssignTicket[]记录尚未指定给实体输出端口的标签Ticket;而行
3的δ计算出理想输出端口的平均负载量,其中为Pg输出端口的数量;
行4的foreach-loop界定每一个实体输出端口执行行5至10所述的
工作,将标签Ticket指定给实体输出端口;其中,行5的While-loop
界定实体输出端口p累加UnAssignTicket[]的累加负载量Bp在未达平
均负载量δ之前执行行6至9所述的工作;其中,行6是从阵列
LoadPerTicket[]中取出具有最小负载量λ的标签Ticket;行7将该标
签Ticket的负载量累加至累加负载量Bp;行8将该标签Ticket指定
给实体输出端口p;行9则将已指定的标签Ticket从阵列
UnAssignTicket[]移除。
接着,行12的foreach-loop界定每一个实体输出端口执行行13
至19所述的工作,计算每一个实体输出端口的负载量与平均差异量;
其中,行13的foreach-loop界定每一标签Ticket执行行14至16所
述的工作,以计算每一个实体输出端口的累加负载量;行14与行15
是根据行4的foreach-loop将标签Ticket指定给实体输出端口的结
果,将属于同一实体输出端口p的标签Ticket负载量累加起来,记录
于阵列LoadPerPortM1[];行18的阵列DiffPerPortM1[]记录每一个
实体输出端口p根据此方法一的标签分配方式,其累加负载量与理想
平均负载量δ的绝对差异值;最后,行19计算了根据此方法一的累加
差异量,而记录于DiffTotalM1。
紧接着,以下描述标签的分配方法二的算法:
1. LoadPerTicket[]={λ1,λ2,...,λt}
2. UnAssignTicket[]={T1,T2,...,Tt}
3. While(UnAssignTicket[]) {
4. set Ticket=Tmin(LoadPerTicket[])
5. add Ticket to port p
6. del Ticket from UnAssignTicket[]
7. p=next port in group
8.}
9.foreach p in group{
10. foreach ticket {
11. if(ticket∈p){
12. LoadPerPortM2[p]= LoadPerPortM2[p]+
LoadPerTicket[ticket]
13. }
14. }
15. DiffPerPortM2[p]=ABS(δ-LoadPerPortM2[p])
16. DiffTotalM2=DiffTotalM2+DiffPerPortM2[p]
17. }
在上述的方法二算法陈述中,行1的阵列LoadPerTicket[]记录相
关于每一标签值的数据包长度的负载流量;行2的阵列
UnAssignTicket[]记录尚未指定给实体输出端口的标签Ticket;而行
3的While-loop界定阵列UnAssignTicket[]中未指定给实体输出端口
的标签Ticket执行行4至7所述的工作;其中,行4是从阵列
LoadPerTicket[]中取出具有最小负载量λ的标签Ticket;行5将该标
签Ticket指定给实体输出端口p;行6则将已指定的标签Ticket从阵
列UnAssignTicket[]移除;行7将p指定到下一个实体输出端口。
接着,行9的foreach-loop界定每一个实体输出端口执行行10
至16所述的工作,计算每一个实体输出端口的负载量与平均差异量;
其中,行10的foreach-loop界定每一标签Ticket执行行11至12所
述的工作,以计算每一个实体输出端口的累加负载量;行11与行12
系根据行3的While-loop将标签Ticket指定给实体输出端口的结果,
将属于同一实体输出端口p的标签Ticket负载量累加起来,记录于阵
列LoadPerPortM2[];行15的阵列DiffPerPortM2[]记录每一个实体
输出端口p根据此方法二的标签分配方式,其累加负载量与理想平均
负载量δ的绝对差异值;最后,行16计算了根据此方法二的累加差异
量,而记录于DiffTotalM2。
因此,在本发明的负载监视机制中,将评估上述方法一与方法二所
实施的标签分配机制,以获得将各标签分配给实体输出端口后的累加
差异量DiffTotalM1与DiffTotalM2,而累加差异量较小者表示该方法
所实施的标签分配机制,使得各实体输出端口的负载流量获得较佳的
负载平衡,以使负载监视机制将指示标签分配机制在下一时段中,将
具有累加差异量较小的标签分配方法实施于交换系统的分组交换技术
中。以下进一步利用两个实施范例说明,如何根据各标签的负载流量
选择方法一与方法二所实施的标签分配机制。
范例一
在交换系统的一逻辑端口8中,假设其可指定给数据包5的标签数
量为8个,即T1,T2,…,T8,而实体输出端口有2个。当经过一预设的
时段,例如:5分钟,负载监视机制所累计出每一标签Ticket分配到
的数据包总长度的负载流量为:
LoadPerTicket[8]={0,10,0,10,0,10,0,30}
从LoadPerTicket[8]所统计出的负载流量,可获得理想输出端口
的平均负载量δ=30。根据方法一实施的标签分配,具有最小负载量的
标签Ticket依序取出分配给其一实体输出端口Port 1,直到实体输出
端口Port 1累加的负载流量大于平均负载量δ之后,再分配给另一实
体输出端口Port 2,可得到以下的分配结果:
Port 1:T1,T3,T5,T7,T2,T4,T6
Port 2:T8
所以,各实体输出端口Port 1,Port 2将获得的累加负载流量分
别为30(=0+0+0+0+10+10+10)与30(=标签T8的负载流量),而方法一
将各标签分配给实体输出端口后的各实体输出端口累加差异量为:
DiffTotalM1=0+0=0
而根据方法二实施的标签分配,具有最小负载量的标签Ticket依
序取出而逐一分配给各实体输出端口Port 1与Port 2,直到标签分配
完毕,可得到以下的分配结果:
Port 1:T1,T5,T2,T6
Port 2:T3,T7,T4,T8
所以,各实体输出端口Port 1,Port 2将获得的累加负载流量分
别为20(=0+0+10+10)与40(=0+0+10+30),而方法二将各标签分配给
实体输出端口后的各实体输出端口累加差异量为:
DiffTotalM2=10+10=20
因此,负载监视机制选择具有累加差异量较小的方法一实施于标签
分配机制中,以使交换系统的分组交换技术可在各实体输出端口获得
负载平衡。
范例二
在交换系统的一逻辑端口8中,假设其可指定给数据包5的标签数
量为8个T1,T2,…,T8,而实体输出端口有2个。当经过一预设的时段,
例如:5分钟,负载监视机制所累计出每一标签Ticket分配到的数据
包长度的负载流量为:
LoadPerTicket[8]={10,10,20,20,30,30,40,40}
从LoadPerTicket[8]所统计出的负载流量,可获得平均负载量
δ=100。根据方法一实施的标签分配,具有最小负载量的标签Ticket
依序取出分配给其一实体输出端口Port 1,直到实体输出端口Port 1
累加的负载流量大于平均负载量δ之后,再分配给另一实体输出端口
Port 2,可得到以下的分配结果:
Port 1:T1,T2,T3,T4,T5,T6
Port 2:T7,T8
所以,各实体输出端口Port 1,Port 2将获得的累加负载流量分
别为120(=10+10+20+20+30+30)与80(=40+40),而方法一将各标签分
配给实体输出端口后的各实体输出端口累加差异量为:
DiffTotalM1=20+20=40
而根据方法二实施的标签分配,具有最小负载量的标签Ticket依
序取出而逐一分配给各实体输出端口Port 1与Port 2,直到标签分配
完毕,可得到以下的分配结果:
Port 1:T1,T3,T5,T7
Port 2:T2,T4,T6,T8
所以,各实体输出端口Port 1,Port 2将获得的累加负载流量分
别为100(=10+20+30+40)与100(=10+20+30+40),而方法二将各标签
分配给实体输出端口后的各实体输出端口累加差异量为:
DiffTotalM2=0+0=0
因此,负载监视机制选择具有累加差异量较小的方法二实施于标签
分配机制中,以使交换系统的分组交换技术可在各实体输出端口获得
更佳的负载平衡。
由上述两个范例分析得知,方法一实施的标签分配机制对于各标签
的负载流量中有较大差异时,可使各实体输出端口获得较佳的负载平
衡,而方法二实施的标签分配机制对于各标签的负载流量差异性较小
时,可使各实体输出端口获得较佳的负载平衡。是故,本发明实施于
交换系统的分组交换技术的负载平衡装置与方法,将可动态因应标签
负载流量的特性,而选择较佳的标签分配方法,使各实体输出端口获
得较佳的负载平衡,有效提升网络频宽的利用性。
请参考图4,为本发明负载平衡方法的实施流程图,并配合参阅图
1、图2及图3。根据本发明负载平衡方法所实施的交换系统,其逻辑
端口8包含标签指定机制、标签分配机制与标签监视机制,据以实施
本发明的负载平衡方法,此方法包含:
程序101:标签数据包
在交换系统2中,当数据包5传送至逻辑端口8时,举例而言,取
出数据包5的来源地址与目的地址的最后三个位,执行异或(XOR)的逻
辑运算,其运算结果为0到7的其中之一值以作为该数据包5的标签。
程序102:负载分析
在一预设的固定周期时段后,取得各标签(例如标签值0到7)在
程序101中,指定给数据包5的负载量作为负载分析。
程序103:方法评估
根据程序102所获得各标签的负载量计算结果,以评估不同的标
签分配方法所达到的负载分配情形,以动态选择下一周期的标签分配
方法调整各实体输出端口9的负载量。在本发明的较佳实施例中揭露
了两种负载分配方法。
程序104:分配指定
在经程序103评估出标签分配最佳化的方法后,依该方法分配各标
签给实体输出端口9,遂使各数据包5依据程序101所指定的标签依该
方法分配的路径由对应的实体输出端口9传输。
程序105:经过预设时段
在一预设的固定周期时段内,持续累计各标签(例如标签值0到7)
的传输数据包负载量。
当交换系统经程序101到程序104,可在实体输出端口9达到最佳
负载平衡分配,并在程序105的预设时段后再返回到程序102对下一
周期的数据包5进行最佳负载平衡分配。