IMS 的 P-CSCF(Proxy-Call Session Control Function)地址发现主要在建立 ims 专用 APN 的 PDN 连接时,由基带通过 NAS 信令中的 PCO(Protocol Configuration Options) 向核心网(PGW/SMF)请求并获取。
附着或建立 IMS PDN 连接时,网络在 Activate default EPS bearer context request 的 PCO 字段里下发 P-CSCF 地址(Container ID 0x000C 为 IPv6,0x000A 为 IPv4)。
在应用层或调试过程中,可以通过 3GPP 标准 AT 指令、高通 QMI 接口
AT命令
AT+CGDCONT? AT+CGCONTRDP +CGCONTRDP 按 3GPP TS 27.007 的返回格式,包含 P-CSCF: +CGCONTRDP: <cid>,<bearer_id>,<apn>,<local_addr and subnet_mask>,<gw_addr>, <DNS_prim_addr>,<DNS_sec_addr>,<P-CSCF_prim_addr>,<P-CSCF_sec_addr>, <IM_CN_Signalling_Flag>,...
其中第 8 和第 9 个字段(P_CSCF_prim_addr 和 P_CSCF_sec_addr)即为核心网分配的主、备 P-CSCF 地址。
通过 Qualcomm QMI WDS(Wireless Data Service) 查询
1. 配置 Profile 请求 P-CSCF 标志位
在发起拨号前,需确保对应 Profile 的 P-CSCF Address using PCO Flag(TLV 0x2B)在 QMI_WDS_MODIFY_PROFILE_SETTINGS 中被置为 1,或者在调用 QMI_WDS_START_NETWORK_INTERFACE 时携带请求 P-CSCF 的参数。
2. 调用 QMI_WDS_GET_RUNTIME_SETTINGS (Msg ID: 0x002D)
当 IMS 数据呼叫建立成功后,向对应 IMS 网卡关联的 QMI WDS 客户端发送 QMI_WDS_GET_RUNTIME_SETTINGS 请求,并在 Request Mask(TLV 0x10)中勾选 P-CSCF 地址标志位(Bit 11 / 0x0800 用于请求 P-CSCF 服务器地址列表)。
3. 解析返回的 TLV 字段
验证方式: 检查响应包中的以下 TLV 即可提取地址:
TLV 0x23:IPv4 P-CSCF Server Address List
TLV 0x27:IPv6 P-CSCF Server Address List
TLV 0x24:P-CSCF Server Name List(FQDN 域名形式)