HCIE-DATACOM · 第 5 章

路由引入
与选路控制

前缀列表 · filter-policy · route-policy · 双点双向引入 · Tag 防环 · 路由偏好操纵 —— 把多个路由域"缝合"在一起,并保证缝合处不出血。

授课 6 学时 实验 6 学时 LAB 分值大户 ★★★★★
HCIE-DataCom 全套课件第 5 章 / 共 13 章

本章学习目标

原理层

  • 分清三个过滤工具的层次与适用对象
  • 剖析双点双向引入的环路 / 次优成因
  • 理解 preference/cost/tag 在域间缝合的作用

实战层

  • 按"考题指定"精确控制引入什么、怎么标
  • 用 tag + route-policy 一举解决引入环路
  • 策略路由(PBR)引流,与路由选路区分
为什么重要HCIE LAB 的"缝合题":OSPF+IS-IS+静态三域互通是标配大题,几乎全部失分都在"引入不精确/环路/次优"三件事上。
5.1

路由过滤三件套

ACL 管流量、前缀列表管路由、route-policy 管一切

先分家:ACL vs 前缀列表

维度ACLIP 前缀列表
设计初衷匹配报文流(五元组)匹配路由前缀
掩码处理通配符(0=严格 1=任意),不能表达"掩码长度"同时匹配网络号+掩码长度(ge/le 精确范围)
匹配路由时只看目的网络号(不校验掩码)→ 易误伤天生精确
规则逻辑顺序匹配,默认 permit 其余顺序匹配,末尾隐含 deny
结论可匹配路由但强烈不推荐路由场景首选
# 前缀列表:掩码 24~28 之间的 10.1.0.0/16 子网
ip ip-prefix P1 index 10 permit 10.1.0.0 16 greater-equal 24 less-equal 28
# 精确一条默认路由
ip ip-prefix DEF index 10 permit 0.0.0.0 0
# 全部允许(常做"兜底")
ip ip-prefix ALL index 10 permit 0.0.0.0 0 less-equal 32
ACL 误伤案例想匹配 10.1.1.0/24 一条路由,用 rule permit source 10.1.1.0 0.0.0.255 —— 结果 10.1.1.0/25、/26…全被匹配上!因为 ACL 无掩码长度概念。路由匹配永远优先用前缀列表。

filter-policy:轻量级"闸门"

# OSPF:控制"计算"(入=过滤生成路由)
ospf 1
 filter-policy ip-prefix P1 import      # 进路由表前滤
 filter-policy ip-prefix P2 export      # 仅5类ASE出方向
# IS-IS 同款
isis 1
 filter-policy ip-prefix P1 import
# RIP/BGP
bgp 65001
 ipv4-family unicast
  peer 2.2.2.2 filter-policy P1 import  # 邻居粒度

filter-policy 的真相

  • 本质:拿着前缀列表/ACL 当过滤器
  • OSPF import:过滤的是"SPF 计算结果进路由表",LSDB 不受影响 —— 别处仍能学到
  • OSPF export:只对 Type-5(引入的外部路由)生效!
  • 链路状态协议无法用 filter 真正"阻止 LSA"进入——要控制泛洪请用区划/静默/ABR 汇总
考点"filter-policy import 配置后对端 LSDB 变化?"——无变化(本地不计算而已)。这类"作用层次"题年年考。

route-policy:模块化的"车间"

# 结构:节点序号升序匹配,节点内 if-match 与/或
ip ip-prefix P-DC permit 10.1.0.0 16 greater-equal 24
route-policy RP-IMPORT permit node 10
 if-match ip-prefix P-DC
 apply preference 50
 apply cost 100
 apply tag 100
route-policy RP-IMPORT permit node 20     # 兜底放行
# 应用:BGP引入 / 邻居出入向
bgp 65001
 ipv4-family unicast
  import-route ospf 1 route-policy RP-IMPORT
  peer 2.2.2.2 route-policy RP-IMPORT import

执行逻辑三条铁律

  1. 按 node 序号升序匹配,命中即停,执行该节点 apply 后放行
  2. 节点模式 deny / permit:deny 命中=拒绝且终止匹配;整表走完没匹配默认拒绝
  3. 节点没有 if-match = 匹配一切("全放"节点用)

常用 apply 项

apply作用域
cost / cost-typeOSPF/IS-IS 开销
preference协议优先级
tag路由标记(防环关键)
local-preference / cost(MED)BGP
community / as-pathBGP
ip-address next-hop改下一跳
铁律route-policy 结尾永远显式写一个空 permit 节点兜底,除非你明确要"默认全拒"——LAB 考题常"只放行 X,其余拒绝",此时默认全拒反而是你想要的。

route-policy vs filter-policy 速选

场景用谁理由
IGP 里按前缀放行/拒绝计算filter-policy简单、开销小
import-route 时"选择性引入+改属性"route-policyfilter 管不了 apply
BGP 邻居粒度收发控制route-policy(或 peer filter-policy 纯过滤)改 LP/MED/团体必须 route-policy
只做前缀级通过/拒绝前缀列表 + filter-policy语义最清晰

工具优先级

匹配路由 → 前缀列表;只过滤 → filter-policy;边滤边改 → route-policy;匹配报文 → ACL。

组合拳

route-policy 节点里 if-match 可叠 ACL + 前缀列表 + tag + 路由类型(if-match route-type external 等,多条件为"与")。

验证命令

display route-policy P1(看 matched counts 命中次数)
reset route-policy P1 counters(清零重算)
BGP: display bgp routing-table peer x received-routes

5.2

路由引入

import-route 的正确姿势 + preference 的隐藏坑

引入基础与规则

# 引入静态到 OSPF
ospf 1
 import-route static cost 50 type 1 tag 10
# OSPF ↔ IS-IS 互引
isis 1
 import-route ospf 1 inherit-cost
ospf 1
 import-route isis 1
# 只引必要前缀
ospf 1
 import-route direct route-policy ONLY-LOOPBACK
  • 引入 = "把其他协议/来源的路由重新发布为本地协议路由",发生在单台设备单方向
  • 引入的初始 Cost / 类型因协议而异(OSPF 外部 Type-2 默认 cost 1;IS-IS 外部 cost 15 等)
  • inherit-cost(IS-IS):继承原开销,比拍脑袋值科学
  • 引入的路由必须存在于本地路由表(且为该协议最优)——"路由表没有的引不进来"
优先级(preference)速记直连 0 / 静态 60 / OSPF 10(域内) / IS-IS 15 / OSPF ASE 150 / IS-IS 外部 160 / BGP 255(华为 VRP)。外部路由优先级"劣化"正是引入问题温床。

双点双向引入:两大经典病

OSPF 域(域内路由优先级 10) IS-IS 域(外部路由优先级 160) R-A R-M R-B 引入点①引入点② 次优:B 去 OSPF 明细,明明可域内直达,却因外部路由(160)被引到引入点绕行
双点双向引入:两个引入点 × 两个方向 = 四条注入路径

病一:次优路径

B 去往 OSPF 明细有两条路:① 走 IS-IS 域内到引入点② 再进 OSPF;② 直接从引入点①学到的"OSPF 明细被引入 IS-IS 后变成的外部路由(优先级 160)"。口决:外部路由永远劣于本地域内路由,于是 B 舍近求远,绕到引入点②再折返——流量走了非预期路径。

病二:路由环路

A 把 OSPF 路由灌进 IS-IS → B 在 IS-IS 学到 → B 又把它当"IS-IS 路由"引回 OSPF(缺 tag 标记时 B 分不清这是"回锅肉")→ 环。IGP 间没有 AS_PATH 那样的免疫机制。

处方:Tag + Route-Policy 防环

# 思路:本域路由出去时打上"本域标记",回流时见到自己的标记就拒收
# 【方向一】OSPF → IS-IS:只引 OSPF 原生路由(无 tag),打 tag 10
route-policy OSPF2ISIS deny node 10
 if-match tag 10                     # 从 OSPF 回流的(带自己标记)拒绝
route-policy OSPF2ISIS permit node 20
 apply tag 10                        # 其余放行并打 tag 10
# 【方向二】IS-IS → OSPF:拒收带 tag 10 的,其余打 tag 20
route-policy ISIS2OSPF deny node 10
 if-match tag 10
route-policy ISIS2OSPF permit node 20
 apply tag 20
# 挂载
ospf 1
 import-route isis 1 route-policy ISIS2OSPF
isis 1
 import-route ospf 1 route-policy OSPF2ISIS
# 效果:OSPF 路由进 IS-IS 带 tag10;若它又被 IS-IS 引回 OSPF,
#       OSPF 侧见 tag10 直接拒收 —— 环路被切断
  • Tag 打"来源域"标记:从 OSPF 出去的路统一打 tag10;从 IS-IS 出去的统一打 tag20
  • 每个引入点策略 = 先 deny 自己的标记,再 permit 其余并打标 → 回锅路由被拦在门外,环路不可能
  • 关键点:permit 节点不带 if-match,保证"本域原生路由(无 tag)"能正常引入;若像"只引带对侧 tag 的路"那样写,域内路由因无 tag 会被全部拒掉
  • 次优路径另配:调引入路由的 preference(如 OSPF 引入的 IS-IS 路由 preference 15,恢复"域内更优"直觉),或只在一点引入+另一点只引默认
LAB 标准三件套① 双向引入打不同 tag ② 各引入点"先拒本域 tag,再放行其余并打标" ③ 域内访问明细走 IGP(必要时 preference 微调)。照抄不丢分。

引入引起的问题:三个现场

现场① 环路

两域互相引入无标记 → TTL 递减报错/tracert 打转。处置:tag + 互斥引入(上文)。

现场② 次优

引入路由优先级劣化,本该走 IGP 短路却绕引入点。处置:preference 拉平 / 精确引入 / 只留单点。

现场③ 拖垮设备

import-route 不带策略引入整表(如 10 万条 BGP → IGP)。处置:route-policy 白名单,永远只引"必要前缀"。

BGP 引入特例BGP 引入 IGP:本地表必须 learned from peer 才算;IGP 引入 BGP 时network 优先于 import(Origin 更干净);OSPF 引入 BGP 的路标 O_ASE 150,与 IS-IS 160 一起构成"引入后优先级劣化"两兄弟。
5.3

选路操纵与策略路由

改表(路由层面)vs 改流(转发层面)

路由选路的四把螺丝刀

手段作用对象典型命令适用
preference同前缀不同协议route-policy apply preference / preference 命令引入后恢复直觉优先级
cost同协议内接口 cost / apply costIGP 内部精确牵引
tag标记分组apply tag / if-match tag引入防环、策略联动
属性族BGPapply local-preference / cost / community / as-path域间牵引(第 4 章)
比较顺序同前缀多来源:preference 先比,cost 后比——preference 决定"谁写的路由进表",cost 只在同一协议内部比。改错层 = 白改,LAB 最大隐形失分。

策略路由 PBR:不改表,改流

# 按源地址把流量定向到下一跳
acl 3000
 rule permit ip source 10.1.10.0 0.0.0.255
traffic classifier C1
 if-match acl 3000
traffic behavior B1
 redirect ip-nexthop 20.1.1.2
traffic policy P1
 classifier C1 behavior B1
interface GigabitEthernet0/0/1
 traffic-policy P1 inbound

PBR vs 路由选路

路由表PBR
依据目的前缀ACL 五元组/源
层次网络层选路转发策略(入接口)
优先级基准高于路由表
失效行为默认回退路由表(不丢弃)
联动track 才有感知切换

典型用途

  • 多出口按源分流(研发走专线,访客走宽带)
  • 旁挂设备引流(防火墙/探针)
  • 与 NQA/BFD 联动实现链路质量感知切换

PBR 失效行为:默认回退,不是丢弃

易错点:下一跳不可达时会发生什么?

执行 redirect ip-nexthop 时,若下一跳在该出接口没有 ARP 表项,设备会触发 ARP 学习;学不到 ARP 就按原始转发路径转发(回退查路由表)——并不会自动丢弃,也不会自动切换。很多"配了 PBR 却不生效 / 流量依旧走老路"的现场问题,根因就在这里。

三种收尾行为对照

写法下一跳不可达时适用
redirect ip-nexthop A回退查路由表(默认)只做分流,不强求绕行
... A track nqa X + 备用track 失效则用下一条 redirect双出口主备切换
... A discard直接丢弃,不查表强制引流到安全设备
# ① 建 NQA 探测(探测 20.1.1.2 通不通)
nqa test-instance admin toISP
 test-type icmp
 destination-address ipv4 20.1.1.2
 frequency 10
 start now
# ② track 关联 NQA  →  ③ 绑定到 redirect
track nqa admin toISP
traffic behavior B1
 redirect ip-nexthop 20.1.1.2 track nqa admin toISP
 redirect ip-nexthop 30.1.1.2
# 不可达直接丢:... discard

核心知识要点速记 考前 10 分钟过一遍

考点必背细节频度
ACL vs 前缀列表ACL 五元组+通配符(0 匹配 / 1 忽略),数据面路由面两用;ip ip-prefix 专管路由,支持 greater-equal / less-equal 掩码区间;两者默认动作都是 permit★★★★
filter-policy 语义OSPF/IS-IS 入向:只拦"进路由表",LSDB 照常同步(区别于距离矢量真不收);出向:限制 LSA 生成(export 要在 ABR/ASBR 上才有效)★★★★★
route-policy 规则node + if-match / apply;未命中任何节点隐含 deny;引用了不存在的 route-policy = permit all★★★★★
引入规则只引入路由表中 active 的路由;OSPF 引入默认 Type-2、cost 1、tag 1;直连/静态必须显式 import-route;BGP 引入需在地址族下★★★★
协议优先级直连 0 / OSPF 10 / IS-IS 15 / 静态 60 / RIP 100 / OSPF ASE·NSSA 150 / BGP 255 —— 双点双向次优的根源★★★★★
双点双向两病次优(150 vs 10 优先级碾压)+ 环路(回灌路由重新注入);药方:Tag + route-policy 拒收本域路由 + 两点 preference 对齐★★★★★
PBR 要点不改路由表改转发;接口下 policy-based-route(入方向);apply next-hop 不可达时默认回退查路由表,不是丢弃;全局 PBR 优先于普通转发★★★★
四把螺丝刀preference(本机生效)、route-policy 改属性/过滤、filter-policy 过滤、import-route 可控引入 —— LAB 选路控制万能组合★★★
易错陷阱① 前缀列表 10.1.1.0 24 greater-equal 24 less-equal 32 ≠ 精确匹配 /24,是"≥24 位"区间;② route-policy 每个 node 要写 permit/deny,默认 permit 节点也要显式;③ import-route 不引默认路由——默认路由要靠 default-route-advertise。

练习重点 笔试 × LAB 双线

笔试刷题方向

  1. 前缀列表区间计算:给 greater/less-equal 判断哪些网段命中(手算三道)
  2. route-policy 推演:给 3~4 个 node 判断某路由最终 permit/deny 与改动结果
  3. filter-policy 位置差异:链路状态协议 vs RIP 的入向过滤本质不同
  4. 优先级排序:混入 OSPF ASE 150 的排序题
  5. PBR 行为判断:next-hop down 后走哪、报文从哪个方向匹配
达标线给一张双点双向拓扑,5 分钟写出含 Tag 防环的完整配置。

实验强化清单

  1. 双点双向引入(OSPF↔IS-IS)全量复刻:先复现次优 → 再复现环路 → Tag 方案根治
  2. route-policy 同时改 cost + 优先级 + 打 tag,一条策略三个动作
  3. filter-policy import/export 分别验证:对照 LSDB 与路由表差异
  4. PBR 指向不可达下一跳,验证回退行为与 tracert 结果
验证命令自查display ip ip-prefixdisplay route-policydisplay current-configuration | include policy —— 配置改完必做"两端对称"检查。

本章小结

工具分家ACL 匹配流量;前缀列表匹配路由(含掩码长度 ge/le);filter-policy 只滤不改;route-policy 边滤边 apply。
route-policy 铁律节点升序、命中即停;无 if-match 匹配一切;走完全程默认拒 —— 空节点兜底是肌肉记忆。
filter-policy 层次OSPF import 滤计算不滤 LSDB;export 只管 Type-5。作用层次题必考。
双点双向引入两病(环+次优)一药(tag 互斥引入);辅以 preference 拉平、单点引入+默认路由收敛法。
选路分层先 preference(跨协议)后 cost(协议内);BGP 属性族管域间。
PBR改流不改表,优先于路由表;多出口分流/引流旁挂标配。

课后思考

为什么 filter-policy import 在 OSPF 中不影响 LSDB?如果目的是"让对端学不到某前缀",正确做法有哪些?
双点双向引入中,如果只打了 tag 却忘了在 if-match 中互斥,故障现象是什么?如何用 display 快速证实是引入环路?
OSPF 引入 IS-IS 路由后,域内到达该前缀反而绕路。给出至少两种修复方案并说明各自副作用。
route-policy permit 节点 if-match 命中但 apply cost 同时配了 deny 节点在前——执行顺序如何?写出最终行为。
PBR 的 redirect 下一跳失效后流量去哪?这与浮动静态路由的切换逻辑有什么本质差异?

实验 5:三域缝合大实验 LAB · 3 学时

eNSP · 7 路由器OSPF + IS-IS + 静态对标 LAB 真题缝合题

任务书

  1. R1-R2 OSPF Area0(R1 侧挂 10 个 loopback 模拟业务网段)
  2. R3-R4 IS-IS L2,R2/R3 双点互引(tag 10/20 互斥防环)
  3. R5 静态去 R4,R4 引入静态(带 tag 30)进 IS-IS 再进 OSPF
  4. 精确控制:只允许 10.1.0.0/16(掩码 24-28)进入 IS-IS
  5. 次优修复:preference 调整让 R4 去往 10.1.x 直走 OSPF 域
  6. PBR:R6 访问 172.16.0.0/16 定向走 R7(验证回退行为)
验证点预期
tracert R6→10.1.1.1无打转,路径符合设计
display ip routing-table 10.1.1.0 proto来源协议正确(次优已修)
display route-policy命中计数合理(无"全量"误引入)
拔掉 PBR 下一跳流量回退查表不中断
评分点整题完成应 ≤ 60 分钟;tag 编号、route-policy 命名在题目未规定时自拟但必须全局一致可追溯