发明内容
有鉴于此,本申请提供一种多链接透明互联网络中组播路由表项更新方法和装置,在当前RB与组播树根之间的链路不可达时,能够快速重新计算有效的组播路由表项,保证多目的报文的正常转发。
为解决上述技术问题,本发明的技术方案是这样实现的:
一种多链接透明互联TRILL网络中组播路由表项更新方法,所述TRILL网络中任一组播树包括多个路由桥RB,所述方法包括:
任一所述RB检测到自身与所述组播树的组播树根之间的链路可达时,使用所述组播树根生成最短路径优先SPF树,遍历所述SPF树使用所述组播树根生成并更新组播路由表项;
所述RB检测到自身与所述组播树的组播树根之间的链路不可达时,生成所述组播树根对应的链路状态协议数据单元LSP清除报文,并发送到与自身链路可达的各RB,使所述各RB对该组播树根对应的LSP进行清除;
所述RB将本地链路状态数据库LSDB中所述组播树根对应的LSP清除,根据清除对应LSP后的LSDB生成一个可用的组播树根,使用该可用的组播树根生成SPF树,遍历该SPF树使用所述可用组播树根生成并更新组播路由表项。
一种装置,可应用于多链接透明互联TRILL网络中任一组播树中的任一路由桥RB,所述装置包括:检测单元、生成单元、清除单元和处理单元;
所述检测单元,用于检测本RB与所述组播树中的组播树根之间的链路是否可达;
所述生成单元,用于当所述检测单元检测到本RB与所述组播树的组播树根之间链路不可达时,生成该组播树根对应的链路协议数据单元LSP清除报文,并发送到与本RB链路可达的各RB,使所述各RB对该组播树根对应的LSP进行清除;
所述清除单元,用于当所述生成单元生成该组播树根对应的链路协议数据单元LSP清除报文时,将本地链路状态数据库LSDB中所述组播树根对应的LSP清除;
所述处理单元,用于当所述检测单元检测到本RB与所述组播树的组播树根之间链路可达时,使用所述组播树根生成SPF树,遍历所述SPF树使用所述组播树根生成并更新组播路由表项;当所述清除单元将本地链路状态数据库LSDB中所述组播树根对应的LSP清除时,根据清除对应LSP后的LSDB生成一个可用的组播树根,使用该可用的组播树根生成SPF树,遍历该SPF树使用所述可用组播树根生成并更新组播路由表项。
综上所述,本申请通过RB在检测到自身与组播树根之间的链路不可达时,快速清除原组播树根对应的LSP,并根据清除后的LSDB生成一个可用的组播树根,使用该组播树根生成SPF树和组播路由表项,在当前RB与组播树根之间的链路不可达时,能够快速重新计算有效的组播路由表项,保证多目的报文的正常转发。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明实施例中提出一种TRILL网络中组播路由表项更新方法,所述TRILL网络中任一组播树包括多个路由桥RB,所述任一RB更新组播路由表项的方法具体如下文所述,在组播树根断开时,能够快速重新计算有效的组播路由表项,保证多目的报文的正常转发。
参见图2,图2为本发明实施例中组播路由表项更新方法流程图。具体步骤为:
步骤201,任一RB检测自身与自身所在组播树的组播树根之间的链路是否可达。
步骤202,所述RB检测到自身与所述组播树的组播树根之间的链路可达时,使用所述组播树根生成SPF树,并遍历所述SPF树使用所述组播树根生成并更新组播路由表项。
步骤203,所述RB生成该组播树根对应的链路协议数据单元LSP清除报文,并发送到与自身链路可达的各RB,使所述各RB对该组播树根对应的LSP进行清除。
所述LSP清除报文使得所述各RB清除各自LSDB中该组播树根对应的LSP,进而根据清除后的LSDB生成可用的组播树根并重新生成组播路由表项。本步骤在具体实现时生成的所述组播树根对应的LSP清除报文可以为老化清除报文,只是将老化清除报文的生存时间设置为0,其他RB接收到生存时间为0的老化清除报文时,自动将各自LSDB中所述组播树根对应的LSP清除。
步骤204,所述RB将本地链路状态数据库(LSDB)中所述组播树根对应的LSP清除,根据清除对应LSP后的LSDB生成一个可用的组播树根,使用该可用的组播树根生成SPF树,遍历该SPF树使用所述可用组播树根生成并更新组播路由表项。
本步骤中在本地的LSDB中快速老化掉原组播树根对应的LSP,而不需等到一定的老化时间,如协议中的20分钟。并重新选举组播树根,生成有效的组播路由表项,能够保证多目的报文的正常转发。其中,根据清除对应LSP后的LSDB生成的可用的组播树根为与自身链路可达的,且作为组播树根的优先级最高的RB。
需要说明的是,上述步骤203和步骤204之间并无严格的顺序关系,即可以先执行步骤203再执行步骤204,或者先执行步骤204再执行步骤203。
该方法进一步包括:
接收到其他RB发送的所述组播树根对应的LSP清除报文时,确定本地LSDB中是否存在所述组播树根对应的LSP,如果是,将本地LSDB中所述组播树根对应的LSP清除,并根据清除对应LSP后的LSDB生成一个可用的组播树根,使用该可用的组播树根生成SPF树,遍历该SPF树使用所述可用组播树根生成并更新组播路由表项;否则,维持本地的组播路由表项。
本发明实施例在上述步骤201中,RB可以利用BFD(Bidirectional ForwardingDetection,双向转发检测)会话来检测自身与自身所在组播树的组播树根之间的链路是否可达,当然具体实现中并不局限于此,所有用于进行链路连通性检测的方式均在本发明的保护范围之内,如通过ARP(Address Resolution Protocol,地址解析协议)对链路进行故障检测等。本发明实施例中,还可以利用路由表项来进行上述链路检测,RB通过确定本地的单播路由表项中是否存在自身到所述组播树的组播树根的单播路由表项,来判断自身与所述组播树根之间的链路是否可达,此时上述步骤201具体可以包括以下步骤:
步骤A,任一所述RB使用自身作为单播树根生成SPF树,并遍历所述SPF树使用自身作为单播树根生成单播路由表项。
TRILL网络中的任意节点、链路的状态变化,都可能触发步骤A的执行。本步骤A中生成SPF树以及单播路由表项同现有实现,这里不再详细赘述。
步骤B,所述RB确定所述单播路由表项中是否存在自身到所述组播树的组播树根的单播路由表项,如果是,执行步骤C;否则,执行步骤D。
本步骤中所述RB在本地生成的单播路由表项中查找是否存在自身到所述组播树根的单播路由表项来确定自身到所述组播树根之间的链路是否可达,因为如果所述RB与所述组播树根之间的链路不可达时,无法计算出所述RB到所述组播树根的单播路由表项。
步骤C,所述RB确定自身与所述组播树根之间的链路可达。
本步骤中所述RB确定自身与所述组播树根之间的链路可达时,该方法进一步包括:所述RB使用所述组播树根生成SPF树,并遍历所述使用所述组播树根生成的SPF树使用所述组播树根生成组播路由表项。
步骤D,所述RB确定自身与所述组播树根之间的链路不可达。
本发明实施例在判断组播树根是否可达时,可以直接基于本地已生成的单播路由表项执行步骤A~D所述的判断。当然,本发明实施例也可以在判断组播树根是否可达时,首先执行上述步骤A以更新单播路由表项,然后再执行步骤B~D所述的判断。由上技术方案可见,本发明实施例在不需要增加任何交互报文的情况下,通过对生成的单播路由表项内容的检查,就能快速地确定当前RB同自身所在组播树的组播树根之间的链路是否可达。
下面参见附图,结合具体实施例详细说明本发明是如何实现组播路由表项更新的。
参见图3,图3为本发明具体实施例中TRILL网络的组网结构示意图。图3中假设默认使用RB1一个组播树根,RB1和RB2之间链路故障,以RB8检测到自身到RB 1链路不可达时如何进行组播路由表项更新为例。
当RB8和RB1链路可达时,生成SPF树和组播路由表项同现有实现,当RB2和RB1之间的链路down时,RB8检测到自身到RB 1的路径不可达时,生成RB1对应的LSP清除报文,发送给与RB8链路可达的RB2、RB4、RB5、RB8、RB9、RB10、RB14、RB15,使各RB在本地清除RB1对应的LSP,并根据清除后的LSP选择一个可用的组播树根,使用该树根生成SPF树,并遍历该SPF树使用所述可用组播树根生成并更新组播路由表项。
RB8在与其链路可达的RB中选择一个作为组播树根的优先级最高的RB作为可用组播树根重新生成SPF树以及组播路由表项。当RB2和RB1之间链路down时,与RB8链路可达的RB为RB2、RB4、RB5、RB8、RB9、RB10、RB14、RB15。在这些RB中谁的作为组播树根的优先级最高,选择谁作为可用的组播树根,假设作为组播树根的优先级最高的为RB2,则使用RB2生成SPF树,遍历该SPF树使用RB2作为可用树根生成并更新组播路由表项。
当RB8接收到RB2、RB4、RB5、RB8、RB9、RB10、RB14、RB15中任一RB发送的清除RB1对应的LSP的报文时,确定本地LSDB中是否存在RB 1对应的LSP,如果是,将本地LSDB中RB1对应的LSP清除,并根据清除对应LSP后的LSDB生成一个可用的组播树根,如RB2,使用RB2生成SPF树,遍历该SPF树使用RB2生成并更新组播路由表项;否则,维持本地的组播路由表项。
本发明具体实施例中,生成新的组播路由表项时,与当前芯片上的组播路由表项进行相比,将新生成的组播路由表项下发到芯片上更新芯片上原有的组播路由表项。具体实现方式同现有实现,这里不再详细赘述。
本发明具体实施例中基于同样的发明构思,还提出一种装置,可应用于TRILL网络中任一组播树中的任一RB上。参见图4,图4为可用于组播路由表项更新的装置的结构示意图。该装置包括:检测单元401、生成单元402、清除单元403和处理单元404。
检测单元401,用于检测本RB与所述组播树中的组播树根之间的链路是否可达。
生成单元402,用于当检测单元401检测到本RB与所述组播树的组播树根之间链路不可达时,生成该组播树根对应的链路协议数据单元LSP清除报文,并发送到与本RB链路可达的各RB,使所述各RB对该组播树根对应的LSP进行清除。
清除单元403,用于当生成单元402生成该组播树根对应的链路协议数据单元LSP清除报文时,将本地链路状态数据库LSDB中所述组播树根对应的LSP清除。
处理单元404,用于当检测单元401检测到本RB与所述组播树的组播树根之间链路可达时,使用所述组播树根生成SPF树,并遍历所述SPF树使用所述组播树根生成并更新组播路由表项;当清除单元403将本地链路状态数据库LSDB中所述组播树根对应的LSP清除时,根据清除对应LSP后的LSDB生成一个可用的组播树根,使用该可用的组播树根生成SPF树,遍历该SPF树使用所述可用组播树根生成并更新组播路由表项。
较佳地,
所述可用的组播树根为与本RB链路可达的,且作为组播树根的优先级最高的RB。
较佳地,该装置进一步包括:接收单元405。
接收单元405,用于接收其他RB发送的所述组播树根对应的LSP清除报文。
清除单元403,用于当接收单元405接收到其他RB发送的所述组播树根对应的LSP清除报文时,将本地LSDB中所述组播树根对应的LSP清除。
较佳地,该装置进一步包括:确定单元406。
确定单元406,用于当接收单元405接收到其他RB发送的所述组播树根对应的LSP清除报文时确定本地LSDB中是否存在所述组播树根对应的LSP。
清除单元403,用于当确定单元406确定本地LSDB中存在所述组播树根对应的LSP时,将本地LSDB中所述组播树根对应的LSP清除。
处理单元404,用于当确定单元406确定本地LSDB中不存在所述组播树根对应的LSP时,维持本地的组播路由表项。
检测单元401,用于确定本地的单播路由表项中是否存在本RB到所述组播树的组播树根的单播路由表项,如果是,确定本RB与所述组播树根之间的链路可达;否则,确定本RB与所述组播树根之间的链路不可达。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本发明具体实施例中RB在检测到自身与组播树根之间的链路不可达时,快速清除原组播树根对应的LSP,并根据清除后的LSDB生成一个可用的组播树根,使用该组播树根生成SPF树和组播路由表项,在当前RB与组播树根之间的链路不可达时,能够快速重新计算有效的组播路由表项,保证多目的报文的正常转发。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。