第32篇:策略路由(PBR):不按路由表走
关键词:策略路由、PBR、Traffic Policy、流分类、流行为、流量引导
一、引言
在常规转发中,路由器根据路由表做决策:匹配目的 IP 地址,查找最长匹配的前缀,转发到对应的下一跳。但有时我们需要更精细的转发控制——比如将视频会议流量走专线,将普通上网流量走公网;或者根据源地址将不同部门的流量引导到不同的出口。
这种"不按目的地址走路由表"的转发方式就是策略路由(Policy-Based Routing,PBR)。
二、核心概念
2.1 策略路由 vs 普通路由
| 维度 | 普通路由(路由表) | 策略路由(PBR) |
|---|---|---|
| 匹配条件 | 仅目的 IP 地址 | 源 IP、目的 IP、协议、端口、DSCP、ACL 等 |
| 匹配粒度 | 前缀长度 | 五元组及以上 |
| 转发依据 | 最长匹配 + 优先级 + 度量值 | 策略匹配顺序 + 动作 |
| 执行位置 | 全局(所有报文) | 应用在指定接口的入方向 |
| 优先级 | 策略路由 > 普通路由 | — |
2.2 策略路由的三大组件
华为设备中,策略路由基于 Traffic Policy 框架实现,包含三个组件:
- 流分类(Traffic Classifier):定义"什么样的流量",通过 ACL、DSCP 等匹配条件
- 流行为(Traffic Behavior):定义"对流量做什么",如修改下一跳、修改出接口、修改 DSCP 等
- 流策略(Traffic Policy):将分类和行为绑定,然后应用到接口的入方向
2.3 策略路由的处理流程

注意:策略路由优先于路由表。只有当策略路由没有匹配时,才走正常的路由表查找。
三、技术细节
3.1 ACL 匹配条件
策略路由的流分类通常使用 ACL 来定义匹配规则:
| ACL 类型 | 编号范围 | 匹配能力 |
|---|---|---|
| 基本 ACL | 2000-2999 | 源 IP 地址 |
| 高级 ACL | 3000-3999 | 源/目的 IP、协议、端口等 |
| 二层 ACL | 4000-4999 | 源/目的 MAC、802.1p 优先级 |
3.2 流行为的动作类型
| 动作 | 关键命令 | 说明 |
|---|---|---|
| 重定向到下一跳(弱策略) | redirect ip-nexthop <ip> |
按指定下一跳查路由转发表,查不到再按报文目的 IP 正常转发 |
| 重定向到下一跳+出接口(强策略) | redirect ip-nexthop <ip> interface <if> |
强制走指定出接口;出接口 Down 或下一跳不可达时直接丢弃,不回退路由表 |
| 修改 DSCP | remark dscp <value> |
修改报文的 DSCP 值 |
| 丢弃报文 | deny |
直接丢弃(行为级拒绝) |
说明: - 华为流行为(Traffic Behavior)默认对命中报文放行;需要改路时配置
redirect(出接口必须与下一跳配对使用),需要丢弃时配置deny。 - 弱策略(仅redirect ip-nexthop):用指定下一跳查转发表,查不到时回退为按报文目的 IP 正常路由转发;强策略(redirect ip-nexthop ... interface ...):不回退、查不到即丢弃(可配route-forward关键字让接口失效时回退)。 - 注意与 Cisco 的差异:华为上流分类 ACL 中被deny命中的报文直接丢弃;而 Cisco 的 deny 只是不重定向、仍按路由表转发。
3.3 策略路由 vs 浮动静态路由的区别
在第30篇中学习的浮动静态路由基于优先级实现主备切换,而策略路由基于内容匹配实现差异化转发:
| 特性 | 浮动静态路由 | 策略路由 |
|---|---|---|
| 决策依据 | 链路状态 + 优先级 | 报文内容(ACL 匹配) |
| 应用场景 | 链路备份 | 差异化服务、多出口分流 |
| 配置复杂度 | 低 | 中 |
| 性能开销 | 低 | 略高(需逐包匹配分类) |
四、实战配置与故障案例
4.1 案例一:视频会议走专线,上网走公网
需求:企业有两出口,公网出口用于员工上网,专线出口用于视频会议。视频会议使用端口 1720(H.323)和 50000-60000(RTP 媒体流)。
# 步骤1:定义匹配视频会议流量的 ACL
[HUAWEI] acl number 3001
[HUAWEI-acl-adv-3001] rule 5 permit tcp destination-port eq 1720
[HUAWEI-acl-adv-3001] rule 10 permit udp destination-port range 50000 60000
[HUAWEI-acl-adv-3001] rule 15 permit tcp destination-port range 50000 60000
[HUAWEI-acl-adv-3001] quit
# 步骤2:定义流分类
[HUAWEI] traffic classifier video
[HUAWEI-classifier-video] if-match acl 3001
[HUAWEI-classifier-video] quit
# 步骤3:定义流行为(转发到专线下一跳)
[HUAWEI] traffic behavior video-line
[HUAWEI-behavior-video-line] redirect ip-nexthop 10.255.0.2
[HUAWEI-behavior-video-line] quit
# 步骤4:绑定分类和行为到策略
[HUAWEI] traffic policy pbr-policy
[HUAWEI-trafficpolicy-pbr-policy] classifier video behavior video-line
[HUAWEI-trafficpolicy-pbr-policy] quit
# 步骤5:应用到入接口
[HUAWEI] interface GigabitEthernet 0/0/0
[HUAWEI-GigabitEthernet0/0/0] traffic-policy pbr-policy inbound
[HUAWEI-GigabitEthernet0/0/0] quit
验证:
# 查看策略已应用到的接口与方向
<HUAWEI> display traffic policy applied-record
# 确认 pbr-policy 已应用到 GE0/0/0 的入方向
# 查看策略配置与各流分类的当前命中计数
<HUAWEI> display traffic policy pbr-policy
# 只看某个流分类的命中统计(老版本设备可用上一条命令替代查看)
<HUAWEI> display traffic classifier statistics name video
# 命中计数持续增长,说明流量已被该分类捕获;具体命令与回显以设备版本为准
4.2 案例二:多部门多出口分流
需求:财务部(192.168.10.0/24)走专线出口,研发部(192.168.20.0/24)走公网出口,其他走默认出口。
# ACL 1:财务部分流
[HUAWEI] acl number 3001
[HUAWEI-acl-adv-3001] rule 5 permit ip source 192.168.10.0 0.0.0.255
[HUAWEI-acl-adv-3001] quit
# ACL 2:研发部分流
[HUAWEI] acl number 3002
[HUAWEI-acl-adv-3002] rule 5 permit ip source 192.168.20.0 0.0.0.255
[HUAWEI-acl-adv-3002] quit
# 流分类
[HUAWEI] traffic classifier finance
[HUAWEI-classifier-finance] if-match acl 3001
[HUAWEI] traffic classifier rd
[HUAWEI-classifier-rd] if-match acl 3002
# 流行为
[HUAWEI] traffic behavior finance-behavior
[HUAWEI-behavior-finance-behavior] redirect ip-nexthop 10.255.0.2 # 专线
[HUAWEI] traffic behavior rd-behavior
[HUAWEI-behavior-rd-behavior] redirect ip-nexthop 203.0.113.1 # 公网
# 策略绑定(注意顺序:先匹配优先级高的)
[HUAWEI] traffic policy multi-export
[HUAWEI-trafficpolicy-multi-export] classifier finance behavior finance-behavior
[HUAWEI-trafficpolicy-multi-export] classifier rd behavior rd-behavior
[HUAWEI-trafficpolicy-multi-export] quit
# 应用
[HUAWEI] interface GigabitEthernet 0/0/0
[HUAWEI-GigabitEthernet0/0/0] traffic-policy multi-export inbound
4.3 案例三:策略路由未生效的故障排查
故障描述:配置了策略路由后,流量仍然按路由表转发,没有走指定的下一跳。
# 排查步骤1:确认策略是否应用到接口
<HUAWEI> display traffic policy applied-record
# 检查接口和方向是否正确(inbound/outbound)
# 排查步骤2:检查 ACL 匹配
<HUAWEI> display acl 3001
# 确认 ACL 规则中的源/目的地址和端口与预期一致
# 排查步骤3:检查流分类和流行为的绑定
<HUAWEI> display traffic policy pbr-policy
# 确认 classifier 和 behavior 正确关联
# 排查步骤4:检查下一跳可达性
<HUAWEI> ping 10.255.0.2
# 弱策略(仅 redirect ip-nexthop):下一跳查不到路由时,回退为按报文目的 IP 正常转发
# 强策略(redirect ip-nexthop ... interface ...):下一跳不可达或出接口 Down 时直接丢弃,不回退
# 常见根因:
# 1. 策略应用在 outbound 方向而非 inbound → 改到入方向
# 2. ACL 匹配条件不精确 → 检查端口号和协议、通配符
# 3. 下一跳不可达 → 弱策略会静默回退为普通转发(表面"未生效"),强策略则丢包 → 先核对下一跳路由/连通性
# 4. 流行为只配了 permit → permit 不做转发修改,需要配置 redirect
4.4 策略路由的回包问题
策略路由只影响去方向报文,回包走目的路由表。如果回包路径与去程不对称,可能导致某些状态检测防火墙丢弃报文或会话不一致。
# 解决方案:在对端也配置回指的策略路由
# 或者确保目的路由表中存在正确的回程路由
[HUAWEI] ip route-static 192.168.10.0 24 10.1.1.1
[HUAWEI] ip route-static 192.168.20.0 24 10.1.1.1
五、总结
| 组件 | 作用 | 关键命令 |
|---|---|---|
| ACL | 定义匹配条件 | acl number 3001 |
| 流分类 | 将 ACL 封装为分类器 | traffic classifier |
| 流行为 | 定义处理动作 | traffic behavior + redirect ip-nexthop |
| 流策略 | 绑定分类与行为 | traffic policy |
| 接口应用 | 在接口入方向生效 | traffic-policy xxx inbound |
| 注意事项 | 说明 |
|---|---|
| 策略路由优先于路由表 | 匹配策略后不走路由表 |
| 仅影响去程 | 回包仍需正常路由支持 |
| 下一跳可达性 | 弱策略查不到下一跳路由时回退为按目的 IP 转发;强策略(带出接口)不达即丢弃 |
| ACL 规则顺序 | 默认按 rule 编号从小到大匹配 |
| 性能考虑 | 策略在接口入方向逐包匹配,ACL 规则较多时有一定处理开销 |
思考
- 策略路由中
redirect ip-nexthop(弱策略)和redirect ip-nexthop ... interface ...(强策略)有什么区别?各适用于什么场景? - 如果策略路由匹配的下一跳不可达,报文会丢弃还是会回退到路由表?
- 当策略路由和 NAT 同时使用时,配置顺序需要注意什么?
下篇预告:第33篇:动态路由协议分类:IGP 与 EGP 的区别