发明内容
本发明实施例提供了一种SPB网络中的流量均衡方法及设备,用以在SPB网络中,实现自动对各BVLAN流量进行监控,以及根据监控结果自动进行流量调整,以实现负载分担。
本发明实施例提供的SPB网络中的流量均衡方法,其中, BEB设备按照设定周期执行以下步骤:
统计各VSI的流量,以及各骨干虚拟局域网BVLAN的流量;
根据各BVLAN的流量统计结果确定出各BVLAN间的流量不均衡时,根据各VSI的流量统计结果确定流量迁移策略;
根据确定出的流量迁移策略,请求对端BEB设备将指定的VSI的流量从关联的源BVLAN迁移到目标BVLAN,并在收到所述对端BEB设备返回的允许将指定VSI实例的流量进行迁移的响应后,将所述指定的VSI实例的流量从源BVLAN迁移到目标BVLAN。
本发明实施例提供的BEB设备,包括:统计模块、迁移判决模块和迁移处理模块,其中:
统计模块,用于按照设定周期统计各VSI的流量,以及各骨干虚拟局域网BVLAN的流量;
迁移判决模块,用于在根据所述统计模块统计得到的各BVLAN的流量统计结果确定出各BVLAN的流量不均衡时,根据各VSI的流量统计结果确定流量迁移策略,并根据确定出的流量迁移策略,请求对端BEB设备将指定的VSI的流量从关联的源BVLAN迁移到目标BVLAN;以及,在接收到对端BEB设备发送的将指定的VSI的流量从关联的源BVLAN迁移到目标BVLAN的请求后,在根据所述统计模块在相应周期内统计得到的各BVLAN的流量统计结果,确定出进行相应流量迁移后各BVLAN的流量均衡时,向发送请求的对端BEB设备返回允许将指定的VSI的流量从关联的源BVLAN迁移到目标BVLAN的响应;
迁移处理模块,用于在收到本设备的对端BEB设备返回的允许将指定VSI实例的流量进行迁移的响应后,将所述指定的VSI实例的流量从源BVLAN迁移到目标BVLAN。
本发明的上述实施例,BEB设备通过自动统计各VSI和各BVLAN的流量,并根据该统计结果进行流量均衡判决以及进行相应流量迁移处理,从而实现自动进行流量调整,以实现负载分担。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
参见图1,为本发明实施例所提供的PBBN架构示意图。其中,BEB1上配置BEB2为对端设备,BEB2上配置BEB1为对端设备。BEB1和BEB2上配置有1000个VSI,每个VSI由I-SID唯一标识,例如,VSI1的I-SID为I-SID1,VSI2的I-SID为I-SID2,以此类推。
运营商骨干网中配置有3个BVLAN(BVLAN100、BVLAN200和BVLAN 300),相应的VLAN ID为:B-VID 1、B-VID 2和B-VID 3,其中,BVLAN1配置在BCB1上,BVLAN2配置在CBC2上,BVLAN3配置在CBC3上。BEB1的端口PORT1上配置BVLAN100、端口PORT2上配置BVLAN200、端口PORT3上配置BVLAN 300;BEB2的端口PORT1上配置BVLAN100、端口PORT2上配置BVLAN200、端口PORT3上配置BVLAN 300。
该网络中的各节点设备使用SPB-ISIS协议来共享网络中的链路状态,各个节点设备并行计算各节点设备之间的最短路径,其中,BEB1和BEB2为每个I-SID计算三棵树:
到达所有相关UNI(用户网络接口)节点的SPT树,用于单播与组播报文的转发;
ECT树,用于处理两个UNI节点间存在多条等价路径时负载均衡转发;
以自己为根的MT树(Multicast Tree,多播树),用于未知单播与广播报文转发。
其中,BEB1和BEB2之间存在3条等价路径,分别是:BEB1—BCB1—BEB2、BEB1—BCB2—BEB2、BEB1—BCB3—BEB2。
在初始情况下,为了在这3条等价路径之间实现负载分担,可预先在BEB1和BEB2上配置VSI与BVLAN的关联关系,即配置I-SID与B-VID的关联关系,一种可能的I-SID与B-VID的关联关系可如表1所示:
表1
本发明实施例中,在BEB1和BEB2上分别增加报文统计功能和流量均衡功能,可按照设定的周期统计一个周期内本设备与对端BEB设备间的报文收发数量,从而得到各等价路径上的报文流量,并根据各等级路径上的报文流量统计结果进行流量均衡。
优选的,为了仅匹配SPB流量而排除无关流量,本发明实施例不使用端口的报文计数功能,而是使用PW(Pseudo Wire,虚链路)统计功能,即,针对每个BVLAN,统计使用该BVLAN的每个PW的流量,将流量的总和作为该BVLAN的流量,将VSI内所有PW流量的总和作为该VSI的流量。也就是仅对BEB设备从其下行口收到并从其上下口发出的报文进行统计,以及对BEB设备从其上行口收到并转发给其下行口的报文进行统计。
对于图1所示的网络架构和VSI配置,由于存在1000个VSI,则对应存在1000个PW,可对应于每个PW分别设置2个计数器Counter1和Counter2,其中Counter1用于对发送报文进行计数,Counter2用于对接收报文进行计数。通过将计数器与硬件引擎(如转发芯片)进行绑定,从而实现:每当BEB设备(包括BEB1和BEB2)从一个PW转发出去一个报文时,触发该PW对应的Counter1进行计数;每当BEB设备(包括BEB1和BEB2)从一个PW接收到一个目的为本设备连接的用户网络的报文时,触发该PW对应的Counter2进行计数。
这样,BEB设备可得到各VSI的流量统计值,例如,对于VSI1,其流量统计值为其所对应的PW的计数器Counter1和Counter2在相应统计周期内的计数值之和。进一步的,BEB可根据VSI与BVLAN的关联关系,得到各BVLAN的流量统计值,例如对于表1所示的关联关系,BVLAN1的流量为相应统计周期内VSI1~VS33的流量总和。
需要说明的是,对于其它SPB网络架构,一个VSI所对应的PW可能存在多个,这种情况下,该VSI的流量应该是该VSI所对应的所有PW的双向流量(即该PW对应的2个计数器计数值)之和。
图2示出了本发明实施例提供的流量调整流程示意图,该流程以BEB1设备为例,在每个设定周期,执行以下流程:
步骤201,BEB1统计得到各VSI在相应周期内的流量,以及各BVLAN在相应周期内的流量。
具体的,如上所述,对于每个VSI,BEB1可根据对应的计数器Counter1和Counter2的计数值,统计得到相应流量调整周期内该VSI流量。对于每个BVLAN,BEB1可根据VSI与BVLAN的关联关系,统计得到相应流量调整周期内该BVLAN的流量。
步骤202,BEB1根据各BVLAN的流量统计值,判断各BVLAN的流量是否均衡,如果均衡,则不作调整,转入步骤201,等待下一个周期的到来;如果不均衡,则转入步骤203。
具体的,如果统计得到的各BVLAN的流量相同,则认为各BVLAN的流量均衡。考虑到在实际应用中不可能做到流量的绝对均匀,因此本发明实施例可由用户预先设置阈值,如果各BVLAN之间的流量差不超过该阈值,则认为流量均匀。
步骤203,BEB1根据各BVLAN的流量统计值,以及各VSI的流量统计值,确定出流量迁移策略,即,将哪个或哪些VSI的流量从原来关联的BVLAN迁移到新的目标BVLAN。
进行流量迁移判决的原则是:将流量大的BVLAN内的流量迁移到流量小的BVLAN中,并尽量保证流量迁移后,各BVLAN的流量均衡。
比如,BVLAN100上的流量为1G,BVLAN200上的流量为4G,BVLAN300上的流量为1G,那么需要将BVLAN200上的1G流量分担给BVLAN100,再将1G流量分担给BVLAN300。确定出流量迁移的源BVLAN和目标BVLAN以及需要迁移的流量大小后,查看与BVLAN200关联的各VSI的流量,发现VSI34和VSI35的流量都为1G,因此可将VSI34的BVLAN迁移到BVLAN100,将VSI35的BVLAN迁移到BVLAN300,即,VSI34不再与BVLAN200关联,而是更新为与BVLAN100关联,VSI35不再与BVLAN200关联,而是更新为与BVLAN300关联。
步骤204,BEB1发送协议报文给对端BEB设备(BEB2),以请求对端BEB设备允许进行上述流量迁移。
具体的,BEB1发送的协议报文可依然使用SPB网络中的ISIS协议,但需要增加一种TLV(类型、长度和数值),通过该TVL携带需要迁移的VSI的I-SID以及迁移后的BVLAN的B-VID。例如,对于上述将VSI34的BVLAN迁移到BVLAN100,将VSI35的BVLAN迁移到BVLAN300的情况,该TVL中需要携带VSI34的I-SID以及对应的目标BVLAN100的B-VID,还携带VSI35的I-SID以及对应的目标BVLAN300的B-VID。
步骤205,BEB2收到该协议报文后,根据本设备的流量统计结果判决是否允许进行BEB1所请求的流量迁移,并根据判决结果返回相应响应报文,以及在本设备上进行相应处理。
具体的,BEB2查询本设备当前的流量情况,如果发现进行上述流量迁移后,各BVLAN的流量能够均衡,则回应同意迁移的响应报文,并在本设备上执行相应流量迁移处理;如果发现进行上述迁移后,各BVLAN的流量不能均衡,则回应不同意迁移的响应报文,并且不在本设备上执行相应流量迁移处理。进一步的,在判决流量迁移后各BVLAN的流量是否均衡时,可如前所述,根据预设的阈值进行判决,如果各VLAN之间的流量差不超过该阈值,则认为流量均匀。
仍已上述将VSI34的BVLAN迁移到BVLAN100,将VSI35的BVLAN迁移到BVLAN300为例,BEB2查询本设备在相应周期内各VSI的流量和各BVLAN的流量,并计算在进行上述流量迁移后,各BVLAN的流量是否能够均衡,如果能够均衡,则同意迁移,否则不同意迁移。如果同意迁移,则BEB2在本设备上进行以下流量迁移处理操作:将VSI34与BVLAN的关联关系修改为VSI34与BVLAN100关联,将VSI35与BVLAN的关联关系修改为VSI35与BVLAN300关联,刷新VSI34对应的MAC地址表项和VSI35对应的MAC地址表项,将VSI34对应的MAC地址表项中的出端口从PORT2修改为PORT1,将VSI35对应的MAC地址表项中的出端口从PORT2修改为PORT3。
进一步的,BEB1还刷新VSI34对应的广播表项和VSI35对应的广播表项。
进一步的,为了防止发生环路,BEB1在从设备端口接收到组播报文后,需要进行RPF(Reverse Path Forwarding,逆向路径转发)检查。针对这种情况,本发明实施例中,BEB1上的流量迁移处理操作进一步包括更新发生流量迁移的VSI所对应的RPF接口的操作。仍以以上迁移为例,BEB1将VSI34对应的RPF接口从PORT2修改为PORT1,将VSI35对应的RPF接口从PORT2修改为PORT3。
步骤206,BEB1接收到BEB2发送的响应报文后,如果得知BEB2允许进行流量迁移,则转入步骤207,如果得知BEB2不允许进行流量迁移,则BEB1放弃流量迁移,并返回步骤201,继续等待下一个周期。
步骤207,BEB1在本设备上执行流量迁移,具体迁移处理操作同BEB2上的迁移处理操作。
同理,BEB2也按照以上方式进行流量迁移判决和流量迁移处理。
通过以上描述可以看出,BEB设备通过自动对各VSI和各BVLAN的流量进行监控和统计,并根据该监控统计结果进行流量均衡判决以及进行相应流量迁移处理,从而实现自动进行流量调整,以实现负载分担。
基于相同的技术构思,本发明实施例还提供了一种应用于SPB网络中的BEB设备。
参见图3,为本发明实施例提供的BEB设备的结构示意图。该设备可包括:统计模块301、迁移判决模块302和迁移处理模块303,其中:
统计模块301,用于按照设定周期统计各VSI的流量,以及各BVLAN的流量;
迁移判决模块302,用于在根据统计模块301统计得到的各BVLAN的流量统计结果确定出各BVLAN的流量不均衡时,根据各VSI的流量统计结果确定流量迁移策略,并根据确定出的流量迁移策略,请求对端BEB设备将指定的VSI的流量从关联的源BVLAN迁移到目标BVLAN。具体的,迁移判决模块302根据统计模块301统计得到的各BVLAN的流量统计结果,判断各BVLAN的流量是否均衡,在判决为不均衡时,根据各VSI的流量统计结果确定流量迁移策略,并请求对端BEB设备根据所述流量迁移策略进行流量迁移处理。
迁移判决模块302还用于:在接收到对端BEB设备发送的将指定的VSI的流量从关联的源BVLAN迁移到目标BVLAN的请求后,根据统计模块301在相应周期内统计得到的各BVLAN的流量统计结果,判断进行相应流量迁移后各BVLAN的流量是否均衡,并在判决为均衡时,向发送请求的对端BEB设备返回允许进行相应流量迁移的响应;
迁移处理模块303,用于在收到本设备的对端BEB设备返回的允许进行相应流量迁移的响应后,根据迁移判决模块302确定出的流量迁移策略进行流量迁移处理,即,将指定的VSI实例的流量从源BVLAN迁移到目标BVLAN。
具体的,统计模块301针对每个BVLAN,根据VSI与BVLAN的关联关系,计算与相应BVLAN关联的所有VSI的流量统计值总和,得到该BVLAN的流量。
具体的,所述BEB设备上针对每个PW设置第一计数器和第二计数器;当所述BEB设备将从下行接口接收到的报文转发到PW上时,触发该PW对应的第一计数器进行计数;当所述BEB设备将从PW接收到的报文转发给下行接口时,触发该PW对应的第二计数器进行计数。相应的,统计模块301针对每个VSI,将该VSI所对应的所有PW的第一计数器和第二计数器在相应周期内的计数值相加,得到该VSI在该周期内的流量。
具体的,迁移判决模块302通过向所述对端BEB设备发送协议报文,以请求对端BEB设备根据所述流量迁移策略(即,将指定的VSI的流量从关联的源BVLAN迁移到目标BVLAN)进行流量均衡处理,所述协议报文中携带有需要进行流量迁移的VSI的标识(即所述指定的VSI的标识),以及该VSI迁移到的目标BVLAN的标识。
具体的,迁移处理模块303可通过以下操作实现流量迁移:将需要进行流量迁移的VSI(即所述指定的VSI)与源BVLAN之间的关联关系修改为该VSI与目标BVLAN之间的关联关系,将需要进行流量迁移的VSI(即所述指定的VSI)对应的转发表项中的出端口更新为所述BEB设备连接目标BVLAN的端口。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。