发明内容
有鉴于此,本发明的目的在于提供一种建立邻居关系时的hello报文发送方法,该方法能够减少建立邻居关系时Hello报文的发送数量。
为了达到上述目的,本发明提供了一种建立邻居关系时的hello报文发送方法,该方法包括:
接收到新的邻居路由桥RB发送的Hello报文时,如果定时器T已经启动,则将该Hello报文所属的虚拟局域网VLAN加入到该新的邻居RB对应的第一VLAN集合,如果定时器T未启动,则启动定时器T,并将该Hello报文所属的VLAN加入到该新的邻居RB对应的第一VLAN集合;
定时器T超时后,根据所有新的邻居RB对应的第一VLAN集合生成第二VLAN集合,在第二VLAN集合中的每个VLAN中发送Hello报文。
本发明还提供了一种路由桥RB设备,该RB设备包括:接收单元、控制单元、发送单元;
所述接收单元,用于接收新的邻居RB发送的Hello报文;
所述控制单元,用于在接收单元接收到新的邻居RB发送的Hello报文时,如果定时器T已经启动,则将该Hello报文所属的虚拟局域网VLAN加入到该新的邻居RB对应的第一VLAN集合,如果定时器T未启动,则启动定时器T,并将该Hello报文所属的VLAN加入到该新的邻居RB对应的第一VLAN集合;用于在定时器T超时后,根据所有新的邻居RB对应的第一VLAN集合生成第二VLAN集合;
所述发送单元,用于在控制单元根据所有新的邻居RB对应的第一VLAN集合生成第二VLAN集合后,在第二VLAN集合中的每个VLAN中发送Hello报文。
由上面的技术方案可知,本发明中,对于定时器T时间内接收到新的邻居RB发送的Hello报文,将该Hello报文所属的VLAN加入该新的邻居RB对应的第一VLAN集合;当定时器T超时后,根据所有新的邻居RB对应的第一VLAN集合进行处理,生成包含较少VLAN的第二VLAN集合,在第二VLAN集合中的每个VLAN中发送Hello报文,使得所有新的邻居RB均可以和当前RB建立邻居关系,并且减少了Hello报文的发送数量,进而,由于Hello报文的数量的减少,可以减少链路带宽消耗,并减少占用链路上各RB设备的CPU处理能力。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
参见图1,图1是本发明实施例建立邻居关系时的hello报文发送方法流程图,应用于TRILL网络中,该方法包括:
步骤101、接收到新的邻居路由桥RB发送的Hello报文时,如果定时器T已经启动,则将该Hello报文所属的虚拟局域网VLAN加入到该新的邻居RB对应的第一VLAN集合,如果定时器T未启动,则启动定时器T,并将该Hello报文所属的VLAN加入到该新的邻居RB对应的第一VLAN集合。
本步骤中,定时器T是预先定义的。在有新的邻居RB接入链路时,从首次接收到新的邻居RB发送的Hello报文时开始计时,并对定时器T超时前接收到的所有新的邻居RB发送的Hello报文进行VLAN记录,将接收到的每个新的邻居RB发送的Hello报文所属的VLAN记录到该邻居RB对应的第一VLAN集合中。
步骤102、定时器T超时后,根据所有新的邻居RB对应的第一VLAN集合生成第二VLAN集合,在第二VLAN集合中的每个VLAN中发送Hello报文。
本步骤中,所述根据所有新的邻居RB对应的第一VLAN集合生成第二VLAN集合的方法具体可以为:对所有新的邻居RB对应的第一VLAN集合中的VLAN进行统计,将出现次数最多的VLAN加入到第二VLAN集合,如果存在不包含第二VLAN集合中的任一VLAN的新的邻居RB对应的第一VLAN集合,则对不包含第二VLAN集合中的任一VLAN的所有新的邻居RB对应的第一VLAN集合中的VLAN再次进行统计;如果每个新的邻居RB对应的第一VLAN集合中与第二VLAN集合的交集均不为空,则VLAN统计结束。
在上述生成第二VLAN集合的方法中,在所有新的邻居RB对应的第一VLAN集合中统计出现次数最多的VLAN,假设为VLANx,则将VLANx加入到第二VLAN集合。这样,当在VLANx中回应Hello报文时,对于包含VLANx的每个第一VLAN集合关联的新的邻居RB均能接收到该回应的Hello报文,因此,当前RB只需在VLANx中回应一个Hello报文,包含VLANx的每个第一VLAN集合关联的新的邻居RB就能够建立与当前RB的邻居关系。
之后,对于已经可以在VLANx中建立与当前RB间的邻居关系的每个新的邻居RB,可以不再考虑该新的邻居RB对应的第一VLAN集合,只需对不能在VLANx中建立与当前RB间的邻居关系的新的RB对应的第一VLAN集合继续进行统计,也即:如果还存在新的邻居RB对应的第一VLAN集合中不包含VLANx,则可以继续在不包含VLANx的所有新的邻居RB对应的第一VLAN集合中再次统计出现次数最多的VLAN,假设为VLANy,则将该统计出的出现次数最多的VLANy加入到第二VLAN集合中。
之后,如果还存在新的邻居RB对应的第一VLAN集合中既不包含VLANx,又不包含VLANy,还可以继续在不包含VLANx和VLANy的所有新的邻居RB对应的第一VLAN集合中再次统计出现次数最多的VLAN,直到每个新的邻居RB对应的第一VLAN集合与第二VLAN集合的交集不为空。
这样,当前RB在第二VLAN集合中的每个VLAN中回应Hello报文时,每个新的邻居RB至少能够接收到当前RB在其中一个VLAN中回应的Hello报文,因而可以建立与当前RB的邻居关系。
另外,对所有新的邻居RB对应的第一VLAN集合中的VLAN进行统计之后,将出现次数最多的VLAN加入到第二VLAN集合之前,进一步包括:如果出现次数最多的VLAN只有一个,则将该出现次数最多的VLAN加入到第二VLAN集合,如果出现次数最多的VLAN有多个,则可以在多个出现次数最多的VLAN中选择一个加入到第二VLAN集合。这里,可以是选择其中最小的VLAN加入到第二VLAN集合,或可以选择其中最大的VLAN加入到第二VLAN集合,或随机选择其中一个VLAN加入到第二VLAN集合。
图1所示本发明实施例中,由于不再对接收到的每个新的邻居RB的Hello报文进行回应,而是在对定时器T时间内的多个新的RB发送的Hello报文所属的VLAN进行记录,并在定时器超时后进行统一处理,只在有限的几个VLAN中回应Hello报文,即可建立与每个新的邻居RB建立邻居关系,因此,可以减少当前RB回应Hello报文的数量,进而,可以减少链路上的带宽浪费,并能够减少当前RB的CPU处理能力的占用。
实际上,也可以采用其他方法生成第二VLAN集合。例如,可以先根据每个新的邻居RB对应的VLAN集合,统计出每个VLAN对应的新的邻居RB集合;然后,根据所有VLAN对应的新的邻居RB集合与其他VLAN对应的新的邻居RB集合的包含关系,将完全包含于其他VLAN对应的新的邻居RB集合删除,只保留不能完全被其他VLAN对应的新的邻居RB集合;最后,对保留的所有不能完全被其他VLAN对应的新的邻居RB集合,确定并集能够包含所有新的邻居RB的一个或多个VLAN对应的新的邻居RB集合,将该一个或多个VLAN加入到第二VLAN集合。
下面结合图2,对图1所示本发明实施例进行举例说明。
图2是TRILL网络的组网示意图,包括通过交换机SW1连接到同一链路上的路由桥RB1、RB2、RB3,另外,通过虚线连接到交换机SW1的路由桥RB4、RB5、RB6、RB7是将要加入到链路中的RB。
假设RB1、RB2、RB3上的使能VLAN均包括VLAN1到VLAN9;
假设RB4上的使能VLAN包括VLAN1、VLAN2、VLAN3、VLAN4;RB5上的使能VLAN包括VLAN3、VLAN4、VLAN5、VLAN6;RB6上的使能VLAN包括VLAN4、VLAN6、VLAN7、VLAN8;RB7上的使能VLAN包括:VLAN6、VLAN7、VLAN8、VLAN9。
按照图1所示本发明实施例,路由桥RB4、RB5、RB6、RB7同时加入RB1、RB2、RB3所在的链路后,与RB 1建立邻居关系的过程如下:
RB4分别在VLAN1、VLAN2、VLAN3、VLAN4中发送Hello报文;RB5分别在VLAN3、VLAN4、VLAN5、VLAN6中发送Hello报文;RB6分别在VLAN4、VLAN6、VLAN7、VLAN8中发送Hello报文;RB7分别在VLAN6、VLAN7、VLAN8、VLAN9中发送Hello报文;
假设RB 1先接收到RB4在VLAN1发送的Hello报文,判断发现定时器T未启动,因此,将定时器T启动,并将VLAN1加入到RB4对应的第一VLAN集合;
接着,假设RB 1又接收到了RB5在VLAN4中发送的Hello报文,判断发现定时器T已经启动,因此,直接将VLAN4加入到RB5对应的第一VLAN集合;
依次类推,RB 1接收到RB4分别在不同使能VLAN发送的Hello报文,并得到RB4对应的第一VLAN集合为{VLAN1、VLAN2、VLAN3、VLAN4};RB1接收到RB5分别在不同使能VLAN发送的Hello报文,并得到RB5对应的第一VLAN集合为{VLAN3、VLAN4、VLAN5、VLAN6};RB1接收到RB6分别在不同使能VLAN发送的Hello报文,并得到RB6对应的第一VLAN集合为{VLAN4、VLAN6、VLAN7、VLAN8};RB1接收到RB7分别在不同使能VLAN发送的Hello报文,并得到RB7对应的第一VLAN集合为{VLAN6、VLAN7、VLAN8、VLAN9};
假设RB 1分别得到RB4、RB5、RB6、RB7对应的第一VLAN集合后,定时器T超时,则RB 1开始根据RB4、RB5、RB6、RB7对应的第一VLAN集合生成第二VLAN集合的过程为:
首先统计VLAN1-VLAN9在RB4、RB5、RB6、RB7中的出现次数,确定VLAN4和VLAN6均出现3次,次数最多,因此,在VLAN4和VLAN6中选择一个加入到第二VLAN集合,假设选择将VLAN4加入到第二VLAN集合;
此时,只剩下RB7的第一VLAN集合中不包含VLAN4,因此,对RB7对应的第一VLAN集合中各VLAN的统计结果是:VLAN6、VLAN7、VLAN8、VLAN9均出现一次,因此,在VLAN6、VLAN7、VLAN8、VLAN9中选择一个加入到第二VLAN集合,假设选择将VLAN8加入到第二VLAN集合;
至此,得到第二VLAN集合为:{VLAN4,VLAN8},而且RB4、RB5、RB6、RB7对应的第一VLAN集合与第二VLAN集合的交集均不为空;
RB1根据RB4、RB5、RB6、RB7对应的第一VLAN集合生成第二VLAN集合后,在第二集合中的每个VLAN上发送Hello报文,这样,RB4、RB5、RB6可以接收到RB 1在VLAN4上发送的Hello报文,RB4、RB5、RB6分别与RB 1建立了邻居关系;RB7可以接收到RB1在VLAN8上发送的Hello报文,RB7与RB1建立了邻居关系。
上述过程中,RB1只需要分别在VLAN4和VLAN8上发送Hello报文,即可建立与新加入的邻居RB的邻居关系,与现有技术相比,减少了邻居关系建立时Hello报文的发送数量。另外,RB4、RB5、RB6、RB7分别于RB2、RB3建立邻居关系的过程与上述过程的原理相同,因此不再赘述。
另外,上述过程中,是假设RB1在接收完RB4、RB5、RB6、RB7发送的所有Hello报文后定时器T超时为例进行说明的。实际上,如果RB1只接收到RB4、RB5、RB6、RB7发送的部分Hello报文,或者,RB1只接收到其中一个RB发送的Hello报文后定时器T超时,则生成第二VLAN集合的过程与上述生成第二VLAN集合的原理也相同。但是,由于RB1未接收到所有的Hello报文,因此,RB4、RB5、RB6、RB7对应的第一VLAN集合中可能未包含各自的全部使能VLAN,因此,计算出的第二VLAN集合的结果可能会有很大的不同。则生成第二VLAN集合的过程与上述生成第二VLAN集合的原理也相同。
以上对本发明实施例建立邻居关系时的hello报文发送方法进行了详细说明,本发明还提供了一种路由桥,应用于TRILL网络中,该路由桥能够减少建立邻居关系时Hello报文的发送数量。
参见图3,图3是本发明实施例路由桥的结构示意图,该路由桥包括:接收单元301、控制单元302、发送单元303;其中,
接收单元301,用于接收新的邻居RB发送的Hello报文;
控制单元302,用于在接收单元301接收到新的邻居RB发送的Hello报文时,如果定时器T已经启动,则将该Hello报文所属的虚拟局域网VLAN加入到该新的邻居RB对应的第一VLAN集合,如果定时器T未启动,则启动定时器T,并将该Hello报文所属的VLAN加入到该新的邻居RB对应的第一VLAN集合;用于在定时器T超时后,根据所有新的邻居RB对应的第一VLAN集合生成第二VLAN集合;
发送单元303,用于在控制单元302根据所有新的邻居RB对应的第一VLAN集合生成第二VLAN集合后,在第二VLAN集合中的每个VLAN中发送Hello报文。
所述控制单元302在根据所有新的邻居RB对应的第一VLAN集合生成第二VLAN集合时,用于:对所有新的邻居RB对应的第一VLAN集合中的VLAN进行统计,将出现次数最多的VLAN加入到第二VLAN集合,如果存在不包含第二VLAN集合中的任一VLAN的新的邻居RB对应的第一VLAN集合,则对不包含第二VLAN集合中的任一VLAN的所有新的邻居RB对应的第一VLAN集合中的VLAN再次进行统计;如果每个新的邻居RB对应的第一VLAN集合中与第二VLAN集合的交集均不为空,则VLAN统计结束。
所述控制单元302在对所有新的邻居RB对应的第一VLAN集合中的VLAN进行统计之后,将出现次数最多的VLAN加入到第二VLAN集合之前,进一步用于:如果出现次数最多的VLAN只有一个,则将该出现次数最多的VLAN加入到第二VLAN集合,如果出现次数最多的VLAN有多个,则在多个出现次数最多的VLAN中选择一个加入到第二VLAN集合。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。