第32篇:策略路由(PBR)——不按路由表走

一、写在前面

普通的路由转发方式是:数据包到达路由器 → 查路由表 → 按最长匹配发送。所有符合条件的流量都走同一个路径。

但有些场景,我们需要根据更细粒度的条件(源 IP、协议类型、报文大小等)来决定流量走哪条路,而不是只看目的 IP。

策略路由(PBR, Policy-Based Routing) 就是为了解决这个问题——不按路由表走,按管理员定义的策略走。


二、策略路由 vs 普通路由

对比 普通路由 策略路由(PBR)
转发依据 目的 IP 地址 源 IP / 目的 IP / 协议 / 端口等
转发来源 路由表 用户自定义的策略
优先级 路由表匹配 策略路由优先于路由表
灵活性
配置复杂度

一句话:路由表是"去哪看哪",策略路由是"谁去哪走哪条路"。


三、典型应用场景

场景 1:区分内外网出口(源 IP 策略)

                 ┌── 电信出口(100.1.1.1)
  研发部流量 ────┤
                 └── 联通出口(200.1.1.1)
  市场部流量 ────┤

需求:研发部的流量走电信出口,市场部的流量走联通出口。

场景 2:特定应用走特定链路

# 视频会议流量走低延迟链路
# 大文件下载走普通链路

场景 3:多链路负载分担

# 不是简单的 ECMP,而是按流量特征分发到不同链路

场景 4:本地流量优先

PC 发出的流量 → 先走本地/内网 → 再走出口

四、华为策略路由配置

4.1 配置思路

策略路由的配置分三步:

1. 定义 ACL(匹配感兴趣的流量)
2. 定义流行为(动作:设置下一跳/出接口)
3. 定义流策略(把 ACL + 流行为绑定)
4. 应用到接口(inbound 方向)

4.2 案例:研发部走电信,市场部走联通

拓扑:

          R1
     ┌─────────┐
 GE0/0/0  │  GE0/0/1  │  GE0/0/2
 研发部    │  10.0.1.0/24  │  100.1.1.1 → 电信
 市场部    │              │  200.1.1.1 → 联通

配置:

# 第 1 步:定义 ACL,匹配研发部和市场部的流量
[R1] acl 3001
[R1-acl-adv-3001] rule 5 permit ip source 10.0.1.0 0.0.0.255
[R1-acl-adv-3001] quit

[R1] acl 3002
[R1-acl-adv-3002] rule 5 permit ip source 10.0.2.0 0.0.0.255
[R1-acl-adv-3002] quit

# 第 2 步:定义流行为
[R1] traffic behavior to-telecom
[R1-behavior-to-telecom] redirect ip-nexthop 100.1.1.254         ← 重定向下一跳到电信
[R1-behavior-to-telecom] quit

[R1] traffic behavior to-unicom
[R1-behavior-to-unicom] redirect ip-nexthop 200.1.1.254         ← 重定向下一跳到联通
[R1-behavior-to-unicom] quit

# 第 3 步:定义流策略
[R1] traffic policy pbr-policy
[R1-policy-pbr-policy] classifier acl 3001 behavior to-telecom   ← 研发部→电信
[R1-policy-pbr-policy] classifier acl 3002 behavior to-unicom    ← 市场部→联通
[R1-policy-pbr-policy] quit

# 第 4 步:应用在入接口
[R1] interface gigabitethernet 0/0/0
[R1-GigabitEthernet0/0/0] traffic-policy pbr-policy inbound

4.3 验证

# 在研发部 PC 上 tracert
C:\> tracert 8.8.8.8
  1     1 ms     R1 (10.0.1.254)
  2     2 ms     100.1.1.254      ← 走了电信

# 在市场部 PC 上 tracert
C:\> tracert 8.8.8.8
  1     1 ms     R1 (10.0.2.254)
  2     2 ms     200.1.1.254      ← 走了联通

五、策略路由的两种类型

5.1 接口策略路由(基于接口)

上一节的配置就是在接口上应用策略——所有从该接口进来的流量,都匹配该策略。

特点:影响从该接口进入的所有流量。

5.2 本地策略路由(基于本机)

影响路由器自己发起的流量(如路由器主动 ping、NTP、SNMP 等)。

[R1] policy-based-route local-pbr permit acl 3001
[R1] ip local policy-based-route local-pbr

六、策略路由的匹配顺序

[R1-policy-pbr-policy] display traffic policy
  Policy: pbr-policy
    Classifier: acl 3001        ← 先匹配
      Behavior: to-telecom
    Classifier: acl 3002        ← 后匹配
      Behavior: to-unicom
    Classifier: default-class   ← 默认(未匹配的走普通路由)
      Behavior: be

策略中 Classifier 的匹配顺序 = 配置顺序。先配置的先匹配。如果流量匹配了第一个 rule,就不会继续往下匹配。


七、策略路由的重要注意事项

注意点 说明
仅支持 inbound 方向 华为设备不支持 outbound 方向的策略路由
策略路由优先于路由表 匹配策略的直接走策略,不查路由表
未匹配的走普通路由 默认会走路由表转发
配置后立即生效 不需要重启
不能太复杂 大量 ACL + 复杂策略会影响转发性能
本地策略路由影响本地包 路由器自己产生的包也用策略路由

八、对比:策略路由 vs 浮动静态路由

对比 策略路由 浮动静态路由
匹配条件 源IP/协议/端口等多维度 目的网段
切换方式 策略内指定下一跳 主备优先级切换
灵活性
配置复杂度 简单
适用场景 多出口按流量类型分流 简单的主备链路

九、思考

  1. 策略路由和普通路由有什么本质区别?
  2. 什么时候用策略路由而不是普通路由?
  3. 华为策略路由的配置分哪几步?最后应用在接口的哪个方向?
  4. 如果流量没有匹配任何策略规则,数据包会怎么处理?
  5. 策略路由可以匹配源 IP、目的 IP、协议类型,还能匹配什么?
  6. 策略路由能替代路由表吗?为什么?

下篇预告:第33篇《动态路由协议分类_IGP与EGP的区别》——了解动态路由协议的分类和IGP与EGP的区别。