发明内容
本发明提供一种不同MST域之间的数据传输方法和设备,以在不同MST域之间实现VLAN负载分担。
为了达到上述目的,本发明提供一种不同多生成树MST域之间的数据传输方法,应用于包括多个MST域的多实例生成树协议MSTP网络中,所述多个MST域内的设备上配置有相同的公有虚拟局域网VLAN与实例映射关系,该方法包括:
MST域内的虚拟代理设备根据所述公有VLAN与实例映射关系计算所述MST域内的各域边界端口在不同实例上的转发状态;
当有域边界端口在所述虚拟代理设备上时,所述虚拟代理设备根据所述转发状态与其它MST域内设备进行数据传输;和/或,当有域边界端口不在所述虚拟代理设备上时,所述虚拟代理设备将所述转发状态通知给域边界端口所在设备,由所述域边界端口所在设备根据所述转发状态与其它MST域内设备进行数据传输。
所述MST域内的虚拟代理设备根据所述公有VLAN与实例映射关系计算所述MST域内的各域边界端口在不同实例上的转发状态,具体包括:
所述虚拟代理设备通过域边界端口映射表记录所述MST域内各域边界端口的信息,并利用从所述域边界端口映射表中记录的域边界端口接收到的来自其它MST域的网桥协议数据单元BPDU报文、以及所述公有VLAN与实例映射关系计算域边界端口在不同实例上的转发状态。
所述虚拟代理设备通过域边界端口映射表记录所述MST域内各域边界端口的信息,具体包括:
在第一次从域边界端口接收到来自其它MST域的BPDU报文时,所述虚拟代理设备获得所述域边界端口的信息,所述域边界端口的信息包括:所述域边界端口所在设备的介质访问控制MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息;
所述虚拟代理设备通过所述域边界端口映射表记录所述域边界端口、所述域边界端口所在设备的MAC地址、所述域边界端口的端口标识、以及所述域边界端口的STP属性信息之间的对应关系。
所述虚拟代理设备获得所述域边界端口的信息,具体包括:
当域边界端口在所述虚拟代理设备上时,所述虚拟代理设备获得自身的MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息;
当域边界端口不在所述虚拟代理设备上时,所述虚拟代理设备接收所述域边界端口所在设备发送的所述域边界端口所在设备的MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息。
从域边界端口接收到来自其它MST域的BPDU报文,具体为:
当域边界端口在所述虚拟代理设备上时,所述虚拟代理设备从所述域边界端口接收来自其它MST域的BPDU报文;
当域边界端口不在所述虚拟代理设备上时,在从所述域边界端口接收到来自其它MST域的BPDU报文后,所述虚拟代理设备接收所述域边界端口所在设备发送的来自其它域的BPDU报文。
所述虚拟代理设备通过域边界端口映射表记录所述MST域内各域边界端口的信息,之后还包括:
所述虚拟代理设备为所述域边界端口映射表中记录的域边界端口生成BPDU报文,并通过所述域边界端口将所述BPDU报文发送给其它MST域,由其它MST域内的虚拟代理设备根据BPDU报文以及公有VLAN与实例映射关系计算域边界端口在不同实例上的转发状态。
所述多个MST域内的设备上配置有VLAN分配表以及域边界端口状态分配表;所述VLAN分配表用于记录VLAN与公有生成树组STG之间的对应关系;所述域边界端口状态分配表用于记录域边界端口、公有STG与转发状态之间的对应关系;
所述虚拟代理设备和/或域边界端口所在设备根据所述转发状态与其它MST域内设备进行数据传输,具体包括:
当需要发送VLAN数据时,所述虚拟代理设备和/或域边界端口所在设备通过所述VLAN查询所述VLAN分配表,获得所述VLAN对应的公有STG;
所述虚拟代理设备和/或域边界端口所在设备通过所述公有STG以及域边界端口查询所述域边界端口状态分配表,获得所述域边界端口在所述公有STG上所对应的转发状态;
所述虚拟代理设备和/或域边界端口所在设备通过所述转发状态与其它MST域内设备进行所述VLAN数据的传输。
所述域边界端口状态分配表中记录的转发状态为所述虚拟代理设备和/或域边界端口所在设备在获得域边界端口在不同实例上的转发状态后,记录到所述域边界端口状态分配表中的。
所述虚拟代理设备和/或域边界端口所在设备根据所述转发状态与其它MST域内设备进行数据传输,具体包括:
当所述转发状态为转发Forwarding状态时,所述虚拟代理设备和/或域边界端口所在设备将VLAN数据发送给其他其它MST域内设备;或者,
当所述转发状态为丢弃Discarding状态时,所述虚拟代理设备和/或域边界端口所在设备丢弃VLAN数据。
一种不同多生成树MST域之间的数据传输设备,应用于包括多个MST域的多实例生成树协议MSTP网络中,所述多个MST域内的设备上配置有相同的公有虚拟局域网VLAN与实例映射关系,该设备为MST域内的虚拟代理设备,且该设备包括:
计算模块,用于根据所述公有VLAN与实例映射关系计算所述MST域内的各域边界端口在不同实例上的转发状态;
处理模块,用于当有域边界端口在虚拟代理设备上时,根据所述转发状态与其它MST域内设备进行数据传输;和/或,当有域边界端口不在虚拟代理设备上时,将所述转发状态通知给域边界端口所在设备,由域边界端口所在设备根据所述转发状态与其它MST域内设备进行数据传输。
所述计算模块,具体用于通过域边界端口映射表记录所述MST域内各域边界端口的信息,并利用从所述域边界端口映射表中记录的域边界端口接收到的来自其它MST域的网桥协议数据单元BPDU报文、以及所述公有VLAN与实例映射关系计算域边界端口在不同实例上的转发状态。
所述计算模块,进一步用于在第一次从域边界端口接收到来自其它MST域的BPDU报文时,获得所述域边界端口的信息,所述域边界端口的信息包括:所述域边界端口所在设备的介质访问控制MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息;以及通过所述域边界端口映射表记录所述域边界端口、所述域边界端口所在设备的MAC地址、所述域边界端口的端口标识、以及所述域边界端口的STP属性信息之间的对应关系。
所述计算模块,进一步用于当域边界端口在虚拟代理设备上时,获得自身的MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息;当域边界端口不在虚拟代理设备上时,接收所述域边界端口所在设备发送的所述域边界端口所在设备的MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息。
所述处理模块从域边界端口接收到来自其它MST域的BPDU报文时,具体用于:当域边界端口在虚拟代理设备上时,从所述域边界端口接收来自其它MST域的BPDU报文;当域边界端口不在虚拟代理设备上时,在从所述域边界端口接收到来自其它MST域的BPDU报文后,接收所述域边界端口所在设备发送的来自其它域的BPDU报文。
所述处理模块,还用于为所述域边界端口映射表中记录的域边界端口生成BPDU报文,并通过所述域边界端口将所述BPDU报文发送给其它MST域,由其它MST域内的虚拟代理设备根据BPDU报文以及公有VLAN与实例映射关系计算域边界端口在不同实例上的转发状态。
所述多个MST域内的设备上配置有VLAN分配表以及域边界端口状态分配表;所述VLAN分配表用于记录VLAN与公有生成树组STG之间的对应关系;所述域边界端口状态分配表用于记录域边界端口、公有STG与转发状态之间的对应关系;
所述处理模块,具体用于当需要发送VLAN数据时,通过所述VLAN查询所述VLAN分配表,获得所述VLAN对应的公有STG;通过所述公有STG以及域边界端口查询所述域边界端口状态分配表,获得所述域边界端口在所述公有STG上所对应的转发状态;通过所述转发状态与其它MST域内设备进行所述VLAN数据的传输。
所述处理模块,进一步用于当所述转发状态为转发Forwarding状态时,将VLAN数据发送给其它MST域内设备;或者,当所述转发状态为丢弃Discarding状态时,丢弃VLAN数据。
一种不同多生成树MST域之间的数据传输设备,应用于包括多个MST域的多实例生成树协议MSTP网络中,所述多个MST域内的设备上配置有相同的公有虚拟局域网VLAN与实例映射关系,该设备为域边界端口所在设备,且与MST域内的虚拟代理设备通信,且该设备包括:
通信模块,用于在MST域内的虚拟代理设备根据所述公有VLAN与实例映射关系计算出所述MST域内的各域边界端口在不同实例上的转发状态后,接收来自所述虚拟代理设备发送的所述转发状态;
处理模块,用于根据所述转发状态与其它MST域内设备进行数据传输。
所述通信模块,还用于在第一次从域边界端口接收到来自其它MST域的BPDU报文时,获得所述域边界端口所在设备的介质访问控制MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息;并将所述域边界端口所在设备的MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息发送给所述虚拟代理设备。
所述多个MST域内的设备上配置有VLAN分配表以及域边界端口状态分配表;所述VLAN分配表用于记录VLAN与公有生成树组STG之间的对应关系;所述域边界端口状态分配表用于记录域边界端口、公有STG与转发状态之间的对应关系;
所述处理模块,具体用于当需要发送VLAN数据时,通过所述VLAN查询所述VLAN分配表,获得所述VLAN对应的公有STG;通过所述公有STG以及域边界端口查询所述域边界端口状态分配表,获得所述域边界端口在所属公有STG上所对应的转发状态;通过所述转发状态与其它MST域内设备进行所述VLAN数据的传输。
所述处理模块,进一步用于当所述转发状态为转发Forwarding状态时,将VLAN数据发送给其它MST域内设备;或者,当所述转发状态为丢弃Discarding状态时,丢弃VLAN数据。
与现有技术相比,本发明至少具有以下优点:通过在多个MST域内的各设备上配置相同的公有VLAN与实例映射关系,以实现不同MST域之间流量的负载分担;且可以充分利用不同MST域之间的空闲链路,从而降低域边界端口所在链路发生拥塞的可能性。
具体实施方式
本发明提出一种不同MST域之间的数据传输方法,该方法应用于包括多个MST域的MSTP网络中,在多个MST域内的所有设备上,均配置有公有VLAN与实例映射关系以及私有VLAN与实例映射关系,且同一MST域内的设备上配置的私有VLAN与实例映射关系相同,不同MST域内的设备上配置的公有VLAN与实例映射关系相同。
具体的,需要为每台设备配置私有VLAN与实例映射关系和公有VLAN与实例映射关系;私有VLAN与实例映射关系用于同一MST域内的负载分担(即同一MST域内的设备根据私有VLAN与实例映射关系来生成MST域内的MSTI,以进行流量转发的负载分担);公有VLAN与实例映射关系用于不同MST域之间的负载分担(即不同MST域之间根据公有VLAN与实例映射关系来生成MST域间的MSTI,以进行流量转发的负载分担)。
此外,需要注意的是,域名、修订级别等配置信息也需要区分私有和公有,本发明中不再赘述。
由于为每台设备配置有私有VLAN与实例映射关系和公有VLAN与实例映射关系,因此需要对现有MSTP BPDU(Bridge Protocol Data Unit,网桥协议数据单元)报文格式进行扩展,如表1所示,为了兼容现有的BPDU报文,在现有BPDU报文后增加Public MSTI Configuration字段,并通过Private MSTIConfiguration表示私有VLAN与实例映射关系所对应的相关信息,通过PublicMSTI Configuration表示私有VLAN与实例映射关系所对应的相关信息。
表1
本发明中,为了实现不同MST域之间的负载分担,需要将MST域虚拟成一台设备,并从MST域内选择一个设备作为MST域的虚拟代理设备,该MST域内的域边界端口为该虚拟代理设备的端口,且MST域的所有域边界端口发送和接收的BPDU报文均由该虚拟代理设备负责计算和处理(如计算出MST域内所有域边界端口的端口角色和转发状态,在后续过程中详细说明)。
需要注意的是,由于不同MST域的虚拟代理设备(每个MST域均会选择出其对应的虚拟代理设备)具有相同的公有VLAN与实例的映射关系,因此不同MST域的虚拟代理设备将被认为在同一MST域中,且在不同MST域的虚拟代理设备属于同一MST域后,域边界端口的端口角色和转发状态均可以由MST域的虚拟代理设备计算得到,从而实现不同MST域之间按照公有VLAN与实例映射关系得到的不同生成树拓扑进行负载分担(即不同MST域之间生成公有MSTI,MST域间流量按照公有MSTI进行转发)。
在从MST域内选择出一个设备作为MST域的虚拟代理设备的过程中,可以根据实际情况任意选择,如可以选择MST域实例0的域根设备成为本MST域的虚拟代理设备。
基于上述情况,如图2所示,该数据传输方法包括以下步骤:
步骤201,MST域内设备根据私有VLAN与实例映射关系计算MST域内各端口在不同实例上的转发状态;以及,MST域内的虚拟代理设备根据公有VLAN与实例映射关系计算MST域内的各域边界端口在不同实例上的转发状态。
一、计算MST域内各端口在不同实例上的转发状态。
在同一个MST域内,MST域内各设备根据私有VLAN与实例映射关系计算MST域内各端口在不同实例上的转发状态,继而可以根据MST域内各端口在不同实例上的转发状态生成MST域内的私有MSTI。具体的,MST域内各设备可根据BPDU报文中Pfivate MSTI Configuration字段、以及私有VLAN与实例映射关系计算出MST域内MSTI,且MST域内流量按照MST域内的MSTI进行转发。
二、计算MST域内的各域边界端口在不同实例上的转发状态。
在不同MST域之间,由MST域内的虚拟代理设备根据公有VLAN与实例映射关系计算MST域内的各域边界端口在不同实例上的转发状态,继而可以根据各域边界端口在不同实例上的转发状态生成多个MST域之间的公有MSTI。具体的,MST域内的虚拟代理设备通过域边界端口映射表记录MST域内各域边界端口的信息,并利用从域边界端口映射表中记录的域边界端口接收到的来自其它MST域的BPDU报文、以及公有VLAN与实例映射关系计算域边界端口在不同实例上的转发状态;以及,为域边界端口映射表中记录的域边界端口生成BPDU报文,通过域边界端口将BPDU报文发送给其它MST域,由其它MST域内的虚拟代理设备根据BPDU报文及公有VLAN与实例映射关系计算域边界端口在不同实例上的转发状态。
由于虚拟代理设备负责计算和处理MST域的所有域边界端口发送和接收的BPDU报文,且由于MST域可能存在多个域边界端口,多个域边界端口又可能在不同设备上,因此虚拟代理设备需要为MST域的所有域边界端口维护域边界端口映射表(用于记录MST域内各域边界端口的信息);通过该域边界端口映射表,虚拟代理设备可以获知其它MST域的BPDU报文是从哪个域边界端口收到的,继而可计算出该域边界端口的端口角色和转发状态。
本发明中,虚拟代理设备通过域边界端口映射表记录MST域内各域边界端口的信息,具体包括:在第一次从域边界端口接收到来自其它MST域的BPDU报文(此时可确定接收到BPDU报文的端口为域边界端口)时,虚拟代理设备获得域边界端口的信息,该域边界端口的信息包括但不限于:域边界端口所在设备的MAC地址、域边界端口的端口标识以及域边界端口的STP(Spanning Tree Protocol,生成树协议)属性信息;之后,虚拟代理设备通过域边界端口映射表记录该域边界端口(如域边界端口1等标识)、该域边界端口所在设备的MAC地址、域边界端口的端口标识(实际端口标识)、域边界端口的STP属性信息之间的对应关系。其中,域边界端口映射表中记录的域边界端口的信息并不局限于上述信息;例如还可以有域边界端口的端口优先级,域边界端口的端口路径开销,以及其它STP属性等信息,在此不再赘述。
此外,在虚拟代理设备通过域边界端口映射表记录MST域内各域边界端口的信息之后,如果网络部署情况发生变化,域边界端口映射表中记录的域边界端口不再是域边界端口时,则虚拟代理设备还需要从域边界端口映射表中删除该域边界端口的信息。
需要注意的是,基于不同的组网情况,域边界端口可以在虚拟代理设备上(即域边界端口所在设备为虚拟代理设备),也可以不在虚拟代理设备上(即域边界端口所在设备不是虚拟代理设备);对于多个域边界端口来说,可有域边界端口所在设备为虚拟代理设备,也可有域边界端口所在设备不是虚拟代理设备。
因此,当域边界端口在虚拟代理设备上时,虚拟代理设备获得域边界端口的信息,包括:虚拟代理设备在从域边界端口接收到来自其它MST域的BPDU报文(可确定接收到BPDU报文的端口为MST域的域边界端口)时,可直接获得自身的MAC地址、域边界端口的端口标识以及域边界端口的STP属性信息。
虚拟代理设备利用接收到的来自其它MST域的BPDU报文、以及公有VLAN与实例映射关系计算域边界端口的在不同实例上转发状态,包括:虚拟代理设备在从域边界端口接收到来自其它MST域的BPDU报文后,可利用BPDU报文中携带的信息、域边界端口映射表中记录的信息、MSTP的生成树算法、以及公有VLAN与实例映射关系进行计算,以得到域边界端口在不同实例上的角色和转发状态。
当域边界端口不在虚拟代理设备上时,虚拟代理设备获得域边界端口的信息包括:在域边界端口所在设备从域边界端口接收到来自其它MST域的BPDU报文(域边界端口所在设备确定接收到BPDU报文的端口为MST域的域边界端口)时,域边界端口所在设备获得自身的MAC地址、域边界端口的端口标识以及域边界端口的STP属性信息,并将获得的MAC地址、域边界端口的端口标识以及域边界端口的STP属性信息(可将信息封装到报文中)发送给虚拟代理设备;之后,虚拟代理设备接收域边界端口所在设备发送的域边界端口所在设备的MAC地址、域边界端口的端口标识以及域边界端口的STP属性信息。
虚拟代理设备利用接收到的来自其它MST域的BPDU报文、以及公有VLAN与实例映射关系计算域边界端口在不同实例上的转发状态,包括:在域边界端口所在设备从域边界端口接收到来自其它MST域的BPDU报文时,域边界端口所在设备将来自其它MST域的BPDU报文(可将BPDU报文封装在报文中)发送给虚拟代理设备;之后,虚拟代理设备接收域边界端口所在设备发送的来自其它MST域的BPDU报文,并可利用BPDU报文中携带的信息、域边界端口映射表中记录的信息、MSTP的生成树算法、以及公有VLAN与实例映射关系进行计算,以得到域边界端口在不同实例上的端口角色和转发状态。
步骤202,MST域内设备根据MST域内各端口在不同实例上的转发状态与本MST域内其它设备进行数据传输;以及,域边界端口所在设备根据MST域内的各域边界端口在不同实例上的转发状态与其它MST域内设备进行数据传输。
在同一个MST域内的数据传输过程中,MST域内设备可以直接根据MST域内各端口在不同实例上的转发状态与本MST域内其它设备进行数据传输;在不同MST域之间的数据传输过程中,当有域边界端口在虚拟代理设备上时,则虚拟代理设备可以直接根据转发状态与其它MST域内设备进行数据传输;和/或,当有域边界端口不在虚拟代理设备上时,则虚拟代理设备需要将转发状态通知给域边界端口所在设备,由域边界端口所在设备根据该转发状态与其它MST域内设备进行数据传输。
本发明中,在多个MST域内的各设备上均配置有VLAN分配表、域内端口状态分配表以及域边界端口状态分配表;该VLAN分配表用于记录VLAN与公有STG(Spanning Tree Group,生成树组)、私有STG之间的对应关系;该域内端口状态分配表用于记录域内端口、私有STG与转发状态之间的对应关系;该域边界端口状态分配表用于记录域边界端口、公有STG与转发状态之间的对应关系。其中,域内端口状态分配表中的转发状态由设备本身计算得到;域边界端口状态分配表中的转发状态由虚拟代理设备计算得到。
具体的,二层拓扑协议在数据上的负载分担和转发控制是通过MSTP的寄存器实现的,且和MSTP相关的寄存器包括VLAN分配表和端口状态分配表;MSTP的每个实例对应一组VLAN,通过将一个实例映射到一个硬件STG上来实现,即将多个VLAN映射到一个STG上,再使STG和实例一一对应。基于此,当设备具有私有VLAN与实例映射关系、公有VLAN与实例映射关系后,需要对应的配置有私有STG和公有STG;且需要对应的配置有域内端口状态分配表和域边界端口状态分配表。
因此,根据VLAN与实例的映射关系,VLAN可分别对应私有STG和公有STG;VLAN分配表中将记录VLAN与公有STG、私有STG之间的对应关系;且一个VLAN对应唯一的私有STG和公有STG,一个私有STG或一个公有STG可对应多个VLAN。如表2、表3、表4所示,分别为VLAN分配表、域内端口状态分配表以及域边界端口状态分配表。
表2
VLAN索引 |
0 |
1 |
2 |
3 |
... |
4093 |
4094 |
4095 |
私有STG号 |
0 |
1 |
1 |
2 |
... |
5 |
6 |
6 |
公有STG号 |
0 |
8 |
7 |
6 |
... |
3 |
2 |
1 |
表3
表4
基于在多个MST域内的各设备上配置的VLAN分配表、域内端口状态分配表以及域边界端口状态分配表;设备在收到某个VLAN数据后,先从VLAN分配表中获取该VLAN对应的私有STG和公有STG;然后从域内端口状态分配表中查找端口和私有STG的对应状态,从域边界端口状态分配表中查找端口和公有STG的对应状态;如果是Discarding(丢弃)状态,则丢弃VLAN数据;如果是Forwarding(转发)状态,则正常转发VLAN数据。
以下对不同MST域之间的数据传输过程进行具体说明。虚拟代理设备和/或域边界端口所在设备根据转发状态与其它MST域内设备进行数据传输,具体包括:当需要发送VLAN数据时,虚拟代理设备和/或域边界端口所在设备通过VLAN查询VLAN分配表,获得VLAN对应的公有STG;虚拟代理设备和/或域边界端口所在设备通过公有STG以及域边界端口查询域边界端口状态分配表,获得域边界端口在该公有STG上所对应的转发状态(域边界端口状态分配表中记录的转发状态为虚拟代理设备和/或域边界端口所在设备在获得域边界端口在不同实例上的转发状态后,记录到域边界端口状态分配表中的);虚拟代理设备和/或域边界端口所在设备通过转发状态与其它MST域内设备进行VLAN数据的传输。当转发状态为Forwarding状态时,虚拟代理设备和/或域边界端口所在设备将VLAN数据发送给其它MST域内设备;当转发状态为Discarding状态时,虚拟代理设备和/或域边界端口所在设备丢弃VLAN数据。
以下结合具体的应用场景对本发明进行进一步的说明。
如图3所示的应用场景示意图,假设存在MST 1域和MST 2域这两个不同的MST域,Switch A、Switch B和Switch C属于同一个MST域,且有如下私有VLAN与实例映射关系:
Switch D和Switch E属于同一个MST域,且有如下私有VLAN与实例映射关系:
此外,Switch A、Switch B、Switch C、Switch D和Switch E还有如下公有VLAN与实例映射关系:
后续过程以MST 1域举例说明,MST 2域是类似过程,不再重复赘述。
(1)如图4所示,为MST 1域内的MSTI示意图,MST 1域内生成不同的MSTI,且VLAN1流量按照实例1的生成树路径转发,VLAN2流量按照实例2的生成树路径转发,其余流量按照实例0的生成树路径转发。此外,MST 1域的域边界端口为Switch A的Port a1和Switch C的Port c1。
(2)假设Switch B是MST 1域实例0的域根,则Switch B作为本MST域的虚拟代理设备。Switch A和Switch C将各自域边界端口的信息和属性封装到报文中,发送给Switch B,由Switch B建立域边界端口映射表。
以Switch A的发送过程为例,则Switch A确定出Port a1是域边界端口后,将本设备MAC、Port a1的端口号、Port a1端口下的STP配置(包括:所有实例的端口优先级和路径开销等STP属性)用TLV字段表示,并封装到表5所示的报文中,发送给Switch B。
表5
Switch B接收到Switch A的报文后,将其解析出来,开建立表6所示的域边界端口映射表。
表6
(3)Switch B负责计算和处理MST域1的所有域边界端口发送和接收的BPDU报文。其中:
Switch B根据MSTP算法和域边界端口映射表,为域边界端口生成对应的BPDU报文,将其封装在互相能够识别的报文(包含BPDU报文数据、域边界端口所在设备的MAC地址、以及域边界端口的ID等信息)中,并将其发送给域边界端口所在设备,由该域边界端口所在设备在接收到该BPDU报文后,从对应的域边界端口发送出去。
域边界端口Switch A的Port a1和Switch C的Port c1接收到其它MST域的BPDU报文后,将其封装在互相能够识别的报文(包含接收到的BPDU、本设备MAC地址和域边界端口的ID等信息)中,并发送给本域的虚拟代理设备Switch B。Switch B根据接收到的域边界端口的BPDU报文、公有VLAN与实例映射关系和域边界端口映射表,按照MSTP的算法,得到对应域边界端口的端口角色和转发状态,并将其封装到TLV字段中发送给域边界端口所在设备Switch A和Switch C。之后,域边界端口Switch A的Port a1和SwitchC的Port c1按照虚拟代理设备计算的结果进行流量转发。如图5所示,为两个不同MST域之间实现不同生成树的组网图。
(4)Switch A根据本设备私有VLAN与实例映射关系和公有VLAN与实例映射关系,初始化STG,得到表7所示的VLAN分配表。其中,VLAN支持的范围为0~4095,实际情况中,VLAN 0和VLAN 4095被保留不用,本方案中默认将这个两个VLAN放到实例0中。
表7
VLAN索引 |
0 |
1 |
2 |
.. |
2000 |
2001 |
... |
4000 |
4001 |
... |
4094 |
4095 |
私有STG号 |
0 |
1 |
2 |
.. |
0 |
0 |
... |
0 |
0 |
... |
0 |
0 |
公有STG号 |
0 |
1 |
1 |
.. |
1 |
2 |
... |
2 |
0 |
... |
0 |
0 |
(5)Switch A得到本设备域内端口的角色和转发状态,建立表8所示的域内端口状态分配表;Switch A接收到从虚拟代理设备Switch B发送的携带了域边界端口Port a1计算的端口角色和状态的报文,从中解析出对应的信息,更新到自身的域边界端口状态分配表中,如表9所示。其中,域内端口状态分配表中的Forwarding和Discarding由设备本身计算得到;域边界端口状态分配表中的Forwarding和Discarding由MST域虚拟代理设备计算得到。
表8
表9
基于与上述方法同样的发明构思,本发明还提出一种不同多生成树MST域之间的数据传输设备,应用于包括多个MST域的多实例生成树协议MSTP网络中,所述多个MST域内的设备上配置有相同的公有虚拟局域网VLAN与实例映射关系,该设备为MST域内虚拟代理设备,如图6所示,该设备包括:
计算模块11,用于根据所述公有VLAN与实例映射关系计算所述MST域内的各域边界端口在不同实例上的转发状态;
处理模块12,用于当有域边界端口在虚拟代理设备上时,根据所述转发状态与其它MST域内设备进行数据传输;和/或,当有域边界端口不在虚拟代理设备上时,将所述转发状态通知给域边界端口所在设备,由域边界端口所在设备根据所述转发状态与其它MST域内设备进行数据传输。
所述计算模块11,具体用于通过域边界端口映射表记录所述MST域内各域边界端口的信息,并利用从所述域边界端口映射表中记录的域边界端口接收到的来自其它MST域的网桥协议数据单元BPDU报文、以及所述公有VLAN与实例映射关系计算域边界端口在不同实例上的转发状态。
所述计算模块11,进一步用于在第一次从域边界端口接收到来自其它MST域的BPDU报文时,获得所述域边界端口的信息,所述域边界端口的信息包括:所述域边界端口所在设备的介质访问控制MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息;以及通过所述域边界端口映射表记录所述域边界端口、所述域边界端口所在设备的MAC地址、所述域边界端口的端口标识、以及所述域边界端口的STP属性信息之间的对应关系。
所述计算模块11,进一步用于当域边界端口在虚拟代理设备上时,获得自身的MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息;当域边界端口不在虚拟代理设备上时,接收所述域边界端口所在设备发送的所述域边界端口所在设备的MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息。
所述处理模块12从域边界端口接收到来自其它MST域的BPDU报文时,具体用于:当域边界端口在虚拟代理设备上时,从所述域边界端口接收来自其它MST域的BPDU报文;当域边界端口不在虚拟代理设备上时,在从所述域边界端口接收到来自其它MST域的BPDU报文后,接收所述域边界端口所在设备发送的来自其它域的BPDU报文。
所述处理模块12,还用于为所述域边界端口映射表中记录的域边界端口生成BPDU报文,并通过所述域边界端口将所述BPDU报文发送给其它MST域,由其它MST域内的虚拟代理设备根据BPDU报文以及公有VLAN与实例映射关系计算域边界端口在不同实例上的转发状态。
所述多个MST域内的设备上配置有VLAN分配表以及域边界端口状态分配表;所述VLAN分配表用于记录VLAN与公有生成树组STG之间的对应关系;所述域边界端口状态分配表用于记录域边界端口、公有STG与转发状态之间的对应关系;
所述处理模块12,具体用于当需要发送VLAN数据时,通过所述VLAN查询所述VLAN分配表,获得所述VLAN对应的公有STG;通过所述公有STG以及域边界端口查询所述域边界端口状态分配表,获得所述域边界端口在所述公有STG上所对应的转发状态;通过所述转发状态与其它MST域内设备进行所述VLAN数据的传输。
所述处理模块12,进一步用于当所述转发状态为转发Forwarding状态时,将VLAN数据发送给其它MST域内设备;或者,当所述转发状态为丢弃Discarding状态时,丢弃VLAN数据。
基于与上述方法同样的发明构思,本发明还提出一种不同多生成树MST域之间的数据传输设备,应用于包括多个MST域的多实例生成树协议MSTP网络中,所述多个MST域内的设备上配置有相同的公有虚拟局域网VLAN与实例映射关系,该设备为域边界端口所在设备,且该设备与MST域内的虚拟代理设备为独立存在的设备,二者可以进行通信,如图7所示,该设备包括:
通信模块21,用于在MST域内的虚拟代理设备根据所述公有VLAN与实例映射关系计算出所述MST域内的各域边界端口在不同实例上的转发状态后,接收来自所述虚拟代理设备发送的所述转发状态;
处理模块22,用于根据所述转发状态与其它MST域内设备进行数据传输。
所述通信模块21,还用于在第一次从域边界端口接收到来自其它MST域的BPDU报文时,获得所述域边界端口所在设备的介质访问控制MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息;并将所述域边界端口所在设备的MAC地址、所述域边界端口的端口标识以及所述域边界端口的STP属性信息发送给所述虚拟代理设备。
所述多个MST域内的设备上配置有VLAN分配表以及域边界端口状态分配表;所述VLAN分配表用于记录VLAN与公有生成树组STG之间的对应关系;所述域边界端口状态分配表用于记录域边界端口、公有STG与转发状态之间的对应关系;
所述处理模块22,具体用于当需要发送VLAN数据时,通过所述VLAN查询所述VLAN分配表,获得所述VLAN对应的公有STG;通过所述公有STG以及域边界端口查询所述域边界端口状态分配表,获得所述域边界端口在所属公有STG上所对应的转发状态;通过所述转发状态与其它MST域内设备进行所述VLAN数据的传输。
所述处理模块22,进一步用于当所述转发状态为转发Forwarding状态时,将VLAN数据发送给其它MST域内设备;或者,当所述转发状态为丢弃Discarding状态时,丢弃VLAN数据。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。