一种组播转发表项维护方法和设备的制作方法

文档序号:7795761阅读:179来源:国知局
一种组播转发表项维护方法和设备的制作方法
【专利摘要】本发明公开了一种组播转发表项维护方法和设备,该方法包括:BEB设备获得所有BEB设备上配置的ISID,并将配置在相同BEB设备上的ISID划分到同一个ISID组;其中,每个ISID组对应有一个出端口列表;BEB设备遍历各个组播源节点上配置的各个ISID,判断当前遍历的ISID所属ISID组是否处理完成,若是,则遍历下一ISID,否则,获得当前遍历的ISID所对应的指定端口,记录在当前遍历的ISID所属ISID组的出端口列表中,并标记当前遍历的ISID所属ISID组为处理完成;BEB设备将各个出端口列表中记录的指定端口添加到对应ISID组内的所有ISID的组播转发表项中。本发明实施例中,可以提升组播转发表项的维护速度。
【专利说明】一种组播转发表项维护方法和设备
【技术领域】
[0001]本发明涉及通信【技术领域】,尤其涉及一种组播转发表项维护方法和设备。
【背景技术】
[0002]MAC-1n-MAC 协议又称为 PBB (Provider Backbone Bridge,运营商骨干网桥)协议,它通过MAC (Media Access Control,媒体访问控制)地址嵌套,将用户MAC地址封装在运营商MAC地址中,从而对不同用户业务进行隔离。进一步的,采用MAC-1n-MAC协议的SPB(Shortest Path Bridging,最短路径桥)网络称为 SPBM (Shortest Path Bridging MACMode,MAC-1n-MAC模式的最短路径桥)网络,如图1所示,为SPBM网络的组网示意图,其骨干网络主要包括BEB (Backbone Edge Bridge,骨干网边缘网桥)设备、BCB (Backbone CoreBridge ,骨干网核心网桥)设备以及之间的骨干链路。
[0003]在SPBM网络中,组播转发有头端复制和核心复制等两种模式,针对每个ISID(Backbone Service Instance Identifier,骨干网服务实例编号,一个服务实例代表一类业务或者用户,且ISID是该服务实例的唯一编号),当BEB设备上被配置头端复制时,该BEB设备不需要维护组播转发表项,当BEB设备上被配置核心复制时,该BEB设备需要维护组播转发表项。
[0004]现有技术中,为了维护组播转发表项,SPBM网络中的每个BEB设备均需要保存本BEB设备配置的所有ISID,且SPBM网络中配置相同ISID的BEB设备组成一条该ISID对应的BEB设备链表,不同ISID将对应不同的BEB设备链表。当BEB设备上被配置核心复制时,该BEB设备称为组播源节点,且该BEB设备需要维护组播转发表项,该组播转发表项的出端口称为指定端口。
[0005]现有技术中,BEB设备上的组播转发表项的维护方式包括以下步骤:
[0006]步骤1、BEB设备判断当前是否有未处理的组播源节点;如果是,则遍历一个未处理的组播源节点,之后执行步骤2 ;如果否,则结束流程。
[0007]步骤2、BEB设备判断该组播源节点配置的所有ISID中是否有未处理的ISID ;如果是,遍历一个未处理的ISID,执行步骤3 ;如果否,执行步骤I。
[0008]步骤3、如果该ISID对应的T标记位被置位,则表示该组播源节点在该ISID下被配置核心复制,BEB设备获取该ISID对应的BEB设备链表,之后执行步骤4。如果该ISID对应的T标记位未被置位,则表示该组播源节点在该ISID下没有被配置核心复制,需要执行步骤2,以获取下一个ISID。
[0009]步骤4、BEB设备依次遍历BEB设备链表上除本BEB设备之外的其它BEB设备,如果其它BEB设备配置的该ISID对应的R标记位被置位,则表示该其它BEB设备需要接收该ISID 的流量,BEB 设备根据该 ISID对应的B_VLAN(Backbone Virtual Local Area Network,骨干网虚拟局域网)获取对应的ECT (Equal Cost Tree,等价树)算法,再根据该ECT算法查找本BEB设备到该其它BEB设备的指定端口,如果该指定端口有效,且该指定端口没有下发过,则在组播转发表项中下发该指定端口 ;否则,继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备,之后返回步骤2。
[0010]在上述过程中,针对每个组播源节点,BEB设备均需要遍历组播源节点配置的所有ISID,并针对每个ISID进行处理(即步骤3和步骤4);当组播源节点上配置的ISID的数量很多时,计算工作量很大,且计算时间非常耗时。

【发明内容】

[0011]本发明实施例提供一种组播转发表项维护方法和设备,以提升组播转发表项的维护速度,并可以加速SPBM网络的收敛性能。
[0012]为达到上述目的,本发明实施例提供一种组播转发表项维护方法,应用于包括多个骨干网边缘网桥BEB设备的最短路径桥SPB网络中,该方法包括:
[0013]步骤A、BEB设备获得所述SPB网络中所有BEB设备上配置的骨干网服务实例编号ISID,并将配置在相同BEB设备上的ISID划分到同一个ISID组;其中,每个ISID组对应有一个出端口列表;
[0014]步骤B、所述BEB设备遍历各个组播源节点上配置的各个ISID,判断当前遍历的ISID所属ISID组是否处理完成,若是,则遍历下一 ISID,否则,获得当前遍历的ISID所对应的指定端口,记录在当前遍历的ISID所属ISID组的出端口列表中,并标记当前遍历的ISID所属ISID组为处理完成;
[0015]步骤C、所述BEB设备将各个出端口列表中记录的指定端口添加到对应ISID组内的所有ISID的组播转发表项中。
[0016]所述步骤B包括以下步骤:步骤B1、所述BEB设备判断是否有未遍历过的组播源节点;如果是,则遍历一个未遍历过的组播源节点,执行步骤B2 ;如果否,则执行步骤C ;步骤B2、所述BEB设备判断该组播源节点配置的ISID中是否有未遍历过的ISID ;如果是,遍历一个未遍历过的ISID,执行步骤B3 ;如果否,执行步骤BI ;步骤B3、所述BEB设备确定该ISID对应的ISID组,并判断该ISID组是否已经标记为处理完成;如果否,执行步骤B4 ;如果是,执行步骤B2 ;步骤B4、所述BEB设备获取该ISID对应的指定端口,并在该ISID对应的ISID组所对应的出端口列表下记录所述指定端口,并标记该ISID对应的ISID组所对应的ISID组为处理完成;之后,返回所述步骤B2。
[0017]所述BEB设备将配置在相同BEB设备上的ISID划分到同一个ISID组的过程,具体包括:所述BEB设备遍历各BEB设备上配置的所有ISID中的每个ISID,并利用所有配置该ISID的BEB设备的系统标识计算该ISID的源值;
[0018]所述BEB设备将源值相同的ISID划分到同一个ISID组中。
[0019]所述步骤B之前还包括:
[0020]所述BEB设备判断任意出端口列表中是否记录有指定端口 ;如果有一个出端口列表或者多个出端口列表中记录有指定端口,则所述BEB设备为所有出端口列表中记录的指定端口标记delete标识;
[0021]在所述步骤B4中,所述BEB设备获取ISID对应的指定端口后,如果该ISID对应的ISID组所对应的出端口列表下已经记录所述指定端口,则为所述指定端口清除delete标识;如果该ISID对应的ISID组所对应的出端口列表下没有记录所述指定端口,则在该ISID对应的ISID组所对应的出端口列表下记录所述指定端口,并为所述指定端口标记add标识;
[0022]在步骤C中,如果出端口列表中记录的指定端口标记为add标识,则将该指定端口添加到所述出端口列表对应的ISID组内所有ISID的组播转发表项中;如果该指定端口标记为delete标识,从所述出端口列表对应的ISID组内所有ISID的组播转发表项中删除该指定端口。
[0023]所述获得当前遍历的ISID所对应的指定端口,具体包括:
[0024]在该ISID对应的T标记位被置位时,所述BEB设备获取该ISID对应的BEB设备链表;其中配置相同ISID的BEB设备组成该ISID对应的BEB设备链表;
[0025]所述BEB设备依次遍历所述BEB设备链表上除本BEB设备以外的其它BEB设备,如果该其它BEB设备配置的该ISID对应的R标记位被置位,则查找本BEB设备到该其它BEB设备的端口 ;如果查找到的端口有效,则将该端口作为该ISID对应的指定端口,之后继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备;如果查找到的端口无效,则丢弃查找到的端口,之后继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备。
[0026]所述方法进一步包括:
[0027]当SPB网络中有BEB设备上配置的ISID发生变化时,所述BEB设备为发生变化的ISID划分ISID组,确定变化前的ISID组对应的出端口列表中记录的指定端口,并确定变化后的ISID组对应的出端口列表中记录的指定端口 ;
[0028]所述BEB设备比较所述变化前的ISID组对应的出端口列表中记录的指定端口以及所述变化后的ISID组对应的出端口列表中记录的指定端口 ;
[0029]当有指定端口记录在所述变化前的ISID组对应的出端口列表中,但没有记录在所述变化后的ISID组对应的出端口列表中时,所述BEB设备从所述发生变化的ISID的组播转发表项中删除所述指定端口;
[0030]当有指定端口记录在所述变化后的ISID组对应的出端口列表中,但没有记录在所述变化前的ISID组对应的出端口列表中时,所述BEB设备在所述发生变化的ISID的组播转发表项中添加所述指定端口。
[0031]本发明实施例提供一种骨干网边缘网桥BEB设备,应用于包括多个BEB设备的最短路径桥SPB网络中,所述BEB设备具体包括:
[0032]分组模块,用于获得所述SPB网络中所有BEB设备上配置的骨干网服务实例编号ISID,并将配置在相同BEB设备上的ISID划分到同一个ISID组;其中,每个ISID组对应有一个出端口列表;
[0033]端口获得模块,用于遍历各个组播源节点上配置的各个ISID,判断当前遍历的ISID所属ISID组是否已处理完成,若是,则遍历下一 ISID,否则,获得当前遍历的ISID所对应的指定端口,记录在当前遍历的ISID所属ISID组的出端口列表中,并标记当前遍历的ISID所属ISID组为处理完成;
[0034]端口下发模块,用于将各个出端口列表中记录的指定端口添加到对应ISID组内的所有ISID的组播转发表项中。[0035]所述端口获得模块包括:
[0036]第一遍历子模块,用于判断是否有未遍历过的组播源节点;如果是,则遍历一个未遍历过的组播源节点,并触发第二遍历子模块;否则,触发所述端口下发模块;
[0037]第二遍历子模块,用于判断当前遍历到的组播源节点配置的ISID中是否有未遍历过的ISID ;如果是,则遍历一个未遍历过的ISID,并触发第一处理子模块;否则,触发所述第一遍历子模块;
[0038]第一处理子模块,用于确定当前遍历到的ISID所对应的ISID组,并判断该ISID组是否已经标记为处理完成;如果否,则触发第二处理子模块;如果是,则触发所述第二遍历子模块;
[0039]第二处理子模块,用于获取该ISID对应的指定端口,并在该ISID对应的ISID组所对应的出端口列表下记录所述指定端口,并标记该ISID对应的ISID组所对应的ISID组标识为处理完成;之后,触发所述第二遍历子模块。
[0040]所述分组模块,具体用于遍历各BEB设备上配置的所有ISID中的每个ISID,并利用所有配置该ISID的BEB设备的系统标识计算该ISID的源值;
[0041]以及,将源值相同的ISID划分到同一个ISID组中。
[0042]所述端口获得模块还包括:
[0043]第三处理子模块,用于在执行所述步骤B之前,判断任意出端口列表中是否记录有指定端口 ;如果有一个出端口列表或者多个出端口列表中记录有指定端口,则为所有出端口列表中记录的指定端口标记delete标识;
[0044]所述第二处理子模块在获取ISID对应的指定端口之后,如果该ISID对应的ISID组所对应的出端口列表下已经记录所述指定端口,则为所述指定端口清除delete标识;如果该ISID对应的ISID组所对应的出端口列表下没有记录所述指定端口,则在该ISID对应的ISID组所对应的出端口列表下记录所述指定端口,并为所述指定端口标记add标识;
[0045]所述端口下发模块在将各个出端口列表中记录的指定端口添加到组播转发表项时,针对出端口列表中记录的指定端口,如果该指定端口标记为add标识,则将该指定端口添加到所述出端口列表对应的ISID组内所有ISID的组播转发表项中;如果该指定端口标记为delete标识,从所述出端口列表对应的ISID组内所有ISID的组播转发表项中删除该指定端口。
[0046]所述第二处理子模块在获取该ISID对应的指定端口的过程中,在该ISID对应的T标记位被置位时,获取该ISID对应的BEB设备链表;其中配置相同ISID的BEB设备组成该ISID对应的BEB设备链表;
[0047]依次遍历所述BEB设备链表上除本BEB设备以外的其它BEB设备,如果该其它BEB设备配置的该ISID对应的R标记位被置位,则查找本BEB设备到该其它BEB设备的端口 ;如果查找到的端口有效,则将该端口作为该ISID对应的指定端口,之后继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备;如果查找到的端口无效,则丢弃查找到的端口,之后继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备。
[0048]所述分组模块,还用于在SPB网络中有BEB设备上配置的ISID发生变化时,为发生变化的ISID划分ISID组;
[0049]所述端口下发模块,还用于确定变化前的ISID组对应的出端口列表中记录的指定端口,并确定变化后的ISID组对应的出端口列表中记录的指定端口 ;
[0050]比较所述变化前的ISID组对应的出端口列表中记录的指定端口以及所述变化后的ISID组对应的出端口列表中记录的指定端口 ;当有指定端口记录在所述变化前的ISID组对应的出端口列表中,但没有记录在所述变化后的ISID组对应的出端口列表中时,从所述发生变化的ISID的组播转发表项中删除所述指定端口 ;当有指定端口记录在所述变化后的ISID组对应的出端口列表中,但没有记录在所述变化前的ISID组对应的出端口列表中时,在所述发生变化的ISID的组播转发表项中添加所述指定端口。
[0051]与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,通过将配置在相同BEB设备上的ISID划分到同一 ISID组中,针对ISID组内的各个ISID,可以只针对一个ISID进行获取指定端口的处理,而ISID组内的其它ISID,不再需要进行获取指定端口的处理,从而达到提升组播计算速度的效果,提升组播转发表项的维护速度,并加速SPBM网络的收敛性能。
【专利附图】

【附图说明】
[0052]图1是现有技术中提出的SPBM网络的示意图;
[0053]图2是本发明实施例中提出的应用场景示意图;
[0054]图3是本发明实施例提供的一种组播转发表项维护方法流程示意图;
[0055]图4是本发明实施例提供的一种BEB设备的结构示意图。
【具体实施方式】
[0056]本发明实施例提供一种组播转发表项维护方法(也称为组播转发表项的剪枝计算过程),应用于包括多个BEB设备的SPB网络(如SPBM网络)中。为了维护组播转发表项,SPBM网络中的每个BEB设备下均需要保存本BEB设备配置的所有ISID,且SPBM网络中配置相同ISID的BEB设备组成一条该ISID对应的BEB设备链表,不同ISID将对应不同的BEB设备链表。其中,当BEB设备上被配置核心复制时,该BEB设备称为组播源节点,且该BEB设备需要维护组播转发表项,该组播转发表项的出端口称为指定端口。
[0057]以图2为本发明实施例的应用场景示意图,SPBM网络中至少包括BEB设备C、BEB设备D、BEB设备L和BEB设备K,本发明实施例中以针对上述四个BEB设备的处理为例进行说明。BEB设备C上保存本BEB设备配置的所有ISID (即ISID2-1SID6),BEB设备D上保存本BEB设备配置的所有ISID (即ISIDU ISID2、ISID4和ISID5),BEB设备L上保存本BEB设备配置的所有ISID (即ISID1-1SID6),BEB设备K上保存本BEB设备配置的所有ISIDCBP ISID2-1SID6)。针对 ISID1,配置 ISIDl 的 BEB 设备 D 和 BEB 设备 L 组成该 ISIDl对应的BEB设备链表;针对ISID2,配置ISID2的BEB设备C、BEB设备D、BEB设备L和BEB设备K组成该ISID2对应的BEB设备链表;针对ISID3,配置ISID3的BEB设备C、BEB设备L和BEB设备K组成该ISID3对应的BEB设备链表;针对ISID4,配置ISID4的BEB设备C、BEB设备D、BEB设备L和BEB设备K组成该ISID4对应的BEB设备链表;针对ISID5,配置ISID5的BEB设备C、BEB设备D、BEB设备L和BEB设备K组成该ISID5对应的BEB设备链表;针对ISID6,配置ISID6的BEB设备C、BEB设备L和BEB设备K组成该ISID6对应的BEB设备链表。
[0058]本发明实施例中,每个BEB设备均需要获得SPBM网络中的所有BEB设备上配置的ISID,并将配置在相同BEB设备上的ISID划分到同一个ISID组。通过手工配置方式在每个BEB设备上配置SPBM网络中的所有BEB设备上分别配置的ISID。或者,由于SPBM网络中的每个BEB设备下均保存了本BEB设备配置的所有ISID,因此SPBM网络中的各个BEB设备之间可以通过报文交互的方式,将本BEB设备下配置的所有ISID通知给其它BEB设备,以使每个BEB设备获得SPBM网络中的所有BEB设备上分别配置的ISID。
[0059]在图2所示的应用场景下,BEB设备C、BEB设备D、BEB设备L以及BEB设备K上均可以获知如下配置信息=BEB设备C上配置有ISID2-1SID6,BEB设备D上配置有ISIDl、ISID2、ISID4 和 ISID5, BEB 设备 L 上配置有 ISID1-1SID6, BEB 设备 K 上配置有 ISID2-1SID6。进一步的,BEB设备C、BEB设备D、BEB设备L以及BEB设备K均需要将配置在相同BEB设备上的ISID划分到同一个ISID组。其中,由于ISIDl被配置在BEB设备D和BEB设备L上,ISID2、ISID4和ISID5均被配置在BEB设备C、BEB设备D、BEB设备L和BEB设备K上,ISID3和ISID6均被配置在BEB设备C、BEB设备L和BEB设备K上,因此,可以将ISIDl划分到一个ISID组,将ISID2、ISID4和ISID5划分到一个ISID组,将ISID3和ISID6划分到一个ISID组。
[0060]其中,BEB设备C、BEB设备D、BEB设备L以及BEB设备K的处理相同,为了方便描述,后续以BEB设备C的处理为例进行说明。
[0061]为了将配置在相同BEB设备上的ISID划分到同一个ISID组,在一种具体实现方式中,BEB设备遍历各BEB设备上配置的所有ISID中的每个ISID,并利用所有配置该ISID的BEB设备的系统标识(system-1d)计算该ISID的源值;之后,BEB设备将源值相同的ISID划分到同一个ISID组中。具体的,在计算该ISID的源值的过程中,BEB设备将该ISID的所有系统标识进行排序,并按照顺序以连续内存保存;在排序保存之后,BEB设备基于该内存块进行MD5计算,以得到该ISID的16字节的源值,该计算过程在此不再赘述。
[0062]进一步的,BEB设备将配置在相同BEB设备上的ISID划分到同一个ISID组之后,该BEB设备还需要为每个ISID组配置一个ISID组标识(Group-1d)和一个out-port-list(出端口列表);其中,不同的ISID组对应有不同的ISID组标识和出端口列表;此外,BEB设备还可以按照ISID组标识对所有ISID组进行排序,并记录各ISID所在的ISID组的ISID组标识和出端口列表。
[0063]以BEB设备C的处理为例进行说明,由于ISIDl被配置在BEB设备D和BEB设备L上,ISID2、ISID4和ISID5均被配置在BEB设备C、BEB设备D、BEB设备L和BEB设备K上,ISID3和ISID6均被配置在BEB设备C、BEB设备L和BEB设备K上,因此,BEB设备C将 ISIDl 划分至Ij ISID 组 1,将 ISID2、ISID4 和 ISID5 划分到 ISID 组 2,将 ISID3 和 ISID6划分到ISID组3。进一步的,ISID组I对应的ISID组标识为1,ISID组I对应的出端口列表为出端口列表I ;ISID组2对应的ISID组标识为2,ISID组2对应的出端口列表为出端口列表2 ;ISID组3对应的ISID组标识为3,ISID组3对应的出端口列表为出端口列表
3。此外,BEB设备C记录ISIDl所在的ISID组的ISID组标识和出端口列表分别为I和出端口列表1,并记录ISID2、4、5所在的ISID组的ISID组标识和出端口列表分别为2和出端口列表2,并记录ISID3、6所在的ISID组的ISID组标识和出端口列表分别为3和出端口列表3。
[0064]基于上述ISID组的划分以及图2所示的应用场景,BEB设备在需要生成组播转发表项时,如图3所示,该组播转发表项维护方法可以包括以下步骤:
[0065]步骤301,BEB设备遍历各个组播源节点上配置的各个ISID,判断当前遍历的ISID所属ISID组是否处理完成,若是,则遍历下一 ISID,否则,获得当前遍历的ISID所对应的指定端口,记录在当前遍历的ISID所属ISID组的出端口列表中,并标记当前遍历的ISID所属ISID组为处理完成。
[0066]步骤302,BEB设备将各个出端口列表中记录的指定端口添加到对应ISID组内的所有ISID的组播转发表项中。其中,针对步骤301,BEB设备在遍历完所有组播源节点上配置的所有ISID之后,执行本步骤302。
[0067]在本发明实施例的一种优选实施方式中,步骤301具体包括以下步骤:
[0068]步骤1、BEB设备判断是否有未遍历过的组播源节点;如果是,则遍历一个未遍历过的组播源节点,并执行步骤2 ;如果否,则执行步骤302。
[0069]本发明实施例中,需要依次遍历每个组播源节点进行处理(即执行后续步骤的处理),当组播源节点已经执行过后续步骤的处理时,该组播源节点为遍历过的组播源节点,当组播源节点未执行过后续步骤的处理时,该组播源节点为未遍历过的组播源节点。以组播源节点为BEB设备C、BEB设备D、BEB设备L和BEB设备K为例,BEB设备C在第一次遍历组播源节点时,从BEB设备C、BEB设备D、BEB设备L和BEB设备K中任意遍历一个BEB设备C,当按照后续流程完成对BEB设备C的处理后,再次执行本步骤时,BEB设备C从BEB设备D、BEB设备L和BEB设备K中任意遍历一个BEB设备D,以此类推,再次执行本步骤时,BEB设备C从BEB设备L和BEB设备K中任意遍历一个BEB设备L,再次执行本步骤时,BEB设备C从BEB设备K中遍历BEB设备K,再次执行本步骤时,判断结果为否,执行步骤302。
[0070]步骤2,BEB设备判断该组播源节点(即当前遍历到的组播源节点)配置的所有ISID中是否有未遍历过的ISID ;如果是,则遍历一个未遍历过的ISID,并执行步骤3,以对该ISID进行决策计算;如果否,则标记该组播源节点为已处理,并执行步骤I。
[0071]本发明实施例中,需要依次遍历组播源节点配置的所有ISID,并针对每个ISID进行处理(即执行后续步骤的处理),当ISID已经执行过后续步骤的处理时,该ISID为遍历过的ISID,当ISID未执行过后续步骤的处理时,该ISID为未遍历过的ISID。以当前遍历到的组播源节点为BEB设备L为例,BEB设备C在第一次遍历BEB设备L配置的所有ISID时,从ISID1-1SID6中任意遍历一个ISID1,当按照后续流程完成对ISIDl的处理后,再次执行本步骤时,BEB设备C从ISID2-1SID6中任意遍历一个ISID2,以此类推,再次执行本步骤时,BEB设备C从ISID3-1SID6中任意遍历一个ISID3,再次执行本步骤时,BEB设备C从ISID4-1SID6中任意遍历一个ISID4,再次执行本步骤时,BEB设备C从ISID5-1SID6中任意遍历一个ISID5,再次执行本步骤时,BEB设备C从ISID6中遍历ISID6,再次执行本步骤时,判断结果为否,执行步骤I。
[0072]步骤3,BEB设备确定该ISID (即当前遍历到的ISID)对应的ISID组,并判断该ISID对应的ISID组是否已经标记为处理完成(该处理完成标记可以为剪枝完成标记);如果否,执行步骤4 ;如果是,执行步骤2。[0073]在一种优选实施方式中,BEB设备还可以判断该ISID (即当前遍历到的ISID)对应的T标记位(ISID对应的T标记位由用户手工配置)是否被置位,如果T标记位被置位,则表示相应的BEB设备(即当前遍历到的组播源节点)在该ISID下被配置核心复制,BEB设备确定该ISID对应的ISID组标识,并判断该ISID对应的ISID组标识是否已经标记为处理完成,即执行步骤3 ;如果T标记位没有被置位,则不需要执行步骤3,直接返回步骤2。
[0074]步骤4,BEB设备获取该ISID (即当前遍历到的ISID)对应的指定端口(具体获取过程在后续步骤中阐述),并在该ISID对应的ISID组所配置的出端口列表下记录该指定端口,并标记该ISID对应的ISID组所配置的ISID组标识为处理完成(具体可以标记为剪枝完成);步骤4之后,返回步骤2。
[0075]以步骤I中遍历到的组播源节点为BEB设备L为例,假设步骤2中第一次遍历到的ISID为ISIDl,步骤3中,BEB设备C确定该ISIDl对应的ISID组标识为1,且该ISIDl对应的ISID组标识I未标记为处理完成,此时,BEB设备C获取该ISIDl对应的指定端口,并在该ISIDl对应的ISID组I所配置的出端口列表I下记录该指定端口,并标记该ISIDl对应的ISID组I所配置的ISID组标识I为处理完成。假设步骤2中第二次遍历到的ISID为ISID2,步骤3中,BEB设备C确定该ISID2对应的ISID组标识为2,且该ISID2对应的ISID组标识2未标记为处理完成,此时,BEB设备C获取该ISID2对应的指定端口,并在该ISID2对应的ISID组2所配置的出端口列表2下记录该指定端口,并标记该ISID2对应的ISID组2所配置的ISID组标识2为处理完成。假设步骤2中第三次遍历到的ISID为ISID3,步骤3中,BEB设备C确定该ISID3对应的ISID组标识为3,且该ISID3对应的ISID组标识3未标记为处理完成,此时,BEB设备C获取该ISID3对应的指定端口,并在该ISID3对应的ISID组3所配置的出端口列表3下记录该指定端口,并标记该ISID3对应的ISID组3所配置的ISID组标识3为处理完成。假设步骤2中第四次遍历到的ISID为ISID4,步骤3中,BEB设备C确定该ISID4对应的ISID组标识为2,且该ISID2对应的ISID组标识2已经标记为处理完成,此时,BEB设备C直接执行步骤2。假设步骤2中第五次遍历到的ISID为ISID5,步骤3中,BEB设备C确定该ISID5对应的ISID组标识为2,且该ISID5对应的ISID组标识2已经标记为处理完成,此时,BEB设备C直接执行步骤2。假设步骤2中第六次遍历到的ISID为ISID6,步骤3中,BEB设备C确定该ISID6对应的ISID组标识为3,且该ISID6对应的ISID组标识3已经标记为处理完成,此时,BEB设备C直接执行步骤2。
[0076]针对上述步骤302,BEB设备遍历所有的出端口列表,并将出端口列表中记录的指定端口添加到该出端口列表对应的ISID组内所有ISID的组播转发表项中。如图2所示,BEB设备C将出端口列表I中记录的指定端口添加到ISID组I内的ISIDl的组播转发表项,并将出端口列表2中记录的指定端口分别添加到ISID组2内的ISID2、ISID4和ISID5的组播转发表项,并将出端口列表3中记录的指定端口分别添加到ISID组3内的ISID3和ISID6的组播转发表项。
[0077]本发明实施例中,在执行上述步骤I之前,BEB设备还需要判断任意出端口列表中是否记录有指定端口。如果否,即所有的出端口列表中均没有记录指定端口,则说明当前为第一次生成组播转发表项,即之前没有执行过上述步骤的处理,此时组播转发表项为空。如果是,即有一个出端口列表或者多个出端口列表中记录有指定端口,则说明当前不是第一次生成组播转发表项,即之前已经执行过上述步骤的处理,此时组播转发表项不为空。[0078]本发明实施例中,BEB设备在判断任意出端口列表中是否记录有指定端口之后,如果当前不是第一次生成组播转发表项,即组播转发表项不为空,且出端口列表中有记录指定端口,基于此过程,在步骤I之前,BEB设备还需要为所有出端口列表中记录的指定端口标记delete (删除)标识。
[0079]在此情况下(即当前不是第一次生成组播转发表项,出端口列表中的指定端口有delete标识),步骤4中,BEB设备获取ISID对应的指定端口后,如果该ISID对应的ISID组所配置的出端口列表下已经记录该指定端口,BEB设备为该指定端口清除delete标识;如果该ISID对应的ISID组所配置的出端口列表下没有记录该指定端口,BEB设备在该ISID对应的ISID组所配置的出端口列表下记录该指定端口,并为该指定端口标记add (添加)标识。
[0080]进一步的,在步骤302中,BEB设备针对出端口列表中记录的每个指定端口,如果该指定端口标记为add标识,则BEB设备将该指定端口添加到该出端口列表对应的ISID组内所有ISID的组播转发表项中;如果该指定端口标记为delete标识,则BEB设备从该出端口列表对应的ISID组内所有ISID的组播转发表项中删除该指定端口 ;如果该指定端口没有标记add标识和delete标识,则BEB设备不需要在ISID的组播转发表项更新该指定端□。
[0081]上述步骤4中,BEB设备获取ISID (即当前遍历到的ISID)对应的指定端口的过程,在一种优选实施方式中,该过程具体包括:如果该ISID对应的T标记位(ISID对应的T标记位由用户手工配置)未被置位,则表示相应的BEB设备(即当前遍历到的组播源节点)在该ISID下没有被配置核心复制,继续获取下一个ISID。如果该ISID对应的T标记位被置位,则表示相应的BEB设备在该ISID下被配置核心复制,BEB设备获取该ISID对应的BEB设备链表,并依次遍历该BEB设备链表上除本BEB设备以外的其它BEB设备;如果该其它BEB设备配置的该ISID对应的R标记位(ISID对应的R标记位由用户手工配置)被置位,则表示该其它BEB设备需要接收该ISID的流量,此时查找本BEB设备到该其它BEB设备的端口(BEB设备根据该ISID对应的B-VLAN获取对应的ECT算法,再根据ECT算法查找本BEB设备到该其它BEB设备的指定端口),且该端口为该ISID对应的指定端口。如果查找到的端口有效,则将该端口作为该ISID对应的指定端口,之后继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备;如果查找到的端口无效,则说明该端口不是该ISID对应的指定端口,丢弃该查找到的无效端口,之后继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备。
[0082]假设所有ISID (即ISID-1SID6)对应的T标记位和R标记位均被置位,以下结合图2所示的应用场景对上述过程进行进一步的说明。
[0083]步骤4中,BEB设备C获取ISIDl对应的指定端口,并在ISIDl对应的ISID组I所配置的出端口列表I下记录该指定端口。在获取ISIDl对应的指定端口时,ISIDl对应的BEB设备链表为BEB设备D和BEB设备L。BEB设备C遍历该BEB设备链表上的BEB设备D,并查找本BEB设备C到该BEB设备D的端口,该查找过程不再赘述。其中,如果查找到的端口是步骤I中遍历到的组播源节点到当前遍历到的BEB设备链表中的BEB设备的下游端口(即两个BEB设备的路径之间经过的端口),则说明查找到的端口有效,否则,说明查找到的端口无效。基于此,由于BEB设备C到该BEB设备D的端口是BEB设备L到BEB设备D的下游端口,因此当前查找到的端口有效,将当前查找到的端口作为ISIDl对应的指定端口。之后,BEB设备C遍历该BEB设备链表上的BEB设备L,并查找本BEB设备C到该BEB设备L的端口,该查找过程不再赘述。由于BEB设备C到该BEB设备L的端口不是BEB设备L到BEB设备L的下游端口,因此当前查找到的端口无效。
[0084]BEB设备C获取ISID2对应的指定端口,并在ISID2对应的ISID组2所配置的出端口列表2下记录该指定端口。在获取ISID2对应的指定端口时,ISID2对应的BEB设备链表为BEB设备C、BEB设备D、BEB设备L和BEB设备K。BEB设备C遍历该BEB设备链表上除本BEB设备C以外的BEB设备D,并查找本BEB设备C到该BEB设备D的端口,该查找过程不再赘述。由于BEB设备C到该BEB设备D的端口是BEB设备L到BEB设备D的下游端口,因此当前查找到的端口有效,将当前查找到的端口作为ISID2对应的指定端口。之后,BEB设备C遍历该BEB设备链表上除本BEB设备C以外的BEB设备L,并查找本BEB设备C到该BEB设备L的端口,该查找过程不再赘述。由于BEB设备C到该BEB设备L的端口不是BEB设备L到BEB设备L的下游端口,因此当前查找到的端口无效。之后,BEB设备C遍历该BEB设备链表上除本BEB设备C以外的BEB设备K,并查找本BEB设备C到该BEB设备K的端口,该查找过程不再赘述。由于BEB设备C到该BEB设备K的端口是BEB设备L到BEB设备K的下游端口,因此当前查找到的端口有效,将当前查找到的端口作为ISID2对应的指定端口。
[0085]BEB设备C获取ISID3对应的指定端口,并在ISID3对应的ISID组3所配置的出端口列表3下记录该指定端口。BEB设备C在获取ISID3对应的指定端口时,ISID3对应的BEB设备链表为BEB设备C、BEB设备L和BEB设备K。BEB设备C遍历该BEB设备链表上除本BEB设备C以外的BEB设备L,并查找本BEB设备C到该BEB设备L的端口,该查找过程不再赘述。由于BEB设备C到该BEB设备L的端口不是BEB设备L到BEB设备L的下游端口,因此当前查找到的端口无效。之后,BEB设备C遍历该BEB设备链表上除本BEB设备C以外的BEB设备K,并查找本BEB设备C到该BEB设备K的端口,该查找过程不再赘述。由于BEB设备C到该BEB设备K的端口是BEB设备L到BEB设备K的下游端口,因此当前查找到的端口有效,将当前查找到的端口作为ISID3对应的指定端口。
[0086]针对ISID4、ISID5和ISID6,由于步骤3的判断结果为是,因此不会执行步骤4,即BEB设备不需要执行获取ISID4、ISID5和ISID6对应的指定端口的过程,从而显著的降低需要获取指定端口的ISID的数量。
[0087]本发明实施例中,当SPBM网络中有BEB设备上配置的ISID发生变化(如BEB设备上配置了新的ISID和/或BEB设备上删除了之前已经配置的ISID)时,BEB设备需要为发生变化的ISID (即新配置的ISID和/或删除的ISID)重新划分ISID组,并确定变化前的ISID组(即该ISID在发生变化之前对应的ISID组)对应的出端口列表中记录的指定端口,并确定变化后的ISID组(即该ISID在发生变化之后对应的ISID组)对应的出端口列表中记录的指定端口 ;之后,BEB设备比较变化前的ISID组对应的出端口列表中记录的指定端口以及变化后的ISID组对应的出端口列表中记录的指定端口 ;当有指定端口记录在变化前的ISID组对应的出端口列表中,但是没有记录在变化后的ISID组对应的出端口列表中时,BEB设备从发生变化的ISID的组播转发表项中删除该指定端口 ;当有指定端口记录在变化后的ISID组对应的出端口列表中,但是没有记录在变化前的ISID组对应的出端口列表中时,BEB设备在发生变化的ISID的组播转发表项中添加该指定端口。
[0088]假设变化前的ISID组为group-old,变化后的ISID组为group-new,如果在ISID发生变化之前已经存在group-new,贝U直接确定group-new对应的出端口列表中记录的指定端口 ;如果在ISID发生变化之前不存在group-new,贝U重新计算group-new对应的出端口列表中记录的指定端口。通过比较group-old对应的出端口列表中记录的指定端口以及group-new对应的出端口列表中记录的指定端口 ;当有指定端口记录在group-old对应的出端口列表中,但是没有记录在group-new对应的出端口列表中,则从发生变化的ISID的组播转发表项中删除该指定端口 ;当有指定端口记录在group-new对应的出端口列表中,但是没有记录在group-old对应的出端口列表中,则在发生变化的ISID的组播转发表项中添加该指定端口。
[0089]在图2所示的应用场景下,假设BEB设备D上配置的ISID发生变化,即在BEB设备D上配置ISID6,BEB设备D上配置有ISID1、2、4、5、6,此时BEB设备C需要为发生变化的ISID6重新划分ISID组。在发生变化之前,ISID6在ISID组3内;在发生变化之后,由于ISID6被配置在BEB设备C、BEB设备D、BEB设备L和BEB设备K上,且ISID组2内的ISID2、ISID4和ISID5均被配置在BEB设备C、BEB设备D、BEB设备L和BEB设备K上,因此BEB设备C将ISID6划分到ISID组3。基于此,ISID组I内包含ISID1,ISID组2内包含 ISID2、ISID4、ISID5 和 ISID6, ISID 组 3 内包含 ISID3。
[0090]针对ISID6,变化前的ISID组为ISID组3,变化后的ISID组为ISID组2(在ISID6发生变化之前已经存在该ISID组2)。BEB设备C确定变化前的ISID组3对应的出端口列表3中记录的指定端口,并确定变化后的ISID组2对应的出端口列表2中记录的指定端口,并比较出端口列表3中记录的指定端口以及出端口列表2中记录的指定端口 ;当有指定端口记录在出端口列表3中,但是没有记录在出端口列表2中时,BEB设备C从ISID6的组播转发表项中删除该指定端口 ;当有指定端口记录在出端口列表2中,但是没有记录在出端口列表3中时,BEB设备C在ISID6的组播转发表项中添加该指定端口。
[0091]综上所述,本发明实施例中,通过将配置在相同BEB设备上的ISID划分到同一ISID组中,针对ISID组内的各个ISID,可以只针对一个ISID进行获取指定端口的处理,而ISID组内的其它ISID,不再需要进行获取指定端口的处理,从而达到提升组播计算速度的效果,提升组播转发表项的维护速度,并加速SPBM网络的收敛性能。例如,在图2所示的应用场景下,当遍历到的组播源节点为BEB设备C时,现有技术中,需要针对ISID2-1SID6分别进行处理,即处理5个ISID,而本发明实施例中,只需要处理ISID2 (ISID4和ISID5与ISID2在同一 ISID组,步骤3的判断结果为是)和ISID3 (ISID6与ISID3在同一 ISID组,步骤3的判断结果为是),即处理2个ISID。同理,针对BEB设备D、BEB设备L、BEB设备K等其它组播源节点,处理的ISID的数量也显著少于现有技术,从而可以加速SPBM网络的收敛性能。
[0092]基于与上述方法同样的发明构思,本发明实施例中还提供了一种骨干网边缘网桥BEB设备,该BEB设备应用于包括多个BEB设备的最短路径桥SPB网络中,如图4所以,所述BEB设备具体包括:
[0093]分组模块11,用于获得所述SPB网络中所有BEB设备上配置的骨干网服务实例编号ISID,并将配置在相同BEB设备上的ISID划分到同一个ISID组;其中,每个ISID组对应有一个出端口列表;
[0094]端口获得模块12,用于遍历各个组播源节点上配置的各个ISID,判断当前遍历的ISID所属ISID组是否已处理完成,若是,则遍历下一 ISID,否则,获得当前遍历的ISID所对应的指定端口,记录在当前遍历的ISID所属ISID组的出端口列表中,并标记当前遍历的ISID所属ISID组为处理完成;
[0095]端口下发模块13,用于将各个出端口列表中记录的指定端口添加到对应ISID组内的所有ISID的组播转发表项中。
[0096]所述端口获得模块12具体包括:第一遍历子模块,用于判断是否有未遍历过的组播源节点;如果是,则遍历一个未遍历过的组播源节点,并触发第二遍历子模块;否则,触发所述端口下发模块13;
[0097]第二遍历子模块,用于判断当前遍历到的组播源节点配置的ISID中是否有未遍历过的ISID ;如果是,则遍历一个未遍历过的ISID,并触发第一处理子模块;否则,触发所述第一遍历子模块;
[0098]第一处理子模块,用于确定当前遍历到的ISID所对应的ISID组,并判断该ISID组是否已经标记为处理完成;如果否,则触发第二处理子模块;如果是,则触发所述第二遍历子模块;
[0099]第二处理子模块,用于获取该ISID对应的指定端口,并在该ISID对应的ISID组所对应的出端口列表下记录所述指定端口,并标记该ISID对应的ISID组所对应的ISID组标识为处理完成;之后,触发所述第二遍历子模块。
[0100]所述分组模块11,具体用于遍历各BEB设备上配置的所有ISID中的每个ISID,并利用所有配置该ISID的BEB设备的系统标识计算该ISID的源值;
[0101]以及,将源值相同的ISID划分到同一个ISID组中。
[0102]所述端口获得模块12还包括:
[0103]第三处理子模块,用于在执行所述步骤B之前,判断任意出端口列表中是否记录有指定端口 ;如果有一个出端口列表或者多个出端口列表中记录有指定端口,则为所有出端口列表中记录的指定端口标记delete标识;
[0104]所述第二处理子模块在获取ISID对应的指定端口之后,如果该ISID对应的ISID组所对应的出端口列表下已经记录所述指定端口,则为所述指定端口清除delete标识;如果该ISID对应的ISID组所对应的出端口列表下没有记录所述指定端口,则在该ISID对应的ISID组所对应的出端口列表下记录所述指定端口,并为所述指定端口标记add标识;
[0105]所述端口下发模块13在将各个出端口列表中记录的指定端口添加到组播转发表项时,针对出端口列表中记录的指定端口,如果该指定端口标记为add标识,则将该指定端口添加到所述出端口列表对应的ISID组内所有ISID的组播转发表项中;如果该指定端口标记为delete标识,从所述出端口列表对应的ISID组内所有ISID的组播转发表项中删除该指定端口。
[0106]所述第二处理子模块在获取该ISID对应的指定端口的过程中,在该ISID对应的T标记位被置位时,获取该ISID对应的BEB设备链表;其中配置相同ISID的BEB设备组成该ISID对应的BEB设备链表;[0107]依次遍历所述BEB设备链表上除本BEB设备以外的其它BEB设备,如果该其它BEB设备配置的该ISID对应的R标记位被置位,则查找本BEB设备到该其它BEB设备的端口 ;如果查找到的端口有效,则将该端口作为该ISID对应的指定端口,之后继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备;如果查找到的端口无效,则丢弃查找到的端口,之后继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备。
[0108]所述分组模块11,还用于在SPB网络中有BEB设备上配置的ISID发生变化时,为发生变化的ISID划分ISID组;
[0109]所述端口下发模块13,还用于确定变化前的ISID组对应的出端口列表中记录的指定端口,并确定变化后的ISID组对应的出端口列表中记录的指定端口 ;比较所述变化前的ISID组对应的出端口列表中记录的指定端口以及所述变化后的ISID组对应的出端口列表中记录的指定端口 ;当有指定端口记录在所述变化前的ISID组对应的出端口列表中,但没有记录在所述变化后的ISID组对应的出端口列表中时,从所述发生变化的ISID的组播转发表项中删除所述指定端口 ;当有指定端口记录在所述变化后的ISID组对应的出端口列表中,但没有记录在所述变化前的ISID组对应的出端口列表中时,在所述发生变化的ISID的组播转发表项中添加所述指定端口。
[0110]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0111]本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0112]本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0113]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0114]以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
【权利要求】
1.一种组播转发表项维护方法,应用于包括多个骨干网边缘网桥BEB设备的最短路径桥SPB网络中,其特征在于,所述方法包括以下步骤: 步骤A、BEB设备获得所述SPB网络中所有BEB设备上配置的骨干网服务实例编号ISID,并将配置在相同BEB设备上的ISID划分到同一个ISID组;其中,每个ISID组对应有一个出端口列表; 步骤B、所述BEB设备遍历各个组播源节点上配置的各个ISID,判断当前遍历的ISID所属ISID组是否处理完成,若是,则遍历下一 ISID,否则,获得当前遍历的ISID所对应的指定端口,记录在当前遍历的ISID所属ISID组的出端口列表中,并标记当前遍历的ISID所属ISID组为处理完成; 步骤C、所述BEB设备将各个出端口列表中记录的指定端口添加到对应ISID组内的所有ISID的组播转发表项中。
2.如权利要求1所述的方法,其特征在于,所述步骤B包括以下步骤: 步骤B1、所述BEB设备判断是否有未遍历过的组播源节点;如果是,则遍历一个未遍历过的组播源节点,执行步骤B2 ;如果否,则执行步骤C ; 步骤B2、所述BEB设备判断该组播源节点配置的ISID中是否有未遍历过的ISID ;如果是,遍历一个未遍历过的ISID,执行步骤B3 ;如果否,执行步骤BI ; 步骤B3、所述BEB设备确定该ISID对应的ISID组,并判断该ISID组是否已经标记为处理完成;如果否,执行步骤B4 ;如果是,执行步骤B2 ; 步骤B4、所述BEB设备获取该ISID对应的指定端口,并在该ISID对应的ISID组所对应的出端口列表下记录所述指定端口,并标记该ISID对应的ISID组所对应的ISID组为处理完成;之后,返回所述步骤B2。
3.如权利要求1所述的方法,其特征在于,所述BEB设备将配置在相同BEB设备上的ISID划分到同一个ISID组的过程,具体包括: 所述BEB设备遍历各BEB设备上配置的所有ISID中的每个ISID,并利用所有配置该ISID的BEB设备的系统标识计算该ISID的源值; 所述BEB设备将源值相同的ISID划分到同一个ISID组中。
4.如权利要求2所述的方法,其特征在于,所述步骤B之前还包括: 所述BEB设备判断任意出端口列表中是否记录有指定端口 ;如果有一个出端口列表或者多个出端口列表中记录有指定端口,则所述BEB设备为所有出端口列表中记录的指定端口标记delete标识; 在所述步骤B4中,所述BEB设备获取ISID对应的指定端口后,如果该ISID对应的ISID组所对应的出端口列表下已经记录所述指定端口,则为所述指定端口清除delete标识;如果该ISID对应的ISID组所对应的出端口列表下没有记录所述指定端口,则在该ISID对应的ISID组所对应的出端口列表下记录所述指定端口,并为所述指定端口标记add标识; 在步骤C中,如果出端口列表中记录的指定端口标记为add标识,则将该指定端口添加到所述出端口列表对应的ISID组内所有ISID的组播转发表项中;如果该指定端口标记为delete标识,从所述出端口列表对应的ISID组内所有ISID的 组播转发表项中删除该指定端口。
5.如权利要求2或4所述的方法,其特征在于,所述获得当前遍历的ISID所对应的指定端口,具体包括: 在该ISID对应的T标记位被置位时,所述BEB设备获取该ISID对应的BEB设备链表;其中配置相同ISID的BEB设备组成该ISID对应的BEB设备链表; 所述BEB设备依次遍历所述BEB设备链表上除本BEB设备以外的其它BEB设备,如果该其它BEB设备配置的该ISID对应的R标记位被置位,则查找本BEB设备到该其它BEB设备的端口 ;如果查找到的端口有效,则将该端口作为该ISID对应的指定端口,之后继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备;如果查找到的端口无效,则丢弃查找到的端口,之后继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备。
6.如权利要求1所述的方法,其特征在于,所述方法进一步包括: 当SPB网络中有BEB设备上配置的ISID发生变化时,所述BEB设备为发生变化的ISID划分ISID组,确定变化前的ISID组对应的出端口列表中记录的指定端口,并确定变化后的ISID组对应的出端口列表中记录的指定端口 ; 所述BEB设备比较所述变化前的ISID组对应的出端口列表中记录的指定端口以及所述变化后的ISID组对应的出端口列表中记录的指定端口 ; 当有指定端口记录在所述变化前的ISID组对应的出端口列表中,但没有记录在所述变化后的ISID组对应的出端口列表中时,所述BEB设备从所述发生变化的ISID的组播转发表项中删除所述指定 端口; 当有指定端口记录在所述变化后的ISID组对应的出端口列表中,但没有记录在所述变化前的ISID组对应的出端口列表中时,所述BEB设备在所述发生变化的ISID的组播转发表项中添加所述指定端口。
7.一种骨干网边缘网桥BEB设备,应用于包括多个BEB设备的最短路径桥SPB网络中,其特征在于,所述BEB设备具体包括: 分组模块,用于获得所述SPB网络中所有BEB设备上配置的骨干网服务实例编号ISID,并将配置在相同BEB设备上的ISID划分到同一个ISID组;其中,每个ISID组对应有一个出端口列表; 端口获得模块,用于遍历各个组播源节点上配置的各个ISID,判断当前遍历的ISID所属ISID组是否已处理完成,若是,则遍历下一 ISID,否则,获得当前遍历的ISID所对应的指定端口,记录在当前遍历的ISID所属ISID组的出端口列表中,并标记当前遍历的ISID所属ISID组为处理完成; 端口下发模块,用于将各个出端口列表中记录的指定端口添加到对应ISID组内的所有ISID的组播转发表项中。
8.如权利要求7所述的BEB设备,其特征在于,所述端口获得模块包括: 第一遍历子模块,用于判断是否有未遍历过的组播源节点;如果是,则遍历一个未遍历过的组播源节点,并触发第二遍历子模块;否则,触发所述端口下发模块; 第二遍历子模块,用于判断当前遍历到的组播源节点配置的ISID中是否有未遍历过的ISID ;如果是,则遍历一个未遍历过的ISID,并触发第一处理子模块;否则,触发所述第一遍历子模块;第一处理子模块,用于确定当前遍历到的ISID所对应的ISID组,并判断该ISID组是否已经标记为处理完成;如果否,则触发第二处理子模块;如果是,则触发所述第二遍历子模块; 第二处理子模块,用于获取该ISID对应的指定端口,并在该ISID对应的ISID组所对应的出端口列表下记录所述指定端口,并标记该ISID对应的ISID组所对应的ISID组标识为处理完成;之后,触发所述第二遍历子模块。
9.如权利要求7所述的BEB设备,其特征在于, 所述分组模块,具体用于遍历各BEB设备上配置的所有ISID中的每个ISID,并利用所有配置该ISID的BEB设备的系统标识计算该ISID的源值; 以及,将源值相同的ISID划分到同一个ISID组中。
10.如权利要求8所述的BEB设备,其特征在于,所述端口获得模块还包括: 第三处理子模块,用于在执行所述步骤B之前,判断任意出端口列表中是否记录有指定端口;如果有一个出端口列表或者多个出端口列表中记录有指定端口,则为所有出端口列表中记录的指定端口标记delete标识; 所述第二处理子模块在获取ISID对应的指定端口之后,如果该ISID对应的ISID组所对应的出端口列表下已经记录所述指定端口,则为所述指定端口清除delete标识;如果该ISID对应的ISID组所对应的出端口列表下没有记录所述指定端口,则在该ISID对应的ISID组所对应的出端口列表下记录所述指定端口,并为所述指定端口标记add标识; 所述端口下发模块在将各个出端口列表中记录的指定端口添加到组播转发表项时,针对出端口列表中记录的指定端口,如果该指定端口标记为add标识,则将该指定端口添加到所述出端口列表对应的ISID组内所有ISID的组播转发表项中;如果该指定端口标记为delete标识,从所述出端口列表对应的ISID组内所有ISID的组播转发表项中删除该指定端口。
11.如权利要求8或10所述的BEB设备,其特征在于, 所述第二处理子模块在获取该ISID对应的指定端口的过程中,在该ISID对应的T标记位被置位时,获取该ISID对应的BEB设备链表;其中配置相同ISID的BEB设备组成该ISID对应的BEB设备链表; 依次遍历所述BEB设备链表上除本BEB设备以外的其它BEB设备,如果该其它BEB设备配置的该ISID对应的R标记位被置位,则查找本BEB设备到该其它BEB设备的端口 ;如果查找到的端口有效,则将该端口作为该ISID对应的指定端口,之后继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备;如果查找到的端口无效,则丢弃查找到的端口,之后继续遍历BEB设备链表上除本BEB设备以外的下一个其它BEB设备,一直到遍历完BEB设备链表上除本BEB设备以外的其他所有BEB设备。
12.如权利要求7所述的BEB设备,其特征在于, 所述分组模块,还用于在SPB网络中有BEB设备上配置的ISID发生变化时,为发生变化的ISID划分ISID组; 所述端口下发模块,还用于确定变化前的ISID组对应的出端口列表中记录的指定端口,并确定变化后的ISID组对应的出端口列表中记录的指定端口 ;比较所述变化前的ISID组对应的出端口列表中记录的指定端口以及所述变化后的ISID组对应的出端口列表中记录的指定端口 ;当有指定端口记录在所述变化前的ISID组对应的出端口列表中,但没有记录在所述变化后的ISID组对应的出端口列表中时,从所述发生变化的ISID的组播转发表项中删除所述指定端口 ;当有指定端口记录在所述变化后的ISID组对应的出端口列表中,但没有记录在所述变化前的ISID组对应的出端口列表中时,在所述发生变化的ISID的组播转发表 项中添加所述指定端口。
【文档编号】H04L12/24GK103795567SQ201410028006
【公开日】2014年5月14日 申请日期:2014年1月21日 优先权日:2014年1月21日
【发明者】周万 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1