MAC地址表记录了目的MAC地址、MAC地址对应的出接口以及所属的VLAN ID。在转发数据时,设备根据报文中的目的MAC地址查询MAC地址表,快速定位出接口,从而减少广播。
通过display mac-address命令可以查看MAC地址表信息,例如:
<Sysname> display mac-address
MAC ADDR VLAN ID STATE PORT INDEX AGING TIME(s)
000f-e201-0101 1 Learned GigabitEthernet1/0/1 AGING
--- 1 mac address(es) found ---
1 MAC地址表项的生成方式
MAC地址表项的生成方式有两种:自动生成、手工配置。
1. 自动生成MAC地址表项
一般情况下,MAC地址表是设备通过源MAC地址学习过程而自动建立的。设备学习MAC地址的方法如下:如果从某接口(假设为接口A)收到一个数据帧,设备就会分析该数据帧的源MAC地址(假设为MAC-SOURCE),并认为目的MAC地址为MAC-SOURCE的报文可以由接口A转发;如果MAC地址表中已经包含MAC-SOURCE,设备将对该表项进行更新;如果MAC地址表中尚未包含MAC-SOURCE,设备则将这个新MAC地址以及该MAC地址对应的接口A作为一个新的表项加入到MAC地址表中。
为适应网络的变化,MAC地址表需要不断更新。MAC地址表中自动生成的表项并非永远有效,每一条表项都有一个生存周期,到达生存周期仍得不到刷新的表项将被删除,这个生存周期被称作老化时间。如果在到达生存周期前纪录被刷新,则重新计算该表项的老化时间。
2. 手工配置MAC地址表项
设备通过源MAC地址学习自动建立MAC地址表时,无法区分合法用户和黑客用户的报文,带来了安全隐患。如果黑客用户将攻击报文的源MAC地址伪装成合法用户的MAC地址,并从设备的其它接口进入,设备就会学习到错误的MAC地址表项,于是就会将本应转发给合法用户的报文转发给黑客用户。
为了提高接口安全性,网络管理员可手工在MAC地址表中加入特定MAC地址表项,将用户设备与接口绑定,从而防止假冒身份的非法用户骗取数据。
2 MAC地址表项的分类
MAC地址表项分为:静态MAC地址表项、动态MAC地址表项、和黑洞MAC地址表项。
· 静态MAC地址表项由用户手工配置,用于目的是某个MAC地址的报文从对应端口转发出去,表项不老化。
· 动态MAC地址表项包括用户配置的以及设备通过源MAC地址学习得来的,用于目的是某个MAC地址的报文从对应端口转发出去,表项有老化时间。
· 黑洞MAC地址表项用于丢弃源MAC地址或目的MAC地址为指定值的报文(例如,出于安全考虑,可以屏蔽某个用户接收报文),由用户手工配置,表项不老化。
用户手工配置的静态MAC地址表项和黑洞MAC地址表项不会被动态MAC地址表项覆盖,而动态MAC地址表项可以被静态MAC地址表项和黑洞MAC地址表项覆盖。
3 基于MAC地址表的报文转发
设备在转发报文时,根据MAC地址表项信息,会采取以下两种转发方式:
· 单播方式:当MAC地址表中包含与报文目的MAC地址对应的表项时,设备直接将报文从该表项中的转发出接口发送。
· 广播方式:当设备收到目的地址为全1的报文,或MAC地址表中没有包含对应报文目的MAC地址的表项时,设备将采取广播方式将报文向除接收接口外的所有接口进行转发。