首页 › ims › 5G P-CSCF发现机制ePCO信令全链拆解

5G P-CSCF发现机制ePCO信令全链拆解

在VoNR(Voice over NR)业务中,终端要打通任何一通IMS语音、视频或RCS呼叫,都必须先完成两件事:第一,建立一条通往IMS的IP-CAN承载;第二,向IMS核心网发起SIP REGISTER注册。而横亘在这两步之间、决定整个IMS业务能否"敲门"成功的第一道关口,就是P-CSCF(Proxy-Call Session Control Function)地址发现。

P-CSCF是IMS网络的唯一入口网元,所有来自UE的SIP信令都必须经过它转发、压缩、加密与策略控制。如果UE拿不到一个可达的P-CSCF IP地址,那么后续的鉴权、注册、呼叫建立都无从谈起。本文聚焦3GPP TS 23.228、TS 23.501/23.502与TS 24.501所定义的通过ePCO(Extended Protocol Configuration Options)在PDU会话建立过程中下发P-CSCF地址这一具体机制,从信令时序、IE编码、SMF解析逻辑到抓包排错进行全链路拆解。


一、机制定位:P-CSCF发现是IMS注册的前置条件

在3GPP TS 23.228第5.1节中明确定义了IMS架构中P-CSCF的角色:它是UE接入IMS的第一个接触点(first point of contact),负责与UE之间的SIP信令交互、SIP压缩(SigComp)、IPsec安全联盟协商,并向PCF发起承载策略请求(5G中经N5/Rx接口)。正因为它是"门",UE必须先知道这扇门在哪里。

TS 23.228定义了P-CSCF发现的几种可选方式:

  1. IP-CAN承载建立过程中的PCO/ePCO方式——UE在PDU会话/PDN连接建立时,通过NAS信令中的PCO或ePCO信息元素请求P-CSCF地址,网络在响应中携带返回。这是当前VoNR/VoLTE现网中最主流的部署方式。
  2. DHCP方式——UE在获得IP连通性后,通过DHCPv4(RFC 3361)或DHCPv6(RFC 3319)的SIP Server选项查询P-CSCF的IP或FQDN。
  3. DNS方式——当DHCP返回的是P-CSCF的域名时,UE再依据RFC 3263通过DNS SRV/A记录解析出具体IP。

设计意图:为什么3GPP要优先把P-CSCF发现"搭便车"放在承载建立流程里,而不是单独走一次DHCP?核心在于减少往返时延与简化UE实现。IMS语音业务对注册时延敏感(典型要求VoNR初始注册在数秒内完成),将P-CSCF地址的请求与下发捎带(piggyback)在PDU会话建立的NAS消息中,可以节省一次完整的DHCP四步交互(DORA)往返,使UE在承载一建立的同时就具备发起REGISTER的条件。这也是运营商现网普遍在SMF/PGW上静态配置P-CSCF地址池、直接经ePCO下发的根本原因。


二、PCO与ePCO信息元素深度解析

2.1 PCO与ePCO的关系

PCO(Protocol Configuration Options)最早定义于TS 24.008第10.5.6.3节,用于在NAS信令中承载"协议配置参数",其结构是一组(协议/容器ID + 长度 + 内容)的列表。在5G系统中,TS 24.501复用了这套PCO编码,并在此基础上引入了ePCO(Extended PCO)。

二者的关键差异在于长度域与可承载能力:

当UE和网络(SMF)均支持ePCO时,优先使用ePCO;否则回落到PCO。

2.2 P-CSCF相关的容器ID

P-CSCF地址请求与下发依赖以下容器ID(定义于TS 24.008第10.5.6.3节,被TS 24.501继承):

容器ID(Hex) 名称 作用 出现位置
0x000C P-CSCF IPv4 Address Request / Info 请求/携带一个或多个P-CSCF IPv4地址 UE请求中为"请求标志",SMF响应中携带地址列表
0x000D P-CSCF IPv6 Address Request / Info 请求/携带一个或多个P-CSCF IPv6地址 同上,IPv6场景
0x0003 DNS Server IPv4 Address Request 请求DNS服务器IPv4 常与P-CSCF一并请求
0x0006 MS Support of Local Address Assignment 指示UE支持本地地址分配 辅助参数
0x000A IP address allocation via NAS signalling 指示IP地址经NAS信令分配 影响地址分配方式

ePCO将这些容器ID承载在扩展结构中,并允许单个容器携带多至N个P-CSCF地址,为冗余与负载分担提供基础。

2.3 ePCO IE结构图

flowchart LR
    A["ePCO IE<br/>TS 24.501 §9.11.4.3"] --> B["Configuration Protocol<br/>(4 bit 配置协议指示)"]
    A --> C["Extension bit / Spare"]
    A --> D["Protocol ID / Container ID List"]
    D --> C1["0x000C<br/>P-CSCF IPv4"]
    D --> C2["0x000D<br/>P-CSCF IPv6"]
    D --> C3["0x0003<br/>DNS IPv4"]
    C1 --> E1["IPv4地址列表<br/>(按优先级排序)"]
    C2 --> E2["IPv6地址列表<br/>(按优先级排序)"]

三、5G PDU会话建立中的P-CSCF发现全信令流

3.1 完整时序图

下面给出VoNR场景下,UE建立IMS专用PDU会话并经ePCO获取P-CSCF地址的完整信令时序(对应TS 23.502第4.3.2.2.1节"UE requested PDU Session Establishment"):

sequenceDiagram
    participant UE
    participant RAN as gNB
    participant AMF
    participant SMF
    participant UDM
    participant PCF
    participant UPF
    UE->>RAN: RRC建立 + NAS: PDU Session Establishment Request
    Note over UE: DNN=ims, S-NSSAI, PDU类型=IPv4v6<br/>ePCO含0x000C/0x000D(P-CSCF请求)
    RAN->>AMF: N2 Initial UE Message(透传NAS)
    AMF->>AMF: 基于DNN=ims+S-NSSAI选择SMF
    AMF->>SMF: N11 Nsmf_PDUSession_CreateSMContext<br/>(SUPI,DNN,ePCO,请求类型)
    SMF->>UDM: Nudm_SDM_Get(获取SM签约/DNN配置)
    UDM-->>SMF: Session Mgmt Subscription(DNN信息)
    SMF->>PCF: N7 Npcf_SMPolicyControl_Create(建立SM策略)
    PCF-->>SMF: SM Policy(PCC规则, 默认5QI=5)
    SMF->>UPF: N4 Session Establishment(PFCP)
    UPF-->>SMF: N4响应(F-TEID)
    Note over SMF: 解析P-CSCF地址池(本地配置/UDM/DNS)<br/>选择IP并排序
    SMF-->>AMF: N11 响应(N1 SM msg: PDU Estab Accept + ePCO[P-CSCF IP])
    AMF->>RAN: N2 PDU Session Resource Setup(N1 SM msg + N2传输层IE)
    RAN->>UE: RRC Reconfiguration + NAS: PDU Estab Accept(ePCO含P-CSCF地址)
    Note over UE: 提取P-CSCF IP列表 → 发起SIP REGISTER

3.2 关键信令消息与IE逐步解析

消息①:UE → gNB(透传至AMF)—— PDU Session Establishment Request

这是整条流程的起点,也是P-CSCF发现请求真正"上车"的地方。该NAS消息(TS 24.501第8.3.1节)中的核心IE包括:

消息③:AMF → SMF —— Nsmf_PDUSession_CreateSMContext(N11/SBI)

AMF依据(DNN, S-NSSAI)查询NRF或本地配置选择SMF后,通过服务化接口N11发起SM上下文创建。AMF会把UE的ePCO原样透传给SMF——注意,AMF并不理解也不修改ePCO内容,它只是搬运工。真正的P-CSCF解析与决策发生在SMF。

消息④-⑤:SMF ↔ UDM

SMF通过Nudm_SDM_Get获取该SUPI在IMS DNN上的签约数据(DNN配置、SSC模式、允许的PDU会话类型、默认5QI等)。在某些部署中,UDM/UDR也会保存该DNN对应的P-CSCF候选地址列表或FQDN,作为SMF解析的输入之一。

消息⑥-⑦:SMF ↔ PCF

SMF向PCF发起Npcf_SMPolicyControl_Create建立SM策略关联。PCF下发PCC规则,确定IMS信令默认QoS流为5QI=5(Standardized 5QI,Non-GBR,优先级0.5,对应IMS信令承载)。这一步与P-CSCF地址下发并不同一回事,但同属IMS会话的策略准备。

SMF内部:P-CSCF地址解析与选择

这是整个机制的"心脏"。SMF拿到ePCO中的P-CSCF请求后,按如下优先级解析地址:

  1. 本地OAM配置的P-CSCF地址池(最常见):SMF静态配置一组P-CSCF IP,按拓扑/负载/TAI选择一个或多个返回;
  2. DNS解析:若配置的是FQDN,SMF按RFC 3263做NAPTR→SRV→A/AAAA解析得到IP列表;
  3. UDM签约下发:取签约中该DNN绑定的P-CSCF候选。

随后SMF对返回的多个地址按优先级排序(可基于到UPF的拓扑就近、实时负载、健康检查结果),填入ePCO响应。

消息⑨:SMF → AMF(透传至UE)—— PDU Session Establishment Accept

SMF构造N1 SM消息PDU SESSION ESTABLISHMENT ACCEPT(TS 24.501第8.3.2节),其中:

UE收到后,从ePCO中取出P-CSCF地址列表,选首个地址作为目标,向其发起SIP REGISTER——至此P-CSCF发现完成,IMS注册流程正式开始。


四、三种P-CSCF发现方式对比

维度 ePCO/PCO捎带方式 DHCP方式 DNS方式
触发时机 PDU会话/PDN建立NAS流程内 承载建立后单独发起 获得FQDN后查询
标准依据 TS 23.228 §5.1; TS 24.501/24.008 RFC 3361/3319 RFC 3263
额外信令往返 无(捎带) 1次DORA往返 1~多次DNS查询
时延影响 最小 中 较大
地址形态 直接返回IP IP或FQDN 需先有FQDN
现网部署 主流首选 备选/异厂商对接 常作为DHCP后的二级解析
UE实现复杂度 低 中(需DHCP客户端) 中(需DNS+RFC3263)

选型逻辑:由于ePCO方式零额外往返、对UE最友好,且与5GC的会话管理天然耦合,几乎成为所有VoNR现网的事实标准。DHCP方式更多见于跨厂商对接或早期VoLTE过渡阶段;DNS方式则作为DHCP返回域名时的必然后继步骤。


五、P-CSCF冗余、负载分担与故障转移

ePCO允许SMF一次返回多个P-CSCF地址,这不仅是冗余设计,更承载着负载分担语义。UE按地址列表的顺序(由SMF排序决定优先级)选择首个P-CSCF发起REGISTER;若该P-CSCF在一定时间内无响应(定时器超时,典型如SIP T1重传到上限)或返回5xx类错误,UE则切换到列表中的下一个P-CSCF地址重试。

下图为P-CSCF发现后的注册决策与故障转移流程:

flowchart TD
    A[UE完成IMS PDU会话建立] --> B[ePCO返回P-CSCF地址列表]
    B --> C[按优先级取首个P-CSCF IP]
    C --> D[发起SIP REGISTER]
    D --> E{注册成功?}
    E -->|成功| F[IMS注册完成]
    E -->|超时/5xx失败| G{列表中还有<br/>备选P-CSCF?}
    G -->|是| H[切换到下一地址]
    H --> D
    G -->|否| I[注册失败上报<br/>触发会话重建/重选]

这一机制使得单台P-CSCF故障时,UE无需重建PDU会话即可自动切换,显著提升VoNR业务可用性。SMF侧通常配合健康检查(如定期N端口探测或与P-CSCF的邻接关系维护)动态调整地址池,避免把故障P-CSCF排在首位。


六、实战:抓包识别与排错

6.1 Wireshark中如何识别该流程

在5G核心网抓包(NGAP/NAS或N11 SBI)时,识别P-CSCF发现的关键是定位PDU SESSION ESTABLISHMENT REQUEST / ACCEPT这两条NAS消息,并展开其Extended protocol configuration options字段:

6.2 常见故障点与排错思路

现象 可能原因 排错方向
UE始终不发REGISTER ePCO中P-CSCF地址为空 检查SMF的P-CSCF地址池配置、DNN=ims匹配、UDM签约
REGISTER发出但无响应 P-CSCF地址不可达/防火墙拦截 ping/traceroute到P-CSCF;核查UPF到P-CSCF路由、IPsec策略
偶发注册失败 首选P-CSCF负载高或故障 查ePCO是否返回多个地址;核查P-CSCF健康检查与负载均衡
IPv6场景P-CSCF缺失 UE请求IPv4但DNN仅配IPv6 P-CSCF 核对PDU Session Type与地址族配置一致性
UE发了DHCP而未用ePCO UE或网络未协商ePCO能力 查UE 5GS capability与SMF ePCO支持开关
## 常见问题

Q: PCO和ePCO到底该用哪个?会不会冲突? A: 不会冲突。当UE和SMF均支持ePCO时,双方优先使用ePCO;若任一方不支持,则回落到传统PCO。二者承载的容器ID(如0x000C/0x000D)语义一致,ePCO的优势在于扩展的长度域与更丰富的参数支持,是PCO的超集演进。

Q: P-CSCF地址是UE自己选,还是网络指定? A: 网络指定。SMF完成地址解析、排序后,把P-CSCF地址列表(含优先级)经ePCO下发给UE;UE只能在列表内按顺序选择,不能自行发明地址。这种"网络主导、UE执行"的设计保证了运营商对IMS入口的完全掌控。

Q: 如果ePCO里没有下发P-CSCF地址,UE还能注册IMS吗? A: 理论上可以走DHCP/DNS方式兜底,但现网中绝大多数UE不会主动这么做,而是直接判定IMS会话不可用。因此ePCO地址缺失通常直接表现为VoNR/VoLTE注册失败,是排错的首要怀疑点。

Q: P-CSCF发现和IMS的IPsec安全联盟(SA)建立是什么关系? A: P-CSCF发现只解决"地址在哪",是后续所有SIP交互的前提。拿到P-CSCF地址后,UE才会在REGISTER/401/REGISTER/200的鉴权过程中与P-CSCF协商建立IPsec SA(基于port Kaiser/Ipsec-3gpp参数),二者是先后承接的两个独立机制。

Q: VoNR和VoLTE在P-CSCF发现上有本质区别吗? A: 机制一致,差异在承载载体:VoLTE中是PDN Connectivity流程的PCO(TS 24.301/23.401),VoNR中是PDU Session Establishment流程的ePCO(TS 24.501)。5G的ePCO在扩展性与参数容量上更强,是4G PCO向5G的演进。


参考来源

  1. 3GPP TS 23.228 — IMS架构Stage 2,P-CSCF发现程序(第5.1节)
  2. 3GPP TS 23.502 — 5G系统流程,UE请求的PDU会话建立(第4.3.2.2.1节)
  3. 3GPP TS 24.501 — 5G NAS协议,ePCO信息元素(第8.3.13.2节/第9.11.4.3节)
  4. 3GPP TS 24.008 — PCO信息元素格式与容器ID定义(第10.5.6.3节)
  5. Cisco UCC 5G SMF配置指南 — IMS PDU Sessions for Voice(ePCO携带P-CSCF现网实践)
  6. ShareTechnNote — 5G VoNR信令流程
  7. RFC 3263 — SIP: Locating SIP Servers

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入