应用于多链路透明互联网络的接入方法和设备
技术领域
本申请涉及网络通信技术,特别涉及应用于多链路透明互联(TRILL:Transparent Interconnection of Lots of Links)网络的接入方法和设备。
背景技术
TRILL协议作为生成树协议(STP:Spanning Tree Protocol)的替代物在数据中心网络得到应用和推广。应用于TRILL协议的网络,简称TRILL网络,有效解决了STP网络内链路冗余、带宽浪费和无法流量负载分担等问题,但是,对于TRILL网络的接入设备而言,依然面临带宽浪费、无法实现负载分担等问题。下面以图1为例进行描述:
如图1所示的TRILL网络由以下四个路由桥设备(RB:Router Bridge)组成:RB1、RB2、RB3、RB4,SW-A作为图1所示TRILL网络的接入设备,存在以下三个接入TRILL网络的逻辑端口:P1、P2和P3,该三个逻辑端口P1、P2和P3连接TRILL网络中不同的RB,如图1所示,P1连接RB1,P2连接RB2,P3连接RB3。
其中,为了避免接入设备向TRILL网络发送的广播报文,或者TRILL网络向接入设备发送的广播报文在TRILL网络内引起转发环路,需要接入设备仅维持唯一一个连接TRILL网络的逻辑端口可用,而阻塞其他所有连接TRILL网络的逻辑端口。例如,在图1中需要阻塞SW-A上两个连接TRILL网络的逻辑端口,只留下一个连接TRILL网络的逻辑端口可用,比如SW-A阻塞P1、P2、只维持P3可用,即SW-A仅通过P3与TRILL网络进行报文交互。这虽然避免了广播报文在TRILL网络内转发时引起的转发环路,但缺乏对网络资源的充分利用,对存在大量数据转发的数据中心网络建设不利。
发明内容
本申请提供了应用于多链路透明互联网络的接入方法和设备。以实现在避免广播报文在TRILL网络内转发引起转发环路的同时充分利用网络资源。
本申请提供的技术方案包括:
一种应用于多链路透明互联TRILL网络的接入方法,所述方法应用于接入所述TRILL网络的接入设备,该方法包括:
将本设备上属于同一个虚拟局域网VLAN的TRILL网络接入端口作为成员端口加入至同一上行端口组;
在向TRILL网络发送上行报文时,依据所述上行报文携带的报文标识在本地找到用于转发所述上行报文的上行端口组,按照负载均衡原则从找出的上行端口组中选取一个成员端口转发所述上行报文;所述上行报文为所述接入设备向TRILL网络发送的报文;
实时检测本设备上的TRILL网络接入端口,当检测到任一TRILL网络接入端口故障时,从包含该故障的TRILL网络接入端口的上行端口组中删除该故障的TRILL网络接入端口。
优选地,该方法还包括:
从每一上行端口组的成员端口中选取一个成员端口作为该上行端口组的主端口;
通过每一上行端口组中的每一成员端口发送端口通知报文,每一成员端口发送的端口通知报文携带该成员端口所属的VLAN、以及该成员端口是否为所属上行端口组的主端口的标识,以使接收到端口通知报文的路由桥设备RB依据端口通知报文携带的成员端口是否为所属上行端口组的主端口的标识确定本地是否存在所述端口通知报文携带的VLAN对应的优先端口,并在后续向所述接入设备转发属于所述端口通知报文携带的VLAN的下行广播报文时,仅通过本地存在的所述端口通知报文携带的VLAN对应的优先端口转发,下行广播报文为通过TRILL网络向所述接入设备发送的广播报文;
通过每一上行端口组的主端口接收RB转发的该主端口所属VLAN的下行广播报文,学习每一上行端口组的主端口接收的下行广播报文携带的源MAC地址和VLAN,将该主端口所属的上行端口组、以及学习的源MAC地址和VLAN记录至新建立的MAC转发表项。
优选地,所述上行报文为上行已知单播报文,所述报文标识为上行报文的目的MAC地址,所述用于转发上行报文的上行端口组为包含所述目的MAC地址的MAC转发表项中的上行端口组。
优选地,所述上行报文为上行广播报文,所述报文标识为所述上行报文携带的VLAN标识,所述用于转发上行报文的上行端口组为包含以下成员端口的上行端口组:属于所述VLAN标识对应的VLAN的TRILL网络接入端口。
优选地,所述按照负载均衡原则从找出的上行端口组中选取一个成员端口转发所述上行报文包括:
识别所述上行报文携带的哈希特征,对识别出的所述哈希特征进行哈希运算,得到哈希运算结果;
从该找出的上行端口组中选取一个对应所述哈希运算结果的成员端口,通过该选取的成员端口转发所述上行报文;
所述哈希特征为源MAC地址和/或VLAN标识。
优选地,所述将接入设备上属于同一VLAN的TRILL网络接入端口作为成员端口加入至同一上行端口组通过静态配置实现,或者通过以下步骤实现:
所述接入设备在使能TRILL侦听功能后,侦听TRILL网络中RB发送的TRILL协议报文;
当侦听到一个TRILL协议报文时,识别该TRILL协议报文携带的VLAN,检测本接入设备当前是否存在该VLAN对应的上行端口组;
如果本接入设备当前不存在该VLAN对应的上行端口组,则新创建一个该VLAN对应的上行端口组,并将本接入设备上接收到该TRILL协议报文的TRILL网络接入端口作为成员端口加入到该新创建的上行端口组;
如果本接入设备当前存在该VLAN对应的上行端口组,则检测该存在的上行端口组是否包含本接入设备接收到该TRILL协议报文的TRILL网络接入端口,如果没有,则将本接入设备上接收到该TRILL协议报文的TRILL网络接入端口作为成员端口加入到该存在的上行端口组,而如果该存在的上行端口组包含本接入设备接收到该TRILL协议报文的TRILL网络接入端口,则不执行任何操作。
优选地,该方法进一步包括:
当上行接口组中被删除的TRILL网络接入端口为上行接口组的主端口时,重新从该上行端口组剩余的成员端口中选取一个成员端口作为该上行端口组的主端口,并返回通过该上行端口组中的每一成员端口发送端口通知报文的操作。
一种应用于多链路透明互联TRILL网络的接入方法,所述方法应用于所述TRILL网络中的路由桥设备RB,该方法包括:
接收所述TRILL网络的接入设备通过上行端口组中的成员端口发送的上行报文;其中,所述上行报文为所述接入设备向所述TRILL网络发送的报文;
在识别出所述上行报文为上行已知单播报文时,依据所述上行已知单播报文的目的MAC地址转发所述上行已知单播报文;
在识别出所述上行报文为上行广播报文时,通过除接收到所述上行广播报文的端口之外的其他端口向邻居RB转发所述上行广播报文;
当通过连接邻居RB的端口收到邻居RB转发的上行广播报文时,除连接至接入设备的端口和接收到所述上行广播报文的端口之外的其他端口转发所述上行广播报文。
优选地,该方法进一步包括:
接收所述TRILL网络的接入设备通过上行端口组中的成员端口发送的端口通知报文,成员端口发送的端口通知报文携带成员端口所属的VLAN、以及成员端口是否为所属上行端口组的主端口的标识;
识别所述端口通知报文携带的VLAN,在所述端口通知报文携带了成员端口为所属上行端口组的主端口的标识时,确认本RB接收到该端口通知报文的端口为该识别的VLAN对应的优先端口,在所述端口通知报文携带了成员端口不为所属上行端口组的主端口的标识时,确认本RB接收到所述端口通知报文的端口为该识别的VLAN对应的非优先端口;
在向所述接入设备发送下行广播报文时,识别该下行广播报文携带的VLAN,检查本RB上是否存在对应该VLAN的优先端口,如果是,通过本RB上对应该VLAN的优先端口转发所述下行广播报文,如果否,丢弃所述下行广播报文;其中,所述下行广播报文为通过TRILL网络向所述接入设备发送的广播报文。
一种接入多链路透明互联TRILL网络的接入设备,所述接入设备包括:
上行端口组单元,用于将所述接入设备上属于同一个虚拟局域网VLAN的TRILL网络接入端口作为成员端口加入至所述VLAN对应的上行端口组;
上行报文发送单元,用于在向TRILL网络发送上行报文时,依据所述上行报文携带的报文标识在本地找到用于转发所述上行报文的上行端口组,按照负载均衡原则从找出的上行端口组中选取一个成员端口转发所述上行报文;所述上行报文为所述接入设备向TRILL网络发送的报文;
检测单元,用于实时检测本设备上的TRILL网络接入端口,当检测到任一TRILL网络接入端口故障时,从包含该故障的TRILL网络接入端口的上行端口组中删除该故障的TRILL网络接入端口。
优选地,所述接入设备还包括:
选取单元,用于从每一上行端口组的成员端口中选取一个成员端口作为该上行端口组的主端口;
通知单元,用于通过每一上行端口组中的每一成员端口发送端口通知报文,每一成员端口发送的端口通知报文携带该成员端口所属的VLAN、以及该成员端口是否为所属上行端口组的主端口的标识,以使接收到端口通知报文的路由桥设备RB依据端口通知报文携带的成员端口是否为所属上行端口组的主端口的标识确定本地是否存在所述端口通知报文携带的VLAN对应的优先端口,并在后续向所述接入设备转发属于所述端口通知报文携带的VLAN的下行广播报文时,仅通过本地存在的所述端口通知报文携带的VLAN对应的优先端口转发;
接收单元,用于通过每一上行端口组的主端口接收RB转发的该主端口所属VLAN的下行广播报文,述下行广播报文为通过TRILL网络向所述接入设备发送的广播报文;
MAC表项单元,用于学习每一上行端口组的主端口接收的下行广播报文所携带的源MAC地址和VLAN,将该主端口所属的上行端口组、以及学习的源MAC地址和VLAN记录至新建立的MAC转发表项。
优选地,所述上行报文为上行已知单播报文,所述报文标识为上行报文的目的MAC地址,所述用于转发上行报文的上行端口组为包含所述目的MAC地址的MAC转发表项中的上行端口组;或者,
所述上行报文为上行广播报文,所述报文标识为所述上行报文携带的VLAN标识,所述用于转发上行报文的上行端口组为包含以下成员端口的上行端口组:属于所述VLAN标识对应的VLAN的TRILL网络接入端口。
优选地,所述上行报文发送单元按照负载均衡原则从找出的上行端口组中选取一个成员端口转发所述上行报文包括:
识别所述上行报文携带的哈希特征,对识别出的所述哈希特征进行哈希运算,得到哈希运算结果;
从该找出的上行端口组中选取一个对应所述哈希运算结果的成员端口,通过该选取的成员端口转发所述上行报文;
所述哈希特征为源MAC地址和/或VLAN标识。
优选地,所述检测单元进一步当上行接口组中被删除的TRILL网络接入端口为上行接口组的主端口时,重新从该上行端口组剩余的成员端口中选取一个成员端口作为该上行端口组的主端口,并触发所述通知单元通过该上行端口组中的每一成员端口发送端口通知报文的操作。
一种多链路透明互联TRILL网络的路由桥设备RB,所述RB包括:
接收单元,用于接收所述TRILL网络的接入设备通过上行端口组中的成员端口发送的上行报文;其中,所述上行报文为所述接入设备向所述TRILL网络发送的报文;
上行报文处理单元,用于在识别出所述上行报文为上行已知单播报文时,依据所述上行已知单播报文的目的MAC地址转发所述上行已知单播报文,在识别出所述上行报文为上行广播报文时,通过除接收到所述上行广播报文的端口之外的其他端口向邻居RB转发所述上行广播报文;以及,
当通过连接邻居RB的端口收到邻居RB转发的上行广播报文时,除连接至接入设备的端口和接收到所述上行广播报文的端口之外的其他端口转发所述上行广播报文。
优选地,所述RB进一步包括:
通知接收单元,用于接收所述TRILL网络的接入设备通过上行端口组中的成员端口发送的端口通知报文,成员端口发送的端口通知报文携带成员端口所属的VLAN、以及成员端口是否为所属上行端口组的主端口的标识;
识别单元,用于识别所述端口通知报文携带的VLAN,在所述端口通知报文携带了成员端口为所属上行端口组的主端口的标识时,确认本RB接收到该端口通知报文的端口为该识别的VLAN对应的优先端口,在所述端口通知报文携带了成员端口不为所属上行端口组的主端口的标识时,确认本RB接收到所述端口通知报文的端口为该识别的VLAN对应的非优先端口;
下行报文处理单元,用于接收向所述接入设备转发的下行广播报文,识别该下行广播报文携带的VLAN,检查本RB上是否存在对应该VLAN的优先端口,如果是,通过本RB上对应该VLAN的优先端口转发所述下行广播报文,如果否,丢弃所述下行广播报文;其中,所述下行广播报文为通过TRILL网络向所述接入设备发送的广播报文。
由以上技术方案可以看出,本发明中,不阻塞接入设备上接入TRILL网络的TRILL网络接入端口,而是将接入设备上属于同一个VLAN的TRILL网络接入端口作为成员端口加入至所述VLAN对应的上行端口组,以使接入设备向TRILL网络发送某一VLAN的上行广播或已知单播报文时,从该VLAN对应的上行端口组中选取一个成员端口转发,这对接入设备接入TRILL网络的链路进行了充分利用。
附图说明
图1为现有TRILL网络示意图;
图2为本发明实施例应用的TRILL网络示意图;
图3为本发明实施例1中下行广播报文转发示意图;
图4为本发明实施例2中上行广播报文转发示意图;
图5为本发明实施例3中下行已知单播报文转发示意图;
图6为本发明实施例4中上行已知单播报文转发示意图;
图7为本发明实施例提供的接入设备结构图;
图8为本发明实施例提供的RB结构图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明中,依据TRILL网络的接入设备比如图1中的SW-A本地接入TRILL网络的逻辑端口所属的虚拟局域网(VLAN:Virtual LAN)不同,将接入设备本地接入TRILL网络的逻辑端口划分至不同的上行端口组。这里,接入设备本地接入TRILL网络的逻辑端口简称TRILL网络接入端口。
优选地,本发明中,将接入设备上的TRILL网络接入端口划分至不同的上行端口组可通过以下两种实现方式创建:
方式1:由管理员通过手工配置实现。
本方式1中,管理员先识别接入设备上的TRILL网络接入端口所属的VLAN,将属于同一个VLAN的TRILL网络接入端口作为成员端口加入至同一上行端口组(也即该识别出的VLAN对应的上行端口组)。这里,VLAN对应的上行端口组实质是一个列表的概念,其只是用于记录接入设备上属于该VLAN的各个TRILL网络接入端口,并不改变TRILL网络接入端口本身的连接关系。
比如,以图1所示组网为例,假如图1中作为接入设备的SW-A上存在的三个TRILL网络接入端口P1、P2、P3,且该三个TRILL网络接入端口P1、P2、P3所属的VLAN如表1-1所示:
表1-1
VLAN |
端口 |
100 |
P1、P2 |
200 |
P2、P3 |
从表1-1看出,P1、P2属于一个相同的VLAN100,P2、P3属于一个相同的VLAN200,基于上述针对方式1的描述,则就在SW-A上创建两个上行端口组,一个为VLAN100对应的上行端口组,记为TrillGroupA,并将P1、P2作为TrillGroupA的成员端口加入至TrillGroupA;另一个为VLAN200对应的上行端口组,记为TrillGroupB,并将P2、P3作为TrillGroupB的成员端口加入至TrillGroupB。表1-2示出了SW-A上的上行端口组:
表1-2
上行端口组 |
VLAN |
成员端口 |
TrillGroupA |
100 |
P1、P2 |
TrillGroupB |
200 |
P2、P3 |
至此,完成方式1的描述。
方式2:由接入设备动态实现。
本方式2中,为了保证接入设备动态将本接入设备上属于同一个VLAN的TRILL网络接入端口作为成员端口加入至该VLAN对应的上行端口组,需要在接入设备上使能TRILL侦听(Snooping)功能。
在接入设备使能了TRILL Snooping功能后,本方式2中,接入设备通过以下步骤将本接入设备上属于同一个VLAN的TRILL网络接入端口作为成员端口加入至该VLAN对应的上行端口组:
步骤1,侦听TRILL网络中RB发送的TRILL协议报文。作为本发明的一个实施例,TRILL协议报文可为hello报文。
步骤2,当侦听到一个TRILL协议报文时,识别该TRILL协议报文携带的VLAN,检测本接入设备当前是否存在该VLAN对应的上行端口组;
如果本接入设备当前不存在该VLAN对应的上行端口组,则新创建一个该VLAN对应的上行端口组,并将本接入设备上接收到该TRILL协议报文的TRILL网络接入端口作为成员端口加入到该新创建的上行端口组;
如果本接入设备当前存在该VLAN对应的上行端口组,则检测该存在的上行端口组是否包含本接入设备接收到该TRILL协议报文的TRILL网络接入端口,如果没有,则将本接入设备上接收到该TRILL协议报文的TRILL网络接入端口作为成员端口加入到该存在的上行端口组,而如果该存在的上行端口组包含本接入设备接收到该TRILL协议报文的TRILL网络接入端口,则不执行任何操作。
在上述步骤1中,之所以检测本接入设备当前是否存在该VLAN对应的上行端口组,原因是:TRILL协议报文通常是周期发送的,通过检测本接入设备当前是否存在该VLAN对应的上行端口组,能够避免接入设备重复创建相同VLAN对应的上行端口组。
在步骤2中,在接入设备当前存在该VLAN对应的上行端口组时,之所以检测该存在的上行端口组是否包含本接入设备接收到该TRILL协议报文的TRILL网络接入端口,原因是:TRILL协议报文通常是周期发送的,通过检测该存在的上行端口组是否包含本接入设备接收到该TRILL协议报文的TRILL网络接入端口,能够避免同一个上行端口组有重复的成员端口。
下面以一个实施例描述方式2:
如图2所示的组网为例,假如作为接入设备的SW-A上TRILL网络接入端口P1、P2、P3所属的VLAN、以及TRILL网络中各RB的下行接入端口所属的VLAN如表2所示:
表2
VLAN |
端口 |
100 |
P1、P2、P11、P22 |
200 |
P2、P3、P22、P33 |
则,SW-A侦听RB1、RB2、RB3发送的TRILL协议报文,以SW-A侦听到P1接收到RB1通过P11发送的TRILL协议报文为例,SW-A侦听到P2、P3接收到TRILL协议报文的处理方式类似;
则,SW-A识别该TRILL协议报文携带的VLAN,因为该TRILL协议报文由RB1通过P11端口发送,则携带的VLAN是P11所属的VLAN100,基于此,SW-A就识别本地是否存在VLAN100对应的上行端口组;
当SW-A发现本地不存在VLAN100对应的上行端口组,就在本地创建一个VLAN100对应的上行端口组,同时将本SW-A接收到TRILL协议报文的端口P1作为成员端口加入至新创建的VLAN100对应的上行端口组;
而当SW-A发现本地存在VLAN100对应的上行端口组,就识别该存在的VLAN100对应的上行端口组中是否存在本SW-A接收到TRILL协议报文的端口P1,如果不存在,则将本SW-A接收到TRILL协议报文的端口P1作为成员端口加入至该VLAN100对应的上行端口组,而如果存在,不执行任何操作,丢弃该接收的TRILL协议报文。
至此,完成方式2的描述。基于表2,则通过方式2也会实现在图2所示的SW-A上创建两个上行端口组,一个为VLAN100对应的上行端口组,记为TrillGroupA,其包含的成员端口为P1、P2,另一个为VLAN200对应的上行端口组,记为TrillGroupB,其包含的成员端口为P2、P3,具体如上述的表1-2所示。
通过上面两种方式中的任一方式,能够将接入设备上的TRILL网络接入端口加入到对应的上行端口组。其中,加入同一上行端口组的成员端口之间,通过设置硬件表项达到二层隔离的效果。
从上面针对上行端口组的描述可以看出,对于同一个上行端口组中的各成员端口属于同一个相同的VLAN,而不同上行端口组可以具有相同的成员端口,但是对应的VLAN一定不同。
基于接入设备上的上行端口组可以实现接入设备与TRILL网络之间数据流的负载分担。下面通过四个实施例描述:
实施例1:
本实施例1应用于通过TRILL网络向接入设备发送广播报文的应用场景。这里,通过TRILL网络向接入设备发送的广播报文称为下行广播报文。
在本实施例1的应用场景中,为了避免下行广播报文重复发送、以及避免下行广播报文在TRILL网络转发引起转发环路,需要针对接入设备的每一上行端口组指定一个主端口。
在接入设备的上行端口组通过上述的方式1手工配置时,上行端口组的主端口可通过手工指定,比如随机在上行端口组的所有成员端口中指定一个成员端口作为主端口,当然也可按照设定的动态选举方式动态选举,比如选举上行端口组中端口速率最大的一个成员端口作为上行端口组的主端口;
在接入设备的上行端口组通过上述的方式2动态配置时,上行端口组的主端口可通过手工指定,比如随机在上行端口组的所有成员端口中指定一个成员端口作为主端口,当然也可通过动态选举,比如选举上行端口组中端口速率最大的一个成员端口作为上行端口组的主端口,或者选举收到满足以下条件的TRILL协议报文的成员端口:MAC地址最大或者RB标识最大。
以图2所示组网为例,假如作为接入设备的SW-A上存在两个上行端口组,一个为VLAN100对应的上行端口组,记为TrillGroupA,其包含的成员端口为P1、P2,另一个为VLAN200对应的上行端口组,记为TrillGroupB,其包含的成员端口为P2、P3,并且,TrillGroupA中P1为主端口,TrillGroupB中,P3为主端口,则表3示出了SW-A上上行端口组的基本信息:
表3:
上行端口组 |
VLAN |
端口 |
主端口 |
TrillGroupA |
100 |
P1、P2 |
P1 |
TrillGroupB |
200 |
P2、P3 |
P3 |
当接入设备上每一上行端口组均被指定一个主端口后,接入设备会通过该上行端口组中的每一成员端口发送端口通知报文至TRILL网络,该端口通知报文携带了发送该端口通知报文的成员端口所属上行端口组对应的VLAN、以及该成员端口是否为所属上行端口组的主端口的标识。以表3所示的TrillGroupA为例,则作为接入设备的SW-A会通过TrillGroupA的P1发送端口通知报文至TRILL网络,由于表3示出了P1为TrillGroupA的主端口、且TrillGroupA对应VLAN100,因此,SW-A通过TrillGroupA的P1发送的端口通知报文会携带VLAN100、P1为TrillGroupA的主端口的标识,同时,作为接入设备的SW-A也通过TrillGroupA的P2发送端口通知报文至TRILL网络,由于表3示出了TrillGroupA对应VLAN100、且P2不为TrillGroupA的主端口,因此,SW-A通过TrillGroupA的P2发送的端口通知报文携带VLAN100、P2不为TrillGroupA的主端口的标识。
当TRILL网络中的RB收到端口通知报文后,其识别该端口通知报文携带的VLAN,并在该端口通知报文携带了成员端口为主端口的标识时,确认本RB接收到该端口通知报文的端口为与识别出的VLAN对应的优先端口,反之,在该端口通知报文携带了成员端口不为主端口的标识时,本RB接收到该端口通知报文的端口为与识别出的VLAN对应的非优先端口。以图2所示的组网为例,当RB1通过P11端口收到SW-A通过P1发送的端口通知报文时,该端口通知报文携带了VLAN100、以及P1为TrillGroupA的主端口的标识,则RB1将P11作为对应VLAN100的优先端口,当RB2通过P22端口收到SW-A通过P2发送的端口通知报文时,该端口通知报文携带了VLAN100、以及P2不为TrillGroupA的主端口的标识,则RB2将P22作为对应VLAN100的非优先端口,当RB3通过P33端口收到SW-A通过P3发送的端口通知报文时,该端口通知报文携带了VLAN200、以及P3为TrillGroupB的主端口的标识,则RB3将P33作为对应VLAN200的优先端口,当RB2通过P22端口收到SW-A通过P2发送的端口通知报文时,该端口通知报文携带了VLAN200、以及P2不为TrillGroupB的主端口的标识,则RB2将P22作为对应VLAN200的非优先端口。
基于TRILL网络中各个RB确定的对应各个VLAN的优先端口,则本实施例1中,当TRILL网络中各个RB收到向SW-A转发的下行广播报文时,其会先解析该下行广播报文。此时,该下行广播报文包含以太网头,该以太网头中携带目的地址、源地址、VLAN。其中,目的地址为广播地址、或者非已知单播地址、或者组播地址。
TRILL网络中各个RB通过解析下行广播报文识别出该下行广播报文的以太网头包含的VLAN,识别本RB上是否存在对应该VLAN的优先端口,如果是,则通过该识别出的优先端口转发,反之,丢弃该接收的下行广播报文。
以图3所示组网为例,假如RB1通过解析下行广播报文识别出该下行广播报文的以太网头包含的VLAN为VLAN100,则RB1识别本RB1上是否存在对应VLAN100的优先端口,基于上面描述,RB1上的端口P11为对应VLAN100的优先端口,则RB1通过P11发送下行广播报文,而当RB2通过解析下行广播报文识别出该下行广播报文的以太网头包含的VLAN为VLAN100,基于上面描述,RB2上不存在对应VLAN100的优先端口,RB2上的端口P22为对应VLAN100的非优先端口,则RB2丢弃该接收的下行广播报文,图3中的粗线示出了VLAN100的下行广播报文的转发路径。
可以看出,本实施例1中,对某个特定VlAN的下行广播报文,经TRILL网络转发至上行端口组所在的接入设备时,只会通过与该VlAN对应的上行端口组中主端口互联的RB设备转发至接入设备上,这能够一方面避免下行多播报文的多包下发,另一方面能够避免下行广播报文在TRILL网络转发引起转发环路。
当接入设备通过上行端口组的主端口收到下行广播报文后,其会学习该下行广播报文的源MAC地址。本发明中,对上行端口组中的所有成员端口禁止MAC地址学习功能,这一点需要在将成员端口加入至上行端口组时进行设置。由于上行端口组中各成员端口的MAC地址学习功能被禁止,本发明中,接入设备从上行端口组的成员端口上收到下行广播报文需要进行MAC地址学习时,会学习到上行端口组上,根据该下行广播报文携带的VLAN建立MAC转发表项。这里该建立的MAC转发表项包括:接入设备接收的下行广播报文所携带的MAC地址、VLAN、以及接入设备上与该下行广播报文携带的VLAN对应的上行端口组。
以图3所示组网为例,当SW-A通过P1接收到下行广播报文时,如果该下行广播报文携带的VLAN为VLAN100,则SW-A会学习该下行广播报文的源MAC地址,将该学习的源MAC地址学习到VLAN100对应的上行端口组上,建立包含该源MAC地址、VLAN100、VLAN100对应的上行端口组的MAC转发表项。
以VLAN100对应的上行端口组为TrillGroupA为例,则图3中,假如通过TRILL网络向SW-A发送的下行广播报文有100条,该100条下行广播报文均属于VLAN100,假定这100条下行广播报文具有的源MAC地址依次是SA1-SA100,则在SW-A上会创建如表4所示的MAC转发表项:
表4
MAC |
VLANID |
Port |
SA1 |
100 |
TrillGroupA |
.... |
...... |
...... |
SA100 |
100 |
TrillGroupA |
本实施例1中,接入设备建立MAC转发表项,目的是为了方便接入设备向MAC转发表项中的MAC地址转发上行单播报文,这在实施例4中进行了描述。
至此,完成实施例1的描述。
实施例2:
本实施例2应用于从接入设备向TRILL网络发送广播报文的应用场景。这里,从接入设备向TRILL网络发送的广播报文称为上行广播报文。
在本实施例2的应用场景中,接入设备向TRILL网络发送上行广播报文时,先识别上行广播报文携带的VLAN,并识别该上行广播报文携带的哈希(Hash)特征;对该识别出的Hash特征进行Hash运算,从该识别出的VLAN所对应的上行端口组中选取一个对应该Hash运算结果的成员端口,通过该选取的成员端口转发该上行广播报文。这能够实现上行广播报文会被均匀的Hash到上行端口组中各个成员端口上。
考虑到TRILL网络的二层特性,本实施例2中的Hash特征只能是上行广播报文携带的源MAC地址和/或VLAN ID。
如图4所示,从SW-A上收到携带了VLAN100的上行广播报文,则SW-A对该上行广播报文的源MAC地址和/或VLAN 100进行Hash运算,得到Hash运算结果。之后从VLAN100对应的上行端口组中选取对应该Hash运算结果的成员端口,假如选取的成员端口为P1,则就通过该选取的成员端口P1转发上行广播报文,图4中的粗线示出了VLAN100的上行广播报文的转发路径。通常,上行端口组中的成员端口都是有标号的,比如,从预设值如1开始对上行端口组中的成员端口进行标号,基于此,对应Hash运算结果的成员端口可为标号为Hash运算结果的成员端口。
本实施例2中,无论是单条上行广播报文还是多条上行广播报文,总是会选择上行端口组中的某一个成员端口发送至TRILL网络。其中,在有多条上行广播报文时,对于Hash特征不同的上行广播报文会选择不同的上行端口组的成员端口转发至TRILL网络。
需要说明的是,本实施例2中,为了防止上行广播报文通过Hash运算选取成员端口发送至TRILL网络后在TRILL网络内形成环路,本发明中,需要预先针对TRILL网络中的RB之间做隔离处理,即在各RB设备上下发过滤规则,该过滤规则具体为:当通过连接所述接入设备的端口收到上行广播报文时,通过除接收到所述上行广播报文的端口之外的其他端口向邻居RB转发所述上行广播报文;所述上行广播报文为所述接入设备向所述TRILL网络发送的广播报文;当通过连接邻居RB的端口收到邻居RB转发的上行广播报文时,向除连接至接入设备的端口和接收到所述上行广播报文的端口之外的其他端口转发所述上行广播报文。
比如,图4中,当RB1通过连接所述接入设备的端口P11收到上行广播报文时,基于上述过滤规则,RB1会通过除P11之外的端口即图4所示的连接邻居RB2的端口、以及连接RB4的端口转发该收到的上行广播报文。而当RB2通过连接RB1的端口收到上行广播报文时,基于上述过滤规则,其会通过除连接所述接入设备的端口P22、以及连接邻居RB1的端口之外的其他端口即图4所示的连接邻居RB3、邻居RB4的端口转发该收到的上行广播报文。同理,TRILL网络中其他RB通过连接邻居RB的端口收到上行广播报文的处理方式类似RB2,这里不再一一赘述。
当TRILL网络中的RB收到上行广播报文时,其会学习该上行广播报文的源MAC地址,建立对应的MAC转发表项。
假如图4中SW-A向TRILL网络发送属于VLAN100的100个不同源MAC地址(从SSA1至SSA100)的上行广播报文,则基于上面描述的SW-A如何发送上行广播报文的描述,若SW-A通过P1发送源MAC地址为奇数比如SSA1、SSA3、SSA5等的上行广播报文,而通过P2发送源MAC地址为偶数比如SSA2、SSA4、SSA6等的上行广播报文,则TRILL网络中的RB1会先通过本地端口P11接收到源MAC地址为奇数比如SSA1、SSA3、SSA5等的上行广播报文,建立包含VLAN100、所述源MAC地址、以及P11的MAC转发表项,并将本RB1作为源MAC地址为奇数比如SSA1、SSA3、SSA5等的上行广播报文首次进入TRILL网络的设备携带在接收的上行广播报文中告知给邻居RB;而当TRILL网络中的RB2通过本地端口P22接收到源MAC地址为偶数比如SSA2、SSA4、SSA6等的上行广播报文时,其也会建立包含VLAN100、源MAC地址、以及P22的MAC转发表项,并将本RB2作为源MAC地址为偶数比如SSA2、SSA4、SSA6等的上行广播报文首次进入TRILL网络的设备携带在接收的上行广播报文中告知给邻居RB,当RB1收到RB2转发的上行广播报文时,建立包含VLAN100、源MAC地址、以及指向RB2的端口的MAC转发表项,同样,当RB2收到RB1转发的上行广播报文时,建立包含VLAN100、源MAC地址、以及指向RB1的端口的MAC转发表项。以SW-A通过P1发送源MAC地址为奇数比如SSA1、SSA3、SSA5等的上行广播报文,而通过P2发送源MAC地址为偶数比如SSA2、SSA4、SSA6等的上行广播报文为例,则RB1建立的MAC转发表项如表5所示:
表5
MAC |
VLANID |
Port |
SSA1 |
100 |
P11 |
SSA2 |
100 |
指向RB2的端口 |
SSA3 |
100 |
P11 |
...... |
...... |
...... |
SSA100 |
100 |
指向RB2的端口 |
同理,TRILL网络中的RB2建立的MAC转发表项类似RB1建立的MAC转发表项。
本实施例2中,TRILL网络中的RB建立MAC转发表项,目的是为了方便向MAC转发表项中的MAC地址转发下行单播报文,这在实施例3中进行了描述。
至此,完成实施例2的描述。
实施例3:
本实施例3应用于通过TRILL网络向接入设备发送已知单播报文的应用场景。这里,通过TRILL网络向接入设备发送的已知单播报文称为下行已知单播报文。
在本实施例3的应用场景中,通过TRILL网络向接入设备转发下行已知单播报文的前提是TRILL网络中的某一RB已学到了这个下行已知单播报文的目的MAC地址。
本实施例3中,当TRILL网络中的RB收到向接入设备转发的下行已知单播报文,则RB就从本地查找包含下行已知单播报文的目的MAC地址的MAC转发表项,通过该查找到MAC转发表项中的端口发送该下行已知单播报文。
如图5所示,假如本实施例3中TRILL网络中的RB1收到一条向SW-A转发的目的MAC地址(DA)为SSA11的下行已知单播报文,以及收到一条向SW-A转发的目的MAC地址为SSA22的下行已知单播报文,则当RB1转发目的MAC地址为SSA11的下行已知单播报文时,该RB1就从本地建立的MAC转发表项查找包含SSA11的MAC转发表项,基于实施例2中的表5,发现本地存在包含SSA11的MAC转发表项,且该MAC转发表项的端口为P11,则RB1就通过P11发送该目的MAC地址为SSA11的下行已知单播报文。而当RB1转发目的MAC地址为SSA22的下行已知单播报文时,该RB1就从本地建立的MAC转发表项查找包含SSA22的MAC转发表项,基于实施例2中的表5,发现本地存在包含SSA22的MAC转发表项,且该MAC转发表项的端口为指向RB2的端口,RB1先通过指向RB2的端口发送目的MAC地址为SSA22的下行已知单播报文,由RB2通过P22发送该目的MAC地址为SSA22的下行已知单播报文。图5中的粗线分别示出了目的MAC地址为SSA11、SSA22的下行已知单播报文的转发路径。
基于实施例2的描述可以知道,从接入设备送往TRILL网络的上行广播报文实际是由接入设备对上行广播报文携带的Hash特征比如源MAC地址进行Hash运算,依据Hash运算结果从上行广播报文携带的VLAN对应的上行端口组中选择成员端口发送的,这会使得携带不同Hash特征的上行广播报文散列到不同的RB设备上,从而也能使本实施例3中TRILL网络中的不同RB转发不同目的MAC地址的下行已知单播报文,实现负载分担。
至此,完成实施例3的描述。
实施例4:
本实施例4应用于通过接入设备向TRILL网络发送已知单播报文的应用场景。这里,通过接入设备向TRILL网络发送的已知单播报文称为上行已知单播报文。
在本实施例4的应用场景中,通过接入设备向TRILL网络转发上行已知单播报文的前提是接入设备已将该上行已知单播报文的目的MAC地址学习到了对应的上行端口组。
本实施例4中,当接入设备收到向TRILL网络转发的上行已知单播报文,接入设备就从本地查找包含该上行已知单播报文的目的MAC地址的MAC转发表项,基于实施例1中接入设备建立MAC转发表项的描述,则该查找到的MAC转发表项中的端口为上行端口组,如此,接入设备就对该上行已知单播报文携带的Hash特征进行Hash运算,从该查找到的MAC转发表项中的上行端口组中选取一个对应该Hash运算结果的成员端口,通过该选取的成员端口转发该上行已知单播报文。考虑到TRILL网络的二层特性,本实施例4中的Hash特征只能是上行已知单播报文携带的源MAC地址(SA)和/或VLAN ID。
如图6所示,SW-A向TRILL转发属于VLAN100的100条上行已知单播报文,该100条上行已知单播报文的目的MAC地址相同,为SA1,但源MAC地址不同,依次为S1、S2、…..S100,则SW-A针对每一上行已知单播报文,在本地查找是否存在包含该目的MAC地址为SA1的MAC转发表项,如实施例1中的表4所示,SW-A会发现本地存在包含该目的MAC地址为SA1的MAC转发表项,且该存在的MAC转发表项的端口为上行端口组TrillGroupA,基于此,SW-A会依据每一上行已知单播报文携带的源MAC地址和/或VLAN ID进行Hash运算,从TrillGroupA中选取一个对应Hash运算结果的成员端口,通过该选取的成员端口转发该上行已知单播报文。假如通过hash运算,得到源MAC地址为奇数比如S1、S3、.....S99的上行已知单播报文通过TrillGroupA的成员端口P1发送,源MAC地址为偶数比如S2、S4、.....S100的上行已知单播报文通过TrillGroupA的成员端口P2发送,则图6中的粗线示出了这100条上行已知单播报文发送示意图。
由于通过上行端口组转发上行已知单播报文至TRILL网络的方式固定,即依据该上行已知单播报文携带的Hash特征进行Hash运算,从MAC转发表象中与上行已知单播报文的目的MAC地址对应的上行端口组中选取一个对应该Hash运算结果的成员端口,通过该选取的成员端口转发该上行已知单播报文。这能够实现选择对应的成员端口转发上行已知单播报文至TRILL网络。
至此,完成实施例4的描述。
通过以上4个实施例,能够基于接入设备上的上行端口组实现接入设备与TRILL网络之间数据流的负载分担。
优选地,本发明中,为了实现接入设备与TRILL网络之间数据流传输的可靠性,接入设备还可进一步执行以下步骤:
实时检测本接入设备上每一TRILL网络接入端口;
当检测到任一TRILL网络接入端口故障,则从包含该TRILL网络接入端口的上行端口组中删除该故障的TRILL网络接入端口。
其中,基于实施例1的描述,在通过TRILL网络向接入设备转发下行广播报文时,会为每一上行端口组指定一个主端口。基于此,为了保证下行广播报文正常转发,本发明中,还需要接入设备在从包含该故障的TRILL网络接入端口的上行端口组中删除该故障的TRILL网络接入端口时,识别该删除的TRILL网络接入端口,如果该删除的TRILL网络接入端口为一上行接口组比如TrillGroupA的主端口,则重新从该上行端口组比如TrillGroupA剩余的成员端口中选取一个成员端口作为该上行端口组比如TrillGroupA的主端口,并通过该上行端口组比如TrillGroupA中的每一成员端口发送端口通知报文。其中,该为上行端口组比如TrillGroupA选取主端口的方式类似于实施例1中选取主端口的方式;该通过上行端口组比如TrillGroupA中的每一成员端口发送端口通知报文的方式类似于实施例1中成员端口发送端口通知报文的方式,这里不再一一赘述。
以上对本发明实施例提供的方法进行了描述。下面对本发明实施例提供的设备进行描述:
参见图7,图7为本发明实施例提供的接入设备的结构图。其中,如图7所示,所述接入设备包括:
上行端口组单元,用于将所述接入设备上属于同一个虚拟局域网VLAN的TRILL网络接入端口作为成员端口加入至所述VLAN对应的上行端口组;
上行报文发送单元,用于在向TRILL网络发送上行报文时,依据所述上行报文携带的报文标识在本地找到用于转发所述上行报文的上行端口组,按照负载均衡原则从找出的上行端口组中选取一个成员端口转发所述上行报文;所述上行报文为所述接入设备向TRILL网络发送的报文;
检测单元,用于实时检测本设备上的TRILL网络接入端口,当检测到任一TRILL网络接入端口故障时,从包含该故障的TRILL网络接入端口的上行端口组中删除该故障的TRILL网络接入端口。
优选地,所述接入设备还包括:
选取单元,用于从每一上行端口组的成员端口中选取一个成员端口作为该上行端口组的主端口;
通知单元,用于通过每一上行端口组中的每一成员端口发送端口通知报文,每一成员端口发送的端口通知报文携带该成员端口所属的VLAN、以及该成员端口是否为所属上行端口组的主端口的标识,以使接收到端口通知报文的路由桥设备RB依据端口通知报文携带的成员端口是否为所属上行端口组的主端口的标识确定本地是否存在所述端口通知报文携带的VLAN对应的优先端口,并在后续向所述接入设备转发属于所述端口通知报文携带的VLAN的下行广播报文时,仅通过本地存在的所述端口通知报文携带的VLAN对应的优先端口转发;
接收单元,用于通过每一上行端口组的主端口接收RB转发的该主端口所属VLAN的下行广播报文,述下行广播报文为通过TRILL网络向所述接入设备发送的广播报文;
MAC表项单元,用于学习每一上行端口组的主端口接收的下行广播报文所携带的源MAC地址和VLAN,将该主端口所属的上行端口组、以及学习的源MAC地址和VLAN记录至新建立的MAC转发表项。
优选地,所述上行报文为上行已知单播报文,所述报文标识为上行报文的目的MAC地址,所述用于转发上行报文的上行端口组为包含所述目的MAC地址的MAC转发表项中的上行端口组;或者,
所述上行报文为上行广播报文,所述报文标识为所述上行报文携带的VLAN标识,所述用于转发上行报文的上行端口组为包含以下成员端口的上行端口组:属于所述VLAN标识对应的VLAN的TRILL网络接入端口。
优选地,所述上行报文发送单元按照负载均衡原则从找出的上行端口组中选取一个成员端口转发所述上行报文包括:
识别所述上行报文携带的哈希特征,对识别出的所述哈希特征进行哈希运算,得到哈希运算结果;
从该找出的上行端口组中选取一个对应所述哈希运算结果的成员端口,通过该选取的成员端口转发所述上行报文;
所述哈希特征为源MAC地址和/或VLAN标识。
优选地,所述检测单元进一步当上行接口组中被删除的TRILL网络接入端口为上行接口组的主端口时,重新从该上行端口组剩余的成员端口中选取一个成员端口作为该上行端口组的主端口,并触发所述通知单元通过该上行端口组中的每一成员端口发送端口通知报文的操作。
至此,完成图7所示的接入设备结构描述。
参见图8,图8为本发明实施例提供的RB的结构图。如图8所示,所述RB包括:
接收单元,用于接收所述TRILL网络的接入设备通过上行端口组中的成员端口发送的上行报文;其中,所述上行报文为所述接入设备向所述TRILL网络发送的报文;
上行报文处理单元,用于在识别出所述上行报文为上行已知单播报文时,依据所述上行已知单播报文的目的MAC地址转发所述上行已知单播报文,在识别出所述上行报文为上行广播报文时,通过除接收到所述上行广播报文的端口之外的其他端口向邻居RB转发所述上行广播报文;以及,
当通过连接邻居RB的端口收到邻居RB转发的上行广播报文时,除连接至接入设备的端口和接收到所述上行广播报文的端口之外的其他端口转发所述上行广播报文。
优选地,所述RB进一步包括:
通知接收单元,用于接收所述TRILL网络的接入设备通过上行端口组中的成员端口发送的端口通知报文,成员端口发送的端口通知报文携带成员端口所属的VLAN、以及成员端口是否为所属上行端口组的主端口的标识;
识别单元,用于识别所述端口通知报文携带的VLAN,在所述端口通知报文携带了成员端口为所属上行端口组的主端口的标识时,确认本RB接收到该端口通知报文的端口为该识别的VLAN对应的优先端口,在所述端口通知报文携带了成员端口不为所属上行端口组的主端口的标识时,确认本RB接收到所述端口通知报文的端口为该识别的VLAN对应的非优先端口;
下行报文处理单元,用于接收向所述接入设备转发的下行广播报文,识别该下行广播报文携带的VLAN,检查本RB上是否存在对应该VLAN的优先端口,如果是,通过本RB上对应该VLAN的优先端口转发所述下行广播报文,如果否,丢弃所述下行广播报文;其中,所述下行广播报文为通过TRILL网络向所述接入设备发送的广播报文。
至此,完成图8所示的RB的结构描述。
由以上技术方案可以看出,本发明中,不阻塞接入设备上接入TRILL网络的TRILL网络接入端口,而是将接入设备上属于同一个VLAN的TRILL网络接入端口作为成员端口加入至所述VLAN对应的上行端口组,以使接入设备向TRILL网络发送某一VLAN的上行广播或已知单播报文时,从该VLAN对应的上行端口组中选取一个成员端口转发,这对接入设备接入TRILL网络的链路进行了充分利用。
进一步地,本发明中,为接入设备上的上行端口组选取一个主端口,并通过每一上行端口组中的每一成员端口发送端口通知报文,每一成员端口发送的端口通知报文携带该成员端口所属上行端口组对应的VLAN、以及该成员端口是否为所属上行端口组的主端口的标识,这样,当TRILL网络中的RB接收端口通知报文时,识别所述端口通知报文携带的VLAN,在所述端口通知报文携带了成员端口为所属上行端口组的主端口的标识时,确认本RB接收到该端口通知报文的端口为该识别的VLAN对应的优先端口,在所述端口通知报文携带了成员端口不为所属上行端口组的主端口的标识时,确认本RB接收到所述端口通知报文的端口为该识别的VLAN对应的非优先端口;之后,RB在向接入设备转发属于某一VLAN的下行广播报文时,识别本RB上是否存在对应该VLAN的优先端口,如果是,通过本RB上对应该VLAN的优先端口转发所述下行广播报文,如果否,丢弃所述下行广播报文。这能够避免下行广播报文在TRILL网络中转发引起转发环路。
进一步地,本发明中,接入设备实时检测本接入设备上每一TRILL网络接入端口和每一TRILL网络接入端口连接的链路;
当检测到任一TRILL网络接入端口故障或者任一TRILL网络接入端口连接的链路故障,则从包含该TRILL网络接入端口的上行端口组中删除该TRILL网络接入端口,并在该删除的TRILL网络接入端口为一上行接口组的主端口时,重新从该上行端口组剩余的成员端口中选取一个成员端口作为该上行端口组的主端口,并通过该上行端口组中的每一成员端口发送端口通知报文。这能够对接入设备接入TRILL网络的链路故障迅速检测和计算,实现链路的快速切换和链路备份功能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。