发明内容
有鉴于此,本发明的目的在于提供一种TRILL网络中指定VLAN转发者的选举方法,该方法能够提高TRILL网络的稳定性和转发效率。
为了达到上述目的,本发明提供了一种TRILL网络中指定VLAN转发者的选举方法,该方法包括:
当前路由桥RB向同一链路上的其他RB发送携带关联于当前RB的AVF信息的Hello报文;
当前RB接收到所述其他RB的Hello报文时,存储该Hello报文中携带的关联于所述其他RB的AVF信息;
当发生DRB切换时,如果当前RB被选举为DRB,则根据存储的关联于所述其他RB的AVF信息,保持关联于所述其他RB的AVF不变。
本发明还提供了一种该路由桥包括:收发单元、存储单元、分配单元;
所述收发单元,用于向同一链路上的其他RB发送携带关联于当前RB的AVF信息的Hello报文;用于接收所述其他RB的Hello报文,将该Hello报文中携带的关联于所述其他RB的AVF信息存储到存储单元;
所述分配单元,用于在发生DRB切换时,如果当前RB被选举为DRB,则根据存储单元中存储的关联于所述其他RB的AVF信息,保持关联于所述其他RB的AVF不变。
由上面的技术方案可知,本发明中,当前RB和同一链路上其他RB之间通过互相发送携带关联于自身的AVF信息的Hello报文,从而获知该链路上所有RB的AVF信息;当发生DRB切换时,任一RB被选举为DRB后,均可以根据存储的该链路上所有RB的AVF信息,继续保持该链路上所有RB的AVF不变,从而能够避免因AVF重新分配而导致的TRILL网络中大量广播报文的出现,因此,该方法能够提高TRILL网络的稳定性和转发效率。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚、明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
参见图2,图2是本发明实施例TRILL网络中指定VLAN转发者的选举方法流程图,包括以下步骤:
步骤201、当前RB向同一链路上的其他RB发送携带关联于当前RB的AVF信息的Hello报文;
这里,所述AVF信息包括该AVF关联的VLAN。
在TRILL网络中,Hello报文主要用于同一链路上的RB之间的信息交互。本实施例中,当前RB在向同一链路上的其他RB发送Hello报文时,可以在Hello报文中携带关联于自身的AVF信息,从而使该链路上的其他RB可以获知关联于当前RB的AVF。
以图1中RB0、RB1、RB2、RB3所在的同一链路为例,假设已经为VLAN100分配了AVF端口,该AVF端口为RB1上的RB端口,则RB1发送Hello报文到该链路上的RB0、RB2、RB3时,可以将AVF信息携带在Hello报文中,这样,RB0、RB2、RB3均可以获知该关联于RB1的AVF信息。
可以在Hello报文中增加一个Assigned-AVF Sub-TLV,使用TLV(TLV是一种编码格式,其中T代表Type、L代表Length、V代表value)格式,具体参见图3所示的本发明实施例Assigned-AVF Sub-TLV的格式示意图,其中,Type占用1个字节,Type值是AssignedAVF,表明该字段是Assigned-AVF字段;Length占用1个字节,具体值由后面的AVF信息占用的总长度确定;Value为具体的AVF信息,包括AVF Information 1到AVF Information N。
上述AVF信息的具体格式可以参见图4,图4是本发明实施例AVFInformation的格式示意图,包括保留字段RESV,开始(start)VLAN和结束(end)VLAN。
需要说明的是,上述使用Assigned-AVF Sub-TLV字段将AVF信息封装在Hello报文中的方法只是一个具体的例子,也可以使用其他格式进行AVF信息封装,本发明对此不作限制。
步骤202、当前RB接收到所述其他RB的Hello报文时,存储该Hello报文中携带的关联于所述其他RB的AVF信息;
这里,步骤201和步骤202前后顺序不受限制。
步骤203、当发生DRB切换时,如果当前RB被选举为DRB,则根据存储的关联于所述其他RB的AVF信息,保持关联于所述其他RB的AVF不变。
本步骤中,当发生DRB切换时,如果当前RB被选举为新的DRB,则由于在此之前,已经记录了关联于其他RB的AVF信息,因此,当前RB可以根据记录的关联于所述其他RB的AVF信息,仍然保持原有关联于其他RB的AVF不变。
仍以图1中RB0、RB1、RB2、RB3所在的同一链路为例为例,假设原来的DRB为RB0、发生DRB切换后,DRB为RB2。由于RB2已经根据RB1的Hello报文获知为VLAN100分配的关联于RB1的AVF,因此,仍可以保持为VLAN100分配的关联于RB1的AVF不变。同样的道理,在发生DRB切换后,各RB均可以保持原有关联的AVF不变,因此,不会发送拓扑变化的BPUD报文,进而,交换机SW1也不会删除MAC地址转发表项,不会因为需要重新进行MAC地址学习而导致大量广播报文的出现。由此可见,上述方法可以避免因DRB切换导致的AVF重新指定,从而可以避免因AVF重新指定导致的大量广播报文的出现,因此,能够提高TRILL网络转发报文的效率。
实际上,如果在同一链路中新接入了一个RBx,如果RBx支持的VLAN均是该链路中原有的RB上支持的VLAN,则不需要立刻分配关联于RBx的AVF。例如,该链路上所有RB支持的VLAN包括VLAN1到VLAN100,而新接入的RBx支持的VLAN20到VLAN50,则在接入RBx之前,由于已经为VLAN1到VLAN100中的每个VLAN分配了AVF,可以处理VLAN1到VLAN100中任一VLAN相关的数据报文,因此在接入RBx后,并不需要立刻分配关联于RBx的AVF。只有当该链路上其他的RB的负载过重,基于负载分担的考虑,才需要考虑分配关联于RBx的AVF进行负载分担。另外,由于新接入RBx时,RBx的接入状态可能不稳定,如果马上分配关联于RBx的AVF,可能会导致网络震荡。因此可以在RBx接入链路,且处于UP状态一段时间后,再考虑分配关联于RBx的AVF。
然而,如果在同一链路中新接入了一个RBx,如果RBx支持的VLAN中存在该链路中原有的RB上不支持的VLAN,则可以立刻为该VLAN分配关联于RBx的AVF。例如,RBx除了支持上述的VLAN20到VLAN50外,还支持VLAN200,由于在接入RBx前该链路上原有的RB均不支持VLAN200,也不会为VLAN200分配AVF,不能够处理VLAN200相关的数据报文,因此,可以立刻为VLAN200分配关联于RBx的AVF,用以处理VLAN200相关的数据报文。
由此可知,图2所示本发明实施例中,还可以进一步包括:当所述同一链路上接入新的RB后,如果当前RB为DRB,则判断该新接入的RB上是否存在不被该链路上任一其他RB支持的使能VLAN,若存在,则为该使能VLAN分配关联于该新接入的RB的AVF,若不存在,则等待第一预设时间后,分配关联于该新接入的RB的AVF。
另外,如果在同一链路中的RBx中新增加了一个VLANx,如果VLANx是该链路中的至少一个RB支持的VLAN,则DRB可以等待一段时间后,基于负载分担的考虑再确定是否需要为VLANx分配关联于RBx的AVF;如果VLANx是该链路中的所有RB均不支持的VLAN,则DRB可以立刻为VLANx分配关联于RBx的AVF。这主要是因为,如果VLANx是该链路中的RB原本就支持的VLAN,则在RBx中新增VLANx之前,已经为VLANx分配了AVF,可以处理VLANx相关的数据报文,在RBx中新增VLANx后,仍然可以使用原来分配的AVF进行VLANx相关的数据报文的收发。但是,如果VLANx是该链路中的所有RB均不支持的VLAN,则在RBx中新增VLANx之前,不会为VLANx分配AVF,也无法处理VLANx相关的数据报文,当在RBx中新增VLANx后,若需要处理VLANx相关的数据报文,则需要为VLANx分配关联于RBx的AVF。
因此,图2所述本发明实施例中,还可以进一步包括:当所述同一链路上任一RB上新增一个使能VLAN时,如果当前RB为DRB,则判断该新增的使能VLAN是否是不被该链路上的RB支持的使能VLAN,若是,则为该新增的使能VLAN分配关联于所述任一RB的AVF,若否,则等待至少第二预设时间后,为该新增的使能VLAN分配关联于所述任一RB的AVF。
此外,不同RB的使能VLAN配置变化情况也不相同,部分RB中使能VLAN配置不稳定,经常变化,部分RB中使能VLAN配置则比较稳定,变化较少,每个RB可以将自身的使能VLAN配置变化情况携带在Hello报文中,用以使同一链路的其他RB可以获知自身的VLAN配置变化情况,当某个使能VLAN发生AVF冲突时,也即:在至少两个RB上为该使能VLAN分配了AVF而导致的AVF冲突,可以为该使能VLAN分配关联于VLAN配置比较稳定的RB的AVF。
可以使用使能VLAN变化计数(EVCC)值表征RB的使能VLAN配置变化情况,这里,所述EVCC值可以是针对RB上的每个端口进行统计,该端口上每发生一次VLAN配置变化,就执行一次计数,当从该端口发送Hello报文到同一链路的其他RB时,可以将该EVCC值携带在Hello报文中作为该RB在该链路上对应的EVCC值。
所述记录该Hello报文中携带的关联于所述其他RB的AVF信息时,还可以进一步记录所述其他RB对应的EVCC值;
这样,该方法还可以进一步包括:如果当前RB为DRB,且接收到所述同一链路上至少两个其他RB发来的携带同一VLAN的AVF信息的Hello报文,则为该VLAN分配关联于EVCC值较小的RB的AVF。
上述在Hello报文中携带EVCC值的一种可能实现方法是扩展Hello报文中的Enabled-VLAN sub-TLV,将其中的value部分的初始四个字节作为分配给EVCC,具体如图5所示的本发明实施例Enable-VLAN2sub-TLV的格式示意图,其他字段的内容与现有技术相同,不再赘述。
以上对本发明实施例的方法进行了详细说明,本发明还提供了一种应用于TRILL网络中的RB。
参见图6,图6是本发明实施例RB的结构示意图,该RB包括:收发单元601、存储单元602、分配单元603;其中,
收发单元601,用于向同一链路上的其他RB发送携带关联于当前RB的AVF信息的Hello报文;用于接收所述其他RB的Hello报文,将该Hello报文中携带的关联于所述其他RB的AVF信息存储到存储单元602;
分配单元603,用于在发生DRB切换时,如果当前RB被选举为DRB,则根据存储单元602中存储的关联于所述其他RB的AVF信息,保持关联于所述其他RB的AVF不变。
所述分配单元603,进一步用于:当所述同一链路上接入新的RB后,如果当前RB为DRB,则判断该新接入的RB上是否存在不被该链路上任一其他RB支持的使能VLAN,若存在,则为该使能VLAN分配关联于该新接入的RB的AVF,若不存在,则等待至少第一预设时间后,分配关联于该新接入的RB的AVF。
所述分配单元603,进一步用于:当所述同一链路上任一RB上新增一个使能VLAN时,如果当前RB为DRB,则判断该新增的使能VLAN是否是不被该链路上的RB支持的使能VLAN,若是,则为该新增的使能VLAN分配关联于所述任一RB的AVF,若否,则等待至少第二预设时间后,为该新增的使能VLAN分配关联于所述任一RB的AVF。
所述Hello报文中还携带发送该Hello报文的RB的使能VLAN变化计数EVCC值;
所述收发单元601在将该Hello报文中携带的关联于所述其他RB的AVF信息存储到存储单元602时,进一步将该Hello报文中携带的所述其他RB对应的EVCC值存储到存储单元602;
所述分配单元603,进一步用于:如果当前RB为DRB,且收发单元接收到所述同一链路上至少两个其他RB发来的携带同一VLAN的AVF信息的Hello报文,则为该VLAN分配关联于EVCC值较小的RB的AVF。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。