AR1220路由器配置静态路由出现环路故障

发布时间:  2014-06-24 浏览次数:  1228 下载次数:  56
问题描述
1.1 网络拓扑图


某公司总部与多个分部使用专线进行连接,具体组网拓扑及路由如上图所示,总部和分部之间每天都用大量的业务进行互访,4M专线线路带宽接近饱和。总部和分部路由器互连地址为10.0.0.1和10.0.0.2。总部网络的业务网段地址为172.16.0.0/24,网关是172.16.0.1,某个分部路由器下挂了两个部门,部门A的业务网关是192.168.0.1,部门B的业务网关为192.16.1.1。全网配置静态路由使总部业务网段和分部业务网段互通,具体路由设置如上图所示。
1.2 问题描述
某一天,部门A的所有PC都无法上网。经过现场排查发现是部门A所连的二层交换机的上行链路网线损坏,部门A所连的二层交换机与分部路由器的链路物理损坏。具体故障如下图:

部门A不能上网之后,部门B的员工反映上网开始变慢,平时的应用现在操作起来非常慢,有时候得等很长时间才有反应,在部门B使用PC来ping总部的业务网段地址时延比以前要大。
告警信息
处理过程
由于在路由器上看到接口统计的报文数量要远大于实际发出的ping报文的数量,所以很容易让人怀疑到网络中存在环路,为了进一步验证这个可能性,使用总部地址为172.16.0.254的测试PC对部门A的192.168.0.254地址进行tracert操作。结果如下图:


从上图的信息显示来看,目的地址为192.168.0.254的报文在总部路由器和分部路由器之间存在环路,环路形成的转发地址分别是10.0.0.2和10.0.0.1。

那我们来看一下路由器上的路由表,总部路由器路由表如下:


从上边的总部路由表信息我们可以看到,目标地址为192.168.0.254的报文匹配到红圈标注的路由,下一跳地址为10.0.0.2 。下一跳地址是符合预期的。
那我们来看一下路由器上的路由表,分部路由器路由表如下:

从上边的分部路由表信息我们可以看到,目标地址为192.168.0.254的报文匹配到红圈标注的默认路由,下一跳地址为10.0.0.1。这一点就是产生路由环路的原因。
结论:由于原来部门A业务正常的时候,分部路由器上会产生到192.168.0.0/24网段的直连路由,具体信息如下图:

这样目的地址为192.168.0.254 的报文到达分部路由器上的时候,直接会走直连路由找到目的PC,完成正常转发。但是当部门A业务中断的时候,部门A所连的二层交换机与分部路由器相连的线路物理损坏,所以连接到部门A的分部路由器接口就处于物理和协议都是down的状态,这样,关于192.168.0.0/24的直连路由也就会消失。这样,目的地址为192.168.0.254的报文找不到具体路由,所以就会匹配默认路由,下一跳指向10.0.0.1,这样就会和总部路由器形成路由环路。具体流量信息如下图:


根因
1.3 问题分析

在整个拓扑图中,按道理说原来4M的专线由部门A和部门B共同使用,现在部门A的业务中断了,4M的专线由部门B独享,从这个角度来分析,部门B访问总部应该比原来快才对,但是现在情况更好相反。这是为什么呢?具体分析如下图:

部门A业务中断前网络流量模型:






部门A业务中断之后网络流量模型:

1.4 定位过程
基于以上疑问,使用模拟器对客户现网进行模拟并分析定位。组网图如下:


总部业务的测试PC地址设定为172.16.0.254,部门A业务测试PC地址设定为192.168.0.254,部门B业务测试PC的地址设定为192.168.1.254。在部门A业务中断的情况下,对分部路由器上行的接口(ip地址为10.0.0.2的g0/0/0接口)的包统计信息进行查看,查看之前先使用reset counters interface g0/0/0的命令分部路由器的上行接口g0/0/0统计信息清空。

测试过程:
1)为了定位部门B与总部业务通信变慢的原因,使用接口查看命令查看分部路由器上行接口的端口统计信息。看为什么部门B访问总部的业务会变慢。首先使用部门B地址为192.168.1.1的PC来对总部测试PC 172.16.0.254的PC进行ping测试,模拟部门B访问总部业务网段。首先ping 10个包,然后看分部路由器上行口g0/0/0的接口统计信息,部门B的PC信息如下:



在分部路由器的上行口g0/0/0信息统计如下:

测试结果:从上诉测试过程和结果来看,在部门A业务中断的时候,部门B访问总部业务的时候,流量是正常的。那么究竟是什么原因会导致部门B访问总部业务变慢呢,我们接着继续进行定位测试。
2)使用总部地址为172.16.0.254的测试PC ping部门B的测试PC 192.168.1.254,模拟总部访问部门B的流量。也是ping 10个包,然后看分部路由器上行口g0/0/0的接口统计信息,总部测试的PC信息如下:










在分部路由器的上行口g0/0/0信息统计如下:


测试结果:从上诉测试过程和结果来看,在部门A业务中断的时候,总部业务部门B的时候,流量也是正常的。我们接着继续进行定位测试。
3)使用总部地址为172.16.0.254的测试PC ping部门A的测试PC 192.168.0.254,用来模拟总部业务访问部门A的业务流量。因为即使部门A业务中断了,但是总部的业务还是会像平时部门A业务没有中断的时候发起很多业务请求。因为总部的很多应用并不知道业务A已经中断,所以仍然会向目的网段为部门A业务的IP地址段发起业务请求。

总部测试的PC信息如下:

在分部路由器的上行口g0/0/0信息统计如下:


测试结果:从上诉测试过程和结果来看,在部门A业务中断的时候,总部业务访问部门A的时候,虽然总部只是ping了10个包,但是我们在路由器上看到统计的包个数竟然达到了640个。接口的报文的统计数量是实际ping包数量的64倍。这明显是有问题的,这就是导致部门B访问总部业务变慢的原因。那么我们来分析一下为什么会产生这种现象。
建议与总结
为了避免再次出现类似的问题,需要在分部路由器上配置黑洞路由来解决,目的就是当业务A网段的直连路由消失的时候,目的网段是A的报文不要匹配默认路由,而是匹配黑洞路由,报文丢弃。这样网络中就不会有路由环路,问题解决。
具体命令如下:
ip  route-static  192.168.0.0  24  NULL  0
ip  route-static  192.168.1.0  24  NULL  0

为了避免当业务B网段直连路由消失的时候,A部门也出现访问总部变慢的现象,所以也添加了一条对B网段的黑洞路由。由于静态路由的管理距离(华为设备为Preference 60)小于直连路由的管理距离(华为设备为Preference 0)。所以当业务A和B直连路由正常的时候,不会影响整个网络流量的正常转发。只有当某个直连路由消失的时候,黑洞路由才会生效。至此,该问题解决。

END