CN107968753A - 修改媒体接入控制地址转发表的方法和装置 - Google Patents
修改媒体接入控制地址转发表的方法和装置 Download PDFInfo
- Publication number
- CN107968753A CN107968753A CN201610921064.4A CN201610921064A CN107968753A CN 107968753 A CN107968753 A CN 107968753A CN 201610921064 A CN201610921064 A CN 201610921064A CN 107968753 A CN107968753 A CN 107968753A
- Authority
- CN
- China
- Prior art keywords
- port
- message
- forwarding
- mac address
- mac
- 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
Classifications
-
- 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
Abstract
公开了一种修改MAC地址转发表的方法和装置,用以减少由于拓扑变更造成的广播流量。该方法包括:报文转发设备删除MAC地址转发表中包括变更端口的标识的表项,所述变更端口是所述报文转发设备的工作状态由转发状态变为故障状态的端口,或者所述报文转发设备的工作状态由转发状态变为阻塞状态的端口,或者与另一报文转发设备的工作状态由转发状态变为阻塞状态的端口以单跳链路相连的端口;通过除变更端口之外的另一端口发送通知报文,通知报文携带MAC地址,所述MAC地址是MAC地址转发表中包括变更端口的标识的表项中的MAC地址,通知报文用于指示接收通知报文的设备删除包括接收所述通知报文的端口的标识和所述MAC地址的表项。
Description
技术领域
本申请涉及计算机网络技术领域,尤其涉及一种报文转发设备、一种修改媒体接入控制(英文:Media Access Control,MAC)地址转发表的更新方法及一种修改MAC地址转发表的装置。
背景技术
以太网中常常通过部署冗余链路来解决报文传输的可靠性问题。冗余链路是指报文传输的源节点至目的节点之间存在的至少两条链路。这样当其中一条链路出现故障时,其他链路可以传输通信双方的流量。包括环形拓扑在内的多种网络拓扑结构可以提供冗余链路。例如,单环拓扑可以为通信双方提供两条链路。
为了避免报文通过冗余链路形成的环形链路形成流量风暴,需要在网络中的报文转发设备上部署用于破除环形链路的协议,如生成树协议(英文:Spanning TreeProtocol,STP)、或快速环网保护协议(英文:Rapid Ring Protection Protocol,RRPP)等协议。用于破除环形链路的协议被简称为“破环协议”。通过破环协议阻塞报文转发设备上的部分端口,来保证冗余链路中同一时间仅有一条链路用以转发流量,同时支持在当前转发流量的链路发生故障时进行倒换。当冗余链路中当前转发流量的链路发生故障,冗余链路中的另一条链路成为新的转发流量的链路这一过程被称为拓扑变更。
本申请为了描述简便,将发生拓扑变更之前为通信双方转发流量的链路称为原有链路,将发生拓扑变更之后为通信双方转发流量的链路称为新链路。报文转发设备根据保存的MAC地址转发表对流量进行转发。在发生拓扑变更时,网络拓扑中的报文转发设备采用以下方式更新MAC地址转发表,以使后续流量通过新链路转发:报文转发设备检测到相连的单跳链路发生故障后,删除包含故障端口的标识的表项,并且通过该报文转发设备上的其他端口发送清除(flush)报文。原有链路中的其他报文转发设备收到该清除报文后,删除接收该清除报文的端口对应的所有表项以及原有链路上的其他端口对应的所有表项。删除表项之后,如果任意一个报文转发设备接收到一个报文后,从MAC地址转发表中查找不到该报文的目的MAC地址对应的端口,则广播该报文。该报文转发设备收到源地址为该MAC地址的报文后,将新的表项添加在MAC地址转发表中。新的表项包括该报文的源地址和接收该报文的端口的标识。
实际应用中的能够提供冗余链路的网络拓扑往往较为复杂,一是网络拓扑中环形链路的数目较多,二是环形链路中包含更多报文转发设备,三是报文转发设备连接有多个终端设备,因而报文转发设备的MAC地址转发表中往往包含大量表项。在发生拓扑变更时,采用上述MAC地址转发表的更新方式会删除MAC地址转发表中的大量表项,引起大量广播流量。
发明内容
本申请提供的修改MAC地址转发表的方法和修改MAC地址转发表的装置,用以减少由于拓扑变更造成的广播流量。
本申请提出了一种修改MAC地址转发表的方案,对拓扑变更过程中报文转发设备删除MAC地址转发表中表项的机制进行改进。在该方案中通过对引发拓扑变更的报文转发设备生成通知报文的原理,通知报文携带的信息,以及接收到通知报文转发设备的表项删除流程进行改变,实现了以MAC地址为粒度删除表项。该方案能够以更高的精度修改表项,避免在MAC地址转发表中删除拓扑变更前后转发路径不变的流量相关的表项。
在所有应用破环协议来更新MAC地址转发表的网络中,均可以应用本申请提供的修改MAC地址转发表的方法。
第一方面,提供了一种修改MAC地址转发表的方法,包括:所述报文转发设备删除MAC地址转发表中包括变更端口的标识的表项。所述变更端口是所述报文转发设备的工作状态由转发状态变为故障状态的端口,或者所述报文转发设备的工作状态由转发状态变为阻塞状态的端口,或者与另一报文转发设备的工作状态由转发状态变为阻塞状态的端口以单跳链路相连的端口。通过所述报文转发设备上除所述变更端口之外的另一端口发送通知报文。所述通知报文携带MAC地址。所述MAC地址是所述MAC地址转发表中包括所述变更端口的标识的表项中的MAC地址。所述通知报文用于指示接收所述通知报文的设备删除包括接收所述通知报文的端口的标识和所述MAC地址的表项。
可选地,在环形拓扑中,上述发送通知报文的另一端口是指与变更端口在同一环上的端口。在树形拓扑等其他非环形拓扑中,上述发送通知报文的另一端口是指所述报文转发设备上的其他至少一个端口。
本申请检测到变更端口的报文转发设备不仅删除包括变更端口的标识的表项,还发送携带查找到的表项中的MAC地址的通知报文。该通知报文指示其他设备仅删除接收该通知报文的端口对应的表项中包括所述MAC地址的表项,而不是删除所有表项。剩余的表项仍然可以用于转发相应目的地址的报文。由于通知报文经过的路径可能为目的地址为其携带的MAC地址的报文在网络拓扑改变前经过的路径,在网络拓扑改变前,这些报文被发送到生成通知报文的报文转发设备。如果不改变目的地址为其携带的MAC地址的报文转发路径,在网络拓扑改变后,这些报文可能仍然被发送到生成通知报文的报文转发设备。在网络拓扑改变前,生成通知报文的报文转发设备用变更端口发送这些报文。在网络拓扑改变后,生成通知报文的报文转发设备不能正确转发这些报文。为了避免这些报文仍然被发送到生成通知报文的报文转发设备,接收到该通知报文的报文转发设备删除相应的表项,以学习网络拓扑改变后目的地址为通知报文携带的MAC地址的报文的新表项。另一方面,在网络拓扑改变前,目的地址不是通知报文携带的MAC地址的报文的转发路径不经由变更端口。因此,网络拓扑改变不导致目的地址不是通知报文携带的MAC地址的报文的转发路径改变。报文转发设备不需要删除通知报文不携带的MAC地址对应的表项。通过改进的通知报文使得接收到通知报文的报文转发设备能够减少在拓扑变更过程中删除的表项数量,从而减少报文转发设备发送的广播流量。
在一种可能的实现中,所述变更端口是所述报文转发设备的工作状态由转发状态变为阻塞状态的端口,所述方法还包括:
通过所述变更端口向对端端口发送指示报文,所述对端端口是另一报文转发设备上的与所述变更端口通过单跳链路连接的端口。所述指示报文用于通知其他报文转发设备发送该指示报文的报文转发设备上的端口被设置为阻塞状态。
在一种可能的实现中,所述变更端口为与另一报文转发设备的工作状态由转发状态变为阻塞状态的端口以单跳链路相连的端口,所述报文转发设备删除MAC地址转发表中包括变更端口的标识的表项之前,还包括:所述报文转发设备接收所述另一报文转发设备发送的指示报文,所述指示报文用于通知其他报文转发设备发送该指示报文的报文转发设备上的端口被设置为阻塞状态。接收到所述指示报文后,所述报文转发设备确定所述变更端口为接收到所述指示报文的端口。
在报文转发设备的端口的工作状态由转发状态变为阻塞状态的场景下,工作状态由转发状态变为阻塞状态的端口通过单跳链路向另一报文转发设备发送指示报文,触发与工作状态由转发状态变为阻塞状态的端口以单跳链路相连的端口所在的另一报文转发设备也生成并发送另一通知报文。从而在端口被阻塞的场景中,两个报文转发设备分别向不同方向传递各自的通知报文。
第二方面,提供一种修改MAC地址转发表的方法,包括:报文转发设备接收第一通知报文,所述第一通知报文中携带MAC地址。仅删除MAC地址转发表中的待删除表项,所述待删除表项包括接收所述第一通知报文的端口的标识与所述第一通知报文中的MAC地址。用除接收所述第一通知报文的端口之外的另一端口转发所述第一通知报文。
本申请中用通知报文替代传统的清除报文,接收到通知报文的报文转发设备无需删除接收到清除报文的端口对应的所有表项以及连接在原有链路上的其他端口对应的所有表项,而是仅删除包括接收所述通知报文的端口的标识和所述通知报文中的MAC地址二者对应关系的表项。并用除接收所述通知报文的端口之外的另一端口继续转发所述通知报文。本申请接收到通知报文的报文转发设备在拓扑变更过程中需要修改的表项数量减少,从而使得报文转发设备发送的广播流量减少,提升了网络流量传输质量。
在一种可能的实现中,所述报文转发设备所述接收所述第一通知报文的端口为最近一次拓扑变更前处于转发状态的端口,所述方法还包括:所述报文转发设备的最近一次拓扑变更前处于阻塞状态的端口接收第二通知报文,所述报文转发设备丢弃所述第二通知报文。
在一种可能的实现中,所述报文转发设备接收第三通知报文,所述MAC地址转发表中的任意一个表项不包括接收所述第三通知报文的端口的标识与所述第三通知报文中的MAC地址,所述报文转发设备丢弃所述第三通知报文。
为了避免通知报文在网络中无限地传递下去,可以将最近一次拓扑变更前处于阻塞状态的端口,以及端口所对应的表项中未包含通知报文中携带的MAC地址的端口作为通知报文传递的终点。
第三方面,提供了一种报文转发设备,该报文转发设备具有实现上述第一方面所述方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
第四方面,本申请实施例提供了一种报文转发设备,该报文转发设备具有实现上述第二方面所述方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
第五方面,本申请实施例提供了一种计算机存储介质,用于储存为上述报文转发设备所用的计算机软件指令,其包含用于执行上述第一方面所设计的程序。
第六方面,本申请实施例提供了一种计算机存储介质,用于储存为上述报文转发设备所用的计算机软件指令,其包含用于执行上述第二方面所设计的程序。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A为拓扑变更前网络结构的示意图;
图1B为拓扑变更后网络结构的示意图;
图2为本申请实施例提供的修改MAC地址转发表的方法的流程图;
图3A为本申请实施例提供的修改MAC地址转发表的方法的另一流程图;
图3B为本申请实施例提供的通知报文格式的示意图;
图3C为本申请实施例提供的修改MAC地址转发表的方法的另一流程图;
图3D为本申请实施例提供的修改MAC地址转发表的方法的另一流程图;
图4为本申请实施例提供的变更端口为故障端口的场景中,修改MAC地址转发表的方法的流程图;
图5A为本申请实施例提供的单环拓扑发生拓扑变更前网络结构的示意图;
图5B为本申请实施例提供的单环拓扑发生拓扑变更后网络结构的示意图;
图6A为本申请实施例提供的另一单环拓扑发生拓扑变更前网络结构的示意图;
图6B为本申请实施例提供的另一单环拓扑发生拓扑变更后网络结构的示意图;
图7A为本申请实施例提供的变更端口为被阻塞的端口的场景中,修改MAC地址转发表的方法的流程图;
图7B为本申请实施例提供的指示报文格式的示意图;
图8为本申请实施例提供的变更端口是与另一报文转发设备上被阻塞端口在同一单跳链路上的端口的场景中,修改MAC地址转发表的方法的流程图;
图9A为本申请实施例提供的单环拓扑发生拓扑变更前网络结构的示意图;
图9B为本申请实施例提供的单环拓扑发生拓扑变更后网络结构的示意图;
图10A为本申请实施例提供的单环外层叠加半环拓扑发生拓扑变更前网络结构的示意图;
图10B为本申请实施例提供的单环外层叠加半环拓扑发生拓扑变更后网络结构的示意图;
图11A为本申请实施例提供的树形拓扑发生链路故障前的示意图;
图11B为本申请实施例提供的树形拓扑发生链路故障后的示意图;
图12为本申请实施例提供的报文转发设备的结构示意图;
图13为本申请实施例提供的另一种报文转发设备的结构示意图;
图14是本申请实施例提供的修改MAC地址转发表的装置的逻辑结构示意图;
图15是本申请实施例提供的另一种修改后MAC地址转发表的装置的逻辑结构示意图。
具体实施方式
下面结合附图1A和附图1B所示的极为简单的一个单环拓扑的实例介绍现有技术在拓扑变更时MAC地址转发表的更新过程。附图1A描述了发生拓扑变更前的网络结构。四个报文转发设备交换机Switch 1、交换机Switch 2、交换机Switch 3和交换机Switch 4依次连接构成一个单环拓扑。MAC地址为MAC A的服务器通过交换机Switch 3接入网络。一个用户通过交换机Switch 1接入网络。MAC地址的长度为6字节。在本申请中,为了描述直观起见,用“MAC+字母”的方式来简化地代表和区分不同MAC地址。在服务器和用户之间存在两条链路,即由交换机Switch 1、交换机Switch 2、交换机Switch 3组成的左侧链路,和由交换机Switch 1、交换机Switch 4、交换机Switch 3组成的右侧链路,这两条链路互为冗余链路。交换机Switch 4上的端口P7被设置为阻塞端口。交换机Switch 1上存储的MAC地址转发表中包括表项“MAC A:P1”,该表项表示通过端口P1可以转发来自于MAC A或发送到MAC A的报文。交换机Switch 3上存储的MAC地址转发表包括表项“MAC A:P3”,该表项表示通过端口P3可以转发来自于MAC A或发送到MAC A的报文。此时,用户可以通过左侧链路访问服务器。
附图1B描述了发生拓扑变更后的网络结构。交换机Switch 2和交换机Switch 3之间的链路发生故障触发拓扑变更。发生拓扑变更后,交换机Switch 2和交换机Switch 3发送清除报文,导致交换机Switch 2和交换机Switch 3上的上述表项被删除。通过广播流量进行MAC学习后,交换机Switch 1在MAC地址转发表中添加表项“MAC A:P8”,该表项表示通过端口P8可以转发来自于MAC A或发送到MAC A的报文。交换机Switch 4在MAC地址转发表添加表项“MAC A:P6”,该表项表示通过端口P6可以转发来自于MAC A或发送到MAC A的报文。这样用户可以通过右侧链路访问服务器。
在发生拓扑变更时,接收到清除报文的报文转发设备将删除MAC地址转发表中接收到清除报文的端口对应的所有表项、以及连接在原有链路上的其他端口对应的所有表项,再重新生成上述端口对应的新的表项。也就是说在删除表项时,是以端口标识为粒度删除表项的。在删除表项和重新生成表项之间的时间段内,如果报文转发设备接收到一个报文后,确认MAC地址表中不存在包含该报文的目的MAC的表项,该报文转发设备会将该报文广播到网络中。报文转发设备在发生拓扑变更过程中删除的表项越多,可能引发越多的广播流量。
在大多数情况下接收到清除报文的端口对应的表项中有一部分表项变更前后是相同的。对于部分流量来说,拓扑变更前后转发路径是不变的。因此本申请提出了一种修改MAC地址转发表的方法,该方法能够以更高的精度删除表项,避免在MAC地址转发表中删除这部分拓扑变更前后转发路径不变的流量相关的表项。
一方面,该方法首先对触发拓扑变更的报文转发设备发送的通知报文进行改进。触发拓扑变更的报文转发设备可以是检测到相连的单跳链路故障的报文转发设备,也可以是检测到端口被阻塞的报文转发设备。用一种新的通知报文替代现有的清除报文或拓扑变化通告(英文:Topology Change Notification,TCN)报文,该通知报文携带有MAC地址。其次,接收到该通知报文的报文转发设备根据该通知报文中携带的MAC地址,选择性地只删除MAC地址转发表中接收到通知报文的端口对应的表项中的一部分表项。这样在拓扑变更过程中,MAC地址转发表中接收到通知报文的端口对应的另一部分表项被保留。与现有技术相比,报文转发设备在拓扑变更过程中需要删除的表项数量减少,从而使得报文转发设备发送的广播流量减少,提升通信质量。
本申请实施例提供的修改MAC地址转发表的方法适用于多种网络拓扑结构,例如提供冗余链路的单环拓扑以及单环外层叠加半环拓扑,同样也适用于树形组网。本申请中的报文转发设备包括以太网交换机、有二层处理功能的路由器等等。
为了便于描述,本申请提供的方案中根据变更端口的所在的位置,将报文转发设备分为两类。第一类是检测到变更端口的报文转发设备,或者说变更端口所在的报文转发设备。第二类是未检测到变更端口的报文转发设备,即网络拓扑中除了第一类报文转发设备之外的报文转发设备。在附图1B所示的单环拓扑中,交换机Switch 2和交换机Switch 3是第一类报文转发设备,交换机Switch 1和交换机Switch 4为第二类报文转发设备。
本领域技术人员可以理解,变更端口的出现具有不确定性,例如网络拓扑中的任何单跳链路均有可能发生故障,任何端口都有可能被阻塞。因此网络拓扑中的任何一个报文转发设备均有可能在第一时刻是第一类报文转发设备,在第二时刻是第二类报文转发设备。
下面结合各个附图,对本申请的实施例进行描述。
实施例一
图2是本申请实施例提供的修改MAC地址转发表的方法的流程图。该方法的执行主体可以是上述第一类报文转发设备。
步骤20,报文转发设备删除MAC地址转发表中包括变更端口的标识的表项。
MAC地址转发表记录MAC地址与转发端口的对应关系。MAC地址转发表的每个表项中至少包括MAC地址和与该MAC地址对应的端口的标识。表项中还可以包括虚拟局域网(英文:virtual local area network,VLAN)标识等。当报文转发设备,例如以太网交换机,接收到一个报文时,在MAC地址转发表中查找包括报文目的MAC地址的表项。如果查找到包括报文目的MAC地址的表项,则通过查找到的表项中端口的标识所表征的端口将该报文转发到网络中。
在步骤20中,报文转发设备检测到变更端口。变更端口是指报文转发设备的工作状态发生改变的端口。端口的工作状态包括:转发状态,阻塞状态,故障状态等等。变更端口包括工作状态由转发状态变为故障状态的端口,或者工作状态由转发状态变为阻塞状态的端口,或者与另一报文转发设备上工作状态由转发状态变为阻塞状态的端口以单跳链路相连的端口。
故障状态是指由于故障原因,无法正常转发报文的工作状态。在本申请中,单跳链路是指用于连接两个相邻的报文转发设备、不经其他报文转发设备中继的链路。由于单跳链路具有两个端点,因此单跳链路连接的两个报文转发设备均能检测到该单跳链路发生故障。
报文转发设备的端口在发生故障时可以向中央处理器(英文:centralprocessing unit,CPU)发送中断信号。CPU接收到该中断信号就可以确定端口处于故障状态。或者CPU周期性读取端口状态以确定端口处于故障状态。关于如何检测链路故障可以参考其他相关文献,在这里不再详述。
为了避免产生环形链路,破环协议基于规定的算法,将网络拓扑中的一部分端口设置为阻塞状态。阻塞状态是指不参与报文转发的工作状态。处于阻塞状态的端口不参与报文转发,也不进行地址学习,但可以接收配置消息,并交给CPU处理。
在本申请后面的描述中,工作状态由转发状态变为故障状态的端口被简称为故障端口,工作状态由转发状态变为阻塞状态的端口被简称为被阻塞的端口。
报文转发设备检测到变更端口后,从保存的MAC地址转发表中查找包括变更端口的标识的表项。进一步,报文转发设备删除查找到的表项。
步骤21,报文转发设备用除所述变更端口之外的另一端口发送通知报文。所述通知报文携带MAC地址,所述MAC地址是所述MAC地址转发表中包括所述变更端口的标识的表项中的MAC地址,即查找到的表项中包含的MAC地址。通知报文用于指示接收所述通知报文的设备删除包括接收所述通知报文的端口的标识和所述MAC地址的表项。可选地,用于发送通知报文的端口是拓扑变更前与变更端口在同一原有链路上的另一端口。
实际中,在查找到包含有变更端口的标识的表项后,可以先删除表项,再发送通知报文。也可以先发送通知报文,再删除表项。还可以并行执行删除表项和发送通知报文。
图3A是本申请实施例提供的修改MAC地址转发表的方法的流程图。该方法的执行主体是第二类报文转发设备。
步骤30,报文转发设备接收通知报文,所述通知报文中携带至少一个MAC地址。其中通知报文是指附图2中步骤21中发送的通知报文。
附图3B是本申请实施例中通知报文格式的一个示例。适用于各个实例。通知报文可以是破环协议类型的报文。其中“Header”为通知报文的报文头。报文头为破环协议相关标准规定的报文头。该报文头中包含目的MAC地址,破环协议的EtherType字段等等。通知报文的目的MAC地址的设置方式参照破环协议的规定。例如,如果通知报文的类型为RRPP,则通知报文的目的MAC地址为未知单播地址;如果通知报文的类型为以太网环保护交换(英文:Ethernet Ring Protection Switching,ERPS)协议,则通知报文的目的MAC地址为未知组播地址。报文转发设备对于通知报文的处理方式可以参照对现有破环协议报文的处理方式对通知报文进行处理,即如果通知报文为RRPP报文,则报文转发设备参照RRPP报文的处理方式对通知报文进行处理,如果通知报文为ERPS报文,则报文转发设备参照ERPS报文的处理方式对通知报文进行处理。报文转发设备的端口接收到通知报文后,既可以将通知报文复制后,将复制的通知报文发送给处理器处理,同时将原通知报文转发;也可以将通知报文发送给处理器处理,等待处理器处理后,再将处理后的通知报文转发,当然处理后的通知报文和处理前的通知报文中载荷信息中的内容是相同的。
通知报文的载荷信息“Payload information”中以类型-长度-值(英文:type-length-value,TLV)的形式携带多个MAC地址MAC1~MACN。TLV中的类型(type)值为1表示该报文为通知报文,其他各字段占用的比特数如附图3B所示。
事实上,通知报文的格式不限于附图3B的示例,本领域技术人员可以在附图3B的基础上进行修改,只要载荷信息能携带至少一个MAC地址,并且能被报文转发设备识别和解析即可。
步骤31,报文转发设备从MAC地址转发表中仅删除待删除表项,所述待删除表项包含接收所述通知报文的端口的标识与所述通知报文中携带的一个MAC地址。
步骤32,报文转发设备用所述报文转发设备上除接收所述通知报文的端口之外的另一端口转发所述通知报文。可选地,用于转发通知报文的端口是拓扑变更前与接收通知报文的端口在同一条原有链路上的另一端口。
可选地,为了避免通知报文在网络中无限地传递下去,可以将最近一次拓扑变更前处于阻塞状态的端口,以及端口所对应的表项中未包含通知报文中携带的MAC地址的端口作为通知报文传递的终点。
本申请提供了两种终止通知报文传递的方式:
方式一
根据接收到通知报文的端口在最近一次拓扑变更之前的工作状态确定是否转发通知报文。如果接收到通知报文的端口是最近一次拓扑变更之前处于阻塞状态的端口,那么报文转发设备在拓扑变更前无法通过该端口发送数据报文或接收数据报文,因而报文转发设备的MAC地址转发表中不存在包含该接收到通知报文的端口的标识的表项。因此,为了提高效率,节省查找MAC地址转发表所耗费的时间,附图3A的流程可以改进为报文转发设备在接收到通知报文后,在执行步骤32之前,可以先确认该接收到通知报文的端口是否是最近一次拓扑变更之前处于阻塞状态的端口,如果是拓扑变更之前处于阻塞状态的端口,则直接丢弃该通知报文,不再转发该通知报文。
可选地,如附图3C所示,图3A所示的方法在步骤32之前,还包括:
步骤33,确定接收所述通知报文的端口在最近一次拓扑变更之前处于阻塞状态或转发状态。实际中,报文转发设备可以通过设置标记来记录变更之前处于阻塞状态的端口。例如,在报文转发设备上用以实现破环协议的软件中为每个端口新增一个标识位,该标识位用以记录最近一次发生拓扑变更前的状态是否是阻塞状态,例如用1表示为阻塞状态,用0或空值NULL表示非阻塞状态。该软件在拓扑变更过程中基于协议报文交互,重新设置各端口的状态时,更新每个端口对应的上述标识位中的值。当报文转发设备接收到通知报文时,依据接收到通知报文的端口对应的上述标识位中的值,确认接收到通知报文的端口在拓扑变更前是否为阻塞状态,如果是阻塞状态,同时将该标识位重置为表示非阻塞状态的值。
如果接收所述通知报文的端口是拓扑变更之前处于转发状态端口,执行步骤32。如果接收所述通知报文的端口是拓扑变更之前处于阻塞状态的端口,则执行步骤34,丢弃所述通知报文。
例如,报文转发设备确定接收第一通知报文的端口是最近一次拓扑变更前处于转发状态的端口,转发第一通知报文。报文转发设备的最近一次拓扑变更前处于阻塞状态的端口接收第二通知报文,所述报文转发设备丢弃所述第二通知报文。
方式二
报文转发设备确定MAC地址转发表中是否存在至少一个表项包括接收通知报文的端口的标识与所述通知报文中的MAC地址。如果MAC地址转发表中的任意一个表项不包括接收所述通知报文的端口的标识与所述通知报文中的MAC地址,所述报文转发设备丢弃所述通知报文。
可选地,如附图3D所示,图3A所示的方法在步骤32之前,还包括:
步骤35,确定MAC地址转发表中是否存在至少一个表项包括接收通知报文的端口的标识与所述通知报文中的MAC地址。如果存在至少一个表项包括接收通知报文的端口的标识与所述通知报文中的MAC地址,则执行步骤32。如果MAC地址转发表中的任意一个表项不包括接收所述通知报文的端口的标识与所述通知报文中的MAC地址,则执行步骤36,所述报文转发设备丢弃所述通知报文。
例如,报文转发设备接收第一通知报文,MAC地址转发表中存在至少一个表项包括接收第一通知报文的端口的标识与所述第一通知报文中的MAC地址,转发第一通知报文。报文转发设备接收第三通知报文,所述MAC地址转发表中的任意一个表项不包括接收所述第三通知报文的端口的标识与所述第三通知报文中的MAC地址,所述报文转发设备丢弃所述第三通知报文。
本申请实施例提供的修改MAC地址转发表的方法,检测到变更端口的报文转发设备不仅从MAC地址转发表中删除包含有变更端口的标识的表项,还生成通知报文并通过所述报文转发设备上除所述变更端口之外的另一端口发送通知报文,该通知报文中携带查找到的表项中包含的MAC地址,用于指示接收所述通知报文的设备删除包括接收所述通知报文的端口的标识和所述MAC地址的表项。接收到通知报文的报文转发设备从MAC地址转发表中查找待删除表项并删除待删除表项,所述待删除表项包含接收所述通知报文的端口的标识与所述通知报文中携带的MAC地址,并且通过除接收所述通知报文的端口之外的其他端口转发所述通知报文。与现有技术相比,本申请实施例接收到通知报文的报文转发设备在拓扑变更过程中需要删除的表项数量减少,从而使得报文转发设备发送的广播流量减少,提升了网络流量传输质量。
下面将结合几个具体应用场景,对上述附图2和附图3A介绍的修改MAC地址转发表的方法进行说明。
实例一
本实施例主要介绍在链路故障场景中,修改MAC地址转发表的方法。报文转发设备中MAC地址转发表的更新主要涉及删除原有表项以及生成新表项。本实施例主要介绍在发生链路变更时,报文转发设备删除MAC地址转发表的原有表项的过程,在MAC地址转发表的表项被删除后,如何基于后续流量生成新的表项的过程与现有技术类似,在这里不再重复。
图4是本申请实施例提供的修改MAC地址转发表的方法的流程图。该方法的执行主体可以是第一类报文转发设备。
步骤40,报文转发设备检测以所述报文转发设备上的端口作为端点的单跳链路是否发生故障。
步骤41,报文转发设备在检测到故障后,确定所述报文转发设备上的故障端口。在本实例中将工作状态由转发状态变为故障状态的端口简称为故障端口。
步骤42,报文转发设备从保存的MAC地址转发表中查找包含有故障端口的标识的表项。报文转发设备的MAC地址转发表中的表项包含端口的标识与MAC地址标识的对应关系。包含有故障端口的标识的表项即为所包含的对应关系中包含故障端口的标识的表项。
步骤43,报文转发设备删除查找到的表项。删除包含有故障端口的标识的表项是指删除所包含的对应关系中包含故障端口的标识的表项。
步骤44,报文转发设备通过所述报文转发设备上除所述故障端口之外的其他端口发送通知报文,所述通知报文中携带至少一个MAC地址,所述至少一个MAC地址是指查找到的表项中包含的MAC地址。
无需限定步骤43和步骤44执行时的先后顺序。在步骤42查找到包含有故障端口的标识的表项后,可以先执行步骤43删除表项,再执行步骤44发送通知报文,也可以先执行步骤44发送通知报文,再执行步骤43删除表项,当然也可以并行执行步骤43和步骤44。
图5A和图5B分别是一个简单单环拓扑发生拓扑变更前和拓扑变更后的示意图。
如图5A所示,四个报文转发设备交换机Switch 1、交换机Switch 2、交换机Switch3和交换机Switch 4依次连接构成一个环路。三个MAC地址分别为MAC A、MAC B和MAC C的终端设备通过交换机Switch 4接入网络。一个MAC地址为MAC D的终端设备通过交换机Switch1接入网络。一个MAC地址为MAC E的终端设备通过交换机Switch 2接入网络。通过广播流量,各报文转发设备学习到的MAC地址转发表如图所示。其中交换机Switch 3上的端口P5为处于阻塞状态的端口,其他端口为转发端口。本申请中处于转发状态,可以用于转发流量的端口被称为转发端口。
如图5B所示,某一时刻,交换机Switch 4上的端口P7和交换机Switch 1上的端口P8之间的单跳链路发生故障。此前处于阻塞状态的端口P5成为转发端口。这时,拓扑发生变更。
交换机Switch 1检测到以端口P8为端点的单跳链路发生故障后,确定故障端口为端口P8。交换机Switch 1查找MAC地址转发表确定包含有端口P8的表项为“MAC A:P8”,“MACB:P8”和“MAC C:P8”。交换机Switch 1生成通知报文MAC-withdraw,该通知报文MAC-withdraw用于通知其他报文转发设备发生拓扑变更,需要删除原有链路相关的表项,该通知报文MAC-withdraw中携带MAC A、MAC B和MAC C。交换机Switch 1通过端口P1和交换机Switch 2上的端口P2之间的单跳链路将通知报文发送给交换机Switch 2。
交换机Switch 1还删除包含有端口P8的表项为“MAC A:P8”,“MAC B:P8”和“MACC:P8”,这样交换机Switch 1收到的后续流量不会通过故障端口被转发。
交换机Switch 2通过端口P2接收到通知报文MAC-withdraw后,在保存的MAC地址转发表中查找待删除表项。其中,交换机Switch 2的MAC地址转发表当前有4个表项,分别为“MAC A:P2”、“MAC B:P2”、“MAC C:P2”和“MAC D:P2”。待删除表项是指包含有通知报文MAC-withdraw中携带的MAC A、MAC B或MAC C中的任意一个与端口P2组成的对应关系的表项,即“MAC A:P2”、“MAC B:P2”和“MAC C:P2”。交换机Switch 2从MAC地址转发表中删除表项“MACA:P2”、“MAC B:P2”和“MAC C:P2”,这样后续目的MAC地址为MAC A、MAC B或MAC C的流量将不会通过端口P2发送至交换机Switch 4。
交换机Switch 2通过端口P3和交换机Switch 3上的端口P4之间的单跳链路将通知报文MAC-withdraw发送给交换机Switch 3。
交换机Switch 3通过端口P4接收到通知报文MAC-withdraw后,在保存的MAC地址转发表中查找待删除表项。其中,交换机Switch 3的MAC地址转发表当前有5个表项,分别为“MAC A:P4”、“MAC B:P4”、“MAC C:P4”、“MAC D:P4”和“MAC E:P4”。待删除表项是指包含有通知报文MAC-withdraw中携带的MAC A、MAC B或MAC C中的任意一个与端口4组成的对应关系的表项,即“MAC A:P4”、“MAC B:P4”和“MAC C:P4”。交换机Switch 3从MAC地址转发表中删除表项“MAC A:P4”、“MAC B:P4”、“MAC C:P4”,这样后续目的MAC地址为MAC A、MAC B或MAC C的流量将不会通过端口4发送至交换机Switch 4。
交换机Switch 3通过端口P5和交换机Switch 4上的端口P6之间的单跳链路将通知报文MAC-withdraw发送给交换机Switch 4。
交换机Switch 4通过端口P6接收到通知报文MAC-withdraw后,由于交换机Switch4未保存的接收到通知报文MAC-withdraw的端口P6对应的表项,因此交换机Switch 4丢弃通知报文MAC-withdraw,停止转发通知报文MAC-withdraw。这样通知报文MAC-withdraw不会在网络中无限制的传递下去。
经过上述处理,在交换机Switch 2的MAC地址转发表中的表项“MAC D:P2”将被保留,因此在拓扑变更过程中交换机Switch 2在转发流量时,对于目的地址MAC地址为MAC D的报文不会引发广播流量。在交换机Switch 3的MAC地址转发表中的表项“MAC D:P4”和“MAC E:P4”将被保留,因此在拓扑变更过程中交换机Switch 3在转发流量时,对于目的MAC地址为MAC D和MAC E的报文不会引发广播流量。
在附图5A所示的场景中,在拓扑变更过程中,如果采用现有技术修改MAC地址转发表,清除报文不携带任何MAC地址,网络中的报文转发设备删除接收到清除报文的端口相关的所有表项,最终交换机Switch 2上端口P2的所有表项都被删除,交换机Switch 3上端口P4相关的所有表项都被删除。交换机Switch 2收到目的地址MAC地址为MAC D的报文后,将会由于没有对应表项而进行广播。交换机Switch 3收到目的MAC地址为MAC D或MAC E的报文后,将会由于没有对应表项而进行广播。
通过比较可以看出,与现有技术相比,本申请实施例提供的修改MAC地址表的方法通过在拓扑变更过程中保留MAC地址转发表中更多的表项,避免MAC地址转发表中大量表项被不必要地删除,从而降低拓扑变更过程中大量广播流量对于网络通信质量的影响。
图5A和图5B以通知报文MAC-withdraw单向传播为例介绍本申请提供的修改MAC地址表的方法。事实上由于在发生链路故障时,发生故障的单跳链路两端的报文转发设备均可以检测到链路故障,因此两个报文转发设备均可以向不同方向传递通知报文MAC-withdraw。下面将结合图6A和图6B所示的稍复杂的网络拓扑实例,对本申请提供的修改MAC地址表的方法进行进一步介绍。
图6A和图6B分别描述了一个稍复杂单环拓扑发生拓扑变更前和拓扑变更后的示意图。
如图6A所示,六个报文转发设备交换机Switch 1、交换机Switch 2、交换机Switch3、交换机Switch 4、交换机Switch 5和交换机Switch 6依次连接构成一个环路。每个报文转发设备连接有一个终端设备。MAC地址为MAC A的终端设备通过交换机Switch 1接入网络。MAC地址为MAC B的终端设备通过交换机Switch 2接入网络。MAC地址为MAC C的终端设备通过交换机Switch3接入网络。MAC地址为MAC D的终端设备通过交换机Switch 4接入网络。MAC地址为MAC E的终端设备通过交换机Switch 5接入网络。MAC地址为MAC F的终端设备通过交换机Switch 6接入网络。通过广播流量,各报文转发设备上生成的MAC地址转发表如图所示。其中交换机Switch 4上的端口P6为被阻塞的端口,其他端口为转发端口。
如图6B所示,某一时刻,交换机Switch 1上的端口P12和交换机Switch 6上的端口P11之间的单跳链路发生故障。此前被阻塞的端口P6成为转发端口。这时网络发生拓扑变更。
交换机Switch 1检测到以端口P12为端点的单跳链路发生故障后,确定故障端口为端口P12。交换机Switch 1查找MAC地址转发表确定包含有端口P12的表项为“MAC D:P12”,“MAC E:P12”和“MAC F:P12”。交换机Switch1生成通知报文MAC-withdraw1,该通知报文MAC-withdraw1用于通知其他报文转发设备发生拓扑变更,需要删除原有链路相关的表项,该通知报文MAC-withdraw1中携带MAC D、MAC E和MAC F。交换机Switch 1通过端口P1和交换机Switch 2上的端口P2之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 2。交换机Switch 1还删除包含有端口P12的表项“MAC D:P12”,“MAC E:P12”和“MACF:P12”,这样交换机Switch 1收到的后续流量不会通过故障端口被转发。
交换机Switch 2通过端口P2接收到通知报文MAC-withdraw1后,删除包含P2和通知报文MAC-withdraw1携带的任意一个MAC地址的对应关系的表项,即删除表项“P2:MACD”、“P2:MAC E”和“P2:MAC F”。交换机Switch 2通过端口P3和交换机Switch 3上的端口P4之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 3。
交换机Switch 3通过端口P4接收到通知报文MAC-withdraw1后,删除包含P4和通知报文MAC-withdraw1携带的任意一个MAC地址的对应关系的表项,即删除表项“P4:MACD”、“P4:MAC E”和“P4:MAC F”。交换机Switch 3通过端口P5和交换机Switch 4上的端口P6之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 4。
交换机Switch 4通过端口P6接收到通知报文MAC-withdraw1后,由于端口P6是拓扑变更之前的被阻塞的端口,交换机Switch 4丢弃通知报文MAC-withdraw1,停止转发通知报文MAC-withdraw1。
与交换机Switch 1相类似的,交换机Switch 6检测到以端口P11为端点的单跳链路发生故障后,确定故障端口为端口P11。交换机Switch 6查找MAC地址转发表确定包含有端口P11的表项为“MAC A:P11”,“MAC B:P11”和“MAC C:P11”。交换机Switch 6生成通知报文MAC-withdraw2,该通知报文MAC-withdraw2用于通知其他报文转发设备发生拓扑变更,需要删除原有链路相关的表项,该通知报文MAC-withdraw2中携带MAC A、MAC B和MAC C。交换机Switch 6通过端口P10和交换机Switch 5上的端口P9之间的单跳链路将通知报文MAC-withdraw2发送给交换机Switch 5。交换机Switch 6还删除包含有端口P11的表项“MAC A:P11”,“MAC B:P11”和“MAC C:P11”,这样Switch 6收到的后续流量不会通过故障端口被转发。
交换机Switch 5通过端口P9接收到通知报文MAC-withdraw2后,删除包含P9和通知报文MAC-withdraw2携带的任意一个MAC地址的对应关系的表项,即删除表项“P9:MACA”、“P9:MAC B”和“P9:MAC C”。Switch 5通过端口P8和交换机Switch 4上的端口P7之间的单跳链路将通知报文MAC-withdraw2发送给交换机Switch 4。
交换机Switch 4通过端口P7接收到通知报文MAC-withdraw2后,删除包含P7和通知报文MAC-withdraw2携带的任意一个MAC地址的对应关系的表项,即删除表项“P7:MACA”、“P7:MAC B”和“P7:MAC C”。交换机Switch 4通过端口P6和交换机Switch 3上的端口P5之间的单跳链路将通知报文MAC-withdraw2发送给交换机Switch 3。
交换机Switch 3通过端口P5接收到通知报文MAC-withdraw2后,经查找确认MAC地址转发表中不存在包含P5和通知报文MAC-withdraw2携带的任意一个MAC地址的对应关系的表项。Switch 3丢弃通知报文MAC-withdraw2,停止转发通知报文MAC-withdraw2。
经过上述处理,各转发设备中被删除的表项用阴影表示,保留的表项用淡色表示,共有10个表项被保留。如果采用现有技术修改MAC地址转发表,附图6A中的所有表项都将被删除。可见,与现有技术相比,本申请实施例提供的修改MAC地址表的方法通过在拓扑变更过程中精确地删除原有转发路径相关的表项,原有转发路径是指包括故障单跳链路的转发路径,而保留MAC地址转发表中更多的表项。由于该方案避免MAC地址转发表中更多的表项被不必要地删除,减少了广播流量,从而降低拓扑变更过程中大量广播流量对于网络通信质量的影响。例如,采用本申请实施例提供的方案,在交换机Switch 2上的表项“MAC A:P2”被保留,这样交换机Switch 2可以将目的MAC地址为MAC A的报文通过端口P2正常转发,不会将目的MAC地址为MAC A的报文广播到网络中。
实例二
实例一介绍了因链路故障导致的拓扑变更时修改MAC地址转发表的方法。除了链路故障导致的拓扑变更,正在转发流量的端口被阻塞,也会导致拓扑变更。例如,当发生故障的链路恢复后,为了避免通信双方之间存在多条用于转发报文的路径形成环形链路而导致流量风暴,STP基于路径开销和端口开销,会阻塞部分端口。类似地,当有新的报文转发设备加入网络拓扑时,STP也会基于路径开销和端口开销,会阻塞部分端口。其中本申请中STP阻塞端口是指将端口设置为双向阻塞状态,即报文转发设备既不能通过该端口接收报文也不能通过该端口发送报文。
本实例主要介绍附图2和附图3A所示的修改MAC地址转发表的方法在端口被阻塞的场景中的应用。本实施例主要介绍在发生链路变更时,报文转发设备删除MAC地址转发表的原有表项的过程,在MAC地址转发表的表项被删除后,如何根据后续流量生成新的表项的过程与现有技术类似。
在实施例一链路故障的场景中,故障单跳链路两端的报文转发设备均能检测到相连的单跳链路故障,继而生成并转发通知报文,然而现有用于破除环形链路的协议,例如STP等由于只阻塞单跳链路一端的端口即可保证该单跳链路不转发数据流量,而无需阻塞单跳链路两端的端口。在这种情况下需要被阻塞的端口向对端端口发送一个指示报文,触发对端端口也生成并发送通知报文。
具体地,在本实例中报文转发设备上的变更端口是被阻塞的端口或者是与另一报文转发设备上被阻塞的端口在同一单跳链路上的端口。图7A和图8将分别就这两种情况进行说明。
图7A是报文转发设备上的变更端口是被阻塞的端口的情况下,触发拓扑变更的报文转发设备修改MAC地址转发表的方法的流程图。
步骤70,报文转发设备确定本报文转发设备上的端口被阻塞。例如,配置了STP的报文转发设备可以基于STP标准中规定的优先级算法确定本报文转发设备上的端口被阻塞。
步骤71,报文转发设备从保存的MAC地址转发表中查找包含有被阻塞的端口的标识的表项。
步骤72,报文转发设备删除查找到的包含有被阻塞的端口的标识的表项。
步骤73,报文转发设备通过所述报文转发设备上除被阻塞的端口之外的其他端口发送第一通知报文,所述第一通知报文中携带步骤71查找到的表项中包含的MAC地址。
本实施例中出现的第一通知报文和后续出现的第二通知报文并不是表示顺序关系,而是为了区别不同的通知报文。
可选地,如果用于破除环形链路的协议只阻塞单跳链路一端的端口,则在在步骤70之后,还包括:
步骤74,报文转发设备通过所述被阻塞的端口向对端端口发送指示报文。其中对端端口是指另一报文转发设备上的与所述被阻塞的端口通过单跳链路连接的端口。指示报文用于通知其他报文转发设备发送该指示报文的报文转发设备上的端口被设置为阻塞状态。指示报文的功能是触发所述对端端口所在的报文转发设备发送第二通知报文。第二通知报文和第一通知报文的生成方式和传递方式类似,但是携带的MAC地址不同,具体请参考后续附图8的描述。
附图7B是指示报文格式的一个示例。指示报文可以通过破环协议来承载。指示报文的报文头“Header”为破环协议相关标准规定的报文头,该报文头中包含以太头,破环协议的EtherType字段等等。指示报文的载荷信息“Payload information”中以TLV的形式携带阻塞指示符Block。TLV中的“type”值为2表示该报文的类型为指示报文,其他各字段占用的比特数如附图7B所示。事实上,指示报文的格式不限于附图7B的示例,本领域技术人员可以在附图7B的基础上进行修改,只要能携带指示符,并且能被报文转发设备识别和解析即可。
图8是报文转发设备上的变更端口是与另一报文转发设备上被阻塞端口在同一单跳链路上的端口的情况下,触发拓扑变更的报文转发设备修改MAC地址转发表的方法的流程图。
步骤80,报文转发设备接收到另一报文转发设备发送的指示报文。其中,指示报文是另一报文转发设备上被阻塞的端口发送的。
步骤81,报文转发设备接收到所述指示报文后,确定本报文转发设备上接收到所述指示报文的端口。事实上,接收到所述指示报文的端口即为与另一报文转发设备上被阻塞端口在同一单跳链路上的端口。
步骤82,报文转发设备从保存的MAC地址转发表中查找包含有接收到所述指示报文的端口的标识的表项。
步骤83,报文转发设备删除查找到的包含有接收到所述指示报文的端口的标识的表项。
步骤84,报文转发设备通过所述报文转发设备上除接收到所述指示报文的端口之外的其他端口发送通知报文,所述通知报文中携带至少一个MAC地址,所述至少一个MAC地址是指查找到的表项中包含的MAC地址。本步骤中的通知报文即为附图7A中的第二通知报文。
为了更好地对图7A和图8所示的端口被阻塞的场景中,网络拓扑中各报文转发设备修改MAC地址转发表的方法进行说明,图9A和图9B提供了一个具体例子。图9A和图9B分别是一个单环拓扑发生拓扑变更前和拓扑变更后的示意图。
如图9A所示,六个报文转发设备交换机Switch 1、交换机Switch 2、交换机Switch3、交换机Switch 4、交换机Switch 5和交换机Switch 6依次连接构成一个环路。每个报文转发设备连接有一个终端设备。MAC地址为MAC A的终端设备通过交换机Switch 1接入网络。MAC地址为MAC B的终端设备通过交换机Switch 2接入网络。MAC地址为MAC C的终端设备通过交换机Switch 3接入网络。MAC地址为MAC D的终端设备通过Switch 4接入网络。MAC地址为MAC E的终端设备通过交换机Switch 5接入网络。MAC地址为MAC F的终端设备通过交换机Switch 6接入网络。通过MAC地址学习,各报文转发设备上生成的MAC地址转发表如图所示。其中交换机Switch 4上的端口P6为被阻塞的端口,其他端口为转发端口。端口P6被阻塞的原因包括端口P6所在的单跳链路此前发生故障。
如图9B所示,某一时刻,交换机Switch 1上的端口P12被阻塞。此前处于阻塞状态的端口P6被重新设置为转发端口。这时网络发生拓扑变更。
交换机Switch 1检测到端口P12被阻塞后,查找MAC地址转发表确定包含有端口P12的表项为“MAC D:P12”,“MAC E:P12”和“MAC F:P12”。Switch 1生成通知报文MAC-withdraw1,该通知报文MAC-withdraw1用于通知其他报文转发设备发生拓扑变更,需要删除原有链路相关的表项,该通知报文MAC-withdraw1中携带MAC D、MAC E和MAC F。交换机Switch 1通过端口P1和交换机Switch 2上的端口P2之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 2。交换机Switch 1还删除包含有端口P12的表项“MAC D:P12”,“MAC E:P12”和“MAC F:P12”,这样交换机Switch 1不会通过被阻塞的端口转发后续流量。
交换机Switch 2通过端口P2接收到通知报文MAC-withdraw1后,删除包含P2和通知报文MAC-withdraw1携带的任意一个MAC地址的对应关系的表项,即删除表项“P2:MACD”、“P2:MAC E”和“P2:MAC F”。交换机Switch 2通过端口P3和交换机Switch 3上的端口P4之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 3。
交换机Switch 3通过端口P4接收到通知报文MAC-withdraw1后,删除包含P4和通知报文MAC-withdraw1携带的任意一个MAC地址的对应关系的表项,即删除表项“P4:MACD”、“P4:MAC E”和“P4:MAC F”。交换机Switch 3通过端口P5和交换机Switch 4上的端口P6之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 4。
交换机Switch 4通过端口P6接收到通知报文MAC-withdraw1后,由于端口P6是拓扑变更之前的处于阻塞状态的端口,交换机Switch 4丢弃通知报文MAC-withdraw1,停止转发通知报文MAC-withdraw1。
交换机Switch 1检测到端口P12被阻塞后,通过被阻塞的端口P12向交换机Switch6上的端口11发送远端阻塞指示(英文:Remote Block Indication,RBI)报文。交换机Switch 6接收到RBI报文后,确认接收到RBI报文的端口是端口11。交换机Switch 6查找MAC地址转发表确定包含有端口P11的表项为“MAC A:P11”,“MAC B:P11”和“MAC C:P11”。交换机Switch 6生成通知报文MAC-withdraw2,该通知报文MAC-withdraw2用于通知其他报文转发设备发生拓扑变更,需要删除原有链路相关的表项,该通知报文MAC-withdraw2中携带MAC A、MAC B和MAC C。交换机Switch 6通过端口P10和交换机Switch 5上的端口P9之间的单跳链路将通知报文MAC-withdraw2发送给交换机Switch 5。交换机Switch 6还删除包含有端口P11的表项“MAC A:P11”,“MAC B:P11”和“MAC C:P11”,这样交换机Switch 6不会通过端口P11转发后续流量。
交换机Switch 5通过端口P9接收到通知报文MAC-withdraw2后,删除包含P9和通知报文MAC-withdraw2携带的任意一个MAC地址的对应关系的表项,即删除表项“P9:MACA”、“P9:MAC B”和“P9:MAC C”。交换机Switch 5通过端口P8和交换机Switch 4上的端口P7之间的单跳链路将通知报文MAC-withdraw2发送给交换机Switch 4。
交换机Switch 4通过端口P7接收到通知报文MAC-withdraw2后,删除包含P7和通知报文MAC-withdraw2携带的任意一个MAC地址的对应关系的表项,即删除表项“P7:MACA”、“P7:MAC B”和“P7:MAC C”。交换机Switch 4通过端口P6和交换机Switch 3上的端口P5之间的单跳链路将通知报文MAC-withdraw2发送给交换机Switch 3。
交换机Switch 3通过端口P5接收到通知报文MAC-withdraw2后,经查找确认MAC地址转发表中不存在包含P5和通知报文MAC-withdraw2携带的任意一个MAC地址的对应关系的表项。交换机Switch 3丢弃通知报文MAC-withdraw2,停止转发通知报文MAC-withdraw2。
经过上述处理,各转发设备中被删除的表项用阴影表示,保留的表项用淡色表示,共有10个表项被保留。本申请实施例提供的修改MAC地址表的方法通过在拓扑变更过程中精确地删除原有转发路径相关的表项,而保留MAC地址转发表中更多的表项。由于该方案避免MAC地址转发表中更多的表项被不必要地删除,减少了由于转发设备的MAC地址转发表中没有相关表项而广播的流量的比例,从而降低拓扑变更过程中由于广播流量对于网络通信质量的影响。例如,采用本申请实施例提供的方案,在交换机Switch 2上的表项“MAC A:P2”被保留,这样目的MAC地址为MAC A的流量可以正常转发,不会引发广播流量。
实例三
本申请实施例附图2和附图3A提供的方案不仅仅适用于实例一、实例二所示的单环拓扑,也适用于单环外层叠加半环的拓扑结构。下面将结合附图介绍本申请实施例附图2和附图3A提供的修改MAC地址转发表的方法在单环外层叠加半环的拓扑结构中应用的实例。
附图10A是单环外层叠加半环的拓扑结构的示意图。该网络中有交换机Switch 1至交换机Switch 9共9个报文转发设备。一个MAC地址为MAC A的终端设备通过交换机Switch 1接入网络。一个MAC地址为MAC B的终端设备通过交换机Switch 9接入网络。一个MAC地址为MAC C的终端设备通过交换机Switch 8接入网络。一个MAC地址为MAC D的终端设备通过交换机Switch 7接入网络。一个MAC地址为MAC E的终端设备通过交换机Switch2接入网络。
各报文转发设备上配置了RRPP。RRPP是支持单环外层叠加半环的拓扑结构的环形链路破除协议。与STP相比,RRPP具有较高的收敛速度,并且RRPP的收敛时间与环网上节点数目无关,可应用于规模较大的网络。附图10A所示的拓扑结构分为主环和子环。附图10A中主环是交换机Switch 2、交换机Switch 3、交换机Switch 4、交换机Switch 5、交换机Switch 6、交换机Switch7构成的RRPP环,子环是交换机Switch 1、交换机Switch 2、交换机Switch 7、交换机Switch 8、交换机Switch 9构成的RRPP环。一个RRPP环的角色可以通过指定RRPP环的级别来设定,在这里不再详述。
根据RRPP协议,每个报文转发设备可以被称为节点设备。按照节点设备的功能和在拓扑结构中所处的位置,节点设备可以分为主节点、传输节点、边缘节点和辅助边缘节点。每个RRPP环中有一个主节点设备。边缘节点和辅助边缘节点是较为特殊的传输节点,由于在本申请的方案中传输节点、边缘节点和辅助边缘节点的功能相似,所以后续不加区分地用传输节点来统称传输节点、边缘节点和辅助边缘节点。主节点和传输节点各自有两个端口接入RRPP环,其中一个为主端口,另一个为副端口。主节点的主端口用来发送探测环路的报文,副端口用来接收该报文。传输节点的主端口和副端口在功能上没有区别,都用于传输RRPP协议报文和数据报文。在附图10A中,交换机Switch 7和交换机Switch 8是主节点,交换机Switch 7上的副端口P14和交换机Switch8上的副端口P17处于阻塞状态。通过广播流量,各报文转发设备学习到的MAC地址转发表如图所示。
当所有网络链路正常时,主节点的主端口周期性地发送Hello心跳探测报文能正常被同一主节点上的副端口接收到,副端口处于被阻塞状态,从而避免形成流量风暴。
图10B描述了附图10A所示的网络拓扑中有链路发生故障的情况。当子环中某一单跳链路发生故障时,作为该发生故障的单跳链路两个端点的端口向所在的报文转发设备上报信号故障(英文:Signal Fail,SF)信号,触发拓扑变更,子环中此前处于阻塞状态的端口P17成为转发端口。例如,端口P20和端口P19之间的单跳链路发生故障,端口P20向交换机Switch 1上报SF信号,端口P19向交换机Switch 9上报SF信号。下面分别从交换机S witch1和交换机Switch 9的角度对处理流程进行描述。
一方面,交换机Switch 1接收到端口P20上报的SF信号后,确定故障端口为端口P20。交换机Switch 1查找MAC地址转发表确定包含有端口P20的表项为“MAC B:P20”。交换机Switch 1删除表项“MAC B:P20”。交换机Switch 1生成通知报文MAC-withdraw1,该通知报文MAC-withdraw1用于通知其他报文转发设备发生拓扑变更,需要删除原有链路相关的表项,该通知报文MAC-withdraw1中携带MAC B。交换机Switch 1通过端口P1和交换机Switch2上的端口P2之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 2。
交换机Switch 2通过端口P2接收到通知报文MAC-withdraw1。交换机Switch 2上的待删除表项为“MAC B:P2”。交换机Switch 2在保存的MAC地址转发表中查找待删除表项。交换机Switch 2从MAC地址转发表中删除表项“MAC B:P2”。交换机Switch 2通过端口P3和交换机Switch 7上的端口P14之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 7。交换机Switch 2通过端口P4和交换机Switch 3上的端口P5之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 7。
由于交换机Switch 7上的端口P14是拓扑变更前处于阻塞状态的端口,所以交换机Switch 7受到MAC-withdraw1后丢弃MAC-withdraw1不再转发,端口P14是MAC-withdraw1传递的终结。
交换机Switch 3通过端口P5接收到通知报文MAC-withdraw1后,在保存的MAC地址转发表中查找待删除表项“MAC B:P5”。交换机Switch 3从MAC地址转发表中删除表项“MACB:P5”。Switch 3通过端口P6和交换机Switch4上的端口P7之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 4。
交换机Switch 4通过端口P7接收到通知报文MAC-withdraw1后,在保存的MAC地址转发表中查找待删除表项“MAC B:P7”。Switch 4从MAC地址转发表中删除表项“MAC B:P7”。交换机Switch 4通过端口P8和交换机Switch5上的端口P9之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 5。
交换机Switch 5通过端口P9接收到通知报文MAC-withdraw1后,在保存的MAC地址转发表中查找待删除表项“MAC B:P9”。交换机Switch 5从MAC地址转发表中删除表项“MACB:P9”。交换机Switch 5通过端口P10和交换机Switch 6上的端口P11之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 6。
交换机Switch 6通过端口P11接收到通知报文MAC-withdraw1后,在保存的MAC地址转发表中查找待删除表项“MAC B:P11”。Switch 6从MAC地址转发表中删除表项“MAC B:P11”。交换机Switch 6通过端口P12和交换机Switch 7上的端口P13之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 7。
交换机Switch 7通过端口P13接收到通知报文MAC-withdraw1后,由于此时接收到通知报文MAC-withdraw1的端口P13并非拓扑变更前处于阻塞状态的端口,交换机Switch 7在保存的MAC地址转发表中查找待删除表项“MAC B:P13”。交换机Switch 7从MAC地址转发表中删除表项“MAC B:P13”。交换机Switch 7通过端口P15和交换机Switch 8上的端口P16之间的单跳链路将通知报文MAC-withdraw1发送给Switch 8。交换机Switch 7通过端口P14和交换机Switch 2上的端口P3之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 2。由于此时交换机Switch 2上不存在端口P3对应的表项,因此交换机Switch 2丢弃MAC-withdraw1,不再转发。
交换机Switch 8通过端口P16接收到通知报文MAC-withdraw1后,在保存的MAC地址转发表中查找待删除表项“MAC B:P16”。交换机Switch 8从MAC地址转发表中删除表项“MAC B:P16”。交换机Switch 8通过端口P17和交换机Switch 9上的端口P18之间的单跳链路将通知报文MAC-withdraw1发送给交换机Switch 9。
交换机Switch 9通过端口P18接收到通知报文MAC-withdraw1后,由于交换机Switch 9的MAC地址转发表中不存在端口P18对应的表项,因此交换机Switch 9丢弃MAC-withdraw1,不再转发。
另一方面,交换机Switch 9接收到端口P19上报的SF信号后,确定故障端口为端口P19。交换机Switch 9查找MAC地址转发表确定包含有端口P19的表项为“MAC A:P19”、“MACC:P19”、“MAC D:P19”、“MAC E:P19”。交换机Switch 9删除表项“MAC A:P19”、“MAC C:P19”、“MAC D:P19”、“MAC E:P19”。交换机Switch 9生成通知报文MAC-withdraw2,该通知报文MAC-withdraw2用于通知其他报文转发设备发生拓扑变更,需要删除原有链路相关的表项,该通知报文MAC-withdraw2中携带MAC A、MAC C、MAC D、MAC E。交换机Switch 9通过端口P18和交换机Switch 8上的端口P17之间的单跳链路将通知报文MAC-withdraw2发送给交换机Switch 8。
由于端口P17是拓扑变更前处于阻塞状态的端口,所以交换机Switch 8接受到通知报文MAC-withdraw2后丢弃该报文,不再转发。
经过上述处理,各转发设备中被删除的表项用阴影表示,保留的表项用淡色表示,共有28个表项被保留。本申请实施例提供的修改MAC地址表的方法通过在拓扑变更过程中精确地删除原有转发路径相关的表项,而保留MAC地址转发表中更多的表项。由于该方案避免MAC地址转发表中更多的表项被不必要地删除,减少了由于转发设备的MAC地址转发表中没有相关表项而广播的流量的比例,从而降低拓扑变更过程中由于大量广播流量对于网络通信质量的影响。例如,采用本申请实施例提供的方案,在交换机Switch 8上的表项“MACA:P16”、“MAC D:P16”、“MAC E:P16”被保留,这样目的MAC地址为MAC MAC A、MAC D和MAC E的报文可以被正常转发,不会引发广播流量。
实例四
附图2和附图3A所示的网络拓扑中修改MAC地址转发表的方法同样也适用于端口状态变更不会引起拓扑结构改变的网络,例如树形结构的网络。
在实例一和实例二中,当端口从阻塞状态进入转发状态时触发该端口所在的报文转发设备发送TCN报文,利用TCN报文通知网络中的其他报文转发设备修改MAC地址转发表。然而在树形结构的网络中,当单跳链路故障时,由于整个树形结构不变,因此发生故障的单跳链路两端的报文转发设备并不发送TCN报文,因此其他报文转发设备中的MAC地址转发表无法被更新。这将造成一方面,报文转发设备无法根据失效而未被删除的表项正常转发流量,另一方面,当报文转发设备的上行端口配置了MAC防漂移功能时,由于MAC地址转发表中的无效表项,网络管理者无法迁移故障链路所连接的终端设备到网络的其他位置,通过其他报文转发设备接入网络。
下面结合附图11A和附图11B介绍附图2和附图3A所示的修改MAC地址转发表的方法在树形结构的网络中的应用。本实施例主要介绍在发生链路故障时,报文转发设备删除MAC地址转发表的原有表项的过程,在MAC地址转发表的表项被删除后,如何基于后续流量生成新的表项的过程与现有技术类似。
图11A和图11B分别是一个树形结构的网络发生链路故障前后的示意图。
如图11A所示,六个报文转发设备交换机Switch 1、交换机Switch 2、交换机Switch 3、交换机Switch 4、交换机Switch 5和交换机Switch 6连接构成一个树形结构。MAC地址为MAC B的终端设备通过交换机Switch 3接入网络。通过交换机Switch 1、交换机Switch 2的转发,MAC地址为MAC B的终端设备可以与MAC地址为MAC A的服务器通信,或者与其他报文转发设备连接的终端设备进行通信。各报文转发设备上的MAC地址转发表如图所示。
如图11B所示,某一时刻,以交换机Switch 3上的端口P7和交换机Switch2上的端口P5为端点的单跳链路发生故障。作为该发生故障的单跳链路两个端点的端口向所在的报文转发设备上报SF信号。具体地,端口P7向交换机Switch3上报SF信号,端口P5向交换机Switch 2上报SF信号。
作为发生故障的单跳链路一端的交换机Switch 3接收到端口P7上报的SF信号后,确定故障端口为端口P7。交换机Switch 3查找MAC地址转发表确定包含有端口P7的表项为“MAC A:P7”。Switch 3删除表项“MAC A:P7”。由于交换机Switch 3没有其他转发端口与其他报文转发设备连接,所以交换机Switch 3的处理结束。
作为发生故障的单跳链路一端的交换机Switch 2接收到端口P5上报的SF信号后,确定故障端口为端口P5。交换机Switch 2查找MAC地址转发表确定包含有端口P5的表项为“MAC B:P5”。交换机Switch 1删除表项“MAC B:P5”。交换机Switch 1生成通知报文MAC-withdraw,该通知报文MAC-withdraw中携带MA C B。交换机Switch 2通过端口P4和交换机Switch 1上的端口P2之间的单跳链路将通知报文MAC-withdraw发送给Switch 1。交换机Switch 2通过端口P6和交换机Switch 4上的端口P8之间的单跳链路将通知报文MAC-withdraw发送给交换机Switch 4。
交换机Switch 4通过端口P8接收到通知报文MAC-withdraw后,在保存的MAC地址转发表中查找待删除表项“MAC B:P8”。交换机Switch 4从MAC地址转发表中删除表项“MACB:P8”。由于交换机Switch 3没有其他转发端口与其他报文转发设备连接,所以交换机Switch 3的处理结束。
交换机Switch 1通过端口P2接收到通知报文MAC-withdraw后,在保存的MAC地址转发表中查找待删除表项“MAC B:P2”。交换机Switch 1从MAC地址转发表中删除表项“MACB:P2”。Switch 1通过端口P3和交换机Switch5上的端口P9之间的单跳链路将通知报文MAC-withdraw发送给交换机Switch5。
交换机Switch 5通过端口P9接收到通知报文MAC-withdraw后,在保存的MAC地址转发表中查找待删除表项“MAC B:P9”。交换机Switch 5从MAC地址转发表中删除表项“MACB:P9”。交换机Switch 5通过端口P10和交换机Switch 6上的端口P11之间的单跳链路将通知报文MAC-withdraw发送给交换机Switch 6。
交换机Switch 6通过端口P11接收到通知报文MAC-withdraw后,在保存的MAC地址转发表中查找待删除表项“MAC B:P11”。交换机Switch 4从MAC地址转发表中删除表项“MACB:P11”。由于交换机Switch 6没有其他转发端口与其他报文转发设备连接,所以交换机Switch 6的处理结束。
参考附图11B,经过上述处理,各转发设备中被删除的表项用阴影表示,保留的表项用淡色表示。本实施例中,报文转发设备在检测到链路故障时,生成通知报文,并通过所述报文转发设备上的非变更端口将通知报文传递给其他报文转发设备。其他报文转发设备接收到通知报文后,根据通知报文中携带的MAC地址删除MAC地址转发表中的无效表项,避免因MAC地址转发表中存在无效表项而导致流量转发异常或者终端设备迁移失败。
实施例二
本申请还提供了一种报文转发设备。该报文转发设备可以是以太网交换机、有二层处理功能的路由器等等。
附图12是本申请实施例提供的报文转发设备的结构示意图。该报文转发设备为前面方法实施例中的第一类报文转发设备。附图12所示的报文转发设备包括处理器121、存储器122、端口123、转发芯片124和内容可寻址存储器(英文:content-addressable memory,CAM)125。端口123中包含至少两个端口。其中存储器122和转发芯片124可以与处理器121集成于同一个物理器件中,也可以是单独的物理器件。在存储器122和转发芯片124与处理器121集成于同一个物理器件的情况下,存储器122可以是CPU中的寄存器,转发芯片124可以是多核CPU中的一个核。
转发芯片124和存储器122均与处理器121连接。转发芯片124与CAM 125连接。转发芯片124与端口123中的每个端口连接。本申请实施例中不限定上述部件之间的具体连接介质,本申请实施例在图12中以存储器122和处理器121之间通过总线连接,总线在图12中以粗实线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限,例如转发芯片124与处理器121之间可通过总线连接。
处理器121可以是一个或多个CPU。
在存储器122是独立于处理器121的单独的物理器件的情况下,存储器122包括但不限于是随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、快闪存储器、或光存储器。存储器122用于存储程序代码。
端口123可以是各种以太类型端口,端口的数目可以是标准的,也可以是非标准的。常见的标准端口数目交换机的端口数有8端口、16端口、24端口、48端口等几种。而非标准端口数目交换机的端口数主要有4端口,5端口、10端口、12端口、20端口等。
CAM 125可以是三态内容寻址存储器(英文:ternary content addressablememory,TCAM)。CAM 125用于存储MAC地址转发表。
在转发芯片124是独立于处理器121的单独的物理器件的情况下,转发芯片124可以是单独的现场可编程门阵列(英文:Field-Programmable Gate Array,FPGA)、网络处理器(英文:Network Processor,NP)等。转发芯片124的通用功能是:任意一个端口接收到报文后,转发芯片124通过查询CAM125中存储的MAC地址转发表转发报文。具体地,转发芯片124在MAC地址转发表中查询包含报文目的MAC地址的表项,如果存在包含报文目的MAC地址的表项,则转发芯片124通过查找到的表项中的端口的标识对应的端口将报文转发到网络中。如果不存在包含报文目的MAC地址的表项,则转发芯片124通过除接收报文的端口之外的其他端口将报文广播到网络中,根据接收对应的响应报文的端口,学习上述目的MAC地址和端口的对应关系,从而更新MAC地址转发表。
在本申请实施例中,转发芯片124还用于根据处理器121的指示发送通知报文。可选地,转发芯片124还用于发送指示报文。
处理器121读取所述存储器122中存储的程序代码后,执行以下操作。
处理器121删除MAC地址转发表中包括变更端口的标识的表项,以及
指示转发芯片124通过所述至少两个端口中除所述变更端口之外的另一端口发送通知报文,所述通知报文携带MAC地址,所述MAC地址是所述MAC地址转发表中包括所述变更端口的标识的表项中的MAC地址,所述通知报文用于指示接收所述通知报文的设备删除包括接收所述通知报文的端口的标识和所述MAC地址的表项。
可选地,在变更端口是所述报文转发设备的工作状态由转发状态变为阻塞状态的端口的情况下,处理器121还用于指示转发芯片124通过变更端口向对端端口发送指示报文,所述对端端口是另一报文转发设备上的与所述变更端口通过单跳链路连接的端口,所述指示报文用于通知其他报文转发设备发送该指示报文的报文转发设备上的端口被设置为阻塞状态。
可选地,在变更端口是是与另一报文转发设备的工作状态由转发状态变为阻塞状态的端口以单跳链路相连的端口的情况下,处理器121采用以下方式确定变更端口:
通过端口123中的一个端口接收所述另一报文转发设备发送的指示报文,所述指示报文用于通知其他报文转发设备发送该指示报文的报文转发设备上的端口被设置为阻塞状态。接收到所述指示报文后,确定变更端口为接收到所述指示报文的端口。
附图12所示的报文转发设备可以实现的其他附加功能、以及与其他报文转发设备的交互过程,请参照方法实施例中对第一类报文转发设备的描述,在这里不再赘述。
附图13是本申请实施例提供的报文转发设备的结构示意图。该报文转发设备为前面方法实施例中的第二类报文转发设备。附图13所示的该报文转发设备包括处理器131、存储器132、端口133、转发芯片134和CAM 135。端口133中包含至少两个端口。
转发芯片134和存储器132均与处理器131连接。转发芯片134与CAM 135连接,转发芯片134与端口133中的每个端口连接。本申请实施例中不限定上述部件之间的具体连接介质,本申请实施例在图13中以存储器132和处理器131之间通过总线连接,总线在图13中以粗实线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限,例如转发芯片134与处理器131之间可通过总线连接。
处理器131可以是一个或多个CPU。
存储器132包括但不限于是RAM、ROM、EPROM或者快闪存储器、或CD-ROM。存储器132用于存储程序代码。
端口133可以是各种以太类型端口,端口的数目可以是标准的,也可以是非标准的。
端口133中的一个端口接收通知报文,所述通知报文中携带至少一个MAC地址。
在本申请实施例中,转发芯片134不仅执行通用功能,还用于处理接收到的通知报文或者根据处理器121的指示转发通知报文。可选地,转发芯片134在端口接收到通知报文后参照对现有破环协议报文的处理方式对通知报文进行处理,既可以将通知报文复制后,将复制的通知报文发送给处理器,同时将原通知报文转发;也可以将通知报文发送给处理器,等待处理器处理后,再将处理后的通知报文转发。
处理器131读取所述存储器132中存储的程序代码后,执行以下操作。
处理器131仅删除MAC地址转发表中的待删除表项,所述待删除表项包括接收所述第一通知报文的端口的标识与所述第一通知报文中的MAC地址;指示转发芯片134用所述至少两个端口中除接收所述第一通知报文的端口之外的另一端口转发所述第一通知报文。
可选地,为了避免通知报文无限制传递,处理器131还用于转发第一通知报文之前,确定接收所述第一通知报文的端口是最近一次拓扑变更前处于转发状态的端口。如果报文转发设备的最近一次拓扑变更前处于阻塞状态的端口接收到第二通知报文,所述报文转发设备丢弃所述第二通知报文。或者报文转发设备接收第三通知报文,如果所述MAC地址转发表中的任意一个表项不包括接收所述第三通知报文的端口的标识与所述第三通知报文中的MAC地址,所述报文转发设备丢弃所述第三通知报文。
附图13所示的报文转发设备可以实现的其他附加功能、以及与其他报文转发设备的交互过程,请参照方法实施例中对第二类报文转发设备的描述,在这里不再赘述。
附图13所示的报文转发设备的结构与附图12所示的报文转发设备的结构相类似,可以是同一个报文转发设备。一个报文转发设备在不同情况下,例如,检测到变更端口时或接收到通知报文时,该报文转发设备中同一个器件,例如处理器执行不同的功能。
在网络中,至少一个如附图12所示的报文转发设备和至少一个如附图13所示的报文转发设备相互配合,能够在拓扑变更过程中保留MAC地址转发表中更多的表项,避免MAC地址转发表中大量表项被不必要地删除,从而降低拓扑变更过程中大量广播流量对于网络通信质量的影响。
附图14是本申请实施例提供的报文转发设备中MAC地址转发表的更新装置的逻辑结构示意图,该装置可以用软件或硬件方式实现,设置在现有的报文转发设备中。下面仅一种功能模块的划分进行举例说明,实际应用中可以根据需要而将以下功能分配由不同的功能模块完成。设置了附图14所示的装置的报文转发设备为前面方法实施例中的第一类报文转发设备。该装置包括:
处理模块141,用于删除MAC地址转发表中包括变更端口的标识的表项。
发送模块142,用于用所述报文转发设备上除所述变更端口之外的另一端口发送通知报文,所述通知报文携带MAC地址,所述MAC地址是所述MAC地址转发表中包括所述变更端口的标识的表项中的MAC地址,所述通知报文用于指示接收所述通知报文的设备删除包括接收所述通知报文的端口的标识和所述MAC地址的表项。
可选地,在所述变更端口是由转发状态变为阻塞状态的端口的情况下,所述发送模块142,还用于通过所述变更端口向对端端口发送指示报文,所述对端端口是另一报文转发设备上的与所述变更端口通过单跳链路连接的端口,所述指示报文用于通知其他报文转发设备发送该指示报文的报文转发设备上的端口被设置为阻塞状态。
可选地,在变更端口是与另一报文转发设备的工作状态由转发状态变为阻塞状态的端口以单跳链路相连的端口的情况下,该装置还包括接收模块143,用于接收所述另一报文转发设备发送的指示报文,所述指示报文用于通知其他报文转发设备发送该指示报文的报文转发设备上的端口被设置为阻塞状态。
所述处理模块141,还用于在接收模块143接收到所述指示报文后,确定所述变更端口为接收到所述指示报文的端口。
附图14所示的装置可以实现的其他附加功能、以及与其他报文转发设备的交互过程,请参照方法实施例中对第一类报文转发设备的描述,在这里不再赘述。
附图15是本申请实施例提供的报文转发设备中MAC地址转发表的更新装置的逻辑结构示意图,该装置可以用软件或硬件方式实现,设置在现有的报文转发设备中。下面仅一种功能模块的划分进行举例说明,实际应用中可以根据需要而将以下功能分配由不同的功能模块完成。设置了附图15所示的装置的报文转发设备为前面方法实施例中的第二类报文转发设备。该装置包括:
接收模块151,用于接收第一通知报文,所述第一通知报文中携带MAC地址。
处理模块152,用于仅删除MAC地址转发表中的待删除表项,所述待删除表项包括接收所述第一通知报文的端口的标识与所述第一通知报文中的MAC地址。
发送模块153,用于用除接收所述第一通知报文的端口之外的另一端口转发所述通知报文。
可选地,为了提高效率,避免通知报文在网络中无限制传递,提供了两种终结通知报文传递的方式。
方式一
所述处理模块152,还用于在转发第一通知报文之前,确定接收所述第一通知报文的端口是最近一次拓扑变更前处于转发状态的端口。如果接收所述通知报文的端口是最近一次拓扑变更前处于阻塞状态的端口,则丢弃所述通知报文,不再转发。
方式二
所述接收模块151,还用于第三通知报文。
所述处理模块152,还用于如果所述MAC地址转发表中的任意一个表项不包括接收所述第三通知报文的端口的标识与所述第三通知报文中的MAC地址,丢弃所述第三通知报文,不再转发。
附图15所示装置的可以实现的其他附加功能、以及与其他报文转发设备的交互过程,请参照方法实施例中对第二类报文转发设备的描述,在这里不再赘述。
分别设置有本申请实施例附图14和附图15提供的装置的报文转发设备相互配合,能够在拓扑变更过程中保留MAC地址转发表中更多的表项,避免MAC地址转发表中大量表项被不必要地删除,从而降低拓扑变更过程中大量广播流量对于网络通信质量的影响。
显然,本领域技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种修改媒体接入控制MAC地址转发表的方法,其特征在于,包括:
报文转发设备删除MAC地址转发表中包括变更端口的标识的表项,所述变更端口是所述报文转发设备的工作状态由转发状态变为故障状态的端口,或者所述报文转发设备的工作状态由转发状态变为阻塞状态的端口,或者与另一报文转发设备的工作状态由转发状态变为阻塞状态的端口以单跳链路相连的端口;以及
通过所述报文转发设备上除所述变更端口之外的另一端口发送通知报文,所述通知报文携带MAC地址,所述MAC地址是所述MAC地址转发表中包括所述变更端口的标识的表项中的MAC地址,所述通知报文用于指示接收所述通知报文的设备删除包括接收所述通知报文的端口的标识和所述MAC地址的表项。
2.一种修改媒体接入控制MAC地址转发表方法,其特征在于,包括:
报文转发设备接收第一通知报文,所述第一通知报文中携带MAC地址;
仅删除MAC地址转发表中的待删除表项,所述待删除表项包括接收所述第一通知报文的端口的标识与所述第一通知报文中的MAC地址;
用除接收所述第一通知报文的端口之外的另一端口转发所述第一通知报文。
3.根据权利要求2所述的方法,其特征在于,其中,所述报文转发设备所述接收所述第一通知报文的端口是最近一次拓扑变更前处于转发状态的端口,所述方法还包括:
所述报文转发设备的最近一次拓扑变更前处于阻塞状态的端口接收第二通知报文,所述报文转发设备丢弃所述第二通知报文。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
所述报文转发设备接收第三通知报文,所述MAC地址转发表中的任意一个表项不包括接收所述第三通知报文的端口的标识与所述第三通知报文中的MAC地址,所述报文转发设备丢弃所述第三通知报文。
5.一种修改媒体接入控制MAC地址转发表的装置,其特征在于,包括:
处理模块,用于删除MAC地址转发表中包括变更端口的标识的表项,所述变更端口是所述报文转发设备的工作状态由转发状态变为故障状态的端口,或者所述报文转发设备的工作状态由转发状态变为阻塞状态的端口,或者与另一报文转发设备的工作状态由转发状态变为阻塞状态的端口以单跳链路相连的端口;
发送模块,用于通过所述报文转发设备上除所述变更端口之外的另一端口发送通知报文,所述通知报文携带MAC地址,所述MAC地址是所述MAC地址转发表中包括所述变更端口的标识的表项中的MAC地址,所述通知报文用于指示接收所述通知报文的设备删除包括接收所述通知报文的端口的标识和所述MAC地址的表项。
6.一种修改媒体接入控制MAC地址转发表的装置,其特征在于,包括:
接收模块,用于接收第一通知报文,所述第一通知报文中携带MAC地址;
处理模块,用于仅删除MAC地址转发表中的待删除表项,所述待删除表项包括接收所述第一通知报文的端口的标识与所述第一通知报文中的MAC地址;
发送模块,用于用除接收所述第一通知报文的端口之外的另一端口转发所述通知报文。
7.根据权利要求6所述的装置,其特征在于,其中,所述接收模块,所述接收模块接收所述第一通知报文的端口为最近一次拓扑变更前处于转发状态的端口,
所述接收模块,还用于通过最近一次拓扑变更前处于阻塞状态的端口接收第二通知报文;
所述处理模块,还用于丢弃所述第二通知报文。
8.根据权利要求6或7所述的装置,其特征在于,
所述接收模块,还用于第三通知报文;
所述处理模块,还用于如果所述MAC地址转发表中的任意一个表项不包括接收所述第三通知报文的端口的标识与所述第三通知报文中的MAC地址,丢弃所述第三通知报文。
9.一种报文转发设备,其特征在于,包括:处理器、至少两个端口、转发芯片和内容可寻址存储器,其中,所述转发芯片和所述内容可寻址存储器均与所述处理器连接,所述转发芯片与所述至少两个端口中的每个端口连接,所述内容可寻址存储器用于存储MAC地址转发表;
所述处理器用于:
删除所述MAC地址转发表中包括变更端口的标识的表项,所述变更端口是所述至少两个端口中工作状态由转发状态变为故障状态的端口,或者所述至少两个端口中工作状态由转发状态变为阻塞状态的端口,或者所述至少两个端口中与另一报文转发设备的工作状态由转发状态变为阻塞状态的端口以单跳链路相连的端口;以及
指示所述转发芯片通过所述至少两个端口中除所述变更端口之外的另一端口发送通知报文,所述通知报文携带MAC地址,所述MAC地址是所述MAC地址转发表中包括所述变更端口的标识的表项中的MAC地址,所述通知报文用于指示接收所述通知报文的设备删除包括接收所述通知报文的端口的标识和所述MAC地址的表项。
10.一种报文转发设备,其特征在于,包括:处理器、至少两个端口、转发芯片和内容可寻址存储器,其中,所述转发芯片和所述内容可寻址存储器均与所述处理器连接,所述转发芯片与所述至少两个端口中的每个端口连接,所述内容可寻址存储器用于存储MAC地址转发表;
所述至少两个端口中的一个端口接收通知报文,所述通知报文中携带MAC地址;
所述处理器用于:
仅删除所示MAC地址转发表中的待删除表项,所述待删除表项包括接收所述通知报文的端口的标识与所述通知报文中的MAC地址;
所述转发芯片用于用所述至少两个端口中除接收所述通知报文的端口之外的另一端口转发所述通知报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610921064.4A CN107968753B (zh) | 2016-10-20 | 2016-10-20 | 修改媒体接入控制地址转发表的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610921064.4A CN107968753B (zh) | 2016-10-20 | 2016-10-20 | 修改媒体接入控制地址转发表的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107968753A true CN107968753A (zh) | 2018-04-27 |
CN107968753B CN107968753B (zh) | 2021-08-13 |
Family
ID=61996545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610921064.4A Active CN107968753B (zh) | 2016-10-20 | 2016-10-20 | 修改媒体接入控制地址转发表的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107968753B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108683660A (zh) * | 2018-05-14 | 2018-10-19 | 杭州迪普科技股份有限公司 | 一种mac地址认证处理方法及装置 |
CN109921992A (zh) * | 2019-03-26 | 2019-06-21 | 新华三技术有限公司 | 一种路径选择方法、装置、网络设备以及ed设备 |
CN110995560A (zh) * | 2019-12-27 | 2020-04-10 | 安徽皖通邮电股份有限公司 | 一种利用单向检测实现以太网环网保护的方法 |
CN114338538A (zh) * | 2021-12-30 | 2022-04-12 | 锐捷网络股份有限公司 | 一种表项更新方法、装置、电子设备及存储介质 |
CN114760207A (zh) * | 2022-05-05 | 2022-07-15 | 烽火通信科技股份有限公司 | 以太网的环网破环方法与系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7518988B2 (en) * | 2002-10-25 | 2009-04-14 | Fujitsu Limited | Ring switchover method |
US20110238820A1 (en) * | 2010-03-23 | 2011-09-29 | Fujitsu Limited | Computer, communication device, and communication control system |
CN102347881A (zh) * | 2011-09-30 | 2012-02-08 | 华为技术有限公司 | 以太环网故障倒换时恢复单播转发业务流的方法及装置 |
CN102437967A (zh) * | 2012-02-01 | 2012-05-02 | 杭州华三通信技术有限公司 | 报文转发方法和装置 |
CN102684914A (zh) * | 2012-04-23 | 2012-09-19 | 汉柏科技有限公司 | 网桥接口联动的实现方法及系统 |
CN104160667A (zh) * | 2013-03-15 | 2014-11-19 | 华为技术有限公司 | 双上行相切环收敛的方法、设备和系统 |
CN104301226A (zh) * | 2013-07-16 | 2015-01-21 | 杭州华三通信技术有限公司 | 一种指定路由桥选举方法、设备和系统 |
CN104601365A (zh) * | 2014-12-05 | 2015-05-06 | 杭州华三通信技术有限公司 | 一种节点设备监测方法以及装置 |
CN105704020A (zh) * | 2014-11-25 | 2016-06-22 | 华为技术有限公司 | 环路避免方法,设备和系统 |
-
2016
- 2016-10-20 CN CN201610921064.4A patent/CN107968753B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7518988B2 (en) * | 2002-10-25 | 2009-04-14 | Fujitsu Limited | Ring switchover method |
US20110238820A1 (en) * | 2010-03-23 | 2011-09-29 | Fujitsu Limited | Computer, communication device, and communication control system |
CN102347881A (zh) * | 2011-09-30 | 2012-02-08 | 华为技术有限公司 | 以太环网故障倒换时恢复单播转发业务流的方法及装置 |
CN102437967A (zh) * | 2012-02-01 | 2012-05-02 | 杭州华三通信技术有限公司 | 报文转发方法和装置 |
CN102684914A (zh) * | 2012-04-23 | 2012-09-19 | 汉柏科技有限公司 | 网桥接口联动的实现方法及系统 |
CN104160667A (zh) * | 2013-03-15 | 2014-11-19 | 华为技术有限公司 | 双上行相切环收敛的方法、设备和系统 |
CN104301226A (zh) * | 2013-07-16 | 2015-01-21 | 杭州华三通信技术有限公司 | 一种指定路由桥选举方法、设备和系统 |
CN105704020A (zh) * | 2014-11-25 | 2016-06-22 | 华为技术有限公司 | 环路避免方法,设备和系统 |
CN104601365A (zh) * | 2014-12-05 | 2015-05-06 | 杭州华三通信技术有限公司 | 一种节点设备监测方法以及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108683660A (zh) * | 2018-05-14 | 2018-10-19 | 杭州迪普科技股份有限公司 | 一种mac地址认证处理方法及装置 |
CN108683660B (zh) * | 2018-05-14 | 2020-09-08 | 杭州迪普科技股份有限公司 | 一种mac地址认证处理方法及装置 |
CN109921992A (zh) * | 2019-03-26 | 2019-06-21 | 新华三技术有限公司 | 一种路径选择方法、装置、网络设备以及ed设备 |
CN110995560A (zh) * | 2019-12-27 | 2020-04-10 | 安徽皖通邮电股份有限公司 | 一种利用单向检测实现以太网环网保护的方法 |
CN114338538A (zh) * | 2021-12-30 | 2022-04-12 | 锐捷网络股份有限公司 | 一种表项更新方法、装置、电子设备及存储介质 |
CN114760207A (zh) * | 2022-05-05 | 2022-07-15 | 烽火通信科技股份有限公司 | 以太网的环网破环方法与系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107968753B (zh) | 2021-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10693765B2 (en) | Failure protection for traffic-engineered bit indexed explicit replication | |
EP3429143B1 (en) | Packet forwarding method and apparatus | |
JP5334001B2 (ja) | 通信システムおよびノード | |
CN107968753A (zh) | 修改媒体接入控制地址转发表的方法和装置 | |
EP2560325B1 (en) | Method, system and apparatus for managing addresses in ethernet ring network | |
EP0937353B1 (en) | Routing in a multi-layer distributed network element | |
US7688716B2 (en) | Method, apparatus, and system for improving ethernet ring convergence time | |
CN103460647B (zh) | 用于操作网络节点的技术 | |
US6556574B1 (en) | Duplicate ignore delay timer for ARP like protocol messages using are protocol | |
EP2643940B1 (en) | Method of shrinking a data loss window in a packet network device | |
US9871708B2 (en) | Method and system for ring protection switching | |
US7995499B2 (en) | Minimizing spanning-tree protocol event processing and flooding in distribution networks | |
US20090252030A1 (en) | Reducing traffic loss in an eaps system | |
US20070153791A1 (en) | Method for rapidly recovering multicast service and network device | |
JPWO2004075485A1 (ja) | ネットワークシステム、スパニングツリー構成方法及び構成プログラム、スパニングツリー構成ノード | |
CN102197627A (zh) | 组播流量收敛的改善 | |
JP5862445B2 (ja) | 通信装置 | |
CN102316014B (zh) | 分层虚拟专用局域网服务环境下的负载分担方法及路由器 | |
US7447223B2 (en) | Switching mesh with broadcast path redundancy | |
US10489236B2 (en) | Method and system for managing a communication network | |
CN115766334A (zh) | 一种三层交换机和网络系统及数据传输方法 | |
CN104683769B (zh) | 一种在环网环境下实现组播点播的方法及装置 | |
JP2007243288A (ja) | 通信システム、ノード、通信方法、およびノード用プログラム | |
WO2015117465A1 (zh) | 环形网络中fdb刷新方法、装置、节点及系统 | |
JP4428380B2 (ja) | ネットワークノードおよびネットワークノード用プログラム |
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 |