首页 › ims › IMS业务触发iFC机制拆解

IMS业务触发iFC机制拆解:S-CSCF过滤准则评估与第三方注册信令全链解析

一、为什么IMS需要iFC:呼叫控制与业务逻辑的彻底解耦

IMS(IP多媒体子系统)相比传统电路域交换最深刻的架构革命,不在于"全IP",而在于它把呼叫控制(Call Control)和业务逻辑(Service Logic)做了物理上的解耦。在软交换时代,补充业务(呼叫前转、号码显示、多方通话)和智能网(IN/CAMEL)业务往往耦合在交换机或SCP里;IMS则引入了一条独立于用户面和控制面的ISC接口(IMS Service Control),把所有增值业务下沉到应用服务器(AS,Application Server)执行,而S-CSCF(Serving-CSCF)只负责"判断该把这条SIP请求送到哪个AS、按什么顺序送"。

这个"判断"的依据,就是初始过滤准则 iFC(Initial Filter Criteria)。iFC是存储在HSS用户档案(Service Profile)里、用XML编码的一组规则,定义了"在什么条件下、把请求触发到哪一个AS"。iFC的stage 2定义在 3GPP TS 23.218(IM Session Handling; IM Call Model),其XML信元结构定义在 TS 29.228(Cx/Dx接口信令流与消息内容,附录含iFC XML Schema),而AS可经Sh接口(TS 29.328/29.329)向HSS查询透明数据。本文聚焦 iFC的数据结构、评估算法、第三方注册(Third Party Registration)触发流,以及主叫会话AS循环触发流两条核心信令链,全部对应到具体TS章节。

graph TD
    A[HSS 用户档案<br/>Service Profile] -->|Cx: SAA下载<br/>TS 29.228| B[S-CSCF<br/>本地缓存iFC集合]
    B --> C{评估每条SIP请求<br/>TS 23.218 5.4}
    C -->|TriggerPoint匹配| D[按优先级转发到AS<br/>ISC接口 / SIP]
    C -->|不匹配| E[正常路由转发]
    D --> F[AS 执行业务逻辑<br/>Proxy/B2BUA/UA]
    F -->|处理后回送| B
    style A fill:#e8f4f8,stroke:#2196F3
    style B fill:#fff3e0,stroke:#FF9800
    style D fill:#e8f5e9,stroke:#4CAF50

二、iFC的数据结构:Priority / TriggerPoint / ApplicationServer三件套

依据 TS 23.218 Section 5.3,一条完整的iFC(FilterCriteria)由以下顶层信元构成。理解这三个信元是理解整个业务触发机制的钥匙。

iFC顶层信元 取值/类型 含义与作用 关联TS章节
Priority 正整数(越小越高) iFC评估顺序,1为最高优先级;同优先级下评估顺序不定 TS 23.218 5.3
TriggerPoint 可选,含一组SPT 触发点,由若干SPT经逻辑运算组合而成;为空表示无条件匹配 TS 23.218 5.2
ApplicationServer 含ServerName等 命中后要触发的AS地址及失败处理策略 TS 23.218 5.3
ProfilePartIndicator Shared / Public 标识本iFC属于共享iFC还是私有iFC TS 23.218 5.3
ExtensionType 扩展 后续版本预留 TS 29.228

ApplicationServer内部进一步包含:

graph LR
    iFC[InitialFilterCriteria] --> P[Priority<br/>评估顺序]
    iFC --> TP[TriggerPoint<br/>触发点]
    iFC --> AS[ApplicationServer<br/>目标AS]
    TP --> CT[ConditionTypeCNF/DNF<br/>逻辑组合]
    TP --> SPT1[SPT: Method]
    TP --> SPT2[SPT: Session Case]
    TP --> SPT3[SPT: SIP Header]
    TP --> SPT4[SPT: Session Description]
    TP --> SPT5[SPT: Registration Type]
    AS --> SN[ServerName<br/>AS的SIP URI]
    AS --> DH[DefaultHandling<br/>Continue/Terminated]
    AS --> SI[ServiceInfo<br/>透传业务信息]
    style iFC fill:#fff3e0,stroke:#FF9800
    style TP fill:#e8f4f8,stroke:#2196F3
    style AS fill:#e8f5e9,stroke:#4CAF50

TriggerPoint通过ConditionTypeCNF(合取范式,组间OR、组内AND)或ConditionTypeDNF(析取范式,组间AND、组内OR)把若干SPT组合成一个布尔表达式。S-CSCF收到SIP请求后,就是逐条iFC、按Priority求值这个布尔表达式。

三、SPT服务点触发器:iFC的五种"探针"

依据 TS 23.218 Section 5.2.1,触发点(TriggerPoint)由一组服务点触发器 SPT(Service Point Trigger)构成。SPT共分五大类,每一类都对应SIP请求中可被S-CSCF检查的一个维度:

SPT类型 检查对象 典型配置举例 说明
Method SIP请求方法 INVITE / REGISTER / MESSAGE 最常用,区分会话/注册/消息
Session Case 会话方向与注册状态 Originating / Terminating_Registered 等 决定主叫/被叫/未注册场景
SIP Header 任意SIP头域 P-Asserted-Identity、From、Request-URI 可判断头存在性、内容、内容类型
Session Description SDP会话描述 m=video、a=rtpmap、b=AS 触发基于媒体类型/带宽的业务
Registration Type 注册子类型 Initial / Re-/De-registration 仅当Method=REGISTER时有意义

Session Case(TS 29.228 / TS 23.218)取值是理解主被叫业务触发的核心,它有四个枚举值:

值 SessionCase 含义 典型触发场景
0 ORIGINATING_SESSION 已注册用户发起的主叫 主叫侧TAS/补充业务
1 TERMINATING_REGISTERED 已注册用户的被叫 被叫前转、彩铃
2 TERMINATING_UNREGISTERED 未注册用户的被叫 未注册前转、语音邮箱
3 ORIGINATING_UNREGISTERED 未注册用户发起主叫 匿名/受限业务(少用)

设计意图在于:同一个PUI(Public User Identity)在不同会话方向、不同注册状态下需要触发的业务截然不同。例如"呼叫前转无应答"只在TERMINATING_REGISTERED生效,而"未注册前转"只在TERMINATING_UNREGISTERED生效,两者共用同一个SPT框架但靠SessionCase区分,使iFC具有极强的表达力。

四、第三方注册(Third Party Registration)信令全链拆解

第三方注册是iFC最经典的应用之一,定义在 TS 23.228 Section 5.x(Registration procedures) 与 TS 23.218 Section 6.3(S-CSCF handling of SIP registration),Stage 3的SIP构造细节在 TS 24.229(IMS Call Session Control Function)中。

当UE完成IMS初始注册、收到200 OK之后,S-CSCF并不会就此停下,而是要"通知"所有关心该用户注册状态的AS——这就是第三方注册。其本质是:S-CSCF代表已注册用户,向AS再发一次REGISTER,AS由此得知"该用户现在在线了"。

sequenceDiagram
    participant UE
    participant PCSCF as P-CSCF
    participant ICSCF as I-CSCF
    participant SCSCF as S-CSCF
    participant HSS
    participant TAS as TAS / AS
    participant SCC as SCC AS

    UE->>PCSCF: REGISTER (PUI, contact)
    PCSCF->>ICSCF: REGISTER
    ICSCF->>HSS: Cx: UAR (User-Authorization)
    HSS-->>ICSCF: Cx: UAA (选S-CSCF能力集)
    ICSCF->>SCSCF: REGISTER
    SCSCF->>HSS: Cx: MAR (Multimedia-Auth, 取鉴权向量)
    HSS-->>SCSCF: Cx: MAA
    Note over SCSCF,UE: 401 Challenge → 鉴权 → (省略)
    UE->>SCSCF: REGISTER(带响应, 二次)
    SCSCF->>HSS: Cx: SAR (Server-Assignment, 注册登记)
    HSS-->>SCSCF: Cx: SAA (下载Service Profile, 含iFC集合)
    SCSCF-->>UE: 200 OK (注册成功)

    Note over SCSCF: 评估iFC: Method=REGISTER<br/>且 Registration Type=Initial 匹配
    SCSCF->>TAS: 第三方 REGISTER<br/>R-URI=tas1.home1.net, From/To=PUI
    TAS-->>SCSCF: 200 OK
    SCSCF->>SCC: 第三方 REGISTER<br/>R-URI=scc.home1.net
    SCC-->>SCSCF: 200 OK
    Note over SCC: SCC AS 订阅 reg-event package<br/>感知后续注册状态变化

关键信令IE逐步解析

第三方REGISTER与UE原始REGISTER有几个决定性差异,这是抓包时识别它的关键:

IE / 消息元素 UE原始REGISTER 第三方REGISTER 说明
Request-URI registrar域名(sip:home1.net) AS域名(sip:tas1.home1.net) 这是区分两者最直接的标志
From / To UE的PUI UE的PUI(S-CSCF代发) 表明"谁被注册"
P-Asserted-Identity 通常无 含已验证PUI S-CSCF鉴权后插入,证明身份可信
Contact UE的IP contact 可能保留或置空 视实现而定
Via / Route 指向P-CSCF 反映ISC路径 经ISC接口直达AS
发起方 UE S-CSCF 源自S-CSCF而非空口

设计意图

为什么不让AS直接监听Cx接口或UE的REGISTER?因为:第一,UE与registrar之间的REGISTER是用户与网络的私密信令,AS无权直接旁路;第二,AS关心的不是鉴权细节,而是"用户在线/离线"这一高层语义事件;第三,ISC基于标准SIP,复用SIP语义(REGISTER=注册),对AS实现友好。SCC AS(Service Centralization and Continuity)通常在收到第三方注册后立即向S-CSCF发起SUBSCRIBE(reg-event package),以便后续感知重注册/注销,实现SRVCC等连续性业务——这一步与"VoNR IMS注册信令"密切相关但属不同机制,此处不展开。

五、主叫会话AS循环触发(Originating iFC Loop)拆解

第三方注册解决"用户上线通知",业务触发的另一条主线是会话建立期间的AS循环。依据 TS 23.228 Section 5.5.4(Session origination, S-S#4) 与 TS 23.218 Section 5.4(Service Control in the IM CN Subsystem),当S-CSCF收到一条主叫INVITE时,会按优先级把请求"过一遍"所有匹配ORIGINATING_SESSION的iFC。

sequenceDiagram
    participant UE
    participant SCSCF as S-CSCF<br/>(主叫侧)
    participant AS1 as AS1<br/>Priority=1
    participant AS2 as AS2<br/>Priority=2
    participant TERM as 被叫侧<br/>I/S-CSCF

    UE->>SCSCF: INVITE (主叫)
    Note over SCSCF: 取iFC, 评估 SessionCase=Originating<br/>按Priority升序
    SCSCF->>AS1: INVITE (经ISC, Route指向AS1)
    Note over AS1: 业务处理<br/>如号码规整/预付费
    AS1-->>SCSCF: INVITE (可能改SDP/头)
    SCSCF->>AS2: INVITE (用AS1返回的请求继续)
    Note over AS2: 业务处理<br/>如彩铃/录音通知
    AS2-->>SCSCF: INVITE
    Note over SCSCF: Originating iFC评估完毕
    SCSCF->>TERM: INVITE (向被叫侧路由)
    Note over TERM: 被叫S-CSCF再评估<br/>Terminating iFC

这是一个典型的"穿透-回送"循环(sometimes called SIP AS leg):S-CSCF把INVITE发给AS1,AS1以Proxy/B2BUA方式处理后重新发回S-CSCF,S-CSCF再依据AS1回送请求评估下一条iFC,直至全部匹配的Originating iFC处理完毕,才把请求路由向被叫域。到达被叫S-CSCF后,再对TERMINATING_*的iFC做一轮评估,最后下发给被叫UE。

关键设计意图

六、DefaultHandling:AS故障时的兜底状态机

依据 TS 23.218 Section 5.4,当某条iFC匹配、S-CSCF经ISC把请求发往AS但AS无响应超时(不可达)时,DefaultHandling决定后续动作,这是业务连续性的关键兜底机制。

stateDiagram-v2
    [*] --> 命中iFC
    命中iFC --> 发往AS经ISC
    发往AS经ISC --> AS响应: 正常
    AS响应 --> 继续下一条iFC
    发往AS经ISC --> 超时无响应: 不可达
    超时无响应 --> 判定DefaultHandling
    判定DefaultHandling --> SESSION_CONTINUE: DH=0<br/>跳过本AS继续
    判定DefaultHandling --> SESSION_TERMINATED: DH=1<br/>中止会话返回错误
    SESSION_CONTINUE --> 继续下一条iFC
    继续下一条iFC --> [*]
    SESSION_TERMINATED --> [*]
    正常 --> [*]

运维上,DefaultHandling配置错误是高频故障源:把关键AS配成CONTINUE会留下业务漏洞,把装饰性AS配成TERMINATED则AS一抖动就大面积呼叫失败。

七、抓包识别与排错实战

如何在抓包中识别iFC触发

  1. 第三方REGISTER:在ISC接口(S-CSCF↔AS)抓包,看到S-CSCF主动发出的REGISTER,且Request-URI指向AS域名而非registrar域名、带P-Asserted-Identity,即为第三方注册。可借助TShark过滤器:sip.Method == "REGISTER" && sip.Request-URI contains "as"。
  2. 主叫AS循环:在同一次INVITE会话中,观察S-CSCF与多个AS之间出现反复的INVITE来回(多个Via/Record-Route),即可确认发生了多级AS触发。
  3. iFC本身不可见:iFC是S-CSCF本地数据,不在SIP报文中显式传输;要确认iFC内容,需查Cx SAR/SAA(Service Profile下载)或厂商网管上的用户档案配置。

常见故障点

故障现象 根因方向 排查思路
用户注册成功但补充业务不生效 对应iFC未配置/未下发,或TriggerPoint不匹配 查Cx SAA是否含目标iFC;核对SessionCase、Method
主叫呼叫随机失败 关键AS配成TERMINATED且抖动 检查DefaultHandling;查AS ISC可达性与超时
呼叫前转不生效 SessionCase配错(如未注册前转配到了Registered) 核对Terminating iFC的SessionCase值
第三方REGISTER未到AS AS路由/ISC路由配置缺失;ServerName错误 验证DNS/SIP路由能解析ServerName
AS触发顺序混乱 Priority未设或多条同优先级 显式设置Priority,避免依赖默认顺序
HSS数据与S-CSCF缓存不一致 重启或Cx数据未刷新 触发重新注册强制SAR/SAA刷新
## 常见问题

Q1:iFC和sFC(Subsequent Filter Criteria)有什么区别? A:iFC(Initial Filter Criteria)在每个初始SIP请求(INVITE、REGISTER等)到达S-CSCF时评估,决定初始触发哪个AS;sFC(Subsequent Filter Criteria)是后续规范(R7+)引入的,用于在已建立的会话期间对后续请求(如re-INVITE、MESSAGE mid-dialog)进行二次AS触发评估。绝大多数补充业务只用iFC,sFC用于需要会话中途持续控制的复杂业务。

Q2:第三方REGISTER和UE的REGISTER在网络中走同一条路径吗? A:不走。UE的REGISTER走UE→P-CSCF→I-CSCF→S-CSCF(含Cx鉴权交互);第三方REGISTER是S-CSCF在注册成功之后、经ISC接口直接发往AS,不经过P-CSCF/I-CSCF,也不回到空口。两者的Request-URI目标不同,是抓包区分的关键。

Q3:一条iFC匹配后,AS处理完返回的请求,S-CSCF如何继续? A:S-CSCF用AS返回的(可能被改写过的)请求,继续评估剩余的、优先级更低的iFC。若AS以B2BUA角色彻底改写了目标(如呼叫转移到新号码),后续iFC仍按改写后的请求评估。这种"链式穿透"正是多业务叠加的基础。

Q4:DefaultHandling选CONTINUE还是TERMINATED有没有通用原则? A:通用原则是"看该业务缺失是否会带来安全/计费/合规风险"。预付费、紧急呼叫、合法拦截等必须TERMINATED(宁阻不漏);彩铃、彩像、录音通知等增强体验类业务应CONTINUE(容忍降级)。现网中因AS偶发抖动导致整网呼叫失败的案例,多数根因就是装饰性AS被错误配置为TERMINATED。

Q5:iFC评估是主叫侧做还是被叫侧做? A:两边都做,但用不同的SessionCase子集。主叫S-CSCF评估ORIGINATING_*的iFC;请求路由到被叫域后,由被叫S-CSCF评估TERMINATING_*的iFC。一个跨域呼叫可能经历主叫侧n条+被叫侧m条AS触发,这正是端到端呼叫建立时延(post-dial delay)的重要组成。

参考来源

  1. 3GPP TS 23.218 — IP Multimedia (IM) Session Handling; IM Call Model (Stage 2) — iFC定义(5.3)、SPT定义(5.2.1)、Service Control(5.4)、S-CSCF注册处理(6.3)
  2. 3GPP TS 23.228 — IP Multimedia Subsystem (IMS) Stage 2 — 注册流程与会话起源(5.5.4 S-S#4)、AS交互
  3. 3GPP TS 29.228 — Cx and Dx interfaces; Signalling flows and message contents — iFC XML Schema(附录)、Cx SAR/SAA信元、SessionCase取值
  4. 3GPP TS 24.229 — IP Multimedia Call Control Protocol based on SIP and SDP (Stage 3) — S-CSCF侧SIP处理、第三方REGISTER构造、iFC评估的Stage 3实现
  5. Initial Filter Criteria (IFC) — 3GPP Explorer Glossary — iFC概念与SPT/SessionCase汇总解读
  6. IMS Routing with iFCs — Nick vs Networking — iFC结构与AS触发流程图解
  7. TS 23.218 Section 6.3 — S-CSCF handling of SIP registration | iTecSpec — 第三方注册评估条文的逐句对照

本文由「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学通信知识星球海报-扫码加入