改写 ORIGIN 的适用与风险
ORIGIN 是路径属性之一,取值 IGP、EGP 与 INCOMPLETE,数值越低在选路比较中越靠前:重分发进来的路由通常带 INCOMPLETE,若对端在同一比较步骤上更看重 IGP 来源,就可能出现选路差异。用 set origin 可以把取值改成 IGP 或 EGP,但要清楚这只改变属性比较结果,路由的真实来源并没有变化。
基本信息
| 取值 | i(IGP,数值 0)、e(EGP,数值 1)、?(INCOMPLETE,数值 2) |
|---|---|
| 比较规则 | 选路时数值小的优先 |
| 改写命令 | route-map 中 set origin igp | egp | incomplete |
| 作用范围 | 仅改变属性取值,不改变路由实际来源 |
| 核对命令 | show ip bgp <前缀>、show ip bgp neighbors <ip> advertised-routes |
典型使用场景
- 清理重分发产生的 INCOMPLETE:与对端约定后统一属性语义
- 与对端对齐选路:双方认知不一致时,通过属性统一减少分歧
- 策略验证:确认改写后对端选路是否真的按预期变化
- 风险评审:改写前说明可追溯性下降的代价
- 回归对比:记录改写前后的对端路由表差异
配置与核对
配置与核对
route-map RM-ORIG permit 10
match ip address prefix-list PL-BIZ
set origin igp
!
router bgp 65001
neighbor 10.0.0.2 route-map RM-ORIG out
!
# 核对:本端属性已改写
show ip bgp 10.1.1.0/24 | include Origin
# 核对:对端看到的内容(需在对端执行)
show ip bgp neighbors 10.0.0.2 advertised-routes取值与含义
| 取值 | 含义 | 来源 |
|---|---|---|
| i(IGP) | 通过 IGP 引入或本地始发,比较中优先 | network 语句或 IGP 重分发 |
| e(EGP) | 通过早期 EGP 协议引入 | 现今极少见 |
| ?(INCOMPLETE) | 来源不完整,通常为重分发产生 | 静态或其它协议重分发 |
| 改写后 | 属性变化但真实来源未变 | set origin 仅修改属性值 |
批量改写会让来源信息变得不可追溯:变更记录里要写清改写范围与原因,否则日后排障时无法判断某条路由究竟是本地始发还是重分发引入。
改写前后在对端各采一次路由表快照:如果对端选路没有变化,说明这一比较步骤并非决定因素,继续调整它只是白忙。属性改写要服务于明确效果,而不是为了让输出看起来整齐。
优先把改写放在出向:出向只影响对端看到的内容,本网内部的选路判断保持不变,影响范围更可控,出问题时也更容易回退。