OmniHSS 协议流程
概述
本文档详细说明了 OmniHSS 支持的 Diameter 协议消息流程。理解这些流程对于故障排除和操作至关重要。
S6a 接口 (LTE/EPC)
认证信息请求 (AIR/AIA)
MME 请求订阅者的认证向量。
关键 AVPs:
- 请求: 用户名 (IMSI), 访问-PLMN-Id, 请求的向量数量
- 响应: 认证-信息 (RAND, AUTN, XRES, KASME)
更新位置请求 (ULR/ULA)
MME 通知 HSS 订阅者位置并检索订阅数据。
关键 AVPs:
- 请求: 用户名 (IMSI), RAT 类型, ULR 标志, 访问-PLMN-Id, UE-SRVCC-能力
- 响应: 订阅数据 (AMBR, APN-配置, 网络接入模式)
清除 UE 请求 (PUR/PUA)
MME 通知 HSS 当订阅者上下文被删除时。
通知请求 (NOR/NOA)
MME 通知 HSS 各种事件。
取消位置请求 (CLR/CLA)
HSS 发起位置取消以通知 MME ���阅者应被分离。OmniHSS 支持自动和程序化 CLR 发送。
自动 CLR (MME 切换)
当订阅者从新 MME 执行更新位置请求时,OmniHSS 自动向之前的 MME 发送 CLR 以清理过时的注册。
关键 AVPs (自动 CLR):
- 用户名: 订阅者的 IMSI
- 目标主机: 之前的 MME 主机名
- 目标域: 之前的 MME 域
- 取消类型: 0 (MME 更新过程)
- CLR-标志: 0
- 订阅数据: 完整的订阅配置文件
程序化 CLR (API 触发)
管理员可以通��程序化 API 触发 CLR 强制分离订阅者(例如,因订阅撤回、欺诈预防或行政行为)。
关键 AVPs (程序化 CLR):
- 用户名: 订阅者的 IMSI
- 目标主机: 上次看到的 MME 主机名
- 目标域: 上次看到的 MME 域
- 取消类型:
:subscription_withdrawal(按 3GPP TS 29.272 编码为整数) - CLR-标志:
- s6a_indicator: 1 (指示使用 S6a 接口)
- reattach_required: 1 (UE 必须重新认证以重新附着)
取消类型
OmniHSS 支持多种取消类型,符合 3GPP TS 29.272:
| 类型 | 值 | 描述 | 用例 |
|---|---|---|---|
| MME 更新过程 | 0 | 正常 MME 更改 | 从新 MME 自动执行 ULR |
| SGSN 更新过程 | 1 | SGSN 切换 | 3G/2G 切换场景 |
| 订阅撤回 | 2 | 管理终止 | 通过 API 手动分离 |
| 更新过程 IWF | 3 | 互通功能更新 | 传统网络互操作 |
| 初始附着过程 | 4 | 新注册 | 强制重新认证 |
CLR-标志
CLR-标志 AVP 是一个位掩码,具有以下字段:
| 标志 | 位 | 描述 |
|---|---|---|
| S6a/S6d 指示器 | 0 | 1 = 使用 S6a 接口 |
| 重新附着所需 | 1 | 1 = UE 必须执行新附着 |
示例 CLR-标志配置:
clr_flags: %{
s6a_indicator: 1, # 使用 S6a 接口
reattach_required: 1 # 强制重新认证
}
多 IMSI 场景
OmniHSS 跟踪每个订阅者 (IMSI) 的 MME 注册,而不是每个 MSISDN。这对于理解多 IMSI 场景中的 CLR 行为至关重要:
场景 1: 多个 MSISDN,单个 IMSI
订阅者 A:
- IMSI: 999000123456789
- MSISDNs: ["+1234567890", "+9876543210"]
- last_seen_mme: "mme01.operator.com"
当该订阅者移动到新 MME 时:
- 发送一个 CLR 到 "mme01.operator.com",IMSI 为 999000123456789
- 两个 MSISDN 都受到影响(同一订阅者,同一 SIM)
- 用户名 AVP 包含 IMSI,而不是 MSISDNs
场景 2: 多个订阅者(不同 IMSIs),相同 MSISDN
OmniHSS 强制执行 唯一 MSISDN 约束(一个 MSISDN 不能同时属于多个订阅者)。但是,在转移/迁移期间:
订阅者 A:
- IMSI: 999000111111111
- MSISDN: "+1234567890"
- last_seen_mme: "mme01.operator.com"
订阅者 B(转移后):
- IMSI: 999000222222222
- MSISDN: "+1234567890" # 相同 MSISDN,不同 SIM/IMSI
- last_seen_mme: "mme02.operator.com"
当订阅者 B 注册时:
- 不发送 CLR(不同 IMSI = 不同订阅者)
- 订阅者 A 保持在 mme01 注册
- 订阅者 B 在 mme02 注册
- 两者可以同时处于活动状态(不同的物理设备)
场景 3: 程序化 CLR 针对多 MSISDN 订阅者
结果:
- 发送一个 CLR 到订阅者的 last_seen_mme
- 所有与该 IMSI 关联的 MSISDN 实际上被分离
- IMSI 是跟踪 MME 注册的主键
重要说明
-
IMSI 是关键: CLR 操作始终是 按 IMSI,而不是按 MSISDN。
subscriber_state表按订阅者 (IMSI) 跟踪last_seen_mme。 -
原子操作: 每个订阅者一次只能在一个 MME 注册。自动 CLR 通过清理旧注册确保这一点。
-
如果没有之前的 MME 则不发送 CLR: 如果
last_seen_mme为nil(订阅者从未注册),在 ULR 期间不发送 CLR。 -
包含订阅数据: 自动 CLR(在 ULR 期间)包括完整的
Subscription-DataAVP,以帮助旧 MME 正确清理上下文。 -
异步: CLR 是异步发送的(火并忘记)。对新 MME 的 ULA 响应不等待旧 MME 的 CLA。
-
CLA 处理: OmniHSS 接收 CLA 响应,但当前会丢弃它们(在第 398 行
:discard)。这防止了消息循环,并且是标准 HSS 行为。
SWx 接口 (非 3GPP 访问 / WiFi 通话)
SWx 接口通过将 ePDG(演进数据包网关)连接到 HSS,以实现 WiFi 通话的订阅者认证和授权。
多媒体认证请求 (MAR/MAA)
ePDG 请求用于 WiFi 通话注册的 EAP-AKA 认证向量。
关键 AVPs:
- 请求: 用户名 (IMSI 或 IMSI@realm), SIP-Auth-Data-Item (认证方案), SIP-Number-Auth-Items
- 响应: SIP-Auth-Data-Item (SIP-Authenticate, SIP-Authorization, 保密密钥, 完整性密钥)
SQN 重新同步: 当 UE 检测到由于 SQN 不匹配而导致的认证失败时,ePDG 在 SIP-Authorization AVP 中包含重新同步数据。OmniHSS 从该字段中提取 AUTS,并根据 3GPP TS 33.102 使用 IND 长度感知计算重新计算 SQN。
服务器分配请求 (SAR/SAA)
ePDG 注册或注销订阅者的 WiFi 通话服务。
服务器分配类型:
| 类型 | 值 | 描述 |
|---|---|---|
| NO_ASSIGNMENT | 0 | 仅查询,无状态更改 |
| REGISTRATION | 1 | 初始 WiFi 通话注册 |
| RE_REGISTRATION | 2 | 注册刷新 |
| UNREGISTERED_USER | 3 | 未注册用户的服务 |
| TIMEOUT_DEREGISTRATION | 4 | 注册超时 |
| USER_DEREGISTRATION | 5 | 用户发起的注销 |
| AUTHENTICATION_FAILURE | 7 | 认证失败,清除状态 |
| ADMINISTRATIVE_DEREGISTRATION | 8 | 管理员发起的注销 |
关键 AVPs:
- 请求: 用户名 (IMSI), 服务器分配类型, 服务器名称 (ePDG 身份), 服务选择 (APN)
- 响应: 用户数据 (IFC 配置文件 XML), 非 3GPP 用户数据
WiFi 通话注册流程
完整的端到端 WiFi 通话注册。
Cx 接口 (IMS)
用户授权请求 (UAR/UAA)
I-CSCF 查询用户是否被授权注册。
服务器分配请求 (SAR/SAA)
S-CSCF 注册/注销用户并检索 IMS 配置文件。
IFC 模板渲染:
{{imsi}}→ 实际 IMSI{{msisdns}}→ 电话号码列表{{mcc}}, {{mnc}}→ 本地 PLMN 代码
多媒体认证请求 (MAR/MAA)
S-CSCF 请求 IMS 注册的认证向量。
位置信息请求 (LIR/LIA)
I-CSCF 查询哪个 S-CSCF 正在为用户提供服务。
Sh 接口 (IMS 配置文件数据)
请参见 Sh RepositoryData (透明数据) 以获取数据模型、序列号/并发规则以及 MMTEL 服务 / IMS-ODB 信息文档的 REST 提供 API。
用户数据请求 (UDR/UDA)
应用服务器请求订阅者配置文件数据。
配置文件更新请求 (PUR/PUA)
应用服务器更新订阅者配置文件数据。
订阅通知请求 (SNR/SNA)
应用服务器订阅配置文件更改。
Gx 接口 (策略控制)
OmniHSS 通过 Gx 接口作为 PCRF(策略和计费规则功能)运行。
请参见 PCRF 文档 以获取详细架构、策略配置和 QoS 管理。
信用控制请求 - 初始 (CCR-I/CCA-I)
P-GW 在 PDN 会话建立时请求策略规则。
关键 AVPs:
- 请求: 订阅 ID (IMSI), 被叫站 ID (APN), RAT 类型, IP-CAN 类型
- 响应: QoS 信息 (QCI, ARP, AMBR), 计费规则安装
信用控制请求 - 更新 (CCR-U/CCA-U)
P-GW 通知会话更改。
信用控制请求 - 终止 (CCR-T/CCA-T)
P-GW 通知 PDN 会话结束。
重新认证请求 (RAR/RAA)
OmniHSS (PCRF) 向 P-GW 发起策略更新。
Rx 接口 (IMS 媒体策略)
OmniHSS 通过 Rx 接口作为 PCRF 运行,以进行 IMS 媒体授权。
请参见 PCRF 文档 以获取详细的 VoLTE 通话流程和媒体授权。
AA 请求 (AAR/AAA)
P-CSCF 请求 IMS 会话的媒体授权。
关键信息:
- 解析 SDP 以确定编解码器和带宽
- 计算所需带宽 (上行/下行)
- 为媒体流创建 SDF 过滤器
- 通过 Gx RAR 触发专用承载
会话终止请求 (STR/STA)
P-CSCF 通知 IMS 会话结束。
Sy 接口 (支出限制控制)
OmniHSS 作为 PCRF,通过 Sy 接口从外部 OCS(在线计费系统)获取订阅者支出限制状态,并在 Gx 上应用支出驱动的策略。Sy 使用 Diameter 应用 ID 16777302(3GPP TS 29.219)。HSS 是 Sy 客户端;OCS 是服务器。请参见 Sy 接口 以获取完整参考(策略计数器映射、AVPs、配置)。
支出限制请求 (SLR/SLA)
PCRF 打开每个订阅者的 Sy 会话以获取 OCS 的策略计数器的当前状态,然后将结果规则折叠到它已经返回的 Gx CCA 中。
支出状态通知 (SNR/SNA)
当计数器的状态发生变化(例如,数据配额耗尽)时,OCS 通知 PCRF,PCRF 通过 Gx RAR 将策略更改推送到 PGW。
会话终止 (STR/STA)
当订阅者的最后一个数据会话结束时,PCRF 关闭 Sy 会话。
S13 接口 (EIR)
OmniHSS 通过 S13 接口作为 EIR(设备身份注册)运行。
请参见 EIR 文档 以获取详细的设备身份检查、IMEI 验证和黑名单管理。
ME 身份检查请求 (ECR/ECA)
外部 EIR 客户端(或 MME)请求设备验证。
设备状态值:
- 设备未知 (0) - 设备允许(白名单)
- 设备已列入黑名单 (1) - 设备被阻止
- 设备已列入灰名单 (2) - 设备允许但被跟踪
SLh 接口 (LCS / 位置服务)
OmniHSS 回应 SLh LCS-Routing-Info-Request (RIR),以便 GMLC 在请求其位置之前发现当前服务于订阅者的 MME。服务 MME 是在 S6a 注册(更新位置)时记录的。SLh 使用 Diameter 应用 ID 16777291(3GPP TS 29.173)。
LCS 路由信息请求 (RIR/RIA)
GMLC 请求订阅者的服务节点。
注意:
- IMSI 取自
用户名;MSISDN 查找用作后备。 - 返回的
服务节点携带由 S6a AIR/ULR 处理程序最后记录的MME-名称/MME-域(subscriber_state.last_seen_mme/last_seen_realm) - 无需额外配置。 - GMLC 通常在成功的 RIA 后跟随 SLg Provide-Location-Request 到返回的 MME。
结果代码:
- 2001 - 成功;返回
服务节点。 - 5001 -
DIAMETER_ERROR_USER_UNKNOWN;IMSI/MSISDN 未配置。 - 4201 -
DIAMETER_ERROR_ABSENT_USER;已知订阅者但没有记录的服务 MME(从未附着,或位置已取消)。
完整通话流程: VoLTE 通话
端到端 VoLTE 通话设置,显示多个接口。
Zh 接口 (通用引导架构)
Zh 接口通过将引导服务器功能 (BSF) 连接到 HSS,实现通用引导架构 (GBA) 的订阅者认证和密钥派生。
多媒体认证请求 (MAR/MAA)
BSF 请求 GBA 认证向量以进行引导。
关键 AVPs:
- 请求: 用户名 (IMPI), 公共身份, SIP-Auth-Data-Item (认证方案), 目标域
- 响应: SIP-Auth-Data-Item (SIP-Authenticate, SIP-Authorization, 保密密钥, 完整性密钥), GBA-UserSecSettings
GBA 用例:
| 应用 | 描述 |
|---|---|
| MBMS | 移动广播多播服务密钥管理 |
| HTTPS | 基于 GBA 的证书提供 |
| NAF | 通用网络应用功能认证 |
| Presence | 安全的存在服务认证 |
SWm 接口 (不受信任的非 3GPP 访问)
SWm 接口通过将 3GPP AAA 服务器连接到 HSS,为不受信任的非 3GPP 访问网络(例如,通过 ePDG 的 WiFi)启用 EAP-AKA 认证。
Diameter-EAP-请求 (DER/DEA)
WiFi 访问的 EAP 认证交换。
关键 AVPs:
- 请求: 会话 ID, 认证应用 ID, EAP-负载, 认证请求类型, 用户名(可选)
- 响应: EAP-负载, EAP-主会话密钥 (MSK), APN-配置, 会话超时
AA-请求 (AAR/AAA)
成功 EAP 认证后的授权。
关键 AVPs:
- 请求: 会话 ID, 认证应用 ID, 用户名, 认证请求类型, AAR-标志
- 响应: APN-配置, 3GPP-计费特性, 会话超时
会话终止请求 (STR/STA)
WiFi 会话终止通知。
终止原因:
| 原因 | 值 | 描述 |
|---|---|---|
| DIAMETER_LOGOUT | 1 | 用户注销 |
| DIAMETER_SERVICE_NOT_PROVIDED | 2 | 服务不可用 |
| DIAMETER_BAD_ANSWER | 3 | 协议错误 |
| DIAMETER_ADMINISTRATIVE | 4 | 管理终止 |
| DIAMETER_LINK_BROKEN | 5 | 连接丢失 |
| DIAMETER_AUTH_EXPIRED | 6 | 认证超时 |
| DIAMETER_USER_MOVED | 7 | 用户移动到其他接入 |
| DIAMETER_SESSION_TIMEOUT | 8 | 会话超时 |
故障排除协议问题
认证失败 (S6a AIR)
检查:
- 密钥集配置正确 (Ki, OPC, AMF)
- SQN 同步(如果重复失败)
- 漫游规则允许访问网络
位置更新失败 (S6a ULR)
检查:
- EPC 配置文件存在并已配置 APNs
- 数据服务允许漫游
- MME ��份格式正确
IMS 注册失败 (Cx SAR)
检查:
- IMS 配置文件分配给订阅者
- IFC 模板有效 XML
- S-CSCF 选择已配置
- 如果在模板中使用,则分配了 MSISDNs
PDN 连接失败 (Gx CCR-I)
检查:
- APN 在 EPC 配置文件的 APN 列表中存在
- APN QoS 配置文件已配置
- PDN 会话表未满(如果存在限制)