发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种获取设备间拓扑连接关系的方法、系统及装置。
本发明实施例提供了一种获取设备间拓扑连接关系的方法,该方法包括:
第一交换机通过自身的每个LINK UP端口发送MAC通知报文,其中,所述MAC通知报文的源地址和目的地址为每个端口的MAC地址或者所述第一交换机的桥MAC;
根据第二交换机返回的拓扑收集报文,获取第二交换机的桥MAC和端口MAC以及第二交换机学习的MAC地址,并计算自身及组网中每台第二交换机学习到第一交换机端口MAC或者桥MAC的端口对应的关联交换机组,及非关联交换机组的信息;
第一交换机针对自身的每个LINK UP端口,判断该端口对应的关联交换机组中包含的第二交换机的数量是否为2;
当数量为2时,根据该关联交换机组中包含的第二交换机学习到自身该端口的MAC地址的端口,确定自身的该端口与该第二交换机学习到自身该端口的MAC地址的端口直接连接;
当数量不为2时,针对该关联交换机组中包含的每台第二交换机,确定该第二交换机学习到自身该端口MAC地址的端口,判断对应该学习到自身该端口MAC地址的端口的关联交换机组中排除第一交换机该端口对应的非关联交换机组中的每台第二交换机后,该关联交换机组中剩余的交换机数量是否为2;当数量为2时,确定自身的该端口与该第二交换机学习到自身该端口MAC地址的端口直接连接,否则,确定与该端口直接连接的第二交换机的数量不止1台或者与该第二交换机学习到自身该端口MAC地址的端口非直接连接。
为了准确的确定交换机间的连接拓扑关系,在本发明实施例中,当第一交换机该端口对应的关联交换机组中每台第二交换机学习到该第一交换机该端口MAC地址的端口、对应的关联交换机组中剩余的交换机的数量都不为2时,所述方法还包括:
确定所述每台第二交换机学习到自身该端口MAC地址的端口对应的关联交换机组中剩余的交换机的交集;
根据该剩余的交换机的交集中每台第二交换机学习到该第一交换机该端口MAC地址的端口,确定自身的该端口与该交集中每台第二交换机学习到自身该端口MAC地址的端口直接连接,且该交集中的剩余交换机之间通过共享链路连接。
为了准确的确定交换机间的连接拓扑关系,在本发明实施例中,所述第一交换机通过自身的每个LINK UP端口发送MAC通知报文包括:
所述第一交换机按照设定的周期,通过自身的每个LINK UP端口发送MAC通知报文;或,
当所述第一交换机被开启时、或接收到link up或接收到link down消息时,通过自身的每个LINK UP端口发送MAC通知报文。
为了防止风暴的发生,减少带宽资源的浪费,在本发明实施例中,所述第一交换机通过自身的每个LINK UP端口发送MAC通知报文包括:
所述第一交换机通过自身的每个LINK UP端口发送MAC通知报文,接收到该MAC通知报文的第二交换机判断自身是否学习到所述MAC通知报文中的MAC地址;
当第二交换机学习到所述MAC地址时,第二交换机停止转发该MAC通知报文,否则,第二交换机学习该MAC地址并转发该MAC通知报文。
为了准确的确定交换机间的连接拓扑关系,在本发明实施例中,所述计算自身及组网中每台第二交换机学习到第一交换机端口MAC或者桥MAC的端口对应的关联交换机组,及非关联交换机组的信息包括:
所述第一交换机根据返回拓扑收集报文的每台第二交换机的桥MAC和端口MAC,确定该第二交换机位于该端口的关联交换机组中,并通过拓扑收集报文中携带的第二交换机的桥MAC和端口MAC以及第二交换机学习的MAC地址,计算每个第二交换机学习到第一交换机端口MAC或者桥MAC的端口对应的关联交换机组及非关联交换机组的信息。
本发明实施例提供了一种获取设备间拓扑连接关系的装置,所述装置包括:
发送模块,用于通过自身的每个LINK UP端口发送MAC通知报文,其中,所述MAC通知报文的源地址和目的地址为每个端口的MAC地址或者所述第一交换机的桥MAC;
获取模块,用于根据第二交换机向返回的拓扑收集报文,获取第二交换机的桥MAC和端口MAC以及第二交换机学习的MAC地址,并计算自身及组网中每台第二交换机学习到第一交换机端口MAC或者桥MAC的端口对应的关联交换机组,及非关联交换机组的信息;
拓扑关系确定模块,用于针对自身的每个LINK UP端口,判断该端口对应的关联交换机组中包含的第二交换机的数量是否为2;当数量为2时,根据该关联交换机组中包含的第二交换机学习到自身该端口的MAC地址的端口,确定自身的该端口与该第二交换机学习到自身该端口的MAC地址的端口直接连接;当数量不为2时,针对该关联交换机组中包含的每台第二交换机,确定该第二交换机学习到自身该端口MAC地址的端口,判断对应该学习到自身该端口MAC地址的端口的关联交换机组中排除自身的该端口对应的非关联交换机组中的每台第二交换机后,该关联交换机组中剩余的交换机数量是否为2;当数量为2时,确定自身的该端口与该第二交换机学习到自身该端口MAC地址的端口直接连接,否则,确定与该端口直接连接的该第二交换机数量不止1台,或者与第二交换机学习到自身该端口MAC地址的端口非直接连接。
为了准确的确定交换机间的连接拓扑关系,在本发明实施例中,所述拓扑关系确定模块,还用于当确定自身该端口对应的关联交换机组中每台第二交换机学习到该第一交换机该端口MAC地址的端口、对应的关联交换机组中剩余的交换机的数量都不为2时,确定所述每台第二交换机学习到自身该端口MAC地址的端口对应的关联交换机组中剩余的交换机的交集;根据该剩余的交换机的交集中每台第二交换机学习到该第一交换机该端口MAC地址的端口,确定自身的该端口与该交集中每台第二交换机学习到自身该端口MAC地址的端口直接连接,且该交集中的剩余交换机之间通过共享链路连接。
为了准确的确定交换机间的连接拓扑关系,在本发明实施例中,所述发送模块,具体用于按照设定的周期,通过自身的每个LINK UP端口发送MAC通知报文;或,当自身被开启时、或接收到link up或接收到link down消息时,通过自身的每个LINK UP端口发送MAC通知报文。
为了准确的确定交换机间的连接拓扑关系,在本发明实施例中,所述获取模块,具体用于根据返回拓扑收集报文的每台第二交换机的桥MAC和端口MAC,确定该第二交换机位于该端口的关联交换机组中,并通过拓扑收集报文中携带的第二交换机的桥MAC和端口MAC以及第二交换机学习的MAC地址,计算每个第二交换机学习到第一交换机端口MAC或者桥MAC的端口对应的关联交换机组及非关联交换机组的信息。
本发明实施例提供了一种获取设备间拓扑关系的系统,所述系统包括上述装置,及向所述装置返回拓扑收集报文的至少一台第二交换机。
为了防止风暴的发生,减少带宽资源的浪费,所述第二交换机,还用于接收到该MAC通知报文时,判断自身是否学习到所述MAC通知报文中的MAC地址;当学习到所述MAC地址时,停止转发该MAC通知报文,否则,转发该MAC通知报文。
本发明实施例提供了一种获取设备间拓扑连接关系的方法、系统及装置,该方法中第一交换机通过自身的每个LINK UP端口发送目的地址和源地址都为该端口MAC地址的MAC通知报文,从而确定自身及组网中每台第二交换机的每个端口对应的关联交换机组和非关联交换机组的信息,针对每个端口当其对应的关联交换机组中包含的第二交换机的数量为2时,则确定第一交换机的该端口与该关联交换机组中第二交换机学习到自身该端口MAC地址的端口直接连接,当其对应的关联交换机组中包含的第二交换机的数量不为2时,根据该关联交换机组中去除第一交换机该端口对应的非关联交换机组后剩余的交换机数量是否为2,根据该数量是否为2,确定该第一交换机的该端口是否与该剩余的交换机直接连接。由于在本发明实施例中每台交换机通过自身的每个LINK UP端口发送MAC通知报文,并根据关联交换机组及非关联交换机组中每台交换机的信息,确定交换机端口间的连接关系,从而实现了设备间拓扑连接关系的确定。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
为了确定设备间的拓扑连接关系,本发明实施例提供了一种获取设备间拓扑连接关系的方法、系统及装置。
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
下面结合说明附图,对本发明实施例进行说明。
图2为本发明实施例提供的一种获取设备间拓扑连接关系的过程图,该过程包括以下步骤:
S201:第一交换机通过自身的每个LINK UP端口发送MAC通知报文,其中,所述MAC通知报文的源地址和目的地址为每个端口的MAC地址或者所述第一交换机的桥MAC。
在本发明实施例中,组网中的每台交换机都会通过自身的每个LINK UP端口发送MAC通知报文,该MAC通知报文的源地址和目的地址都是该端口的MAC地址或者所述第一交换机的桥MAC。这样的通知报文被其他的交换机接收到后,不会上CPU处理,但是能被学习到。
该MAC通知报文可以是按照设定的时间周期发送的,或者按照其他的方式发送的。
S202:根据第二交换机返回的拓扑收集报文,获取第二交换机的桥MAC和端口MAC以及第二交换机学习的MAC地址,并计算自身及组网中每台第二交换机学习到第一交换机端口MAC或者桥MAC的端口对应的关联交换机组,及非关联交换机组的信息。
根据向每个端口返回拓扑收集报文的第二交换机,确定该端口对应的关联交换机组,在本发明实施例中将通过某一端口返回拓扑收集报文的交换机,作为该端口对应的关联交换机组中的交换机。例如某一第二交换机通过第一交换机的端口1返回了拓扑收集报文,即可确定该第二交换机位于该端口1对应的关联交换机组中,另外每台交换机的自身也位于其每个端口对应的关联交换机组中。根据配置的拓扑收集范围内包含的每个第二交换机的信息,以及关联交换机中每台交换机的信息,即可确定非关联交换机组中的信息。
另外,在本发明实施例中为了实现拓扑关系的获取,第一交换机需要获知其他交换机的关联交换机组及非关联交换机组中包含的交换机的信息,因此如果其他交换机已经获取了自身的每个LINK UP端口对应的关联交换机组及非关联交换机组的信息,在向第一交换机返回拓扑收集信息时,将自身每个端口对应的关联交换机组及非关联交换机组的信息返回第一交换机,如果当前该其他交换机还未获取其每个端口对应的关联交换机组及非关联交换机组的信息,后续通过其他报文将其每个端口对应的关联交换机组及非关联交换机组的信息告知第一交换机,最后保证每台交换机中都保存有自身及其他交换机每个端口对应的关联交换机组及非关联交换机组的信息。
S203:第一交换机针对自身的每个LINK UP端口,判断该端口对应的关联交换机组中包含的第二交换机的数量是否为2,当判断结果为是时,进行步骤S204,否则,进行步骤S205。
S204:根据该关联交换机组中包含的第二交换机学习到自身该端口的MAC地址的端口,确定自身的该端口与该第二交换机学习到自身该端口的MAC地址的端口直接连接。
第一交换机在确定自身每个端口与哪台交换机的哪个端口直接连接时,针对该端口对应的关联交换机组中包含的交换机的数量进行判断。当该端口对应的关联交换机组中只包含2台交换机时,说明该第一交换机与该台交换机直接连接,根据其互相学习到对端的MAC地址的端口,确定该两台交换机端口之间的连接关系。
S205:针对该关联交换机组中包含的每台第二交换机,确定该第二交换机学习到自身该端口MAC地址的端口,判断对应该学习到自身该端口MAC地址的端口的关联交换机组中排除第一交换机该端口对应的非关联交换机组中的每台第二交换机后,该关联交换机组中剩余的交换机数量是否为2,当判断结果为是时,进行步骤S206,否则,进行步骤S207。
S206:确定自身的该端口与该第二交换机学习到自身该端口MAC地址的端口直接连接。
S207:确定与该端口直接连接的第二交换机的数量不止1台或者与该第二交换机学习到的自身该端口MAC地址的端口非直接连接。
当第一交换机该端口对应的关联交换机组中包含的交换机的数量不为2时,即包括至少两台交换机时,为了确定与第一交换机的该端口直连的交换机,在本发明实施例中还要结合第一交换机该端口对应的非关联交换机组的信息,确定该第一交换机的该端口直连的交换机。
由于在本发明实施例中每台交换机通过自身的每个LINK UP端口发送MAC通知报文,并根据关联交换机组及非关联交换机组中每台交换机的信息,确定交换机端口间的连接关系,从而实现了设备间拓扑连接关系的确定。
在本发明实施例中每台交换机定期通过自身的每个LINK UP端口向其他交换机发送MAC通知报文,并将该MAC通知报文的源地址和目的地址都设置为该端口的MAC地址。接收到报文的交换机在处理该MAC通知报文时,不会将该MAC通知报文发送到CPU处理,但是该MAC通知报文中的MAC地址可以被该交换机的该端口学习到。
为了准确的确定交换机间的连接拓扑关系,在本发明实施例中,所述计算自身及组网中每台第二交换机学习到第一交换机端口MAC地址或者桥MAC的端口对应的关联交换机组,及非关联交换机组的信息包括:
所述第一交换机根据返回拓扑响应报文的每台第二交换机的桥MAC和端口MAC地址,确定该第二交换机位于该端口的关联交换机组中,并通过拓扑收集报文中携带的第二交换机的桥MAC和端口MAC以及第二交换机学习的MAC地址,计算每个第二交换机学习到第一交换机端口MAC或者桥MAC的端口对应的关联交换机组及非关联交换机组的信息。
为了防止风暴,减少网络带宽资源的占用,在本发明实施例中,所述第一交换机通过自身的每个LINK UP端口发送MAC通知报文包括:
所述第一交换机通过自身的每个LINK UP端口发送MAC通知报文,接收到该MAC通知报文的第二交换机判断自身是否学习到所述MAC通知报文中的MAC地址;
当第二交换机学习到所述MAC地址时,第二交换机停止转发该MAC通知报文,否则,第二交换机学习该MAC地址并转发该MAC通知报文。
在本发明实施例中,当第二交换机已经学习到MAC通知报文中的MAC地址时,根据bridge转发原理,该第二交换机将停止转发该MAC通知报文,不会对网络中其他设备产生影响,防止了网络风暴,同时减少了网络带宽的占用。
为了准确的确定交换机间的连接拓扑关系,在本发明实施例中,所述第一交换机通过自身的每个LINK UP端口发送MAC通知报文包括:
所述第一交换机按照设定的周期,通过自身的每个LINK UP端口发送MAC通知报文;或,
当所述第一交换机被开启时、或接收到link up或接收到link down消息时,通过自身的每个LINK UP端口发送MAC通知报文。
具体的,在本发明实施例中MAC通知报文的发送周期可以根据MAC地址的老化时间来确定,以防止MAC地址老化后无法及时获取正确的拓扑连接,例如可以为MAC地址老化时间的1/3,或者可以为MAC地址老化时间的1/2。
另外,当交换机刚被启动时,或者端口刚刚up发送link up报文时,再或者当环路切换删除MAC地址放link down消息时,为了及时快速的获取设备间的拓扑连接关系,网络中的每个第一交换机通过自身的每个LINK UP端口发送MAC通知报文。
本发明实施例中通过发送MAC通知报文,并通过snmp的ifPhysAddress获取每台交换机的桥MAC及每个端口的MAC地址,通过dot1dTpFdbPort和dot1dTpFdbStatus节点逐条获取交换机学习到的所有MAC地址及其对应的port和学习状态。
下面结合一个具体的实施例,对本发明的上述实施过程进行说明。
图3为本发明实施例提供的一种交换机间的拓扑连接结构示意图,在图3中每台交换机都有自身的IP地址,交换机1(S1)~交换机7(S7)每台设备的IP地址分别为192.168.0.1~192.168.0.7,在图3中S5、S1、S2、S3和S6依次连接,并且S2与S4和S7依次连接。图3中的每台交换机通过自身的每个LINK UP端口发送MAC通知报文,根据每台第二交换机向每个端口返回的拓扑收集报文,获取第二交换机的桥MAC和端口MAC以及第二交换机学习的MAC地址,并计算自身及组网中的每台第二交换机学习到第一交换机端口MAC或者桥MAC的端口对应的关联交换机组,及非关联交换机组的信息。
计算的每台交换机的每个端口对应的关联交换机组及非关联交换机组的信息如下表:
S1作为第一交换机在确定其每个端口直接连接的第二交换机时,S1针对端口1对应的关联交换机组,判断其关联交换机组中包含6台交换机,该关联交换机组中包含的交换机分别为S1、S2、S3、S4、S6、S7,S1在该关联交换机组中任意选择一台非自身的交换机,或者选择IP地址最小的非自身的交换机进行判断。在本发明实施例中在该关联交换机组中S2的IP地址除S1以外最小,S1首先判断其端口1是否与S2连接。
S1查找S2学习到其MAC地址的端口为端口2,S1端口1对应的非关联交换机组中包含有S5,在S2端口2对应的关联交换机组中去除S5后,该S2端口2对应的关联交换机组中剩余交换机S1和S2,因此可知,S1与S2连接,具体的S1的端口1与S2的端口2直接连接。在此S1已经找到了与其端口1直连的交换机,因此不再针对其端口1对应的关联交换机组中的其他交换机继续进行判断。
之后,S1针对自身的端口2进行判断,因为端口2此时对应的关联交换机组中只包含两台交换机,该两台交换机分别为S1和S2,因此可以确定S1和S5直连,具体的S5学习到S1的MAC地址的端口是端口1,因此S1的端口2与S5的端口5直接连接。
S2作为第一交换机在确定其每个端口连接的第二交换机时,S2针对其端口1对应的关联交换机组,判断其对应的关联交换机组中包含的交换机的数量不为2,针对该关联交换机组中的任意除自身之外的交换机进行判断,例如针对交换机S6,S6学习到S2的MAC地址的端口为其端口2,在S6对应的关联交换机组(S1、S2、S3、S4、S5、S6、S7)中去除S2的端口1对应的非关联交换机组(S1、S4、S5、S7)中交换机,剩余的交换机为S2、S3和S6,即其剩余的交换机的数量不为2,因此可知S2的端口1与S6的端口2非直接连接。需要继续针对S2的端口1对应的关联交换机组中的其他交换机进行判断。S2的端口1对应的关联交换机组中还包括交换机S3,S3学习到S2的MAC地址的端口为端口2,将S3端口2对应的关联交换机组(S1、S2、S3、S4、S5、S7)中去除S2的端口1对应的非关联交换机组(S1、S4、S5、S7)中的交换机后,剩余交换机为S2和S3,其剩余的交换机的数量为2,因此可知,S2的端口1与S3的端口2之间直接连接。
依次采用上述方法每台交换机将自身作为第一交换机,该第一交换机针对自身的每个LINK UP端口进行判断,判断自身每个端口与其他交换机端口之间的连接关系。
为了准确的确定交换机间的连接拓扑关系,在本发明实施例中,当第一交换机该端口对应的关联交换机组中每台第二交换机学习到该第一交换机该端口MAC地址的端口、对应的关联交换机组中剩余的交换机的数量都不为2时,所述方法还包括:
确定所述每台第二交换机学习到自身该端口MAC地址的端口对应的关联交换机组中剩余的交换机的交集;
根据该剩余的交换机的交集中每台第二交换机学习到该第一交换机该端口MAC地址的端口,确定自身的该端口与该交集中每台第二交换机学习到自身该端口MAC地址的端口直接连接,且该交集中的剩余交换机之间通过共享链路连接。
图4为本发明实施例提供的一种获取设备间拓扑连接关系的详细过程图,该过程包括以下步骤:
S401:第一交换机通过自身的每个LINK UP端口发送MAC通知报文,其中,所述MAC通知报文的源地址和目的地址为每个端口的MAC地址或者所述第一交换机的桥MAC。
S402:根据第二交换机向每个端口返回的拓扑收集报文,获取第二交换机的桥MAC和端口MAC以及第二交换机学习的MAC地址,并计算自身及组网中每台第二交换机学习到第一交换机端口MAC或者桥MAC的端口对应的关联交换机组,及非关联交换机组的信息。
S403:第一交换机针对自身的每个LINK UP端口,判断该端口对应的关联交换机组中包含的第二交换机的数量是否为2,当判断结果为是时,进行步骤S404,否则,进行步骤S405。
S404:根据该关联交换机组中包含的第二交换机学习到自身该端口的MAC地址的端口,确定自身的该端口与该第二交换机学习到自身该端口的MAC地址的端口直接连接。
S405:针对该关联交换机组中包含的每台第二交换机,确定该第二交换机学习到自身该端口MAC地址的端口,判断对应该学习到自身该端口MAC地址的端口的关联交换机组中排除第一交换机该端口对应的非关联交换机组中的每台第二交换机后,该关联交换机组中剩余的交换机数量是否为2,当判断结果为是时,进行步骤S406,否则,进行步骤S407。
S406:确定自身的该端口与该第二交换机学习到自身该端口MAC地址的端口直接连接。
S407:第一交换机该端口对应的关联交换机组中每台第二交换机学习到该第一交换机该端口MAC地址的端口、对应的关联交换机组中剩余的交换机的数量都不为2。
S408:确定所述每台第二交换机学习到自身该端口MAC地址的端口对应的关联交换机组中剩余的交换机的交集。
S409:根据该剩余的交换机的交集中每台第二交换机学习到该第一交换机该端口MAC地址的端口,确定自身的该端口与该交集中每台第二交换机学习到自身该端口MAC地址的端口直接连接,且该交集中的剩余交换机之间通过共享链路连接。
当网络中存在共享链路时,可能存在交换机的一个端口下面直连的设备有多台,遍历该端口对应的所有的关联交换机组中的每台交换机,都无法满足去除该端口对应的非关联交换机组中的交换机后数量为2的情况,因此此时需要确定去除该端口对应的非关联交换机组中的交换机后其关联交换机组中剩余的交换机的交集,在该交集中包含至少两台交换机,该端口与该至少两台交换机连接。
下面结合一个具体的实施例,对本发明进行详细说明。
图5为本发明实施例提供的一种交换机间的拓扑连接结构示意图,在图5中存在多台交换机通过集线器(hub)连接到一台交换机的情形,具体的,S5、S1、S2、S3和S6依次连接,S1通过集线器分别与S8、S91连接,并且S91连接S92,S2与S4和S7依次连接。图5中的每台交换机通过自身的每个LINKUP端口发送MAC通知报文,根据每台第二交换机向每个端口返回的拓扑收集报文,获取第二交换机的桥MAC和端口MAC以及第二交换机学习的MAC地址,并计算自身及组网中的每台第二交换机学习到第一交换机端口MAC或者桥MAC的每个端口对应的关联交换机组,及非关联交换机组的信息。
计算的每台交换机的每个端口对应的关联交换机组及非关联交换机组的信息如下表:
S1作为第一交换机在确定其每个端口连接的第二交换机时,S1针对端口1对应的关联交换机组,判断其关联交换机组中包含6台交换机,该关联交换机组中包含的交换机分别为S1、S2、S3、S4、S6、S7,S1在该关联交换机组中任意选择一台非自身的交换机,或者选择IP地址最小的非自身的交换机进行判断。在本发明实施例中在该关联交换机组中S2的IP地址除S1以外最小,S1首先判断其端口1是否与S2连接。
S1查找S2学习到其MAC地址的端口为端口2,S1端口1对应的非关联交换机组中包含有S5,在S2端口2对应的关联交换机组中去除S5后,该S2端口2对应的关联交换机组中剩余交换机S1和S2,因此可知,S1与S2连接,具体的S1的端口1与S2的端口2直接连接。在此S1已经找到了与其端口1直连的交换机,因此不再针对其端口1对应的关联交换机组中的其他交换机继续进行判断。
之后,S1针对自身的端口2进行判断,因为端口2此时对应的关联交换机组中只包含两台交换机,该两台交换机分别为S1和S2,因此可以确定S1和S5直连,具体的S5学习到S1的MAC地址的端口是端口1,因此S1的端口2与S5的端口5直接连接。
然后,S1针对自身的端口3进行判断,端口3对应的关联交换机组中包含交换机S1、S8、S91和S92,其对应的关联交换机组中的交换机数量不为2,S1首先查找S8学习到其MAC地址的端口为端口4,在S8端口4对应的关联交换机组(S1、S2、S3、S4、S5、S6、S7、S8、S91、S92)中去除S1端口3对应的非关联交换机组(S2、S3、S4、S5、S6、S7)中的交换机,剩余的交换机为S1、S8、S91、S92,剩余的交换机不为2。因此需要继续查找该端口3对应的关联交换机组中的其他交换机。
S1查找S91学习到其MAC地址的端口为端口4,在S91端口4对应的关联交换机组(S1、S2、S3、S4、S5、S6、S7、S8、S91)中去除S1端口3对应的非关联交换机组(S2、S3、S4、S5、S6、S7)中的交换机,剩余的交换机为S1、S8、S91,剩余的交换机不为2。因此需要继续查找该端口3对应的关联交换机组中的其他交换机。
S1查找S92学习到其MAC地址的端口为端口4,在S92端口4对应的关联交换机组(S1、S2、S3、S4、S5、S6、S7、S8、S91、S92)中去除S1端口3对应的非关联交换机组(S2、S3、S4、S5、S6、S7)中的交换机,剩余的交换机为S1、S8、S91、S92,剩余的交换机不为2。
S1的端口3对应的关联交换机组中的每台交换机学习到自身MAC地址的端口,其对应的关联交换机组中去除S1的端口3对应的非关联交换机组后,剩余的交换机的数量都不为2,为了确定出S1的端口3与其他交换机的连接关系,在本发明实施例中根据其对应的每台交换机学习到其MAC地址的端口对应的关联交换机组中去除S1的端口3对应的非关联交换机组后,剩余的交换机的交集,确定该S1的端口3连接的交换机。
该S1的端口3对应的关联交换机组中S8学习到S1的MAC地址的端口4对应的关联交换机组中,去除S1的端口3对应的非关联交换机组后剩余的交换机为S1、S8、S91、S92;其关联交换机组中S91学习到S1的MAC地址的端口4对应的关联交换机组中,去除S1的端口3对应的非关联交换机组后剩余的交换机为S1、S8、S91;其关联交换机组中S92学习到S1的MAC地址的端口4对应的关联交换机组中,去除S1的端口3对应的非关联交换机组后剩余的交换机为S1、S8、S91、S92,其交集为S1、S8、S91,因此可以确定S1与S8、S91分别直接连接,具体的S1的端口3直接连接S8的端口4,并直接连接S91的端口4,S1、S8、S91之间通过共享链路连接。
S8作为第一交换机在确定自身其每个端口连接的第二交换机时,S8针对端口4对应的关联交换机组,判断其关联交换机组中包含9台交换机,该关联交换机组中包含的交换机分别为S1、S2、S3、S4、S6、S7、S8、S91、S92,S8在该关联交换机组中任意选择一台非自身的交换机,即任意选择一台第二交换机,或者选择IP地址最小的非自身的交换机进行判断。在本发明实施例中在该关联交换机组中S1的IP地址最小,S8首先判断其端口4是否与S1连接。
S8查找S1学习到其MAC地址的端口为端口3,S8端口4对应的非关联交换机组为空,S1的端口3对应的关联交换机组中包括S1、S8、S91、S92,在S1端口3对应的关联交换机组中去除空集后,该S1端口3对应的关联交换机组中剩余交换机S1、S8、S91、S92,剩余的交换机不为2。继续判断与其他交换机之间的连接关系
S8查找S2学习到其MAC地址的端口为端口2,S2的端口2对应的关联交换机组中包括S1、S2、S5、S8、S91、S92,在该关联交换机组中去除空集后,剩余的交换机与S2的端口2对应的关联交换机组中包括的交换机相同,还是S1、S2、S5、S8、S91、S92;基于同样的方法,S3学习到其MAC地址的端口2对应的关联交换机组中去除空集后,剩余的交换机为S1、S2、S3、S4、S5、S7、S8、S91、S92;S4学习到其MAC地址的端口4对应的关联交换机组中去除空集后,剩余的交换机为S1、S2、S3、S4、S5、S6、S8、S91、S92;S5学习到其MAC地址的端口1对应的关联交换机组中去除空集后,剩余的交换机为S1、S2、S3、S4、S5、S6、S7、S8、S91、S92;S6学习到其MAC地址的端口2对应的关联交换机组中去除空集后,剩余的交换机为S1、S2、S3、S4、S5、S6、S7、S8、S91、S92;S7学习到其MAC地址的端口2对应的关联交换机组中去除空集后,剩余的交换机为S1、S2、S3、S4、S5、S6、S7、S8、S91、S92;S91学习到其MAC地址的端口4对应的关联交换机组中去除空集后,剩余的交换机为S1、S2、S3、S4、S5、S6、S7、S8、S91;S92学习到其MAC地址的端口4对应的关联交换机组中去除空集后,剩余的交换机为S1、S2、S3、S4、S5、S6、S7、S8、S91、S92;
S8的端口4对应的关联交换机组中的每台交换机学习到自身MAC地址的端口,其对应的关联交换机组中去除S8的端口4对应的非关联交换机组后,剩余的交换机的数量都不为2,根据其对应的每台交换机学习到其MAC地址的端口对应的关联交换机组中去除S8的端口4对应的非关联交换机组后,剩余的交换机的交集为S1、S8、S91,因此可知,S8与S1和S91直接连接,具体的根据三台设备学习到对方MAC地址的端口可知,S8的端口4直接连接S1的端口3并直接连接S91的端口4,S8、S1和S91之间通过共享链路连接。
采用上述方式依次可以确定每个交换机的拓扑连接关系。
图6为本发明实施例提供了一种获取设备间拓扑连接关系的装置结构示意图,所述装置包括:
发送模块61,用于通过自身的每个LINK UP端口发送MAC通知报文,其中,所述MAC通知报文的源地址和目的地址为每个端口的MAC地址或者所述第一交换机的桥MAC;
获取模块62,用于根据第二交换机返回的拓扑收集报文,获取第二交换机的桥MAC和端口MAC以及第二交换机学习的MAC地址,并计算自身及组网中每台第二交换机学习到第一交换机端口MAC或者桥MAC的端口对应的关联交换机组,及非关联交换机组的信息;
拓扑关系确定模块63,用于针对自身的每个LINK UP端口,判断该端口对应的关联交换机组中包含的第二交换机的数量是否为2;当数量为2时,根据该关联交换机组中包含的第二交换机学习到自身该端口的MAC地址的端口,确定自身的该端口与该第二交换机学习到自身该端口的MAC地址的端口直接连接;当数量不为2时,针对该关联交换机组中包含的每台第二交换机,确定该第二交换机学习到自身该端口MAC地址的端口,判断对应该学习到自身该端口MAC地址的端口的关联交换机组中排除自身的该端口对应的非关联交换机组中的每台第二交换机后,该关联交换机组中剩余的交换机数量是否为2;当数量为2时,确定自身的该端口与该第二交换机学习到自身该端口MAC地址的端口直接连接,否则,确定与该端口直接连接的第二交换机数量不止1台,或者与第二交换机学习到自身该端口MAC地址的端口非直接连接。
为了准确的确定交换机间的连接拓扑关系,在本发明实施例中,所述拓扑关系确定模块63,还用于当确定自身该端口对应的关联交换机组中每台第二交换机学习到该第一交换机该端口MAC地址的端口、对应的关联交换机组中剩余的交换机的数量都不为2时,确定所述每台第二交换机学习到自身该端口MAC地址的端口对应的关联交换机组中剩余的交换机的交集;根据该剩余的交换机的交集中每台第二交换机学习到该第一交换机该端口MAC地址的端口,确定自身的该端口与该交集中每台第二交换机学习到自身该端口MAC地址的端口直接连接,且该交集中的剩余交换机之间通过共享链路连接。
为了准确的确定交换机间的连接拓扑关系,在本发明实施例中,所述发送模块61,具体用于按照设定的周期,通过自身的每个LINK UP端口发送MAC通知报文;或,当自身被开启时、或接收到link up或接收到link down消息时,通过自身的每个LINK UP端口发送MAC通知报文。
为了准确的确定交换机间的连接拓扑关系,在本发明实施例中,所述获取模块62,具体用于根据返回拓扑收集报文的每台第二交换机的桥MAC和端口MAC,确定该第二交换机位于该端口的关联交换机组中,并通过拓扑收集报文中携带的第二交换机的桥MAC和端口MAC以及第二交换机学习的MAC地址,计算每个第二交换机学习到第一交换机端口MAC或者桥MAC的端口对应的关联交换机组及非关联交换机组的信息。
图7本发明实施例提供了一种获取设备间拓扑关系的系统结构示意图,所述系统包括获取设备间拓扑关系的装置71,及向所述装置返回拓扑收集报文的至少一台第二交换机72。
为了防止风暴的发生,减少带宽资源的浪费,所述第二交换机72,还用于接收到该MAC通知报文时,判断自身是否学习到所述MAC通知报文中的MAC地址;当学习到所述MAC地址时,停止转发该MAC通知报文,否则,转发该MAC通知报文。
本发明实施例提供了一种获取设备间拓扑连接关系的方法、系统及装置,该方法中第一交换机通过自身的每个LINK UP端口发送目的地址和源地址都为该端口MAC地址的MAC通知报文,从而确定自身及组网中每台第二交换机的每个端口对应的关联交换机组和非关联交换机组的信息,针对每个端口当其对应的关联交换机组中包含的第二交换机的数量为2时,则确定第一交换机的该端口与该关联交换机组中第二交换机学习到自身该端口MAC地址的端口直接连接,当其对应的关联交换机组中包含的第二交换机的数量不为1时,根据该关联交换机组中去除第一交换机该端口对应的非关联交换机组后剩余的交换机数量是否为2,根据该数量是否为2,确定该第一交换机的该端口是否与该剩余的交换机直接连接。由于在本发明实施例中每台交换机通过自身的每个LINK UP端口发送MAC通知报文,并根据关联交换机组及非关联交换机组中每台交换机的信息,确定交换机端口间的连接关系,从而实现了设备间拓扑连接关系的确定。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的通过获取设备间拓扑连接关系的装置及系统,终端设备及系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。