首页 / 内容指南 / 当前文章

BGP 路由因 AS_PATH 含本地 AS 被拒:allowas-in 与 as-override 排查

发布于 2026-08-26 · routecfg.com 编辑部

BGP 邻居已经 Established,对端也声称发送了前缀,但本端路由表看不到;抓包或对端 Adj-RIB-Out 中的 AS_PATH 含有本地 AS 号。按照 BGP 的基本环路保护,本地 AS 出现在路径中时,路由通常被排除。allowas-in 和 as-override 能处理特定的多站点同 AS 场景,但它们改变环路防护边界,不能作为“先让路由进来再说”的通用开关。

本文目录(25 节)

先确认是收到后拒绝,不是根本没收到

在对端检查目标前缀是否存在于发给该邻居的 Adj-RIB-Out,并核对出站策略。然后在本端查看接收更新、filtered/rib-failure 计数与邻居日志。

使用软重配置缓存、BMP、路由服务器遥测或受控抓包时,要遵守设备能力和安全策略。不要为了看 received-routes 在生产贸然启用高内存功能。

保存完整路径与会话上下文

记录前缀、地址族、邻居 IP、双方 configured AS、实际 OPEN 中的 AS、AS_PATH、VRF、策略、时间和路由器版本。四字节 AS、local-as 和 confederation 会让简单截图产生误判。

不要只复制格式化后的一行。确认路径中的数字是 AS_SEQUENCE、AS_SET 还是 confederation segment,并保存配置中所有 peer-group 继承项。

RFC 4271 的默认环路检测

RFC 4271 规定,AS_PATH 标识路由经过的自治系统。决策过程会扫描完整路径;若本地系统 AS 出现在其中,通常应把该路由排除,以防止自治系统级转发环路。

RFC 同时指出,配置为接受包含自身 AS 的路由属于规范范围外的本地行为。因此启用放宽后,运营者必须自己证明不会形成环路。

先确认“本地 AS”到底是哪一个

设备可能同时存在全局 router bgp AS、VRF AS、邻居 local-as、no-prepend、replace-as 或 dual-as。环路检测使用哪些 AS 值取决于实现与具体选项。

检查运行配置与会话详细信息,不要只看设备资产表。迁移期间旧 AS 与新 AS 并存时尤其容易误判。

最常见场景是多个客户站点使用同一 AS

在 MPLS L3VPN 或其他运营商互联中,客户多个站点可能都使用 AS 65010。站点 A 的 CE 把路径发给 PE,运营商传到站点 B 后,路径仍包含 65010,B 端默认认为发生环路并拒绝。

这可能是预期的保护,也可能是网络设计要求跨站点共享同一 AS。修复应由 PE/CE 设计共同决定,而不是单边临时放宽。

allowas-in 在接收端放宽检查

FRRouting 的 neighbor ... allowas-in 允许接收 AS_PATH 中含当前系统 AS 的路由,并可限制允许出现次数。它常用于无法直接互联、却复用同一 AS 的站点。

该命令不删除路径中的本地 AS;它只是放宽本端接收判断。后续再次传播时,路径和策略仍需仔细验证。

次数限制不是装饰

allowas-in 1 与允许多次出现的风险不同。先从真实拓扑推导路径中本地 AS 合理出现的最大次数,设置最小值,并对超过阈值的更新保留拒绝与告警。

不要为了让一个异常路径通过就直接允许最高次数。路径反复出现本地 AS 可能正是泄漏或环路证据。

allowas-in origin 更窄但语义要验证

FRR 支持 allowas-in ... origin 等形式,用于更受限的场景。不同版本命令能力和匹配位置可能不同,必须以运行版本文档与 show running-config 为准。

在实验拓扑用合成路径验证允许与拒绝样本,不能只依赖配置被 CLI 接受。

as-override 在发送端改写客户 AS

FRR 的 neighbor ... as-override 会在向 eBGP 邻居发送时,把路径中匹配该邻居 AS 的值替换为本地 AS。典型用途是 PE 向多个使用相同 AS 的 CE 发布跨站路由。

这样 CE 收到的路径不再包含自己的 AS,默认环路检查即可通过。它改变的是发送出去的 AS_PATH,与 CE 侧 allowas-in 的位置和责任不同。

两种方案的责任边界

allowas-in 让接收端接受原本视为环路的路径;as-override 由提供者侧改写路径,使接收端无需放宽。选择取决于控制权、审计要求、跨站可见性和故障域。

不要两边同时开启后停止分析。双重改动会让真实生效机制难以判断,并可能扩大后续泄漏影响。

as-override 只应针对正确邻居

FRR 文档说明该命令用于 eBGP peer。若在错误 peer-group 上继承,可能把路径发给不相关客户时也改写 AS,破坏审计和环路语义。

按 VRF、客户和邻居最小范围配置,检查 peer-group 展开后的有效配置,并对非目标邻居断言路径不被改写。

local-as 迁移会增加判断复杂度

AS 迁移时常用 local-as、no-prepend、replace-as 或 dual-as。设备可能把真实 AS 与替代 AS 都用于部分环路检测,或在通告路径时采用不同 prepend 规则。

建立迁移前、迁移中、迁移后三个路径预期表,分别验证 OPEN AS、入站拒绝和出站 AS_PATH。不要把临时兼容命令永久遗留。

Confederation 不是普通 AS_PATH

BGP confederation 使用特殊路径段隐藏内部子 AS,对外呈现 confederation identifier。调试输出若省略括号或格式,被看作“本地 AS 重复”会导致错误修复。

确认路径段类型和会话是 confed 内部还是外部。不要用 allowas-in 修复 confederation 配置错误。

Route Server 场景要核对 AS_PATH 行为

Internet Exchange Route Server 常不按普通 eBGP 方式把自己的 AS 加入 AS_PATH,参与者仍依赖源 AS 与自身 AS 做环路检查。错误的 route server 配置或策略泄漏可能让路径异常返回来源网络。

核对平台设计与相关 RFC/运营政策。不能因为邻居是 route server 就默认所有 own-AS 路径安全。

路由策略仍可能是另一道拒绝原因

即使 allowas-in 允许路径通过,prefix-list、AS-path filter、community policy、RPKI 状态或最大前缀策略仍可能拒绝。修复 own-AS 后仍无路由时,应继续沿入站策略链检查。

逐条记录拒绝原因和计数,不要一次清空所有策略来“验证连通”。

NEXT_HOP 也必须可达

路径通过 AS loop 检查后,还要满足下一跳解析和最佳路径条件。路由存在于 BGP 表但未装入 RIB,可能是 NEXT_HOP 不可达或已有更优路由。

把“已接收”“有效”“最佳”“已安装”“已下发 FIB”分开验收,避免把下一个问题误认为 allowas-in 无效。

防止数据平面真正形成环路

控制平面允许 own-AS 路由后,必须验证各站点到目标前缀的下一跳链,确保流量不会在 CE、PE 或双运营商之间往返。使用有限 TTL 的探测、FIB 查询和接口计数,避免高流量测试。

尤其检查默认路由、汇总路由和静态回注。即使具体前缀路径正确,覆盖它的汇总也可能制造环路。

多归属需要额外防环标记

同一站点连接多个 PE 时,仅靠 AS_PATH override 可能无法识别路由是否从该站点的另一条连接返回。L3VPN 设计常配合 Site of Origin 等机制控制站点回流。

RFC 6368 也讨论 Origin AS 等 VPN 场景的环路识别。具体选择取决于 PE-CE 协议和平台支持,不能把一个 CE 的 allowas-in 当成完整多归属设计。

汇总路径可能隐藏来源 AS

聚合可改变 AS_PATH 表达,AS_SET 的处理和平台策略会影响本地 AS 是否仍可见。看到汇总路由通过,不代表其所有更具体前缀都不会回流。

分别验证 aggregate 与 more-specific,检查生成聚合的路由器、ATOMIC_AGGREGATE 和策略。不要依赖路径变短来绕过环路检测。

软刷新与变更顺序

修改入站 own-AS 策略后,需要让邻居重新评估相关路由,可使用平台支持的 route refresh/soft clear。避免不必要地硬重置会话,尤其是承载大量前缀的生产邻居。

先部署监控和回滚,再在单邻居、单地址族、小前缀范围做 canary。出现路径数量异常增长立即撤回。

监控异常路径与前缀数量

建立目标邻居接收前缀基线、含本地 AS 路径计数、最长 AS_PATH、拒绝原因和路由变化率。allowas-in 生效后,任何超过预期次数或来自非授权来源的 own-AS 路径都应告警。

监控不能只看会话 Established。环路风险往往在会话完全正常时发生。

最小实验拓扑

用两个同 AS 的 CE 和一个不同 AS 的中间 PE 构造实验:先证明远端前缀因 own-AS 被拒,再分别启用 CE allowas-in 与 PE as-override,观察 received path、best path 和 FIB。

加入一条真正回送的异常路径,确认次数限制和策略仍能拒绝。只有“正常路线能通”不足以证明安全。

变更后的验收标准

验收应证明:路径确实由 own-AS 检查拒绝;本地/邻居 AS 身份准确;方案范围只覆盖目标 VRF/邻居/AFI-SAFI;允许次数最小;路由进入 BGP、RIB 和 FIB;数据平面无环;非目标 own-AS 路径继续拒绝;重载后配置保持;回滚可恢复原有保护。

保存脱敏前后 AS_PATH、前缀计数、FIB 下一跳和告警验证,不记录邻居认证秘密。

常见问题

邻居 Established 为什么还会拒绝 own-AS 路由?

会话建立只证明 BGP 连接正常。每条 UPDATE 仍要经过 AS_PATH 环路检测和入站策略。

allowas-in 与 as-override 有什么区别?

allowas-in 在接收端放宽含自身 AS 的路径;as-override 在发送端把匹配客户 AS 的路径值改写为本地 AS。

allowas-in 次数设得越大越好吗?

不是。应根据拓扑设置最小合理次数;过大会放过更明显的回流或泄漏路径。

开启 as-override 后为什么仍未装表?

继续检查入站策略、NEXT_HOP、最佳路径、RIB failure 与 FIB。AS loop 只是路径资格的一道门槛。

多归属站点只配置 allowas-in 就够了吗?

通常不能据此保证安全。还要设计站点回流防护,例如受支持的 SoO/Origin AS 机制、策略与数据平面验证。

来源资料