一、命令汇总 1. set ip next-hop { ip-address [...ip-address] | recursive ip-address } 这条命令允许写多个下一跳IP,但这些IP必须是直连路由器的接口IP。如果定义了多个下一跳IP,则当第一个下一跳关联的本地出接口DOWN掉,则自动切换到下一个next-hop 命令中,recursive next-hop(递归下一跳)特性突破了传统下一跳必须是直连路由器下一跳接口IP的限制。Recursive next-hop可以不是直连网络,只要路由表中有相关的路由可达即可。一般如果recursive next-hop不可达,数据将交由路由处理(一般就被默认路由匹配走了)。 如果在一个route-map列表的同一个序列中同时使用ip next-hop及ip next-hop recursive,则ip next-hop 有效。如果ip next-hop 挂了,则启用ip next-hop recursive,如果ip next-hop recursive和ip next-hop 都挂了,则丢给路由表处理。注意:一个route-map序列,只允许配置一个ip next-hop recursive。 2. set ip next-hop verify-availability [ next-hop-address sequence track object ] 检测下一跳的可达性,默认是关闭的。 Sequence of next hops. The acceptable range is from 1 to 65535. 此条命令可以下列方式使用: · 在PBR环境下使用CDP检测下一跳IP可达性(不加后面的可选参数) 使用该特性可能会一定程度上降低设备性能,另外必须保证自己以及邻居路由器接口CDP都是开启的,最后过程交换及CEF都支持该特性,但dCEF不支持。 该特性借助设备的CDP表来判断下一跳的可达性, 如果本端开启了该特性,next-hop设备不支持CDP,则切换至下一个next-hop,如果没,则跳过PBR 如果本端没开启该特性,那么数据包要么被成功策略路由,要么永远无法正常路由出去(被丢弃) 如果仅仅想检测部分next-hop设备的可达性,则可以配置不同的route-map条目,来选择性的使用该特性(同一个route-map)。 · 结合object tracking来检测一个远端设备(或IP)的可达性 使用object tracking,PBR可以做的更加灵活,可依据ICMP、HTTP、路由表中某条路由的存在与否、接口的up/DOWN等来进行决策。 注意: 如若基于CDP的检测及基于object tracking的检测都应用了,则后者优先 3. set ip next-hop 与set ip default next-hop的区别比较简单,这里就不解析了 二 实验验证 2.1 set ip next-hop
GW的配置如下: access-list 1 permit any route-map PBR permit 10 match ip address 1 set ip next-hop 10.1.1.2 10.2.2.2 interface fast 1/0 ip policy route-map PBR !! GW并无其他关于路由的配置 实验现象: 1.当网络正常时,数据强制走ISP1,ping 100的远程网络数据到ISP1 2.当ISP1宕机时,GW连接ISP1的接口DOWN掉,则PC访问100的流量自动切换至ISP2 3.当ISP1宕机时,且GW检测不到时(也就是GW连接ISP1的接口没DOWN),PC访问100的流量仍然被扔给ISP1,这就断网了 补充: Set ip next-hop ip1 ip2 ip3,这个知识点已经没问题了吧?match住相关条件后,数据包首先被送到第一个next-hop ip address,如果这个ip地址所关联的直连接口DOWN了,则切换至下一个next-hop ip address,如此反复,可以配置多个next-hop。但是,如果直连的next-hop(对端路由器或其接口)自己挂了,而本地直连接口没感知到(如中间串了台switch),则无法自动切换,路由器仍然会一股脑的把数据丢给这个next-hop。 另外,如果配置的时候命令这么写的话: Set ip next-hop ip1 Set ip next-hop ip2 …… 则IOS会自动将命令变成Set ip next-hop ip1 ip2 …… 2.2 set ip next-hop verify-availability
GW的配置如下: access-list 1 permit any route-map PBR permit 10 match ip address 1 set ip next-hop 10.1.1.2 10.2.2.2 set ip next-hop verify-availability interface fast 1/0 ip policy route-map PBR !! GW并无其他关于路由的配置 !! ISP1、ISP2及GW都需开启CDP 实验现象: 1.当网络正常时,数据强制走ISP1,ping 100的远程网络数据到ISP1 2.当ISP1宕机时,且GW连接ISP1的接口DOWN掉,则PC访问100网络的数据切换至ISP2 3.当ISP1宕机时,且GW连接ISP1的接口没DOWN(如关闭ISP1的CDP),由于GW丢失了ISP1的CDP信息,因此仍未ISP1挂了,于是PC访问100网络的数据切换至ISP2,网络不断 2.3 set ip next-hop verify-availability基于object tracking
GW的配置如下: ip sla monitor responder ip sla monitor 1 type echo protocol ipIcmpEcho 10.1.1.2 source-ipaddr 10.1.1.1 frequency 10 exit ip sla monitor schedule 1 life forever start-time now track 1 rtr 1 reachability ip sla monitor 2 type echo protocol ipIcmpEcho 10.2.2.2 source-ipaddr 10.2.2.1 frequency 10 exit ip sla monitor schedule 2 life forever start-time now track 2 rtr 2 reachability access-list 1 permit any route-map PBR permit 10 match ip address 1 set ip next-hop verify-availability 10.1.1.2 10 track 1 set ip next-hop verify-availability 10.2.2.2 20 track 2 实验现象: 1.当网络正常时,数据强制走ISP1,ping 100的远程网络数据到ISP1 2.当ISP1故障,GW通过tracking感知到,于是数据切换至ISP2 3.回复ISP1,GW通过tracking感知到,数据又切换回ISP1 技术解析: 1. 首先定义track object,关联到一个ip sla monitor 使用ICMP协议去探测10.1.1.2的可达性(使用源地址10.1.1.1去ping10.1.1.2) Track object 的ID为1,关联到ip sla monitor 1 当10.1.1.2可达,则track 对象为true ip sla monitor 1 type echo protocol ipIcmpEcho 10.1.1.2 source-ipaddr 10.1.1.1 frequency 10 exit ip sla monitor schedule 1 life forever start-time now track 1 rtr 1 reachability 2. 然后在route-map中调用该track object route-map PBR permit 10 match ip address 1 set ip next-hop verify-availability 10.1.1.2 10 track 1 当track1为true,也就是10.1.1.2可达,则PC访问100网络的数据被丢给10.1.1.2,如果track 1挂了,则切换至下一个next-hop 2.4 set ip next-hop recursive
GW的配置如下: access-list 1 permit any route-map PBR permit 10 match ip address 1 set ip next-hop 10.2.2.2 set ip next-hop recursive 10.1.12.2 ip route 10.1.12.0 255.255.255.0 10.1.1.2 ip route 0.0.0.0 0.0.0.0 serial s0/2 实验现象: 1.正常情况下,数据优先走ip next-hop,也就是走ISP2 2.当GW连接ISP2的出接口DOWN掉(也就是ISP2挂了),则切换至ip next-hop recursive,也就是ISP2 注意,这个时候是才用路由表递归找到去往10.1.12.2的路由的,因此路由表里必须有可达路由 3.当GW丢失了去往10.1.12.2的路由,并且连接ISP2的连接也丢失了,则走默认路由