一种消息通知方法及系统
技术领域
本申请涉及通信技术领域,特别涉及一种消息通知方法及系统。
背景技术
MAC(Media Access Control,媒体访问控制)地址迁移是指:交换机单板从一个端口(假设为端口A)学习到MAC地址MAC1,并将MAC1与端口A之间的对应关系存储至MAC地址表项中,若之后从另一端口(假设为端口B)接收到了以MAC1为源MAC地址的报文,且端口B与端口A所属的VLAN相同,则将MAC地址表项中MAC1对应的端口由端口A修改为端口B,这时认为MAC1从端口A迁移到了端口B,也即发生了MAC地址迁移。
如果MAC地址迁移频繁出现,且同一MAC地址总是在特定的两个端口之间迁移,那么网络中可能存在二层环路。鉴于上述情况,当发生MAC地址迁移时,要求上报主控板,这样主控板能够将MAC地址迁移记录下来,以便于后期根据所记录的信息定位网络环路等等。
然而,一部分交换机的单板在通过硬件自主完成MAC迁移时,无法有效通知到主控板,这样用户无法良好的感知MAC地址迁移,进而也就无法很好的定位网络环路等问题。
发明内容
本申请实施例公开了一种消息通知方法及系统,以在通过硬件自主完成MAC地址迁移时,能够快速有效的通知主控板发生了MAC地址迁移,进而能够较好的定位网络环路等问题。
为达到上述目的,本申请实施例公开了一种消息通知方法,应用于单板,所述方法包括:
所述单板的转发芯片接收另一单板通过组播复制组的所有端口发送的第一MAC地址迁移消息,其中,所述第一MAC地址迁移消息中携带组播复制组所包含端口的标识;更新硬件存储的第一MAC地址表项的出接口,并将所述第一MAC地址迁移消息发送至所述单板的CPU;
所述单板的CPU解析所述第一MAC地址迁移消息得到第一MAC地址迁移帧;根据所述第一MAC地址迁移帧确定软件存储的第一MAC地址表项的出接口是所述单板学习到的端口迁移至所述另一单板的端口,更新软件存储的第一MAC地址表项的出接口,向主控板CPU发送MAC地址迁移通知消息。
在本申请的一种实现方式中,所述消息通知方法还包括:
所述单板的转发芯片接收所述另一单板通过组播复制组的所有端口发送的第二MAC地址迁移消息,更新硬件存储的第二MAC地址表项的出接口,
所述单板的CPU解析所述第二MAC地址迁移消息得到第二MAC地址迁移帧;根据所述第二MAC地址迁移帧确定软件存储的第一MAC地址表项的出接口不是所述单板学习到的端口迁移至所述另一单板的端口,更新软件存储的第二MAC地址表项的出接口,丢弃所述MAC地址迁移消息。
在本申请的一种实现方式中,所述消息通知方法还包括:
所述单板的转发芯片接收数据报文,查找到所述数据报文的源MAC地址和VLAN标识匹配的MAC地址表项,确定所述数据报文的接收端口与查找到的MAC地址表项的出接口不一致;
更新MAC地址表项,生成第三MAC地址迁移帧,并将所述第三MAC地址迁移帧封装成第三MAC地址迁移消息,其中所述第三MAC地址迁移消息的目的地址是所述组播复制组的组播地址。
在本申请的一种实现方式中,所述消息通知方法还包括:
所述单板的转发芯片查找到所述第三MAC地址迁移消息的所述组播地址与访问控制列表ACL表项匹配,按照匹配的ACL表项对所述第三MAC地址迁移消息进行限速。
在本申请的一种实现方式中,所述组播复制组包括OLP端口的标识。
为达到上述目的,本申请实施例公开了一种消息通知系统,所述系统包括至少两个单板和主控板;
其中,所述单板的转发芯片,用于接收另一单板通过组播复制组的所有端口发送的第一MAC地址迁移消息,其中,所述第一MAC地址迁移消息中携带组播复制组所包含端口的标识;更新硬件存储的第一MAC地址表项的出接口,并将所述第一MAC地址迁移消息发送至所述单板的CPU;
所述单板的CPU,用于解析所述第一MAC地址迁移消息得到MAC地址迁移帧;根据所述第一MAC地址迁移帧确定软件存储的第一MAC地址表项的出接口是所述单板学习到的端口迁移至所述另一单板的端口,更新软件存储的司仪MAC地址表项的出接口,向主控板CPU发送MAC地址迁移通知消息;
所述主控板CPU,用于接收所述单板的CPU发送的所述MAC地址迁移通知消息,并响应所述MAC地址迁移通知消息。
在本申请的一种实现方式中,所述单板的转发芯片,用于接收所述另一单板通过组播复制组的所有端口发送的第二MAC地址迁移消息,更新硬件存储的第二MAC地址表项的出接口;
所述单板的CPU,用于解析所述第二MAC地址迁移消息得到第二MAC地址迁移帧;根据所述第二MAC地址迁移帧确定软件存储的第一MAC地址表项的出接口不是所述单板学习到的端口迁移至所述另一单板的端口,更新软件存储的第二MAC地址表项的出接口,丢弃所述MAC地址迁移消息。
在本申请的一种实现方式中,所述单板的转发芯片,还用于接收数据报文,查找到所述数据报文的源MAC地址和VLAN标识匹配的MAC地址表项,确定所述数据报文的接收端口与查找到的MAC地址表项的出接口不一致;更新MAC地址表项,生成第三MAC地址迁移帧,并将所述第三MAC地址迁移帧封装成第三MAC地址迁移消息,通过所述组播复制组的所有端口向所述另一单板发送所述第三MAC地址迁移消息,其中,所述第三MAC地址迁移消息的目的地址是所述组播复制组的组播地址。
在本申请的一种实现方式中,所述单板的转发芯片,还用于查找到所述第三MAC地址迁移消息的所述组播地址与访问控制列表ACL表项匹配,按照匹配的ACL表项对所述第三MAC地址迁移消息进行限速。
在本申请的一种实现方式中,所述组播复制组包括OLP端口的标识。
由以上可见,本申请实施例提供的方案中,单板的转发芯片接收到另一单板通过组播复制组的所有端口发送的MAC地址迁移消息后,更新硬件存储的MAC地址表项的出接口,并将MAC地址迁移消息发送至单板的CPU,单板的CPU解析MAC地址迁移消息得到MAC地址迁移帧,根据MAC地址迁移帧确定软件存储的第一MAC地址表项的出接口是单板学习到的端口迁移至另一单板的端口,更新软件存储的第一MAC地址表项的出接口,向主控板CPU发送MAC地址迁移通知消息。可见应用本申请实施例提供的方案,发生MAC地址迁移时,单板CPU能够向主控板发送MAC地址迁移通知消息,进而能够较好的定位网络环路等问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种消息通知方法的流程示意图;
图2为本申请实施例提供的第一种交换设备的结构示意图;
图3为本申请实施例提供的第二种交换设备的结构示意图;
图4为本申请实施例提供的第三种交换设备的结构示意图;
图5为本申请实施例提供的一种消息通知系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的一种消息通知方法的流程示意图,该方法应用于单板,包括:
S101:单板的转发芯片接收另一单板通过组播复制组的所有端口发送的第一MAC地址迁移消息。
其中,上述第一MAC地址迁移消息中携带组播复制组所包含端口的标识。
其中,上述组播复制组中可以包括:CPU的收包端口的标识。
在本申请的一种实现方式中,上述组播复制组还可以包括OLP端口的标识。
S102:更新硬件存储的第一MAC地址表项的出接口,并将第一MAC地址迁移消息发送至单板的CPU。
S103:单板的CPU解析第一MAC地址迁移消息得到第一MAC地址迁移帧。
具体的,MAC地址迁移帧可以是由单板的硬件生成的,也可以是由单板的软件生成的,其中,
MAC迁移帧由单板的硬件生成时,可以理解为:由单板的硬件来完成MAC地址迁移,在这种MAC地址迁移方式下,单板通常不能很好的支持将MAC地址迁移信息上报至主控板;
MAC地址迁移帧由单板的软件生成时,可以理解为:由单板的软件来完成MAC地址迁移,在这种MAC地址迁移方式下,单板通常是能够有效的将MAC地址迁移信息上报至主控板的。
鉴于上述情况,本申请实施例所提供的消息通知方法可以是针对单板的硬件生成的MAC地址迁移帧进行的,当然也可以针对单板的软件生成的MAC地址迁移帧进行,本申请并不对此进行限定。
由于单板转发芯片上的OLP端口可用于收发MAC学习报文、收发MAC地址迁移报文,实现MAC地址自主学习、MAC地址自主迁移等等,所以,在本申请的一种具体实现方式中,上述由单板的硬件生成的MAC迁移帧可以是OLP端口生成的MAC地址迁移帧。
S104:根据第一MAC地址迁移帧确定软件存储的第一MAC地址表项的出接口是单板学习到的端口迁移至另一单板的端口,更新软件存储的第一MAC地址表项的出接口,向主控板CPU发送MAC地址迁移通知消息。
由以上可见,本实施例提供的方案中,单板的转发芯片接收到另一单板通过组播复制组的所有端口发送的MAC地址迁移消息后,更新硬件存储的MAC地址表项的出接口,并将MAC地址迁移消息发送至单板的CPU,单板的CPU解析MAC地址迁移消息得到MAC地址迁移帧,根据MAC地址迁移帧确定软件存储的第一MAC地址表项的出接口是单板学习到的端口迁移至另一单板的端口,更新软件存储的第一MAC地址表项的出接口,向主控板CPU发送MAC地址迁移通知消息。可见应用本实施例提供的方案,发生MAC地址迁移时,单板CPU能够向主控板发送MAC地址迁移通知消息,进而能够较好的定位网络环路等问题。
对于支持MAC地址自主学习、MAC地址自主迁移的单板而言,在学习到迁移后的MAC地址之后,通常情况下不会再转发MAC地址迁移帧,否则将会持续转发MAC地址迁移帧;另外,在由单板的硬件完成MAC地址迁移的情况下,可以由单板转发芯片的OLP端口完成MAC地址迁移,且其响应速度较快,鉴于此,在本申请的一种具体实现方式中,上述组播复制组中还可以包括:单板的OLP端口。
这样,在接收另一单板通过组播复制组的所有端口发送的MAC地址迁移消息时,单板转发芯片的OLP端口也会接收到MAC地址迁移消息,这样OLP端口获得MAC迁移帧后,以较快的速度完成MAC地址迁移,有效保证单板不再继续转发MAC地址迁移帧,上述组播复制组中的各个端口也不会重复收到MAC地址迁移帧,减少了资源占用。
在本申请的一种实现方式中,单板的转发芯片接收另一单板以组播方式发送的第二MAC地址迁移消息,更新硬件存储的第二MAC地址表项的出接口,
单板的CPU解析第二MAC地址迁移消息得到第二MAC地址迁移帧;根据第二MAC地址迁移帧确定软件存储的第一MAC地址表项的出接口不是单板学习到的端口迁移至所述另一单板的端口,更新软件存储的第二MAC地址表项的出接口,这时丢弃第二MAC地址迁移消息,不对上述第二MAC地址迁移消息进行处理。
另外,上述消息通知方法还可以包括:
单板的转发芯片接收数据报文,查找到数据报文的源MAC地址和VLAN标识匹配的MAC地址表项,确定数据报文的接收端口与查找到的MAC地址表项的出接口不一致;
更新MAC地址表项,生成第三MAC地址迁移帧,并将第三MAC地址迁移帧封装成第三MAC地址迁移消息,其中,第三MAC地址迁移消息的目的地址是组播复制组的组播地址。
单板的转发芯片生成第三MAC地址迁移消息后,通过组播复制组的端口发送该第三MAC地址迁移消息。
由于通常情况下,每个单板中会存储有MAC地址表项,用于记录MAC地址与端口之间的对应关系,另外,每个单板中所存储的MAC地址表项可以分为硬件存储的MAC地址表项和软件存储的MAC地址表项,正常情况下,这两个MAC地址表项的内容是一致的,所以,上述更新MAC地址表项可以理解为:更新硬件存储的MAC地址表项,并更新软件存储的MAC地址表项。
值得一提的是,为保证在同一单板上发生的MAC地址迁移情况也上报至主控板,当另一单板检测到MAC地址迁移发生在其自身的两个端口之间时,可以由上述另一单板的CPU向主控板的CPU发送MAC地址迁移通知消息。
上述组播复制组中可以包含CPU收包端口的标识,也就是说上述MAC地址迁移消息最终是发送至CPU的,为保证CPU正常工作,在通过组播复制组的所有端口发送MAC地址迁移消息时可以考虑进行限速操作,以保证不会有大速率的流量冲击CPU,基于此,在本申请的一种具体实现方式中,单板的转发芯片查找到第三MAC地址迁移消息的组播地址与访问控制列表ACL表项匹配,按照匹配的ACL表项对第三MAC地址迁移消息进行限速,这样单板的转发芯片发送的MAC地址迁移消息是限速后的消息,进而不会对单板的CPU造成大速率的流量冲击。
与上述具体实施例类似,OLP端口获得MAC地址迁移帧后进行MAC地址迁移时,也可以在限速的情况下进行。
下面结合图2、图3和图4,通过具体实例对本申请提供的消息通知方法进行详细说明。
实例一:图2所示交换设备包括:单板1、单板2和主控板。
其中,单板2的转发芯片接收到数据报文后,查找到数据报文的源MAC地址和VLAN标识匹配的MAC地址表项,确定查找到的MAC地址表项的端口与数据报文的接收端口不一致时,更新单板2的硬件中存储的MAC地址表项生成MAC地址迁移帧,然后根据组播复制组的组播组地址对MAC地址迁移帧进行封装,得到MAC地址迁移消息,查找MAC地址迁移消息的组播组地址匹配预设的ACL表项,根据匹配的ACL表项对MAC地址迁移消息限速并通过所述组播复制组的所有端口发送MAC地址迁移消息。单板2的CPU可结合现有方式,根据更新后硬件存储的MAC地址表项,更新软件存储的MAC地址表项,
单板1的转发芯片接收到上述MAC地址迁移消息,更新单板1中硬件存储的MAC地址表项的出接口,并将上述MAC地址迁移消息发送至单板1的CPU,单板1的CPU对上述MAC地址迁移消息进行解析,得到MAC地址迁移帧,并根据MAC地址迁移帧判断数据报文MAC地址表项的出接口是否从单板1学习到的端口迁移至单板2的端口,若为是,则更新单板1中软件存储的MAC地址表项的出接口,单板1的CPU向主控板的CPU发送MAC地址迁移通知消息;若不是,则单板1的CPU丢弃上述MAC地址迁移消息,不对其进行处理。
实例二:图3所示交换设备包括:多个单板和一个主控板1033。
假设,单板1032的转发芯片通过端口A接收到数据报文后,根据该数据报文的源MAC地址和VLAN标识查找单板1032中存储的MAC地址表项,得知查找到的MAC地址表项的端口为单板1031的端口B,可见,端口A与端口B不一致,更新单板1032的硬件中存储的MAC地址表项,生成MAC地址迁移帧,然后根据组播复制组中包含的端口对MAC地址迁移帧进行封装,得到MAC地址迁移消息,并通过组播复制组的所有端口发送该MAC地址迁移消息。单板1032的CPU可结合现有方式,根据更新后的硬件中存储的MAC地址表项,更新软件存储的MAC地址表项。
单板1031的转发芯片接收到上述MAC地址迁移消息,更新单板1031中硬件存储的MAC地址表项的出接口,并将上述MAC地址迁移消息发送至单板1031的CPU,单板1031的CPU对上述MAC地址迁移消息进行解析,得到MAC地址迁移帧,从MAC地址迁移帧中得知:数据报文的MAC地址表项的出接口从单板1031的端口B迁移到了单板1032的端口A,在单板1031和单板1032之前发生了MAC地址迁移,则单板1031的CPU更新软件存储的MAC地址表项的出接口,并向主控板的CPU发送MAC地址迁移通知消息。
实例三:仍然以图3为例,假设,单板1032的转发芯片通过端口A接收到数据报文后,根据该数据报文的源MAC地址和VLAN标识查找单板1032中存储的MAC地址表项,得知查找到的MAC地址表项的端口为单板1032的端口C,可见,端口A与端口C不一致,更新单板1032的硬件中存储的MAC地址表项生成MAC地址迁移帧,然后根据组播复制组中包含的端口对MAC地址迁移帧进行封装,得到MAC地址迁移消息,并通过组播复制组的所有端口发送该MAC地址迁移消息。单板1032的CPU并结合现有技术根据更新后的硬件中存储的MAC地址表项,更新软件中存储的MAC地址表。
单板1031的转发芯片接收到上述MAC地址迁移消息,更新单板1031中硬件存储的MAC地址表项的出接口,并将上述MAC地址迁移消息发送至单板1031的CPU,单板1031的CPU对上述MAC地址迁移消息进行解析,得到MAC地址迁移帧,从MAC地址迁移帧中得知:数据报文的MAC地址表项的出接口从单板1032的端口C迁移到了单板1032的端口A,属于在单板1032上的MAC地址迁移,则单板1031的CPU丢弃上述MAC地址迁移消息,不向主控板1033的CPU发送MAC地址迁移通知消息。另外,为保证在同一单板上发生的MAC地址迁移情况也上报至主控板,当单板1032检测到MAC地址迁移发生在其自身的两个端口之间时,可以由单板1032的CPU向主控板1033的CPU发送MAC地址迁移通知消息。
实例四:图4所示交换设备包括:多个单板和一个主用主控板1033和一个备用主控板。
单板1032接收到数据报文进行报文处理的过程与上述实例二相同,单板1031接收到单板1032通过组播复制组的所有端口发送的MAC地址迁移消息后的处理流程也与实例二相同,单板1031确定在单板1031和单板1032之前发生了MAC地址迁移之后,在主用主控板1033处于正常工作状态时,向主用主控板1033发送MAC地址迁移通知消息,在主用主控板1033处于异常工作状态的情况下,才考虑向备用主控板发送MAC地址迁移通知消息。
与上述消息通知方法相对应,本申请实施例还提供了一种消息通知系统。
图5为本申请实施例提供的一种消息通知系统的结构示意图,上述系统包括至少两个单板和主控板;
其中,所述单板的转发芯片,用于接收另一单板通过组播复制组的所有端口发送的第一MAC地址迁移消息,其中,所述第一MAC地址迁移消息中携带组播复制组所包含端口的标识;更新硬件存储的第一MAC地址表项的出接口,并将所述第一MAC地址迁移消息发送至所述单板的CPU;
所述单板的CPU,用于解析所述第一MAC地址迁移消息得到MAC地址迁移帧;根据所述第一MAC地址迁移帧确定软件存储的第一MAC地址表项的出接口是所述单板学习到的端口迁移至所述另一单板的端口,更新软件存储的司仪MAC地址表项的出接口,向主控板CPU发送MAC地址迁移通知消息;
所述主控板CPU,用于接收所述单板的CPU发送的所述MAC地址迁移通知消息,并响应所述MAC地址迁移通知消息。
可选的,所述单板的转发芯片,用于接收所述另一单板通过组播复制组的所有端口发送的第二MAC地址迁移消息,更新硬件存储的第二MAC地址表项的出接口;
所述单板的CPU,用于解析所述第二MAC地址迁移消息得到第二MAC地址迁移帧;根据所述第二MAC地址迁移帧确定软件存储的第一MAC地址表项的出接口不是所述单板学习到的端口迁移至所述另一单板的端口,更新软件存储的第二MAC地址表项的出接口,丢弃所述MAC地址迁移消息。
可选的,所述单板的转发芯片,还用于接收数据报文,查找到所述数据报文的源MAC地址和VLAN标识匹配的MAC地址表项,确定所述数据报文的接收端口与查找到的MAC地址表项的出接口不一致;更新MAC地址表项,生成第三MAC地址迁移帧,并将所述第三MAC地址迁移帧封装成第三MAC地址迁移消息,通过组播复制组的所有端口向所述另一单板发送所述第三MAC地址迁移消息,其中,所述第三MAC地址迁移消息的目的地址是所述组播复制组的组播地址。
可选的,所述单板的转发芯片,还用于查找到所述第三MAC地址迁移消息的所述组播地址与访问控制列表ACL表项匹配,按照匹配的ACL表项对所述第三MAC地址迁移消息进行限速。
可选的,所述组播复制组包括OLP端口的标识。
由以上可见,本实施例提供的方案中,单板的转发芯片接收到另一单板通过组播复制组的所有端口发送的MAC地址迁移消息后,更新硬件存储的MAC地址表项的出接口,并将MAC地址迁移消息发送至单板的CPU,单板的CPU解析MAC地址迁移消息得到MAC地址迁移帧,根据MAC地址迁移帧确定软件存储的第一MAC地址表项的出接口是单板学习到的端口迁移至另一单板的端口,更新软件存储的第一MAC地址表项的出接口,向主控板CPU发送MAC地址迁移通知消息。可见应用本实施例提供的方案,发生MAC地址迁移时,单板CPU能够向主控板发送MAC地址迁移通知消息,进而能够较好的定位网络环路等问题。
对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。