策略路由(PBR)和路由策略是网络流量控制的两种核心手段,它们作用于不同层面,目的和配置方式也有显著差异。下面这张表格汇总了它们的核心区别,帮你快速把握本质:
特性维度 |
策略路由 (PBR – Policy-Based Routing) |
路由策略 (Routing Policy) |
作用层面 |
数据平面 (Data Plane) |
控制平面 (Control Plane) |
操作对象 |
数据包 (Packet) |
路由信息 (Route) |
核心目的 |
控制数据包的转发路径,不依赖路由表 |
控制路由的学习、发布和选择,影响路由表生成 |
优先级 |
高于 路由表 |
影响路由表,间接影响数据包转发 |
配置命令特征 |
通常基于 policy-based-route或 MQC (traffic-policy) |
通常基于 route-policy、filter-policy等 |
常见应用 |
负载分担、链路备份、安全审计、QoS |
路由过滤、路由引入、修改路由属性、路由偏好设置 |
理解了核心区别后,我们来看它们各自的适用规律和典型配置。
策略路由 (PBR) 的规律与应用
策略路由直接干预数据包的转发路径,其决策优先于普通的路由表查询。当你需要根据数据包的特定特征(如源地址、协议类型等)而不是目的地址来决定其出口时,就应考虑使用PBR。
规律一:精细控制特定流量的路径
这常用于多出口网络环境,实现负载分担、链路备份或将特定流量引导至安全设备。
场景示例:内网用户访问互联网,希望指定不同网段的用户走不同的运营商出口。
华为配置命令:
# 创建ACL匹配特定源地址
acl 3000
rule 5 permit ip source 192.168.10.0 0.0.0.255 # 匹配研发网段
rule 10 permit ip source 192.168.20.0 0.0.0.255 # 匹配办公网段# 创建策略路由
policy-based-route PBR_EXAMPLE permit node 10
if-match acl 3000 # 调用ACL作为匹配条件
apply ip-address next-hop 203.0.113.1 # 设置下一跳为ISP1网关
policy-based-route PBR_EXAMPLE permit node 20
if-match acl 3001 # 可匹配其他条件的ACL
apply output-interface GigabitEthernet0/0/2 # 或直接指定出接口# 在入接口应用策略路由
interface GigabitEthernet0/0/1
ip policy-based-route PBR_EXAMPLE
命令解析:
policy-based-route PBR_EXAMPLE创建一个名为 PBR_EXAMPLE的策略路由。
node 10是节点号,节点按从小到大的顺序匹配。
if-match acl 3000表示匹配ACL 3000所定义的流量。
apply ip-address next-hop 203.0.113.1是动作,为匹配的流量指定下一跳地址。
ip policy-based-route PBR_EXAMPLE在用户流量进入的接口上应用此策略。
规律二:使用MQC方式实现复杂策略
对于更复杂的流量分类和行为控制(如基于VLAN、协议类型等),可采用模块化QoS命令行(MQC)方式配置PBR,
场景示例:将VLAN 100的流量重定向到指定的下一跳。
华为配置命令:
# 创建流分类,匹配VLAN 100
traffic classifier CLASSIFIER_VLAN100
if-match vlan-id 100# 创建流行为,指定重定向的下一跳
traffic behavior BEHAVIOR_REDIRECT
redirect ip-nexthop 10.30.30.2# 创建流策略,绑定流分类和流行为
traffic policy POLICY_PBR
classifier CLASSIFIER_VLAN100 behavior BEHAVIOR_REDIRECT# 在接口入方向应用流策略
interface GigabitEthernet0/0/1
traffic-policy POLICY_PBR inbound
命令解析:
traffic classifier定义匹配规则。
traffic behavior定义执行的动作,redirect ip-nexthop是重定向。
traffic policy将分类和行为绑定。
traffic-policy POLICY_PBR inbound在接口入方向应用该策略。
路由策略的规律与应用
路由策略作用于路由信息本身,通过过滤、修改或设置路由属性来影响路由表的生成,从而间接控制数据包的转发路径。
规律一:控制路由的传播与引入
通过过滤或修改路由信息,实现网络可达性的精确控制,或在不同路由协议间引入路由时进行干预。
场景示例:在运行OSPF和BGP的设备上,将OSPF路由引入BGP时,只允许特定路由被引入,并为其设置特定的团体属性。
华为配置命令:
# 创建ACL或前缀列表匹配需要引入的路由
ip ip-prefix PREFIX_OSPF seq 10 permit 10.1.0.0 24# 创建Route-Policy
route-policy RP_OSPF_TO_BGP permit node 10
if-match ip-prefix PREFIX_OSPF # 匹配前缀列表
apply community 65001:100 # 设置BGP团体属性
route-policy RP_OSPF_TO_BGP deny node 20 # 未明确允许的默认拒绝# 在BGP进程中引入OSPF路由时调用Route-Policy
bgp 65001
import-route ospf 1 route-policy RP_OSPF_TO_BGP
命令解析:
ip ip-prefix比ACL更能精确匹配路由前缀和掩码长度。
route-policy是功能强大的策略工具,node节点按序匹配。
if-match ip-prefix PREFIX_OSPF匹配符合条件的前缀。
apply community 65001:100为匹配的路由设置团体属性。
import-route ospf 1 route-policy RP_OSPF_TO_BGP在引入路由时调用策略,只有被permit且匹配的路由才会被引入BGP,并可修改属性。
规律二:调整路由属性以影响选路
通过修改路由的属性(如BGP的Local_Preference、MED等),来影响路由器的路径选择。
场景示例:在BGP网络中,通过设置更高的Local_Preference值,使某条路径成为优先出口。
华为配置命令:
# 创建匹配特定路由的前缀列表
ip ip-prefix PREF_PRIORITY seq 10 permit 192.168.0.0 24# 创建Route-Policy修改Local_Preference
route-policy RP_SET_LP permit node 10
if-match ip-prefix PREF_PRIORITY
apply local-preference 200 # 将匹配路由的本地优先级设为200(默认通常是100)# 在BGP对等体入方向应用策略(影响从对等体接收的路由)
bgp 65001
peer 10.1.1.2 route-policy RP_SET_LP import
命令解析:
apply local-preference 200是设置BGP路径属性的典型操作。
peer 10.1.1.2 route-policy RP_SET_LP import将对等体(Peer)入方向的路由应用策略,影响从该对等体学来的路由的处理。
如何选择与配合使用
1.明确控制对象:
想控制数据包的实时转发路径? -> 用策略路由 (PBR)。
想控制路由信息的学习、发布和属性? -> 用路由策略。
2.常见组合场景:
主备链路与路由控制:结合BFD(双向转发检测)实现快速故障检测
# 配置BFD会话检测链路状态
bfd
bind peer-ip 12.1.1.2 source-ip 12.1.1.1 auto
commit# 配置静态路由绑定BFD会话,实现快速切换
ip route-static 0.0.0.0 0 12.1.1.2 track bfd-session bfd1
ip route-static 0.0.0.0 0 13.1.1.2 preference 100 # 备用路由,优先级更低
3.优先级牢记心间:策略路由 (PBR) 的优先级高于路由表。这意味着即使路由表中有到达目的地址的最佳路径,PBR也可以强制让匹配的流量走另一条路。
策略路由和路由策略是网络工程师手中的利器。掌握其核心区别与应用场景,你就能在复杂的网络环境中游刃有余地引导流量和管理路由。
希望这些解释和示例对你有帮助。如果你有更具体的网络场景,我很乐意提供更细致的分析。