未知单播,即设备MAC表中没有该单播帧的目的MAC条目。
未知单播流量由未知目标MAC地址的单播数据包组成。缺省情况下,交换机将这些穿越VLAN的单播数据包泛洪到所有属于该VLAN成员的接口。转发此类型的流量可能会产生不必要的流量,导致网络性能不佳甚至完全丧失网络服务。这种数据包洪水被称为流量风暴。
为了防止流量风暴,可以通过配置特定VLAN或所有VLAN来将所有未知单播数据流转发到特定接口,从而禁止未知单播数据包泛洪到所有VLAN接口。可以配置多个VLAN,将未知单播报文转发到同一个接口,也可以为不同的VLAN配置不同的接口。这将未知的单播流量通过VLAN传送到特定接口,而不是泛洪所有接口。
产生的原因
在交换机工作原理中,当交换机起动时,MAC地址表是空的,所以如果此时A主机发送一个帧给主机B,那么当交换机接受此帧的时候,查看源地址(主机A),并将它添加到MAC地址表中,但是交换机并不知道主机B在哪个端口上(MAC地址表中没有主机B的MAC地址),所以这个帧就是 未知单播帧 。交换机会泛洪这个帧。
当交换机不知道目的MAC地址所在端口,则把帧泛洪到所有的端口上,有些端口只有特定的MAC,且不会改变,他们是没必要接受到这些泛洪流量。另外如果有非对称路由,也会产生单播泛洪。
而华为交换机,一般有对未知单播的流量抑制功能。
如果端口通过命令unicast-suppression配置了对未知单播的流量抑制功能,或者通过命令storm-control配置了对未知单播的风暴控制功能,该端口MAC漂移将不会触发流量抑制功能。
思科配置:
JS-CAN-SW(config-if)#switchport block unicast
开启阻塞单播泛洪,需要注意的是,假如PC的ARP表里的服务器条目未过期,但交换机上的MAC条目老化过期了,这时PC发往服务器的单播数据帧到了交换机会变成未知单播帧,并泛洪出去,这样PC与服务器的连接就会超时并无法再联系上,只能等待到PC的ARP表条目老化,再发出ARP请求才能在恢复通讯。
因此,开启这项功能必须保证PC的ARP老化时间比交换机的MAC老化时间要小,或者交换机通过手工指定或sticky学习到MAC地址,这后两者学习到的MAC是不会老化的。
WINDOWS的ARP刷新时间是120s,思科交换机的MAC老化时间默认是300s
以上方法,可能会出现过度整理的情况,就不能使用,只能用其他方法来减轻。
未知单播流量由未知目标MAC地址的单播数据包组成。缺省情况下,交换机将这些穿越VLAN的单播数据包泛洪到所有属于该VLAN成员的接口。转发此类型的流量可能会产生不必要的流量,导致网络性能不佳甚至完全丧失网络服务。这种数据包洪水被称为流量风暴。
为了防止流量风暴,可以通过配置特定VLAN或所有VLAN来将所有未知单播数据流转发到特定接口,从而禁止未知单播数据包泛洪到所有VLAN接口。可以配置多个VLAN,将未知单播报文转发到同一个接口,也可以为不同的VLAN配置不同的接口。这将未知的单播流量通过VLAN传送到特定接口,而不是泛洪所有接口。
产生的原因
在交换机工作原理中,当交换机起动时,MAC地址表是空的,所以如果此时A主机发送一个帧给主机B,那么当交换机接受此帧的时候,查看源地址(主机A),并将它添加到MAC地址表中,但是交换机并不知道主机B在哪个端口上(MAC地址表中没有主机B的MAC地址),所以这个帧就是 未知单播帧 。交换机会泛洪这个帧。
当交换机不知道目的MAC地址所在端口,则把帧泛洪到所有的端口上,有些端口只有特定的MAC,且不会改变,他们是没必要接受到这些泛洪流量。另外如果有非对称路由,也会产生单播泛洪。
而华为交换机,一般有对未知单播的流量抑制功能。
如果端口通过命令unicast-suppression配置了对未知单播的流量抑制功能,或者通过命令storm-control配置了对未知单播的风暴控制功能,该端口MAC漂移将不会触发流量抑制功能。
思科配置:
JS-CAN-SW(config-if)#switchport block unicast
开启阻塞单播泛洪,需要注意的是,假如PC的ARP表里的服务器条目未过期,但交换机上的MAC条目老化过期了,这时PC发往服务器的单播数据帧到了交换机会变成未知单播帧,并泛洪出去,这样PC与服务器的连接就会超时并无法再联系上,只能等待到PC的ARP表条目老化,再发出ARP请求才能在恢复通讯。
因此,开启这项功能必须保证PC的ARP老化时间比交换机的MAC老化时间要小,或者交换机通过手工指定或sticky学习到MAC地址,这后两者学习到的MAC是不会老化的。
WINDOWS的ARP刷新时间是120s,思科交换机的MAC老化时间默认是300s
以上方法,可能会出现过度整理的情况,就不能使用,只能用其他方法来减轻。
单播泛滥或未知的单播洪泛是一种可能的正常的设计转换(侧向)效应(如完全或耗尽MEM CAM表的MAC洪泛),并且在重负载和不正确的设计选择下可能成为生产风险。
那可以并应该通过减轻手段:
交换端口块单播或速率限制(UUFB / UUFRL);switchport block unicast or rate-limit (UUFB/UUFRL)
交通风暴控制;traffic storm control
避免不对称转发的可能性; avoid the possibilities of asymmetric forwarding
(asym路径)在网络设计;(asym routed paths) in nets by-design
调整CAM和ARP定时器以匹配;tune CAM and ARP timers to match
============================================
有些人建议未知单播泛洪的防护方法,可参考一下:
1、接口下storm-control
这个在防护广播或者组播中比较常见,很多人误以为可以用户防护单播泛洪,但是对于防护未知单播泛洪,这个命令是没有用的。这个命令只是去控制源主机单播往外去发,这时候源主机所在的交换机并无法分辨是未知单播还是正常单播,所以所有的单播都会去抑制,正常的流量也会受到影响,因此我们只能在目的主机所在的二层网络中想办法去抑制未知单播的泛洪。
2、汇聚交换机上trunk口vlan修剪
在汇聚交换机的trunk口上allow vlan XX,trunk上仅允许接入交换机上有的vlan通过,这样可以使得泛洪仅仅影响到拥有目的主机vlan的接入交换机,减小了影响范围,通过上面的实验测试中也确实可以达到效果。但是在虚拟化时代,基本所有的接入交换机上都会有整个二层的所有vlan信息,所以这种方式并无法在所有环境中适用。
3、Mac、arp表的aging time调整
在CAT-OS的交换机中,mac aging time是300s,arp的aging time为4h,而在NX-OS中是建议arp aging小于mac的agingtime的,N7K中默认的arp aging time为1500s,而mac的aging time为1800s。因此在CAT-OS中,是否可以调整arp aging time小于或等于mac aging time来避免未知单播的泛洪,并且这个值设置为多少较为合适,需要请思科评估一下。由于修改mac、arp的aging time是否会引起一些其他问题需要思科评估,所以需要非常谨慎,如果在没有其他解决方案的情况下可以考虑。
4、阻止未知单播泛洪
通过在汇聚交换机的所有的二层接口上配置switchport block unicast,来阻止未知单播在此二层中泛洪,通过上面的实验测试确实可以阻止未知单播泛洪,按照思科的说法这个是最佳实践。但是在一些特殊的网络中,有的时候是需要未知单播泛洪的存在的,所以使用这个方法的时候做好充分的测试和应急回退工作。