Internet Control Message Protocol (ICMP) 用于针对在路由数据包时遇到的错误与初始源通信,以及尝试流量控制。本文档讨论 ICMP 重定向以及网络中何时发生重定向。
需要了解有关 IP 协议簇的知识。
所有系列的 Cisco 路由器和 Cisco IOS® 软件版本都支持此功能。
有关文件规则的更多信息请参见“ Cisco技术提示规则”。
路由器使用 ICMP 重定向消息来通知数据链路上的主机:对于特定目标,有更好的路由可用。
例如,两个路由器 R1 和 R2 被连接到主机 H 所在的同一以太网段中。主机 H 的默认网关被配置为使用路由器 R1。主机 H 将数据包发送到路由器 R1,以到达远程分支机构主机 10.1.1.1 上的目标。路由器 R1 在查询其路由表后发现,到达主机 10.1.1.1 的下一跳是路由器 R2。现在,路由器 R1 必须将数据包在接收该数据包的同一个以太网接口上转发出去。路由器 R1 将数据包转发给路由器 R2,并向主机 H 发送了一条 ICMP 重定向消息。该消息通知主机,到达主机 10.1.1.1 的最佳路由是通过路由器 R2。主机 H 随后将所有要发送给主机 10.1.1.1 的后续数据包转发给路由器 R2。
如网络图中所示,此调试消息指示路由器 R1 将 ICMP 重定向消息发送给主机 H (172.16.1.1)。
R1# debug ip icmp ICMP 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.200 R1#
路由器 R1 (172.16.1.100) 向主机 H (172.16.1.1) 发送重定向,以便使用路由器 R2 (172.16.1.200) 作为网关来到达目的地 10.1.1.1。
Cisco 路由器在满足以下所有条件时发送 ICMP 重定向:
数据包进入路由器的接口与数据包被路由出的接口是同一个接口。
源 IP 地址的子网或网络与被路由的数据包的下一跳 IP 地址处于同一个子网或网络上。
数据报不是源路由的。
内核被配置为发送重定向。(默认情况下,Cisco 路由器发送 ICMP 重定向。接口子命令 no ip redirects 可用于禁用 ICMP 重定向。)
注意:如果接口上配置了热备份路由器协议(HSRP),则默认情况下会禁用ICMP重定向。在 Cisco IOS 软件版本 12.1(3)T 及更高版本中,允许在配置了 HSRP 的接口上启用 ICMP 重定向。有关详细信息,请参阅Hot Standby Router Protocol 特性和功能中的对 ICMP 重定向的 HSRP 支持部分。
例如,如果路由器在其某个接口上有两个 IP 地址:
interface ethernet 0 ip address 171.68.179.1 255.255.255.0 ip address 171.68.254.1 255.255.255.0 secondary
如果路由器收到从子网 171.68.179.0 中的主机发往子网 171.68.254.0 中的主机的数据包,路由器不会发送 ICMP 重定向,因为只满足了第一个条件,没有满足第二个条件。
路由器发送了重定向的原始数据包仍将被路由到正确的目标。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
10-Dec-2001 |
初始版本 |