搞网络技术的人对泛洪这个概念应该不陌生,本质上是网络设备将从某个接口上收到的数据从除本接口之外的设备所有接口发送出去,之所以发生这样的情况是因为数据报文在网络设备转发表中无法找到与数据包目标地址一致的表项,此时就将数据包从所有接口发送出去,以期找到目标主机来接收数据包,可以理解为二层转发行为。有人对这种转发现象叫泛洪,也有人叫做洪泛,是一个意思。泛洪技术不需要网络设备维持网络的拓扑结构和相关路由表项,仅要求接收到信息的节点以广播方式转发数据包,然后级联设备传递下去。泛洪在数据中心网络中是一种常见现象,很多时候泛洪转发都是良性的,对网络无影响。以太网标准对网络设备的要求也是允许流量有短时间的泛洪,尤其是框式设备是不可避免的,只要在极短的时间内就结束泛洪,都是一种正常的网络现象。
从技术实现上来看,很容易将泛洪和流量广播混淆。其实,两者有着本质区别。广播报文的目的地址是全网用户,使用广播地址,在所有端口发送数据包,行为是主动的,可以理解为三层的行为,在很多协议的交互过程中都要用到广播。比如:ARP学习,当不知道目的IP地址对应的MAC地址时,就通过广播ARP报文来获取;DHCP协议获取地址,每次向DHCP服务器获取地址时,都要通过广播方式发出,等待DHCP服务器的回应,还有OSFP/BGP/ISIS的Hello报文,LLDP/STP/VRRP等协议的状态监测报文,虽然目的地址不是广播的,而是组播地址,其实也是采用广播的方式发送的。泛洪的目的地址不是广播地址,针对具体的单播地址,只是在网络设备上没有查找到转发表项,所以才有泛洪行为,这也是和以太网尽力去转发的宗旨相符的。广播本质就是要全网转发的,而泛洪是一种转发查找的结果,是一个被动产生的结果,我们当然希望网络中泛洪的流量越少越好。广播报文如果处理不好,容易占用过多网络带宽,甚至引起广播风暴,对网络业务造成严重影响,而泛洪报文如果处理不好,也会占用过多网络带宽,对网络业务造成影响,有时网络带宽虽没有被占满,过多的无用流量冲向了服务器,也会对服务器的转发性能造成影响,导致业务处理特别慢,直至业务中断。广播和泛洪,两者对网络的影响比较类同。
数据中心的网络是允许泛洪流量存在的,确切地说应该是做不到完全避免,尤其在转发表项建立之前,流量就是依靠泛洪来学习的,当学习到完整的转发表项之后,泛洪流量自然消失。在最新的网络技术中,比如VXLAN技术中,也是利用了泛洪模式进行地址学习,目的是为了学习VTEP和MAC的对应关系。当然,在EVPN环境中,节省掉泛洪的学习过程。数据中心的网络要具有一定的网络带宽冗余,避免流量出现短时的泛洪,将带宽打满,影响到正常流量的交互。数据中心的网络流量长时间的泛洪有两个来源:一是网络结构特殊或者网络设备出现问题,转发表项在网络设备上长时间学习不到,产生大量的流量泛洪;二是出现泛洪攻击,很多网络攻击方法也是利用泛洪的特征来实现的。比如:SYN泛洪攻击,是利用伪造的IP地址向被攻击端设备发出请求,而被攻击端设备发出的响应报文将永远发送不到目的地,被攻击端在等待关闭这个连接的过程中消耗了资源,如果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的;UDP泛洪攻击是攻击者发送大量的UDP包给服务器,服务器发送大量回复;ARP报文泛洪类似于UDP泛洪,同样是恶意用户发出大量的ARP报文,造成三层网络设备的ARP表项溢出,影响正常用户的转发。长时间的流量泛洪对网络的伤害是巨大的,消耗掉大量的网络带宽资源,让正常的网络业务无法转发,甚至导致整个数据中心的网络陷入瘫痪。
泛洪的现象产生的原因和攻击类型五花八门,每种情况的泛洪从技术上来讲都是有差别的,所以需要区别对待。正因为这样,对于不同的攻击类型,也是有相应的预防措施的。为了抵御泛洪攻击的入侵,数据中心网络可以针对不同类型的泛洪制定相应预防措施。比较有效的方式就是提升网络设备的防攻击性能,同时增加网络过滤,根据RFC 2827里关于过滤应用的描述,部署针对输入源的过滤,ISP拒绝将一个源IP地址不属于其来源子网的数据包进行更远路由。还可以增加专用防火墙,对各种网络协议攻击进行过滤,保护后面的网络设备免受干扰。还有,将广播域缩小,比如采用全三层转发互连的方式,避免产生广播域,这样即便有泛洪产生,由于广播域很小,对网络带宽的占用也不会很严重。具体在抑制泛洪方面,已经有不少的技术实现可参考,在此不再逐一详述。
我们要理性看待泛洪这个现象,虽然泛洪的现象给数据中心造成的危害是巨大的,但也不要对泛洪谈虎色变,只有产生持续性的流量泛洪才能对网络业务带来实质性影响。当一个数据中心的网络在没有增加新业务的情况下,带宽利用率却持续下降时,就要注意是否有长时间的流量泛洪发生。当一个数据中心同一个广播域中的服务器访问速度都开始变慢时,也要查看是否有泛洪发生,判断是否发生了泛洪方法也很简单,只要将笔记本通过网线接入到网络设备的任意端口上,进行抓包,如果转发到了大量的持续性的,并非转发到笔记本连接端口的报文,就证明了流量泛洪的发生,这时就要根据泛洪的产生原因,采取相应的解决措施,尽快消除流量泛洪,减轻网络带宽的占用。