策略路由与普通路由的区别
- 常规路由 :基于目标IP和路由表进行数据包的转发
- 策略路由(Policy-Based Routing) :根据用户制定的策略进行数据包转发
原理与应用场景
- 基于源IP、源与目标IP、协议、端口号、长度等参数来匹配数据,对匹配的数据执行策略
- 从特定的出口转发数据
- 设置数据的优先级
- 可应用于安全、QoS、流量分流分等场景
- 多出口情况下
- 校园网(Internet、教育网)
- 企业网(双出口上网)
- 修改报文TOS、DSCP;
!!!( 策略路由的匹配会优于普通路由 )
配置策略路由
策略路由的配置步骤如下:
- 创建route-map
- 通过ACL匹配感兴趣的数据,定义策略动作
- 在指定接口下通过ip policy 命令应用route-map
- 最终实现对通过该接口进入设备的数据进行检查,对匹配的数据执行规定的策略
创建route-map
- 路由器通过route-map语句对符合条件的数据包实施路由策略
- Permit:对符合条件的数据包实施策略
- Deny:对符合条件的数据包不实施策略
- Sequence: 0-65535, route-map语句的执行顺序(插入/删除route-map语句 )
Router(config)#route-map
route-map-name
[permit | deny]
sequence
- route-map 最后有有一条deny所有的语句,对于没有匹配到策略路由的流量,不会把内网的 流量丢弃, 而是做正常的IP路由转发
匹配规则
- 定义匹配规则,只有符合规则的数据包才进行策略路由
- 如果没有配置匹配规则,则所有数据包都符合规则
- 匹配ACL
——Router(config-route-map)#match ip address {access-list-number | name} [...access-list-number | name]
2. 匹配第三层数据包的长度
——Router(config-route-map)#match length [min-length] [max-length]
定义出口
- 定义匹配规则后的操作,如对符合规则的数据包进行下一跳的设置
- 先策略路由,后查路由表
- 定义发出的数据包的出口
Router(config-route-map)# set interface type number [...type number]
- 定义发出的数据包的下一跳地址
Router(config-route-map)# set ip next-hop ip-address [...ip-address]
- 特殊的下一跳:定义到达目的网络时无显式路由时的隐含下一跳地址
- 路由器先检查路由表,后检查策略路由
Router(config-route-map)# set ip
default
next-hop ip-address [...ip-address]
应用到端口
在入口上应用策略路由,从该接口进入设备的数据会先执行PBR
- 策略路由一定要应用到数据包的in方向接口,不能应用到数据包的out方向接口
Router(config-if)# ip policy route-map
map-name
- 查看策略路由
Router# show ip policy
总结
- PBR(Policy-based Routing,策略路由)比传统路由能力更强,使用更灵活,它使路由器不仅能够根据数据包的目的IP地址而且能够根据协议类型、报文大小或源IP地址等信息来选择转发路径
- PBR常用于双出口的网络环境,配置PBR同时要注意NAT的配置