发明内容
有鉴于此,本发明提供了一种TRILL网络中的报文转发方法,能够实现依据标签对报文的转发,减少对MAC地址表的查找,降低报文转发的复杂度。
本发明还提供了一种路由网桥,能够实现依据标签对报文的转发,减少对MAC地址表的查找,降低报文转发的复杂度。
为了达到上述目的,本发明提出的技术方案为:
一种多链接透明互联TRILL网络中的报文转发方法,该方法应用于TRILL网络中的入口RB,包括:
入口RB为每个本地端口分配本地唯一的标签,将本地主机的MAC地址及为接收本地主机发送报文的本地端口分配的标签学习到本地MAC地址表项中;
入口RB接收到由本地主机发送的待转发报文后,在本地MAC地址表中查找待转发报文的目的MAC地址对应的MAC地址表项,根据查找结果对待转发报文进行包含入口RB、入口标签和出口RB、出口标签的TRILL封装,将封装后的TRILL报文发送给出口RB;所述入口标签为入口RB为接收所述待转发报文的端口分配的标签,所述出口标签由入口RB根据目的MAC地址查找的结果确定;
所述出口标签用于指示出口RB在完成对所述TRILL报文的解封装后根据该出口标签对解封装后的TRILL报文进行转发。
当所述入口RB接收到的待转发报文为已知单播报文时,则所述出口标签为交换标签类型,所述出口RB根据出口标签对解封装后的报文进行转发包括:出口RB将解封装后的报文从出口标签所对应的出口RB的端口进行转发;
当所述入口RB接收到的待转发报文为未知单播报文时,所述出口标签为单播标签类型,则所述出口RB根据出口标签对解封装后的报文进行转发包括:出口RB将解封装后的报文进行目的MAC地址查找,如果查找到对应的MAC地址,则从对应的端口转发;如果未查找到,则进行本地端口泛洪;
当所述入口RB接收到的待转发报文为已知组播报文时,所述出口标签为组播标签类型,则所述出口RB根据出口标签对解封装后的报文进行转发包括:出口RB将解封装后的报文进行组播组查找,根据查找结果对报文进行组播复制转发;
当所述入口RB接收到的待转发报文为未知组播报文或广播报文时,所述出口标签为广播标签类型,则所述出口RB根据出口标签对解封装后的报文进行转发包括:出口RB对解封装后的报文进行本地端口泛洪。
当MAC地址迁移时,所述方法还包括:入口RB在本地检测到有主机迁入时,更新本地MAC地址表中该迁入主机对应的MAC表项关联的标签。
当入口RB的接收所述待转发报文的端口不能正常工作时,该方法进一步包括:
入口RB向其它每一个RB发送标签无效消息,所述标签无效消息包含入口RB的标号Nickname和为所述接收待转发报文的端口分配的标签;
所述标签无效消息用于指示收到标签无效消息的RB将本地MAC地址表中包含相同入口RB的标号Nickname和相同标签的MAC地址表项中的标签更新为单播标签。
一种多链接透明互联TRILL网络中的报文转发方法,该方法应用于TRILL网络中的出口RB,包括:
出口RB为每个本地端口分配本地唯一的标签,将本地主机的MAC地址及为接收本地主机发送报文的本地端口分配的标签学习到本地MAC地址表项中;
出口RB接收到由入口RB发送的包含入口RB、入口标签、出口RB和出口标签的TRILL报文后,进行TRILL解封装,并进行内层源MAC地址学习,将内层源MAC地址、入口RB及入口标签学习到本地MAC地址表项中;所述入口标签为入口RB为接收主机发送的报文的端口分配的标签,所述出口标签为入口RB根据目的MAC地址查找的结果所确定的标签;
出口RB根据出口标签对解封装后的报文进行转发。
当所述出口标签为交换标签类型时,所述出口RB根据出口标签对解封装后的报文进行转发包括:出口RB将解封装后的报文从出口标签所对应的出口RB的端口进行转发;
当所述出口标签为单播标签类型,则所述出口RB根据出口标签对解封装后的报文进行转发包括:出口RB将解封装后的报文进行目的MAC地址查找,如果查找到对应的MAC地址,则从对应的端口转发;如果未查找到,则进行本地端口泛洪;
当所述出口标签为组播标签类型,则所述出口RB根据出口标签对解封装后的报文进行转发包括:出口RB将解封装后的报文进行组播组查找,根据查找结果对报文进行组播复制转发;
当所述出口标签为广播标签类型,则所述出口RB根据出口标签对解封装后的报文进行转发包括:出口RB对解封装后的报文进行本地端口泛洪。
在MAC地址迁移的情况下,所述出口RB对接收到的TRILL报文进行解封装,进行内层源MAC地址学习时,该方法还包括:
当出口RB判定本地MAC地址表中该TRILL报文中的内层源MAC地址对应的MAC地址表项中的RB有变化,则使用报文中的入口RB更新本地MAC地址表中该源MAC地址对应的MAC地址表项中的RB;和/或,
当出口RB判定本地MAC地址表中该TRILL报文中的内层源MAC地址对应的MAC地址表项中的标签有变化,则使用报文中的入口标签更新本地MAC地址表项中该源MAC地址对应的MAC地址表项中的标签。
该方法进一步包括:
当出口RB接收到入口RB发送的包含入口RB的标号Nickname和不能正常工作的端口对应的标签的标签无效消息时,查看本地MAC地址表项,当本地MAC地址表项中RB的Nickname为标签无效消息中入口RB的Nickname、且本地MAC地址表项中包含标签无效消息中的标签时,将本地MAC地址表项中的标签更新为单播标签。
一种多链接透明互联TRILL网络中的路由网桥,该路由网桥为接收报文的入口路由网桥RB,该路由网桥包括:
标签处理单元,用于为每个端口分配本地唯一的标签;将本地主机的MAC地址及为接收本地主机发送报文的本地端口分配的标签学习到本地MAC地址表项中;
报文接收单元,用于接收由本地主机发送的待转发报文;
报文封装单元,用于在本地MAC地址表中查找待转发报文的目的MAC地址对应的MAC地址表项,根据查找结果对待转发报文进行包含入口RB、入口标签和出口RB、出口标签的TRILL封装;所述入口标签为入口RB为接收所述待转发报文的端口分配的标签,所述出口标签根据目的MAC地址查找的结果确定;
所述报文发送单元,用于将所述报文封装单元进行TRILL封装后的报文发送给出口RB,以使出口RB根据目的MAC和出口标签对报文进行转发。
当所述报文接收单元接收到的主机发送的待转发报文为已知单播报文时,所述报文封装单元封装的TRILL报文的出口标签为交换标签类型,所述交互标签指示出口RB将解封装后的报文从出口标签所对应的出口RB的端口进行转发;
当所述报文接收单元接收到的主机发送的待转发报文为未知单播报文时,所述报文封装单元封装的TRILL报文的出口标签为单播标签类型,所述单播标签指示出口RB对解封装后的报文进行目的MAC地址查找,如果查找到对应的MAC地址,则从对应的端口转发;如果未查找到,则进行本地端口泛洪;
当所述报文接收单元接收到的主机发送的待转发报文为已知组播报文时,所述报文封装单元封装的TRILL报文的出口标签为组播标签类型,所述组播标签指示出口RB对解封装后的报文进行组播组查找,根据查找结果对报文进行组播复制转发;
当所述报文接收单元接收到的主机发送的待转发报文为未知组播报文或广播报文时,所述报文封装单元封装的TRILL报文的出口标签为组播标签类型,所述组播标签指示出口RB对解封装后的报文进行本地端口泛洪。
该路由网桥还包括标签更新单元,用于在本地检测到有主机迁入时,更新本地MAC地址表中该迁入主机对应的MAC表项关联的标签。
该路由网桥还包括无效发送单元,用于当所述报文接收单元的接收报文的端口不能正常工作时,向其它每一个RB发送标签无效消息,所述标签无效消息用于指示每一个收到标签无效消息的RB在判定本地MAC地址表项中RB的Nickname为标签无效消息中携带的入口RB的Nickname、且该本地MAC地址表项中包含标签无效消息中携带的标签时,将本地MAC地址表项中的标签更新为单播标签。
一种多链接透明互联TRILL网络中的路由网桥,该路由网桥为转发报文的出口路由网桥RB,该路由网桥包括:
标签处理单元,用于为每个端口分配本地唯一的标签;将本地主机的MAC地址及为接收本地主机发送报文的本地端口分配的标签学习到本地MAC地址表项中;
报文接收单元,用于接收由入口RB发送的由入口RB进行包含入口RB、入口标签和出口RB、出口标签的TRILL封装后的TRILL报文,所述入口标签为入口RB为接收主机发送的报文的端口分配的标签,所述出口标签由入口RB根据目的MAC地址查找的结果确定;
报文解封装单元,用于对所述报文接收单元接收到的报文进行TRILL解封装;
地址学习单元,用于对报文解封装单元解封装后的报文进行内层源MAC地址学习,将内层源MAC地址、入口RB及入口标签学习到本地MAC地址表项中;
报文转发单元,用于根据出口标签对所述报文解封装单元解封装后的报文进行转发。
当所述报文接收单元接收的TRILL报文中的出口标签为交换标签类型时,所述报文转发单元用于将解封装后的报文从出口标签所对应的端口进行转发;
当所述报文接收单元接收的TRILL报文中的出口标签为单播标签类型时,所述报文转发单元用于将解封装后的报文进行目的MAC地址查找,如果查找到对应的MAC地址,则从对应的端口转发;如果未查找到,则进行本地端口泛洪;
当所述报文接收单元接收的TRILL报文中的出口标签为组播标签类型时,所述报文转发单元用于将解封装后的报文进行组播组查找,根据查找结果对报文进行组播复制转发;
当所述报文接收单元接收的TRILL报文中的出口标签为广播标签类型时,所述报文转发单元用于将解封装后的报文进行本地端口泛洪。
所述地址学习单元还用于:
在判定本地MAC地址表中该TRILL报文中的内层源MAC地址对应的MAC地址表项中的RB有变化时,使用报文中的入口RB更新本地MAC地址表中该源MAC地址对应的MAC地址表项中的RB;和/或,
在判定本地MAC地址表中该TRILL报文中的内层源MAC地址对应的MAC地址表项中的标签有变化时,使用报文中的入口标签更新本地MAC地址表中该源MAC地址对应的MAC地址表项中的标签。
该路由网桥还包括无效接收单元和标签更新单元,其中,
所述无效接收单元,用于当入口RB的接收报文的端口不能正常工作时,接收由入口RB发送的标签无效消息,所述标签无效消息包含入口RB的Nickname和为该端口分配的标签;
所述标签更新单元,用于当所述无效接收单元接收到标签无效消息后,查看本地MAC地址表,当判定本地MAC地址表项中RB的Nickname为标签无效消息中携带的入口RB的Nickname、且该本地MAC地址表项中包含标签无效消息中携带的标签时,将本地MAC地址表项中的标签更新为单播标签。
综上所述,本发明所采用的TRILL网络中的报文转发方法,是通过由入口RB和出口RB分别为本地端口分配本地唯一的标签,将本地主机的MAC地址及为接收本地主机发送报文的本地端口分配的标签学习到本地MAC地址表项中,当入口RB接收到由本地主机发送的待转发报文后,在本地MAC地址表中查找待转发报文的目的MAC地址对应的MAC地址表项,根据查找结果对待转发报文进行包含入口RB、入口标签和出口RB、出口标签的TRILL封装,将封装后的TRILL报文发送给出口RB,由出口RB将接收到的包含入口RB、入口标签、出口RB和出口标签的TRILL报文进行TRILL解封装,并进行内层源MAC地址学习,将内层源MAC地址、入口RB及入口标签学习到本地MAC地址表项中,并根据出口标签对解封装后的报文进行转发。由于本发明建立标签与接收主机报文的端口之间的对应关系,RB进行源MAC地址的学习后,能够实现基于标签的报文转发,从而减少了MAC地址查找,因此,本发明方法不仅避免了由于查找大的MAC地址表可能造成的时间浪费问题,而且还降低了转发复杂度。
具体实施方式
为了解决本发明提出的技术问题,本发明所述方案的具体实现包括:
入口RB为每个本地端口分配本地唯一的标签,将本地主机的MAC地址及为接收本地主机发送报文的本地端口分配的标签学习到本地MAC地址表项中;入口RB接收到由本地主机发送的待转发报文后,在本地MAC地址表中查找待转发报文的目的MAC地址对应的MAC地址表项,根据查找结果对待转发报文进行包含入口RB、入口标签和出口RB、出口标签的TRILL封装,将封装后的TRILL报文发送给出口RB;所述入口标签为入口RB为接收所述待转发报文的端口分配的标签,所述出口标签由入口RB根据目的MAC地址查找的结果确定;所述出口标签用于指示出口RB在完成对所述TRILL报文的解封装后根据该出口标签对解封装后的TRILL报文进行转发;
出口RB为每个本地端口分配本地唯一的标签,将本地主机的MAC地址及为接收本地主机发送报文的本地端口分配的标签学习到本地MAC地址表项中;出口RB接收到由入口RB发送的包含入口RB、入口标签、出口RB和出口标签的TRILL报文后,进行TRILL解封装,并进行内层源MAC地址学习,将内层源MAC地址、入口RB及入口标签学习到本地MAC地址表项中;所述入口标签为入口RB为接收主机发送的报文的端口分配的标签,所述出口标签为入口RB根据目的MAC地址查找的结果所确定的标签;出口RB根据出口标签对解封装后的报文进行转发。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
图2为本发明TRILL网络中报文转发方法的工作流程图,如图2所示,该流程包括:
步骤201:定义标签类型,TRILL网络内的每个RB都需要为每个本地端口分配本地唯一的标签。
本发明中,在各个RB启动时,会给本地的每个端口分配一个本地具有唯一性的标签;
本发明对TRILL报文的结构进行了扩展,在TRILL报文中增加入口标签和出口标签的信元,扩展后的TRILL报文结构示例如图3所示。在本发明优选实施例中,在TRILL报文的出口标号Egress Nickname和入口标号Ingress Nickname的后面添加出口标签Egress Label和入口标签Ingress Label。其中Ingress Label信元表示报文进入入口RB时的入端口,只能是交换标签;Egress Label信元表示报文从出口RB发送报文时对应的出端口信息,出端口的信息通过标签值来揭示,即根据标签的取值范围可获知标签的类型,根据标签的类型执行相应的处理。
本发明根据报文类型将标签分为五类,并定义了不同类型的标签的取值或取值范围,所述五种标签类型定义如下:
广播标签(例如取值为0xFFFFFFFF):表示出口RB在接收到带有该类型的出口标签的报文时,需要在出口RB进行本地端口泛洪,从所有本地端口复制发送所接收到的报文;
组播标签(例如取值为0xFFFFFFFE):表示出口RB在接收到带有该类型的出口标签的报文时,需要在出口RB进行本地二层组播组查找,即根据报文的内层目的MAC地址查询组播MAC地址表,根据查找结果对接收到的报文进行组播复制,从组播MAC地址表项指定的出端口发送;
单播标签(例如取值范围为0xFFFFFFFD):表示出口RB在接收到带有该类型的出口标签的报文时,需要在出口RB要进行本地二层单播MAC地址表查找,根据查找结果进行转发;
交换标签(例如取值范围为1-0x0FFFFFFC):表示出口RB在接收到带有该类型的出口标签的报文时,直接从该出口标签对应的本地端口发送即可。
保留标签(0x00FFFF01-0xFFFFFFF0):保留后续使用。
步骤202:每个RB将本地连接的主机MAC地址及对应的为本地端口分配的标签学习到本地MAC地址表项中。
网络中的每个RB都需要学习与自身连接的主机的MAC地址,不同的是,本发明中,每个RB还需要学习与本地主机MAC地址对应的标签,本发明不限定采用何种方式或协议学习包含本地主机MAC地址和为本地端口分配的标签。
一具体实例中,RB在接收到本地主机发送的报文后,将该主机MAC地址与接收该主机发送的报文的端口对应的标签关联起来,将该主机MAC地址及关联的标签一同学习到本地MAC地址表中。
步骤203:入口RB接收到由主机发送的待转发报文后,入口RB根据待转发报文中的目的MAC,在本地MAC地址表中进行目的MAC查找,在需要通过TRILL隧道转发时,根据查找结果对主机发送的待转发报文进行TRILL封装。
在入口RB对主机发送的报文进行封装时,TRILL报文中的入口标签为入口RB上接收所述主机发送的报文的端口对应的标签即入口RB为该端口分配的标签,出口标签根据目的MAC查找的结果来确定,当查找到(表示已知)目的MAC地址时,所述出口标签是为接收报文的出口RB的端口分配的标签;当查找不到(表示未知)目的MAC地址时,所述出口标签根据入口RB接收到的报文类型来确定。
基于上述原则,确定出口标签的方式如下:
如果是已知单播报文即查找到目的MAC的单播报文,则出口标签为交换标签类型,即出口标签为本地查找到MAC地址表项中的标签;
如果是未知单播报文即未查找到目的MAC的单播报文,则出口标签为单播标签类型;
如果是未知组播报文即未查找到目的MAC的组播报文,则出口标签为广播标签类型;
如果是已知组播报文即查找到目的MAC的组播报文,则出口标签为组播标签类型;
如果是广播报文,则出口标签为广播标签类型。
步骤204:对所述封装后的TRILL报文进行TRILL路由表查找,根据查找到的路由,将TRILL报文发送给出口RB。
在本步骤中,所述封装后得到的TRILL报文进行路由查找封装后,由中间RB将所述路由查找封装后的TRILL报文发送给出口RB。
步骤205:出口RB对接收到的报文进行TRILL解封装后,进行内层源MAC地址学习,将TRILL报文的内层源MAC地址(即源主机的MAC地址)与内层标签即入口标签关联,将解封装后的报文的内层源MAC地址即源主机MAC地址、入口RB的Nickname及入口标签学习到本地MAC表项中。
当执行完步骤205后,需要根据出口标签将报文进行转发,具体如何转发报文需要根据出口标签类型而定,当出口标签为交换标签时,执行步骤206;当出口标签为单播标签时,执行步骤207;当出口标签为组播标签时,执行步骤208;当出口标签为广播标签时,执行步骤209。下面具体说明报文转发过程:
步骤206:当出口标签为交换标签时,由出口RB将进行源MAC地址学习后的报文从出口标签所对应的出口RB的端口进行转发后,结束当前报文转发流程。
当所述入口RB接收到的报文为已知单播报文时,所述出口标签为交换标签,即为接收到的报文的出口RB的端口分配的标签,则,所述根据出口标签将报文进行转发包括:所述出口RB将进行源MAC地址学习后的报文从出口标签所对应的出口RB的端口进行转发。
步骤207:当出口标签为单播标签时,由出口RB将进行源MAC地址学习后的报文进行目的MAC地址查找,根据查找结果对报文进行组播复制转发后,结束当前报文转发流程。
当所述入口RB接收到的报文为未知单播报文时,所述出口标签为单播标签,则,所述根据出口标签将报文进行转发包括:所述出口RB将进行源MAC地址学习后的报文进行目的MAC地址查找,如果查找到对应的目的MAC地址,则从该目的MAC地址对应的端口转发;如果未查找到,则进行泛洪。
步骤208:当出口标签为组播标签时,由出口RB将进行源MAC地址学习后的报文进行组播组查找,根据查找结果对报文进行组播复制转发后,结束当前报文转发流程。
当所述入口RB接收到的报文为已知组播报文时,所述出口标签为组播标签,则,所述根据出口标签将报文进行转发包括:所述出口RB将进行源MAC地址学习后的报文进行组播组查找,根据查找结果对报文进行组播复制转发。
步骤209:当出口标签为广播标签时,由出口RB将进行源MAC地址学习后的报文在查找到的目的MAC地址对应的MAC地址表项中的标签所对应的出口RB的端口进行泛洪后,结束当前报文转发流程。
当所述入口RB接收到的报文为未知组播报文或广播报文时,所述出口标签为广播标签,则,所述根据出口标签将报文进行转发包括:所述出口RB将进行源MAC地址学习后的报文从出口标签所对应的出口RB的端口进行泛洪,也即从所有端口对报文进行复制转发。
基于上述TRILL网络中的报文转发方法,本发明还进一步公开了如下在发生MAC地址迁移时,数据平面实时更新MAC地址表中的RB和标签信息的方法:
入口RB检测到本地有迁移的主机接入后,更新本地MAC地址表中该主机的MAC地址对应的表项中关联的标签。
在TRILL隧道的出口RB,对TRILL报文进行解封装得到原始的以太帧之后,进行内层源MAC学习时进行如下判断和操作:
如果原来MAC地址表中的该源MAC对应的RB变化,则使用报文中的入口RB更新MAC地址表中该源MAC地址对应表项中的RB;和/或
如果原来MAC地址表中的该源MAC对应的标签变化,则使用报文中的入口标签更新MAC地址表中该源MAC地址对应表项中的标签。
还需说明的是,当RB的本地端口不能正常工作或者其他原因导致不能收发数据报文时,本发明还进一步给出如下处理流程:
步骤S1、该RB通过IGP协议向其他所有的RB通告标签无效消息,消息包含该RB的标号Nickname和该端口对应的标签等内容。
步骤S2、TRILL网络中的其他RB收到该通告时,查找本地MAC地址表的每个表项,如果MAC地址表项对应的RB的标号Nickname为无效消息中的RB的Nickname,且该MAC地址表项对应的标签为无效消息中的标签,则将MAC地址表中的对应的标签更新为单播标签。上述IGP协议为TRILL-ESADI。
至此,即完成了本发明所采用的TRILL网络中报文转发方法的整个工作流程。
基于上述方法,图4给出了本发明所采用的路由网桥实施例一的结构,如图4所示,该路由网桥为接收报文的入口RB,该路由网桥包括:
标签处理单元41,用于为每个端口分配本地唯一的标签;将本地主机的MAC地址及为接收本地主机发送报文的本地端口分配的标签学习到本地MAC地址表项中;
报文接收单元42,用于接收由本地主机发送的待转发报文;
报文封装单元43,用于在标签处理单元41学习到的本地MAC地址表中查找待转发报文的目的MAC地址对应的MAC地址表项,根据查找结果对报文接收单元42接收的待转发报文进行包含入口RB、入口标签和出口RB、出口标签的TRILL封装;所述入口标签为入口RB为接收所述待转发报文的端口分配的标签,所述出口标签根据目的MAC地址查找的结果确定;
所述报文发送单元,用于将所述报文封装单元进行TRILL封装后的报文发送给出口RB,以使出口RB根据目的MAC和出口标签对报文进行转发。
当所述报文接收单元42接收到的主机发送的待转发报文为已知单播报文时,所述报文封装单元43封装的TRILL报文的出口标签为交换标签类型,所述交互标签指示出口RB将解封装后的报文从出口标签所对应的出口RB的端口进行转发;
当所述报文接收单元42接收到的主机发送的待转发报文为未知单播报文时,所述报文封装单元43封装的TRILL报文的出口标签为单播标签类型,所述单播标签指示出口RB对解封装后的报文进行目的MAC地址查找,如果查找到对应的MAC地址,则从对应的端口转发;如果未查找到,则进行本地端口泛洪;
当所述报文接收单元42接收到的主机发送的待转发报文为已知组播报文时,所述报文封装单元43封装的TRILL报文的出口标签为组播标签类型,所述组播标签指示出口RB对解封装后的报文进行组播组查找,根据查找结果对报文进行组播复制转发;
当所述报文接收单元42接收到的主机发送的待转发报文为未知组播报文或广播报文时,所述报文封装单元43封装的TRILL报文的出口标签为组播标签类型,所述组播标签指示出口RB对解封装后的报文进行本地端口泛洪。
进一步地,该路由网桥还包括标签更新单元45,用于在本地检测到有主机迁入时,更新标签处理单元41学习的本地MAC地址表中该迁入主机对应的MAC表项关联的标签。
更进一步地,该路由网桥还包括无效发送单元46,用于当所述报文接收单元42的接收报文的端口不能正常工作时,向其它每一个RB发送标签无效消息,所述标签无效消息用于指示每一个收到标签无效消息的RB在判定本地MAC地址表项中RB的Nickname为标签无效消息中携带的入口RB的Nickname、且该本地MAC地址表项中包含标签无效消息中携带的标签时,将标签处理单元41学习的本地MAC地址表项中的标签更新为单播标签。
同样地,基于上述方法,图5给出了本发明所采用的路由网桥实施例二的结构,如图5所示,该路由网桥为转发报文的出口RB,包括:
标签处理单元51,用于为每个端口分配本地唯一的标签;将本地主机的MAC地址及为接收本地主机发送报文的本地端口分配的标签学习到本地MAC地址表项中;
报文接收单元52,用于接收由入口RB发送的由入口RB进行包含入口RB、入口标签和出口RB、出口标签的TRILL封装后的TRILL报文,所述入口标签为入口RB为接收主机发送的报文的端口分配的标签,所述出口标签由入口RB根据目的MAC地址查找的结果确定;
报文解封装单元53,用于对所述报文接收单元52接收到的报文进行TRILL解封装;
地址学习单元54,用于对报文解封装单元53解封装后的报文进行内层源MAC地址学习,将内层源MAC地址、入口RB及入口标签学习到本地MAC地址表项中;
报文转发单元55,用于根据出口标签对所述报文解封装单元53解封装后的报文进行转发。
当所述报文接收单元52接收的TRILL报文中的出口标签为交换标签类型时,所述报文转发单元55用于将报文解封装单元53解封装后的报文从报文接收单元52接收到的出口标签所对应的端口进行转发;
当所述报文接收单元52接收的TRILL报文中的出口标签为单播标签类型时,所述报文转发单元55用于将报文解封装单元53解封装后的报文进行目的MAC地址查找,如果查找到对应的MAC地址,则从对应的端口转发;如果未查找到,则进行本地端口泛洪;
当所述报文接收单元52接收的TRILL报文中的出口标签为组播标签类型时,所述报文转发单元55用于将报文解封装单元53解封装后的报文进行组播组查找,根据查找结果对报文进行组播复制转发;
当所述报文接收单元52接收的TRILL报文中的出口标签为广播标签类型时,所述报文转发单元55用于将报文解封装单元53解封装后的报文进行本地端口泛洪。
进一步地,所述地址学习单元54还用于:
在判定本地MAC地址表中该TRILL报文中的内层源MAC地址对应的MAC地址表项中的RB有变化时,使用报文中的入口RB更新本地MAC地址表中该源MAC地址对应的MAC地址表项中的RB;和/或,
在判定本地MAC地址表中该TRILL报文中的内层源MAC地址对应的MAC地址表项中的标签有变化时,使用报文中的入口标签更新本地MAC地址表中该源MAC地址对应的MAC地址表项中的标签。
更进一步地,该路由网桥还包括无效接收单元56和标签更新单元57,其中,
所述无效接收单元56,用于当入口RB的接收报文的端口不能正常工作时,接收由入口RB发送的标签无效消息,所述标签无效消息包含入口RB的Nickname和为该端口分配的标签;
所述标签更新单元57,用于当所述无效接收单元56接收到标签无效消息后,查看本地MAC地址表,当判定本地MAC地址表项中RB的Nickname为标签无效消息中携带的入口RB的Nickname、且该本地MAC地址表项中包含标签无效消息中携带的标签时,将标签处理单元51学习的本地MAC地址表项中的标签更新为单播标签。
至此,即得到了本发明所采用的TRILL网络中的路由网桥。图4和图5所述路由网桥的工作流程具体可参见图2所述方法的工作流程,这里不再赘述。
总之,本发明所采用的TRILL网络中的报文转发方法,通过由入口RB和出口RB分别为本地端口分配本地唯一的标签,将本地主机的MAC地址及为接收本地主机发送报文的本地端口分配的标签学习到本地MAC地址表项中,当入口RB接收到由本地主机发送的待转发报文后,在本地MAC地址表中查找待转发报文的目的MAC地址对应的MAC地址表项,根据查找结果对待转发报文进行包含入口RB、入口标签和出口RB、出口标签的TRILL封装,将封装后的TRILL报文发送给出口RB,由出口RB将接收到的包含入口RB、入口标签、出口RB和出口标签的TRILL报文进行TRILL解封装,并进行内层源MAC地址学习,将内层源MAC地址、入口RB及入口标签学习到本地MAC地址表项中,并根据出口标签对解封装后的报文进行转发。由于本发明建立标签与接收主机报文的端口之间的对应关系,RB进行源MAC地址的学习后,能够实现基于标签的报文转发,从而减少了MAC地址查找,因此,本发明方法不仅避免了由于查找大的MAC地址表可能造成的时间浪费问题,而且还降低了转发复杂度。
进一步地,当MAC地址迁移时,本发明方法在入口RB更新本地MAC地址表中该迁入主机对应的MAC表项关联的标签,并在出口RB判定本地MAC地址表中该TRILL报文中的内层源MAC地址对应的MAC地址表项中的RB或标签有变化时,使用报文中的入口RB或入口标签更新本地MAC地址表中该源MAC地址对应的MAC地址表项中的RB或标签,也就解决了MAC地址迁移可能造成的报文不能正常转发的问题。
最后,当入口RB接收待转发报文的端口不能正常工作时,本发明方法通过由该入口RB向其它每一个RB发送包含入口RB的Nickname和为接收待转发报文的端口分配的标签的标签无效信息,进而每一个收到标签无效信息的RB查看本地MAC地址表,当MAC地址表项中RB的Nickname为标签无效消息中入口RB的Nickname、且MAC地址表项中标签为标签无效消息中的标签时,将MAC地址表项中的标签更新为单播标签,也就避免了由于接收报文的端口不能正常工作而带来的报文不能正常转发的问题。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。