MAC地址表项
MAC地址表是交换机进行数据帧转发时所使用的一个非常关键的数据表。
查看MAC地址表
如下图所示的网络拓扑中:
通过命令查看SW1的MAC地址表项信息:
- 从SW1的MAC地址表可以看出,其GE0/0/1接口连接着一台加入VLAN10的设备,该设备的MAC地址为5489-985b-17af(上图中的PC),
- SW1的GE0/0/2接口连接着一台加入VLAN20的设备(上图中的Server),该设备MAC地址为5489-987e-10d0。
- 从上图所示的网络拓扑中,SW1与SW2之间还部署了链路聚合技术(Link Aggregation ),即SW1与SW2之间存在多个互联接口被聚合成一个逻辑接口(Eth-trunk 1)。
- SW1的Eth-trunkl接口连接着一台加入VLAN200的设备,且该设备的MAC地址为4clf-ccab-ea87,这是SW2的MAC地址。
- 当这些设备之间需要相互通信时,数据帧在到达SW1后,SW1便可通过查询MAC地址表进行数据帧转发。
动态MAC表项
- 如上图所示的网络拓扑中,初始时,交换机的MAC地址表是空的(比如SW1),随着网络中的各台设备陆续开始发送数据(一般通过泛洪实现),交换机也在各个接口上学习MAC地址,并持续维护自己的MAC地址表。
- 当网络稳定后(数据转发不再依靠泛洪,而是通过Mac地址表寻址实现),SW1的MAC地址表中看到PC、Server和SW2的MAC地址,并且这些MAC地址表项都是动态的(类型为dynamic )。
动态MAC表项的老化机制
- 一个动态的MAC地址表项被加载到交换机的MAC地址表后,其老化计时器也就随即启动,并开始倒计时,当该计时器计数到0时,这个MAC表项将被删除。
- 在交换机每收到一个数据帧时,MAC地址表中与该数据帧的源MAC地址对应的表项也会被刷新,该表项的老化计时器将被复位并重新开始倒计时。
- 交换机缺省的动态MAC地址表项老化时间为300s(HW),在系统视图下执行mac-address aging-time命令(HW)可修改动态MAC表项的老化时间。但是在实际的网络中不建议随意修改该老化时间。
动态MAC地址学习数量
问题背景
- 交换机MAC地址表的容量是有限的,
- 如果网络中存在MAC地址泛洪攻击时,交换机的MAC地址表可能会瞬间被大量垃圾MAC地址表项填满,在很短的时间内,MAC
地址表项资源可能就会被耗尽,因此当交换机收到合法的数据帧时,就无法再进行MAC地址学习了,数据帧的转发必将产生问题。
解决方法
- 可以在交换机特定端口上限制MAC地址学习数量,解决上述问题。
- 当交换机某个端口MAC地址数量达到所设的上限时,该端口将不再学习MAC地址。(网络发生Mac地址泛洪时,一般指的的某个端口或许某些端口收到大量未知单播、组播或者广播报文,如果在受到Mac地址攻击的端口上配置限制MAC地址学习数量,可以避免该端口无限制的学习Mac地址,减少Mac地址表项资源的浪费,为交换机的其他端口学习合法数据帧的Mac地址表项预留了资源)
- 在特定接口的配置视图下,执行mac-limit maximum max-num命令(HW),可限制该接口的MAC地址学习数量。
- 在特定接口的配置视图下,执行mac-limit action { discard | forward}命令(HW),可配置当MAC地址数量达到限制后,交换机对数据帧执行的操作:
(1)当指定的action为discard时,在MAC地址表项数量达到限制后,若该接口收到的数据帧的源MAC地址为新的MAC地址时,丢弃这些帧。此行为是缺省动作。
(2)当指定的action为forward时,在MAC地址表项数量达到限制后,若该接口收到的数据帧的源MAC地址为新的MAC地址时,转发这些帧,但是不记录MAC地址表项。 - 在特定接口的配置视图下,执行mac-limit alarm { disable | enable}命令(HW),可配置当MAC地址数量达到限制后是否进行告警:
(1)如果指定关键字是enable,则当MAC地址数量达到限制后进行告警,该行为是缺省动作。
(2)如果指定关键字是disable,则不告警。
静态MAC表项
问题背景——MAC地址漂移
- 交换机可以动态的学习MAC地址,但是在某种场景下是不可靠的。
- 在上图所示的网络拓扑中:
(1)若SW1的GE0/0/3接口连接一台PC,该PC以Server的MAC地址为源进行数据帧伪造,然后持续不断地向交换机发送这些非法的数据帧,
(2)那么在SW1的MAC地址表中,关于该MAC地址的表项将会不断地在GEO/0/3及GEO/0/2之间来回出现,这种现象被称为“MAC地址漂移”。
(3)当交换机将这个MAC地址关联到GE0/0/3接口时,所有发往Server的数据帧将无法准确地到达目的地,与Server相关的业务势必会受到影响。
解决方法
-
通过为SW1配置静态MAC表项可以规避上述问题。
-
SW1的配置如下:
[SWl]mac-address staric 5489-987e-10d0 Gigabiet 0/0/2 vlan 20
,通过该命令可以配置一条静态Mac地址表项。 -
配置成功之后,可以通过命令查看Mac地址表项信息:
-
静态的Mac表项是永远不会被老化的,
-
并且其优先级比动态表项更高,这意味着当SW1再从GE0/0/3接口收到以Server的MAC地址为源的数据帧时,SW1会将这些数据帧丢弃。因此,通过设置静态MAC表项,可以确保与交换机固定连接的可信任节点的安全通信。