返回技术博客

SKNK 中文技术指南

如何通过 BGP 宣告 IPv6 /48?ROA、IRR 与上游核对清单

拿到 IPv6 /48 不等于全网可达。宣告前要确认资源归属、上游接受条件、ROA 与 IRR 记录、本地路由和 BGP 会话,最后从多个视角验证可见性。

技术内容

由 Shikanoko Networks 编写与维护

一个 IPv6 /48 被分配给你,不代表它就全网可达。要通过 BGP 宣告它,你需要:一个 ASN、一个你被授权使用的前缀、一条支持 IPv6 的上游、一台路由表里有这个前缀的路由器,以及匹配的路由登记记录。然后还要验证别的网络到底能不能看到它。

宣告一个 IPv6 /48——通过 eBGP 会话把你的前缀发布给上游,让互联网上的其他网络知道"这段地址空间从这里可达"。宣告成功 = 资源、授权、BGP 策略、上游路径四件事全部对齐。

本文走一遍完整的宣告流程:确认资源 → 准备上游 → 建 RPKI 和 IRR 记录 → 建立 eBGP → 导出前缀 → 从多个视角检查结果。示例使用文档保留前缀 2001:db8:1234::/48 和文档保留 ASN AS64496AS64497(RFC 5398),不是真实资源,绝不能上公网。

白脸小鹿抱着一张 IPv6 前缀卡,从资源台走向一座通往公共路由的桥。

分配到的前缀只有在资源、授权、BGP 策略和上游路径对齐后,才会成为公共路由。

一句话答案

按顺序确认七件事:

  1. ASN 和 IPv6 前缀已分配给你、或被授权使用
  2. 上游接受客户 IPv6 BGP 宣告
  3. 为前缀和将要宣告它的 ASN 创建匹配的 RPKI ROA
  4. 如果上游或对端用 IRR 过滤,创建 IRR route6 对象
  5. 确保 /48 出现在路由器本地路由表里
  6. 建立 eBGP 会话,只导出意图宣告的前缀
  7. 检查本地路由、上游接受情况、RPKI 状态、IRR 对象和公网可见性

BGP 会话 Established 不代表 /48 正在被宣告。路由还可能被你的路由器宣告出去、却被上游的过滤器拒绝。这是两个独立的检查。

"宣告 /48"有七种状态

状态 含义
/48 已分配 存在一个地址资源,注明用途
/48 在本地 RIB 你的路由器有一条指向该前缀的活动路由
BGP 会话 Established 你的路由器和上游能交换 BGP 消息
前缀已导出 你的路由器已把路由发给上游
上游已接受 上游通过了自身的过滤器并装入路由表
公网可见 其他网络或路由采集点能看到宣告
RPKI Valid 路由与已发布的起源授权匹配

这些状态不会自动互相产生。前缀可以已分配但没在跑;会话可以 Established 但没导出前缀;RPKI Valid 的路由也可能被上游或对端的过滤器拦下、可见性有限。

开始前要确认什么

要素 为什么重要 要确认什么
ASN 标识宣告路由的网络 哪个 ASN 会出现在公网 origin
IPv6 前缀 定义要宣告的地址空间 前缀长度、资源持有者、允许的用途
IPv6 上游 提供到达其他网络的路径 BGP 支持、过滤策略、运营联系人
BGP 路由器 建会话、发更新 IPv6 可达性、导出策略支持
RPKI 权限 授权起源 ASN 和前缀长度 谁能创建或修改 ROA
IRR 权限 在需要的地方登记路由对象 谁能创建或维护 route6 对象
验证工具 查看路由器之外的可见性 本地 BGP 状态、RPKI、IRR、公网采集点

动手配置之前,先确定资源持有者和实际起源 ASN。同一个前缀、起源 ASN、前缀长度,必须在资源记录、ROA、IRR 对象、BGP 策略和上游申请里保持一致。

现行 ASN 政策(2026 年 8 月核对)

政策状态核对日期:2026 年 8 月 2 日。

现行已发布的 RIPE-679 ASN 分配政策 要求:网络必须多宿主(Multihomed)才有资格申请 ASN,且申请必须描述自治系统新的外部路由策略。

2026 年 7 月 7 日,RIPE 社区发布了 2026-01 "简化首个 ASN 分配"提案。该提案在特定情况下(持有 RIPE NCC 直接分配前缀的持有人)可能取消首个 ASN 的需求论证,但页面当前标注为讨论阶段。它不是现行政策。

现在申请 ASN,按现行政策和 RIPE NCC 或你的 Sponsoring LIR 要求的材料办。不要把开放提案当成已生效的政策。

第一步:确认前缀和起源 ASN

把前缀和将要宣告它的 ASN 的关系写死:

前缀:      2001:db8:1234::/48
起源 ASN:  AS64496

下面这些值应该描述同一条公网路由:

  • 分配给你或被授权使用的 IPv6 前缀
  • BGP 里配置的起源 ASN
  • ROA 里的 Origin ASN
  • IRR route6 对象的 origin:
  • 上游过滤器允许的前缀

这些值不一致时,结果取决于在哪一层:上游可能因为 IRR 或手动过滤器拒绝路由;路由可能因为起源 ASN 或前缀长度与覆盖 ROA 不匹配而变成 RPKI Invalid。

还在纠结资源怎么申请?读 如何申请自己的 ASN如何获得 IPv6 /48

PA 和 PI 不是一回事

PA(服务商聚合地址)和 PI(独立地址)的登记关系和运营关系不同。

PA 空间属于某家 LIR 的分配,其使用、可携带性、RPKI 流程和生命周期取决于资源持有者和适用协议。PA 默认不能被描述为可携带。

PI 空间分配给终端用户组织,在 RIPE NCC 服务区通过 Sponsoring LIR 申请。RIPE NCC 文档把 /48 列为 IPv6 PI 分配的最小规模。当前申请路径见 RIPE NCC:How to Request an IPv6 PI Assignment

SKNK 的 IPv6 PA /48 服务:前缀来自 SKNK 的 PA 分配,SKNK 控制并维护该资源的 RPKI ROA;客户选择上游并自己运行 BGP 配置。Sponsoring LIR 服务不包含 BGP 配置、Transit、IRR 管理、DNS 管理和 7×24 路由运维。服务边界以 资源生命周期页面 为准。

第二步:确认上游接受这条路由

你需要一个能建 IPv6 eBGP 会话、并且愿意接受你前缀的上游。让上游确认这些参数:

参数 示例
你的 ASN AS64496
上游 ASN AS64497
你的 BGP 邻居地址 2001:db8:ffff::2
上游邻居地址 2001:db8:ffff::1
要宣告的前缀 2001:db8:1234::/48
认证方式 是否需要 TCP MD5 或其他方法
前缀上限 会话上允许的最大路由数
IRR 要求 是否需要 route6 对象
RPKI 要求 路由必须 Valid,还是只要不是 Invalid
运营联系人 服务的 NOC 或路由联系人

还要确认:服务或隧道上是否启用 IPv6;会话用直连地址还是多跳;是否要求 LOA 或其他授权文件;提供哪些 BGP Community;接受哪些 IPv6 前缀长度。

Transit、Peering、IXP 和隧道连接不可互换。选上游关系之前,先读 Transit 与 Peering

白脸小鹿把本地路由装置接到两座彼此独立的上游桥上,让两条路径保持清楚可见。

BGP 会话只是路由器和上游之间的运输通道;会话正常,并不等于每条路由都已宣告。

第三步:创建匹配的 ROA

ROA(路由起源授权)是一个签名的 RPKI 对象,声明哪个 ASN 有权宣告一个前缀、允许宣告多具体。RIPE NCC 的 BGP 起源验证文档 说明了 ROA 与路由验证的关系。

只宣告聚合 /48 的设计,一个示例 ROA:

前缀:      2001:db8:1234::/48
起源 ASN:  AS64496
maxLength: /48

你只打算宣告 /48 的话,maxLength 保持 /48 就是最窄的匹配授权。不要为了"以后可能用到更具体的路由"而放宽 maxLength——更宽的值会授权更具体的宣告。

以后要宣告 /52 或 /56:先和资源持有者及每个相关上游确认路由设计,在改 BGP 策略之前,同步更新 ROA 和 IRR 对象。

RPKI 验证状态定义见 RFC 6811

状态 含义
Valid 存在覆盖 ROA,授权了该起源 ASN 和前缀长度
Invalid 存在覆盖 ROA,但 ASN 或前缀长度不匹配
NotFound 验证器看不到覆盖 ROA

ROA 里的 Origin ASN 必须是公网 BGP 路由里实际出现的起源 ASN。如果上游用自己的 ASN 宣告你的前缀,只授权你的 ASN 不会匹配那条路由。

ROA 不会创建 BGP 会话、不会往路由器加路由、也不会逼上游接受前缀。它只是为做 RPKI 验证的网络提供起源授权数据。单独的 ROA 解释,读 什么是 ROA?

第四步:创建 IRR route6 对象

IRR 和 RPKI 描述的是不同种类的路由信息:

  • ROA 是密码学签名的起源授权
  • route6 对象在互联网路由注册库里登记 IPv6 路由意图
  • 上游可能用 IRR 数据生成或更新前缀过滤器
  • 上游也可能用 RPKI 数据验证路由起源

一个简化的 route6 对象:

route6:      2001:db8:1234::/48
descr:       示例 IPv6 聚合前缀
origin:      AS64496
mnt-by:      YOUR-MAINTAINER

这是示例模板,不是直接复制的对象。正确的 maintainer 和授权路径取决于数据库源和资源持有者。RIPE Database 文档把 route6 描述为互联网上宣告的 IPv6 路由,见 RIPE Database route6 文档

记录应该描述同一条意图路由:

route6 前缀 = BGP 前缀
route6 origin = BGP 起源 ASN
ROA 前缀 = BGP 前缀
ROA origin = BGP 起源 ASN

上游用 IRR 过滤时,正确的 ROA 替代不了 IRR 对象;IRR 对象也提供不了 RPKI 的密码学起源验证。两者是不同系统。

白脸小鹿把两份不同的路由记录放到同一条匹配的路径上,保持授权和路由意图各自独立。

ROA 和 IRR 描述的是同一条预期宣告的不同属性。

第五步:把 /48 放进本地路由表

BGP 一般只导出本地路由表里存在的路由。前缀在 IRR 里登记过、被 RPKI 授权了,都不会自动在路由器上生成可用路由。

建会话之前,确认 /48 在本地 RIB 里且处于活动状态。路由可以来自:环回或服务接口、被路由的服务器网络、覆盖内部子网的聚合、指向内部路由器的静态路由,或者"丢弃路由 + 单独路由更具体前缀"的刻意聚合设计。

最后一种要小心:丢弃路由能保住聚合在 RIB 里的存在,但如果底层更具体的路由不可用,它会把流量黑洞。只能作为有文档记录的路由设计的一部分使用。

不要因为 RIPE Database 里有个对象就宣告前缀。前缀必须被授权给你使用,并且在你网络里被刻意路由。规划 /48、/56、/64 边界用 IPv6 子网计算器,但子网规划和 BGP 宣告是两件事,分开做。

第六步:建立 eBGP,只导出意图前缀

按和上游约定的值配置 eBGP 会话:本地 ASN、远端 ASN、本地和远端 IPv6 邻居地址、IPv6 地址族激活、需要的认证、直连或多跳传输设置,以及一条限定在授权前缀内的导出策略。

导出策略应该是一条窄规则:

如果路由是活动的
并且前缀是授权前缀
那么导出到目标上游
否则拒绝

这是策略描述,不是路由器语法。BIRD、FRRouting、Junos、IOS-XR 等平台的配置格式不同,用你实际运营平台的文档。

不要一开始就用"导出本地表所有路由"的策略——宽策略会泄漏内部路由、学习路由、管理路由或默认路由。用多个上游时,每个会话单独配置、单独验证。同一个 /48 可以通过多个上游宣告,但资源持有者、上游合同、ROA 设计、过滤策略和流量工程计划都要支持这种安排。

更完整的申请后流程,读 拿到 ASN 之后

第七步:四层验证

1. 本地路由器

确认:BGP 会话 Established、IPv6 地址族活动、/48 在本地 RIB、前缀出现在 advertised-routes 视图、导出策略没有拒绝这条路由。具体命令取决于平台。

2. 上游

让上游确认:两边会话都 Established、前缀已收到、通过了提供商过滤器、按服务策略在传播。

路由可能出现在本地 advertised-routes 视图里、却被上游当场拒绝。

3. RPKI 和 IRR

用 SKNK 的只读工具检查:RPKI 与 BGP 查询IRR Route Object 查询BGP 与 IRR 一致性审计。确认:前缀正确、起源 ASN 正确、预期 ROA 可见、路由 RPKI Valid(当意图路由被匹配 ROA 覆盖时)、route6 对象与前缀和起源匹配、没有过期 ROA 授权给其他起源、maxLength 覆盖实际宣告的路由。

4. 公网可见性

用多个独立的公网路由数据源,比如 RIPEstat、公共 Looking Glass 和路由采集点。不同采集点更新时间不同、看到的路径可能不同。一个阳性结果不是全网可达的证明,一个阴性结果可能是采集延迟或策略差异。

最后的问题不是"我的路由器发出去了吗",而是:

独立的网络能看到这个前缀带着预期的起源 ASN 吗?路由被对目标用户重要的那些策略接受了吗?

白脸小鹿沿着同一条路由依次检查本地路由、上游桥、授权印章和远端公网路径。

本地已经发出的路由,还要通过上游接受、授权匹配和公网可见性检查。

常见排障

症状 大概率区域 查什么
BGP 停在 Idle 传输或邻居配置 IPv6 可达性、TCP/179、防火墙、本地和远端 ASN
BGP 停在 Active 对端地址、多跳或认证 对端地址、TTL、密码、提供商设置
会话 Established 但 /48 不出现 本地路由或导出策略 本地 RIB 和 advertised-routes 视图
上游拒绝前缀 提供商过滤器或缺少授权 精确前缀、IRR 对象、LOA、提供商策略
路由 RPKI Invalid 起源 ASN 或前缀长度不匹配 实际公网起源、ROA、maxLength
路由 RPKI NotFound 看不到覆盖 ROA ROA 是否存在、是否已发布、是否到达验证器
只在一个采集点可见 传播延迟或策略过滤 更多采集点、上游确认、前缀长度
路由存在但流量不通 数据面或回程问题 下一跳、内部路由、防火墙、服务绑定、回程路径

不要同时改 ROA、IRR 对象和 BGP 配置,除非你先记录旧状态——否则很难判断是哪个变更导致或修复了结果。排障时一层一层查:资源记录、路由策略、公网观测,一次一层。

白脸小鹿把路由线从小路由器、闸门和公网路径之间一点点解开,并把被拒绝的分支放到一旁。

资源记录、路由策略和公网观测分层检查,排障才不会把多个变量混在一起。

你需要自己的 ASN 和 IPv6 /48 吗

可能不需要,如果:你只用一家云或 Transit 提供商;提供商用自己的 ASN 宣告路由;你不需要自己的外部路由策略;你接受提供商的寻址和路由生命周期。

需要自己的 ASN 的场景:需要独立的路由身份、多个外部网络、或控制自己前缀的宣告方式。注意在 RIPE NCC 服务区,现行政策仍包含多宿主要求;前面提到的 2026 首个 ASN 提案还没有替代它。

申请路径评估,读 什么是多宿主?如何申请自己的 ASN。需要 ASN 和 IPv6 资源赞助而不是 BGP 配置服务,看当前 赞助 LIR 价格资源生命周期。除非另有书面服务约定,客户负责选择上游并运营网络路由。

常见问题

没有 ROA 能宣告 IPv6 前缀吗

技术上可以。看不到覆盖 ROA 时,路由通常会被分类为 RPKI NotFound(部分文档写作 UNKNOWN)。但运营者可能偏好 Valid 路由,或对 NotFound 路由施加自己的策略,所以生产宣告建议配置匹配的 ROA。

ROA 能让我的路由全网可见吗

不能。ROA 授权起源 ASN 和前缀长度,不会创建 BGP 会话、不会把前缀加进路由器、也不会逼上游接受路由。

ROA 和 route6 对象都要吗

它们是不同系统。ROA 支撑 RPKI 起源验证,route6 对象在 IRR 登记路由意图。很多上游仍然用 IRR 数据做过滤器,另一些也用 RPKI,按每个上游的要求办。

能宣告 IPv6 /64 吗

BGP 协议可以承载 /64,但公网可达性取决于每个上游和对端的过滤策略。/64 通常是更大分配或指派内部的一个子网,不是可靠的全球宣告单位。围绕它设计服务之前,先确认上游接受的前缀长度。

一个 PA /48 能通过两个上游宣告吗

可能可以,但取决于 PA 资源持有者、Sponsoring LIR 协议和每个上游的路由策略。先确认谁控制 ROA、资源是否被授权通过两家提供商宣告。

IPv6 BGP 传播要多久

没有统一的传播时间。会话可能立刻 Established,但路由采集点和其他网络之后才更新。别依赖固定时间估算,从多个公网观测点检查路由。

小结

宣告 IPv6 /48 不是一个配置命令,而是五个层的对齐:

资源授权
   ↓
ROA 与 IRR 记录
   ↓
本地路由
   ↓
BGP 导出策略
   ↓
上游接受与公网可见性

前缀、起源 ASN、ROA、route6 对象、本地路由和 BGP 导出策略描述的如果是同一条宣告,排障会容易得多。上线前:本地验证、和上游确认、查 RPKI 和 IRR、从多个公网源观测。

参考资料

继续阅读