第195篇:DS-Lite 轻量级双栈:IPv4 over IPv6
关键词
DS-Lite、IPv4 over IPv6、AFTR、B4、轻量级双栈、NAT444、隧道封装、IPv6 过渡
一、DS-Lite 概述
1.1 为什么需要 DS-Lite
IPv6 部署逐步推进,但大量互联网内容仍然只支持 IPv4:
用户侧 运营商网络 互联网 | IPv6-only 用户 | IPv4 流量? ────────────────→ | IPv6 核心 无 IPv4 地址可用 | ──────→ | IPv4 站点 | | --- | --- | --- | --- | --- | ↑ ↑ 运营商只给用户 骨干网只承载 IPv6 分配 IPv6 地址 (IPv4 地址枯竭)
DS-Lite(Dual-Stack Lite) 解决这个问题:让 IPv6-only 接入网络中的用户,仍然可以访问 IPv4 互联网。
1.2 DS-Lite 的架构
| ┌──────────────┐ IPv6 隧道 ┌──────────────────┐ | ||
|---|---|---|
| 用户侧 B4 (CPE 路由器) | ════════════════ (IPv4 in IPv6) | 运营商侧 AFTR + CGNAT 功能 |
| │ │ | ||
| 用户设备(IPv4+IPv6) IPv4 互联网 |
核心组件:
| 组件 | 全称 | 位置 | 功能 |
|---|---|---|---|
| B4 | Basic Bridging BroadBand element | 用户 CPE | IPv4→IPv6 隧道封装/解封装 |
| AFTR | Address Family Transition Router | 运营商网络 | 隧道终结 + CGNAT 转换 |
| 隧道 | IPv4-in-IPv6 Tunnel | B4↔AFTR | 封装 IPv4 报文到 IPv6 头中 |
二、DS-Lite 工作原理
2.1 报文封装格式
IPv4 原始报文: | Eth 头 | IPv4 头 S=10.0.0.1 D=8.8.8.8 | TCP/UDP 头 | Payload | | --- | --- | --- | --- |
IPv6 隧道封装后: | Eth 头 | IPv6 头 S=2001::1 D=2001::AFTR | IPv4 头 S=10.0.0.1 D=8.8.8.8 | TCP/UDP 头 | Payload | | --- | --- | --- | --- | --- | ↑ 整个 IPv4 报文作为 Payload 协议类型 = 4(IPv4-in-IPv6)
2.2 数据流详解
上行(用户 → IPv4 互联网):
1. 用户设备发送 IPv4 报文(S=10.0.0.1, D=8.8.8.8)
2. B4(CPE)将 IPv4 报文封装到 IPv6 隧道中
- 外层 IPv6:S=2001:db8::1(用户的 IPv6 地址)
D=2001:db8::AFTR(AFTR 的 IPv6 地址)
3. IPv6 核心网将报文路由到 AFTR
4. AFTR 解封装,得到原始 IPv4 报文
5. AFTR 执行 CGNAT 转换(10.0.0.1 → 203.0.113.1)
6. 转换后的 IPv4 报文发送到互联网(S=203.0.113.1)
下行(IPv4 互联网 → 用户):
1. 互联网回复 IPv4 报文(S=8.8.8.8, D=203.0.113.1)
2. AFTR 收到后查找 NAT 表项
3. 还原用户私网地址(D=203.0.113.1 → D=10.0.0.1)
4. AFTR 封装到 IPv6 隧道
- 外层 IPv6:S=2001:db8::AFTR → D=2001:db8::1
5. IPv6 核心网将报文路由到用户 CPE
6. B4 解封,将 IPv4 报文交给用户设备
2.3 配置示例
# B4 侧(CPE 路由器)配置
interface Tunnel0
tunnel-protocol ipv4-ipv6 # IPv4 in IPv6 隧道
source GigabitEthernet0/0/0 # 获取 IPv6 地址
destination 2001:db8::AFTR # AFTR 地址
ip address 10.0.0.1 255.0.0.0 # 隧道接口 IPv4 地址
!
ip route 0.0.0.0 0.0.0.0 Tunnel0 # 默认路由指向隧道
# AFTR 侧(运营商侧)配置
interface Tunnel0/0/0
tunnel-protocol ipv4-ipv6
source 2001:db8::AFTR # 本端 IPv6 地址
!
nat instance CGNAT id 1 # 内置 CGNAT
nat address-group 1 203.0.113.1 203.0.113.100
port-range 1024 65535 block-size 1024
log enable
!
interface GigabitEthernet0/0/0
nat bind instance CGNAT # 隧道流量做 NAT
三、DS-Lite 的关键特性
3.1 地址分配
传统方式:每个用户一个公网 IPv4 + 一个 IPv6
DS-Lite:每个用户一个 IPv6 + 共享的公网 IPv4
用户规模对比(公网 IPv4 池:1 个 C 段 /24):
传统 NAT:253 个并发用户
DS-Lite + CGNAT:253 × 63 = 15,939 用户(block-size=1024)
3.2 B4 自动发现
DS-Lite B4 如何知道 AFTR 的 IPv6 地址?
方法 1:DHCPv6 Option 64
DHCPv6 服务器通过 Option 64(AFTR-Name)下发 AFTR 的
域名或 IPv6 地址
方法 2:RADIUS 下发
PPPoE 认证时 RADIUS 服务器在下发属性中包含 AFTR 地址
方法 3:CPE 预配置
CPE 出厂时预设 AFTR 地址
3.3 隧道 MTU 问题
IPv4 原始 MTU = 1500
IPv6 头 = 40 字节(额外开销)
隧道接口 MTU 设置:
MTU = 1500 - 40 = 1460 字节
或者开启 PMTUD(Path MTU Discovery):
IPv4 的 DF=1 标记传递
ICMPv6 Packet Too Big 消息
四、DS-Lite vs 其他 IPv6 过渡技术
| 对比项 | DS-Lite | NAT64 | 464XLAT | 双栈 |
|---|---|---|---|---|
| 用户接入 | IPv6-only | IPv6-only | IPv6-only | IPv4+IPv6 |
| IPv4 穿透 | 隧道+B4 CPE | DNS64+NAT64 | CLAT+NAT64 | 原生双栈 |
| CPE 要求 | 支持 DS-Lite | 无特殊要求 | 支持 CLAT | 支持双栈 |
| 运营商改动 | 需 AFTR | 需 NAT64 网关 | 需 NAT64 网关 | 需 IPv4 地址 |
| IPv4 地址节约 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 部署复杂度 | 中 | 低 | 中 | 低 |
| 应用兼容性 | 全兼容 | 仅 DNS 查询的站点 | 全兼容 | 全兼容 |
五、DS-Lite 部署案例
5.1 组网拓扑
用户家庭网络 运营商城域网 互联网 | 手机/PC (IPv4) | ──── LAN ────→ | B4 CPE (DS-Lite 隧道) | | IPv4 站点 (8.8.8.8) | | --- | --- | --- | --- | --- | │ IPv6 核心网 │ ┌──────┴──────┐ │ AFTR │ │ + CGNAT │─────────→ IPv4 互联网 └─────────────┘
5.2 流量模型
用户下单流程(B4 DHCPv6 获取信息):
BRAS/DHCPv6 Server ──(Option 64)──→ B4:AFTR 地址 = 2001:db8::AFTR
IPv4 上网流程:
CPE B4 → IPv6 核心 → AFTR 隧道终结 → CGNAT → 互联网
IPv6 上网流程(旁路):
CPE → IPv6 核心 → IPv6 互联网(不经 AFTR,不消耗 NAT 资源)
5.3 DS-Lite 的优劣分析
| 优势 | 劣势 |
|---|---|
| 极大节约 IPv4 地址 | CPE 需要支持 DS-Lite |
| 平滑过渡,用户无感知 | 隧道带来额外 40 字节开销 |
| 运营商骨干可纯 IPv6 | 某些 P2P 应用可能受影响 |
| 无需给用户分配公网 IPv4 | 故障排查比原生 IPv4 复杂 |
| 全球主流运营商采纳 | 需要 AFTR 设备投资 |
六、DS-Lite 的演进:Lightweight 4over6
DS-Lite 的增强版本:Lightweight 4over6(RFC 7596)
区别:
1. B4 绑定端口块,AFTR 不做 NAT
2. AFTR 根据端口块直接转发 IPv4 流量
3. 日志更少(绑定关系固定)
配置示例:
B4 CPE:
lw4over6 enable
lw4over6 aftr 2001:db8::AFTR
lw4over6 ipv4 203.0.113.1 port-set 1024-2047
七、总结
| 知识点 | 核心要点 |
|---|---|
| DS-Lite | IPv6-only 接入 + IPv4-in-IPv6 隧道 + CGNAT |
| B4 | 用户侧 CPE,封装/解封装 IPv4 in IPv6 |
| AFTR | 运营商侧,隧道终结 + CGNAT 转换 |
| 封装开销 | IPv4 报文 + 40 字节 IPv6 头 |
| 地址节约 | 极致节约 IPv4 地址 |
| 过渡定位 | IPv6 部署过渡期的关键方案 |
八、思考
- DS-Lite 中的 B4 和 AFTR 各自负责什么功能?
- DS-Lite 的报文在用户 → AFTR → 互联网的路上经历了怎样的封装变化?
- 为什么 DS-Lite 需要和 CGNAT 配合使用?
- IPv4-in-IPv6 隧道相比传统双栈有什么优缺点?
- DS-Lite 与 NAT64 的主要区别是什么?什么场景更适合 DS-Lite?
下篇预告:第196篇《固网与移动网融合架构》——运营商同时承载固定宽带和移动回传业务时,如何实现一张网融合承载。