组播树计算方法和装置
技术领域
本申请涉及通信领域,尤其涉及一种组播树计算方法和装置
背景技术
多链接透明互联(Transparent Interconnection of Lots of Links,TRILL)协议用于建立一个灵活的、可扩展、高性能的二层网络。在TRILL网络内部,运行TRILL协议的交换机设备称作路由桥(Route Bridge,RB),路由桥互相连接并建立邻居关系。
TRILL网络的数据转发包括单播和多播(组播、广播)。为了支持多播数据转发,TRILL网络中需要计算出N个组播树(N>=1)。组播树计算首先需要选举一个RB的昵称(Nickname)做为组播树树根,记为根RB;再计算出根RB到达网络中所有RB节点的最短路径。如果有N棵组播树,就要选取N个根RB。
当根RB到达其他RB存在M(M>1)条最短路径时,即其他RB到达根RB存在M个父节点RB时,则需要保留一条最短路径,即只保留一个父节点RB。可以使得在创建不同组播树时,父节点RB分担到不同组播树上,进而使得组播流量能够负载均衡,例如第一棵组播树选择RB1、第二棵组播树选择RB2。但是现有技术在同一棵组播树内部仍然存在多个RB连接至同一父节点RB,使得流量在同一棵组播树内没有做到负载均衡。
发明内容
本申请的实施例提供一种组播树计算方法和装置,用于实现组播树内负载均衡。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种组播树计算方法,包括:
针对每棵组播树,遍历网络中的各个路由桥RB,所述组播树包括根RB;
当所遍历的当前RB与所述根RB之间仅有一条最短路径时,将所述当前RB加入所述组播树,并增加所述当前RB的父节点RB的出口个数以及所述当前RB的出口个数;
当所述当前RB与所述组播树的根RB之间有N条等价最短路径时,将各个等价最短路径中的候选父节点RB按照出口个数排序,将出口个数最少的一个候选父节点RB作为所述当前RB的父节点RB,将所述当前RB加入所述组播树,并增加所述父节点RB的出口个数以及所述当前RB的出口个数,其中,N>1。
第二方面,提供了组播树计算装置,包括:
遍历单元,用于针对每棵组播树,遍历网络中的各个路由桥RB,所述组播树包括根RB;
计算单元,用于当所述遍历单元所遍历的当前RB与所述根RB之间仅有一条最短路径时,将所述当前RB加入所述组播树,并增加所述当前RB的父节点RB的出口个数以及所述当前RB的出口个数;
所述计算单元,还用于当所述当前RB与所述组播树的根RB之间有N条等价最短路径时,将各个等价最短路径中的候选父节点RB按照出口个数排序,将出口个数最少的一个候选父节点RB作为所述当前RB的父节点RB,将所述当前RB加入所述组播树,并增加所述父节点RB的出口个数以及所述当前RB的出口个数,其中,N>1。
本申请的实施例提供的组播树计算方法和装置,由于在针对每个组播树进行计算时,已经加入该组播树的RB出口数增加,相应的其权重降低,则在选择父节点RB时,优先考虑权重较高即出口数较少的RB,实现了每个组播树内部负载均衡。本申请实施例提供的组播树计算方法,能够将组播流量更加均匀的负载在整个TRILL网络,使得整个网络流量使用更为合理,避免单一网络节点称为性能瓶颈。具体原因在于,同一个RB节点上组播出口个数越多,占用的芯片硬件资源也就越多,能够支持的容量规格也就越小。整个TRILL网络所能承载的容量,受网络“瓶颈节点”限制。优化后的算法使得组播出口在网络节点上平均分布,可以减少“瓶颈节点”上的芯片资源的占用,提升TRILL网络的容量。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本申请的实施例提供的TRILL网络的结构示意图;
图2为本申请的实施例提供的组播数据转发示意图;
图3为本申请的实施例提供的组播树计算方法的流程示意图;
图4为本申请的实施例提供的生成的第一棵组播树的示意图;
图5为本申请的实施例提供的生成的第二棵组播树的示意图;
图6为本申请的实施例提供的组播树计算装置的结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
参照图1中所示,为本申请实施例提供的TRILL网络结构示意图,包括交换机设备,其中,RB11~RB13、RB21~RB24为运行TRILL协议的交换机设备,TRILL网络分为两层:RB21~RB24为接入层,RB11~RB13为汇聚层。用户终端31和32通过接入层RB接入TRILL网络,并通过TRILL网络实现互联。汇聚层RB,用于实现RB之间互联。同样地,RB11~RB13也可以接入用户终端(图中未示出)。
本申请实施例中用户终端发送的以太网数据帧,在TRILL网络的入口处会被封装为TRILL帧,然后以TRILL数据帧的形式在TRILL网络内部转发,执行TRILL帧封装的RB称为该以太帧的“入口RB”。TRILL数据帧在TRILL网络的出口处会被解封装为以太帧,再转发给用户终端,执行TRILL帧解封装的RB称为“出口RB”。
本申请实施例中的Nickname用于:在TRILL网络内进行数据转发时,将Nickname封装在TRILL帧头中,作为报文转发的源、目的标识。本申请实施例中的系统标识(SystemID),指每个RB都有一个唯一的系统ID,一般用于路由计算,系统标识的定义属于现有技术。本申请实施例中的TRILL组播树指:为实现组播、广播数据转发,每个RB都需要进行组播树计算,组播、广播报文沿着计算出的组播树进行转发。根据网络配置可以选择计算出1到N棵组播树,每颗组播树都会选择一个RB的Nickname作为树根;所有组播树都有固定编号,N棵组播树的编号分别为1~N。本申请实施例所述的最短路径指两个RB之间经过的RB数最少的路径。
示例性的,组播数据转发过程如下:
假设组播树树根为RB11,由用户终端31向用户终端32发送数据。参照图2中所示的粗箭头为数据转发流向。当用户终端31发送的报文到达RB21后,如果RB21没有学习到用户终端32的MAC地址,就会将报文封装为TRILL组播数据帧,其中入口RB为RB21、出口RB为组播树的树根RB11。TRILL组播数据帧会沿着组播树沿途进行复制转发,网络中所有RB都会收到一份TRILL组播数据帧,其中就包括用户终端32所连接的RB23。需要说明的是,无法根据出口RB来区分是TRILL单播数据帧还是TRILL组播数据帧,它们唯一的区别仅在于,TRILL封装头部有一个比特位,设置为1表示组播,0表示单播。
在执行本申请实施例的组播树计算方法之前,可通过静态配置的方式配置整个网络中需要计算的组播树以及配置各个组播树的根RB;也可通过动态方式确定整个网络中需要计算的组播树以及确定该各个组播树的根RB。
实施例1、
本申请实施例提供的了一种组播树计算方法,应用于上述TRILL网络,参照图3中所示,该方法包括:
S101、针对每棵组播树,遍历网络中的各个RB,该组播树包括根RB。
具体的,可以从根RB开始,先遍历根RB的所有邻居RBx,再依次遍历RBx的所有邻居RBy。组播树的根RB需要在执行本方法之前预先确定。
S102、当当前所遍历的RB与根RB之间仅有一条最短路径时,将当前RB加入组播树,并增加当前RB的父节点RB的出口个数以及当前RB的出口个数。
具体的,当前RB即为当前所遍历的RB。当前RB的父节点RB的出口个数增加的数目与当前RB的出口个数增加的数目应该相同,例如都增加1。由于最终需要通过出口个数作为权重对RB进行排序,所以可以保证各个RB之间是公平的。
示例性的,参照图2中所示,假设需要计算两棵组播树,第一棵组播树以RB11为根RB,第二棵组播树以RB12为根RB。
初始状态下网络中的各个RB的出口个数为0,首先依次遍历根RB(RB11)的邻居RBx(RB21~RB24)。
当遍历到RB21时,RB11到达RB21的最短路径只有一条,将RB21加入组播树。此时RB21的父节点RB为RB11,将RB11的出口个数以及RB21的出口个数均加1。则遍历结果为:RB11(1)、RB21(1)(括号内为对应RB的出口个数)。
类似地,RB22~RB24与RB11之间的最短路径均只有一条,当遍历到RB22时,遍历结果为:RB11(2)、RB21(1)、RB22(1)。当遍历到RB23时,遍历结果为:RB11(3)、RB21(1)、RB22(1)、RB23(1)。当遍历到RB24时,遍历结果为:RB11(4)、RB21(1)、RB22(1)、RB23(1)、RB24(1)。
通过该步骤即遍历了根RB的所有邻居RBx(RB21~RB24)。
S103、当当前RB与组播树的根RB之间有N条等价最短路径时,将各个等价最短路径中的候选父节点RB按照出口个数排序,将出口个数最少的一个候选父节点RB作为当前RB的父节点RB,将当前RB加入组播树,并增加父节点RB的出口个数以及当前RB的出口个数,其中,N>1。
遍历了根RB的所有邻居RBx(RB21~RB24)后,开始依次遍历RBx(RB21~RB24)的所有邻居RBy(RB12~RB13)。
候选父节点RB指根RB与当前RB的最短路径上的RB。当有N条最短路径时对应有N个候选父节点RB。示例性的,参照图2中所示,对于第一棵组播树,RB11与RB12之间RB12的候选父节点RB包括:RB21~RB24。
另外,针对可能存在有多个候选父节点RB出口个数最少并且相同的情况,可以从出口个数最少的候选父节点RB中随机选择一个候选父节点RB作为当前RB的父节点RB。或者,可以根据系统标识从出口个数最少的候选父节点RB中选择一个候选父节点RB作为当前RB的父节点RB。
具体的,可以将出口个数最少的候选父节点RB中系统标识最大或最小的RB作为当前RB的父节点RB。例如,针对上例,假设候选父节点RB的系统标识排序为RB21<RB22<RB23<RB24,则可以选择RB21或RB24作为RB12的父节点。
假设RB21作为RB12的父节点,将RB21的出口个数以及RB12的出口个数均加1。则遍历结果为:RB11(4)、RB21(2)、RB22(1)、RB23(1)、RB24(1)、RB12(1)。
类似的,遍历RB13时,可以选择RB22为父节点RB,则遍历结果为:RB11(4)、RB21(2)、RB22(2)、RB23(1)、RB24(1)、RB12(1)、RB13(1)。
最终计算得到的以RB11为根RB的组播树参照图4中所示。
第二棵组播树(根RB为RB12)计算过程重复步骤S101-S103如下:
基于第一棵组播树的遍历结果RB11(4)、RB21(2)、RB22(2)、RB23(1)、RB24(1)、RB12(1)、RB13(1),当以RB12为根RB时,RB12的出口个数为1。对应于步骤S101,先遍历根RB(RB12)的所有邻居RBx(RB21~RB24),再依次遍历RBx(RB21~RB24)的所有邻居RBy(RB11和RB13)。
对应于步骤S102,当遍历到RB21时,RB12到达RB21的最短路径只有一条,将RB21加入组播树。此时RB21的父节点为RB12,将RB12的出口个数以及RB21的出口个数均加1。则遍历结果为:RB11(4)、RB21(3)、RB22(2)、RB23(1)、RB24(1)、RB12(2)、RB13(1)。
类似地,RB22~RB24与RB12之间的最短路径均只有一条,当遍历到RB22时,遍历结果为:RB11(4)、RB21(3)、RB22(3)、RB23(1)、RB24(1)、RB12(3)、RB13(1)。当遍历到RB23时,遍历结果为:RB11(4)、RB21(3)、RB22(3)、RB23(2)、RB24(1)、RB12(4)、RB13(1)。当遍历到RB24时,遍历结果为:RB11(4)、RB21(3)、RB22(3)、RB23(2)、RB24(2)、RB12(5)、RB13(1)。
对应于步骤S103,当遍历到RB11时,RB12到达RB11的最短路径有4条,对应候选父节点RB为:RB23(2)、RB24(2)、RB21(3)、RB22(3)。因此选择RB23作为RB11的父节点RB,遍历结果为:RB11(5)、RB21(3)、RB22(3)、RB23(3)、RB24(2)、RB12(4)、RB13(1)。
当遍历到RB13时,RB12到达RB13的最短路径有4条,对应候选父节点RB为:RB24(2)、RB21(3)、RB22(3)、RB23(3)。因此选择RB24作为RB13的父节点RB,遍历结果为:RB11(5)、RB21(3)、RB22(3)、RB23(3)、RB24(3)、RB12(5)、RB13(2)。
最终计算得到的以RB12为根RB的组播树参照图5中所示。
本申请实施例提供的组播树计算方法,结合图4和图5,由于在针对每个组播树进行计算时,已经加入该组播树的RB出口数增加,相应的其权重降低,则在选择父节点RB时,优先考虑权重较高即出口数较少的RB,实现了每个组播树内部负载均衡。本申请实施例提供的组播树计算方法,能够将组播流量更加均匀的负载在整个TRILL网络,使得整个网络流量使用更为合理,避免单一网络节点称为性能瓶颈。具体原因在于,同一个RB节点上组播出口个数越多,占用的芯片硬件资源也就越多,能够支持的容量规格也就越小。整个TRILL网络所能承载的容量,受网络“瓶颈节点”限制。优化后的算法使得组播出口在网络节点上平均分布,可以减少“瓶颈节点”上的芯片资源的占用,提升TRILL网络的容量。
实施例2、
本申请实施例提供了一种组播树计算装置100,参照图6中所示,包括:
遍历单元101,用于针对每棵组播树,遍历网络中的各个路由桥RB,组播树包括根RB。
计算单元102,用于当遍历单元101当前所遍历的RB与根RB之间仅有一条最短路径时,将当前RB加入组播树,并增加当前RB的父节点RB的出口个数以及当前RB的出口个数。当前RB即为当前所遍历的RB。当前RB即为当前所遍历的RB。
计算单元102,还用于当当前RB与组播树的根RB之间有N条等价最短路径时,将各个等价最短路径中的候选父节点RB按照出口个数排序,将出口个数最少的一个候选父节点RB作为当前RB的父节点RB,将当前RB加入组播树,并增加父节点RB的出口个数以及当前RB的出口个数,其中,N>1。
在一种可能的设计中,计算单元102具体用于:如果有多个候选父节点RB的出口个数最少并且相同,则从出口个数最少的候选父节点RB中随机选择一个候选父节点RB作为当前RB的父节点RB。
在一种可能的设计中,计算单元102具体用于:如果有多个候选父节点RB的出口个数最少并且相同,则根据系统标识从出口个数最少的候选父节点RB中选择一个候选父节点RB作为当前RB的父节点RB。
在一种可能的设计中,计算单元102具体用于:将出口个数最少的候选父节点RB中系统标识最大或最小的RB作为当前RB的父节点RB。
在一种可能的设计中,父节点RB的出口个数增加的数目与当前RB的出口个数增加的数目相同。
由于本申请实施例中的组播树计算装置可以应用于上述方法,因此,其所能获得的技术效果也可参考上述方法实施例,本申请实施例在此不再赘述。
需要说明的是,遍历单元、计算单元可以为单独设立的处理器,也可以集成在控制器的某一个处理器中实现,此外,也可以以程序代码的形式存储于控制器的存储器中,由控制器的某一个处理器调用并执行以上各单元的功能。这里所述的处理器可以是一个中央处理器(Central Processing Unit,CPU),或者是特定集成电路(Application SpecificIntegrated Circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。