RFC6811:BGP前缀源验证

文献来源: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 定义的路由验证状态有哪些?各自的触发条件是什么?

答案:共三种验证状态,触发条件如下:

  1. Valid(有效):至少有 1 个 VRP(验证 ROA 负载)与路由匹配,即路由前缀被 VRP 覆盖、路由前缀长度≤VRP 最大长度、路由起源 AS 号与 VRP 授权 AS 号一致;
  2. Invalid(无效):至少有 1 个 VRP 覆盖路由,但无任何 VRP 与路由匹配;
  3. NotFound(未找到):无任何 VRP 覆盖路由,或路由未执行验证时的默认状态。

问题 2:RFC 6811 的 BGP 前缀起源验证机制存在哪些核心局限?实际部署中需注意什么?

答案:核心局限包括:

  1. 仅验证路由起源 AS 号,不验证 AS_PATH 路径完整性,无法抵御 "AS-in-the-middle 攻击";
  2. 难以防范蓄意攻击(攻击者可 prepend 有效起源 AS 号绕过验证),更适用于防范配置错误;
  3. 依赖分布式 VRP 数据库的一致性,不同节点可能因更新时机存在数据差异。实际部署注意事项:
  4. 需显式配置基于验证状态的路由策略(默认不排斥任何状态路由);
  5. 处理 Invalid 状态路由需谨慎,避免误判导致合法路由中断;
  6. 若调整非传播属性(如 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 数据库,判断路由前缀是否被覆盖、是否匹配,最终确定路由的验证状态,为路由策略提供决策支持。

相关推荐
tokepson8 小时前
香橙派AI Pro个人云平台 - 从零搭建全记录
linux·服务器·技术·记录
月亮!8 小时前
移动端测试重磅升级:跨平台自动化测试框架深度对比
运维·网络·人工智能·测试工具·容器·自动化·测试用例
凯子坚持 c9 小时前
Docker 容器全生命周期管理与运维命令深度解析
运维·docker·php
java_logo9 小时前
MILVUS Docker 容器化部署指南
运维·人工智能·docker·容器·prometheus·milvus
@YDWLCloud9 小时前
用腾讯云国际版搭建全球加速架构:5 分钟实现多地访问提速
服务器·架构·云计算·github·腾讯云
渡我白衣10 小时前
计算机组成原理(1):计算机发展历程
java·运维·开发语言·网络·c++·笔记·硬件架构
步步为营DotNet10 小时前
深入理解IAsyncEnumerable:异步迭代的底层实现与应用优化
java·服务器·数据库
_OP_CHEN10 小时前
【Git原理与使用】(一)告别文件混乱!Git 初识:从版本灾难到高效管理的终极方案
linux·运维·git·github·运维开发·版本控制·企业级组件
装不满的克莱因瓶10 小时前
【Java架构 搭建环境篇三】Linux安装Git详细教程
java·linux·运维·服务器·git·架构·centos