背景技术
随着网络技术的发展,以太网已经广泛应用在各种大、中型网络建设中,但是在以太网数据帧(以下简称,以太网帧)的传送过程中经常会出现MAC地址的冲突问题。所谓MAC地址冲突是指,在以太网二层网络节点(例如,以太网交换机、无线入点AP等,下文的描述是以以太网交换机为例的,但不排除无线入点AP具有类似的问题与应用)的MAC地址学习过程中,相同的两个或以上源MAC地址在一个以太网二层网络节点的地址转发表的两个或以上不同端口出现。以太网二层网络节点在转发以太网帧时,需要知道该以太网帧的源MAC地址与以太网二层网络节点的源端口之间的对应关系,并把这种对应关系放在以太网二层网络节点的“MAC地址转发表”中,这个过程就是“MAC地址学习”。
更具体地说,当以太网二层网络节点从某一端口接收到一个以太网帧后,需要检查该以太网帧的源MAC地址,并查找MAC地址转发表中与之相匹配的项,即查找MAC地址转发表中是否存在这个源MAC地址,且表中对应的源端口与所接收到的源MAC对应的源端口比较是否一致。如果没有找到匹配的项,就将该源MAC地址和所对应的源端口号加入到该以太网二层网络节点的MAC地址转发表中,如果在MAC地址转发表中已经有这个源MAC地址,但是源端口号不一致,那么就产生了MAC地址冲突,MAC地址冲突仅发生在源MAC地址之间。
如果该以太网二层网络节点支持虚拟局域网(Virtual Local Area Network,VLAN),那么发生MAC地址冲突的两个端口要处在同一虚拟局域网(VLAN)中,不在同一虚拟局域网中的端口不存在MAC地址冲突问题。当以太网二层网络节点在地址转发表中查找与接收到的源MAC地址匹配的项时,需要首先在MAC地址转发表中查找是否有和接收到的源MAC地址及其对应的VLAN ID一致的项,如果找到一致的项,那么继续查找对应的源端口号是否一致,如果不一致,那么就产生了MAC地址冲突。如果以太网二层网络节点不支持虚拟局域网(VLAN),那么就不必考虑VLAN ID的问题。
MAC地址冲突发生的主要原因在于:1)用户设备或三层网络设备(特别是前者)位置发生变化,这在移动网络中经常发生;2)恶意攻击,用户通过不断地改变自己的MAC地址向网络发送MAC帧,这在有线接入网中经常发生。
图1是一个现有的四端口的以太网交换机的模型图。该以太网交换机是作为以太网二层网络节点的一个实例,它支持虚拟局域网(VLAN),包括四个端口,端口1、2、3和4,该以太网交换机的MAC地址转发表如下表1所示:
表1:MAC地址转发表
MAC地址 |
VLAN ID |
源端口 |
老化时间 |
其它 |
00:aa:00:62:c6:09 |
1000 |
1 |
60s | |
00:aa:00:62:c6:00 |
1000 |
2 |
35s | |
| | | | |
在表1中,“MAC地址”是指以太网交换机学习到的源MAC地址;“VLAN ID”是指该源MAC地址所在的虚拟局域网的标识号,虚拟局域网(VLAN)就是根据功能、应用等因素将用户从逻辑上划分为功能相对独立的工作组,在同一个VLAN中的源MAC之间可能出现MAC地址冲突,不同VLAN中的源MAC地址之间不存在MAC地址冲突问题;“源端口”是指上述源MAC地址所对应的以太网交换机端口;“老化时间”是指该源MAC地址老化剩余的有效时间,一旦超过该时间,该“源MAC地址与源端口”对应关系无效。以太网交换机会自动为MAC地址转发表中的每个条目计时并修改各条目的老化时间,当某一条目的老化时间变为0或负数时,该条目将被删除,这便是“MAC地址老化”。
上述MAC地址转发表显示了源MAC地址和源端口之间的映射关系。在MAC地址转发表中的“MAC地址”是通过源MAC地址的学习来更新的。
例如,收到一个以太网帧的源MAC地址是00:aa:00:62:c6:09、VLAN ID是1000,而源端口号是3,对照表1,可以发现表中已经存在一个源MAC地址00:aa:00:62:c6:09且VLAN ID也是1000,但是表中该源MAC地址所对应的源端口号是1,与接收到的源MAC地址对应的源端口号不一致,因此产生了MAC地址冲突。目前往往采用以下四种方法来处理这种MAC地址冲突:
“允许MAC地址移动法”:发生“MAC地址冲突”时,在以太网交换机的MAC地址转发表中删除原来的MAC地址条目,然后再把新收到的以太网帧的源MAC地址及相应的VLAN、源端口号、初始老化时间等加入MAC地址转发表中。例如,将收到的以太网帧的源MAC地址00:aa:00:62:c6:09、VLAN ID1000、源端口号3以及老化时间加入到表1中,同时删除原来源端口1的MAC地址条目。该“允许MAC地址移动法”是目前以太网交换机对MAC地址冲突的正常处理方式,在一些情况下也可以使用以下其他几种方法。
“禁止MAC地址移动法”:发生“MAC地址冲突”时,在以太网交换机的MAC地址转发表中不老化原来MAC地址条目,而直接丢弃新收到的以太网帧。例如,将接收到的源MAC地址是00:aa:00:62:c6:09、VLAN ID是1000,源端口号是3的以太网帧丢弃。但使用这种方法的后果是:(1)可能使非法用户抢占MAC地址后,合法用户无法使用;(2)用户改变端口后在老化时间间隔内无法通信。
“关闭端口法”:发生“MAC地址冲突”时,关闭收到的该以太网帧所对应的端口。例如,发生冲突后关闭端口3。但使用这种方法的后果是:连接该端口的所有用户都无法通信,这在级连的以太网络中尤其不可接受。
“MAC地址过滤法”:在发生“MAC地址冲突”时,通过MAC地址过滤的功能来丢弃收到的该以太网帧。很多以太网交换机提供了对MAC地址的过滤功能,在以太网交换机中设定某个主机的MAC地址之后,来自和去向该主机的以太网帧将被丢弃。但使用这种方法的后果是:实际的以太网交换机中“MAC地址过滤”功能所能支持的条目是有限的,当以太网端口较多或用户数量较大时这种方案在实际中并不可行,这在级连的以太网络中表现更为突出。
目前,可以根据不同的设备和策略选择上述四种方法中的一种,用在一个单一的以太网二层网络节点中,处理一个单一以太网二层网络节点的两个或以上端口之间出现的MAC地址冲突问题。但事实上,目前的以太网络大都是由多个以太网二层网络节点级连组成,而上述四种方法并不适用于多个网络节点间产生的MAC地址冲突。下面结合图2具体说明现有的上述几种MAC地址冲突控制的方法使用在级连以太网中的缺点。
图2是一个级连以太网络的模型图,该以太网络中的设备均支持虚拟局域网(VLAN)。如图所示,该级连以太网络由三层网络设备210、以太网交换机(包括以太网交换机A、以太网交换机B、以太网交换机C)以及用户设备1-4级连构成。该级连的以太网交换机是以太网二层网络节点的一个实例。从图中可以看到,以太网交换机A的端口2、3分别和以太网交换机B、以太网交换机c的端口1相连接,以太网交换机B和C的端口2、3分别和用户设备1-4连接。该以太网交换机A的端口1还连接着一个三层网络设备210,该三层网络设备210是基于第3层报头、目标IP寻址、目标IPX寻址或目标Appletalk寻址做出转发决定的设备,例如,路由器是一种三层网络设备。
假设用户设备1和用户设备3在同一个虚拟局域网(VLAN)中,并且具有相同的源MAC地址,从而在以太网交换机A中产生了“MAC地址冲突”。如果使用现有的四种控制MAC地址冲突的方法,会产生以下问题:
当采用“允许MAC地址移动法”:以太网交换机A可能把来自其第1端口的以太网帧转发到不希望发送的端口。例如,用户设备1和用户设备3发生MAC地址冲突,且用户设备3的MAC地址后出现,因而用户设备3及其对应的MAC地址被写入MAC地址转发表中。来自以太网交换机A的第1端口的以太网帧希望发送到用户设备1,但是由于地址转发表中该MAC地址所对应的是用户设备3,因此该以太网帧可能被错误转发到用户设备3。
当采用“禁止MAC地址移动法”时:以太网交换机A可能出现MAC地址抢占的问题,同时用户设备改变端口后在老化时间间隔内无法通信。
当采用“关闭端口法”时:如果用户设备1先出现,则以太网交换机A的第3端口会关闭,由于以太网交换机A的第3端口连接着以太网交换机C,因此,导致用户设备3、用户设备4不能同以太网交换机C的外界用户进行通信,只能同以太网交换机C的内部用户之间进行通信;如果用户设备3先出现,则以太网交换机A的第2端口会关闭,由于以太网交换机A的第2端口连接着以太网交换机B,因此,导致用户设备1、用户设备2不能同以太网交换机B的外界用户进行通信,只能同以太网交换机B的内部用户之间进行通信。
当采用“MAC地址过滤法”时:如果用户数量大的情况下,以太网交换机A无法提供足够的“MAC地址过滤”所需要的资源。
综上所述,现有的四种控制MAC地址冲突的方法都只适合于控制同一以太网二层网络节点中两个端口之间的MAC地址冲突,而对于多个网络节点间产生的MAC地址冲突问题还没有很好的解决方法。
具体实施方式
实施例
图2是现有的一个级连以太网络的模型图。级连以太网是由一个以太网二层网络系统200以及多个终端设备和/或以太网三层网络设备210以有线或无线的方式级连构成。该以太网二层网络系统由多个以太网二层网络节点级连构成,以太网二层网络节点优选的是以太网交换机或者无线入点AP,在本实施例中选择以以太网交换机为例进行描述。该终端设备可以是一些用户设备,例如个人计算机、手机或者PDA等等。在实际应用中,三层网络设备210可以是一个路由器。
如图2所示,本实施例所示意的级连以太网络由一个三层网络设备210、一个以太网二层网络系统200以及用户设备1-4级连构成。该以太网的二层网络系统200能够产生并传递用于控制MAC地址冲突的MAC地址冲突控制帧,从而实现对网络中MAC地址冲突的控制。该二层网络系统200由以太网交换机A、以太网交换机B、以太网交换机C级连构成。以太网交换机A的端口2、3分别和以太网交换机B、以太网交换机C的端口1相连接,以太网交换机B和C的端口2、3分别和用户设备1-4连接。该以太网交换机A的端口1还连接着一个三层网络设备210。每个以太网交换机中都具有一个控制网络MAC地址冲突的装置,该装置的具体结构将在下面结合图3进行详细描述,同时该MAC地址冲突控制帧的帧结构也将在后面结合图4进行详细描述。
图3是一种用于二层网络节点的控制网络MAC地址冲突的装置300的方框图。在图2所示的二层网络系统200中,每个以太网交换机中都具有一控制网络MAC地址冲突的装置300。如图3所示,该装置300包括MAC地址冲突检测模块310、MAC地址冲突控制策略模块320、MAC地址冲突控制帧生成和发送模块330、MAC地址冲突控制帧接收模块340以及MAC地址冲突控制模块350。
MAC地址冲突检测模块310,用于检测在本以太网二层网络节点上是否发生MAC地址冲突,并把检测到的冲突给“MAC地址冲突控制策略装置”以作进一步处理。该模块与以太网二层网络节点的“MAC地址学习”相关联,可以作为“MAC地址学习”的增强功能。
MAC地址冲突控制策略模块320,用来完成如下工作:
a)根据端口的MAC地址冲突控制优先级或接收到的MAC地址冲突控制帧来确定应对哪些端口进行MAC地址冲突控制。该MAC地址冲突控制帧用一个以太网保留类型或者MAC地址来标示,它可以包括以下信息:冲突的MAC地址及其所在的虚拟局域网标识号,引起MAC地址冲突的端口、出现该源MAC地址的时间顺序,以及控制指令等。该MAC地址冲突控制帧将结合后面的图4作进一步详细说明。
b)根据冲突端口下一级是否连接有下一级连以太网二层网络节点来来决定是应该直接控制该端口还是发送MAC地址冲突控制帧。但是在一些情况下,例如,与该冲突端口相连的以太网二层网络节点不支持本发明所描述的MAC地址冲突控制;或者可以把所有通过一个以太网二层网络节点连接到该冲突端口的用户作为一个用户组来看待,而不需要作进一步划分,那么就不能根据冲突端口是否连接下一级以太网二层网络节点来进行判断是直接控制该冲突端口还是发送MAC地址冲突控制帧。因此,更优选的方式是,可以在每个端口增加一个“MAC地址冲突控制属性”,通过配置这一属性来确定在该端口发送生MAC地址冲突时是否需要从该端口向其相连的设备发送MAC地址冲突控制帧。这样一来,“端口是否直接连接以太网二层交换设备”与“是否从该端口向其相连的设备发送MAC地址冲突控制帧”之间并不一定是同等的问题。即使该端口是与以太网二层网络节点相连,也可以配置成“不发送MAC地址冲突控制帧,而直接在本二层网络节点内作MAC地址冲突控制”,这在目前的接入网中有很大的实际意义。
c)确定选择何种控制策略:对于由下一级以太网二层网络节点来对冲突端口进行控制的情况,可在MAC地址冲突控制帧中选取控制帧所包含的控制指令(例如,本地策略、MAC地址过滤或者强制关闭端口等)中的一种,从而可以将该定义好的控制帧发送到下一级连以太网二层网络节点,由下一级连网络节点根据该帧对冲突端口进行控制;而对于在本网络节点中进行控制的情况,需要根据本网络节点定义的策略或者收到的MAC地址冲突控制帧(如果MAC地址冲突发生在上级以太网二层网络节点中)中所定义的策略来对端口作控制,并且后者优先,只有当后者定义为使用“本地策略”或本网络节点无法执行其定义的策略时才使用本网络节点定义的策略。
MAC地址冲突控制帧生成和发送模块330,用来根据上述“MAC地址冲突控制策略模块”的要求,生成和发送MAC地址冲突控制帧、或转发来自上一级以太网二层网络节点发送来的MAC地址冲突控制帧。
MAC地址冲突控制帧接收模块340,用来把从其它以太网设备发送来的MAC地址冲突控制帧鉴别出来,并接收下来交给“MAC地址冲突控制策略模块”以作进一步处理。
MAC地址冲突控制模块350,用来根据“MAC地址冲突控制策略模块”的要求对相应的端口作MAC地址冲突控制,并根据需要修改MAC地址转发表。
图4是一个优选的MAC地址冲突控制帧的示意图。在本实施例中,上述MAC地址冲突控制帧优选使用以太网控制帧的格式,目的地址优选使用以太网保留且未使用的组播地址,也可以使用广播或单播地址,但不推荐使用单播地址,因为这需要确定下一级以太网二层网络节点的MAC地址。以太网二层网络节点可以通过以太网帧类型来鉴别出MAC地址冲突控制帧,如图4所示,在该控制帧的负荷中除了包括一般帧中都具有的前导码、帧起始定界、目的MAC地址、源MAC地址、帧类型以及帧校验FCS之外,还包括以下信息:
1)冲突的MAC地址及其所在的虚拟局域网标识号(VLAN ID);
2)时间顺序:表明MAC地址冲突的端口出现该源MAC地址的时间先后,它可以是在先出现该MAC地址端口上最后一次更新该MAC地址的时间与出现MAC地址冲突之间的时间差,也可以是一个简单的时间先后逻辑值;
3)MAC地址冲突控制操作代码:该代码就是一个控制指令,表明应对冲突端口作何种控制,包括:
a)关闭端口:要求最后一级以太网二层网络节点关闭学习到该MAC地址的端口,
b)MAC地址过滤:要求最后一级以太网二层网络节点在学习到该MAC地址的端口上对该MAC地址进行过滤,
c)本地策略:要求最后一级以太网二层网络节点根据其本身的MAC地址控制策略来处理,本地策略可以选取“允许MAC地址移动法”、“禁止MAC地址移动法”、“关闭端口法”、“MAC地址过滤法”,
4)控制时间:表明作MAC地址冲突控制的时间,超过这一时间将自动恢复到正常状态;
5)其它厂家自定义信息。
图5是根据本发明的一个实施例的一种控制网络MAC地址冲突的方法的流程图,在本实施例中,在以图2所示的以太网中发生MAC地址冲突为例,并结合图5对本方法进行详细说明。以太网交换机作为以太网二层网络节点的一个例子,且每个以太网交换机具有图3所描述的装置300。例如,用户设备1和三层网络设备210本身发生了MAC地址冲突,本实施例方法的具体控制过程如下。
对以太网交换机的各端口进行初始化(步骤S500)。初始化就是为每个以太网交换机的各端口设置MAC地址控制的优先级。优选的是,越靠近用户的端口的MAC地址控制的优先级越低,越靠近网络的端口的MAC地址控制的优先级越高;与重要用户相连端口的MAC地址控制的优先级比与一般用户相连端口的MAC地址控制的优先级要高。根据这种设置原则,表2是为图2中的以太网交换机各端口设置的MAC地址控制优先级:
表2 MAC地址控制优先级
|
端口1 |
端口2 |
端口3 |
以太网交换机A |
4 |
2 |
2 |
以太网交换机B |
2 |
1 |
0 |
以太网交换机C |
2 |
0 |
1 |
在表2中可以看到以太网交换机A的端口1由于最靠近网络,因此优先级最高,而以太网交换机B和C的端口2、3由于和用户设备相连,因此优先级最低。但由于一般用户和重要用户的区别,例如以太网交换机B的端口2和端口3连接的用户重要性不同,因而它们具有不同的优先级。
每接收到一个以太网帧后,判断某个以太网交换机的端口之间是否发生MAC地址冲突(步骤S510)。在本例子中,由于用户设备1和三层网络设备210具有相同的MAC地址,因此,接收一个来自用户设备1的以太网帧的时候,会发现在以太网交换机A的端口1和端口2之间发生了MAC地址冲突(以太网交换机A的端口1和端口2被称为冲突端口)。
根据优先级来确定哪个冲突端口需要进行MAC地址控制或向其发送MAC地址冲突控制帧(步骤S520)。如果两个或以上冲突端口的优先级不同,那么优选低优先级的冲突端口进行MAC地址控制或向其发送MAC地址冲突控制帧,而保留高优先级冲突端口与该MAC地址等对应的条目。在本例子中,通过上述表2可以知道该以太网交换机A的端口1的优先级高于端口2。因此,需要对该低优先级的端口(端口2)进行MAC地址控制或者向其发送MAC地址冲突控制帧,而选择保留高优先级端口(端口1)与该冲突MAC地址等对应的条目。作为另一个例子,如果两个或以上冲突端口的优先级相同,该两个或以上的冲突端口需要各发送一个MAC地址冲突控制帧,或者根据现有的预定义策略(例如,现有技术中描述的“允许MAC地址移动法”、“禁止MAC地址移动法”、“关闭端口法”或“MAC地址过滤法”)对其中一个端口进行MAC地址控制(后面将对这种情况进行详述)。
继续判断是否从该冲突端口向与其相连的设备发送MAC地址冲突控制帧(步骤S530)。要想确定是否需要向上述步骤确定的冲突端口发送MAC地址冲突控制帧,首先要知道该冲突端口是直接与下一级以太网交换机相连还是与三层网络设备或用户设备相连。一般,如果该冲突端口还连接下一级的以太网交换机,那么该以太网交换机需要通过该冲突端口发送MAC地址冲突控制帧到下一级以太网交换机。因为本发明的一个优点就是尽可能找到最接近产生冲突的用户设备或者三层网络设备所连接的一个以太网交换机,并且对该最底层的交换机的对应端口进行MAC地址冲突控制。
更优选的方式是,在每个端口增加一个“MAC地址冲突控制属性”,通过配置这一属性来确定在该端口发生MAC地址冲突时是否需要从该端口向其相连的设备发送MAC地址冲突控制帧。这样,“是否直接连接以太网交换机”与“是否从该端口向其相连的设备发送MAC地址冲突控制帧”之间并不一定是同等的问题。因此,在一些情况下,即使该冲突端口是与下一级以太网交换机相连的,也可以不发送MAC地址冲突控制帧到下一级以太网交换机,而直接在本以太网交换机内进行MAC地址冲突控制。这些情况可以是:(1)与该端口相连的下一级以太网交换机不支持本发明所描述的MAC地址冲突控制;(2)或者不需要作更精细的划分,可以把所有通过一个以太网交换机连接到该端口的用户作为一个用户组来看待,这在目前的接入网中有很大的实际意义,也使得控制帧的使用更为灵活。
如果判断结果是该冲突端口不向其相连的设备发送MAC地址冲突控制帧,那么进入下面步骤S540,直接在本以太网二层网络节点中对该冲突端口进行MAC地址冲突控制。如果判断结果该冲突端口要发送MAC地址冲突控制帧,那么进入下述步骤S550,在该以太网二层网络节点中生成一个MAC地址冲突控制帧。在本例子中,由于在上述步骤S520中已经知道冲突端口中以太网交换机A的端口1优先级高于端口2的优先级,因此判断是否要从该以太网交换机A的低优先级端口(端口2)向与其相连的设备发送MAC地址冲突控制帧。从图2可以看到,由于该以太网交换机A的端口2连接着一个下一级的以太网交换机,且该端口2的“MAC地址冲突控制属性”设置为发送MAC地址冲突控制帧,因此判断结果为应该向以太网交换机A的端口2发送MAC地址冲突控制帧,并进入步骤S550。两者择一的,如果该端口2的“MAC地址冲突控制属性”设置为不发送MAC地址冲突控制帧,那么可以直接对该以太网交换机A的端口2进行MAC地址控制(进入步骤S540)。
在步骤S540中,本级以太网交换机直接对冲突端口进行MAC地址控制。如果判断结果是该冲突端口不向与其相连的设备发送MAC地址冲突控制帧,那么就根据本级以太网交换机所定义的策略(“本地策略”)对冲突端口进行MAC地址冲突控制。在上述步骤中,假设本例子中的以太网交换机A的端口2不需要向与其相连的设备发送MAC地址冲突控制帧,那么就直接根据本交换机定义的策略(例如,前述的“允许MAC地址移动法”、“禁止MAC地址移动法”、“关闭端口法”或“MAC地址过滤法”)对该端口2或者端口1进行MAC地址控制。
在步骤S550,根据MAC地址冲突情况,在以太网中生成一个MAC地址冲突控制帧。该MAC地址冲突控制帧优选用一个以太网保留类型或MAC地址来标识,该帧如前面图4描述的包括以下信息:冲突的两个源MAC地址及其所在的虚拟局域网标识号,引起MAC地址冲突的两个端口(例如,本例子中的以太网交换机A的端口1和2)出现该源MAC地址的时间先后,控制指令等。在控制MAC地址冲突时,只要考虑发生MAC地址冲突的交换机对应端口的优先级,其他端口不需要考虑。
然后,将生成的MAC地址冲突控制帧发送到该下一级的以太网交换机(步骤S560)。在上述步骤S530中已经知道应该从以太网交换机A的端口2向与其相连的以太网交换机发送MAC地址冲突控制帧,因此,在上述步骤S550中生成的MAC地址冲突控制帧将通过以太网交换机A的端口2被发送到下一级的以太网交换机(即,以太网交换机B)。
继续判断该下一级的以太网交换机是否要从对应端口向与之相连的设备发送MAC地址冲突控制帧(步骤S570)。当以太网交换机B接收到MAC地址冲突控制帧后,将根据帧中提供的MAC地址以及VLAN ID在自身的MAC地址转发表中进行查找,从而找到该MAC地址及VLAN来自它的端口2,该以太网交换机B的端口2就被称为对应端口。找到该对应端口2后,以太网交换机B要进行判断是否要从该对应端口向与其相连的设备发送MAC地址冲突控制帧。从图2可以看到,本实施例中,以太网交换机B的端口2下面直接连接用户设备1,没有连接着更下一级的以太网交换机。因此,也就意味着找到了最后一级的以太网交换机,即以太网交换机B,接下去可以对以太网交换机B的对应端口(端口2)进行MAC地址控制。
如果在以太网交换机B的端口2下面连接着更下一级的以太网交换机,那么根据配置情况可能需要继续进行步骤S560将该MAC地址冲突控制帧发送到更下一级以太网交换机。在本例子中,共有二级以太网交换机,包括三个以太网交换机A、B、C组成。但事实上,以太网络可以由更多级和更多以太网交换机组成,那么MAC地址冲突控制帧通过步骤S560、S570将一级一级地往下发送直到找到最终的冲突端口。例如,如果上述例子中以太网交换机B的端口2下面还连接着以太网交换机D,且端口2的“MAC地址冲突控制属性”配置为发送MAC地址冲突控制帧,而以太网交换机D的端口2连接着用户设备1,那么以太网交换机B继续将MAC地址冲突控制帧发送到下一级的以太网交换机D,由最靠近用户设备1的以太网交换机D进行MAC地址控制。
两者择一,如前面所述的情况,假设以太网交换机D不能支持本发明的MAC地址冲突控制帧或者以太网交换机D连接的用户都作为一个用户组,那么也可以将以太网交换机B的端口2的“MAC地址冲突控制属性”配置成不发送MAC地址冲突控制帧,而直接在以太网交换机B中进行MAC地址控制。
根据MAC地址冲突控制帧,对最后一级以太网交换机的对应端口进行MAC地址控制(步骤S580)。作为优选情况,对冲突的MAC地址的控制由最靠近用户设备或其他三层设备的以太网交换机来完成的。本例子中,最靠近用户设备1的是以太网交换机B,因此由以太网交换机B来完成对冲突端口的控制。在上述步骤中,以太网交换机A通过端口2向以太网交换机B发送该MAC地址冲突控制帧,通知以太网交换机B应控制发生冲突的MAC地址所对应的端口。以太网交换机B根据MAC地址冲突控制帧中的信息,包括MAC地址以及对应的VLAN ID,来查询自身的MAC地址转发表,从而找出该MAC地址以及对应的VLAN ID来自以太网交换机B的端口2。然后,可以根据MAC地址冲突控制帧中定义的“关闭端口法”或者“MAC地址过滤法”对以太网交换机B的端口2进行MAC地址控制,从而禁止来自用户设备1的以太网帧通过以太网交换机B的端口2。该“关闭端口法”就是关闭以太网交换机B的端口2从而禁止用户设备1的以太网帧通过以太网交换机B的端口2。该“MAC地址过滤法”是利用以太网交换机自身的MAC地址过滤功能,从而丢弃来自用户设备1的以太网帧。当然,如果该MAC地址冲突控制帧中定义使用“本地策略”,那么该以太网交换机B也可以利用前述四种策略(例如,前述的“允许MAC地址移动法”、“禁止MAC地址移动法”、“关闭端口法”或“MAC地址过滤法”)对端口2进行MAC地址控制。
最后,在发生MAC地址冲突的以太网交换机的地址转发表中保存一个冲突端口的MAC地址条目(步骤5590)。优选情况是,在以太网交换机的地址转发表中保存高优先级端口的MAC地址条目。在本例子中,由于以太网交换机A的端口1的优先级比端口2的高,因此无论该MAC地址是在端口1先出现还是在端口2上先出现,以太网交换机A都应该在其地址转发表中保存以太网交换机A端口1的源MAC地址以及对应源端口号,并且允许以太网交换机A的端口1的流量和MAC地址学习,而不允许以太网交换机A的端口2中出现该源MAC地址。
以上的例子是在两个MAC地址冲突端口的优选级不同的情况下进行的MAC地址冲突的控制。为了更全面地理解本发明,本优选实施例将给出第二个例子,在两个MAC地址冲突端口的优先级相同的情况下进行的MAC地址冲突的控制。虽然本例子的基本方法同上述第一个例子,但是在某些步骤中有所改变。假设在图2所示的以太网中发生另一种MAC地址冲突的情况:用户设备1和用户设备3之间发生MAC地址冲突,以下将详述本例子如何控制该MAC地址冲突。
在步骤S500中,首先要对每个以太网交换机的各端口设置一个MAC地址控制的优先级。本例子中引起MAC地址冲突的以太网交换机的两个端口具有相同的优先级。
在步骤S510中,同样要判断以太网交换机的端口之间是否发生MAC地址冲突。在本例子中,用户设备1和用户设备3来自不同的以太网交换机的端口,它们之间的MAC地址冲突发生在以太网交换机A的端口2和端口3。
在步骤S520中,通过表2可以知道以太网交换机A的端口2和端口3的优先级是相同的,因此,需要同时从两个端口发送MAC地址冲突控制帧或者直接进行MAC地址控制,具体的判断方法同上述例子。
在步骤S530中,同样要判断是否从冲突端口向与其连接的设备发送MAC地址冲突控制帧。在第一个例子中,只需要对低优先级的冲突端口进行判断,但是本实施例中,由于冲突的两个端口优先级相同,因此需要同时对两个端口进行判断是否要向与其相连的设备发送MAC地址冲突控制帧。从图2可以看到,应该需要从发生冲突的以太网交换机A的端口2和3分别向与其相连的设备发送MAC地址冲突控制帧。
在步骤S540中,和第一个例子一样运用“现有策略”对冲突端口进行MAC地址冲突控制。
在步骤S550中,和第一个例子一样在以太网中生成MAC地址冲突控制帧。
在步骤S560中,同第一个例子一样需要将MAC地址冲突控制帧发送到下一级以太网交换机中。在本实施例中,需要通过以太网交换机A的端口2和端口3分别向以太网交换机B和C各发送一个MAC地址冲突控制帧。
在步骤S570中,下一级以太网交换机同样要判断是否要从其对应端口向与其相连的设备发送MAC地址冲突控制帧。在本例子中,以太网交换机B和C的对应端口下连接着用户设备1和用户设备3,不需要从这些端口向与其相连的设备发送MAC地址冲突控制帧。
在步骤S580中,要根据不同的设备选择不同的策略对其中一个冲突端口进行MAC地址控制。这里,以太网交换机A同时向以太网交换机B和C同时发送MAC地址冲突控制帧,通知以太网交换机B和C发生了MAC地址冲突。以太网交换机B和C通过查询自己的MAC地址转发表,找出引起MAC地址冲突的源MAC地址来自以太网交换机B和C的端口2。接着,还需要判断这两个端口出现该源MAC地址的时间先后。太网交换机B和C根据设备类型和设定的策略来对其中一个端口使用“关闭端口法”或“MAC地址过滤法”来控制MAC地址冲突。对于固定网络来说,一般对后接收到引起MAC地址冲突的以太网帧的端口进行控制;对与移动网络或笔记本电脑来说,应对先接收到引起MAC地址冲突的以太网帧的端口进行控制。假设这是一个固定网络,并且来自用户设备1的以太网帧比来自用户设备3的以太网帧先到,这样需要对用户设备3进行MAC地址控制,禁止其以太网帧通过以太网交换机C的端口2。
最后,在步骤S590中,在发生MAC地址冲突的以太网交换机的MAC地址转发表中保存一个冲突端口与MAC地址对应关系的条目。假设对以太网交换机C的端口2进行了MAC地址控制,那么以太网交换机A将剩下一个端口(以太网交换机A的端口2)的MAC地址及相应的VLAN、源端口号、初始老化时间等保存在MAC地址转发表中。对于以太网交换机A来说,这一结果是通过正常的MAC地址学习(允许MAC地址移动法)来完成的,因为在对以太网交换机C的端口2进行了MAC地址控制后,以太网交换机A只会在端口2学习到该MAC地址。
本发明把在单个以太网交换机上控制“MAC地址冲突”扩展到整个以太网二层网络节点中控制MAC地址冲突,解决了连接不同以太网交换机的用户或三层网络设备之间MAC地址冲突问题。同时本发明把控制MAC地址冲突的工作交给了最靠近用户设备或其他三层设备的二层设备来完成,从源头上控制了多设备间的MAC地址冲突。
虽然以上均以以太网交换机作为以太网二层网络节点的例子来对本发明进行说明,但不排除无线入点AP或者类似物在本发明中的应用。本发明所应用的网络也可以是由若干个无线接入点AP以无线方式级连组成,或者由若干个的无线接入点AP以及以太网交换机以无线和/或有线的方式级连组成。
此外,本发明除了可以在无线和/或有线的环境下应用,同时在一个以太网二层网络节点的不同板卡间也可以进行应用。
虽然经过对本发明结合具体实施例进行描述,对于在本技术领域熟练的人士,根据上文的叙述做出的替代、修改与变化将是显而易见的。因此,在这样的替代、修改和变化落入附后的权利要求的精神和范围内时,应该被包括在本发明中。