第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 部署过渡期的关键方案

八、思考

  1. DS-Lite 中的 B4 和 AFTR 各自负责什么功能?
  2. DS-Lite 的报文在用户 → AFTR → 互联网的路上经历了怎样的封装变化?
  3. 为什么 DS-Lite 需要和 CGNAT 配合使用?
  4. IPv4-in-IPv6 隧道相比传统双栈有什么优缺点?
  5. DS-Lite 与 NAT64 的主要区别是什么?什么场景更适合 DS-Lite?

下篇预告:第196篇《固网与移动网融合架构》——运营商同时承载固定宽带和移动回传业务时,如何实现一张网融合承载。