MAC地址学习方法和边缘设备转让专利

申请号 : CN201110291273.2

文献号 : CN102291320B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周万

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明提供了MAC地址学习方法和边缘设备。ED在控制平面中的会话缓存表项包括以下内容时:ARP请求报文的目标端IP地址、初始发送端IP地址、初始发送端MAC地址、与初始发送端MAC地址对应的出端口、ARP应答报文的初始发送端MAC地址和与该初始发送端MAC地址对应的出端口,将会话缓存表项中ARP请求报文的初始发送端MAC地址与出端口的对应关系、以及ARP应答报文的初始发送端MAC地址与出端口的对应关系下发至数据平面,或者,将会话缓存表项中的本地MAC地址通过会话缓存表项中异地MAC地址对应的出端口通告,以及接收其他ED通告的MAC地址,将接收的MAC地址和接收到该MAC地址的端口的对应关系下发至数据平面。

权利要求 :

1.一种MAC地址学习方法,该方法应用于数据中心二层虚拟互联网络中的边缘设备ED,其特征在于,该方法包括:

A,ED侦听ARP请求报文,在控制平面建立包含以下内容的会话缓存表项:ARP请求报文的目标端Target IP地址、初始发送端Sender IP地址、初始发送端MAC地址、以及与初始发送端MAC地址对应的出端口,如果所述ARP请求报文为本地接入的主机或路由设备广播的,则该ARP请求报文的初始发送端MAC地址为本地MAC地址,如果所述ARP请求报文为异地ED接入的主机或路由设备广播的,则该ARP请求报文的初始发送端MAC地址为异地MAC地址;

B,所述ED侦听ARP应答报文,在已建立的会话缓存表项中找到包含以下内容的会话缓存表项:该ARP应答报文的目标端IP地址和初始发送端IP地址,在找到的会话缓存表项中增加该ARP应答报文的初始发送端MAC地址、以及与该初始发送端MAC地址对应的出端口,利用该会话缓存表项中与ARP请求报文的初始发送端MAC地址对应的出端口转发该ARP应答报文,执行步骤C,如果所述ARP应答报文为本地接入的主机或路由设备单播发送的,则该ARP应答报文的初始发送端MAC地址为本地MAC地址,如果所述ARP应答报文为异地ED接入的主机或路由设备单播发送的,则该ARP应答报文的初始发送端MAC地址为异地MAC地址;

C,所述ED确定既侦听到ARP请求报文又侦听到ARP应答报文后,将该会话缓存表项中ARP请求报文的初始发送端MAC地址与出端口的对应关系、以及ARP应答报文的初始发送端MAC地址与出端口的对应关系下发至数据平面,以指导数据报文的转发;或者,所述ED将该会话缓存表项中的本地MAC地址通过该会话缓存表项中异地MAC地址对应的出端口通告,以及接收其他ED通告的MAC地址,将接收的MAC地址和接收到该MAC地址的端口的对应关系下发至数据平面,以指导数据报文的转发。

2.根据权利要求1所述的方法,其特征在于,步骤C中,会话缓存表项中ARP请求报文的初始发送端MAC地址和ARP应答报文的初始发送端MAC地址中,有一个为本地MAC地址,对应的出端口为本地ED接入该本地MAC地址的本地端口,另一个为异地ED接入的异地MAC地址,对应的出端口为本地ED与异地ED之间的虚拟以太网链路。

3.根据权利要求1或2所述的方法,其特征在于,步骤A中,在建立会话缓存表项后,进一步设置该会话缓存表项的状态为第一状态,用于表示MAC地址学习会话正处于建立阶段;

步骤B中,在会话缓存表项增加ARP应答报文的初始发送端MAC地址和第二出端口后,进一步将该会话缓存表项的状态从第一状态更新为第二状态,用于表示MAC地址学习会话已被建立;

步骤C中的会话缓存表项为第二状态的会话缓存表项。

4.根据权利要求3所述的方法,其特征在于,每一站点的ED进一步执行以下步骤:

D,接收发生站点迁移的主机广播的免费ARP报文,并在本地会话缓存表项中找到包含该主机IP地址的会话缓存表项,如果该找到的会话缓存表项当前被设置为第一状态,则根据接收到该免费ARP报文的端口更新该找到的会话缓存表项,如果该找到的会话缓存表项当前被设置为第二状态,则在所述主机当前为本地接入时,删除该找到的会话缓存表项,在所述主机当前为异地站点接入时,更新该找到的会话缓存表项。

5.根据权利要求4所述的方法,其特征在于,所述根据接收到免费ARP报文的端口更新该找到的会话缓存表项包括:

如果找到的会话缓存表项中不存在所述主机的MAC地址,则在找到的会话缓存表项中增加所述主机的MAC地址和与该主机MAC地址对应的出端口,并将该会话缓存表项的状态更新为第二状态,返回步骤C;

如果找到的会话缓存表项中存在所述主机的MAC地址,则将该会话缓存表项中与该主机MAC地址对应的出端口更新为当前接收到免费ARP报文的端口。

6.根据权利要求4所述的方法,其特征在于,所述在主机当前为异地站点接入时,更新该找到的会话缓存表项包括:

如果该找到的会话缓存表项中所述主机的MAC地址对应的出端口为本地端口,则删除该找到的会话缓存表项;

如果该找到的会话缓存表项中所述主机的MAC地址对应的出端口为虚拟以太网链路,则将该会话缓存表项中与该MAC地址对应的出端口更新为当前接收到免费ARP报文的虚拟以太网链路。

7.根据权利要求3所述的方法,其特征在于,该方法进一步包括:

在将会话缓存表项的状态设置为第一状态时,启动该会话缓存表项对应的用于标识该会话缓存表项为第一状态的第一定时器;

在将会话缓存表项的状态从第一状态更新为第二状态时,关闭该第一定时器,并启动该会话缓存表项对应的用于标识该会话缓存表项为第二状态的第二定时器;

当启动的第一定时器或者第二定时器超时时,删除该超时的定时器对应的会话缓存表项,其中,所述第一定时器和所述第二定时器的超时时间无关。

8.一种边缘设备,该边缘设备为数据中心二层虚拟互联网络的任一边缘设备ED,其特征在于,该ED包括:

第一侦听单元,用于侦听ARP请求报文,在控制平面建立包含以下内容的会话缓存表项:该ARP请求报文的目标端Target IP地址、初始发送端Sender IP地址、初始发送端MAC地址、以及与初始发送端MAC地址对应的出端口,如果所述ARP请求报文为本地接入的主机或路由设备广播的,则该ARP请求报文的初始发送端MAC地址为本地MAC地址,如果所述ARP请求报文为异地ED接入的主机或路由设备广播的,则该ARP请求报文的初始发送端MAC地址为异地MAC地址;

第二侦听单元,用于侦听ARP应答报文,在已建立的会话缓存表项中找到包含以下内容的会话缓存表项:该ARP应答报文的目标端IP地址和初始发送端IP地址,在找到的会话缓存表项中增加该ARP应答报文的初始发送端MAC地址、以及与该初始发送端MAC地址对应的出端口,利用该会话缓存表项中与ARP请求报文的初始发送端MAC地址对应的出端口转发该ARP应答报文,并发送通知给第一处理单元,如果所述ARP应答报文为本地接入的主机或路由设备单播发送的,则该ARP应答报文的初始发送端MAC地址为本地MAC地址,如果所述ARP应答报文为异地ED接入的主机或路由设备单播发送的,则该ARP应答报文的初始发送端MAC地址为异地MAC地址;

第一处理单元,用于接收来自所述第二侦听单元的通知后,确定该ED既侦听到ARP请求报文又侦听到ARP应答报文,将会话缓存表项中ARP请求报文的初始发送端MAC地址与出端口的对应关系、以及ARP应答报文的初始发送端MAC地址与出端口的对应关系下发至数据平面,以指导数据报文的转发;或者,将会话缓存表项中的本地MAC地址通过该会话缓存表项中异地MAC地址对应的出端口通告,以及接收其他ED通告的MAC地址,将接收的MAC地址和接收到该MAC地址的端口的对应关系下发至数据平面,以指导数据报文转发。

9.根据权利要求8所述的边缘设备,其特征在于,第一侦听单元在建立会话缓存表项后,进一步设置该会话缓存表项的状态为第一状态,用于表示MAC地址学习会话正处于建立阶段;

第二侦听单元在对会话缓存表项增加ARP应答报文的初始发送端MAC地址和第二出端口后,进一步设置该会话缓存表项的状态为第二状态,用于表示MAC地址学习会话已被建立;

所述第一处理单元处理的会话缓存表项为第二状态的会话缓存表项。

10.根据权利要求9所述的边缘设备,其特征在于,所述边缘设备进一步包括:第二处理单元、第一更新单元和第二更新单元,其中,所述第二处理单元用于接收发生站点迁移的主机广播的免费ARP报文,并在本地会话缓存表项中找到包含该主机IP地址的会话缓存表项,如果该找到的会话缓存表项当前被设置为第一状态,则发送第一更新通知给第一更新单元,如果该找到的会话缓存表项当前被设置为第二状态,则发送第二更新通知给第二更新单元;

所述第一更新单元用于接收到所述第一更新通知时,根据接收到该免费ARP报文的端口更新该找到的会话缓存表项;

所述第二更新单元用于接收到所述第二更新通知时,如果所述主机当前为本地接入,则删除该找到的会话缓存表项,如果所述主机当前为异地站点接入,则更新该找到的会话缓存表项。

11.根据权利要求10所述的边缘设备,其特征在于,所述第一更新单元在找到的会话缓存表项不存在所述主机的MAC地址时,在找到的会话缓存表项中增加所述主机的MAC地址和与该主机MAC地址对应的出端口,并将该会话缓存表项的状态更新为第二状态,触发第一处理单元执行相应操作,在该找到的会话缓存表项中存在所述主机的MAC地址时,则将该会话缓存表项中与该主机MAC地址对应的出端口更新为当前接收到免费ARP报文的端口。

12.根据权利要求10所述的边缘设备,其特征在于,所述第二更新单元在找到的会话缓存表项中所述主机的MAC地址对应的出端口为本地端口时,删除该找到的会话缓存表项,在该找到的会话缓存表项中所述主机的MAC地址对应的出端口为虚拟以太网链路时,将该会话缓存表项中与该MAC地址对应的出端口更新为当前接收到免费ARP报文的虚拟以太网链路。

13.根据权利要求9至12任一所述的边缘设备,其特征在于,该边缘设备进一步包括:

定时器控制单元,用于在所述第一侦听单元将会话缓存表项的状态设置为第一状态时,启动该会话缓存表项对应的用于标识该会话缓存表项为第一状态的第一定时器;用于在第二侦听单元将会话缓存表项的状态从第一状态更新为第二状态时,关闭该第一定时器,并启动该会话缓存表项对应的用于标识该会话缓存表项为第二状态的第二定时器,并在启动的第一定时器或第二定时器超时时,删除该超时的定时器对应的会话缓存表项,其中,所述第一定时器和所述第二定时器的超时时间无关。

说明书 :

MAC地址学习方法和边缘设备

技术领域

[0001] 本发明涉及网络通信技术,特别涉及MAC地址学习方法和边缘设备。

背景技术

[0002] 为了更好地提供服务,提供商通常在异地部署多个数据中心实现负载分担和高可靠性,并实现虚拟机在各个数据中心之间的自由迁移。由于虚拟机迁移过程对用户透明,不能改变IP地址,所以必须在分布于异地的数据中心之间实现二层虚拟互联。
[0003] 参见图1,图1为现有数据中心二层虚拟互联组网示意图。在图1所示的组网中存在以下三个站点:站点(Site)1、Site 2和Site 3。各个站点均部署了数据中心,各自通过自身的边缘设备(ED:Edge Device)连接至IP核心网络,以实现各个站点之间的二层互联。
[0004] 在图1所示的组网中,每一ED都要学习各个站点的所有VPN下所有主机的MAC地址。
[0005] 参见图2,图2为现有MAC地址学习示意图。假设初始时,图2中的ED1、ED2、ED3的MAC转发表均为空。如果ED1下VPN1内的主机A需要与ED3下VPN1内的主机B通信,其中,主机A的MAC地址为MAC_A,IP地址为IP_A(具体可为1.1.1.1),该主机A只知道主机B的IP地址(即IP_B,比如为1.1.1.2),但不知道主机B的MAC地址,基于此,就需要学习主机B的MAC地址,之后利用学习到的主机B的MAC地址与主机B进行正常通信。
[0006] 其中,现有的MAC地址学习方法包括:
[0007] 主机A首先向VLAN内广播ARP请求报文以学习主机B的MAC地址。其中,该ARP请求报文中的目标端(Target)IP地址为IP_B,初始发送端(Sender)IP地址为IP_A,初始发送端MAC地址为MAC_A。其中,ARP请求报文的初始发送端为最先发送该ARP请求报文的设备。
[0008] 该ARP请求报文会先到达主机A所在站点的ED1,当ED1收到主机A广播的ARP请求报文后学习该ARP请求报文的初始发送端MAC地址即MAC_A,通过ISIS将该学习到的MAC_A通告给ED2和ED3,并在本地MAC转发表中增加关于MAC_A的表项:VPN为VPN1,MAC地址为MAC_A,出接口为Port1(其为ED1收到ARP请求报文的接口,由于主机A与ED1处于同一站点,因此,该Port1为本地端口)。
[0009] 该ARP请求报文也会到达ED2、ED3。当ED2、ED3接收到ARP请求报文后,向其下的主机继续广播该ARP请求报文。
[0010] 并且,ED2、ED3也会学习到ED1通过ISIS通告的MAC_A。当ED2、ED3学习到ED1通过ISIS通告的MAC_A时,会在本地MAC转发表中增加关于该MAC_A的表项。其中,ED2在本地MAC转发表中增加的关于该MAC_A的表项为:VPN为VPN1,MAC地址为MAC_A,出接口为Link1(其为ED2学习到该MAC_A的端口,由于ED1与ED2处于不同站点,因此,该端口具体为ED2与ED1之间的虚拟以太网链路)。ED3在本地MAC转发表中增加的关于该MAC_A的表项为:VPN为VPN1,MAC地址为MAC_A,出接口为Link2(其为ED3学习到该MAC_A的端口,由于ED1与ED3处于不同站点,因此,该端口具体为ED3与ED1之间的虚拟以太网链路)。
[0011] 主机B收到ARP请求报文后,发现该ARP请求报文的目标端IP地址为本机的IP地址,会回应ARP应答报文。该ARP应答报文中的目标端MAC地址为MAC_A,目标端IP地址为IP_A,初始发送端IP地址为IP_B、初始发送端MAC地址为MAC_B。其中,ARP应答报文的初始发送端为最先发送该ARP应答报文的设备。
[0012] 至于其他主机,由于ARP请求报文的目标端IP地址不是自身IP地址,其不对该ARP请求报文作任何回应。
[0013] 主机B发送的ARP应答报文会先到达其所在站点的ED3,当ED3收到ARP应答报文后,会学习ARP应答报文的初始发送端MAC地址即MAC_B,并在本地MAC转发表中增加关于该MAC_B的表项:VPN为VPN1,MAC地址为MAC_B,出接口为port1(其为ED3收到该ARP应答报文的本地端口)。
[0014] ED3在本地MAC表中查找到目标端IP地址对应的出端口。因为该目标端IP地址为主机A的IP地址,根据ED3之前基于主机A广播的ARP请求报文在本地MAC表增加的表项可以得到,到达目标端IP地址的出端口为Link2,基于此,ED3就会通过Link2发送ARP应答报文,同时,通过Link2将MAC_B ISIS通告给ED1和ED2,以供ED1、ED2在本地MAC表中增加关于该MAC_B的表项。
[0015] 当ED1学习到ED3通告的MAC_B后,在本地MAC转发表中增加关于该MAC_B的表项:VPN为VPN1,MAC地址为MAC_B,出接口为Link2(其为ED1学习到该MAC_B的端口,具体为ED1与ED3之间的虚拟以太网链路)。
[0016] 当ED1收到ED3发送的ARP应答报文后,在本地MAC表中查找到目标端IP地址对应的出端口。根据ED1基于主机A广播的ARP请求报文在MAC表所增加的表项可以得到,到达目标端IP地址的出端口为Port1,基于此,ED1就会通过Port1发送ARP应答报文。
[0017] 当主机A接收到ARP应答报文后,就可知道目标端即主机B的MAC地址,之后利用该MAC地址与主机B正常通信。
[0018] 至此,完成MAC地址学习的操作。
[0019] 其实,真正需要通信的是主机A和B,所以只需要主机A所在站点中的ED1和主机B所在站点中的ED3分别学习主机A和主机B的MAC地址即可。至于ED2,其无需学习主机A和主机B的MAC地址,也即ED1无需通过ISIS通告MAC_A给ED2,ED3无需通过ISIS通告MAC_B给ED2,进而,ED2也就没有必要在本地MAC表中建立关于主机A、主机B的MAC地址表项。可以看出,现有的MAC地址学习方法大大浪费了ED2的MAC表项资源,造成ED2中MAC表项不必要的占用,并且,由于ED1通过ISIS通告MAC_A给ED2,ED3通过ISIS通告MAC_B给ED2,也会浪费其他ED的资源。

发明内容

[0020] 本发明提供了MAC地址学习方法和边缘设备,提高ED中MAC表项资源的利用率,减少无关MAC表项的占用。
[0021] 本发明提供的技术方案包括:
[0022] 一种MAC地址学习方法,该方法应用于数据中心二层虚拟互联网络中的ED,其特征在于,该方法包括:
[0023] A,侦听ARP请求报文,在控制平面建立包含以下内容的会话缓存表项:该ARP请求报文的目标端Target IP地址、初始发送端Sender IP地址、初始发送端MAC地址、以及与初始发送端MAC地址对应的出端口;
[0024] B,侦听ARP应答报文,在已建立的会话缓存表项中找到包含以下内容的会话缓存表项:该ARP应答报文的目标端IP地址和初始发送端IP地址,在找到的会话缓存表项中增加该ARP应答报文的初始发送端MAC地址、以及与该初始发送端MAC地址对应的出端口,利用该会话缓存表项中与ARP请求报文的初始发送端MAC地址对应的出端口转发该ARP应答报文,执行步骤C;
[0025] C,将会话缓存表项中ARP请求报文的初始发送端MAC地址与出端口的对应关系、以及ARP应答报文的初始发送端MAC地址与出端口的对应关系下发至数据平面,以指导数据报文的转发;或者,
[0026] 将会话缓存表项中的本地MAC地址通过该会话缓存表项中异地MAC地址对应的出端口通告,以及接收其他ED通告的MAC地址,将接收的MAC地址和接收到该MAC地址的端口的对应关系下发至数据平面,以指导数据报文的转发。
[0027] 一种ED,该ED为数据中心二层虚拟互联网络的任一ED,该ED包括:
[0028] 第一侦听单元,用于侦听ARP请求报文,在控制平面建立包含以下内容的会话缓存表项:该ARP请求报文的目标端Target IP地址、初始发送端Sender IP地址、初始发送端MAC地址、以及与初始发送端MAC地址对应的出端口;
[0029] 第二侦听单元,用于侦听ARP应答报文,在已建立的会话缓存表项中找到包含以下内容的会话缓存表项:该ARP应答报文的目标端IP地址和初始发送端IP地址,在找到的会话缓存表项中增加该ARP应答报文的初始发送端MAC地址、以及与该初始发送端MAC地址对应的出端口,利用该会话缓存表项中与ARP请求报文的初始发送端MAC地址对应的出端口转发该ARP应答报文,并发送通知给第一处理单元;
[0030] 第一处理单元,用于接收来自所述第二侦听单元的通知后,将会话缓存表项中ARP请求报文的初始发送端MAC地址与出端口的对应关系、以及ARP应答报文的初始发送端MAC地址与出端口的对应关系下发至数据平面,以指导数据报文的转发;或者,
[0031] 将会话缓存表项中的本地MAC地址通过该会话缓存表项中异地MAC地址对应的出端口通告,以及接收其他ED通告的MAC地址,将接收的MAC地址和接收到该MAC地址的端口的对应关系下发至数据平面,以指导数据报文的转发。
[0032] 由以上技术方案可以看出,本发明中,ED在侦听到ARP应答报文后,且在已建立的会话缓存表项中找到包含以下内容的会话缓存表项:该ARP应答报文的目标端IP地址和初始发送端IP地址时,在找到的会话缓存表项中增加该ARP应答报文的初始发送端MAC地址、以及与该初始发送端MAC地址对应的出端口时,之后才将会话缓存表项中ARP请求报文的初始发送端MAC地址与出端口的对应关系、以及ARP应答报文的初始发送端MAC地址与出端口的对应关系下发至数据平面,以指导数据报文的转发;或者,将会话缓存表项中的本地MAC地址通过该会话缓存表项中异地MAC地址对应的出端口通告,以及接收其他ED通告的MAC地址,将接收的MAC地址和接收到该MAC地址的端口下发至数据平面,以指导数据报文的转发,这相比于现有技术,避免无关ED接收到不必要的MAC地址,提高了ED中MAC表项资源的利用率,减少无关MAC表项的占用。

附图说明

[0033] 图1为现有数据中心二层虚拟互联组网示意图;
[0034] 图2为现有MAC地址学习示意图;
[0035] 图3为本发明实施例提供的方法流程图;
[0036] 图4为本发明实施例提供的具体实施例示意图;
[0037] 图5为本发明实施例提供的另一具体实施例示意图;
[0038] 图6为本发明实施例提供的边缘设备结构图;
[0039] 图7为本发明实施例提供的边缘设备另一结构图。

具体实施方式

[0040] 为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0041] 参见图3,图3为本发明实施例提供的方法流程图。该流程应用于包含两个以上站点的数据中心二层虚拟互联网络中,在该数据中心二层虚拟互联网络中,每一ED启用了ARP侦听功能,用于侦听经过该ED转发的所有ARP报文,该ARP报文可包括:ARP请求报文、ARP应答报文、发生站点迁移的主机广播的免费ARP报文等,本发明并不具体限定。
[0042] 基于此,每一ED执行的步骤包括:
[0043] 步骤301,侦听ARP请求报文,在控制平面建立包含以下内容的会话缓存表项:该ARP请求报文的目标端IP地址、初始发送端IP地址、初始发送端MAC地址、以及与初始发送端MAC地址对应的出端口。
[0044] 为便于描述,本步骤301中,将与ARP请求报文的初始发送端MAC地址对应的出端口简称为第一出端口。其中,该第一出端口具体可为接收到ARP请求报文的端口,以便后续通过该端口向该初始发送端MAC地址发送报文。其中,如果所述ARP请求报文为本地接入的主机或路由设备广播的,则该ARP请求报文的初始发送端MAC地址为本地MAC地址,该初始发送端MAC地址对应的第一出端口为本地端口;如果所述ARP请求报文为异地ED接入的主机或路由设备广播的,则该ARP请求报文的初始发送端MAC地址为异地MAC地址,该初始发送端MAC地址对应的第一出端口为本地ED与该异地ED之间的虚拟以太网链路。
[0045] 步骤302,侦听ARP应答报文,在已建立的会话缓存表项中找到包含以下内容的会话缓存表项:该ARP应答报文的目标端IP地址和初始发送端IP地址,在找到的会话缓存表项中增加该ARP应答报文的初始发送端MAC地址、以及与该初始发送端MAC地址对应的出端口,利用该会话缓存表项中的第一出端口转发该ARP应答报文,之后执行步骤303。
[0046] 本步骤302中的ARP应答报文是对ARP请求报文的应答。
[0047] 为便于描述,本步骤302将与ARP应答报文的初始发送端MAC地址对应的出端口简称为第二出端口。其中,该第二出端口具体可为接收到ARP应答报文的端口,以便后续通过该端口向该初始发送端MAC地址发送报文。其中,如果所述ARP应答报文为本地接入的主机或路由设备单播发送的,则该ARP应答报文的初始发送端MAC地址为本地MAC地址,该初始发送端MAC地址对应的第二出端口为本地端口;如果所述ARP应答报文为异地ED接入的主机或路由设备单播发送的,则该ARP应答报文的初始发送端MAC地址为异地MAC地址,该初始发送端MAC地址对应的第二出端口为本地ED与异地ED之间的虚拟以太网链路。
[0048] 通过步骤301至步骤302可以看出,执行完步骤302所述的增加操作的会话缓存表项中,ARP请求报文的初始发送端MAC地址和ARP应答报文的初始发送端MAC地址中有一个为本地MAC地址,对应的出端口为本地ED接入该本地MAC地址的本地端口,另一个为异地ED接入的异地MAC地址,对应的出端口为本地ED与异地ED之间的虚拟以太网链路。
[0049] 步骤303,将会话缓存表项中ARP请求报文的初始发送端MAC地址与第一出端口的对应关系、以及ARP应答报文的初始发送端MAC地址与第二出端口的对应关系下发至数据平面,以指导数据报文的转发;或者,将会话缓存表项中的本地MAC地址通过该会话缓存表项中异地MAC地址对应的出端口通告,以及接收其他ED通告的MAC地址,将接收的MAC地址和接收到该MAC地址的端口的对应关系下发至数据平面,以指导数据报文的转发。
[0050] 本步骤303中,可利用用于通告MAC地址的协议比如ISIS来通告MAC地址。其中,通过异地MAC地址对应的出端口通告本地MAC地址可使该出端口所处的虚拟以太网链路连接的对端ED接收到该通告的MAC地址。
[0051] 另外,步骤303中,将会话缓存表项中ARP请求报文的初始发送端MAC地址与第一出端口的对应关系、以及ARP应答报文的初始发送端MAC地址与第二出端口的对应关系下发至数据平面,或者,将接收的MAC地址和接收到该MAC地址的端口的对应关系下发至数据平面具体是在数据平面建立包含该下发的对应关系的MAC表项。
[0052] 至此,完成图3所示的流程。
[0053] 需要说明的是,上述步骤301中,ARP请求报文是MAC地址学习的一个会话,由于当前还未侦听到针对该ARP请求报文的应答,因此,可认为该会话正处于建立阶段;而当侦听到ARP应答报文,则可认为MAC地址学习的一个会话已建立,为便于区分,本发明可设置步骤301中的会话缓存表项的状态为第一状态,用于表示MAC地址学习会话正处于建立阶段,该第一状态本实施例可为connecting状态,而步骤302中,在会话缓存表项增加完ARP应答报文的初始发送端MAC地址和第二出端口后,可将该会话缓存表项的状态从第一状态更新为第二状态,用于表示MAC地址学习会话已被建立,该第二状态本实施例可为connected状态。
[0054] 为使图3所示的流程更加容易理解,下面以第一状态为connecting状态,第二状态为connected状态为例,通过图4和图5进行举例描述:
[0055] 参见图4,图4为本发明实施例提供的具体实施例示意图。在图4中,每一ED启用了ARP侦听功能。其中,如果主机A需要与主机B通信,但主机A当前仅知道主机B的IP地址,并不知道主机B的MAC地址,基于此,就需要学习主机B的MAC地址,以便主机A与主机B正常通信。
[0056] 该学习主机B的MAC地址方法为:
[0057] 主机A广播ARP请求报文。该ARP请求报文的目标端IP地址为主机B的IP地址即IP_B,初始发送端的IP地址为主机A的IP地址即IP_A,初始发送端的MAC地址为主机A的MAC地址即MAC_A。
[0058] 图4中的每一ED侦听到该ARP请求报文时,在控制平面学习该ARP请求报文携带的内容,并基于步骤301的描述在本地建立会话缓存表项,之后将该会话缓存表项的状态设置为connecting状态。如此,图4中的ED1、ED2、ED3均在本地建立了会话缓存表项,并标识该会话缓存表项为connecting状态。其中,ED1在本地建立的会话缓存表项包括:IP_A,IP_B,(MAC_A,Port1)。ED2在本地建立的会话缓存表项包括:IP_A,IP_B,(MAC_A,虚拟以太网链路1)。ED3在本地建立的会话缓存表项包括:IP_A,IP_B,(MAC_A,虚拟以太网链路2)。其中,Port1为ED1侦听到ARP请求报文的本地端口,虚拟以太网链路1为ED2侦听到ARP请求报文的虚拟以太网链路,虚拟以太网链路2为ED3侦听到ARP请求报文的虚拟以太网链路。(MAC_A,Port1)表示MAC_A、Port1具有对应关系,(MAC_A,虚拟以太网链路1)、(MAC_A,虚拟以太网链路2)类似。
[0059] 当图4中的每一ED侦听到ARP请求报文后,该ED还会继续向其接入的主机下发该ARP请求报文。
[0060] 当图4中的主机B收到ARP请求报文后,发现该ARP请求报文的目标端IP地址为自身的IP地址,则回应单播ARP应答报文,其中,该ARP应答报文中的目标端MAC地址为MAC_A,目标端IP地址为IP_A,初始发送端MAC地址为MAC_B,初始发送端IP地址为IP_B。而其他主机不做任何回应。
[0061] 当图4中的ED3在Port1侦听到其接入的主机B回应的ARP应答报文时,在本地会话缓存表项中找到包含该ARP应答报文的初始发送端IP地址即IP_B和目标端IP地址即IP_A的会话缓存表项,基于上面的描述,可以得到,找到的会话缓存表项为:IP_A,IP_B,(MAC_A,虚拟以太网链路2)。之后ED3在找到的会话缓存表项中增加以下内容:ARP应答报文的初始发送端MAC地址即MAC_B和与该初始发送端MAC地址对应的出端口即Port1。如此,该找到的会话缓存表项就更新为:IP_A,IP_B,(MAC_A,虚拟以太网链路2),(MAC B,Port1),同时ED3将该会话缓存表项的状态更新为connected状态。
[0062] 之后,ED3将connected状态的会话缓存表项中与ARP应答报文的目标端MAC地址即MAC_A对应的端口即虚拟以太网链路2发送ARP应答报文,以及将本地MAC地址即MAC_B通过connected状态的会话缓存表项中异地MAC地址即MAC_A对应的出端口即虚拟以太网链路2进行ISIS通告。
[0063] 由于图4中,ED3通过虚拟以太网链路2与ED1连接,因此,ED1会接收到ED3转发的ARP应答报文和ED3通告的MAC_B。
[0064] 当ED1从虚拟以太网链路2收到ARP应答报文后,找到包含该ARP应答报文的初始发送端IP地址和目标端IP地址的会话缓存表项:IP_A,IP_B,(MAC_A,Port1),并在找到的会话缓存表项中增加以下内容:ARP应答报文的初始发送端MAC地址即MAC_B和与该初始发送端MAC地址对应的出端口即虚拟以太网链路2。如此,该找到的会话缓存表项就更新为:IP_A,IP_B,(MAC_A,Port1),(MAC_B,虚拟以太网链路2),同时ED1将该会话缓存表项的状态更新为connected状态。在ED1将该会话缓存表项的状态更新为connected状态后,如果ED1从虚拟以太网链路2收到ED3 ISIS通告过来的MAC_B,则ED1在数据平面将MAC_B下发到虚拟以太网链路2上,即在数据平面的MAC表中增加MAC表项,具体如图4中ED1的MAC表所示。同时ED1将该会话缓存表项中的本地MAC地址即MAC_A通过异地MAC地址对应的出端口即虚拟以太网链路2ISIS通告。另外,ED1还通过该会话缓存表项中与该ARP应答报文的目标端MAC地址即MAC_A对应的端口即Port1继续发送ARP应答报文。
[0065] 由于图4中,ED1通过虚拟以太网链路2与ED3连接,因此,ED3会接收到ED1通告的MAC_A。当ED3收到ED1从ISIS通告过来的MAC_A后,将MAC_A下发到虚拟以太网链路2上,即在数据平面建立MAC表,具体如图4中ED3的MAC表所示。
[0066] 由于图4中,主机A通过Port1与ED1连接,因此,主机A会收到ARP应答报文。当主机A收到ARP应答报文后,就知道主机B的MAC地址,之后,主机A与主机B之间通信的数据流就可根据MAC地址进行转发。
[0067] 至此,完成学习主机B的MAC地址流程。
[0068] 从图4所示的流程可以看出,在学习主机B的MAC地址过程中,由于ED2与真实需要通信的主机A和主机B没有任何关联,因此,其只是建立了一个处于connecting状态的会话缓存表项,该ED2不会通过ISIS在站点间通告该处于connecting状态的会话缓存表项中的MAC地址。这相比于现有技术,提高了ED中MAC表项资源的利用率,减少无关MAC表项的占用。
[0069] 图4是以ED在将会话缓存表项的状态更新为connected状态后,通告MAC地址,以便其他ED根据该通告的MAC地址建立MAC表项。
[0070] 优选地,作为图4的一种扩展,本发明中,ED在将会话缓存表项的状态更新为connected状态后,还可不通告MAC地址,而是替换为:直接将该会话缓存表项中的MAC地址和出端口下发至数据平面,指导数据报文的转发,具体如图5所示。
[0071] 参见图5,图4为本发明实施例提供的另一具体实施例示意图。在图5中,每一ED启用了ARP侦听功能。与图4类似,主机A需要学习主机B的MAC地址,以便主机A与主机B正常通信。
[0072] 在图5所示的MAC地址方法中,与图4不同的是,图5中的ED比如ED3或ED1,在将会话缓存表项的状态更新为connected状态后,并不通告MAC地址,而是直接将该会话缓存表项中的MAC地址和出端口下发至数据平面,以在数据平面建立MAC表项,指导数据报文的转发。下面以ED3为例进行描述,ED1原理类似。
[0073] ED3在将该会话缓存表项的状态更新为connected状态后,并不执行将该会话缓存表项中的本地MAC地址即MAC_B通过异地MAC地址即MAC_A对应的出端口即虚拟以太网链路2通告,而是直接将connected状态的会话缓存表项中ARP请求报文的初始发送端MAC地址与出端口的对应关系、以及ARP应答报文的初始发送端MAC地址与出端口的对应关系下发至数据平面,以在数据平面建立如图5所示的ED3的MAC表项,以指导数据报文的转发。
[0074] 通过图5所示的流程可以看出,在学习主机B的MAC地址过程中,由于ED2与真实需要通信的主机A和主机B没有任何关联,因此,其只是建立了一个处于connecting状态的会话缓存表项,而图5中,ED必须在会话缓存表项的状态为connected状态后,才将该会话缓存表项中的MAC地址和出端口下发至数据平面,以在数据平面建立MAC表项,如此,可以得到ED2不会建立有关connecting状态的会话缓存表项中MAC地址的表项,这相比于现有技术,显然可以提高ED中MAC表项资源的利用率,减少无关MAC表项的占用。
[0075] 需要说明的是,由于每一站点的ED所接入的主机可以在不同站点之间迁移,基于此,每一ED还执行以下步骤:
[0076] 接收发生站点迁移的主机广播的免费ARP报文,其中,每一ED启用的ARP侦听功能可以侦听到该免费ARP报文,并且,该免费ARP报文是主机在迁移成功后广播发送的;
[0077] 在本地会话缓存表项中找到包含该主机IP地址的会话缓存表项;
[0078] 如果该找到的会话缓存表项当前被设置为第一状态比如connecting状态,则根据接收到该免费ARP报文的端口更新该找到的会话缓存表项。其中,根据接收到免费ARP报文的端口更新该找到的会话缓存表项包括:如果该找到的会话缓存表项中不存在所述主机的MAC地址,则在找到的会话缓存表项中增加该主机的MAC地址和与该主机MAC地址对应的出端口,并将该会话缓存表项的状态更新为第二状态,返回上述步骤303;如果该找到的会话缓存表项中存在所述主机的地址,则将该会话缓存表项中与该主机的MAC地址对应的出端口更新为当前接收到免费ARP报文的端口。
[0079] 如果该找到的会话缓存表项当前被设置为第二状态比如connected状态,则在所述主机当前为本地接入时,删除该找到的会话缓存表项,在所述主机当前为异地站点接入时,更新该找到的会话缓存表项。其中,更新该找到的会话缓存表项具体实现时可包括:如果该找到的会话缓存表项中与所述主机的MAC地址对应的出端口为本地端口,则删除该找到的会话缓存表项;如果该找到的会话缓存表项中与所述主机的MAC地址对应的出端口为虚拟以太网链路,则将该会话缓存表项中与所述主机的MAC地址对应的出端口更新为当前接收到免费ARP报文的虚拟以太网链路。
[0080] 需要说明的是,为节省资源,本发明中,每一ED还可以执行以下步骤:
[0081] 在将会话缓存表项的状态设置为第一状态时,启动该会话缓存表项对应的用于标识该会话缓存表项为第一状态的第一定时器;
[0082] 在将会话缓存表项的状态从第一状态更新为第二状态时,关闭该第一定时器,并启动该会话缓存表项对应的用于标识该会话缓存表项为第二状态的第二定时器;
[0083] 当任一个定时器超时时,删除该定时器对应的会话缓存表项,其中,所述第一定时器和所述第二定时器的超时时间无关。
[0084] 至此,完成本发明提供的方法描述。
[0085] 下面对本发明提供的边缘设备进行描述:
[0086] 参见图6,图6为本发明提供的ED结构图。如图6所示,该ED可包括:
[0087] 第一侦听单元,用于侦听ARP请求报文,在控制平面建立包含以下内容的会话缓存表项:该ARP请求报文的目标端Target IP地址、初始发送端Sender IP地址、初始发送端MAC地址、以及与初始发送端MAC地址对应的出端口;
[0088] 第二侦听单元,用于侦听ARP应答报文,在已建立的会话缓存表项中找到包含以下内容的会话缓存表项:该ARP应答报文的目标端IP地址和初始发送端IP地址,在找到的会话缓存表项中增加该ARP应答报文的初始发送端MAC地址、以及与该初始发送端MAC地址对应的出端口,利用该会话缓存表项中与ARP请求报文的初始发送端MAC地址对应的出端口转发该ARP应答报文,并发送通知给第一处理单元;
[0089] 第一处理单元,用于接收来自所述第二侦听单元的通知后,将会话缓存表项中ARP请求报文的初始发送端MAC地址与出端口的对应关系、以及ARP应答报文的初始发送端MAC地址与出端口的对应关系下发至数据平面,以指导数据报文的转发;或者,
[0090] 将会话缓存表项中的本地MAC地址通过该会话缓存表项中异地MAC地址对应的出端口通告,以及接收其他ED通告的MAC地址,将接收的MAC地址和接收到该MAC地址的端口的对应关系下发至数据平面,以指导数据报文转发。
[0091] 其中,所述第一处理单元处理的会话缓存表项中ARP请求报文的初始发送端MAC地址和ARP应答报文的初始发送端MAC地址中的一个为本地MAC地址,对应的出端口为本地ED接入该本地MAC地址的本地端口,另一个为异地ED接入的异地MAC地址,对应的出端口为本地ED与异地ED之间的虚拟以太网链路。
[0092] 优选地,本实施例中,第一侦听单元在建立会话缓存表项后,进一步设置该会话缓存表项的状态为第一状态,用于表示MAC地址学习会话正处于建立阶段;
[0093] 第二侦听单元在对会话缓存表项增加ARP应答报文的初始发送端MAC地址和第二出端口后,进一步设置该会话缓存表项的状态为第二状态,用于表示MAC地址学习会话已被建立;
[0094] 所述第一处理单元处理的会话缓存表项为第二状态的会话缓存表项。
[0095] 本实施例中,如图6所示,所述边缘设备进一步包括:第二处理单元、第一更新单元、第二更新单元和定时器控制单元,其中,
[0096] 所述第二处理单元用于接收发生站点迁移的主机广播的免费ARP报文,并在本地会话缓存表项中找到包含该主机IP地址的会话缓存表项,如果该找到的会话缓存表项当前被设置为第一状态,则发送第一更新通知给第一更新单元,如果该找到的会话缓存表项当前被设置为第二状态,则发送第二更新通知给第二更新单元;
[0097] 所述第一更新单元用于接收到所述第一更新通知时,根据接收到该免费ARP报文的端口更新该找到的会话缓存表项;优选地,所述第一更新单元根据接收到该免费ARP报文的端口更新该找到的会话缓存表项包括:所述第一更新单元在找到的会话缓存表项不存在所述主机的MAC地址时,在找到的会话缓存表项中增加所述主机的MAC地址和与该主机MAC地址对应的出端口,并将该会话缓存表项的状态更新为第二状态,触发第一处理单元执行相应操作,在该找到的会话缓存表项中存在所述主机的MAC地址时,则将该会话缓存表项中与该主机MAC地址对应的出端口更新为当前接收到免费ARP报文的端口。
[0098] 所述第二更新单元用于接收到所述第二更新通知时,如果所述主机当前为本地接入,则删除该找到的会话缓存表项,如果所述主机当前为异地站点接入,则更新该找到的会话缓存表项。优选地,所述第二更新单元更新该找到的会话缓存表项包括:所述第二更新单元在找到的会话缓存表项中所述主机的MAC地址对应的出端口为本地端口时,删除该找到的会话缓存表项,在该找到的会话缓存表项中所述主机的MAC地址对应的出端口为虚拟以太网链路时,将该会话缓存表项中与该MAC地址对应的出端口更新为当前接收到免费ARP报文的虚拟以太网链路。
[0099] 所述定时器控制单元用于在所述第一侦听单元将会话缓存表项的状态设置为第一状态时,启动该会话缓存表项对应的用于标识该会话缓存表项为第一状态的第一定时器;用于在第二侦听单元将会话缓存表项的状态从第一状态更新为第二状态时,关闭该第一定时器,并启动该会话缓存表项对应的用于标识该会话缓存表项为第二状态的第二定时器,并在启动的第一定时器或第二定时器超时时,删除该超时的定时器对应的会话缓存表项,其中,所述第一定时器和所述第二定时器的超时时间无关。
[0100] 至此,完成本发明提供的边缘设备的结构描述。
[0101] 以下给出本发明实施例提供的无线网络中ED的组成。该ED是软硬件结合的可编程的设备,具体结果如图7所示。在图7中,ED包括:
[0102] 处理器,用于与存储器进行通信,负责执行存储器中的代码指令。
[0103] 代码存储器,用于存储所述代码指令,当该代码指令被执行时完成的操作主要为上述ED执行的所有操作,这里不再赘述。
[0104] 所述代码存储器是一种处理器可读写介质,包括但不限于非永久存储卡、软盘、磁光盘、硬盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、闪存、磁带、ROM等等。
[0105] 还有,该ED还包括:线卡和报文存储器;其中,
[0106] 所述线卡,用于通过该线卡上的接口使所述ED连接到网络。其中,线卡上的接口可以是以太网接口、DSL接口、千兆以太网接口、万兆以太网接口等等。
[0107] 所述报文存储器,用于在所述ED接收、处理和转发报文时,会先暂时缓存ED发送的这些报文,以使ED针对这些报文完成相应的操作后从所述报文存储器中处理该报文。
[0108] 需要说明的是,图7所示的ED只是一个具体的例子,也可以在其他的与本例描述不同结构的设备上实现。本发明并不具体限定。
[0109] 由以上技术方案可以看出,本发明中,ED在侦听到ARP应答报文后,且在已建立的会话缓存表项中找到包含以下内容的会话缓存表项:该ARP应答报文的目标端IP地址和初始发送端IP地址时,在找到的会话缓存表项中增加该ARP应答报文的初始发送端MAC地址、以及与该初始发送端MAC地址对应的出端口时,之后才将会话缓存表项中ARP请求报文的初始发送端MAC地址与出端口的对应关系、以及ARP应答报文的初始发送端MAC地址与出端口的对应关系下发至数据平面,以指导数据报文的转发;或者,将会话缓存表项中的本地MAC地址通过该会话缓存表项中异地MAC地址对应的出端口通告,以及接收其他ED通告的MAC地址,将接收的MAC地址和接收到该MAC地址的端口下发至数据平面,以指导数据报文的转发,这相比于现有技术,避免无关ED接收到不必要的MAC地址,提高了ED中MAC表项资源的利用率,减少无关MAC表项的占用。
[0110] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。