背景技术
IRF(IntelligentResilientFramework,智能弹性架构)是一种软件虚拟化技术,其核心思想是将多台设备通过IRF物理端口连接在一起,进行必要的配置后,虚拟化成一台“分布式设备”。使用这种虚拟化技术可以集合多台设备的硬件资源和软件处理能力,实现多台设备的协调工作、统一管理和不间断维护。
如图1所示,为现有技术中的一个典型IRF组网的架构示意图,可以包括两类设备,即IRF成员设备(即堆叠设备)和独立运行设备。其中:
独立运行设备只能单机运行,不能与别的设备形成IRF,如图1中所示的Device;
IRF成员设备可以与其他设备互联形成IRF,如图1中所示的Master和Slave,各成员设备可以统一进行管理。
IRF主要具有以下优点:
1、简化管理。IRF形成之后,用户通过任意成员设备的任意端口都可以登录IRF系统,对IRF内所有成员设备进行统一管理。
2、可靠性高。IRF的高可靠性体现在多个方面,例如,IRF由多台成员设备组成,Master设备(主设备)负责IRF的运行、管理和维护,Slave设备(从设备)在备份的同时也可以处理业务。一旦Master设备发生故障,系统会迅速自动选举新的Master设备,以保证业务不中断,从而实现了设备的1∶N备份;此外,成员设备之间的IRF链路支持聚合功能,IRF和上、下层设备之间的物理链路也支持聚合功能,多条链路之间可以互为备份,也可以进行负载分担,从而进一步提高了IRF的可靠性。
3、网络扩展能力强。通过增加成员设备,可以轻松自如的扩展IRF的端口数、带宽。由于各成员设备都有CPU(CentralProcessingUnit,中央处理器),能够独立处理协议报文,进行报文转发,因此,IRF还能够轻松自如的扩展处理能力。
为了实现IRF各成员设备的冗余备份,IRF各成员设备一般物理上按环形连接,为了避免转发上的环路,对每一个IRF成员设备,交换机软件利用ASIC报文处理芯片的各种过滤机制和处理设施,在逻辑上都生成一棵转发树,树根为源IRF成员设备,同时保证从根节点向两个方向的深度(IRF成员设备的跳数)的差值不超过1。其基本算法是,若IRF系统中共有N个IRF成员设备(含源IRF成员设备),则从源IRF成员设备开始向右(也可以是向左)遍历N/2个堆叠设备后,按连通图生成转发树即可,如图2所示。由此可以看出,对于任意N个IRF成员设备,系统会按每个IRF成员设备为根生成N棵转发树,从任一IRF成员设备进来的报文,在以该IRF成员设备为根节点的树上进行流量转发。
为了保证IRF之间的链路的可靠性和必要的带宽,相邻的IRF成员设备一般通过多个物理端口连接,逻辑上组成一个IRF口。IRF口可以视为一个或者多个端口的聚合,这样当两个IRF成员间有一个端口出现故障时,依然可以保持该IRF的连通性,如图3所示。
然而,上述生成转发树的方式存在一个明显的缺陷,因为实际组网时,由于资源限制等原因,无法保证各堆叠口的带宽完全相等,此外,即使配置的时候是相等的,也可能因为各种故障导致某个堆叠口DOWN或者失效而出现各堆叠口带宽不一致。在这种情况下,环形堆叠按上述方法生成树的方法就无法实现带宽的均衡有效利用。如图4左侧所示的生成树中,IRF1->IRF2上的带宽比IRF1->IRF4更大,但是所承载的流量可能更小,极端情况下可能导致IRF1->IRF4出现拥塞,而IRF1->IRF2还有多余的带宽,其中,以链路的数目表示各堆叠口的带宽比例关系。
发明内容
本发明的目的在于提供一种转发树生成方法及其装置,以优化IRF系统中转发树的生成,并提高IRF系统中IRF口带宽利用的均衡性和合理性,为此,本发明采用如下技术方案:
一种转发树生成方法,应用于智能弹性框架IRF系统,当所述IRF系统中堆叠设备的数目为偶数时,对于以任一堆叠设备为根节点的转发树,该方法包括:
分别确定将最后一个堆叠设备加入该转发树的左分支和右分支时,该堆叠设备的第一可用带宽和第二可用带宽;
当第一可用带宽大于第二可用带宽时,将该堆叠设备加入该转发树的左分支;
当第一可用带宽小于第二可用带宽时,将该堆叠设备加入该转发树的右分支。
其中,还包括:
当所述第一可用带宽等于所述第二可用带宽时,随机将该堆叠设备加入该转发树的左分支或右分支。
其中,所述确定将最后一个堆叠设备加入该转发树的左分支时,该堆叠设备的第一可用带宽具体通过以下方式实现:
Weight-left-min=MIN(Weight-left-1/N,Weight-left-2/(N-1)...Weight-left-N)
其中,所述Weight-left-min为第一可用带宽,Weight-left-i为转发树左分支中第i个堆叠设备到第i+1个堆叠设备的带宽,1≤i≤N,N为该转发树左分支中除根节点之外的堆叠设备的总数,根节点为该转发树左分支中的第1个堆叠设备。
其中,所述确定将最后一个堆叠设备加入该转发树的右分支时,该堆叠设备的第二可用带宽具体通过以下方式实现:
Weight-right-min=MIN(Weight-right-1/N,Weight-right-2/(N-1)...Weight-right-N)
其中,所述Weight-right-min为第二可用带宽,Weight-right-i为转发树右分支中第i个堆叠设备到第i+1个堆叠设备的带宽,1≤i≤N,N为该转发树右分支中除根节点之外的堆叠设备的总数,根节点为该转发树右分支中的第1个堆叠设备。
一种转发树生成装置,应用于智能弹性框架IRF系统,包括:
确定模块,用于当所述IRF系统中堆叠设备的数目为偶数时,对于以任一堆叠设备为根节点的转发树,分别确定将最后一个堆叠设备加入该转发树的左分支和右分支时,该堆叠设备的第一可用带宽和第二可用带宽;
生成模块,用于当第一可用带宽大于第二可用带宽时,将该堆叠设备加入该转发树的左分支;当第一可用带宽小于第二可用带宽时,将该堆叠设备加入该转发树的右分支。
其中,所述生成模块还用于,当所述第一可用带宽等于所述第二可用带宽时,随机将该堆叠设备加入该转发树的左分支或右分支。
其中,所述确定模块具体用于,通过以下方式确定将最后一个堆叠设备加入该转发树的左分支时,该堆叠设备的第一可用带宽:
Weight-left-min=MIN(Weight-left-1/N,Weight-left-2/(N-1)...Weight-left-N)
其中,所述Weight-left-min为第一可用带宽,Weight-left-i为转发树左分支中第i个堆叠设备到第i+1个堆叠设备的带宽,1≤i≤N,N为该转发树左分支中除根节点之外的堆叠设备的总数,根节点为该转发树左分支中的第1个堆叠设备。
其中,所述确定模块具体用于,通过以下方式确定将最后一个堆叠设备加入该转发树的右分支时,该堆叠设备的第二可用带宽:
Weight-right-min=MIN(Weight-right-1/N,Weight-right-2/(N-1)...Weight-right-N)
其中,所述Weight-right-min为第二可用带宽,Weight-right-i为转发树右分支中第i个堆叠设备到第i+1个堆叠设备的带宽,1≤i≤N,N为该转发树右分支中除根节点之外的堆叠设备的总数,根节点为该转发树右分支中的第1个堆叠设备。
本发明具有如下有益效果:
当IRF系统中的堆叠设备的数量为偶数时,对任一堆叠设备,在生成以该堆叠设备为根节点的转发树的过程中,分别确定最后一个堆叠设备加入到转发树的左分支和右分支时,该堆叠设备的可用带宽,并将该堆叠设备可用带宽较大的情况对应的转发树确定为最终的转发树,优化了IRF系统中转发树的生成,提高了IRF系统中IRF口带宽利用的均衡性和合理性。
具体实施方式
针对现有技术存在的上述问题,本发明实施例提供了一种在IRF系统中生成转发树的技术方案。在该技术方案中,当IRF系统中的堆叠设备的数量为偶数时,对任一堆叠设备,在生成以该堆叠设备为根节点的转发树的过程中,分别确定最后一个堆叠设备加入到转发树的左分支和右分支时,该堆叠设备的可用带宽,并将该堆叠设备可用带宽较大的情况对应的转发树确定为最终的转发树,优化了IRF系统中转发树的生成,提高了IRF系统中IRF口带宽利用的均衡性和合理性。
其中,为了便于理解和表述,在本发明中进行如下定义:
1、对于某个堆叠设备,在以其为根节点的转发树中,该堆叠设备称为IRF-root,转发树的左分支各堆叠设备依次称为IRF-left-1,IRF-left-2......,右分支各堆叠设备依次称为IRF-right-1,IRF-right-2......。其中,IRF-root为转发树左分支中的第1个堆叠设备,IRF-left-1为该转发树左分支中的第2个堆叠设备,依此类推。
2、从IRF-root到IRF-left-1的带宽为Weight-left-1,从IRF-left-1到IRF-left-2的带宽为Weight-left-2......,从IRF-root到IRF-right-1的带宽为Weight-right-1,从IRF-right-1到IRF-right-2的带宽为Weight-right-2......。其中,IRF-root为转发树右分支中的第1个堆叠设备,IRF-right-1为该转发树左分支中的第2个堆叠设备,依此类推。
3、假定在理想情况下,各堆叠设备作为数据流转发的下行设备,对IRF系统的带宽消耗是相同的。对于任一IRF-root,若其左分支共有N个堆叠设备(不含IRF-root),则堆叠设备对IRF-root到IRF-left-1的带宽占用为Weight-left-1/N,对IRF-left-1到IRF-left-2的带宽占用为Weight-left-2/(N-1)...对IRF-left-(N-1)到IRF-left-N的带宽占用为Weight-left-N,对于最后一个堆叠设备而言,其可以占用的理论带宽是上述各值的最小值,称之为关键带宽Weight-left-min=MIN(Weight-left-1/N,Weight-left-2/(N-1)...Weight-left-N)。
4、关于右分支的相关定义与左分支类似。
下面将结合本发明的实施例中的附图,对本发明的实施例中的技术方案进行清楚、完整的描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。
如图5所示,为本发明实施例提供的一种转发树生成方法的流程示意图,在该实施例中,IRF系统中包括偶数个堆叠设备,对于以任一堆叠设备为根节点的转发树生成流程,该方法可以包括以下步骤:
步骤501、确定最后一个堆叠设备加入该转发树左分支时,该堆叠设备的第一可用带宽。
具体的,假定IRF系统中共包括2N个堆叠设备,其编号依次为IRF1、IRF2、...、IRF2N,且各堆叠设备按编号依次顺时针连接,其示意图可以如图6所示。
以以IRF1为根节点(IRF-root)的转发树生成流程为例,从其左侧(逆时针)遍历(N-1)个堆叠设备作为其左分支(依次为IRF2N、IRF(2N-1)、...IRF(N+2)),IRF1到IRF2N的带宽为Weight-left-1,IRF2N到IRF(2N-1)的带宽为Weight-left-2,...,IRF(N+3)到IRF(N+2)的带宽为Weight-left-(N-1);
从其右侧(顺时针)遍历(N-1)个堆叠设备作为其右分支(依次为IRF2、IRF3、...IRFN),IRF1到IRF2的带宽为Weight-right-1,IRF2到IRF3的带宽为Weight-right-2,...,IRF(N-3)到IRFN的带宽为Weight-right-(N-1);
对于最后一个堆叠设备(即IRF(N+1)),需要选择其归属左分支还是右分支。
在该实施例中,可以假设将IRF(N+1)加入到左分支,则IRF(N+2)到IRF(N+1)的带宽为Weight-left-N,IRF(N+1)的可用带宽(即第一可用带宽):
Weight-left-min=MIN(Weight-left-1/N,Weight-left-2/(N-1)...Weight-left-N)。
步骤502、确定将最后一个堆叠设备加入到该转发树的右分支时,该堆叠设备的第二可用带宽。
具体的,假设将IRF(N+1)加入到右分支,则IRFN到IRF(N+1)的带宽为Weight-right-N,IRF(N+1)的可用带宽(即第二可用带宽):
Weight-right-min=MIN(Weight-right-1/N,Weight-right-2/(N-1)...Weight-right-N)。
需要注意的是,在本发明实施例中,步骤501和步骤502在时序上并没有必然的先后关系,即可以先执行步骤501,后执行步骤502;也可以先执行步骤502,后执行步骤501,其具体流程在此不再赘述。
步骤503、比较第一可用带宽和第二可用带宽,若第一可用带宽大于第二可用带宽,则转至步骤504;若第一可用带宽小于第二可用带宽,则转至步骤505。
具体的,为了使堆叠系统中数据流量对IRF口带宽利用更为有效,在本发明实施例中,将最后一个堆叠设备可用带宽更高的情况下对应的转发树作为最终的转发树。其中,若最后一个堆叠设备加入转发树左分支和右分支时可用带宽相同,则可以随机选择将该堆叠设备加入转发树的左分支和右分支。
步骤504、将该堆叠设备加入转发树的左分支。
步骤505、将该堆叠设备加入转发树的右分支。
其中,在本发明实施例中,当第一可用带宽等于第二可用带宽时,可以随机将该堆叠设备加入转发树的左分支和右分支。
需要注意的是,上述第一可用带宽等于第二可用带宽时的转发树生成方法仅仅是本发明实施例的一种具体实施方式,在本发明实施例提供的技术方案的基础上,本领域技术人员在不付出创造性劳动的前提下得到的其他转发树生成方式均应属于本发明的保护范围。
下面结合具体的应用场景对发明实施例提供的技术方案进行更加详细的描述。
参见图7,在该实施例中,IRF系统中共包括6个堆叠设备,IRF-root的左分支和右分支分别包含两个堆叠设备(IRF-left-1、IRF-left-2以及IRF-right-1、IRF-right-2),IRF-root到IRF-left-1的带宽为3(其中,以链路数目表示各堆叠口的带宽比例关系),IRF-left-1到IRF-left-2的带宽为2;IRF-root到IRF-right-1的带宽为2,IRF-right-1到IRF-right-2的带宽为2。
假设将最后一个堆叠设备(IRF-last)加入左分支时,IRF-left-2到IRF-last的带宽为1,则IRF-last加入左分支时的第一可用带宽为:
Weight-left-min=MIN(Weight-left-1/N,Weight-left-2/(N-1)...Weight-left-N)
=MIN(3/3,2/2,1/1)=1。
假设将最后一个堆叠设备加入右分支时,IRF-right-2到IRF-last的带宽为1,则IRF-last加入右分支时的第二可用带宽为:
Weight-right-min=MIN(Weight-right-1/N,Weight-right-2/(N-1)...Weight-right-N)
=MIN(2/3,2/2,1/1)=0.66。
由于第一可用带宽大于第二可用带宽,因此,将最后一个堆叠设备加入左分支,最终生成的转发树如图8所示。
通过以上描述可以看出,在本发明实施例中,当IRF系统中的堆叠设备的数量为偶数时,对任一堆叠设备,在生成以该堆叠设备为根节点的转发树的过程中,分别确定最后一个堆叠设备加入到转发树的左分支和右分支时,该堆叠设备的可用带宽,并将该堆叠设备可用带宽较大的情况对应的转发树确定为最终的转发树,优化了IRF系统中转发树的生成,提高了IRF系统中IRF口带宽利用的均衡性和合理性。
基于上述方法实施例系统的发明构思,本发明实施例还提供了一种转发树生成装置,可以应用于上述方法实施例。
如图9所示,为本发明实施例提供的一种转发树生成装置的结构示意图,可以包括:
确定模块91,用于当所述IRF系统中堆叠设备的数目为偶数时,对于以任一堆叠设备为根节点的转发树,分别确定将最后一个堆叠设备加入该转发树的左分支和右分支时,该堆叠设备的第一可用带宽和第二可用带宽;
生成模块92,用于当第一可用带宽大于第二可用带宽时,将该堆叠设备加入该转发树的左分支;当第一可用带宽小于第二可用带宽时,将该堆叠设备加入该转发树的右分支。
在上述转发树生成装置中,生成模块92还可以还用于,当所述第一可用带宽等于所述第二可用带宽时,随机将该堆叠设备加入该转发树的左分支或右分支。
在上述转发树生成装置中,确定模块91可以具体用于,通过以下方式确定将最后一个堆叠设备加入该转发树的左分支时,该堆叠设备的第一可用带宽:
Weight-left-min=MIN(Weight-left-1/N,Weight-left-2/(N-1)...Weight-left-N)
其中,所述Weight-left-min为第一可用带宽,Weight-left-i为转发树左分支中第i个堆叠设备到第i+1个堆叠设备的带宽,1≤i≤N,N为该转发树左分支中除根节点之外的堆叠设备的总数,根节点为该转发树左分支中的第1个堆叠设备。
在上述转发树生成装置中,确定模块91可以具体用于,通过以下方式确定将最后一个堆叠设备加入该转发树的右分支时,该堆叠设备的第二可用带宽:
Weight-right-min=MIN(Weight-right-1/N,Weight-right-2/(N-1)...Weight-right-N)
其中,所述Weight-right-min为第二可用带宽,Weight-right-i为转发树右分支中第i个堆叠设备到第i+1个堆叠设备的带宽,1≤i≤N,N为该转发树右分支中除根节点之外的堆叠设备的总数,根节点为该转发树右分支中的第1个堆叠设备。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。