跳到主要内容

IPv6 / 双栈 (IPv4v6) PDN 支持

在 OmniPGW(控制平面)和 OmniUPF(用户平面)之间操作支持 IPv6 的 PDN 连接的端到端指南。此页面涵盖了 PDN 类型的协商和信令、两个节点所需的配置以及如何通过动态路由实现 UE 的 IPv6 可达性。

有关详细的 UE 地址池模型(APN 匹配、分配、冲突处理),请参见 UE IP Pool Allocation。有关 PFCP 和 Gx 接口的一般信息,请参见 PFCP/SxbDiameter Gx

目录

概述

PDN 连接可以是 IPv4IPv6IPv4v6(双栈)。PDN 类型由 UE/SGW 在 GTPv2 创建会话请求中请求,并由 PGW-C 在响应中确认。要实现端到端的 IPv6 PDN,需要在三个���口和两个节点之间进行协调行为:

节点 / 接口IPv6 的责任
OmniPGW — S5/S8协商 PDN 类型;分配 UE 地址;返回 PDN 地址分配 (PAA)
OmniPGW — Gx将 UE 地址传达给 PCRF:Framed-IP-Address(IPv4)用于 IPv4/IPv4v6 PDN,Framed-IPv6-Prefix 用于仅 IPv6 PDN
OmniPGW — Sxb通过 PFCP 向 UPF 信号 UE IPv6 地址和 PDN 类型
OmniUPF — 数据平面编程 IPv6 下行查找;转发/封装 IPv6 用户流量
OmniUPF — FRR通过 OSPFv3 向边缘路由器通告每个 UE IPv6 /128 主机路由

参考文献:3GPP TS 29.274 (GTPv2-C), 3GPP TS 29.212 (Gx), 3GPP TS 29.244 (PFCP)。

PDN 类型

PDN 类型UE 接收PAA 内容 (TS 29.274 §8.14)
1IPv4IPv4 地址4 字节 IPv4 地址
2IPv6IPv6 前缀 (/64)前缀长度字节 + 16 字节地址
3IPv4v6IPv4 地址 + IPv6 前缀前缀长度字节 + 16 字节 IPv6 + 4 字节 IPv4

PGW-C 从 PDN Type IE 派生有效的 PDN 类型,如果 PDN Type IE 缺失,则回退到 PAA IE 的类型。相同的协商类型驱动返回给 SGW 的 PAA、发送给 UPF 的 PFCP PDN Type IE,以及分配的地址族/多个地址族。

IPv4v6 无 IPv6 池。 如果请求 IPv4v6 PDN,但匹配的 APN 没有配置 IPv6 范围,PGW-C 不会崩溃;它会将 PDN 降级为仅 IPv4 或拒绝,具体取决于 APN 是否为紧急 (SOS) APN。请参见 APN 没有 IPv6 池时的 IPv4v6 请求

端到端流程

重传的创建会话请求(相同的序列号)以幂等方式处理,并产生相同的响应。

PGW-C 配置

UE IPv6 地址池

UE 地址从 runtime.exsue.subnet_map 键下的每个 APN 池中提取。为任何应提供 IPv6 或双栈的 APN 添加一个 IPv6 CIDR。池会自动按地址族解析。

config :pgw_c,
ue: %{
subnet_map: %{
# APN 名称 => CIDR 字符串列表(IPv4 和/或 IPv6)
default: [
"100.64.16.0/24",
"2001:db8:6f85:70::/64"
]
}
}
参数类型必需默认描述
ue.subnet_mapMap-将 APN 名称(或 :default)映射到 CIDR 字符串列表。:default 是当没有 APN 特定条目匹配时的后备。
(列表条目)字符串(CIDR)-IPv4(例如 100.64.16.0/24)或 IPv6(例如 2001:db8:6f85:70::/64)前缀。地址族从字符串中检测。IPv6 UE 地址从配置的前缀中提取,并向 UE 信号一个 /64

有关 APN 正则表达式匹配、每个 APN 的多个子网、静态地址和分配算法,请参见 UE IP Pool Allocation

同时具有 IPv4 和 IPv6 CIDR 的 APN 支持 IPv4、IPv6 和 IPv4v6 PDN;PGW-C 从协商的 PDN 类型所需的任何族/多个族中进行分配(对于 IPv4v6,从每个族中分配一个地址)。

Gx (Framed-IPv6-Prefix)

Gx 不需要额外的配置。PGW-C 根据地址族从 UE 地址设置 Gx 帧地址 AVP:

  • 仅 IPv6 PDN — 使用 Framed-IPv6-Prefix AVP 传达 UE IPv6 前缀 (RFC 3162 §2.3),而不是 Framed-IP-Address(仅承载 IPv4)。
  • IPv4 和 IPv4v6 PDN — UE IPv4 地址在 Framed-IP-Address 中传达。对于 IPv4v6,IPv6 前缀 在 Gx 中承载(CCR 的帧地址 AVP 来源于 IPv4 地址);IPv6 前缀仍通过 PFCP 信号传递给 UPF,并在 PAA 中传递给 UE。

对于仅 IPv6 的用户,PCRF 必须被配置并能够处理 Framed-IPv6-Prefix;否则,信用控制请求将被丢弃,会话失败 — 请参见 故障排除

用户平面 (OmniUPF)

为了让 IPv6 PDN 承载流量,OmniUPF 必须启用 IPv6,从 PGW-C 发送的 PFCP 会话中编程 IPv6 下行查找,并通过 OSPFv3 向边缘路由器通告每个 UE IPv6 /128 主机路由,以便下行流量能够吸引到 UPF。

这些是配置在 OmniUPF 上的用户平面关注点,而不是 PGW-C。有关内核设置、UPF UE 池和 OSPFv3 路由通告的信息,请��见 OmniUPF IPv6 / 双栈指南。从 PGW-C 的角度来看,唯一的要求是所选的 UPF 支持 IPv6 — PGW-C 通过 PFCP 信号 UE IPv6 地址和 PDN 类型(请参见 PFCP/Sxb)。

参考表

PDN 地址分配 (PAA) — TS 29.274 §8.14

PDN 类型地址字段布局
IPv44 字节:IPv4 地址
IPv61 字节前缀长度 + 16 字节 IPv6 前缀/地址
IPv4v61 字节前缀长度 + 16 字节 IPv6 + 4 字节 IPv4

Gx 帧地址 AVP

AVP代码家族格式参考
Framed-IP-Address8IPv44 字节地址RFC 4005
Framed-IPv6-Prefix97IPv6保留字节 + 前缀长度 + 前缀RFC 3162 §2.3

PFCP PDN 类型 IE — TS 29.244

意义
1IPv4
2IPv6
3IPv4v6

故障排除

Gx CCR 超时用于 IPv6 会话

症状:某个用户的 IPv4 会话成功,但 IPv6/IPv4v6 会话返回原因 remote_peer_not_responding;Gx 信用控制请求超时。

可能的原因

  • PCRF 无法处理 Framed-IPv6-Prefix AVP,并静默丢弃请求。
  • 该用户在 PCRF/HSS 上未���置为 IPv6。

解决方案

  1. 确认该用户在 PCRF/HSS 上已配置并启用。
  2. 验证 PCRF 接受 Gx CCR-I 的 Framed-IPv6-Prefix
  3. 与同一用户的 IPv4 会话进行比较,以隔离 IPv6 特定行为。

IPv6 会话被接受但下行流量未到达 UE

症状:创建会话响应携带 IPv6 PAA,上行正常,但来自网络到 UE 的流量被丢弃。

这是一个用户平面(OmniUPF)问题 — PGW-C 已经分配了地址并通过 PFCP 信号传递。通常的原因是 UE /128 主机路由未到达边缘路由器(UPF 上未运行 OSPFv3/未相邻,或收敛延迟)。请参见 OmniUPF IPv6 / 双栈指南以获取路由通告配置和故障排除信息。

未分配 IPv6 地址

症状:IPv6 PDN 请求被拒绝,或者未返回 IPv6 PAA。

可能的原因

  • 匹配的 APN(或 :default)在 ue.subnet_map 中没有 IPv6 CIDR。
  • 配置的 IPv6 池已耗尽。

解决方案

  1. 在 APN 的 ue.subnet_map 条目中添加 IPv6 CIDR(请参见 PGW-C 配置)。
  2. 确认池中有空闲地址。

APN 没有 IPv6 池时的 IPv4v6 请求

症状:某个 UE 针对仅在 ue.subnet_map 中配置了 IPv4 CIDR 的 APN 请求 IPv4v6 PDN(没有 IPv6 范围)。根据 APN 的不同,会话要么以 仅 IPv4 的方式建立,要么被 拒绝

行为:IPv6 分配器 (AddressRegistry.register_new_ipv6/1) 在匹配的 APN 具有空 IPv6 列表时返回 {:error, :no_ipv6_pool},而不是崩溃会话进程。会话过程然后根据 APN 类型选择(根据 TS 29.274 / TS 23.401 单地址承载 / PDN 类型降级处理):

APN 类型结果UE / PCRF / UPF 看到的内容
紧急 (SOS) APN降级为仅 IPv4 — 分配 IPv4 地址,清除 IPv6 地址,将协商的 PDN 类型设置为 IPv4PAA、PFCP PDN 类型和 PFCP UE IP 为仅 IPv4;Gx 携带 Framed-IP-AddressP-CSCF 仍在 PCO 中返回,以便紧急 IMS 注册可以继续。记录 warning
常规 APN拒绝 — 会话不会静默降级;{:error, :no_ipv6_pool} 被显现,以便错误配置(或真正不支持的请求)可见。记录 error创建会话失败,原因非成功。

紧急 APN 通过其名称识别:APN 包含 "sos"(例如 sossos.mnc410.mcc310.gprs)。针对没有 IPv6 池的 APN 的仅 IPv6 请求同样被拒绝。

实际上,MME 通常会在请求到达 PGW-C 之前将常规用户的 IPv4v6 请求降级为其订阅的 IPv4,因此拒绝路径是针对真正到达而没有 IPv6 池的 IPv4v6 请求的后备。SOS 降级路径确保紧急(例如 911/112)呼叫在仅 IPv4 部署上连接。

解决方案

  1. 对于应该提供双栈的常规 APN,在 APN 的 ue.subnet_map 条目中添加 IPv6 CIDR(请参见 PGW-C 配置)。
  2. 对于仅 IPv4 部署的紧急 (SOS) APN,无需采取任何措施 — 仅 IPv4 降级是故意的。仅在您打算将 SOS PDN 设置为双栈时,才添加 IPv6 CIDR。