CN111385197A - 一种报文处理方法、设备和计算机存储介质 - Google Patents
一种报文处理方法、设备和计算机存储介质 Download PDFInfo
- Publication number
- CN111385197A CN111385197A CN201811640801.9A CN201811640801A CN111385197A CN 111385197 A CN111385197 A CN 111385197A CN 201811640801 A CN201811640801 A CN 201811640801A CN 111385197 A CN111385197 A CN 111385197A
- Authority
- CN
- China
- Prior art keywords
- message
- switch
- mac address
- learning
- peer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000003860 storage Methods 0.000 title claims abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 45
- 230000003111 delayed effect Effects 0.000 claims abstract description 29
- 230000005540 biological transmission Effects 0.000 claims abstract description 6
- 238000004590 computer program Methods 0.000 claims description 19
- 230000015654 memory Effects 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 20
- 238000002955 isolation Methods 0.000 description 8
- 230000001960 triggered effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 101100289995 Caenorhabditis elegans mac-1 gene Proteins 0.000 description 3
- 238000006424 Flood reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 101100059544 Arabidopsis thaliana CDC5 gene Proteins 0.000 description 1
- 101100244969 Arabidopsis thaliana PRL1 gene Proteins 0.000 description 1
- 102100039558 Galectin-3 Human genes 0.000 description 1
- 101100454448 Homo sapiens LGALS3 gene Proteins 0.000 description 1
- 101150115300 MAC1 gene Proteins 0.000 description 1
- 101150051246 MAC2 gene Proteins 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/36—Backward learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/026—Details of "hello" or keep-alive messages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/32—Flooding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/66—Layer 2 routing, e.g. in Ethernet based MAN's
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明实施例提供了一种报文处理方法、设备、和计算机存储介质,所述方法包括:接收到目的设备在接收未知报文后发送的数据流时,且确定媒体访问控制MAC地址学习方向与报文流向相反时,对所述目的设备的MAC地址进行延后学习;其中,所述MAC地址学习方向用于表征第一交换机和第二交换机对所述目的设备的MAC地址学习顺序,所述报文流向用于表征所述未知报文在所述第一交换机和第二交换机之间的报文传输方向;根据延后学习到的所述目的设备的MAC地址,将新接收的报文按照已知报文进行处理。
Description
技术领域
本发明实施例涉及但不限于交换机的数据处理技术,尤其涉及一种报文处理方法、设备和计算机存储介质,可以在mclag(Multi-classis Link Aggregation)网络流量切换时,避免出现多包问题。
背景技术
现有的基于电气和电子工程师协会(Institute of Electrical andElectronics Engineers,IEEE)802.3ad协议实现的生成树协议,可以有效地移除生成树网络中环路,但是IEEE 802.3ad协议不能应用于一对二的环境中,而mclag协议可以用于解决该问题,具体地说,两台实体交换机通过形成逻辑上的一台交换机与下游的主机或者交换机配置802.3ad协议,面对下层的设备是完全透明的。
mclag协议本身是支持二层和三层网络架构的,其中二层主要用于实现已知报文转发流程和非已知报文转发流程。在这两种转发流程中,都存在切换时候多包的问题,多包数量跟mclag两台实体交换机之间的互联口带宽有关,随着互联口的带宽升级,多包的数量也会同步增多。
发明内容
本发明实施例提供了一种报文处理方法、设备和计算机存储介质,可以避免两个交换机对相同的报文的认定结果不同时,出现的流量翻倍和多包问题。
为达到上述目的,本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种报文处理方法,应用于第一交换机中,所述方法包括:
接收到目的设备在接收未知报文后发送的数据流时,且确定媒体访问控制(MediaAccess Control,MAC)地址学习方向与报文流向相反时,对所述目的设备的MAC地址进行延后学习;其中,所述MAC地址学习方向用于表征第一交换机和第二交换机对所述目的设备的MAC地址学习顺序,所述报文流向用于表征所述未知报文在所述第一交换机和第二交换机之间的报文传输方向;
根据延后学习到的所述目的设备的MAC地址,将新接收的报文按照已知报文进行处理。
本发明实施例还提供了一种报文处理设备,所述设备包括处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,所述处理器用于运行所述计算机程序时,执行上述任意一种报文处理方法的步骤。
本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任意一种报文处理方法的步骤。
本发明实施例提供一种报文处理方法、设备和计算机存储介质中,接收到目的设备在接收未知报文后发送的数据流时,且确定MAC地址学习方向与报文流向相反时,对所述目的设备的MAC地址进行延后学习;其中,所述MAC地址学习方向用于表征第一交换机和第二交换机对所述目的设备的MAC地址学习顺序,所述报文流向用于表征所述未知报文在所述第一交换机和第二交换机之间的报文传输方向;根据延后学习到的所述目的设备的MAC地址,将新接收的报文按照已知报文进行处理。如此,采用本发明实施例的技术方案,由于在MAC地址学习方向与报文流向相反时,可以延后学习目的设备的MAC地址,进而,可以降低两个交换机对相同的报文的认定结果不同的概率,从而至少在一定程度上可以避免两个交换机对相同的报文的认定结果不同时,出现的流量翻倍和多包问题。
附图说明
图1A为本发明实施例的同向未知单播报文泛洪路径图;
图1B为本发明实施例的非同向未知单播报文泛洪路径图;
图2为本发明实施例的报文处理方法的流程图;
图3为本发明实施例的记录MAC地址和查找MAC地址的示意图;
图4为本发明实施例的确定mclag系统两端设备之间的网络延时的流程示意图;
图5为本发明实施例的MAC地址同步消息的回复流程图;
图6为本发明实施例的ack报文的消息结构的一个示意图;
图7为本发明实施例的报文处理装置的组成结构示意图;
图8为本发明实施例的报文处理设备的硬件结构示意图。
具体实施方式
以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1A为本发明实施例的同向未知单播报文泛洪路径图,如图1A所示,同向未知单播报文泛洪的过程可以包括:
步骤S101:主机B(HostB)向主机A(HostA)发送未知单播报文,流量泛洪到交换机A(Switch A);这里,未知单播报文的目的MAC对应的MAC流量记为MAC1。
步骤S102:交换机A收到未知单播报文,会继续泛洪,其中,一个泛洪出口为交换机A与主机A相连的mclag端口,另一个泛洪出口为交换机A与交换机B相连的peer-link端口;未知单播报文泛洪到了交换机B后,由于存在peer-link端口与mclag端口的隔离,报文不会继续向交换机B与主机A相连的mclag端口泛洪。此时主机A只会收到从交换机A发送过来的一份未知单播报文。
步骤S103、主机A向主机B发送反向流量(数据流),由于交换机A和交换机B组成了mclag系统,反向流量会选择一条路径进入mclag系统,如图1A所示,反向流量进入交换机A;其中,主机A接收的未知单播报文的源MAC对应的MAC流量同样为MAC1。
图1B为本发明实施例的非同向未知单播报文泛洪路径图,如图1B所示,非同向未知单播报文泛洪的过程可以包括:
步骤S201:本步骤的实现方式与步骤S101相同,这里不再赘述。
步骤S202:本步骤的实现方式与步骤S102相同,这里不再赘述。
步骤S203:主机A向主机B发送反向流量(数据流),由于交换机A和交换机B组成了mclag系统,反向流量会选择一条路径进入mclag系统,如图1B所示,反向流量进入交换机B;其中,主机A接收的未知单播报文的源MAC对应的MAC流量同样为MAC1。
相关技术中,对于已知报文转发流程和非已知报文转发流程,都存在切换时候多包的问题,出现多包问题,是因为组成mclag系统的两台交换机,对同一个报文认定为已知或者非已知的结果不同,导致不应该泛洪的报文被泛洪处理,目的设备就会收到两台交换机分别发送过来的报文;参照图1B,主机B通过交换机A泛洪未知单播报文,交换机A识别该报文为未知报文后,会直接给主机A泛洪一份报文,另外再向peer-link端口泛洪一份报文;此时交换机B如果学习到了该报文的目的MAC地址,则会从peer-link端口收到的泛洪流量,按照已知单播报文转发,即,也会向主机A发送,从而使流量翻倍。直到两台交换机相互同步了MAC地址之后,两台交换机都对该MAC地址的报文按照已知单播报文转发流程处理,则流量翻倍现象结束。可以理解的是,目的设备多收到的报文数量,可以通过网络延时时间乘以peer-link端口带宽得出,可见peer-link端口带宽越大,多包数量越多。
基于上述记载的内容,提出以下各实施例。
第一实施例
本发明第一实施例提出了一种报文处理方法,可以应用于第一交换机中;第一交换机可以是组成mclag系统的两个交换机中的任意一个交换机。参照图1A和图1B,第一交换机可以是交换机A,也可以是交换机B。
图2为本发明实施例的报文处理方法的流程图,如图2所示,该流程可以包括:
步骤S1:接收到目的设备在接收未知报文后发送的数据流时,且确定MAC地址学习方向与报文流向相反时,对目的设备的MAC地址进行延后学习;其中,MAC地址学习方向用于表征第一交换机和第二交换机对目的设备的MAC地址学习顺序,报文流向用于表征未知报文在所述第一交换机和第二交换机之间的报文传输方向。
这里,未知报文可以是未知单播报文,目的设备可以是主机等设备;对于图1A和图1B所示的报文泛洪路径示意图,目的设备为主机A;基于图1A,目的设备在接收未知报文后发送的数据流为:主机A向主机B发送的反向流量;显然,基于图1A,当第一交换机为交换机A时,交换机A可以接收到主机A发送的反向流量;基于图1B,目的设备在接收未知报文后发送的数据流为:主机A向主机B发送的反向流量;显然,基于图1B,当第一交换机为交换机B时,交换机B可以接收到主机A发送的反向流量。
本发明实施例中,第一交换机和第二交换机可以通过链路聚合组成mclag系统;MAC地址学习方向可以是从第一交换机至第二交换机(即在第一交换机学习MAC地址后,第二交换机学习MAC地址),或者,从第二交换机至第一交换机(即在第二交换机学习MAC地址后,第一交换机学习MAC地址);报文流向可以是上述未知报文从第一交换机传输至第二交换机,或者,是上述未知报文从第二交换机传输至第一交换机。参照图1A和图1B,第一交换机为交换机A时,第二交换机为交换机B;第一交换机为交换机B时,第二交换机为交换机A。
实际应用中,当第一交换机接收到目的设备在接收未知报文后发送的数据流时,需要判断MAC地址学习方向与报文流向是否相反,然后,根据判断结果进行进一步处理。
这里,对于判断MAC地址学习方向与报文流向是否相反的方式,示例性地,在通过peer-link端口接收到未知报文时,记录通过peer-link端口接收到的未知报文的目的设备的MAC地址。
当上述数据量对应的目的设备的MAC地址属于已经记录的MAC地址时,确定MAC地址学习方向与所述报文流向相反;当上述数据量对应的目的设备的MAC地址属于已经记录的MAC地址时,确定MAC地址学习方向与所述报文流向相同。
对于记录第二交换机发送的未知报文的目的设备的MAC地址的实现方式,在一个示例中,可以在硬件缓存中,记录所述通过peer-link端口接收到的未知报文的目的设备的MAC地址;在另一个示例中,可以利用软件实现的记录列表中,记录所述通过peer-link端口接收到的未知报文的目的设备的MAC地址。
下面结合图3,示例性地说明如何判断MAC地址学习方向与报文流向是否相反。
图3为本发明实施例的记录MAC地址和查找MAC地址的示意图,结合图3,在第一交换机或第二交换机中,判断MAC地址学习方向与报文流向的流程可以包括:
步骤S301:对peer-link端口进入的未知单播报文做记录;查找目的MAC转发表中查找相应的MAC地址,如果未查找到,则判断该未知单播报文的目的MAC地址未知,可以将未知单播报文的目的MAC地址记录到硬件的未知单播报文目的MAC记录缓存(uuc dmacrecord cache)中(对应图3中的未知单播报文目的MAC插入记录),也可以将未知单播报文的目的MAC地址记录上送中央处理器(Central Processing Unit,CPU),记录到软件实现的记录列表uuc dmac record list中。参照图3,mac1、mac2表示已经记录的MAC地址。
实际应用中,目的MAC转发表可以存储于硬件芯片中;进一步地,如果在目的MAC转发表中能够查找到相应的MAC地址,则不对该未知单播报文的目的MAC地址进行重复记录。
步骤S302:将新获取的目的MAC地址,在硬件uuc dmac record cache里进行查找,或者上送cpu在软件uuc dmac record list里查找;如果能够查找到,则执行步骤S303;如果不能查找到,则执行步骤S304。
实际应用中,交换机上可以在从除peer-link端口外的其他端口获取到数据流(反向流量)时,可以新获取到目的MAC地址。
步骤S303(图3未示出):说明未知单播报文是从peer-link端口进入的,而本交换机是mclag系统中首先学习目的MAC地址的交换机,进而,可以确定MAC地址学习方向与报文流向相反,此时,可以执行延时下发mac处理流程(即步骤S1中的对目的设备的MAC地址进行延后学习和步骤S305)。进一步地,还可以将新的MAC地址的记录置位被挂起(pending)状态,后续再查找到该条记录,将不再处理。
下面结合图1B进行举例说明,图1B中,基于步骤S202,可以看出,未知单播报文是从peer-link端口进入交换机B,报文流向为从交换机A到交换机B;此时,在交换机B中,需要对未知单播报文的目的MAC地址按照上述步骤S301记录;在步骤S302中,当交换机B将接收到反向流量时,新获取的目的MAC地址能够在预先记录的MAC地址中查找到,则说明MAC地址学习方向与报文流向相反,具体地说,交换机B是mclag系统中首先学习目的MAC地址的交换机,MAC地址学习方向为从交换机B到交换机A;此时,需要执行步骤S303。
进一步地,在步骤S303之后,执行步骤S305。
步骤S304(图3未示出):说明未知单播报文不是从peer-link端口进入的,而本交换机是mclag系统中首先学习目的MAC地址的交换机,进而,可以确定MAC地址学习方向与报文流向相同,此时,可以走正常下发mac处理流程。
下面结合图1A进行举例说明,图1A中,基于步骤S102,可以看出,未知单播报文不是从peer-link端口进入交换机A,报文流向为从交换机A到交换机B;此时,在交换机A中,不需要对未知单播报文的目的MAC地址进行记录;在步骤S302中,当交换机A将接收到反向流量时,新获取的目的MAC地址不能够在预先记录的MAC地址中查找到,则说明MAC地址学习方向与报文流向相反,具体地说,交换机A是mclag系统中首先学习目的MAC地址的交换机,MAC地址学习方向为从交换机A到交换机B,可以看出;此时,需要执行步骤S304。
下面结合图1A对正常下发mac处理流程进行说明;交换机A首先学习新MAC地址,同时,发送MAC地址同步消息(该同步消息中携带有新MAC地址)发送至交换机B,交换机B在接收到该同步消息后也学习新MAC地址。交换机A在学习新MAC地址之后,对相同目的设备的报文按照已知单播报文进行转发,即,直接发送给mclag端口,不会再向peer-link端口泛洪。交换机B在学习到新MAC地址之前,对相同目的设备的报文按照未知单播报文处理,peer-link端口与mclag端口隔离,因而不会向主机A转发。可见,交换机B在学习新MAC地址后,不会再有从peer-link端口过来的报文,也不会有多余报文转给主机A。
本发明实施例中,可以在组成mclag系统的一个交换机中,检测目的MAC地址为特定MAC地址的报文流向。检测结果可以为以下三种:1)没有特定目的MAC地址的流量进入mclag系统;2)有特定目的MAC地址的流量进入mclag系统,且本交换机为首先进入的设备;3)有特定目的MAC地址的流量进入mclag系统,且邻接mclag设备(另一交换机)为首先进入的设备。
步骤S305(图3未示出):对目的设备的MAC地址进行延后学习。
本发明实施例中,可以采用以下几种方式对目的设备的MAC地址进行延后学习。
方式1:
第一交换机在向第二交换机发送MAC地址同步消息后,等待设定时长,学习所述目的设备的MAC地址;所述设定时长为预先确定的第一交换机和第二交换机之间的网络延时。
可以看出,需要预先确定第一交换机和第二交换机之间的网络延时(即mclag系统两端设备之间的网络延时),然后,根据第一交换机和第二交换机之间的网络延时,对目的设备的MAC地址进行延后学习;可以理解的是,在等待设定时长后,可以认为第二交换机已经收到MAC地址同步消息,并已经学习了MAC地址。
方式2:
第一交换机向第二交换机发送MAC地址同步消息;接收到针对MAC地址同步消息的回复消息后,学习目的设备的MAC地址。
实际应用中,第一交换机可以通过icbg消息链路向第二交换机发送MAC地址同步消息;第二交换机可以通过peer-link链路向第一交换机发送针对MAC地址同步消息的回复消息。
方式3:
第一交换机向第二交换机发送MAC地址同步消息后,若在设定时长内未接收到针对所述MAC地址同步消息的回复消息,则在向第二交换机发送MAC地址同步消息的延后设定时长的时刻,学习所述目的设备的MAC地址;若在设定时长内接收到针对所述MAC地址同步消息的回复消息,在接收到所述回复消息后,学习所述目的设备的MAC地址。
也就是说,可以设置定时器,定时器的定时时长为设定时长;当第一交换机向第二交换机发送MAC地址同步消息后,开启定时器,在定时器的定时器时间到达时,如果未接收到针对所述MAC地址同步消息的回复消息,则在定时器定时时间到达的时刻,学习目的设备的MAC地址;在定时器的定时时间未到达时,如果已经接收到针对所述MAC地址同步消息的回复消息,则在接收到针对所述MAC地址同步消息的回复消息后,学习目的设备的MAC地址。
本发明实施例中,方式3是在综合方式1和方式2的基础上,以定时器的定时时间和接收到上述回复消息的时刻中的较早的时刻为准,进而实现延时学习目的设备的MAC地址。
可以看出,基于方式1、方式2或方式3,可以保证在第一交换机学习目的设备的MAC地址,第二交换机已经对目的设备的MAC地址进行了学习。
对于预先确定第一交换机和第二交换机之间的网络延时的实现方式,示例性地,在第一交换机和第二交换机中的一个交换机周期性地向另一个交换机发送第一报文的时刻,记录第一时间戳;在所述第一交换机和第二交换机中的一个交换机接收到针对所述第一报文的回复信息时,记录第二时间戳;确定第一时间戳和第二时间戳的差值,将最新得出的时间戳的差值确定为所述第一交换机和第二交换机之间的网络延时。
作为一种实现方式,在第一交换机和第二交换机中的一个交换机可以通过icbg消息链路向另一交换机发送第一报文,接收到第一报文的交换机可以通过peer-link链路回复针对所述第一报文的回复信息;如此,对第一报文进行回复时采用的链路与对MAC地址同步消息进行回复时采用的链路相同,因而,确定出的上述网络延时具有较高的准确性。
实际应用中,第一报文可以是保活(keepalive)报文或其他报文;进一步地,第一交换机和第二交换机中的每个交换机可以周期性地向另一交换机发送keepalive报文,keepalive报文是符合通用协议标准的报文,相关技术中,交换机在收到keepalive报文后,并不进行回复;而在本发明实施例中,增加对keepalive报文的回复信息(可以是ack报文),就可以方便的计算出第一交换机和第二交换机之间的网络延时,进而可以对后续的延后学习MAC地址提供时间依据。另外,通过周期性地发送keepalive报文,可以实现持续监控mclag系统两个交换机之间的链接状态。
进一步地,在确定出所述第一交换机和第二交换机之间的网络延时后,可以将所述第一交换机和第二交换机之间的网络延时进行存储,以便于后续进行调用。
图4为本发明实施例的确定mclag系统两端设备之间的网络延时的流程示意图,如图4所示,该流程可以包括:
步骤S401:交换机B向交换机A发送mclag系统的keepalive报文,并记录时间戳T0;该keepalive报文走icbg消息链路,不走peer-link链路。
步骤S402:交换机A收到keepalive报文后,发送keepalive ack报文(即针对keepalive报文的回复信息)到交换机B,该keepalive ack报文不走icbg消息链路,走peer-link链路,保证了时间上与传输MAC地址同步消息的回复消息时所使用的时间相同;交换机B在收到该keepalive ack报文后,再次记录时间戳T0’;使用前后两个时间戳求差值,得到第一交换机和第二交换机之间的网络延时delay_time。
需要说明的是,在确定mclag系统两端设备之间的网络延时时,也可以由交换机A向交换机B发送mclag系统的keepalive报文,并由交换机B向交换机A发送keepalive ack报文,具体实现方式可以参考图4所示的流程,这里不再赘述。
图5为本发明实施例的MAC地址同步消息的回复流程图,如图5所示,该流程可以包括:
步骤S501:结合图2,交换机B向交换机A发送MAC地址同步消息;该该报文走icbg消息链路,不走peer-link链路。
步骤S502:交换机A收到MAC地址同步消息,下发MAC地址学习条目,实现MAC地址的学习,同时发送针对MAC地址同步消息的回复消息(可以称为MAC同步消息回复报文)至交换机B,该MAC同步消息回复报文不走icbg消息链路,走peer-link链路,这样对报文回复时采用的链路分别为实际实施时对MAC地址同步消息回复时采用的链路,因而,确定出的上述网络延时具有较高的准确性。交换机B在收到针对MAC地址同步消息的回复消息后,可以下发MAC地址学习条目,实现MAC地址的学习。
需要说明的是,MAC地址同步消息的回复流程不需要周期性触发,只是在MAC地址同步过程中,由消息接收设备对MAC地址同步消息进行回复,同时消息发送设备识别此回复消息,从而,与图4所示的流程相比,省却了定时获取delay_time的需要,仅在本次MAC地址同步时通过ack报文触发延时结束。
本发明实施例中,ack报文可以具有多种实现方式,下面通过图6说明ack报文的一种实现方式;图6为本发明实施例的ack报文的消息结构的一个示意图,如图6所示,应用于图4所示的流程时,设备在收到keepalive报文之后,回复给对端的ack报文,内容与keepalive报文相同,类型改为新增的ack类型,type值为5;应用于图5所示的流程时,设备在收到MAC地址同步消息之后,回复给对端的ack报文,内容与MAC地址同步消息的update报文相同,类型改为新增的ack类型,type值为5。
进一步地,在通过对所述目的设备的MAC地址进行延后学习,将所述目的设备的MAC地址存储至MAC转发表时,可以清除预先记录的所述目的设备的MAC地址;在实际应用中,当通过延后学习,将MAC地址学习到硬件芯片的MAC转发表时,可以清除在硬件缓存或软件实现的记录列表中相应的MAC地址记录条目。
步骤S2:根据延后学习到的所述目的设备的MAC地址,将新接收的报文按照已知报文进行处理。
参照图1B,当交换机B在学习MAC地址之前,对于peer-link端口发送过来的报文均按照未知单播报文处理,由于peer-link端口与本身mclag端口进行隔离,因而,可以防止多余报文发送给主机A;交换机B发送MAC地址同步消息给交换机A,交换机A在收到该消息后学习MAC地址;当交换机A学习到MAC地址后,如果交换机A再收到主机B发送过来的报文时,主机B新发送的报文不是未知单播报文了,而是已知单播报文,此时,可以按照已知单播报文直接转发到mclag端口,报文不会再往peer-link端口发送泛洪报文,进而可以避免出现流量翻倍和多包问题。
综上,采用本发明实施例的技术方案,可以在mclag系统两台实体交换机之间实现数据处理同步,数据处理同步并非表项同步,具体地说,对同一份数据报文,在两台实体交换机之间处理逻辑相同。这里,处理逻辑,也就是上述已知报文转发流程和未知报文转发流程。处理相同,指的是在两台实体交换机中,对同一份数据报文,都视为已知报文,或者都视为非已知报文,进行处理,即处理逻辑相同。根据mclag系统的实现方式,已知报文按已知的mac表转发,非已知报文按bum的转发路径泛洪,具体转发已在协议中说明,这里不再复述。
第二实施例
为了能够更加体现本发明的目的,在本发明第一实施例的基础上,进行进一步的举例说明。
如图4所示,交换机A和交换机B建立mclag系统;交换机A和交换机B会定时互发keepalive报文。
步骤S401:由交换机B向交换机A发送mclag系统的keepalive报文,并记录时间戳T0;该keepalive报文走icbg消息链路,不走peer-link链路。
步骤S402:交换机A收到keepalive报文后,发送keepalive ack报文至交换机B。该keepalive ack报文不走icbg消息链路,走peer-link链路。交换机B收到该ack报文后,再次记录时间戳T0’;使用前后两个时间戳求差值,得到第一交换机和第二交换机之间的网络延时delay_time。delay_time作为常备数据,可以保存在交换机上,作为后续的延后学习操作提供时间依据。
如图1A所示,步骤S101:主机B向主机A发送未知单播报文,流量泛洪到交换机A。
步骤S102:交换机A收到未知单播报文,会继续泛洪,其中,一个泛洪出口为交换机A与主机A相连的mclag端口,另一个泛洪出口为交换机A与交换机B相连的peer-link端口;未知单播报文泛洪到了交换机B后,由于存在peer-link端口与mclag端口的隔离,报文不会继续向交换机B与主机A相连的mclag端口泛洪。此时主机A只会收到从交换机A发送过来的一份未知单播报文。
由于此时并没有从peer-link端口过来的未知报文,所以硬件的未知单播报文目的MAC记录缓存(uuc dmac record cache)为空。
步骤S103:主机A向主机B发送反向流量(数据流),由于交换机A和交换机B组成了mclag系统,反向流量会选择一条路径进入mclag系统,如图1A所示,反向流量进入交换机A;此时需要判断MAC地址学习方向与报文流向的关系。
步骤S304:可以确定MAC地址学习方向与报文流向相同,此时,可以走正常下发mac处理流程。交换机A首先学习新MAC地址,同时,发送MAC地址同步消息发送至交换机B,交换机B在接收到该同步消息后也学习新MAC地址。交换机A在学习新MAC地址之后,对相同目的设备的报文按照已知单播报文进行转发,即,直接发送给mclag端口,不会再向peer-link端口泛洪。交换机B在学习到新MAC地址之前,对相同目的设备的报文按照未知单播报文处理,peer-link端口与mclag端口隔离,不会向主机A转发。可见,交换机B在学习新MAC地址后,不会再有从peer-link端口过来的报文,也不会有多余报文转给主机A。
第三实施例
为了能够更加体现本发明的目的,在本发明第一实施例的基础上,进行进一步的举例说明。
如图4所示,交换机A和交换机B建立mclag系统;交换机A和交换机B会定时互发keepalive报文。
步骤S401:由交换机B向交换机A发送mclag系统的keepalive报文,并记录时间戳T0;该keepalive报文走icbg消息链路,不走peer-link链路。
步骤S402:交换机A收到keepalive报文后,发送keepalive ack报文至交换机B。该keepalive ack报文不走icbg消息链路,走peer-link链路。交换机B收到该ack报文后,再次记录时间戳T0’;使用前后两个时间戳求差值,得到第一交换机和第二交换机之间的网络延时delay_time。delay_time作为常备数据,可以保存在交换机上,作为后续的延后学习操作提供时间依据。
如图1B所示,步骤S201:主机B向主机A发送未知单播报文,流量泛洪到交换机A。
步骤S202:交换机A收到未知单播报文,会继续泛洪,其中,一个泛洪出口为交换机A与主机A相连的mclag端口,另一个泛洪出口为交换机A与交换机B相连的peer-link端口;未知单播报文泛洪到了交换机B后,由于存在peer-link端口与mclag端口的隔离,报文不会继续向交换机B与主机A相连的mclag端口泛洪。此时主机A只会收到从交换机A发送过来的一份未知单播报文。
由于此时交换机B收到交换机通过peer-link端口发过来的未知报文,因而,基于图3所示的流程进行处理。
步骤S301:对peer-link端口进入的未知单播报文做记录;查找目的MAC转发表中查找相应的MAC地址,这里,未查找到相应的MAC地址,判断该未知单播报文的目的MAC地址未知,将未知单播报文的目的MAC地址记录到硬件的未知单播报文目的MAC记录缓存(uucdmac record cache)中。
步骤S203:主机A向主机B发送反向流量,由于交换机A和交换机B组成了mclag系统,反向流量会选择一条路径进入mclag系统,如图1B所示,反向流量进入交换机B;此时需要判断MAC地址学习方向与报文流向的关系。
步骤S302:将新获取的目的MAC地址,在硬件uuc dmac record cache里进行查找,这里,能够查找到相应的MAC地址,执行步骤S303。
步骤S303:确定MAC地址学习方向与报文流向相反,此时,可以执行延时下发mac处理流程;还可以将新的MAC地址的记录置位被挂起(pending)状态,后续再查找到该条记录,将不再处理。
这里,交换机B发送MAC地址同步消息给交换机A,交换机A在收到该消息后学习MAC地址;当交换机A学习到MAC地址后,如果交换机A再收到主机B发送过来的报文时,主机B新发送的报文不是未知单播报文了,而是已知单播报文,此时,可以按照已知单播报文直接转发到mclag端口,报文不会再往peer-link端口发送泛洪报文。
交换机B在向交换机A发送MAC地址同步消息后,延时等待delay_time,交换机B设备学习MAC地址的条目,然后,执行步骤S305。delay_time可以根据图4所示的流程计算得出,在交换机B在学习到该MAC地址之前,对peer-link端口发送过来的报文按照未知单播报文处理,peer-link端口与mclag端口隔离,因而不会向主机A转发。可见,交换机B在学习该MAC地址后,不会再有从peer-link端口过来的报文,也不会有多余报文转给主机A。
步骤S305:在delay_time时间过后,交换机B可以将MAC地址学习到硬件芯片,之后,清除硬件uuc dmac record cache中的相应记录条目。
第四实施例
为了能够更加体现本发明的目的,在本发明第一实施例的基础上,进行进一步的举例说明。
如图4所示,交换机A和交换机B建立mclag系统;交换机A和交换机B会定时互发keepalive报文。
步骤S401:由交换机B向交换机A发送mclag系统的keepalive报文,并记录时间戳T0;该keepalive报文走icbg消息链路,不走peer-link链路。
步骤S402:交换机A收到keepalive报文后,发送keepalive ack报文至交换机B。该keepalive ack报文不走icbg消息链路,走peer-link链路。交换机B收到该ack报文后,再次记录时间戳T0’;使用前后两个时间戳求差值,得到第一交换机和第二交换机之间的网络延时delay_time。delay_time作为常备数据,可以保存在交换机上,作为后续的延后学习操作提供时间依据。
如图1B所示,步骤S201:主机B向主机A发送未知单播报文,流量泛洪到交换机A。
步骤S202:交换机A收到未知单播报文,会继续泛洪,其中,一个泛洪出口为交换机A与主机A相连的mclag端口,另一个泛洪出口为交换机A与交换机B相连的peer-link端口;未知单播报文泛洪到了交换机B后,由于存在peer-link端口与mclag端口的隔离,报文不会继续向交换机B与主机A相连的mclag端口泛洪。此时主机A只会收到从交换机A发送过来的一份未知单播报文。
由于此时交换机B收到交换机通过peer-link端口发过来的未知报文,因而,基于图3所示的流程进行处理。
步骤S301:对peer-link端口进入的未知单播报文做记录;查找目的MAC转发表中查找相应的MAC地址,这里,未查找到相应的MAC地址,判断该未知单播报文的目的MAC地址未知,将目的MAC地址记录上送CPU,记录到软件实现的记录列表uuc dmac record list中。
步骤S203:主机A向主机B发送反向流量,由于交换机A和交换机B组成了mclag系统,反向流量会选择一条路径进入mclag系统,如图1B所示,反向流量进入交换机B;此时需要判断MAC地址学习方向与报文流向的关系。
步骤S302:将新获取的目的MAC地址,在软件实现的记录列表uuc dmac recordlist中进行查找,这里,能够查找到相应的MAC地址,执行步骤S303。
步骤S303:确定MAC地址学习方向与报文流向相反,此时,可以执行延时下发mac处理流程;还可以将新的MAC地址的记录置位被挂起(pending)状态,后续再查找到该条记录,将不再处理。
这里,交换机B发送MAC地址同步消息给交换机A,交换机A在收到该消息后学习MAC地址;当交换机A学习到MAC地址后,如果交换机A再收到主机B发送过来的报文时,主机B新发送的报文不是未知单播报文了,而是已知单播报文,此时,可以按照已知单播报文直接转发到mclag端口,报文不会再往peer-link端口发送泛洪报文
交换机B在向交换机A发送MAC地址同步消息后,延时等待delay_time,交换机B设备学习MAC地址的条目,然后,执行步骤S305。delay_time可以根据图4所示的流程计算得出,在交换机B在学习到该MAC地址之前,对peer-link端口发送过来的报文按照未知单播报文处理,peer-link端口与mclag端口隔离,因而不会向主机A转发。可见,交换机B在学习该MAC地址后,不会再有从peer-link端口过来的报文,也不会有多余报文转给主机A。
步骤S305:在delay_time时间过后,交换机B可以将MAC地址学习到硬件芯片,之后,清除软件实现的记录列表uuc dmac record list中的相应记录条目。
第五实施例
为了能够更加体现本发明的目的,在本发明第一实施例的基础上,进行进一步的举例说明。
如图1B所示,步骤S201:主机B向主机A发送未知单播报文,流量泛洪到交换机A。
步骤S202:交换机A收到未知单播报文,会继续泛洪,其中,一个泛洪出口为交换机A与主机A相连的mclag端口,另一个泛洪出口为交换机A与交换机B相连的peer-link端口;未知单播报文泛洪到了交换机B后,由于存在peer-link端口与mclag端口的隔离,报文不会继续向交换机B与主机A相连的mclag端口泛洪。此时主机A只会收到从交换机A发送过来的一份未知单播报文。
由于此时交换机B收到交换机通过peer-link端口发过来的未知报文,因而,基于图3所示的流程进行处理。
步骤S301:对peer-link端口进入的未知单播报文做记录;查找目的MAC转发表中查找相应的MAC地址,这里,未查找到相应的MAC地址,判断该未知单播报文的目的MAC地址未知,将未知单播报文的目的MAC地址记录到硬件的未知单播报文目的MAC记录缓存(uucdmac record cache)中。
步骤S203:主机A向主机B发送反向流量,由于交换机A和交换机B组成了mclag系统,反向流量会选择一条路径进入mclag系统,如图1B所示,反向流量进入交换机B;此时需要判断MAC地址学习方向与报文流向的关系。
步骤S302:将新获取的目的MAC地址,在硬件uuc dmac record cache里进行查找,这里,能够查找到相应的MAC地址,执行步骤S303。
步骤S303:确定MAC地址学习方向与报文流向相反,此时,可以执行延时下发mac处理流程;还可以将新的MAC地址的记录置位被挂起(pending)状态,后续再查找到该条记录,将不再处理。
这里,交换机B发送MAC地址同步消息给交换机A,交换机A在收到该消息后学习MAC地址;当交换机A学习到MAC地址后,如果交换机A再收到主机B发送过来的报文时,主机B新发送的报文不是未知单播报文了,而是已知单播报文,此时,可以按照已知单播报文直接转发到mclag端口,报文不会再往peer-link端口发送泛洪报文。
步骤S501:结合图2,交换机B向交换机A发送MAC地址同步消息;该该报文走icbg消息链路,不走peer-link链路。
步骤S502:交换机A收到MAC地址同步消息,下发MAC地址学习条目,实现MAC地址的学习,同时发送针对MAC同步消息回复报文至交换机B,该MAC同步消息回复报文不走icbg消息链路,走peer-link链路。交换机B在收到针对MAC地址同步消息的回复消息后,可以下发MAC地址学习条目,实现MAC地址的学习。
需要说明的是,MAC地址同步消息的回复流程不需要周期性触发,只是在MAC地址同步过程中,由消息接收设备对MAC地址同步消息进行回复,同时消息发送设备识别此回复消息,从而,与图4所示的流程相比,省却了定时获取delay_time的需要,仅在本次MAC地址同步时通过ack报文触发延时结束。
在交换机B在学习到该MAC地址之前,对peer-link端口发送过来的报文按照未知单播报文处理,peer-link端口与mclag端口隔离,因而不会向主机A转发。
步骤S305:在收到MAC同步消息回复报文后,交换机B可以将MAC地址学习到硬件芯片,之后,清除硬件uuc dmac record cache中的相应记录条目。
第六实施例
为了能够更加体现本发明的目的,在本发明第一实施例的基础上,进行进一步的举例说明。
如图1B所示,步骤S201:主机B向主机A发送未知单播报文,流量泛洪到交换机A。
步骤S202:交换机A收到未知单播报文,会继续泛洪,其中,一个泛洪出口为交换机A与主机A相连的mclag端口,另一个泛洪出口为交换机A与交换机B相连的peer-link端口;未知单播报文泛洪到了交换机B后,由于存在peer-link端口与mclag端口的隔离,报文不会继续向交换机B与主机A相连的mclag端口泛洪。此时主机A只会收到从交换机A发送过来的一份未知单播报文。
由于此时交换机B收到交换机通过peer-link端口发过来的未知报文,因而,基于图3所示的流程进行处理。
步骤S301:对peer-link端口进入的未知单播报文做记录;查找目的MAC转发表中查找相应的MAC地址,这里,未查找到相应的MAC地址,判断该未知单播报文的目的MAC地址未知,将目的MAC地址上送CPU,记录到软件实现的记录列表uuc dmac record list中。
步骤S203:主机A向主机B发送反向流量,由于交换机A和交换机B组成了mclag系统,反向流量会选择一条路径进入mclag系统,如图1B所示,反向流量进入交换机B;此时需要判断MAC地址学习方向与报文流向的关系。
步骤S302:将新获取的目的MAC地址,在软件实现的记录列表uuc dmac recordlist中进行查找,这里,能够查找到相应的MAC地址,执行步骤S303。
步骤S303:确定MAC地址学习方向与报文流向相反,此时,可以执行延时下发mac处理流程;还可以将新的MAC地址的记录置位被挂起(pending)状态,后续再查找到该条记录,将不再处理。
这里,交换机B发送MAC地址同步消息给交换机A,交换机A在收到该消息后学习MAC地址;当交换机A学习到MAC地址后,如果交换机A再收到主机B发送过来的报文时,主机B新发送的报文不是未知单播报文了,而是已知单播报文,此时,可以按照已知单播报文直接转发到mclag端口,报文不会再往peer-link端口发送泛洪报文。
步骤S501:结合图2,交换机B向交换机A发送MAC地址同步消息;该该报文走icbg消息链路,不走peer-link链路。
步骤S502:交换机A收到MAC地址同步消息,下发MAC地址学习条目,实现MAC地址的学习,同时发送针对MAC同步消息回复报文至交换机B,该MAC同步消息回复报文不走icbg消息链路,走peer-link链路。交换机B在收到针对MAC地址同步消息的回复消息后,可以下发MAC地址学习条目,实现MAC地址的学习。
需要说明的是,MAC地址同步消息的回复流程不需要周期性触发,只是在MAC地址同步过程中,由消息接收设备对MAC地址同步消息进行回复,同时消息发送设备识别此回复消息,从而,与图4所示的流程相比,省却了定时获取delay_time的需要,仅在本次MAC地址同步时通过ack报文触发延时结束。
在交换机B在学习到该MAC地址之前,对peer-link端口发送过来的报文按照未知单播报文处理,peer-link端口与mclag端口隔离,因而不会向主机A转发。
步骤S305:在收到MAC同步消息回复报文后,交换机B可以将MAC地址学习到硬件芯片,之后,清除软件实现的记录列表uuc dmac record list中的相应记录条目。
第七实施例
为了能够更加体现本发明的目的,在本发明第一实施例的基础上,进行进一步的举例说明。
如图4所示,交换机A和交换机B建立mclag系统;交换机A和交换机B会定时互发keepalive报文。
步骤S401:由交换机B向交换机A发送mclag系统的keepalive报文,并记录时间戳T0;该keepalive报文走icbg消息链路,不走peer-link链路。
步骤S402:交换机A收到keepalive报文后,发送keepalive ack报文至交换机B。该keepalive ack报文不走icbg消息链路,走peer-link链路。交换机B收到该ack报文后,再次记录时间戳T0’;使用前后两个时间戳求差值,得到第一交换机和第二交换机之间的网络延时delay_time。delay_time作为常备数据,可以保存在交换机上,作为后续的延后学习操作提供时间依据。
如图1B所示,步骤S201:主机B向主机A发送未知单播报文,流量泛洪到交换机A。
步骤S202:交换机A收到未知单播报文,会继续泛洪,其中,一个泛洪出口为交换机A与主机A相连的mclag端口,另一个泛洪出口为交换机A与交换机B相连的peer-link端口;未知单播报文泛洪到了交换机B后,由于存在peer-link端口与mclag端口的隔离,报文不会继续向交换机B与主机A相连的mclag端口泛洪。此时主机A只会收到从交换机A发送过来的一份未知单播报文。
由于此时交换机B收到交换机通过peer-link端口发过来的未知报文,因而,基于图3所示的流程进行处理。
步骤S301:对peer-link端口进入的未知单播报文做记录;查找目的MAC转发表中查找相应的MAC地址,这里,未查找到相应的MAC地址,判断该未知单播报文的目的MAC地址未知,将未知单播报文的目的MAC地址记录到硬件uuc dmac record cache中。
步骤S203:主机A向主机B发送反向流量,由于交换机A和交换机B组成了mclag系统,反向流量会选择一条路径进入mclag系统,如图1B所示,反向流量进入交换机B;此时需要判断MAC地址学习方向与报文流向的关系。
步骤S302:将新获取的目的MAC地址,在硬件uuc dmac record cache里进行查找,这里,能够查找到相应的MAC地址,执行步骤S303。
步骤S303:确定MAC地址学习方向与报文流向相反,此时,可以执行延时下发mac处理流程;还可以将新的MAC地址的记录置位被挂起(pending)状态,后续再查找到该条记录,将不再处理。
这里,交换机B发送MAC地址同步消息给交换机A,交换机A在收到该消息后学习MAC地址;当交换机A学习到MAC地址后,如果交换机A再收到主机B发送过来的报文时,主机B新发送的报文不是未知单播报文了,而是已知单播报文,此时,可以按照已知单播报文直接转发到mclag端口,报文不会再往peer-link端口发送泛洪报文。
为了保证可靠性,同时采用图4所示keepalive报文消息回复机制、以及图5所示的MAC地址同步消息回复机制,以delay_time到达时刻和接收MAC地址同步消息的回复消息的时刻中较早的时刻为准,这样,可以保证不会因为链路丢包导致MAC条目无法写入硬件MAC转发表。
步骤S501:结合图2,交换机B向交换机A发送MAC地址同步消息;该该报文走icbg消息链路,不走peer-link链路。
步骤S502:交换机A收到MAC地址同步消息,下发MAC地址学习条目,实现MAC地址的学习,同时发送针对MAC同步消息回复报文至交换机B,该MAC同步消息回复报文不走icbg消息链路,走peer-link链路。交换机B在收到针对MAC地址同步消息的回复消息后,可以下发MAC地址学习条目,实现MAC地址的学习。
交换机B在向交换机A发送MAC地址同步消息后,可以按照上述方式3对MAC地址进行延后学习。在交换机B在学习到该MAC地址之前,对peer-link端口发送过来的报文按照未知单播报文处理,peer-link端口与mclag端口隔离,因而不会向主机A转发。
步骤S305:在delay_time时间过后,或者,在收到MAC同步消息回复报文后,交换机B可以将MAC地址学习到硬件芯片,之后,清除硬件uuc dmac record cache中的相应记录条目。
第八实施例
为了能够更加体现本发明的目的,在本发明第一实施例的基础上,进行进一步的举例说明。
如图4所示,交换机A和交换机B建立mclag系统;交换机A和交换机B会定时互发keepalive报文。
步骤S401:由交换机B向交换机A发送mclag系统的keepalive报文,并记录时间戳T0;该keepalive报文走icbg消息链路,不走peer-link链路。
步骤S402:交换机A收到keepalive报文后,发送keepalive ack报文至交换机B。该keepalive ack报文不走icbg消息链路,走peer-link链路。交换机B收到该ack报文后,再次记录时间戳T0’;使用前后两个时间戳求差值,得到第一交换机和第二交换机之间的网络延时delay_time。delay_time作为常备数据,可以保存在交换机上,作为后续的延后学习操作提供时间依据。
如图1B所示,步骤S201:主机B向主机A发送未知单播报文,流量泛洪到交换机A。
步骤S202:交换机A收到未知单播报文,会继续泛洪,其中,一个泛洪出口为交换机A与主机A相连的mclag端口,另一个泛洪出口为交换机A与交换机B相连的peer-link端口;未知单播报文泛洪到了交换机B后,由于存在peer-link端口与mclag端口的隔离,报文不会继续向交换机B与主机A相连的mclag端口泛洪。此时主机A只会收到从交换机A发送过来的一份未知单播报文。
由于此时交换机B收到交换机通过peer-link端口发过来的未知报文,因而,基于图3所示的流程进行处理。
步骤S301:对peer-link端口进入的未知单播报文做记录;查找目的MAC转发表中查找相应的MAC地址,这里,未查找到相应的MAC地址,判断该未知单播报文的目的MAC地址未知,将目的MAC地址上送CPU,记录到软件实现的记录列表uuc dmac record list中。
步骤S203:主机A向主机B发送反向流量,由于交换机A和交换机B组成了mclag系统,反向流量会选择一条路径进入mclag系统,如图1B所示,反向流量进入交换机B;此时需要判断MAC地址学习方向与报文流向的关系。
步骤S302:将新获取的目的MAC地址,在软件实现的记录列表uuc dmac recordlist中进行查找,这里,能够查找到相应的MAC地址,执行步骤S303。
步骤S303:确定MAC地址学习方向与报文流向相反,此时,可以执行延时下发mac处理流程;还可以将新的MAC地址的记录置位被挂起(pending)状态,后续再查找到该条记录,将不再处理。
这里,交换机B发送MAC地址同步消息给交换机A,交换机A在收到该消息后学习MAC地址;当交换机A学习到MAC地址后,如果交换机A再收到主机B发送过来的报文时,主机B新发送的报文不是未知单播报文了,而是已知单播报文,此时,可以按照已知单播报文直接转发到mclag端口,报文不会再往peer-link端口发送泛洪报文。
为了保证可靠性,同时采用图4所示keepalive报文消息回复机制、以及图5所示的MAC地址同步消息回复机制,以delay_time到达时刻和接收MAC地址同步消息的回复消息的时刻中较早的时刻为准,这样,可以保证不会因为链路丢包导致MAC条目无法写入硬件MAC转发表。
步骤S501:结合图2,交换机B向交换机A发送MAC地址同步消息;该该报文走icbg消息链路,不走peer-link链路。
步骤S502:交换机A收到MAC地址同步消息,下发MAC地址学习条目,实现MAC地址的学习,同时发送针对MAC同步消息回复报文至交换机B,该MAC同步消息回复报文不走icbg消息链路,走peer-link链路。交换机B在收到针对MAC地址同步消息的回复消息后,可以下发MAC地址学习条目,实现MAC地址的学习。
交换机B在向交换机A发送MAC地址同步消息后,可以按照上述方式3对MAC地址进行延后学习。在交换机B在学习到该MAC地址之前,对peer-link端口发送过来的报文按照未知单播报文处理,peer-link端口与mclag端口隔离,因而不会向主机A转发。
步骤S305:在delay_time时间过后,或者,在收到MAC同步消息回复报文后,交换机B可以将MAC地址学习到硬件芯片,之后,清除软件实现的记录列表uuc dmac record list中的相应记录条目。
第九实施例
在本发明前述实施例提出的报文处理方法的基础上,本发明第九实施例提出了一种报文处理装置,应用于第一交换机中。
图7为本发明实施例的报文处理装置的组成结构示意图,如图7所示,该装置可以包括:第一处理模块701和第二处理模块702;其中,
第一处理模块701,用于在接收到目的设备在接收未知报文后发送的数据流时,且确定MAC地址学习方向与报文流向相反时,对目的设备的MAC地址进行延后学习;其中,MAC地址学习方向用于表征第一交换机和第二交换机对所述目的设备的MAC地址学习顺序,报文流向用于表征所述未知报文在所述第一交换机和第二交换机之间的报文传输方向;
第二处理模块702,用于根据延后学习到的所述目的设备的MAC地址,将新接收的报文按照已知报文进行处理。
在一实施方式中,所述第一处理模块701,具体用于向所述第二交换机发送MAC地址同步消息;接收到针对所述MAC地址同步消息的回复消息后,学习所述目的设备的MAC地址。
在一实施方式中,所述第一处理模块701,具体用于在向所述第二交换机发送MAC地址同步消息后,等待设定时长,学习所述目的设备的MAC地址;所述设定时长为预先确定的所述第一交换机和第二交换机之间的网络延时。
在一实施方式中,所述第一处理模块701,具体用于向所述第二交换机发送MAC地址同步消息后,若在设定时长内未接收到针对所述MAC地址同步消息的回复消息,则在向所述第二交换机发送MAC地址同步消息的延后设定时长的时刻,学习所述目的设备的MAC地址;若在设定时长内接收到针对所述MAC地址同步消息的回复消息,在接收到所述回复消息后,学习所述目的设备的MAC地址。
在一实施方式中,所述第一处理模块701,具体用于在周期性地向第二交换机发送第一报文的时刻,记录第一时间戳;在接收到针对所述第一报文的回复信息时,记录第二时间戳;确定第一时间戳和第二时间戳的差值,将最新得出的时间戳的差值确定为所述第一交换机和第二交换机之间的网络延时。
在一实施方式中,所述第一交换机向第二交换机发送所述第一报文时采用的链路为:所述第一交换机向第二交换机发送MAC地址同步消息采用的链路;
所述第一交换机接收针对所述第一报文的回复信息时采用的链路为:所述第一交换机接收针对所述MAC地址同步消息的回复消息时采用的链路。
在一实施方式中,所述第一处理模块701,具体用于在通过peer-link端口接收到未知报文时,记录通过peer-link端口接收到的未知报文的目的设备的MAC地址;确定所述数据流对应的目的设备的MAC地址属于已经记录的MAC地址时,确定所述MAC地址学习方向与所述报文流向相反。
在一实施方式中,所述第一处理模块701,具体用于在硬件缓存中,记录所述通过peer-link端口接收到的未知报文的目的设备的MAC地址;或者,利用软件实现的记录列表中,记录所述通过peer-link端口接收到的未知报文的目的设备的MAC地址。
在一实施方式中,所述第一处理模块701,还用于在通过对所述目的设备的MAC地址进行延后学习,将所述目的设备的MAC地址存储至MAC转发表时,清除预先记录的所述目的设备的MAC地址
实际应用中,上述第一处理模块701和第二处理模块702均可由CPU、微处理器(Micro Processor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)、或现场可编程门阵列(Field Programmable Gate Array,FPGA)等实现。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
具体来讲,本实施例中的一种报文处理方法对应的计算机程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种报文处理方法对应的计算机程序指令被一电子设备读取或被执行时,实现前述实施例的任意一种报文处理方法的步骤。
基于前述实施例相同的技术构思,参见图8,其示出了本发明实施例提供的一种报文处理设备80,该设备可以包括:存储器81和处理器82;其中,
所述存储器81,用于存储计算机程序和数据;
所述处理器82,用于执行所述存储器中存储的计算机程序,以实现前述实施例的任意一种报文处理方法的步骤。
在实际应用中,上述存储器81可以是易失性存储器(volatile memory),例如RAM;或者非易失性存储器(non-volatile memory),例如ROM,快闪存储器(flash memory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,并向处理器82提供指令和数据。
上述处理器82可以为特定用途集成电路(Application Specific IntegratedCircuit,ASIC)、DSP、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(Programmable Logic Device,PLD)、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。用于实现上述处理器功能的电子器件还可以为其它,本发明实施例不作具体限定。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (11)
1.一种报文处理方法,其特征在于,应用于第一交换机中,所述方法包括:
接收到目的设备在接收未知报文后发送的数据流时,且确定媒体访问控制MAC地址学习方向与报文流向相反时,对所述目的设备的MAC地址进行延后学习;其中,所述MAC地址学习方向用于表征第一交换机和第二交换机对所述目的设备的MAC地址学习顺序,所述报文流向用于表征所述未知报文在所述第一交换机和第二交换机之间的报文传输方向;
根据延后学习到的所述目的设备的MAC地址,将新接收的报文按照已知报文进行处理。
2.根据权利要求1所述的方法,其特征在于,所述对所述目的设备的MAC地址进行延后学习包括:
向所述第二交换机发送MAC地址同步消息;接收到针对所述MAC地址同步消息的回复消息后,学习所述目的设备的MAC地址。
3.根据权利要求1所述的方法,其特征在于,所述对所述目的设备的MAC地址进行延后学习包括:
在向所述第二交换机发送MAC地址同步消息后,等待设定时长,学习所述目的设备的MAC地址;所述设定时长为预先确定的所述第一交换机和第二交换机之间的网络延时。
4.根据权利要求1所述的方法,其特征在于,所述对所述目的设备的MAC地址进行延后学习包括:
向所述第二交换机发送MAC地址同步消息后,若在设定时长内未接收到针对所述MAC地址同步消息的回复消息,则在向所述第二交换机发送MAC地址同步消息的延后设定时长的时刻,学习所述目的设备的MAC地址;若在设定时长内接收到针对所述MAC地址同步消息的回复消息,在接收到所述回复消息后,学习所述目的设备的MAC地址。
5.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:
在所述第一交换机和第二交换机中的一个交换机周期性地向另一个交换机发送第一报文的时刻,记录第一时间戳;在所述第一交换机和第二交换机中的一个交换机接收到针对所述第一报文的回复信息时,记录第二时间戳;
确定所述第一时间戳和第二时间戳的差值,将最新得出的时间戳的差值确定为所述第一交换机和第二交换机之间的网络延时。
6.根据权利要求5所述的方法,其特征在于,所述第一交换机向第二交换机发送所述第一报文时采用的链路为:所述第一交换机向第二交换机发送MAC地址同步消息采用的链路;
所述第一交换机接收针对所述第一报文的回复信息时采用的链路为:所述第一交换机接收针对所述MAC地址同步消息的回复消息时采用的链路。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在通过peer-link端口接收到未知报文时,记录通过peer-link端口接收到的未知报文的目的设备的MAC地址;
确定所述数据流对应的目的设备的MAC地址属于已经记录的MAC地址时,确定所述MAC地址学习方向与所述报文流向相反。
8.根据权利要求7所述的方法,其特征在于,所述记录通过peer-link端口接收到的未知报文的目的设备的MAC地址,包括:
在硬件缓存中,记录所述通过peer-link端口接收到的未知报文的目的设备的MAC地址;或者,利用软件实现的记录列表中,记录所述通过peer-link端口接收到的未知报文的目的设备的MAC地址。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在通过对所述目的设备的MAC地址进行延后学习,将所述目的设备的MAC地址存储至MAC转发表时,清除预先记录的所述目的设备的MAC地址。
10.一种报文处理设备,其特征在于,所述设备包括处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,
所述处理器用于运行所述计算机程序时,执行权利要求1至9任一项所述方法的步骤。
11.一种计算机存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至9任一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811640801.9A CN111385197B (zh) | 2018-12-29 | 2018-12-29 | 一种报文处理方法、设备和计算机存储介质 |
PCT/CN2019/128988 WO2020135666A1 (zh) | 2018-12-29 | 2019-12-27 | 报文处理方法、设备和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811640801.9A CN111385197B (zh) | 2018-12-29 | 2018-12-29 | 一种报文处理方法、设备和计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111385197A true CN111385197A (zh) | 2020-07-07 |
CN111385197B CN111385197B (zh) | 2022-09-13 |
Family
ID=71126876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811640801.9A Active CN111385197B (zh) | 2018-12-29 | 2018-12-29 | 一种报文处理方法、设备和计算机存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111385197B (zh) |
WO (1) | WO2020135666A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112804158A (zh) * | 2021-03-31 | 2021-05-14 | 四川新网银行股份有限公司 | 一种交换机未知单播转发与控制方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114448869A (zh) * | 2020-10-19 | 2022-05-06 | 南京中兴新软件有限责任公司 | 数据表同步方法及其装置、数据交换设备、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120033668A1 (en) * | 2010-08-04 | 2012-02-09 | Alcatel-Lucent Usa, Inc. | IP Multicast Snooping and Routing with Multi-Chassis Link Aggregation |
CN105577552A (zh) * | 2014-10-31 | 2016-05-11 | 日立金属株式会社 | 中继系统和交换机装置 |
CN108989200A (zh) * | 2018-07-11 | 2018-12-11 | 深圳市信锐网科技术有限公司 | 数据包转发方法、装置和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140204760A1 (en) * | 2013-01-22 | 2014-07-24 | Brocade Communications Systems, Inc. | Optimizing traffic flows via mac synchronization when using server virtualization with dynamic routing |
JP6278800B2 (ja) * | 2014-04-03 | 2018-02-14 | APRESIA Systems株式会社 | 中継システムおよびスイッチ装置 |
-
2018
- 2018-12-29 CN CN201811640801.9A patent/CN111385197B/zh active Active
-
2019
- 2019-12-27 WO PCT/CN2019/128988 patent/WO2020135666A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120033668A1 (en) * | 2010-08-04 | 2012-02-09 | Alcatel-Lucent Usa, Inc. | IP Multicast Snooping and Routing with Multi-Chassis Link Aggregation |
CN105577552A (zh) * | 2014-10-31 | 2016-05-11 | 日立金属株式会社 | 中继系统和交换机装置 |
CN108989200A (zh) * | 2018-07-11 | 2018-12-11 | 深圳市信锐网科技术有限公司 | 数据包转发方法、装置和系统 |
Non-Patent Citations (1)
Title |
---|
博客园: ""数据中心交换机横向虚拟化集群漫谈"", 《HTTPS://WWW.CNBLOGS.COM/GZXBKK/P/9144408.HTML》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112804158A (zh) * | 2021-03-31 | 2021-05-14 | 四川新网银行股份有限公司 | 一种交换机未知单播转发与控制方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2020135666A1 (zh) | 2020-07-02 |
CN111385197B (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9059932B2 (en) | Packet ordering based on delivery route changes in communication networks | |
JP5521620B2 (ja) | 中継装置、仮想マシンシステム及び中継方法 | |
CN103220160B (zh) | 在分布式开关中管理全局转发表的方法和装置 | |
CN111385197B (zh) | 一种报文处理方法、设备和计算机存储介质 | |
CN101540731B (zh) | 一种三层报文转发方法及装置 | |
CN104737507A (zh) | 在大规模数据中心环境中用机会第3层转发确保任意到任意可达性 | |
US20060168276A1 (en) | Node discovery involving multiple node enumerators | |
WO2014176752A1 (en) | Host mobility messaging | |
CN102118434A (zh) | 数据包传输方法和设备 | |
US10944667B2 (en) | Loop check packets | |
US20190349293A1 (en) | Managing Data Frames in Switched Networks | |
EP2850789B1 (en) | Optimization for trill lan hellos | |
US20060168180A1 (en) | Node discovery involving stealth node enumerators | |
CN107547400B (zh) | 一种虚拟机迁移方法和装置 | |
US20090296727A1 (en) | Method and Apparatus to Count MAC Moves at Line Rate | |
US20080130503A1 (en) | Method and system for forwarding ethernet frames over redundant networks with all links enabled | |
CN106549821A (zh) | 一种网络环路检测方法及控制器 | |
CN108810183B (zh) | 冲突mac地址的处理方法、装置和机器可读存储介质 | |
WO2017219868A1 (zh) | Arp条目的处理方法及装置 | |
CN104702693B (zh) | 两节点系统分区的处理方法和节点 | |
CN104348737A (zh) | 一种组播报文的传输方法及交换机 | |
TWI505675B (zh) | 網路交換器與資料更新方法 | |
CN107395523B (zh) | 控制方法及网络架构 | |
CN104113463A (zh) | 一种基于网桥的数据报文处理方法、装置及网桥 | |
EP3979564A1 (en) | Device virtualization method, apparatus, system, device, and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |