本申请涉及通信技术领域,尤其涉及一种MAC地址表的更新方法和装置。
背景技术:
随着信息技术的发展,对网络设备的转发性能要求越来越高。在大型的二层转发网络中,可以基于STP(Spanning Tree Protocol,生成树协议)消除局域网中数据链路层的物理环路。当该二层转发网络中存在多个VLAN(Virtual Local Area Network,虚拟局域网)时,则可以基于MSTP(Multiple Spanning Tree Protocol,多生成树协议)使不同VLAN的报文按照各自的路径转发。在同一VLAN中,当某网络设备检测到网络拓扑改变时,可以通过BPDU(Bridge Protocol Data Unit,桥协议数据单元)向其他网络设备通告网络拓扑的改变。各网络设备在确定网络拓扑改变后,可以清除已存储的MAC地址表,重新对MAC地址表进行学习,这就可能会导致网络中各主机之间出现较长时间的转发中断,影响了网络设备的转发性能。
技术实现要素:
有鉴于此,本申请提供一种MAC地址表的更新方法和装置,以解决相关技术中出现较长时间的转发中断的问题。
具体地,本申请是通过如下技术方案实现的:
第一方面,本申请提供一种MAC地址表的更新方法,所述方法应用于网络设备,包括:
当本设备为边缘设备时,如果确定网络拓扑改变,则不清除本机MAC地址表;
基于已存储的与边缘端口相连的终端设备的IP地址和MAC地址,构造免费ARP报文;
通过非边缘端口发送所述免费ARP报文;
当接收到其他边缘设备发送的免费ARP报文时,基于所述免费ARP报文更新所述MAC地址表。
第二方面,本申请提供一种MAC地址表的更新装置,所述装置应用于网络设备,包括:
表项保留单元,用于当本设备为边缘设备时,如果确定网络拓扑改变,则不清除本机MAC地址表;
报文构造单元,用于基于已存储的与边缘端口相连的终端设备的IP地址和MAC地址,构造免费ARP报文;
报文发送单元,用于通过非边缘端口发送所述免费ARP报文;
表项更新单元,用于当接收到其他边缘设备发送的免费ARP报文时,基于所述免费ARP报文更新所述MAC地址表。
分析上述技术方案可知,网络设备在确定网络拓扑改变时,可以不清除本机MAC地址表。网络设备中的边缘设备可以基于与边缘端口相连的终端设备的IP地址和MAC地址,构造免费ARP报文并发送。与相关技术相比,当两个主机之间的转发路径未受网络拓扑改变影响时,该转发路径中的各网络设备仍可以基于已存储的MAC地址表进行这两个主机之间的报文转发,从而避免出现不必要的转发中断,保证网络设备的转发性能。而当两个主机之间的转发路径受网络拓扑改变影响时,该转发路径中的各网络设备可以基于接收到的免费ARP报文及时对本机MAC地址表进行更新,从而使这两个主机之间的报文转发可以快速恢复,优化网络设备的转发性能。
附图说明
图1是一种二层转发网络的组网架构图;
图2是本申请一示例性实施例示出的一种MAC地址表的更新方法的流程图;
图3是本申请一示例性实施例示出的一种MAC地址表的更新装置所在设备的硬件结构图;
图4是本申请一示例性实施例示出的一种MAC地址表的更新装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
请参考图1,为一种二层转发网络的组网架构图。其中,所有的终端设备和交换机均加入同一VLAN。在该VLAN中,基于MSTP,交换机1可以阻塞端口12,交换机2可以阻塞端口22,从而使交换机1与交换机2之间的链路断开,避免物理环路的产生。当交换机1与交换机4之间的链路故障时,端口12和端口22可以进入转发状态,从而使交换机1与交换机2之间的链路恢复正常工作。交换机4可以基于端口41检测到网络拓扑改变,并通过端口42发送拓扑改变通告,交换机1可以基于端口13检测到网络拓扑改变,并通过端口12发送拓扑改变通告。相关技术中,交换机3在接收到拓扑改变通告时,确定网络拓扑改变,会清除本机中与该VLAN对应的MAC地址表中端口32对应的所有表项以及端口33对应的所有表项,然后进行重新学习以指导后续的报文转发。在上述情况下,终端设备2与终端设备3之间的转发路径并未受到影响,交换机3本来仍可以通过端口32为终端设备2和终端设备3转发报文,但是表项清除后往往需要一段时间才能重新学习恢复,这就会导致终端设备2与终端设备3之间不必要的转发中断。
参考图2,为本申请一示例性实施例示出的一种MAC地址表的更新方法的流程图,该方法可以应用于网络设备,包括以下步骤:
步骤201:当本设备为边缘设备时,如果确定网络拓扑改变,则不清除本机MAC地址表。
在本实施例中,网络设备的端口可以分为边缘端口和非边缘端口,其中边缘端口为直接与终端设备进行连接的端口,具有边缘端口的网络设备为边缘设备,不具有边缘端口的网络设备为非边缘网络设备。当本设备为边缘设备时,如果确定网络拓扑改变,则可以不清除本机MAC地址表。
步骤202:基于已存储的与边缘端口相连的终端设备的IP地址和MAC地址,构造免费ARP报文。
在本实施例中,如果边缘设备确定网络拓扑改变,则可以基于已存储的与其边缘端口相连的终端设备的IP地址和MAC地址,构造免费ARP报文。
在一个可选的实施例中,边缘设备可以监听来自终端设备的ARP报文或IP报文,并根据所述ARP报文或所述IP报文学习所述终端设备的IP地址和MAC地址。通常,各网络设备可以学习到组网中所有终端设备的IP地址和MAC地址,而边缘设备在构造免费ARP报文时,可基于与其边缘端口相连的终端设备的IP地址和MAC地址,构造免费ARP报文,该免费ARP报文的源IP地址和目的IP地址均为该终端设备的IP地址,源MAC地址为该终端设备的MAC地址,目的MAC地址为广播地址,以便在网络拓扑变化时,其他网络设备可以快速学习到对应终端设备的转发表项。
步骤203:通过非边缘端口发送所述免费ARP报文。
在本实施例中,边缘设备可以将构造的免费ARP报文通过其非边缘端口进行发送。
步骤204:当接收到其他边缘设备发送的免费ARP报文时,基于所述免费ARP报文更新所述MAC地址表。
在本实施例中,当边缘设备接收到其他边缘设备发送的免费ARP报文时,可以根据所述免费ARP报文的源IP地址或目的IP地址、源MAC地址以及入端口,更新本机MAC地址表。
在一个可选的实施例中,当本设备为非边缘设备时,如果确定网络拓扑改变,也可以不清除本机MAC地址表。而当非边缘设备接收到来自边缘设备的免费ARP报文时,可以根据所述免费ARP报文的源IP地址或目的IP地址、源MAC地址以及入端口,更新本机MAC地址表。
在另一个可选的实施例中,各网络设备可以基于端口检测到网络拓扑改变,或者在接收到拓扑改变通告时确定网络拓扑改变。
需要说明的是,当网络设备加入多个VLAN时,如果某一VLAN的网络拓扑改变,则可以不清除本机中与该VLAN对应的MAC地址表。网络设备中的边缘设备还可以构造免费ARP报文,所述免费ARP报文是基于与边缘端口相连的终端设备的IP地址和MAC地址构造,所述免费ARP报文中携带该该VLAN的VLAN ID。边缘设备可以通过与所述VLAN绑定的非边缘端口发送所述免费ARP报文。网络设备在接收到免费ARP报文时,可以根据其中携带的VLAN ID,更新本机中与该VLAN对应的MAC地址表。
另外,当ARP缓存表中包含端口时,网络设备也可以基于接收到的免费ARP报文更新本机ARP缓存表。该ARP缓存表中的端口通常不用于转发,而用于管理ARP缓存表,例如:对ARP缓存表中的各表项进行排序,或者在查找ARP缓存表项时将接口作为索引进行查找等。
基于图1所示的组网架构图,对上述MAC地址表的更新方法进行详细描述。
请参考图1,交换机1通过端口11与终端设备1相连,交换机2通过端口21与终端设备2相连,交换机3通过端口31与终端设备3相连,端口11、端口21和端口31均为边缘端口,交换机1至交换机3均为边缘设备。交换机4的端口41和端口42均未直接与终端设备连接,交换机4为非边缘设备。
假设,交换机1至交换机4均加入VLAN 1,图1中示出的所有端口也均与VLAN 1绑定,交换机1还加入VLAN 2,端口11还绑定了VLAN 2。在VLAN1中,基于MSTP,交换机1可以阻塞端口12,交换机2可以阻塞端口22,从而使交换机1与交换机2之间的链路断开,避免物理环路的产生。当交换机1与交换机4之间的链路断开时,端口12和端口22可以进入转发状态,从而使交换机1与交换机2之间的链路恢复正常工作。交换机4可以基于端口41检测到VLAN 1的网络拓扑改变,并通过端口42发送拓扑改变通告,交换机1可以基于端口13检测到VLAN 1的网络拓扑改变,并通过端口12发送拓扑改变通告。交换机2和交换机3在接收到拓扑改变通告时,可以确定VLAN 1的网络拓扑改变。
各交换机在确定VLAN 1的网络拓扑改变时,可以不清除本机中与VLAN 1对应的MAC地址表。各边缘设备可以基于与其边缘端口相连的终端设备的IP地址和MAC地址,构造免费ARP报文并通过属于VLAN 1的非边缘端口发送,该免费ARP报文中携带的VLAN ID为1。各交换机在接收到来自其他设备的免费ARP报文时,可以根据其中携带的VLAN ID,更新本机中与VLAN 1对应的MAC地址表。
例如,在VLAN 1中,终端设备2与终端设备3之间的转发路径并未受网络拓扑改变影响,由于交换机3并未清除本机MAC地址表中与VLAN 1和端口32对应的所有表项,因此交换机3仍可以通过端口32为终端设备2和终端设备3转发报文,避免终端设备2与终端设备3之间不必要的转发中断,保证交换机3的转发性能。
再如,在VLAN 1中,终端设备1与终端设备2之间的转发路径受网络拓扑改变影响,原先交换机1可以通过端口13为终端设备1和终端设备2转发报文,但在VLAN 1的网络拓扑改变后,交换机1需要通过端口12为终端设备1和终端设备2转发报文。交换机2在确定VLAN 1的网络拓扑改变时,可以基于终端设备2的IP地址和MAC地址,构造免费ARP报文并通过端口22和端口23发送。该免费ARP报文的源IP地址和目的IP地址均为终端设备2的IP地址,源MAC地址为终端设备2的MAC地址,目的MAC地址为广播地址,携带的VLAN ID为1。交换机1可以通过端口12接收到该免费ARP报文,并基于该免费ARP报文更新本机中与VLAN 1对应的MAC地址表,具体地,交换机1可将转发表项中与终端设备2和VLAN 1对应的端口13更新为端口12。由此交换机1可以及时学习到对应终端设备2的转发表项,后续可以通过端口12为终端设备1和终端设备2转发报文,从而使终端设备1和终端设备2之间的报文转发快速恢复,优化交换机1的转发性能。在整个过程中,由于VLAN 2的网络拓扑未发生改变,因此交换机1在接收到上述免费ARP报文时,无需根据所述免费ARP报文更新与VLAN 2相关的转发表项。
由上述实施例可见,网络设备在确定网络拓扑改变时,可以不清除本机MAC地址表。网络设备中的边缘设备可以基于与边缘端口相连的终端设备的IP地址和MAC地址,构造免费ARP报文并发送。与相关技术相比,当两个主机之间的转发路径未受网络拓扑改变影响时,该转发路径中的各网络设备仍可以基于已存储的MAC地址表进行这两个主机之间的报文转发,从而避免出现不必要的转发中断,保证网络设备的转发性能。而当两个主机之间的转发路径受网络拓扑改变影响时,该转发路径中的各网络设备可以基于接收到的免费ARP报文及时对本机MAC地址表进行更新,从而使这两个主机之间的报文转发可以快速恢复,优化网络设备的转发性能。
与前述MAC地址表的更新方法的实施例相对应,本申请还提供了MAC地址表的更新装置的实施例。
本申请MAC地址表的更新装置的实施例可以应用在网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在网络设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请MAC地址表的更新装置所在网络设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的网络设备通常根据该MAC地址表的更新的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图4,为本申请一示例性实施例示出的一种MAC地址表的更新装置的框图,该装置400可以应用于图3所示的网络设备,包括:
表项保留单元401,用于当本设备为边缘设备时,如果确定网络拓扑改变,则不清除本机MAC地址表;
报文构造单元402,用于基于已存储的与边缘端口相连的终端设备的IP地址和MAC地址,构造免费ARP报文;
报文发送单元403,用于通过非边缘端口发送所述免费ARP报文;
表项更新单元404,用于当接收到其他边缘设备发送的免费ARP报文时,基于所述免费ARP报文更新所述MAC地址表。
在一个可选的实施例中,所述表项保留单元401还可以用于当本设备为非边缘设备时,如果确定网络拓扑改变,则不清除本机MAC地址表;所述表项更新单元404还可以用于当接收到来自边缘设备的免费ARP报文时,基于所述免费ARP报文更新所述MAC地址表。
在另一个可选的实施例中,所述装置400还可以包括:
地址学习单元405,用于当接收到来自终端设备的ARP报文或IP报文时,根据所述ARP报文或所述IP报文学习所述终端设备的IP地址和MAC地址。
在另一个可选的实施例中,所述确定网络拓扑改变可以包括:
本设备基于端口检测到网络拓扑改变;或者本设备接收到拓扑改变通告。
在另一个可选的实施例中,所述表项保留单元401还可以用于当本设备加入多个VLAN时,所述不清除本机MAC地址表为不清除本机中与网络拓扑改变的VLAN对应的MAC地址表;所述免费ARP报文中携带所述网络拓扑改变的VLAN的VLAN ID。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。