IPv6 Transition Mechanisms Reference
IPv6 过渡机制参考
6rd、DS-Lite、NAT64/DNS64、464XLAT、MAP-E、MAP-T 和已弃用机制的比较和决策指南 - 包含 RFC 参考和部署上下文。
1. 为什么存在过渡机制
2011 年 2 月,IPv4 地址耗尽达到 IANA 级别;随后出现 RIR 自由池耗尽(APNIC 2011、RIPE NCC 2012、ARIN 2015、LACNIC 2014、AFRINIC 2021)。 ISP 现在依靠运营商级 NAT (CGN) 在许多客户之间共享单个 IPv4 地址,但代价是操作复杂性、端口分配开销以及端到端可达性的损失。
长期解决方案是原生的双栈或纯 IPv6 网络。过渡机制是桥梁,让 IPv6 网络在迁移过程中到达 IPv4 内容,或者让 IPv6 服务部署在 IPv4 基础设施上。
2. IPv6-over-IPv4隧道机制
第六名——IPv6 快速部署(RFC 5969)
无国籍 已部署
ISP 分配 /32 或更短的 IPv6 前缀,并将每个客户的 IPv4 地址嵌入到较低位中,以派生 /56 或 /60 客户前缀。 CPE(第 6 个 CE)将 IPv6 数据包封装在寻址到 ISP 的第 6 个 BR(边界中继)的 IPv4(协议 41)中。返回流量在 BR 处解封装。
- 使用案例:具有 IPv4 接入网络的 ISP 可以快速部署 IPv6 连接。 Free(法国)于 2007 年 RFC 发布之前大规模部署了此功能。
- 主要限制:接入层仍采用IPv4;每个数据包引入约 20 字节的开销。
6in4 手动隧道 (RFC 4213)
无国籍
两个固定端点之间手动配置的点对点 IPv6-in-IPv4 隧道(协议号 41)。仍用于企业实验室连接和 Hurricane Electric 的 TunnelBroker 服务。
3.NAT64+DNS64
有状态的 广泛部署
NAT64 (RFC 6146)是在 IPv6 和 IPv4 之间转换的网关。仅 IPv6 客户端将数据包发送到嵌入目标 IPv4 地址的合成 IPv6 地址(在 NAT64 前缀中,通常为 64:ff9b::/96)。 NAT64 网关转换标头并维护状态会话表。
DNS64 (RFC 6147)与 NAT64 一起工作:当纯 IPv6 客户端向 DNS 查询仅具有 A 记录 (IPv4) 的名称时,DNS64 通过将 IPv4 地址嵌入 NAT64 前缀来合成 AAAA 记录。客户端连接到合成地址,然后由 NAT64 进行转换。
4.464XLAT
有状态 (PLAT) 无国籍(CLAT) 移动/蜂窝标准
464XLAT(RFC 6877)解决了 DNS64/DNSSEC 问题,还处理嵌入 IPv4 文字的应用程序。它有两个组成部分:
- 克拉特(客户端翻译器):在设备(电话、路由器)上运行。合成私有 IPv4 地址空间,拦截来自操作系统的 IPv4 流量,并使用 NAT64 前缀作为目标将其转换为 IPv6。转换是无状态的(RFC 6145/RFC 7915 IVI 映射)。
- 普拉特(提供商端转换器):ISP 的 NAT64 网关。从 CLAT 接收转换后的 IPv6 数据包,并转换回 IPv4 以到达真正的 IPv4 Internet。
最终结果:设备上运行的应用程序看到真正的 IPv4 接口。 IPv4 字面量连接有效。 DNSSEC 有效。这是纯 IPv6 LTE/5G 移动网络(T-Mobile 美国、许多欧盟运营商)的标准模型。
CLAT 通过 DNS 发现 NAT64 前缀(RFC 7050:查询 ipv4only.arpa)或通过 RA 选项(RFC 8781PREF64 选项)。
5. DS-Lite — 双栈 Lite
有状态 (AFTR) 常见于宽带
DS-Lite(RFC 6333)专为拥有 IPv6 接入网络但仍需要向客户提供 IPv4 服务的 ISP 设计。 CPE 获得本机 IPv6 地址,但没有公共 IPv4 地址。来自客户 LAN 的 IPv4 流量封装在 IPv6(CPE 中的 B4 元素)中并发送到 ISP 的地址族转换路由器 (AFTR)。
AFTR 从共享 IPv4 池中解封装并执行 CGN(运营商级 NAT)。 IPv4 会话在 AFTR 上进行跟踪。由于接入环路上没有IPv4,ISP会保存IPv4地址;由于接入网络是本机 IPv6,因此 IPv6 流量采用快速路径,无需转换。
- 使用案例:欧洲有线/DSL 运营商(KPN、Swisscom 等)。
- 主要限制:IPv4性能取决于AFTR容量;每个订阅者的端口分配限制最大并发连接数。
6. MAP-E 和 MAP-T
无国籍 不断增长的部署
地址和端口映射 (MAP) 是一种无状态转换/封装框架,通过从 IPv6 前缀以数学方式导出每个客户的 IPv4 地址和端口范围,消除了 CGN 会话表。边界中继没有每个会话状态——它可以是一个简单的路由器,甚至是一个线卡功能。
- MAP-E (RFC 7597):将 IPv4 封装在 IPv6 中。 CPE(MAP-E CE)将IPv4报文封装在IPv6中; BR 解封装。无国籍。
- MAP-T (RFC 7599):使用地址+端口映射规则将 IPv4 转换为 IPv6(以及反向转换)。没有封装开销——标头就地转换。
MAP 在 DOCSIS 3.1 和 PON 部署中越来越受欢迎,其中零状态 BR 对扩展具有吸引力。需要仔细的端口范围规划:每个 CE 都有一个源自其 IPv6 /56 前缀的受限端口范围(例如,总共 65536 个端口中的 1024-2047 个端口)。
7. 已弃用的机制——不要使用
- 6对4 (RFC 3056,已弃用RFC 7526):使用任播中继前缀 192.88.99.0/24。由于任播中继操作不一致而不可靠,在 NAT 后面被破坏,并被主要操作系统供应商放弃。
- 特雷多 (RFC 4380):用于 NAT 穿越的基于 UDP 的 IPv6 隧道。自 Vista SP1 和 Server 2008 起,Windows 中默认禁用;不再推荐。安全问题(隧道流量绕过不检查 Teredo 的 IPv6 防火墙)。
8. 对照表
| 机制 | 接入网络 | 为客户提供 IPv4? | 有状态? | 开销 | 最适合 |
|---|---|---|---|---|---|
| 双栈 | IPv4+IPv6 | 是(母语) | 不 | 没有任何 | 到处都是首选 |
| 第六名 | IPv4 | 否(通过隧道的 IPv6) | 不 | 20B/包 | ISP 部署 IPv6 over IPv4 接入 |
| DS-Lite | IPv6 | 是(AFTR CGN) | 是(AFTR) | 40B/包 | 宽带; ISP希望IPv6接入+IPv4服务 |
| NAT64 + DNS64 | 仅限 IPv6 | 通过翻译 | 是(NAT64) | 没有任何 | 仅 IPv6 网络到达 IPv4 互联网 |
| 464XLAT | 仅限 IPv6 | 是(设备上的 CLAT) | 是(PLAT/NAT64) | 没有任何 | 仅限移动/蜂窝 IPv6;需要 IPv4 套接字的应用程序 |
| MAP-E | IPv6 | 是(无国籍) | 不 | 40B/包 | 扩展 CPE 部署;零状态BR |
| MAP-T | IPv6 | 是(无国籍) | 不 | 无(翻译) | 与 MAP-E 相同,但没有 encap 开销 |
| 6对4 | IPv4 | 不 | 不 | 20B/包 | 已弃用 — 请勿使用 |
| 特雷多 | IPv4(NAT 后面) | 不 | 不 | 8B/包 UDP | 已弃用 — 请勿使用 |
参考
- RFC 6555— Happy Eyeballs:双栈主机的成功
- RFC 4213— IPv6 主机和路由器的基本转换机制(6in4)
- RFC 5969— IPv4 基础设施上的 IPv6 快速部署(第六期)
- RFC 6146— 有状态 NAT64:从 IPv6 客户端到 IPv4 服务器的网络地址和协议转换
- RFC 6147— DNS64:用于从 IPv6 客户端到 IPv4 服务器的网络地址转换的 DNS 扩展
- RFC 6333— IPv4 耗尽后的双栈 Lite 宽带部署
- RFC 6877— 464XLAT:有状态和无状态翻译的组合
- RFC 7050— 用于 IPv6 地址合成的 IPv6 前缀的发现(通过 ipv4only.arpa 发现 NAT64 前缀)
- RFC 7526— 弃用 6to4 中继路由器的任播前缀
- RFC 7597— 带封装的地址和端口映射 (MAP-E)
- RFC 7599— 使用转换的地址和端口映射 (MAP-T)
- RFC 8781— 在路由器通告中发现 PREF64
- RFC 8585— IPv6 客户边缘路由器支持 IPv4 即服务的要求