跳到主要内容

协议配置选项 (PCO)

传递给 UE 的网络参数

OmniPGW 由 Omnitouch 网络服务提供


概述

PCO (协议配置选项) 是在 PDN 连接建立期间发送给 UE (移动设备) 的网络参数。这些参数使 UE 能够访问网络服务,如 DNS、IMS,并配置网络设置。

PCO 信息元素:

IE 名称容器 ID描述必需
DNS 服务器 IPv4 地址0x000D主 DNS
DNS 服务器 IPv4 地址0x000D次 DNS可选
P-CSCF IPv4 地址0x000CIMS 的 P-CSCF可选 (IMS)
IPv4 链路 MTU0x0010最大传输单元推荐
NBNS 服务器 IPv4 地址0x0011NetBIOS 名称服务器可选

配置

基本配置

# 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
Google8.8.8.88.8.4.4
Cloudflare1.1.1.11.0.0.1
Quad99.9.9.9149.112.112.112
OpenDNS208.67.222.222208.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"]
}

工作原理:

  1. p_cscf_discovery_enabled: true 时,PGW-C 会执行 DNS 查询以获取 P-CSCF 地址
  2. DNS 查询发送到配置的 p_cscf_discovery_dns_server
  3. 如果 DNS 查询成功,发现的 P-CSCF 地址将通过 PCO 发送给 UE
  4. 如果 DNS 查询失败或超时,则回退到静态 p_cscf_ipv4_address_list
  5. 有关详细监控和指标,请参见 P-CSCF 监控

P-CSCF 发现流程

发现优先级:

  1. 按规则 FQDN 发现 (最高优先级) - p_cscf_discovery_fqdn 在 UPF 选择规则中
  2. 全局 DNS 发现 - p_cscf_discovery_enabled: true 在全局 PCO 配置中
  3. 规则 PCO 静态列表 - p_cscf_ipv4_address_list 在规则 PCO 覆盖中
  4. 全局 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)nilDNS 服务器 IP 地址作为 4 元组 (例如,{10, 179, 2, 177})
p_cscf_discovery_timeout_ms整数5000DNS 查询的超时(毫秒)

用例:

  • 动态 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减少开销
1280IPv6 最小 MTU
1360VPN/隧道环境

建议: 对于 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 并:

  1. 使用提供的服务器配置 DNS 解析器
  2. 向 P-CSCF 注册 IMS 服务
  3. 将接口 MTU 设置为指定值

故障排除

问题:UE 无法解析 DNS

症状:

  • UE 有 IP 地址但无法访问互联网
  • DNS 查询失败

可能原因:

  1. PCO 配置中的 DNS 服务器地址不正确
  2. 从 UE IP 池无法访问 DNS 服务器
  3. 防火墙阻止 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 注册”

可能原因:

  1. 缺少 P-CSCF 配置
  2. P-CSCF IP 地址不正确
  3. 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 配置

  1. 使用可靠的 DNS 服务器

    • 公共:Google (8.8.8.8)、Cloudflare (1.1.1.1)
    • 私有:企业内部 DNS
  2. 始终配置次级 DNS

    • 提供冗余
    • 提高可靠性
  3. 考虑 DNS 安全性

    • 支持 DNSSEC 的解析器
    • 进行 DNS 过滤以增强安全性

IMS 配置

  1. 提供多个 P-CSCF

    • 至少 2 个以确保冗余
    • 如果可能,进行地理分布
  2. 确保可达性

    • P-CSCF 必须可从 UE IP 池访问
    • 测试 SIP 连接性

MTU 优化

  1. 考虑开销

    • GTP-U: 36 字节 (IPv4)
    • IPsec: 可变 (50-100 字节)
  2. 标准 LTE MTU

    • 推荐:1400 字节
    • 平衡吞吐量和兼容性
  3. 进行端到端测试

    • 路径 MTU 发现
    • 使用大数据包进行测试

相关文档

配置指南

会话和接口管理

IMS 和 VoLTE


返回操作指南


OmniPGW PCO 配置 - 由 Omnitouch 网络服务提供