路由环导致网络丢包
这是一个实际发生的分析网络大量丢包原因的案例,用户的网络丢包现象很严重,给用户造成了很大的困扰,我们试图通过流量分析的手段来分析造成网络丢包的原因。
网络环境
用户的网络是一个覆盖全省的网络环境,包括省中心局域网和跨地市的广域网构成,并同全国的广域网络相连。网络拓扑如下:
用户网络环境图
网络异常现象描述
该网络丢包现象严重,如果通过省局域网向地市网络或全国网络发包,每发出 10 个 PING 包将只能收到 7 个 REPLY 包,丢包率在 30% 左右,这样,网络丢报对一些网络应用运行产生很大的影响,应用运行缓慢,甚至有些应用无法正常运行。
在此期间,网络设备的运行没有发现异常,局域网和广域网的物理链路也未发现异常。
网络丢包分析手段
造成网络丢包可能的原因很多,包括链路层原因和网络层问题,而网络拥塞也是造成网络丢包非常可能的原因。为了分析是否是由于网络拥塞引起的网络丢包,我们采用流量分析的手段进行分析定位。
找出产生网络流量最大的主机
当网络出现拥塞时,我们需要对造成拥塞的原因进行分析,一般首先我们先分析产生流量最大的主机,我们利用 Sniffer 的 Host Table 功能,将该网络所有计算机产生的网络流量按照发出数据包的包数多少进行排序,结果如下图。
Host Table分析每台主机到流量
从图 3-14 中我们看到, IP 地址为 10.22.0.25 的主机发出数据包最多,远远超过了其他主机,相应产生的流量也最大,该主机向网络中大量发送数据是造成网络拥塞的重要原因
我们对省局域网交换机到二级网路由器链路的网络流量进行了监控,其中二级网路由器的局域网络接口为10M,我们在局域网交换机上设置镜像口(SPANPORT),将该链路流量镜像到一个百兆网络接口上,并用Sniffer协议分析仪接入该镜像口,监控分析该链路的网络流量来确定是否存在流量异常现象。
网络流量分析过程
1. 网络总体流量监控
我们首先通过Sniffer Pro的History Samples(历史抽样)功能监控该镜像链路上的网络利用率状况,我们得到如下结果:
该链路到利用率情况
该链路每秒钟实际传输数字
从以上的监控结果中我们可以看到,在大约每 40 秒的周期内,该链路中的网络流量会出现15秒的峰值,而且非常规律,峰值流量大约为20Mb/s,考虑到路由器同交换机的接口为 10Mb/s (全双工工作时为 20Mb/s ),则我们看到这时的网络利用率为100%!
通过 Sniffer 对该链路流量进行监控分析,我们很直观的可以看到该链路出现周期性的网络拥塞,而这个周期和网络的丢包时间规律非常吻合,我们可以非常肯定的认定,这种流量的异常峰值是导致网络中大量的丢包的重要原因。
分析这台主机的网络流量
确定该主机大量发送流量是造成网络拥塞的主要原因后,我们需要进一步对该主机的流量进行分析,也就是对他在网络中正在做什么进行分析,可以称为对他的网络行为进行分析。
首先我们分析该主机的网络流量流向,也就是分析它在向谁发包,我们利用Sniffer 的 Matrix 功能来监控。
主机的会话
通过Sniffer的Matrix,我们发现IP地址为10.22.0.25的主机发出的数据包很分散,我们调查了一下,发现IP地址为10.22.0.25的主机为该网络的网络管理系统主机,而它发包的对象是该网络中地市级路由器的IP地址,也就是说网络的网管主机向地市路由器发出大量的网络包,导致网络流量异常并导致网络大量丢包,使网络处于不稳定状态。
在发现这个问题后,我们将该网管主机的网络连接解除,发现网络马上恢复到了正常状态,不在有丢包现象发生,看起来这个网络的问题完全是由这台网管主机引起的一样,但这种现象非常难以理解,为什么网管主机会造成网络问题呢。
我们利用Sniffer的Decode功能将捕获到的网络流量解码,来分析网管主机发出的数据包的内容,看看到底它发出了什么样的数据包,从而进行进一步的网络行为分析。
解码分析其发送到网络流量
我们通过Sniffer的Decode发现这台网络主机向网络中地市路由器发送大量的ICMP Echo数据包,也就是Ping包,我们对其向10.22.127.246发送的ICMP Echo包进行分析,发现了奇怪的现象。
我们对我们捕获的由 10.22.0.25 向 10.22.127.246 发送的 ICMP Echo 包其中相邻的数据包进行解码分析,图3-16为其发出的第739个数据包,图3-17为其发出的第740个数据包,我们发现这两个包的IP Identification是一样的,都是 15633 ,每个 IP 包都会有一个特定的 Identification 来标志其唯一性,这说明我们捕获到的这两个数据包其实是同一个IP包。
路由器分析之解码分析
而捕获到的这个数据包的Time to live也就是TTL值一个为251,另一个为250,TTL为IP包的生存时间,每经过一个路由处理,TTL值就会被减一,直至到0后被路由器丢掉。
我们看到其他的数据包也是同样的情况,这个 IP ID 为 15663 的数据包不断在网络中出现,直到TTL值减到0,这种现象清楚的表明,网络里存在着路由环,发向10.22.127.246的数据包是在路由器间不断的互相传递,最终被丢掉,这种现象也可以称为路由乒乓现象,出现路由环后,一个数据包将重复在网络中传送,而且瞬时流量会异常的大,造成网络异常,这正和该网络的网络异常现象相吻合。
为什么会出现路由环呢,我们对其网络进行了详细的了解,发现其在路由器中设置了大量的静态路由,其路由设置如图3-18所示。
从图 3-18中我们可以看出,如果二级网路由器同地市网络路由器之间的DDN网络连接一旦中断,二级网路由器中所设的指向地市网络路由器的静态路由就会由于端口状态问题而无效,而其到各地市网段的路由指向就会采用缺省路由指向而指回省局域网交换机,这样路由的乒乓现象就形成了。
事实上当时的地市网络并未调通,但网络的路由都已经设置完成了,同时各地市路由器的 IP 地址已经添加到了网管系统中,网管系统在固定的时间间隔内向这些路由器发出ICMP包,验证这些路由器是否能够访问到,而这些ICMP包却在省局域网交换机和二级网路由器间被放大形成乒乓现象,造成网络丢包现象严重。