分析演示:静态路由和CEF的方式导致HSRP接管故障后丢失通信

简介:

分析目标

静态路由的问题导致HSRP接管故障后丢失通信

分析静态路由造成的流量接管问题

3 CEF的模式导致有些主机丢包,有些主机正常的原因

演示环境: 1所示的演示环境

wKiom1PW-JfTXyUiAAEz3cU58sU445.jpg

背景说明:首先实施路由器R1R2R3的静态路由配置,具体配置如下所示,不需要在路由器R1R2去配置,相互通过彼此到30.30.30.0的路由,让它们都通过R3到达30.30.30.0。然后去实施HSRP冗余组,要求R1为活动路由器,然后测试和分析如果R1E1/0接口故障后,R2是否能成功接管HSRP冗余组中活动路由器的角色,流量是否能从R1切换到R2,再到达30.30.30.0,如果出现问题请分析原因。

 

路由器R1上到30.30.30.0的静态路由配置:

R1(config)#ip route 30.30.30.0255.255.255.0 192.168.1.3

R1(config)#ip route 30.30.30.0255.255.255.0 192.168.4.3

 

路由器R2上到30.30.30.0的静态路由配置:

R2(config)#ip route 30.30.30.0255.255.255.0 192.168.2.3

 

路由器R3上到172.16.1.0的静态路由配置:

R3(config)#ip route 172.16.1.0255.255.255.0 192.168.1.1

R3(config)#ip route 172.16.1.0255.255.255.0 192.168.4.1

R3(config)#iproute 172.16.1.0 255.255.255.0 192.168.2.2

 

 

演示步骤:

第一步:为路由器R1R2配置HSRP冗余组具体配置如下所示:

 

路由器R1HSRP配置:

R1(config)#intee1/0

R1(config-if)#standby 1 ip 172.16.1.254 

R1(config-if)#standby 1 priority 110  *配置优先级使R1成为活动路由器

R1(config-if)#standby 1 preempt * 配置抢占功能

R1(config-if)#exit

 

路由器R2HSRP配置:

R2(config)#intee1/0

R2(config-if)#standby 1 ip 172.16.1.254

R2(config-if)#standby 1 preempt

R2(config-if)#exit

 

注意:R2为什么不需要配置优先级?因为背景要求R1成为活动路由器,并将优先级配置为110,而R2使用默认的优先级100,所以R2不需配置优先级,这样就可以保证R1成为HSRP组中的活动路由器。

 

完成上述配置后,可以分别在R1R2上使用show standby brief指令查看HSRP的角色信息,如23所示,如预期所评估的那样,R1成为HSRP组中的活动路由器,R2为备份路由器。然后此时,在172.16.1.0网络的主机上执行一次到30.30.30.1的路由跟踪,发现当前的路径是通过R1(活动路由器)进行转发的。如4所示。至此为止,为后面的故障分析完成了所需要的基础配置。

wKiom1PW-Ouw4EpzAAJWz3NzCb0254.jpg


第二步:此时,如果R1E1/0接口(启动HSRP功能的接口),发生网络故障或者是被关闭,HSRP组会正常收敛吗?路由器R2会接管R1活动路由器的角色吗?如果发生有些主机能正常收敛,有些主机确不能,这是为什么?

   

制造R1E1/0故障:

R1(config)#intee1/0

R1(config-if)#shutdown

R1(config-if)#exit

   

    当制造R1E1/0接口故障时(手工关闭该接口),事实上网络上有一部分主机,对的错只是一部分主机,出现如5所示的现象,流量中断,丢包;而另一部分主机却可以连接通信,这是什么原因所致呢?下面开始进行详细的分析。


wKioL1PW-kOTqcU2AAG23pdKQnI574.jpg

按照一般思路:路由器R1E1/0(启动HSRP)的接口故障,R2应该快速收敛,接替活动路由器的角色,而且R1E1/0接口那是启动HSRP的接口,属于HSRP的冗余的组内接口,按常理这种收敛应该是最快的,可现在为什么会出现这样的情况?

首先需要确定:R1E1/0接口故障后,R2是否能顺利接管,可以通过在路由器R2上执行show standby brief指令查看HSRP的角色信息,然后再到主机上跟踪一次到30.30.30.1的所有路径,会发现,R2是成功的接管了R1的活动路由器角色,如6所示,为什么这样讲呢?从跟踪的结果可以看出,主机到30.30.30.1的流量是通过R2(172.16.1.2)在转发,所以HSRP冗余组中的R2R1故障后,成功的接管R1活动路由器这个角色是没有问题的,只是流量到达R2(172.16.1.2)后才产生的丢包,所以至此为止,不用再去思考HSRP的状态切换,因为它很正常。

然后需要思考的是:为什么流量到达R2(172.16.1.2)后丢包,难到是R2没有到30.30.30.1的可达性路由?经过认真思索后,可以肯定的讲,不是这个原因,理由可以通过两方面的取证来分析:一、从根据的结果上来分析,是Request time out(请求超时),根据笔者以前所著的《思科CCNA认证详解与实验指南(200-120)》对ICMP的分解,所谓Request time out(请求超时)一般发生在数据包可以从信源(源主机)成功的发送到信宿(目标主机),只是目标主机不能返回数据包给源主机,而源主机一直等待,以至于超时。二、在本实验前面的背景说明中就可以看出,在R2上是成功的配置了到30.30.30.0的静态路由的,所以综合上述两个理由,排障人员有理由怀疑是R330.30.30.1)返回给172.16.1.0网络主机的流量出现问题。


wKioL1PW-nHynV_FAAGM1nfXLVE339.jpg

为了进一步确定怀疑的问题,需要在R3上对返回172.16.1.0的数据流量的路径进行取证:

     7所示,在路由器R3上执行可扩展的路由跟踪指令,跟踪的目标是172.168.1.100;以源IP地址30.30.30.1发起路由跟踪。不难发现,跟踪的事实是:当前R3以源30.30.30.1发送数据包到172.16.1.1.100,它正在通过三条路径做发送,这三和路径的下一跳分别是192.168.1.1192.168.2.2192.168.4.1,可以看到只有通过下一跳192.168.2.2的数据包能成功的到达172.16.1.100当数据通过下一跳192.168.1.1192.168.4.1时出现了问题,现在可以确定怀疑的问题了,那么接下来要做的分析工作就是分析这个问题是如何产生的。

wKioL1PW-qWgeLi3AAI2aMvgozI455.jpg


确定故障问题,发析问题的产生原由:现在确定的问题是当数据通过下一跳192.168.1.1192.168.4.1时出现了问题,产生这个故障的原因是:路由器R1E1/0接口故障,并不会影响R1E1/1S2/0,更不至于影响R3E1/0S2/0链路,所以R3E1/0S2/0接口状态为up ,那么R3路由表如8所示,具备三条路径到172.16.1.0。默认情况下路由器R3会使用使用这三条链路来完成对172.16.1.0数据转发的负载均衡,如9所示,只要有数据通过下一跳192.168.4.1192.168.1.1转发,那就必不可达,虽然数据包能到达R1上,但是R1的内侧接口E1/0是故障的,故不能转发到172.16.1.100,这会造成路由黑洞,唯一可达的就是通过下一跳192.168.2.2转发。可以更直白的讲:“如果同时从R3上发3个包到172.16.1.100,那么只有一个包能到达,另外两个包必丢弃,也就是“通一断二”的现象。

 

此时用户可能产生一个疑问(一些主机丢包,一些主机不丢包):

     在自己做测试时,并不是“通一断二”的现象。而是有些主机全丢包,有些主机不丢包,这是为什么?这是因为R3默认是启动了ip cef功能,如果有三条路径到同一目标172.16.1.0,那么路由器默认将基于不同的目标来进行负载均衡,以三台不同的目标主机172.16.1.100172.16.1.101172.16.1.102为例,其行为是:假设到172.16.1.100为第一个目标主机,那么所有到这一个目标的数据都会通过同一个路径转发,如果此时通过下一跳为192.168.1.1转发,结果是必丢包,而且全丢弃;同理172.16.1.101为第二个目标主机,那么所有到这第二个目标的数据都会通过同一个路径转发,如果此时通过下一跳为192.168.4.1转发,结果是必丢包,而且全丢弃;如果172.16.1.102为第三个目标主机,那么所有到这第三个目标的数据都会通过同一个路径转发,如果此时通过下一跳为192.168.2.2转发,结果是不丢包,全部可达。再次强调:造成这种现像的是CEF通过不同目标进行负载均衡的原则所造成的,事实上,你的“整个网络”在遵守“通一断二”的现象,只有三分之一的主机可达。这种论断正确吗?如果希望在同一个目标主机上看到“通一断二”的现象,该怎么办?

wKioL1PW-v2R_qFaAAMKy5aeti8437.jpg

wKiom1PW-ebBKUdBAAGwRbTCWtk932.jpg

如何在单一主机上看到“通一断二”的现象

只要在路由器R3(config)#no ip cef暂时关闭ip cef,那么R3就不在执行基于不同目标的负载均衡,而是将数据包平均的通过三条路径转发,此时在单一主机上做连继的ping,就可以看到如10所示的“通一断二”的现象。

wKioL1PW-0LTFlQtAAF8X7e8S7c978.jpg

在这个环境中的其它注意事项:

如果现在到路由器R1E1/0接口恢复,然后其它配置保持本实验前面的配置不变,现在请问:如果R1E1/1S2/0接口故障,HSRP冗余组中的R2能成为活动路由器,然后接管R1的转发工作吗?

不能,因为整个网络使用的静态路由,而路由器R1R2之间没有相关的静态路由,并且在R1上没有配置接口跟踪功能,所以R1E1/1S2/0故障后,R2无法成为活动路由器,接管R1的故障。



本文转自 kingsir827 51CTO博客,原文链接:http://blog.51cto.com/7658423/1531880,如需转载请自行联系原作者

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
7月前
|
网络架构
交换机与路由器技术-23-OSPF链路状态信息同步过程
交换机与路由器技术-23-OSPF链路状态信息同步过程
32 0
|
9月前
|
缓存 网络协议
通过ARP协议实验,设置错误的IP和MAC地址的静态绑定项目,会使得两台主机之间无法通信,而删除该项目后可恢复通信,分析其原因。
通过ARP协议实验,设置错误的IP和MAC地址的静态绑定项目,会使得两台主机之间无法通信,而删除该项目后可恢复通信,分析其原因。
137 0
|
负载均衡 监控 网络协议
边界网关协议 - 段路由的链路状态 (BGP-LS) 扩展
段路由 (Segment Routing,SR) 允许通过将路径编码为称为“段”的拓扑子路径序列来灵活定义端到端路径。这些段由路由协议通告,例如 IGP 拓扑中的链路状态路由协议(IS-IS、OSPFv2 和 OSPFv3)。
1303 0
边界网关协议 - 段路由的链路状态 (BGP-LS) 扩展
|
缓存 网络协议 网络架构
路由器的原理及配置
1.数据包经过路由器,mac地址需要重新封装 2.路由器通过路由表转发数据包,交换机通过mac地址表转发数据帧 3.静态路由需要双向逐跳配置 4.默认路由可简化末端路由器路由表配置,简洁高效 5.接通路由后ping为什么会丢包两次:
路由器的原理及配置
|
虚拟化
问题解决:网络自动失败 您的网络可能并未使用dhcp协议
问题解决:网络自动失败 您的网络可能并未使用dhcp协议
219 0
问题解决:网络自动失败 您的网络可能并未使用dhcp协议
|
网络协议 安全 算法
虚拟路由冗余协议VRRP原理介绍
虚拟路由冗余协议VRRP原理介绍
193 0
虚拟路由冗余协议VRRP原理介绍
|
缓存
STP的端口迁移以及P/A机制
这个主要讲STP的端口迁移以及P/A机制
1187 0

热门文章

最新文章