文献来源:BGP Prefix Origin Validation

RFC 6811(2013 年 1 月发布,互联网标准跟踪文档) 定义了 BGP 前缀起源验证的核心机制,基于 RPKI 体系的ROA(路由源授权) 数据,将其转换为 BGP 扬声器可直接使用的VRP(验证 ROA 负载) ,通过判断路由前缀是否被 VRP 覆盖、路由起源 AS 号是否与 VRP 授权 AS 号匹配,将路由划分为Valid(有效)、Invalid(无效)、NotFound(未找到) 三种验证状态,支持四字节 AS 号(RFC 6793),仅验证路由起源合法性(不涉及路径验证),其验证结果可用于路由策略过滤或优先级调整,但存在依赖验证数据库安全性、无法抵御 "中间人 AS 攻击" 等局限。

一、文档基础信息
| 项目 | 详情 |
|---|---|
| 文档编号 | RFC 6811 |
| 发布时间 | 2013 年 1 月 |
| 作者 | Pradosh Mohapatra(Cisco)、John Scudder(Juniper)等 5 人 |
| 文档类别 | Standards Track(互联网标准跟踪文档,IETF 共识产物) |
| 核心目标 | 解决 BGP 前缀误宣告、中间人攻击等威胁,提供BGP 路由起源 AS 号的合法性验证机制 |
| 适用范围 | 所有 BGP 路由(支持 RFC 6793 定义的四字节 AS 号),不涉及 MPLS 标签路由 |
| 核心依赖 | 基于 RPKI 体系(RFC 6480)的 ROA 数据(RFC 6482),或其他可映射前缀与授权 AS 号的数据库 |
二、核心概念与定义
1. 关键术语(需大写区分)
| 术语 | 定义 |
|---|---|
| VRP(Validated ROA Payload) | 本地存储的验证后 ROA 数据,包含四要素:IP 地址、前缀长度、最大长度、起源 AS 号 |
| Prefix(前缀) | (IP 地址 + 前缀长度),遵循 RFC 4632 的无类域间路由(CIDR)规则 |
| Route(路由) | 从 BGP UPDATE 提取的数据,含 1 个前缀、AS_PATH 及其他属性(RFC 4271) |
| Route Origin ASN(路由起源 AS 号) | 从 AS_PATH 属性提取:1. AS_SEQUENCE 类型:最后一段最右侧 AS 号2. AS_CONFED_SEQUENCE/SET 或 AS_PATH 为空:BGP 扬声器自身 AS 号3. 其他类型:标记为 "NONE" |
| Covered(覆盖) | 路由前缀满足:VRP 前缀长度≤路由前缀长度,且 VRP 前缀地址与路由前缀地址在 VRP 指定比特位上完全一致(路由前缀为 VRP 前缀或其子前缀) |
| Matched(匹配) | 路由前缀同时满足:被 VRP 覆盖、路由前缀长度≤VRP 最大长度、路由起源 ASN=VRP ASN |
2. 路由验证状态
| 状态 | 触发条件 |
|---|---|
| Valid(有效) | 至少有 1 个 VRP 与路由匹配 |
| Invalid(无效) | 至少有 1 个 VRP 覆盖路由,但无任何 VRP 与路由匹配 |
| NotFound(未找到) | 无任何 VRP 覆盖路由;或未执行验证时默认设为该状态 |
三、验证流程与机制
1. 数据准备
- BGP 扬声器从本地 RPKI 缓存加载 VRP 数据,构建本地 VRP 数据库(pfx_validate_table)
- 缓存与 BGP 扬声器的协议交互细节由 RFC 6810 定义,本文档不涉及
- VRP 数据库需定期更新,更新时需重新验证 "受影响前缀"(被新增 / 删除 / 修改 VRP 匹配的前缀)并触发 BGP 决策流程
2. 验证触发时机
- 接收邻居发送的 BGP UPDATE 消息时,需对其中每个路由执行验证
- 路由从其他协议重分发至 BGP(如静态路由)时,建议执行验证
- 支持通过配置控制哪些路由需要验证
3. 核心验证逻辑(伪代码权威)
result = BGP_PFXV_STATE_NOT_FOUND;
prefix_exists = FALSE;
// 遍历VRP数据库中所有覆盖该路由前缀的条目
entry = 从pfx_validate_table查询路由前缀的下一个覆盖条目;
while (entry 不为空) {
prefix_exists = TRUE;
if (路由前缀长度 ≤ entry->max_length) {
if (路由起源ASN != NONE 且 entry->origin_as != 0 且 路由起源ASN == entry->origin_as) {
result = BGP_PFXV_STATE_VALID;
返回result; // 优先判定为有效,直接返回
}
}
entry = 下一个覆盖条目;
}
// 有覆盖但无匹配,判定为无效
if (prefix_exists == TRUE) {
result = BGP_PFXV_STATE_INVALID;
}
return result;
- 遍历 VRP 无顺序要求,但验证结果唯一确定
- 排除情况:VRP ASN 为 "NONE" 或 0 时,无法匹配任何路由
4. 关键约束
- 验证状态仅为路由的本地属性,默认不得因状态排除路由进入 Adj-RIB-In 或 BGP 决策流程(需显式配置)
四、部署与策略控制
1. 策略应用
- 必须支持将验证状态集成到路由策略过滤功能中,可选策略包括:
- 过滤路由:拒绝所有 Invalid 状态路由
- 调整优先级:通过修改 LOCAL_PREF 等属性,提升 Valid 状态路由的偏好度
- 处理 Invalid 状态路由需谨慎,属于本地策略决策
2. 状态传播
- 若通过非传播属性(如 LOCAL_PREF)调整路由优先级,需将验证状态传播给 IBGP 对等体以保障路由正确性
- 传播方式:发送方通过社区属性 / 扩展社区属性标记验证状态,接收方通过匹配该属性还原状态
五、局限与安全考量
1. 机制局限性
- 仅验证路由起源 AS 号,不验证 AS_PATH 路径完整性,无法抵御 "AS-in-the-middle 攻击"
- 仅能防范配置错误,难以抵御蓄意攻击者(攻击者可在伪造路由中 prepend 有效起源 AS 号)
- 依赖分布式 VRP 数据库的一致性,不同缓存 / 路由器可能因更新时机差异存在数据不一致(无根治方案)
2. 安全风险
- 验证数据库被篡改(注入 / 删除记录)可能导致 DoS 攻击:合法路由被标记为 Invalid,或非法路由被误判为 Valid
- 未对 VRP 数据传输过程的安全性做额外定义,依赖 RPKI 缓存的安全机制
六、引用标准
| 类型 | 关键引用文档 | 用途 |
|---|---|---|
| 规范性引用(6 项) | RFC 2119 | 定义需求等级关键词(MUST/SHOULD 等) |
| RFC 3779 | X.509 证书的 IP 地址 / AS 号扩展标准 | |
| RFC 4271 | BGP-4 协议基础定义 | |
| RFC 4632 | CIDR 地址分配与聚合标准 | |
| RFC 6482 | ROA 数据格式标准 | |
| RFC 6793 | 四字节 AS 号支持标准 | |
| 信息性引用(4 项) | RFC 6480 | RPKI 核心架构文档 |
| RFC 6810 | RPKI 与路由器的协议交互标准 | |
| ORIGIN-OPS | 起源验证的操作策略考量(工作草案) | |
| AS0 | AS 0 处理规范(工作草案) |
关键问题
问题 1:RFC 6811 定义的路由验证状态有哪些?各自的触发条件是什么?
答案:共三种验证状态,触发条件如下:
- Valid(有效):至少有 1 个 VRP(验证 ROA 负载)与路由匹配,即路由前缀被 VRP 覆盖、路由前缀长度≤VRP 最大长度、路由起源 AS 号与 VRP 授权 AS 号一致;
- Invalid(无效):至少有 1 个 VRP 覆盖路由,但无任何 VRP 与路由匹配;
- NotFound(未找到):无任何 VRP 覆盖路由,或路由未执行验证时的默认状态。
问题 2:RFC 6811 的 BGP 前缀起源验证机制存在哪些核心局限?实际部署中需注意什么?
答案:核心局限包括:
- 仅验证路由起源 AS 号,不验证 AS_PATH 路径完整性,无法抵御 "AS-in-the-middle 攻击";
- 难以防范蓄意攻击(攻击者可 prepend 有效起源 AS 号绕过验证),更适用于防范配置错误;
- 依赖分布式 VRP 数据库的一致性,不同节点可能因更新时机存在数据差异。实际部署注意事项:
- 需显式配置基于验证状态的路由策略(默认不排斥任何状态路由);
- 处理 Invalid 状态路由需谨慎,避免误判导致合法路由中断;
- 若调整非传播属性(如 LOCAL_PREF),需通过社区属性将验证状态传播给 IBGP 对等体,保障路由正确性。
问题 3:RFC 6811 中的 VRP(验证 ROA 负载)是什么?其与 ROA 的关系及在验证流程中的作用是什么?
答案:VRP 是 BGP 扬声器本地存储的 "验证后 ROA 负载",核心包含 IP 地址、前缀长度、最大长度、起源 AS 号四要素;与 ROA 的关系:VRP 是 ROA 数据经 RPKI 缓存验证后转换的本地可用格式(ROA 是 RPKI 体系中带数字签名的路由源授权对象,遵循 RFC 6482);在验证流程中的作用:VRP 构成了前缀 - 授权 AS 号的映射数据库,是路由验证的核心依据 ------BGP 扬声器通过遍历 VRP 数据库,判断路由前缀是否被覆盖、是否匹配,最终确定路由的验证状态,为路由策略提供决策支持。