MAC地址表的定义和分类MAC地址表的定义MAC地址表记录了路由器学习到的其他设备的MAC地址与接口的对应关系,以及接口所属VLAN等信息。设备在转发报文时,根据报文的目的MAC地址查询MAC地址表,如果MAC地址表中包含与报文目的MAC地址对应的表项,则直接通过该表项中的出接口转发该报文;如果MAC地址表中没有包含报文目的MAC地址对应的表项时,设备将采取广播方式在所属VLAN内除接收接口外的所有接口转发该报文。
MAC地址表的分类MAC地址表中的表项分为:动态表项、静态表项和黑洞表项。另外路由器的MAC地址表中还存在一种业务类型的MAC地址表项,譬如:安全MAC和MUX MAC。该类MAC地址表项是由对应业务维护的,一般是通过动态表项转换来的。
表1-1 不同MAC地址表的特点和作用[td]
MAC地址表类型 | | |
动态表项 | - 由接口通过报文中的源MAC地址学习获得,表项可老化。
- 在系统复位、接口板热插拔或接口板复位后,动态表项会丢失。
| - 通过查看动态MAC地址表项,可以判断两台相连设备之间是否有数据转发。
- 通过查看指定动态MAC地址表项的个数,可以获取接口下通信的用户数。
|
静态表项 | - 由用户手工配置,并下发到各接口板,表项不可老化。
- 在系统复位、接口板热插拔或接口板复位后,保存的表项不会丢失。
- 接口和MAC地址静态绑定后,其他接口收到源MAC是该MAC地址的报文将会被丢弃。
- 一条静态MAC地址表项,只能绑定一个出接口。
- 一个接口和MAC地址静态绑定后,不会影响该接口动态MAC地址表项的学习。
| 通过绑定静态MAC地址表项,可以保证合法用户的使用,防止其他用户使用该MAC进行攻击。 |
黑洞表项 | - 由用户手工配置,并下发到各接口板,表项不可老化。
- 在系统复位、接口板热插拔或接口板复位后,保存的表项不会丢失。
- 配置黑洞MAC地址后,源MAC地址或目的MAC地址是该MAC的报文将会被丢弃。
| 通过配置黑洞MAC地址表项,可以过滤掉非法用户。 |
MAC地址表的组成和作用MAC地址表的组成MAC地址表是以MAC地址和VLAN ID或VSI为索引来唯一标识。当一台目的主机属于多个VLAN或VSI时,在MAC地址表中就会存在相同MAC地址拥有多个不同VLAN ID或VSI的情况。表1-2中是四条不同的MAC地址表项。如第一条MAC地址表项的作用是:从设备任意接口进入的目的MAC为0011-0022-0034,VLAN ID为10的报文,都会从GE接口转发出去。
表1-2 MAC地址表项[td]
MAC地址 | | |
0011-0022-0034 | 10 | GE |
0011-0022-0034 | 20 | GE |
0011-0022-0035 | 30 | Eth-Trunk20 |
0011-0022-0035 | huawei | GE |
MAC地址表的作用MAC地址表用于指导报文进行单播转发。如图1-1中,PC1发往PC3的报文,在到达路由器Router时,根据报文中的目的MAC地址MAC3和VLAN10查询路由器的MAC地址表,获取出接口Port3,然后报文直接从接口Port3转发到PC3,完成数据的转发。
图1-1 基于MAC地址表的转发流程图

MAC地址学习和老化
MAC地址学习过程一般情况下,MAC地址表是设备根据收到的数据帧里的源MAC地址自动学习而建立的。
图1-2 MAC地址学习示意图

如图1-2,HostA向RouterA发送数据时,RouterA从数据帧中解析出源MAC地址(即HostA的MAC地址)和VLAN ID。
- 如果MAC地址表中不存在该MAC地址表项,设备则将这个新MAC地址以及该MAC地址对应的PortA和VLAN ID作为一个新的表项加入到MAC地址表中。
- 如果MAC地址表中已经存在该MAC地址表项,设备将通过重置该表项的老化时间,对该表项进行更新。
说明:- 如果PortA加入了Eth-TrunkA,则MAC地址表项的出接口就是Eth-TrunkA。
- 路由器设备所有接口默认加入VLAN1,如果不做修改所有MAC地址表项的VLANID都是VLAN1。
- 路由器设备对于BPDU MAC(形如:0180-c200-xxxx)不会进行MAC地址学习。
所以设备在收到数据帧时,才会触发MAC地址的学习和刷新。
MAC地址老化过程为适应网络的变化,MAC表需要不断更新。MAC表中自动生成的表项(即动态表项)并非永远有效,每一条表项都有一个生存周期,到达生存周期仍得不到更新的表项将被删除,这个生存周期被称作老化时间。如果在到达生存周期前记录被更新,则该表项的老化时间重新计算。
图1-3 MAC地址老化过程示意图

如图1-3所示,设备MAC地址老化时间设置为T。在t1时刻有源MAC地址为00e0-fc00-0001、VLAN为1的报文从某接口进入。假定该接口已加入VLAN 1。如果之前MAC地址表不存在关于(MAC: 00e0-fc00-0001,VLAN: 1)的任何种类表项,那么这个地址就会作为动态MAC地址表项学习到地址表里,同时该表项的命中标志位被置1。
设备周期性(每经过T时间)地对所有学习到的动态MAC地址表项进行检查。
- 在t2时刻,检查到动态表项(MAC: 00e0-fc00-0001,VLAN: 1)的命中标志位为1,则将该表项的命中标志位置为0,但不删除这条表项。
- 在t2时刻和t3时刻之间没有这种报文进入设备,那么该表项的命中标志位会一直保持为0。
- 在t3时刻,设备检查到该表项的命中标志位为0,认为该表项的老化时间到达,将删除此条表项。
如上所述,通过自动老化,一条动态表项在MAC地址表存在的最短时间是设备所配置的老化时间T到2T之间。
设备MAC地址老化时间可手动设置。通过设置此时间,可以灵活控制动态学习到的MAC表项在MAC地址表存在的时间。