问题概要:很多时候客户遇到设备的cpu使用率比较高,而且经过判断是由于设备本身在发icmp redirect报文导致的,那么问题来了,设备什么时候会发icmp redirect报文呢,接下来给大家分享一下
ICMP redirect 包是如何工作的:路由器通过ICMP redirect message来告知链路上的主机对于某个特定destination的一个更优的路由,例如如下拓扑,R1和R2被连接到和主机H相同的以太网段,主机H的默认网关配置在R1上,主机H发送一个包到R1为了到达远端的目的主机10.1.1.1,路由器R1收到这个包,接下来会去查表,发现到达目的主机10.1.1.1的下一跳是R2,那么R1必须从从他收到该包的相同以太网接口转发出去这个包,R1在转发这个包的同时也会发送一个icmp redirect message给源主机H,目的是告诉源主机H到达目的主机10.1.1.1的最佳路径是首先经过R2而不是R1,接下来主机H收到这个redirect报文之后,接下来它便会把后续的到达目的主机10.1.1.1的包直接发往R2而不是R1.
从R1的debug信息可以看到如下的icmp redirect 信息:
R1#
debug ip icmpICMP packet debugging is on*Mar 18 06:28:54: ICMP:
redirect sent to 172.16.1.1 for dest 10.1.1.1, use gw 172.16.1.200R1#
R1发送一个redirect信息到主机H,目的是使主机H在发送去往目的主机10.1.1.1的报文时,使用R2作为网关,而不是主机H上的R1,这点比较有意识,这就是我们不能单纯从主机上看配置的网关是谁就贸然确定包是发往的哪个设备
设备什么时候发送icmp redirect报文设备会在满足下面所有条件的时候发送icmp 报文:
1、一个包进来的接口和这个包从该设备出去的接口是同一个接口
2、源ip的网段或者子网和该路由的下一跳网络是同一网段或者同一子网
3、该数据包不是从该设备本身发出的,而是途径该设备
4、设备上配置了发送icmp redirect(一般来说所有的接口都是默认发送的,可以给它disable掉这个feature)
解决的办法:1、在接口上通过
no ip redirects 可以让设备不发redirect包2、从网络设计上避免这种现象