概述

我们在上一篇文章中介绍了MAC地址学习机制,我们知道交换机收到任何一个报文,都会做如下两个动作:




怎么用wireshark查交换机有没有广播风暴_泛洪

接收到的报文



  • 动作1:取出源MAC地址,查找MAC地址表,看是否已经存在这个MAC地址对应的表项,如果没有,则添加,否则会刷新表项;
  • 动作2:取出目的MAC地址(单播),查找MAC地址表,看是否已经存在这个MAC地址对应的表项,如果有,则只从特定的接口发送出去,否则会泛洪。

从上面描述可以看出,交换机只要收到报文就会添加或者刷新MAC地址表,但是我们有没有想过,已经学习到的MAC地址会不会一直存放在交换机中呢?




怎么用wireshark查交换机有没有广播风暴_组网_02

MAC地址表



答案是肯定是否定的!因为不管交换机性能有多强,它的MAC地址表项总是有限的,如果一直存放在MAC地址表中,总有一天会达到它的最大规格,这样就会出现流量溢出现象,发送给新设备的流量都会被泛洪。

那交换机什么时候清除已经学习到的MAC地址表项,有没有什么规律呢?答案是肯定的,交换机使用MAC地址老化进制来确保上面的情况不会发生。

我们下面还是以一个例子来阐述MAC地址老化机制!

MAC地址老化机制

原理

当交换机把MAC地址添加进MAC地址表以后,就会对这个MAC启用一个定时器,如果定时器达到最大值,交换机就会把这个MAC地址从MAC地址表中清除,这个定时器就称为老化时间(aging time);

市场上几乎所有交换机厂商的默认的老化时间都为300秒,这个时间是经验值,在效率和流量之间做了平衡。




怎么用wireshark查交换机有没有广播风暴_交换机有mac地址吗_03

默认老化时间



对于特定的MAC,交换机每收到一个包含这个MAC的报文,就会把定时器进行重置。这个对于交换机也是不小的负担,例如1G端口以最大速率来接收报文,则交换机每秒最多要检测148.8万次,真够累的:)

拓扑




怎么用wireshark查交换机有没有广播风暴_组网_04


  • PC1和PC2配置在相同的网段
  • 和PC相连的交换机接口,配置在同一个VLAN 10里

配置

PC1的配置


怎么用wireshark查交换机有没有广播风暴_组网_05

PC1配置


PC2的配置


怎么用wireshark查交换机有没有广播风暴_泛洪_06

PC2配置


交换机的配置


怎么用wireshark查交换机有没有广播风暴_交换机有mac地址吗_07

交换机配置


原理概述

当PC1访问PC2时,发送报文的源MAC是PC1的MAC,目的MAC是PC2的MAC;


怎么用wireshark查交换机有没有广播风暴_泛洪_08

PC1发送报文


此时交换机就会在MAC地址表中记录PC1和PC2的MAC:


怎么用wireshark查交换机有没有广播风暴_单播_09

MAC地址表


此时查看MAC地址老化时间,发现是默认的300秒:


怎么用wireshark查交换机有没有广播风暴_单播_10

默认300秒


如果此后PC1和PC2一直不向外发送数据,则过了300秒以后,MAC地址就会被清空:


怎么用wireshark查交换机有没有广播风暴_交换机有mac地址吗_11

MAC地址表被清空


修改默认的MAC地址老化时间

在我们日常测试中,300秒的时间太长了,等5分钟对我们是极大的浪费,所以我们经常会修改这个老化时间,例如修改为30秒,修改命令如下:


怎么用wireshark查交换机有没有广播风暴_泛洪_12

修改老化时间命令


查看配置结果:


怎么用wireshark查交换机有没有广播风暴_组网_13

查看修改以后的时间


从上面的命令中, 我们发现还可以通过把老化时间设置为0来禁用MAC地址老化,这样学习到的MAC地址会一直存在于交换机中,直到手工被清除或者交换机重启。

不过我们要注意,在实际组网中,老化时间保持默认即可,不能设置的太小,否则网络中会有大量的未知单播报文。

总结

通过上面的描述,我们可以得出如下的结论:

  • 对于动态学习到的MAC地址,如果没有被更新,交换机只会保存一段时间(老化时间),就会清除它们;
  • 交换机每收到一个报文,就会根据源MAC查找MAC地址表,添加或者更新源MAC对应的表项;
  • 交换机默认的老化时间是300秒,但是可以修改,但不建议。

看完上面的文章,各位对应MAC地址老化机制是否了解了呢?如果还有疑问,欢迎留言讨论!也非常欢迎关注我,一起探讨网络问题!