为什么需要放宽防环检查
BGP 防环的第一道机制是 AS_PATH 检查:收到路由时若发现 AS_PATH 中包含本 AS 号,默认判定为环路并丢弃。但有些拓扑里路由是合法地绕回本 AS 的——最典型的是 CE 双归到同一台 PE(两个 PE 属于同一 AS,路由从一侧发出去、从另一侧绕回来),或同一 AS 内的多条链路互备。这类场景需要用 allowas-in 按邻居放宽:允许 AS_PATH 中出现本 AS 号,并可用次数参数限制允许出现的最大次数。
基本信息
| 默认行为 | AS_PATH 含本 AS 号即视为环路并丢弃 |
|---|---|
| 适用拓扑 | CE 双归同一 PE、双 PE 同 AS、备份路径绕回本 AS |
| 配置位置 | 邻居或地址族下:neighbor x allowas-in [次数] |
| 次数含义 | 允许本 AS 号在 AS_PATH 中出现的最大次数 |
| 生效方向 | 作用于从该邻居收到的入向路由 |
| 主要风险 | 放宽防环检查后,环路防护要靠拓扑设计兜底 |
典型使用场景
- CE 双归到同一 PE:让备份路径在网络正常时也能被学习到
- 同一 AS 的多条链路互备:路由从对端绕回本 AS,需要放宽入向检查
- MPLS VPN 相关组网:PE 同 AS 且 CE 侧出现本 AS 号的结构
- 接手配置审计:确认现网里的 allowas-in 为什么配、是否还能删除
配置与核对
配置与核对
router bgp 65001
address-family ipv4 unicast
neighbor 10.0.0.2 allowas-in 2 # 允许本 AS 号最多出现 2 次
!
show ip bgp 10.1.0.0 # 看 AS_PATH 里本 AS 号的位置与次数
show ip bgp neighbors 10.0.0.2 # 看该邻居生效的放宽设置与方向
show ip bgp regexp _65001_ # 统计 AS_PATH 中含本 AS 号的路由数量环路控制手段对照
| 手段 | 作用范围 | 代价 |
|---|---|---|
| AS_PATH 默认检查 | 所有邻居,标准行为 | 无额外代价 |
| allowas-in | 按邻居放开,可限制出现次数 | 防环能力下降,需要拓扑兜底 |
| 调整 AS 编号 | 让两侧不再同 AS,从根源消除绕回 | 需要重新规划,影响面大 |
| 改走非 BGP 承载 | 一侧用静态或其他协议 | 失去动态收敛能力 |
| 拓扑设计规避 | 让路由在设计上不绕回本 AS | 前期投入,但运维成本最低 |
allowas-in 属于最后手段:能用拓扑规避(调整 AS 号、改接方式)就不要放宽。次数参数不要图省事写大值——本 AS 号可能出现的次数取决于拓扑里最长的那条绕行路径,写大了等于把防护阈值抬到没有意义的位置。
放宽防环检查意味着环路风险从协议转嫁给运维:配置前确认拓扑不存在形成真实环路的可能,配置后持续观察 AS_PATH 中本 AS 号的出现次数与来源,出现异常增长时先按环路排查。