最近在测试加速设备的时候,用到了PBR(策略路由policy-based routing)。其实PBR原理和配置并不是很难,有以下2个配置要点:
1,使用ACL配置感兴趣流量,匹配源和目的地址,甚至是源和目的端口;
2,使用路由图来匹配感兴趣流量,然后做下一跳指向;
3,在相应的接口上启用该route-map。
下面一个简单的配置举例来说明PBR的使用:
ip access-list extended from10to20_acl
  permit ip host 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255
route-map from10tao20_map permit
match ip add from10to20_acl
set ip next-hot 192.168.30.3
int g0/1
ip address 192.168.30.1 255.255.255.0
ip policy route-map from10to20_map
到此配置案例结束。
需要注意:
1,route-map中的match ip address语句可以匹配多条acl规则,即match ip address acl1 acl2 acl3……。不过不清楚match这么多acl是什么意思,能起到什么作用?一般都只会用到一个acl;
2,match ip address可以匹配任何字符串,也就是说可以匹配一个空的acl。比如说上面的例子中如果将"from10to20_acl”写成了"rom10to20_acl”,是不会报错的。其实很明显是误写,配置中根本就没有"rom10to20_acl”这个acl。这个时候到达这个接口的流量就会全部丢弃。
3,当你发现match语句中的acl写错了,而要重新写时,必须先将该match语句删除,然后再重写。否则你直接写的话,后面的acl就会跟在后面,如:match ip address rom10to20_acl from10to20_acl。
PBR中的路有图原理:
1,每个路由图的结尾都隐含了一个拒绝操作。如果路由经过重新分配路由图二没有发生匹配,那么路由将不被重新分配。如果报文经过策略路由徒儿没有发生匹配,那么报文将被发送到常规路由进程。
2,一个路由图序列中无set语句时,那么这些匹配的报文将发送到常规路由进程。
3,match ip address acl1 acl2 … 通过实验debug已经证明只有第一个acl起作用。
4,一个路由图序列中无match语句时,表示所有报文都匹配。
5,匹配空acl时,效果就相当于没有设置match语句,即表示所有报文都匹配(这一点与上面有冲突,我反复试验都是相当于无match语句的效果)。当然我们配置的时候尽量仔细,不要出现空acl的情况。