一种防止mac地址欺骗的方法

文档序号:7957083阅读:646来源:国知局
专利名称:一种防止mac地址欺骗的方法
技术领域
本发明涉及数据通讯领域,具体地说,涉及一种防止MAC地址欺骗的方法。
背景技术
IEEE802.3标准规定,在一个标准的以太网MAC帧中,有目的MAC地址和源MAC地址,长度都是6个字节,图1为标准的以太网MAC帧格式,其中Destination Address目的MAC地址,6BytesSource Address 源MAC地址,6BytesLength/type数据长度或报文类型,2BytesDATA 以太网帧承载的数据域FCS帧校验序列目的MAC地址用以标识以太网帧要被送到哪台物理设备去,源MAC地址用以标识以太网帧是由哪台物理设备发出的。目的MAC地址的第一个bit位(第一个字节的最低bit位)表示目的MAC地址是单播地址还是组播地址,如果是0,表示目的MAC地址是单播地址,如果是1,表示目的MAC地址是组播地址。
如果以太网帧的目的MAC地址是单播MAC地址,以太网帧在进入设备后,设备会根据以太网帧的目的MAC地址和VLAN ID(Virtual LAN ID)来查找MAC地址转发表项,如果找到,则根据转发表项中的端口号,将以太网帧从这个端口转发出去,如果没有找到,则会将以太网帧在这个VLAN内的所有端口进行广播。
IEEE 802.1Q(Virtual Bridged Local Area Networks)规定了以太网中VLAN的实现方式。在标准的以太网帧的源MAC地址之后增加一个4字节的802.1Q标签,图2为标准的802.1Q帧格式,802.1Q标签包含2个字节的标签协议标识(TPID,Tag Protocol Identifier)和两个字节的标签控制信息(TCI,TagControl Information)。TPID取值为十六进制的8100,用于标识该以太网帧为802.1Q标签的以太网帧;TCL的详细内容如图3所示,其中VID(VLAN ID,VLANIdentifier)是一个12位的域,标识不同的VLAN,取值为0~4095,用于区别4096个VLAN。每个支持802.1Q协议的设备发送出来的数据报文都会包含这个域,以指明自己所属的VLAN。
如果设备收到一个不带802.1Q标签的以太网帧,会按照端口(或按照源MAC地址或报文协议类型等)来增加802.1Q的标签;如果收到带有802.1Q标签的以太网帧,不对以太网帧做任何修改。在收到以太网帧后,设备会增加相应的转发表项,将以太网帧的源MAC地址、VLAN ID和端口号记录下来,这叫做MAC地址的学习,以太网MAC地址转发表项的基本格式如图4所示。
源MAC地址在学习之前,设备会根据源MAC地址和VLAN ID查找MAC地址转发表项,如果找到相同的表项,并且端口号不同,会根据新的端口号来更新转发表项,这叫做站点转移(station movement)。如果没有找到相同的表项,会增加一个新的转发表项。MAC地址转发表项可以分为静态MAC地址转发表项和动态MAC地址转发表项,静态MAC地址转发表项只能手工配置到设备中,不能进行站点转移,即静态MAC地址转发表项的端口号不能根据以太网帧从不同端口进入进行自动更新,而动态MAC地址可以进行站点转移,即动态MAC地址转发表项的端口号可以根据以太网帧从不同端口进入进行自动更新,动态MAC地址可以在一定时间内老化,即会被网络交换芯片删除。
网络交换芯片的端口属性中通常会支持多种MAC地址的学习状态,常用的是MAC地址可以自动学习和站点转移,还可以将端口另外设置成学习受控状态端口不会自动学习MAC地址,如果以太网帧中的源MAC地址在该端口上不存在,硬件不转发该以太网帧,并送交CPU系统。
由于在接入设备中,端口可以分为上行端口和用户端口,上行端口是指与上行设备相连的端口,上行设备通常是指三层交换机或BAS(Broadband AccessServer,宽带接入服务器),用户端口是指与用户计算机或其它二、三层交换机相连的端口。在上行端口可以学习到上行设备的MAC地址,在用户端口可以学习到用户设备的MAC地址,用户设备发送的以太网帧,目的MAC地址是上行设备的MAC地址,该以太网帧到达设备以后,设备会查找MAC地址转发表项,因为上行设备MAC地址转发表项中的端口号是上行端口,所以太网帧会被设备从上行端口转发出去,如图5所示。
如果用户设备1的MAC地址与上行设备的MAC地址相同,或者用户设备1恶意仿冒上行设备的MAC地址,这时上行设备的MAC地址就会在用户端口1学习到,用户设备2发送的到上行设备的以太网帧,就会错误地被转发到用户端口1,从而造成用户设备2无法向上行设备发送以太网帧,用户设备2无法正常上网,如图6所示。
同时,上行设备的MAC地址进行站点转移时,设备不会通知CPU系统进行处理,所以无法检测出哪些用户设备仿冒上行设备的MAC地址。
现有技术中对于普通芯片不支持MAC地址冲突检测的情况,通常的做法是在上行端口配置静态MAC地址,所述MAC地址是上行设备的MAC地址;如果有多个VLAN存在,需要在每个VLAN中配置一个静态MAC地址。当从用户端口进入的以太网帧的源MAC地址与上行设备MAC地址相同时,因为上行端口已配置了静态的MAC地址,所以这样的MAC地址不会发生站点转移。
但现有技术有以下缺点(1)因为静态配置需要先知道上行设备的MAC地址,在不知道上行设备MAC地址情况下,无法实现静态配置;(2)当有多个VLAN存在时,需要在每个VLAN中配置静态MAC地址,配置复杂;(3)设置静态MAC地址只能限制MAC地址的站点转移,无法检测到是哪个端口引起了MAC地址冲突。

发明内容
鉴上所述,本发明提供的防止MAC地址欺骗的方法和装置,解决了现有技术中的在上行端口配置静态MAC地址时需要知道上行设备的MAC地址,配置复杂;以及MAC地址站点转移时不通知CPU进行处理的问题。
本发明提供的一种防止MAC地址欺骗的方法,包括通过CPU系统将上行端口的动态MAC地址转发表项设置为静态,并且模拟芯片的MAC地址的老化机制,对端口是上行端口的MAC地址转发表项进行老化处理来防止MAC地址欺骗。
所述的老化处理过程包括(1)CPU系统以MAC地址的老化时间为周期,定时查询MAC地址转发表中的端口号是上行端口的MAC地址转发表项,当状态是动态时,将该表项的状态修改为静态,设置HIT位,并将该表项记录到软件MAC地址表中。
(2)如果查询到的MAC地址转发表项的端口是上行端口,状态是静态,并且该表项已记录在软件MAC地址表中,则检查该表项的HIT位,如果HIT位被清除,删除该MAC地址转发表项。否则,清除HIT位。
还包括报文从用户端口进入后,当检测到在MAC地址转发表中存在其MAC地址及其VLAN ID与报文的源MAC地址及其VLAN ID相同的表项,而表项中的端口号与报文进入的端口号不相同,并且该表项是动态的,将该MAC地址转发表项中的端口号更改为报文进入的用户端口号,清除HIT位,并将报文正常转发;而如果该表项是静态的,证明该报文拥有的是非法的MAC地址。
如果查询到的MAC地址转发表项的端口是上行端口,状态是静态,但是该表项未记录在软件MAC地址表中,不对该转发表项进行处理。
还包括将所述非法的MAC地址和端口信息记录,并通过人机界面输出或通知网络管理系统。
利用本发明,能解决因为MAC地址欺骗或MAC地址重复引起的用户设备无法向上行设备发送以太网帧的问题。通过CPU系统将上行端口的动态MAC地址转发表项设置为静态,并且模拟芯片的MAC地址的老化机制,对端口是上行端口的MAC地址转发表项进行老化处理,这样即使从用户端口进入的报文的源MAC地址和VLAN ID与MAC地址转发表中某一表项的MAC地址和VLAN ID相同,因为上行端口的MAC地址转发表项都被设置为静态的,不会发生MAC地址站点转移,所以可以避免为了避免用户设备发往上行端口的报文被错误转发到其它用户端口上;并且利用本发明解决了配置复杂的问题;同时进一步地在检测到用户端口有和上行设备相同的MAC地址时,可以记录发生恶意攻击的用户端口号,以及进行恶意攻击的时间,必要时可以及时通知用户。


图1为以太网MAC帧示意图;图2为带有802.1Q标签的以太网帧示意图;图3为802.1Q标签中的TCL部分示意图;图4以太网MAC地址转发表项示意图;图5为用户端口以太网帧正确转发到上行端口示意图;图6为用户端口以太网帧错误转发到其它端口示意图;图7为本发明对上行端口的MAC地址转发表项进行老化处理流程图;图8为本发明的对报文的处理流程图。
具体实施例方式
本发明通过CPU系统将上行端口的动态MAC地址转发表项设置为静态,并且模拟芯片的MAC地址的老化机制,对端口是上行端口的MAC地址转发表项进行老化处理。
由于每个MAC地址转发表项中通常会有一个HIT位,用于表示这个表项是否被命中,也就是说,当报文中的源MAC地址和VLAN ID与一个MAC地址转发表项相同时,该表项的HIT位会被置位。
网络交换芯片会根据设定的老化时间对MAC地址转发表中的动态MAC地址表项进行检查,如果表项中的HIT位置位,则将HIT位清除,在HIT位被清除后,如果继续有源MAC地址和VLAN ID与该表项MAC地址和VLAN ID相同的报文进入,该表项的HIT位被重新置上;在检测时如果HIT位已被请除,则证明在一个老化周期内,没有相同源MAC地址和VLAN ID的报文进入,此MAC地址表项将被删除,也就是被老化了。
其中CPU系统模拟芯片的MAC地址老化机制对上行端口的MAC地址转发表项进行老化处理流程如图7所示步骤701定时查询开始后,首先查找到端口号是上行端口的MAC地址转发表项;步骤702然后判断所查找到的MAC地址转发表项是否是动态的;步骤703如果所查找到的MAC地址转发表项是动态的,就将该表项的状态修改为静态,并设HIT位;步骤704并将所述表项记录到一个软件MAC地址表中,结束该流程;步骤705如果所查找到的MAC地址转发表项是静态的,然后检查该表项是否已记录在软件MAC地址表中;步骤706如果该表项没有纪录在软件MAC地址表中,说明不是在步骤703中设置的MAC地址,是其它的静态MAC地址(比如通过命令行配置的),不对该表项进行处理,结束该流程。
步骤707如果该表项已纪录在软件MAC地址表中,就进一步检查该表项的HIT位是否被清除;步骤708如果该表项的HIT位还存在,清除该HIT位,结束该流程;步骤709如果该表项的HIT位是已经被清除,则在MAC地址转发表中删除该MAC地址转发表项。
因此,CPU系统以MAC地址的老化时间为周期,定时查询MAC地址转发表,如果MAC地址转发表项的端口是上行端口,并且状态是动态,则将该表项的状态修改为静态,设置HIT位,并将该表项记录到软件MAC地址表中。此时,如果从用户端口进入的报文的源MAC地址和VLAN ID与MAC地址转发表中某一表项的MAC地址和VLAN ID相同,因为上行端口的MAC地址转发表项都被设置为静态的,所以不会发生MAC地址站点转移。
下面结合图8对本发明的对报文的处理流程进行具体说明步骤801报文从用户端口进入;步骤802检测在MAC地址转发表中是否存在其MAC地址及其VLANID与报文的源MAC地址及其VLAN ID对应相同的表项;步骤803如果不存在其MAC地址及其VLAN ID与报文的源MAC地址及其VLAN ID对应相同的表项,用户端口学习该MAC地址,并正常转发该报文;步骤804如果存在其MAC地址及其VLAN ID与报文的源MAC地址及其VLAN ID对应相同的表项,则进一步判断该表项中的端口号是否与报文进入的端口号相同;步骤805如果该表项中的端口号与报文进入的端口号相同,说明该报文是正常报文,可以正常处理;步骤806如果该表项中的端口号与报文进入的端口号不相同,进一步判断该表项的状态是否是动态的;步骤807如果该表项是动态的,则将该MAC地址转发表项中的端口号更改为报文进入的用户端口号,并设置HIT位,并将报文正常转发;步骤808如果该表项是静态的,证明与上行设备的MAC地址重复,是非法的MAC地址;步骤809将报文送CPU系统处理,CPU系统记录相关的非法信息,比如发生恶意攻击的用户端口号,以及进行恶意攻击的时间,必要时可以及时通知用户。
还有其他对上行端口的MAC地址转发表项进行老化处理的手段,但与以上揭露的技术手段基本类似。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种防止MAC地址欺骗的方法,其特征在于,CPU系统将上行端口的动态MAC地址转发表项设置为静态,并且模拟芯片的MAC地址的老化机制,对端口是上行端口的MAC地址的转发表项进行老化处理来防止MAC地址欺骗。
2.根据权利要求1所述的方法,其特征在于,所述的模拟芯片的MAC地址的老化机制包括(1)CPU系统以MAC地址的老化时间为周期,定时查询MAC地址转发表中的端口号是上行端口的MAC地址转发表项的状态,当状态是动态时,将该表项的状态修改为静态,设置HIT位,并将该表项记录到软件MAC地址表中。(2)如果查询到的MAC地址转发表项的端口是上行端口,状态是静态,并且该表项已记录在软件MAC地址表中,则检查该表项的HIT位,如果HIT位被清除,删除该MAC地址转发表项。否则,清除HIT位。
3.根据权利要求2所述的方法,其特征在于如果查询到的MAC地址转发表项的端口是上行端口,状态是静态,但是该表项未记录在软件MAC地址表中,不对该转发表项进行处理。
4.根据权利要求2所述的方法,其特征在于,还包括报文从用户端口进入后,当检测到在MAC地址转发表中存在其MAC地址及其VLAN ID与报文的源MAC地址及其VLAN ID相同的表项,而表项中的端口号与报文进入的端口号不相同,并且该表项是动态的,将该MAC地址转发表项中的端口号更改为报文进入的用户端口号,并将报文正常转发。
5.根据权利要求3所述的方法,其特征在于,报文从用户端口进入后,当检测到在MAC地址转发表中存在其MAC地址及其VLAN ID与报文的源MAC地址及其VLAN ID相同的表项,而表项中的端口号与报文进入的端口号不相同,并且该表项是静态的,证明该报文拥有的是非法的MAC地址。
6.根据权利要求5所述的方法,其特征在于,包括将所述非法的MAC地址和端口信息记录,并通过人机界面输出或通知网络管理系统。
全文摘要
本发明公开的一种防止MAC地址欺骗的方法,包括CPU系统将上行端口的动态MAC地址转发表项设置为静态,并且模拟芯片的MAC地址的老化机制,对端口是上行端口的MAC地址转发表项进行老化处理来防止MAC地址欺骗。利用本发明,能解决因为MAC地址欺骗或MAC地址重复引起的用户设备无法向上行设备发送以太网帧的问题,同时在检测到用户端口有和上行设备相同的MAC地址时,可以记录发生恶意攻击的用户端口号,以及进行恶意攻击的时间,并可以通过CPU系统人机界面和网络管理系统及时通知用户。
文档编号H04L9/00GK101043355SQ200610060820
公开日2007年9月26日 申请日期2006年5月19日 优先权日2006年5月19日
发明者马书雷, 潘晶 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1