目前的网络情况,无论是LAN还是WAN,冗余越来越多,SLA也变的越来越重要。自己不熟悉的部分就一点一点消灭掉。

以思科设备为例,多WAN冗余接入最佳实践方案:使用策略路由PBR,将内部不同网段出向流量的下一跳修改成不同的WAN出口,使用SLA和track配合PBR进行链路检测和冗余切换。

策略路由,Policy-based Routing,当一个流量到达路由器设备时,会优先被策略路由处理,然后才是查询路由表。基于此来实现多出口冗余。

以这个拓扑为例:

路由器Border作为出口,连接了ISP1和ISP2两个ISP的WAN出口;R1内部有终端PC用户(192.168.1.x)和一些Server集群(10.0.0.x),使用策略路由实现PC通过ISP1访问互联网,Server通过ISP2访问互联网。
基本ip配置,内网路由,外网路由等基本配置略

SLA配置

首先在Border路由器上配置SLA检测到ISP1,ISP2链路的可达性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ip sla 1
icmp-echo 1.1.1.2 source-ip 1.1.1.1
threshold 100
timeout 100
frequency 3
ip sla schedule 1 life forever start-time now

#track 100检测ISP1的可达性
track 100 ip sla 1 reachability

ip sla 2
icmp-echo 2.2.2.2 source-interface Ethernet0/1
threshold 100
timeout 100
frequency 3
ip sla schedule 2 life forever start-time now

#track 200检测ISP2的可达性
track 200 ip sla 2 reachability

路由器将没隔3秒发送一次icmp的ping来来检测目标ip的可达性,超时时间是100ms。

PBR配置

然后配置策略路由,先用acl匹配流量,然后route-map设置策略,再接口下调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#抓取流量
access-list 100 permit ip 192.168.1.0 0.0.0.255 any
access-list 199 permit ip 10.1.1.0 0.0.0.255 any

#设置route-map
route-map PBR permit 10
match ip address 100
set ip next-hop verify-availability 1.1.1.2 1 track 100
set ip next-hop verify-availability 2.2.2.2 2 track 200

route-map PBR permit 20
match ip address 199
set ip next-hop verify-availability 2.2.2.2 1 track 200
set ip next-hop verify-availability 1.1.1.2 2 track 100

#接口下调用
interface Ethernet0/2
ip policy route-map PBR

说明:track100状态up的时候,默认pc使用1.1.1.2这个下一跳。track变为down时,这一行设置自动失效,将使用next-hop序号2的作为下一跳。track200同理。

PAT配置

原有的ip nat inside source list xx只能为一个outside出口做地址转换,所以要同时修改源nat设置:把源地址列表nat改为根据出接口nat。
在Border路由器上使用route-map匹配出接口:

1
2
3
4
5
6
7
8
9
route-map ISP2 permit 10
match interface Ethernet0/1
route-map ISP1 permit 10
match interface Ethernet0/0

#出接口为e0/0的内部流量,转换为1.1.1.1出去
#出接口为e0/1的内部流量,转换为2.2.2.1出去
ip nat inside source route-map ISP1 interface Ethernet0/0 overload
ip nat inside source route-map ISP2 interface Ethernet0/1 overload

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
PC#traceroute 8.8.8.8 numeric 
Type escape sequence to abort.
Tracing the route to 8.8.8.8
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.1.1 0 msec 1 msec 0 msec
2 172.16.1.2 1 msec 0 msec 1 msec
3 1.1.1.2 5 msec 1 msec 1 msec
4 100.100.100.101 1 msec * 2 msec
PC#

Server#traceroute 8.8.8.8 numeric
Type escape sequence to abort.
Tracing the route to 8.8.8.8
VRF info: (vrf in name/id, vrf out name/id)
1 10.1.1.1 0 msec 1 msec 0 msec
2 172.16.1.2 1 msec 0 msec 1 msec
3 2.2.2.2 1 msec 1 msec 0 msec
4 200.200.200.202 1 msec * 2 msec
Server#

在Border或者ISP1上模拟故障

Border上弹出log
*Dec 15 07:26:06.798: %TRACK-6-STATE: 100 ip sla 1 reachability Up -> Down

PC已经切换冗余:

1
2
3
4
5
6
7
8
9
PC#traceroute 8.8.8.8 numeric 
Type escape sequence to abort.
Tracing the route to 8.8.8.8
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.1.1 0 msec 0 msec 0 msec
2 172.16.1.2 1 msec 1 msec 0 msec
3 2.2.2.2 1 msec 1 msec 1 msec
4 200.200.200.202 1 msec * 2 msec
PC#

* 默认路由问题

首先内到外的流量,由于PBR优于路由表,所以不走路由表。
为了外部发起的流量到路由器能够正确的回包,设置默认路由加track,只有当track时up的时候,这条路由才被加入路由表。

1
2
ip route 0.0.0.0 0.0.0.0 1.1.1.1 track 100
ip route 0.0.0.0 0.0.0.0 2.2.2.2 track 200

参考文档:
PBR+双出口NAT_CCNP学习资料
Configuring Static Route Tracking using IP SLA (Basic)