MAC简介

MAC(Media Access Control)地址用来定义网络设备的位置。MAC地址由48比特长、12位的16进制数字组成,其中从左到右开始,0到23bit是厂商向IETF等机构申请用来标识厂商的代码,24到47bit由厂商自行分派,是各个厂商制造的所有网卡的一个唯一编号。

浅析什么是mac地址表

MAC地址表可以分为3种类型:

•物理MAC地址

这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址。

•广播MAC地址

全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示LAN上的所有终端设备。

•组播MAC地址

除广播地址外,第8bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表LAN上的一组终端。

MAC地址表

定义

MAC地址表记录了交换机学习到的其他设备的MAC地址与接口的对应关系,以及接口所属VLAN等信息。设备在转发报文时,根据报文的目的MAC地址查询MAC地址表,如果MAC地址表中包含与报文目的MAC地址对应的表项,则直接通过该表项中的出接口转发该报文;如果MAC地址表中没有包含报文目的MAC地址对应的表项时,设备将采取广播方式在所属VLAN内除接收接口外的所有接口转发该报文。

组成

MAC地址表是以MAC地址和VLAN ID或VSI为索引来唯一标识。当一台目的主机属于多个VLAN或VSI时,在MAC地址表中就会存在相同MAC地址拥有多个不同VLAN ID或VSI的情况。下表中是三条不同的MAC地址表项。如第一条MAC地址表项的作用是:从设备任意接口进入的目的MAC为0011-0022-0034,VLAN ID为10的报文,都会从GE接口转发出去。

MAC地址表

作用

MAC地址表用于指导报文进行单播转发。如图中,PC1发往PC3的报文,在到达路由器Router时,根据报文中的目的MAC地址MAC3和VLAN10查询路由器的MAC地址表,获取出接口Port3,然后报文直接从接口Port3转发到PC3,完成数据的转发。

MAC地址表指导报文单播转发

学习过程

一般情况下,MAC地址表是设备根据收到的数据帧里的源MAC地址自动学习而建立的。

HostA向RouterA发送数据

HostA向RouterA发送数据时,RouterA从数据帧中解析出源MAC地址(即HostA的MAC地址)和VLAN ID。
•如果MAC地址表中不存在该MAC地址表项,设备则将这个新MAC地址以及该MAC地址对应的PortA和VLAN ID作为一个新的表项加入到MAC地址表中。
•如果MAC地址表中已经存在该MAC地址表项,设备将通过重置该表项的老化时间,对该表项进行更新。

老化过程

为适应网络的变化,MAC表需要不断更新。MAC表中自动生成的表项(即动态表项)并非永远有效,每一条表项都有一个生存周期,到达生存周期仍得不到更新的表项将被删除,这个生存周期被称作老化时间。如果在到达生存周期前记录被更新,则该表项的老化时间重新计算。

地址漂移

MAC地址漂移是指设备上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。图1所示,MAC地址为0011-0022-0034,VLAN ID为2的表项,出接口由GE0/0/1刷新为GE0/0/2,这就是MAC地址漂移。设备出现MAC地址漂移时,设备CPU会有不同程度的升高。
正常情况下,网络中不会在短时间内出现大量MAC地址漂移的情况。出现这种现象一般都意味着网络中存在环路,可以通过查看告警信息和漂移记录,快速定位和排除环路。

MAC地址漂移

漂移检测

MAC地址漂移检测是对MAC地址漂移现象进行检测的功能。MAC地址漂移检测是利用MAC地址学习时接口跳变实现的,因此能提供的信息与MAC地址学习相关,包括MAC地址、VLAN,以及跳变的接口等诊断信息。其中跳变的接口即为可能出现环路的接口。网络管理员根据网络中每台设备上出现的跳变接口,以及网络拓扑,判断环路的源头。

MAC地址漂移检测

若SwitchB和SwitchC之间误接网线,则Router、SwitchB、SwitchC之间形成环路。当RouterA上Port1接口从网络中收到一个广播报文后转发给Router,该报文经过环路,会被RouterA上Port2接口收到。在接口Port2上配置MAC地址漂移检测,此时RouterA会感知到MAC地址学习接口跳变的现象。若连续出现此现象,则在RouterA上可以判断出现了MAC地址漂移。