PBR策咯路由(Policy-Based Routing)
route-map的一种应用,基于策略的路由比传统的路由能力更强,使用更灵活,它使网络管理者不仅能够根据目的地址而且能够根据协议类型、报文大小、应用或IP源地址来选择转发路径。策略路由可以定义为通过多路由器的负载平衡或根据总流量在各线上进行报文转发的服务质量来定义策略路由
策略路由主要对经过路由器的数据流进行分流和过滤以及感兴趣的数据流
在讲PBR之前有必要简单介绍下Route-map工具,Route-map包含两元,一个是match(匹配)还有一个是set(执行动作)。
Route-map默认为permit,默认序列号10,序列号不会自动递增,需要指定序列号
Route-map执行从最小的序列号开始执行,如果一旦匹配住将不再执行下边序列号的语句,如果一个都没有匹配住,Route-map末尾隐含deny any语句。
单条match语句包含多个条件时,使用逻辑or运算(或运算)
多条match语句时,使用逻辑and运算(且运算)
Route-map name {permit|deny }10
match xxx zzz X和Z只要匹配住一个这个match就成真
Set yy执行set动作
Route-map name {permit|deny } 20
match xxx x和z两个match都必须匹配住这个序列号中的set动作才会执行
match zzz
Set yy
Route-map name deny隐含deny any语句
PBR对数据的处理流程:
图解:数据包到了接口,路由器查看是否应用PBR工具,如果有执行PBR的match语句,如果被match语句匹配住则执行set动作,如果没有被match语句匹配住,这个数据包流量将会按照传统路由表进行转发,而不是丢弃。这是PBR很重要的一个处理数据包的流程概念,PBR的set动作是优于路由表的。
PBR的配制分为三个步骤:1.用ACL匹配数据2.在Route-map中部署PBR 3.调用PBR
如果你只再Route-map中部署PBR而不调用,PBR是不生效的。
整篇文章的实验拓扑IP地址规划:192.168.xy.z/24 其中x和y是两端设备编号,z是设备本身编号。 x代表较小的设备编号,y代表较大的设备编号
例如:R1----R2 R1的IP:192.168.12.1 R2的IP:192.168.12.2 下边文章不做赘述IP编址
PBR的应用场景一:
PBR叫策略路由,而不是叫路由策略,PBR和传统的路径控制工具最大的区别就是它可以跟据源去做策略,而传统的路径控制工具只能根据目的去做决策,改变目的来影响数据流的走向。
如上图,R1路由器去往100.100.100.100/24目的有两条路径,下边的VLAN10和VLAN20用户只能走一边,或者等价负载均衡方式转发。传统工具无法做到让VLAN10强制走R2,VLAN20强制走R3。
PBR可以做到,PBR可以跟据源去匹配感兴趣的data(数据),强制性让VLAN10用户走R2,并且当R2挂掉切换到R3。强制性让VLAN20走R3,同样当R3挂掉切换到R2。
具体配置命令:
R1(config)#ip access-list standard vlan10
R1(config-std-nacl)#permit 192.168.1.0 0.0.0.255
R1(config)#ip access-list standard vlan20
R1(config-std-nacl)#permit 192.168.2.0 0.0.0.255
首先用ACL匹配感兴趣数据流,上边命令分别用两个ACL去匹配VLAN10和VLAN20的数据
R1(config)#route-map PBR permit 10创建Route-map,配置PBR
R1(config-route-map)#match ip address vlan10 match VLAN10的ACL
R1(config-route-map)#set ip next-hop 192.168.12.2执行set动作将数据丢给下一跳,需要注意这个下一跳一定是我直连的下一跳。Set动作的意思就是我将数据包丢给我的下一跳路由器,让它帮我转发数据
R1(config-route-map)#exit它丢给下一跳的动作是不会改变数据包的源和目的信息
R1(config)#route-map PBR permit 20在PBR的Route-map里边创建第二个序列号
R1(config-route-map)#match ip address vlan20 match VLAN20的ACL
R1(config-route-map)#set ip next-hop 192.168.13.3执行set动作将数据丢给下一跳,需要注意这个下一跳一定是我直连的下一跳,Set动作的意思就是我将数据包丢给我的下一跳路由器,让它帮我转发数据
R1(config-route-map)#exit 它丢给下一跳的动作是不会改变数据包的源和目的信息
R1(config)#interface fastEthernet 1/0在R1路由器的f1/0接口进行调用
R1(config-if)#ip policy route-map PBR这条命令是调用PBR,接口调用PBR,使得刚配置的PBR生效
PBR的调用有两种方式:第一种接口调用,第二种全局调用
接口调用:从这个接口经过的数据流量执行PBR的策略
全局调用:R1(config)#ip local policy route-map PBR全局调用就是从这台路由器设备本身经过的数据全部执行PBR的策略
经过以上三个步骤配置,PBR的最简单的应用场景就实现了,下边查看VLAN10和VLAN20用户是不是按照PBR的方式执行
R1路由表去往100.100.100.100/24实际上是走的默认路由,而默认路由的下一跳是R2,也就是在上述情况,去往该目的地实际上只能走R2,通过R3是到不了的,但是我们PBR可以做到,因为我们可以将数据丢给我的直连下一跳,让它们进行转发。
R1#show ip route
C 192.168.15.0/24 is directly connected, FastEthernet2/0
C 192.168.16.0/24 is directly connected, FastEthernet1/0
S 192.168.1.0/24 [1/0] via 192.168.16.6
S 192.168.2.