协议配置选项 (PCO)
传递给 UE 的网络参数
OmniPGW 由 Omnitouch 网络服务提供
概述
PCO (协议配置选项) 是在 PDN 连接建立期间发送给 UE (移动设备) 的网络参数。这些参数使 UE 能够访问网络服务,如 DNS、IMS,并配置网络设置。
PCO 信息元素:
| IE 名称 | 容器 ID | 描述 | 必需 |
|---|---|---|---|
| DNS 服务器 IPv4 地址 | 0x000D | 主 DNS | 是 |
| DNS 服务器 IPv4 地址 | 0x000D | 次 DNS | 可选 |
| P-CSCF IPv4 地址 | 0x000C | IMS 的 P-CSCF | 可选 (IMS) |
| IPv4 链路 MTU | 0x0010 | 最大传输单元 | 推荐 |
| NBNS 服务器 IPv4 地址 | 0x0011 | NetBIOS 名称服务器 | 可选 |
配置
基本配置
# config/runtime.exs
config :pgw_c,
pco: %{
# DNS 服务器 (必需)
primary_dns_server_address: "8.8.8.8",
secondary_dns_server_address: "8.8.4.4",
# NBNS 服务器 (可选,适用于 Windows 设备)
primary_nbns_server_address: nil,
secondary_nbns_server_address: nil,
# IMS/VoLTE 的 P-CSCF 地址 (可选)
p_cscf_ipv4_address_list: [],
# P-CSCF 动态发现 (可选)
p_cscf_discovery_enabled: false,
p_cscf_discovery_dns_server: nil,
p_cscf_discovery_timeout_ms: 5000,
# IPv4 MTU 大小 (字节)
ipv4_link_mtu_size: 1400
}
PCO 参数
DNS 服务器地址
主 DNS 和次 DNS:
pco: %{
primary_dns_server_address: "8.8.8.8",
secondary_dns_server_address: "8.8.4.4"
}
常见 DNS 提供商:
| 提供商 | 主 DNS | 次 DNS |
|---|---|---|
| 8.8.8.8 | 8.8.4.4 | |
| Cloudflare | 1.1.1.1 | 1.0.0.1 |
| Quad9 | 9.9.9.9 | 149.112.112.112 |
| OpenDNS | 208.67.222.222 | 208.67.220.220 |
私有 DNS:
pco: %{
primary_dns_server_address: "10.0.0.10",
secondary_dns_server_address: "10.0.0.11"
}
P-CSCF 地址 (IMS)
用于 IMS/VoLTE 服务:
pco: %{
p_cscf_ipv4_address_list: [
"10.0.0.50", # 主 P-CSCF
"10.0.0.51" # 次 P-CSCF
]
}
P-CSCF (代理呼叫会话控制功能):
- IMS 信令的入口点
- VoLTE、VoWiFi、RCS 所必需
- UE 通过此服务器使用 SIP
P-CSCF 动态发现
基于 DNS 的 P-CSCF 发现:
OmniPGW 支持通过 DNS 查询进行动态 P-CSCF 发现,具体定义见 3GPP TS 23.003 和 TS 24.229。当启用时,PGW-C 可以查询 DNS 获取 P-CSCF 地址,而不是使用静态配置。
pco: %{
# 启用动态 P-CSCF 发现
p_cscf_discovery_enabled: true,
# P-CSCF 查询的 DNS 服务器 (作为元组)
p_cscf_discovery_dns_server: {10, 179, 2, 177},
# DNS 查询的超时 (毫秒)
p_cscf_discovery_timeout_ms: 5000,
# 静态 P-CSCF 列表 (如果 DNS 失败则使用)
p_cscf_ipv4_address_list: ["10.0.0.50"]
}
工作原理:
- 当
p_cscf_discovery_enabled: true时,PGW-C 会执行 DNS 查询以获取 P-CSCF 地址 - DNS 查询发送到配置的
p_cscf_discovery_dns_server - 如果 DNS 查询成功,发现的 P-CSCF 地址将通过 PCO 发送给 UE
- 如果 DNS 查询失败或超时,则回退到静态
p_cscf_ipv4_address_list - 有关详细监控和指标,请参见 P-CSCF 监控
P-CSCF 发现流程
发现优先级:
- 按规则 FQDN 发现 (最高优先级) -
p_cscf_discovery_fqdn在 UPF 选择规则中 - 全局 DNS 发现 -
p_cscf_discovery_enabled: true在全局 PCO 配置中 - 规则 PCO 静态列表 -
p_cscf_ipv4_address_list在规则 PCO 覆盖中 - 全局 PCO 静态列表 (回退) -
p_cscf_ipv4_address_list在全局 PCO 配置中
监控:
所有 P-CSCF 发现尝试都会记录并跟踪指标:
- DNS 查询成功/失败率
- 发现延迟
- 回退使用统计
- 按规则和全局发现指标
有关完整监控详细信息,请参见 P-CSCF 监控。
配置选项:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
p_cscf_discovery_enabled | 布尔值 | false | 启用基于 DNS 的动态 P-CSCF 发现 |
p_cscf_discovery_dns_server | 元组 (IP) | nil | DNS 服务器 IP 地址作为 4 元组 (例如,{10, 179, 2, 177}) |
p_cscf_discovery_timeout_ms | 整数 | 5000 | DNS 查询的超时(毫秒) |
用例:
- 动态 IMS 部署 - P-CSCF 地址根据 DNS 配置变化
- 地理负载均衡 - DNS 返回最近的 P-CSCF 服务器
- 高可用性 - DNS 自动返回可用的 P-CSCF 服务器
- 多租户环境 - 不同的订阅者获取不同的 P-CSCF 服务器
示例:使用 DNS 发现的生产 IMS
pco: %{
primary_dns_server_address: "10.0.0.10",
secondary_dns_server_address: "10.0.0.11",
# 启用动态 P-CSCF 发现
p_cscf_discovery_enabled: true,
p_cscf_discovery_dns_server: {10, 179, 2, 177}, # IMS DNS 服务器
p_cscf_discovery_timeout_ms: 3000,
# 回退 P-CSCF 地址 (如果 DNS 失败)
p_cscf_ipv4_address_list: [
"10.0.0.50", # 主回退
"10.0.0.51" # 次回退
],
ipv4_link_mtu_size: 1400
}
按规则 P-CSCF 发现:
P-CSCF 发现也可以按 UPF 选择规则进行配置。这允许不同的 APN 使用不同的 DNS 服务器进行 P-CSCF 发现:
# 在 upf_selection 配置中
rules: [
%{
name: "IMS 流量",
priority: 20,
match_field: :apn,
match_regex: "^ims",
upf_pool: [...],
# 按规则 P-CSCF 发现
p_cscf_discovery_fqdn: "pcscf.mnc380.mcc313.3gppnetwork.org"
}
]
有关按规则 P-CSCF 发现的详细信息,请参见 UPF 选择配置。
另见: P-CSCF 监控 以监控 P-CSCF 发现和健康状态
NBNS 服务器 (NetBIOS)
用于 Windows 设备兼容性:
pco: %{
primary_nbns_server_address: "10.0.0.20",
secondary_nbns_server_address: "10.0.0.21"
}
何时使用:
- 企业网络中有 Windows 设备
- 旧版应用程序支持
- 需要 NetBIOS 名称解析
链路 MTU 大小
最大传输单元:
pco: %{
ipv4_link_mtu_size: 1400 # 字节
}
常见 MTU 值:
| MTU | 用例 |
|---|---|
| 1500 | 标准以太网(无隧道) |
| 1400 | 考虑 GTP 隧道开销 |
| 1420 | 减少开销 |
| 1280 | IPv6 最小 MTU |
| 1360 | VPN/隧道环境 |
建议: 对于 LTE 使用 1400 以考虑 GTP-U 开销。
配置示例
Internet APN
pco: %{
primary_dns_server_address: "8.8.8.8",
secondary_dns_server_address: "8.8.4.4",
ipv4_link_mtu_size: 1400
}
IMS APN
pco: %{
primary_dns_server_address: "10.0.0.10",
secondary_dns_server_address: "10.0.0.11",
p_cscf_ipv4_address_list: [
"10.0.0.50",
"10.0.0.51"
],
ipv4_link_mtu_size: 1400
}
见: P-CSCF 监控 以监控 IMS 注册成功率和 P-CSCF 健康状况
企业 APN
pco: %{
primary_dns_server_address: "10.100.0.10",
secondary_dns_server_address: "10.100.0.11",
primary_nbns_server_address: "10.100.0.20",
secondary_nbns_server_address: "10.100.0.21",
ipv4_link_mtu_size: 1400
}
PCO 在 GTP-C 消息中的应用
创建会话响应
OmniPGW 在 创建会话响应 消息中包含 PCO:
创建会话响应
├── 原因: 请求已接受
├── UE IP 地址: 100.64.1.42
├── PCO (协议配置选项)
│ ├── DNS 服务器 IPv4 地址: 8.8.8.8
│ ├── DNS 服务器 IPv4 地址: 8.8.4.4
│ ├── P-CSCF IPv4 地址: 10.0.0.50
│ ├── P-CSCF IPv4 地址: 10.0.0.51
│ └── IPv4 链路 MTU: 1400
UE 处理
UE 接收 PCO 并:
- 使用提供的服务器配置 DNS 解析器
- 向 P-CSCF 注册 IMS 服务
- 将接口 MTU 设置为指定值
故障排除
问题:UE 无法解析 DNS
症状:
- UE 有 IP 地址但无法访问互联网
- DNS 查询失败
可能原因:
- PCO 配置中的 DNS 服务器地址不正确
- 从 UE IP 池无法访问 DNS 服务器
- 防火墙阻止 DNS 流量
解决方案:
# 测试 DNS 服务器可达性
ping 8.8.8.8
# 测试 UE 网络中的 DNS 解析
nslookup google.com 8.8.8.8
# 验证 PCO 配置
grep "primary_dns_server_address" config/runtime.exs
问题:IMS 注册失败
症状:
- VoLTE 通话失败
- UE 显示“无 IMS 注册”
可能原因:
- 缺少 P-CSCF 配置
- P-CSCF IP 地址不正确
- P-CSCF 无法访问
解决方案:
# 验证 P-CSCF 配置
pco: %{
p_cscf_ipv4_address_list: ["10.0.0.50"] # 确保不为空
}
问题:MTU 问题
症状:
- 一些网站加载,其他网站不加载
- 大文件传输失败
- 分片问题
可能原因:
- MTU 对于隧道开销过大
- MTU 过小导致过度分片
解决方案:
# 推荐:GTP 隧道使用 1400
pco: %{
ipv4_link_mtu_size: 1400
}
# 如果仍然有问题,尝试更低的值
pco: %{
ipv4_link_mtu_size: 1360
}
最佳实践
DNS 配置
-
使用可靠的 DNS 服务器
- 公共:Google (8.8.8.8)、Cloudflare (1.1.1.1)
- 私有:企业内部 DNS
-
始终配置次级 DNS
- 提供冗余
- 提高可靠性
-
考虑 DNS 安全性
- 支持 DNSSEC 的解析器
- 进行 DNS 过滤以增强安全性
IMS 配置
-
提供多个 P-CSCF
- 至少 2 个以确保冗余
- 如果可能,进行地理分布
-
确保可达性
- P-CSCF 必须可从 UE IP 池访问
- 测试 SIP 连接性
MTU 优化
-
考虑开销
- GTP-U: 36 字节 (IPv4)
- IPsec: 可变 (50-100 字节)
-
标准 LTE MTU
- 推荐:1400 字节
- 平衡吞吐量和兼容性
-
进行端到端测试
- 路径 MTU 发现
- 使用大数据包进行测试
相关文档
配置指南
- 配置指南 - 完整的 runtime.exs 参考,UPF 选择与 PCO 覆盖
- UE IP 分配 - IP 池管理,基于 APN 的分配
- P-CSCF 监控 - P-CSCF 发现监控,健康跟踪,指标
会话和接口管理
IMS 和 VoLTE
- Diameter Gx 接口 - IMS 承载的策略控制
- 监控指南 - 与 PCO 相关的指标和仪表板
OmniPGW PCO 配置 - 由 Omnitouch 网络服务提供